我想运行lm模型并保存模型比较结果并提取p值。我想保存数据框中的所有信息。 以钻石数据集为例:
diamonds %>%
group_by(cut) %>%
do(model1 = lm(price~carat, data=.),
model2 = lm(price~carat+depth, data=.)) %>%
mutate(anova = anova(model2,model1)) %>%
mutate(pval= anova$'Pr(>F'[2])
我收到以下错误消息:
Error in mutate_impl(.data, dots) :
Column `anova` must be length 1 (the group size), not 6
我的问题是:
我的真实数据比这更复杂。只需使用钻石和线性模型来说明这个想法。 非常感谢。
答案 0 :(得分:2)
这是this.value = null
函数与tidyr::nest()
和purrr
结合使用的非常好的应用程序。你做的是:
- 对数据框进行分组
- 使用broom
应用模型
- 使用mutate(mod = map(data, model)
汇总模型
- 提取相关统计数据。
有关此内容的更多信息,Hadley就此主题发表了精彩演讲:https://www.youtube.com/watch?v=rz3_FDVt9eg
在你的情况下,我认为你可以这样做:
broom::tidy()