GWPR模型运行报错:duplicate couples (id-time)问题排查求助
地理加权面板回归(GWPR)重复id-time对错误求助
运行bw.GWPR函数拟合地理加权面板回归时,持续收到重复id-time对错误,但已验证数据集无重复,且常规plm模型可正常运行,具体情况如下:
报错的GWPR代码及错误信息
bw.GWPR(formula = formula1, data = finalprepostdataset3, SDF = finalprepostdataset_sp, index = c("county_id", "season"), adaptive = TRUE, approach = "AIC", p = 2, effect = "twoways", model = "within", doParallel=T, cluster.number=4, kernel = "bisquare", longlat = FALSE, bigdata = T)
错误提示:
Error in { : task 1 failed - "duplicate couples (id-time)"
注:finalprepostdataset_sp是finalprepostdataset3的空间副本。
已完成的验证与测试
- 常规面板模型可正常运行:
plm( formula=formula1, data=finalprepostdataset3, effect = "time", model = "within", index = c("county_id", "season"), )
- 验证非空间数据集无重复id-time对:
any(table(index(finalprepostdataset3$county_id, finalprepostdataset3$season), useNA = "ifany")!=1) # 输出结果:FALSE
可能的解决方向
- 检查空间数据集的索引一致性:仅验证了非空间数据集,需确认
finalprepostdataset_sp的属性表中无重复id-time对:
any(table(index(finalprepostdataset_sp$county_id, finalprepostdataset_sp$season), useNA = "ifany")!=1)
- 关闭大数据模式测试:
bigdata=T可能改变内部数据处理逻辑,尝试设置bigdata=F后重新运行。 - 禁用并行计算:
doParallel=T在数据分片时可能引发索引异常,先设置doParallel=F单线程运行。 - 统一重置面板索引:对两个数据集重新设置面板索引,确保索引规则一致:
finalprepostdataset3 <- pdata.frame(finalprepostdataset3, index = c("county_id", "season")) finalprepostdataset_sp@data <- pdata.frame(finalprepostdataset_sp@data, index = c("county_id", "season"))
- 检查公式变量:确认
formula1中未包含county_id或season作为自变量,避免内部处理冲突。
内容的提问来源于stack exchange,提问作者josephn
相关产品推荐
相关产品推荐

