Python中Probit回归结果仅显示系数其余为NaN的问题求助
解决Probit回归正则化拟合后结果除系数外全为NaN的问题
问题根源
你用的fit_regularized()方法,在statsmodels里默认不会计算标准误、p值、置信区间这类推断统计量,所以输出的summary2里这些字段全是NaN——这不是bug,是方法的默认行为,因为正则化估计的方差计算逻辑更复杂,默认没开启。
具体解决办法
1. 开启协方差矩阵计算(获取推断统计量)
如果确实需要正则化,同时想要标准误等结果,调用fit_regularized()时加上calc_cov=True参数,同时指定正则化方法(比如L1或L2)。示例代码:
import statsmodels.api as sm # 记得给特征加常数项,statsmodels默认不含截距 X = sm.add_constant(X) probit_model = sm.Probit(y, X) # 以L1正则为例,开启协方差计算 result = probit_model.fit_regularized(method='l1', calc_cov=True) print(result.summary2())
注意:正则化后的方差是近似估计,比如基于Hessian矩阵或三明治估计,结果仅供参考。
2. 改用普通拟合方法(不需要正则化时)
如果你的数据不需要正则化(比如没有多重共线性、过拟合问题),直接用普通的fit()方法,会自动计算所有统计量:
import statsmodels.api as sm X = sm.add_constant(X) probit_model = sm.Probit(y, X) result = probit_model.fit() print(result.summary2())
3. 额外检查点
- 确认特征矩阵
X是否添加了常数项:statsmodels的线性模型(包括Probit)默认不包含截距,必须手动用sm.add_constant()添加,否则模型设定可能有问题。 - 检查Robust Scaler处理后的数据:有没有出现极端值或NaN,确保输入数据没有异常。
内容的提问来源于stack exchange,提问作者silent_hunter
相关产品推荐
相关产品推荐

