【问题标题】:Error in lag.listw, object lengths differlag.listw 中的错误,对象长度不同
【发布时间】:2017-11-15 21:02:30
【问题描述】:

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

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

##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")

错误报告:

Error in lag.listw(listw, u, zero.policy = zero.policy) : object
lengths differ

来自:traceback() 的输出如下:

8: stop("object lengths differ")

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")

【问题讨论】:

    标签: r matrix sparse-matrix spatial


    【解决方案1】:

    此问题已解决。包“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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-14
      • 1970-01-01
      • 2020-07-03
      • 2019-05-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多