Statsmodels逻辑回归的方差分析(Anova)实现方法问询
嘿,这个问题我之前也折腾过!Statsmodels里确实没有直接给逻辑回归的ANOVA实现,但咱们可以用**似然比检验(Likelihood Ratio Test)**来实现等效的分析——这其实就是广义线性模型场景下,替代线性ANOVA的标准方法,核心是通过对比嵌套模型的拟合优度,判断自变量(或一组自变量)是否对模型有显著贡献。
下面给你三种实用的实现方式:
方法1:手动计算似然比检验(理解原理必备)
先拟合全模型和简化模型,再手动计算检验统计量和p值,适合搞清楚背后的逻辑:
from statsmodels.formula.api import logit import statsmodels.api as sm from scipy.stats import chi2 # 用内置数据集举例(心脏病数据) data = sm.datasets.get_rdataset('heart', 'survival').data # 1. 拟合包含所有自变量的全模型 full_model = logit(formula="status ~ age + sex + trestbps + chol", data=data).fit() # 2. 拟合去掉目标自变量的简化模型(比如去掉chol) reduced_model = logit(formula="status ~ age + sex + trestbps", data=data).fit() # 3. 计算似然比统计量、自由度和p值 lr_stat = -2 * (reduced_model.llf - full_model.llf) # llf是对数似然值 df_diff = full_model.df_model - reduced_model.df_model # 模型自由度差 p_value = chi2.sf(lr_stat, df_diff) # 卡方分布求p值 print(f"似然比统计量: {lr_stat:.3f}") print(f"自由度: {df_diff}") print(f"p值: {p_value:.3f}")
如果p值小于你的显著性水平(比如0.05),就说明被去掉的自变量对模型有显著贡献,相当于线性ANOVA里的组间差异显著。
方法2:用Statsmodels自带的
compare_lr_test方法(最简洁) 其实Statsmodels的模型对象已经内置了对比嵌套模型的方法,不用手动计算:
# 直接用两个模型调用compare_lr_test lr_result = full_model.compare_lr_test(reduced_model) print(f"似然比统计量: {lr_result[0]:.3f}") print(f"自由度: {lr_result[1]}") print(f"p值: {lr_result[2]:.3f}")
这个方法和手动计算的结果完全一致,日常用这个最省心。
方法3:针对分类变量的“ANOVA式”整体检验
如果你的自变量是多水平分类变量(比如胸痛类型、组别),想检验这个变量整体是否显著,就拟合包含该分类变量的模型和不包含的模型,再做似然比检验——这完全对应线性ANOVA中检验分类变量主效应的逻辑:
# 拟合包含分类变量cp(胸痛类型)的全模型 full_model_with_cp = logit(formula="status ~ age + sex + cp", data=data).fit() # 拟合去掉cp的简化模型 reduced_model_no_cp = logit(formula="status ~ age + sex", data=data).fit() # 做检验 lr_result = full_model_with_cp.compare_lr_test(reduced_model_no_cp) print(f"胸痛类型变量的整体显著性检验:") print(f"似然比统计量: {lr_result[0]:.3f}") print(f"自由度: {lr_result[1]}") print(f"p值: {lr_result[2]:.3f}")
这里的自由度差等于分类变量的水平数减1(因为分类变量会被编码成k-1个虚拟变量)。
几个关键注意点
- 必须用嵌套模型:简化模型必须是全模型去掉某些自变量得到的,不能对比非嵌套模型;
- 逻辑回归的“ANOVA”本质是似然比检验,和线性ANOVA的方差分解原理不同,但作用完全一致——判断自变量是否能显著提升模型拟合效果;
- 如果要一次性检验多个自变量,只要构建对应去掉这些自变量的简化模型即可,核心逻辑不变。
内容的提问来源于stack exchange,提问作者Asher11
相关产品推荐
相关产品推荐

