【问题标题】:using anova to compare two linear models of unequal sample size: error使用方差分析比较两个样本量不等的线性模型:错误
【发布时间】:2019-05-16 02:02:46
【问题描述】:

这是我想做的一个例子,随机生成的数字集:

a <- runif(100, min =0.5, max=1);
b <- runif(100, min = 0, max =1);
c <- factor(rep(c("High", "Low", "High", "High"), times = 25));

df<-data.frame(a,b,c);

head(df)

 a          b           c    
1 0.9506028 0.84686708 High    
2 0.7296878 0.24566532  Low    
3 0.6208635 0.90166263 High    
4 0.9009880 0.98464187 High    
5 0.6032242 0.23613096 High    
6 0.5409369 0.06325577  Low

所以我在这里要做的是创建两个单独的线性模型,一个用于子集数据(c=="High",n=75),另一个用于子集数据(c=="Low",n= 25)........

...然后我想运行方差分析来比较线性模型:

mod1<-lm(b~a, data=df, subset = c=="High")

mod2<-lm(b~a, data=df, subset = c=="Low")

到目前为止一切正常,但是下一个命令:

anova(mod1,mod2)

产生错误:

anova.lmlist(object, ...) 中的错误: 模型并非都适合相同大小的数据集

这个问题可以使用更新函数来解决,虽然我还没有遇到一个例子来展示如何在 lm 调用行中更新子集函数。

谢谢:)

【问题讨论】:

    标签: r regression anova


    【解决方案1】:

    通过以下方式:

    mod1<-lm(b~a, data=df, subset = c=="High")
    mod2<-lm(b~a, data=df, subset = c=="Low")
    

    您适合两个模型: $$Y=\alpha_0 + \alpha_1 X +\epsilon$$ $$Y=\beta_0 + \beta_1 X +\epsilon$$

    这两种模型可以组合成一个模型: $$Y=\alpha_0 + \alpha_1 X + Z(\beta_0 + \beta_1 X) + \epsilon$$ 其中 $Z=1$ 代表 c="Low" 和 = 0 代表 c="High"。

    然后可以检验原假设 $\beta_0 = 0$ (两行截距相同)或 $ \beta_1 = 0$ (两条线斜率相同)或 $\beta_0 = 0, \beta_1 = 0$ (两条线完全相同)。

    我尝试了以下,它有效。

      cmod<-lm(b~a*factor(c), data=df)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-19
      • 1970-01-01
      • 2011-06-23
      • 2023-02-12
      • 2016-02-27
      • 1970-01-01
      相关资源
      最近更新 更多