【问题标题】:Doing a linear fit for each group of a data frame, check heteroscedasticity对每组数据帧进行线性拟合,检查异方差
【发布时间】:2018-01-23 09:30:20
【问题描述】:

我有一个这样的数据框:

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 对图进行多图排序,以检查每个拟合模型中是否存在异方差性。但在有组织的多图中:

有什么建议吗? :

【问题讨论】:

  • 我不确定它是否会直接回答您的问题(因此我没有发布答案),但我发现 modelr 包做了很多回归任务,所以容易得多。
  • 除了下面建议broom::augment的答案之外,听起来您只需将+facet_grid(type ~exp)添加到您的ggplot调用中。

标签: r ggplot2 lapply lm


【解决方案1】:

ggplot2 包中fortify() 的文档说该方法将被弃用,而应使用broom 包。根据here 的信息,您应该这样做:

library(dplyr)
library(broom)

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

intsl %>% augment(fit)

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-23
    • 2017-02-07
    • 2018-10-13
    • 2021-03-04
    • 2018-11-18
    相关资源
    最近更新 更多