分割和运行线性回归-使用data.table

问题描述 投票:1回答:1

我问了一个先前的问题(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值...

r data.table regression
1个回答
0
投票

使用dplyr的开发版本,您可以执行:

© www.soinside.com 2019 - 2024. All rights reserved.