You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

求Python中替代Stata xtregar/R panelAR的面板回归工具包

Python中替代Stata xtregar/R panelAR的面板回归工具包

针对你需要的带个体固定效应、时间固定效应,且误差项存在AR(1)自相关、异方差及个体内等相关的面板模型(符合Baltagi & Wu(1999)或Peterson(2007)设定),以下是Python里可用的工具包及实现方式:

1. linearmodels(推荐)

这是Python生态中专门针对面板回归设计的库,语法贴近Stata/R的面板分析工具,完美支持你的模型需求:

  • 直接通过公式设定个体固定效应(EntityEffects)和时间固定效应(TimeEffects
  • 支持多种协方差估计方法,可同时处理异方差、个体内相关和AR(1)自相关,对应Baltagi-Wu或Peterson的设定
  • 可显式建模误差项的AR(1)结构

示例代码:

import linearmodels as plm

# 将数据设为面板索引(实体+时间)
data = data.set_index(['entity_id', 'time'])

# 定义模型:包含截距、滞后X、个体固定效应、时间固定效应
model_spec = plm.PanelOLS.from_formula(
    'Y ~ 1 + X_lag1 + EntityEffects + TimeEffects',
    data=data
)

# 用kernel-based协方差拟合(处理AR(1)自相关+异方差+个体内相关)
# bandwidth=1对应AR(1)的滞后阶数
results = model_spec.fit(cov_type='kernel', kernel='bartlett', bandwidth=1)
print(results.summary())

若要实现Baltagi & Wu(1999)的可行GLS估计,可先对数据做AR(1)转换再拟合:

# 估计AR(1)系数
ar1_est = plm.AR1.from_formula('Y ~ 1 + X_lag1 + EntityEffects + TimeEffects', data=data).fit()
# 转换数据并拟合模型
transformed_data = ar1_est.transform(data)
model_transformed = plm.PanelOLS.from_formula(
    'Y ~ 1 + X_lag1 + EntityEffects + TimeEffects',
    data=transformed_data
)
results_gls = model_transformed.fit()
print(results_gls.summary())

2. statsmodels

statsmodels的面板模块也能实现部分功能,不过需要手动调整:

  • 可通过虚拟变量或PanelOLS设定固定效应
  • 用聚类协方差处理个体内相关,Newey-West协方差处理自相关+异方差

示例代码:

import statsmodels.api as sm
from statsmodels.regression.linear_model import OLS
import pandas as pd

# 添加个体和时间固定效应的虚拟变量
data['entity_fe'] = pd.Categorical(data['entity_id'])
data['time_fe'] = pd.Categorical(data['time'])
X = sm.add_constant(data[['X_lag1', 'entity_fe', 'time_fe']])
y = data['Y']

# 拟合模型,使用个体聚类协方差(处理个体内相关+异方差)
model = OLS(y, X)
results_cluster = model.fit(cov_type='cluster', cov_kwds={'groups': data['entity_id']})

# 或使用Newey-West协方差(处理AR(1)自相关+异方差)
results_newey = model.fit(cov_type='HAC', cov_kwds={'maxlags': 1})
print(results_newey.summary())

实用提示

  • linearmodels对面板模型的支持更全面,语法更直观,适合Python新手快速上手
  • 安装命令:pip install linearmodels(linearmodels)、pip install statsmodels(statsmodels)

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

火山引擎 最新活动