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

R语言plm包purtest非平衡面板IPS单位根检验报错求解

报错根因

该报错和非平衡面板属性、IPS检验逻辑无关,是purtest()函数入参格式不符合要求导致的。
purtest不支持直接通过数据框$列名的方式传入待检验变量:这种写法传入的是无面板索引属性的原子向量,函数无法识别数据对应的个体维度、时间维度,在按SIC准则筛选最优滞后期做子集切片时,会生成无效的负下标,最终触发运算错误。

修复方法

按以下两步调整代码即可正常运行:

  • 先将普通数据框转换为plm包可识别的面板结构,明确指定个体标识列、时间标识列(把代码里的id、year替换为你自己数据中对应的列名):
library(plm)
pD1 <- pdata.frame(D1, index = c("id", "year"))
  • 改用公式格式传入待检验变量,不要使用$取列的写法,重新调用检验函数:
ips_result <- purtest(~ int_rate,
                      data = pD1,
                      test = "ips",
                      lags = "SIC",
                      pmax = 2,
                      exo = "trend")
排查补充

如果调整格式后仍报错,按以下优先级排查:

  • 检查面板索引是否存在重复:同一个体+同一时间维度下存在多条重复观测会导致pdata.frame结构失效,可运行any(table(index(pD1)) > 1)快速检测,结果为TRUE说明存在重复索引,先去重再做检验。
  • 检查个体观测长度:如果存在个体的有效连续观测数小于你设置的pmax=2,内部计算滞后项时也会出现下标错误,这类情况要么剔除观测时长过短的个体,要么根据最短序列长度适当调小pmax取值。
  • IPS检验原生支持非平衡面板,不需要提前把数据裁剪为平衡面板,裁剪反而会损失有效样本信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 16:57:23