为 R 中的许多列运行具有 emmeans 和对比的 LM
Posted
技术标签:
【中文标题】为 R 中的许多列运行具有 emmeans 和对比的 LM【英文标题】:Running an LM with emmeans and contrasts for many columns in R 【发布时间】:2021-07-10 20:05:32 【问题描述】:我正在尝试比较使用特定对比的许多列的 LM 处理之间的均值。当我单独运行每一列时,它工作得很好,但我有超过 1000 列,单独设置它们是不可行的。我对 R 很陌生,还没有弄清楚如何使用循环,所以任何帮助都将不胜感激。
这就是我设置对比度的方式
df$GROUP <- factor(df$GROUP, levels = c("TRT1", "TRT2", "TRT3", "TRT4", "TRT5", "TRT6", "TRT7"))
Contrasts <- list(A = c(0, 1, 0, -1, 0, 0, 0),
B = c(-1, 2, 0, -1, 0, 0, 0),
C = c(0, 1, -1, 0, 0, 0, 0),
D = c(0, 0, 0, 1, 1, -1, -1),
E = c(0, 0, 0, 1, -1, -1, 1),
F = c(0, 0, 0, 1, -1, 1, -1))
This is an example of my data set
基本上我需要为每一列运行这段代码。
lm1 <- lm(CE(12:0) ~ GROUP, data = df)
lsmean <- emmeans(lm1, "GROUP")
contrast(lsmean, Contrasts, adjust = "none")
【问题讨论】:
这是一个类mlm
。所以只需执行lm1<-lm(as.matrix(df[-1])~GROUP, data = df)
这将为您运行所有回归
【参考方案1】:
他是一个类mlm
。所以简单地做:
lm1<-lm(as.matrix(df[-1])~GROUP, data = df)
这将为您运行所有回归。
例如,使用iris
数据集:
lm(as.matrix(iris[-5])~Species, iris)
Call:
lm(formula = as.matrix(iris[-5]) ~ Species, data = iris)
Coefficients:
Sepal.Length Sepal.Width Petal.Length Petal.Width
(Intercept) 5.006 3.428 1.462 0.246
Speciesversicolor 0.930 -0.658 2.798 1.080
Speciesvirginica 1.582 -0.454 4.090 1.780
这类似于针对组运行 4 个不同的变量线性回归模型。
【讨论】:
这对于分析所有列非常有帮助。当我运行对比语句时,它会为我提供所有列的平均结果。有没有办法单独获取每列的对比列表? @Brandon 这意味着你必须做一个循环。以为你试图避免循环 如果循环可以正常工作。我只是不知道该怎么做。 你不需要循环。只需运行emm <- emmeans(model, ~ GROUP | rep.meas); contrast(emm, Contrast, adjust = "none")
但是,这将产生一组 6000 个对比...如果您是 R 新手,也许最好从不那么令人生畏的期望开始。以上是关于为 R 中的许多列运行具有 emmeans 和对比的 LM的主要内容,如果未能解决你的问题,请参考以下文章
如何在 R 中的 emmeans() 命令中评估字符串变量作为因子?