在R中使用anova()函数比较两个模型


32

从文档中anova()

给定一系列对象后,“ anova”将按照指定的顺序对模型进行测试...

相互测试这些模型意味着什么?为什么顺序很重要?

这是GenABEL教程中的示例:

    >  modelAdd = lm(qt~as.numeric(snp1))
    >  modelDom = lm(qt~I(as.numeric(snp1)>=2))
    >  modelRec = lm(qt~I(as.numeric(snp1)>=3))
     anova(modelAdd, modelGen, test="Chisq")
    Analysis of Variance Table

    Model 1: qt ~ as.numeric(snp1)
    Model 2: qt ~ snp1
      Res.Df  RSS Df Sum of Sq Pr(>Chi)
    1   2372 2320                      
    2   2371 2320  1    0.0489     0.82
     anova(modelDom, modelGen, test="Chisq")
    Analysis of Variance Table

    Model 1: qt ~ I(as.numeric(snp1) >= 2)
    Model 2: qt ~ snp1
      Res.Df  RSS Df Sum of Sq Pr(>Chi)
    1   2372 2322                      
    2   2371 2320  1      1.77     0.18
     anova(modelRec, modelGen, test="Chisq")
    Analysis of Variance Table

    Model 1: qt ~ I(as.numeric(snp1) >= 3)
    Model 2: qt ~ snp1
      Res.Df  RSS Df Sum of Sq Pr(>Chi)  
    1   2372 2324                        
    2   2371 2320  1      3.53    0.057 .
    ---
    Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1 

如何解释此输出?

Answers:


31

当您使用anova(lm.1,lm.2,test="Chisq")时,它执行卡方检验,比较lm.1lm.2(即其测试减少平方剩余总和是否在统计上显著与否)。请注意,仅当lm.1lm.2为嵌套模型时才有意义。

例如,在您使用的第一个方差分析中,测试的p值为0.82。这意味着拟合模型“ modelAdd”在的水平上与modelGen没有显着差异。但是,使用第三个方差分析中的p值,模型“ modelRec”与模型“ modelGen”显着不同。α=0.05α=0.1

还可以查看线性模型拟合的方差分析


1
但这是否暗示着两者之一是否更好?谢谢!
2013年

5
这取决于您如何定义术语“更好”。如果将其定义为提供较少残差平方和的模型,那么答案是肯定的。这是因为,此测试比较了残差平方和的减少。
2013年

3
另一方面,如果两个模型没有显着不同,可以说简单的模型“更好”吗?我在想这里的礼仪。
Sininho

1
如果anova(mod1,mod2,test =“ LRT”)怎么办?
ElleryL
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.