【问题标题】:Creating several linear models simultaneously from tidy data in R从 R 中的整洁数据同时创建多个线性模型
【发布时间】:2018-12-07 01:47:19
【问题描述】:

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

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 

我想为每个因素创建一个线性模型,以测试相同差异变量和增益损失变量之间的相互作用。当我尝试以下代码时,我得到的输出仅包括系数,不包括每个线性模型的完整信息(特别是为模型编写 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() 输出?

【问题讨论】:

  • 你真的想要tidyverse 还是base R 会这样做?
  • 我尝试在使用 tidyverse 时保持一致,但此时我会非常满意。

标签: r regression linear-regression tidyverse


【解决方案1】:

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

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

然后你可以运行,例如,

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

【讨论】:

    猜你喜欢
    • 2019-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多