求Stata xtpcse与eststo命令的R替代方案(替代下架的panelAR)
在R中复现Stata的xtpcse固定效应模型(含PCSE、AR1自相关与异方差)
需求说明
需要在R中复现以下Stata代码的功能:拟合带面板校正标准误(PCSE)、AR1自相关、面板异方差的双向固定效应回归模型,且仅筛选predclass == 1的样本。原Stata代码如下:
xtpcse bi1_low ECECenrolmentrate02yearol_MA PublicspendingFamilybencash_MA N_co_ld N_par1_ld N_rr N_usd lnGDPpcPP MA1Blow Femaleemployment2554OECD i.country_num i.year if predclass ==1, correlation(ar1) hetonly eststo
已知panelAR包是Stata xtpcse的等价工具,但该包已从CRAN下架,安装失败,现寻求替代方案或可行的安装方法。
解决方案
方案一:使用plm包实现等价功能
plm是R中常用的面板数据分析包,可通过组合函数实现xtpcse的核心功能:
- 安装并加载包
install.packages("plm") library(plm)
- 数据预处理
筛选目标样本并转换为面板数据格式:
# 筛选predclass == 1的样本 df_filtered <- df[df$predclass == 1, ] # 转换为面板数据(指定个体和时间索引) p_df <- pdata.frame(df_filtered, index = c("country_num", "year"))
- 拟合双向固定效应模型
对应Stata中的i.country_num(个体固定效应)和i.year(时间固定效应):
model_fe <- plm( bi1_low ~ ECECenrolmentrate02yearol_MA + PublicspendingFamilybencash_MA + N_co_ld + N_par1_ld + N_rr + N_usd + lnGDPpcPP + MA1Blow + Femaleemployment2554OECD + factor(year), data = p_df, model = "within", # 个体固定效应 effect = "individual" )
- 计算带AR1自相关与异方差的PCSE
对应Stata的correlation(ar1) hetonly参数:
# cor="ar1":AR1自相关;het=TRUE:面板异方差;pairwise=FALSE:不考虑同期相关(对应hetonly) pcse_result <- pcse(model_fe, cor = "ar1", pairwise = FALSE, het = TRUE) # 查看结果 summary(pcse_result)
方案二:安装下架的panelAR包
若坚持使用panelAR,可从CRAN存档或GitHub镜像安装,步骤如下:
- 安装依赖包
先安装panelAR所需的依赖:
install.packages(c("devtools", "plm", "lmtest", "sandwich")) library(devtools)
- 从CRAN存档安装
指定版本安装(以v0.3.2为例,可根据存档调整版本号):
install_version("panelAR", version = "0.3.2", repos = "http://cran.us.r-project.org")
- 使用
panelAR拟合模型
安装完成后,直接对应Stata参数编写代码:
library(panelAR) df_filtered <- df[df$predclass == 1, ] model_panelAR <- panelAR( bi1_low ~ ECECenrolmentrate02yearol_MA + PublicspendingFamilybencash_MA + N_co_ld + N_par1_ld + N_rr + N_usd + lnGDPpcPP + MA1Blow + Femaleemployment2554OECD + factor(year), data = df_filtered, panelVar = "country_num", # 个体变量 timeVar = "year", # 时间变量 autoCorr = "ar1", # AR1自相关 panelCorr = FALSE, # 不考虑同期相关(对应hetonly) hetCorr = TRUE, # 面板异方差 fixedEffects = "individual"# 个体固定效应,结合factor(year)实现双向固定 ) summary(model_panelAR)
内容的提问来源于stack exchange,提问作者Esther
相关产品推荐
相关产品推荐

