You need to enable JavaScript to run this app. statsmodels IV2SLS计算异方差稳健协方差时缺少pinv_wexog属性报错
优惠活动
大模型
产品
解决方案
定价
更多

statsmodels IV2SLS计算异方差稳健协方差时缺少pinv_wexog属性报错

报错原因

调用的statsmodels.sandbox.regression.gmm.IV2SLS属于早期实验性沙箱模块,和statsmodels后续版本的通用稳健协方差计算逻辑不兼容。get_robustcov_results方法依赖的pinv_wexog属性,仅由主流程正式维护的线性回归结果类在拟合阶段自动生成,沙箱版IV2SLS的拟合结果不包含该属性,因此触发属性不存在的异常。

解决方法
  • 替换为正式维护的IV2SLS实现,是成本最低的最优方案:放弃沙箱模块的导入,改用statsmodels.regression.linear_model下的IV2SLS类,该实现的结果对象完全兼容稳健协方差计算接口,修改后的核心代码为:
    # 替换原有沙箱模块的导入语句
    from statsmodels.regression.linear_model import IV2SLS
    
    endog = cig_1995['lpackpc']
    exog = cig_1995[['constant', 'lravgprs']]
    instrument = cig_1995[['constant', 'rtaxso']]
    results = IV2SLS(endog=endog, exog=exog, instrument=instrument).fit()
    # 调用HC1稳健协方差不会触发属性缺失报错
    results_robust = results.get_robustcov_results(cov_type='HC1')
    
  • 若因历史代码约束必须使用沙箱版IV2SLS,需绕过通用的get_robustcov_results接口,按照2SLS的异方差稳健协方差规则手动计算矩阵:计算过程围绕工具变量投影矩阵、残差权重矩阵的连乘逻辑展开,手动实现该流程即可避开对pinv_wexog属性的依赖。
  • 临时补丁方案(不推荐长期使用):在拿到沙箱版IV2SLS的拟合结果后,手动为结果对象赋值pinv_wexog属性为加权外生变量的伪逆矩阵,再调用稳健协方差方法。由于沙箱类和主流程类的内部计算逻辑存在差异,该方法可能出现协方差计算值与官方正式实现不一致的问题,仅适合临时调试场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.26 22:06:04