首页 文章

R空间面板固定效果:lag.listw中的错误,对象长度不同

提问于
浏览
1

我正在使用R包“splm”估计空间面板数据的固定效应模型 . 强有力 balancer 的小组由77个县和31年的观察组成 . 因变量是一种作物的县级产量 . 当我对随时间变化的趋势和单个固定效果进行回归时,我得到了对象长度不同的错误,即使我有完美 balancer 的面板并且使用相同的一组县来创建空间权重矩阵 .

下面我生成了一个类似于我的数据的“面板数据集”,并且还生成了具有随机数的县的经度和纬度数据 . 即使使用此随机数据,也会发生相同的错误 .

##generated panel data for yield
set.seed(97531)
yield.normal <- as.data.frame(matrix(rnorm(2387*1, mean=1.92, sd=0.5), ncol=1))
colnames(yield.normal) = "yield"
yield.normal$panelid = with(yield.normal, seq(1:77))
yield.normal$timeid = with(yield.normal, seq(1:31))
yield.normal$county = with(yield.normal, as.factor(seq(1:77)))
yield.normal$countyname = paste0("county",yield.normal$county)
yield.normal$trnd = with(yield.normal, seq(1:31))

#generate coordinates of the 77 Oklahoma counties
latitude.county = sample(36.83013180:33.90212700, size = 77, replace = T)
longitude.county = sample(-94.81059550:-102.62162110, size = 77, replace = T)
lat.long.data = cbind2(longitude.county,latitude.county)
colnames(lat.long.data)=c("lon","lat")
#Create spatial weight matrix
distNeighbr = spdep::dnearneigh(lat.long.data, d1=0, d2=5)
wtmat1 = spdep::nb2listw(distNeighbr, style='W')

#Estimate the spatial fixed-effects model
spatial.FE.model = splm::spml(yield~trnd, data = yield.normal, index = c("timeid", "panelid"), listw = wtmat1,  model = "within", effect ="individual", method = "eigen")

错误报告:

lag.listw中的错误(listw,u,zero.policy = zero.policy):对象长度不同

输出来自: traceback() 如下:

8:停止(“对象长度不同”)7:lag.listw(listw,u,zero.policy = zero.policy)6:FUN(X [[i]],...)5:lapply(X = ans [index],FUN = FUN,...)4:tapply(y,inde,function(u)lag.listw(listw,u,zero.policy = zero.policy),simplify = TRUE)3:unlist( tapply(y,inde,function(u)lag.listw(listw,u,zero.policy zero.policy),simplify = TRUE))2:spfeml(formula = formula,data = data,index = index,listw = listw ,listw2 = listw2,na.action,model = model,effects = effects,cl = cl,...)1:splm :: spml(yield~trnd as.factor(county) - 1,data = yield.normal, index = c(“timeid”,“panelid”),listw = wtmat1,model =“within”,effect =“individual”,method =“eigen”)

请帮我解决这个问题 .

1 回答

  • 0

    此问题已得到解决 . “splm”软件包的作者指出,面板ID的设置方式存在错误 . 空间单位必须较慢(1,1,1,.....; 2,2,2 ...; ....; 77,77,77,....),时间id必须是两者中的速度更快(1,2,3,......,31; ......; 1,2,3 ... 31) . 相应地设置数据后,我可以得到结果 .

    真诚地感谢“splm”作者Drs . Giovanni Millo和Gianfranco Piras .

相关问题