如何一次计算多个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。我在这里的回答只是为了修复你的错误。
我有一个每列 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。我在这里的回答只是为了修复你的错误。