为何比较逻辑回归模型时卡方检验与似然比检验结果一致?
为什么逻辑回归模型的ANOVA卡方检验与似然比检验结果完全一致?
这其实是个很常见的疑问,本质上是因为在R的anova.glm()函数里,这两个检验选项其实指的是同一个东西。让我结合你的例子拆解一下:
首先还原你的代码和输出:
fit1=glm(am~mpg+hp,mtcars, family = binomial()) fit2=glm(am~mpg+hp+wt,mtcars, family = binomial()) anova(fit1,fit2, test="Chisq") # Analysis of Deviance Table # # Model 1: am ~ mpg + hp # Model 2: am ~ mpg + hp + wt # Resid. Df Resid. Dev Df Deviance Pr(>Chi) # 1 29 19.2326 # 2 28 8.7661 1 10.466 0.001216 ** # --- # Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 anova(fit1,fit2, test="LRT") # Analysis of Deviance Table # # Model 1: am ~ mpg + hp # Model 2: am ~ mpg + hp + wt # Resid. Df Resid. Dev Df Deviance Pr(>Chi) # 1 29 19.2326 # 2 28 8.7661 1 10.466 0.001216 ** # ---
核心原因:
对于嵌套的广义线性模型(你的fit1是fit2的嵌套模型——fit2只比fit1多了一个自变量wt),似然比检验(LRT)的统计量本身就服从卡方分布:
- 似然比检验的计算逻辑是:用两个模型的偏差(Resid. Dev)之差作为检验统计量,这个差值在大样本下会近似服从自由度为「模型参数个数差」的卡方分布。
- 在R的
anova.glm()实现里,test="Chisq"就是专门为嵌套GLM设计的似然比检验,和test="LRT"是完全等价的参数——只是换了个名称而已。你可以去查?anova.glm的帮助文档,里面明确说明了这一点。
回到你的例子:两个模型的自由度差是1(fit2比fit1多1个自变量),偏差差是19.2326 - 8.7661 = 10.466,这个值就是似然比统计量,同时也是卡方检验的统计量,所以两个命令返回的结果完全一致。
内容的提问来源于stack exchange,提问作者HXD
相关产品推荐
相关产品推荐

