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

R中如何实现带AR(1)扰动的固定效应分析?panelAR包已下架

带AR(1)扰动的面板固定效应分析替代方案(R语言)

问题背景

需要执行带AR(1)序列相关扰动的面板固定效应分析,原依赖的panelAR包已从CRAN下架,无法直接调用,且偏好使用R而非STATA的xtregar命令。原尝试代码如下:

pdata20032020_2 <- panelAR(RDItplusone ~
                         PBA
                       +PAA
                       #+CASH
                       #+COMMON_SHARES_OUTSTANDING
                       +SIC_CODE
                       +MS
                       +HHI
                       +AbsorbedSlack
                       +UnabsorbedSlack
                       +PotentialSlack
                       #+SchumacherSlack_Bromiley
                       #+CURRENT_LIABILITIESTOTAL
                       #+CURRENT_RATIO
                       #+MARKET_VALUE
                       #+NET_INCOME_DOLLAR
                       +NET_SALES_OR_REVENUES
                       #+QUICK_RATIO
                       #+SHORTTERM_INVESTMENTS
                       +TOTAL_ASSETS
                       #+CEO_TOTAL_WRDS
                       #+Analyst_TOTAL_WRDS
                       #+Analyst_CCC_standardized_avg
                       , data=pdata20032020
                       ,timeVar = 'year'
                       ,panelVar = 'company'
                       ,autoCorr = c("ar1","none", "psar1")
                       ,panelCorrMethod = c("none","phet","pcse","pwls", "parks")
                       , rhotype ="breg"
                       , bound.rho = FALSE
                       , rho.na.rm = FALSE
                       , panel.weight = c("t-1", "t")
                       , dof.correction = FALSE
                       , complete.case = FALSE
                       , seq.times = FALSE
                       , singular.ok=TRUE) 

替代方案

方案1:从GitHub安装旧版panelAR包

虽然CRAN已下架,部分开发者会在GitHub留存包的源码,可通过devtools安装:

# 安装devtools(若未安装)
install.packages("devtools")
# 从GitHub安装存档版本
devtools::install_github("cran/panelAR")

注意:GitHub存档可能未维护,若出现编译错误,建议使用下方其他方案。

方案2:使用plm包实现固定效应+AR(1)扰动

plm是R中主流面板数据分析包,支持通过可行广义最小二乘(FGLS)处理AR(1)序列相关:

# 安装并加载plm包
install.packages("plm")
library(plm)

# 将数据转换为面板数据格式
pdata <- pdata.frame(pdata20032020, index = c("company", "year"))

# 估计固定效应模型并处理AR(1)序列相关
ar1_fe_model <- pggls(RDItplusone ~ PBA + PAA + SIC_CODE + MS + HHI + 
                        AbsorbedSlack + UnabsorbedSlack + PotentialSlack + 
                        NET_SALES_OR_REVENUES + TOTAL_ASSETS,
                      data = pdata,
                      model = "within",
                      correlation = corAR1(form = ~ year | company))

# 查看结果
summary(ar1_fe_model)
  • corAR1(form = ~ year | company)指定每个个体(company)的残差遵循AR(1)过程,时间维度为year。
  • model="within"对应固定效应模型,与原panelAR的固定效应设定一致。

方案3:使用lfe包+手动拟合AR(1)

若需要更灵活的固定效应设定(如多维度固定效应),可先用lfe估计固定效应,再手动拟合AR(1)并执行FGLS:

# 安装并加载lfe包
install.packages("lfe")
library(lfe)

# 第一步:估计固定效应模型,提取残差
fe_model <- felm(RDItplusone ~ PBA + PAA + SIC_CODE + MS + HHI + 
                   AbsorbedSlack + UnabsorbedSlack + PotentialSlack + 
                   NET_SALES_OR_REVENUES + TOTAL_ASSETS | company,
                 data = pdata20032020)
residuals <- residuals(fe_model)

# 第二步:对每个个体的残差拟合AR(1),估计rho值
install.packages("dplyr")
library(dplyr)
rho_estimates <- pdata20032020 %>%
  group_by(company) %>%
  mutate(lag_resid = lag(residuals)) %>%
  na.omit() %>%
  summarise(rho = coef(lm(residuals ~ lag_resid - 1))[1])

# 第三步:基于估计的rho执行FGLS
ar1_fe_model_fgls <- pggls(RDItplusone ~ PBA + PAA + SIC_CODE + MS + HHI + 
                             AbsorbedSlack + UnabsorbedSlack + PotentialSlack + 
                             NET_SALES_OR_REVENUES + TOTAL_ASSETS,
                           data = pdata,
                           model = "within",
                           correlation = corAR1(value = rho_estimates$rho, form = ~ year | company))

summary(ar1_fe_model_fgls)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 16:55:17