You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何比较逻辑回归模型时卡方检验与似然比检验结果一致?

为什么逻辑回归模型的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:15:59