面板数据Pesaran CD测试报错求助(意大利省份面板)
解决Pesaran CD测试中截面不变变量导致的NA结果问题
问题场景
针对意大利省份面板数据(每个省份包含22年季度数据,共92个观测),变量lag_lingua的取值仅在省份间存在差异,同一省份的所有时间点(年、季度)取值固定。使用plm包执行Pesaran CD测试时,得到以下结果:
Pesaran CD test for cross-sectional dependence in panels data: AA$lag_lingua z = NA, p-value = NA alternative hypothesis: cross-sectional dependence Warning message: In cor(wideres, use = "pairwise.complete.obs") : la deviazione standard è zero.
原因分析
Pesaran CD测试的核心逻辑是利用变量的时间维度波动,计算不同截面单元间的同期相关系数。而lag_lingua在每个省份的时间序列中完全没有变异(所有观测值相同),导致该变量的时间序列标准差为0,无法计算有效的截面相关系数,最终返回NA结果并触发标准差为0的警告。
解决方法
1. 明确测试适用范围
Pesaran CD测试原本是为随时间变化的面板变量设计的。对于完全截面不变的变量,它的截面相关性是恒定的(所有时间点的截面相关系数完全一致),没必要用CD测试——直接计算截面单元间的简单相关系数即可:
# 提取每个省份的lag_lingua唯一值 cross_section_data <- unique(AA[, c("id", "lag_lingua")]) # 计算省份间的相关系数矩阵 cor(cross_section_data$lag_lingua)
2. 若需结合CD测试框架(如流程要求)
如果必须用CD测试的逻辑,可以转而去测试包含该变量的回归残差的截面相关性(前提是回归中包含随时间变化的变量):
# 示例:以某个随时间变化的变量为被解释变量,加入lag_lingua做时间固定效应回归 model <- plm(your_time_varying_var ~ lag_lingua, data = AA, model = "within", effect = "time") # 对回归残差执行CD测试 pcdtest(residuals(model))
这样残差会包含时间维度的波动,满足CD测试的计算要求。
内容的提问来源于stack exchange,提问作者Marco
相关产品推荐
相关产品推荐

