Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R lag.listw中出错,对象长度不同_R_Matrix_Sparse Matrix_Spatial - Fatal编程技术网

R lag.listw中出错,对象长度不同

R lag.listw中出错,对象长度不同,r,matrix,sparse-matrix,spatial,R,Matrix,Sparse Matrix,Spatial,我正在使用R软件包“splm”估算空间面板数据的固定效应模型。该小组由77个县和31年的观察组成。因变量是一种作物的县产量。当我回归收益率随时间的趋势和个体固定效应时,我得到了对象长度不同的误差,即使我有完全平衡的面板,并且使用相同的一组县来创建空间权重矩阵 下面我生成了一个类似于我的数据的“面板数据集”,还生成了带有随机数的县的经纬度数据。即使使用这种随机数据,也会发生同样的错误 ##generated panel data for yield set.seed(97531) yield.no

我正在使用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")
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")

这个问题已经解决了。“splm”包的作者指出,面板ID的设置方式存在错误。空间单位必须较慢(1,1,1,…;2,2,2,…;77,77,77,…),并且时间id必须较快(1,2,3,…,31;…;1,2,3…31)。在相应地设置数据之后,我可以得到结果


衷心感谢“苏丹人民解放运动”的作者乔瓦尼·米洛博士和詹弗兰科·皮拉斯博士。

这个问题已经解决。“splm”包的作者指出,面板ID的设置方式存在错误。空间单位必须较慢(1,1,1,…;2,2,2,…;77,77,77,…),并且时间id必须较快(1,2,3,…,31;…;1,2,3…31)。在相应地设置数据之后,我可以得到结果

衷心感谢“苏丹人民解放运动”的作者乔瓦尼·米洛博士和詹弗兰科·皮拉斯博士

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