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

使用econtools的mt.reg计算Conley标准误差时出现KeyError: 'id'

解决mt.reg计算Conley标准误时的KeyError: 'id'问题

问题背景

使用econtools的mt.reg函数,同时指定固定效应fe_name='id'和Conley空间标准误参数shac时,触发KeyError: 'id'。已确认'id'列存在于数据框中,且尝试将其转为字符串类型无效。

报错原因分析

从报错栈看,问题出现在固定效应去均值(demean)的步骤:_demean函数中,将固定效应Series转为DataFrame后,执行join操作时找不到'id'列。这是econtools旧版本中force_df函数处理Series转DataFrame时的潜在bug,或内部数据处理逻辑导致固定效应列被意外排除。

解决方案

方案1:手动对变量去均值后再回归

跳过mt.reg的自动去均值逻辑,手动按'id'对被解释变量和解释变量去均值,然后不带fe_name参数跑回归:

# 手动对变量按id去均值
data['y_demeaned'] = data.groupby('id')['y'].transform(lambda col: col - col.mean())
data['x_demeaned'] = data.groupby('id')['x'].transform(lambda col: col - col.mean())

# 构造Conley标准误参数
shac_params = {
    'x': 'lon', 
    'y': 'lat',   
    'kern': 'tria',     
    'band': 0.0025,          
}

# 运行回归,指定nocons=True避免自动添加常数项
results = mt.reg(data, 'y_demeaned', 'x_demeaned', shac=shac_params, nocons=True)

方案2:升级econtools到最新版本

该问题可能是旧版本的已知bug,升级包即可修复:

pip install --upgrade econtools

升级后重新运行原代码即可。

方案3:验证数据基础问题(先排查)

  • 确认列名无拼写错误或空格:执行print(data.columns)检查'id'是否准确存在。
  • 检查'id'列是否有缺失值:执行print(data['id'].isna().sum()),若有缺失需先处理(如data = data.dropna(subset=['id']))。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 11:14:53