如何一次计算多个R系数?

How to calculate multiple R coefficients at one time?

我有一个每列 1672 个条目的数据集 (PAEscore)(38 个参与者,每个参与者 44 个观察值)。我想查看 Fraction_Value 与 Subject_Fraction,并编写脚本的一部分,该脚本将为我提供每个主题的 R 系数。在我加载的数据中,有一列用于主题编号,一列用于分数值,一列用于主题分数。到目前为止,我有一个代码可以为我提供所有 38 位参与者的综合数据的绘图和 R 值:

fit1 <- lm(Fraction_Value ~ Subject_Fraction) 

summary(fit1)

plot(Fraction_Value ~ Subject_Fraction)
abline(fit1)

但是,我遇到了很多麻烦 运行 循环会给我一个 table 包含每个参与者的个人 R 值。我已经试过了,但没有用。

PAEcoeff = matrix()

for (i in levels(PAEscore$Subject_ID)) {
  # Create temporary data frame:
     PAE_tmp  <- PAEscore[PAEscore$Subject==i,]
  # Perform regression:
      reg_result <- lm(PAE_tmp$Fraction_Value ~ PAE_tmp$Subject_Fraction)
 # Get coefficient:
      tmp_coef   <- coef(reg_result)
  # Store coefficient:
     PAEcoeff[as.numeric(i)] <- tmp_coef[2]
}

你们有什么建议可以解决吗?当我 运行 时我没有得到任何错误,但我只是得到一个空的 table。我错过了什么?或者,有没有更简单的方法来做到这一点?

我的回答是假设 PAEscore$Subject_ID 很容易成为一个因素而不是一个字符(否则 levels(PAEscore$Subject_ID 给出 NULL 而你的循环什么都不做!)

你的循环计数器i是通过关卡的,所以它将是一个字符串。使用 as.numeric(i) 将其强制转换为数字会得到 NA.

修复它。在循环外,初始化

PAEcoeff <- setNames(numeric(nlevels(PAEscore$Subject_ID)), levels(PAEscore$Subject_ID))

然后在循环里面,使用PAEcoeff[i].

Is there an easier way to do this?

您正在按组拟合线性回归。我建议你阅读 Linear Regression and group by in R。我在这里的回答只是为了修复你的错误。