我问了一个先前的问题(Splitting data and running linear regression loop),使用tidyverse和管道提供了一个很好的解决方案。我正在为数据中的4,000个“键”保存参数的p值,将它们放入单独的数据框中,然后运行一些直方图和其他可视化图像以检查4,000个键中每个参数的重要性。在我运行它的最初几次时,这是可行的,但是在不同的参数/预测器上运行完全相同的代码,我不断收到错误消息:
Error in summary(lm(y1 ~ x1 + x2 ))$coefficients['x1', : subscript out of bounds
如果我在该键上运行单个模型并查看摘要,则pvalue肯定存在于[x1,4]
或[2,4]
位置,但不会在模型中返回。有时它会运行,但随后在[3,4]
或[4,4]
等上轰炸。
有人建议dydyverse杀死了记忆,从而炸毁了它。我知道这不是代码,因为它有时可能会起作用,或者有时会比其他时候进步得更多,但这似乎很奇怪。因此,data.table
是遍历整个数据集的更好解决方案吗?我不熟悉如何将data.table
链接在一起,因此我将如何使用data.table
重新创建以下代码,以对我拥有的10个以上参数的4,000个键中的每个键运行模型。
df
Key y1 x1 x2
A 10 1 3
A 11 2 4
A 12 3 5
B 13 4 6
B 14 5 7
B 15 6 8
C 16 7 9
C 17 8 1
C 18 9 2
df %>% group_by(Key) %>%
summarise(Intercept = lm(y1 ~ x1 + x2)$coefficients[1],
Coeff_x1 = lm(y1 ~ x1 + x2)$coefficients[2],
Coeff_x2 = lm(y1 ~ x1 + x2)$coefficients[3],
R2 = summary(lm(y1 ~ x1 + x2))$r.squared,
pvalue = summary(lm(y1 ~ x1 + x2))$coefficients["x1",4])
# A tibble: 3 x 6
Key Intercept Coeff_x1 Coeff_x2 R2 pvalue
<chr> <dbl> <dbl> <dbl> <dbl> <dbl>
1 A 9. 1.00 NA 1 8.00e-16
2 B 9. 1.00 NA 1 7.00e-16
3 C 9. 1.00 7.86e-16 1 NaN
我问了一个先前的问题(拆分数据并运行线性回归循环),使用tidyverse和管道提供了一个很好的解决方案。我为...保存了我的参数的p值...
使用dplyr
的开发版本,您可以执行: