从R中的整洁数据同时创建几个线性模型

时间:2018-06-28 05:07:51

标签: r regression linear-regression tidyverse linear

我有一个数据集,如下所示。

id  samediff  gainloss  factor  value
1   S         G         give    3
1   S         G         impact  4
2   S         L         give    2
2   S         L         impact  5   
3   D         G         give    1
3   D         G         impact  4
4   D         L         give    3
4   D         L         impact  5 

我想为每个因子创建一个线性模型,以测试samediff变量和gainloss变量之间的相互作用。当我尝试以下代码时,我得到的输出仅包含系数,并且不包含每个线性模型的完整信息(特别是在为模型编写summary(lm)时给出的信息)。

尝试1:

lm <- dff %>%
  split(.$factor) %>%
  map(~lm(value~(samediff*gainloss), .x))
lm

尝试2:

lm2 <- dff %>% 
  group_by(factor) %>%
  summarise(lm = list(lm(value~(samediff*gainloss))))
lm3<-lm2$lm; names(lm3) <- lm2$factor
lm3

完整的数据集包含的因子比此处包含的因子更多。如何调整此值,以便获得所生成的每个模型的summary()输出?

1 个答案:

答案 0 :(得分:1)

如果可以使用基数R,这是一种方法。

lm_list <- lapply(split(dff, dff$factor), function(DF) lm(value ~ samediff*gainloss, DF))

然后您可以运行,例如

lapply(lm_list, coef)
lapply(lm_list, summary)