对数据帧的每个组进行线性拟合,检查异方差性

时间:2017-08-15 12:51:08

标签: r ggplot2 lapply lm

我有一个这样的数据框:

ORD   exp type         mu
1   Combi pH=7 exp_F   mu 0.15637365
2   Combi pH=7 exp_F   mu 0.12817901
3   Combi pH=7 exp_F   mu 0.13392221
4   Combi pH=7 exp_F   mu 0.09683254
5   Combi pH=7 exp_F   mu 0.11249738
6   Combi pH=7 exp_F   mu 0.10878719
7   Combi pH=7 exp_F   mu 0.11019295
8   Combi pH=7 exp_F   mu 0.12100511
9   Combi pH=7 exp_F   mu 0.09803942
10  Combi pH=7 exp_F   mu 0.13842086
11  Combi pH=7 exp_F   mu 0.12778964
12     ORD0793 exp_F   mu 0.13910441
13     ORD0793 exp_F   mu 0.12603702
14     ORD0793 exp_F   mu 0.12670842
15     ORD0795 exp_F   mu 0.12982122
16     ORD0795 exp_F   mu 0.13648100
17     ORD0795 exp_F   mu 0.13593685
18     ORD0799 exp_F   mu 0.13906691
continues...

我想对lm(mu~ORD, data=df)进行线性调整,但是对于每组类型和exp。我尝试过以下但是它不起作用..:

intsl <- df %>% group_by(exp,type) %>% 
  fortify(lm(mu~ORD)) %>% 
  select(exp,type, .fitted, .resid) 

我需要使用fortify,因为我需要.fitted和.resid字段以便稍后使用ggplot中的facet_grid按类型和exp进行多时间排序图,以检查每个拟合模型中是否存在异方差性。喜欢但是在一个有机化的多时段中: enter image description here

有什么建议吗? :其中

1 个答案:

答案 0 :(得分:1)

fortify()包中ggplot2的文档说明该方法将被弃用,而应使用broom包。根据信息here,您应该执行以下操作:

library(dplyr)
library(broom)

intsl <- df %>%
  group_by(exp, type) %>%
  do(fit = lm(mu ~ ORD, .)

intsl %>% augment(fit)

这应该为您提供数据框,其中包含您用于对回归进行分组的变量,回归变量以及每个观察的额外输出,例如.fitted.resid,这样您就可以继续用ggplot直接绘制它们。