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

如何在Python中获取Stata logit回归的Prob>chi2等效值

Stata logit的Prob>chi2在Python statsmodels中的对应计算方法

Stata里logit输出的Prob>chi2是似然比(LR)卡方检验的p值,用于检验所有自变量的系数是否联合为0(原模型无解释力)。statsmodels的Logit汇总默认不显示这个值,但可以通过以下两种方式得到和Stata完全一致的结果:

方法1:直接调用结果对象的属性

statsmodels拟合Logit后,结果对象的llr_pvalue属性就是对应Stata的Prob>chi2,同时llr是对应的卡方统计量:

import statsmodels.api as sm

# 假设y是二元因变量,X是已添加截距的自变量矩阵
model = sm.Logit(y, X)
results = model.fit()

# 获取Prob>chi2
prob_chi2 = results.llr_pvalue
print(f"Prob>chi2: {prob_chi2:.4f}")

方法2:手动计算(验证用)

如果需要手动复现计算逻辑,步骤如下:

  1. 拟合仅含截距的空模型
  2. 计算原模型和空模型的对数似然差,转换为卡方统计量
  3. 用卡方分布计算右尾p值
import statsmodels.api as sm
import numpy as np
from scipy.stats import chi2

# 拟合原模型
model = sm.Logit(y, X)
results = model.fit()

# 拟合空模型(仅截距项)
null_model = sm.Logit(y, sm.add_constant(np.zeros(len(y))))
null_results = null_model.fit(disp=0)  # disp=0关闭拟合过程输出

# 计算似然比卡方统计量
ll_full = results.llf  # 原模型对数似然
ll_null = null_results.llf  # 空模型对数似然
chi2_stat = -2 * (ll_null - ll_full)

# 自由度为自变量个数(原模型参数数 - 空模型参数数)
df = results.df_model

# 计算p值
prob_chi2_manual = chi2.sf(chi2_stat, df)
print(f"手动计算的Prob>chi2: {prob_chi2_manual:.4f}")

注意事项

  • 如果你用scipy得到的结果和Stata不一致,大概率是用错了检验类型:Stata默认输出的是似然比检验的结果,而非Wald检验。很多人会误拿Wald检验的统计量计算,导致结果偏差。
  • results.df_model就是Stata中卡方检验的自由度,等于自变量的数量(截距项不算在内),和Stata的计算逻辑完全一致。

内容的提问来源于stack exchange,提问作者ASan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 04:17:45