【问题标题】:Running an LM with emmeans and contrasts for many columns in R为 R 中的许多列运行具有 emmeans 和对比的 LM
【发布时间】: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&lt;-lm(as.matrix(df[-1])~GROUP, data = df) 这将为您运行所有回归

标签: r loops lm emmeans


【解决方案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 &lt;- emmeans(model, ~ GROUP | rep.meas); contrast(emm, Contrast, adjust = "none")
  • 但是,这将产生一组 6000 个对比...如果您是 R 新手,也许最好从不那么令人生畏的期望开始。
猜你喜欢
  • 1970-01-01
  • 2017-10-25
  • 2020-06-09
  • 2021-07-23
  • 1970-01-01
  • 2020-05-05
  • 2017-07-16
  • 2018-08-14
  • 2017-06-18
相关资源
最近更新 更多