0

在构建了相邻距离矩阵之后,我正在尝试拟合空间滞后模型 ( spdep::lagsarlm)。我有两个问题,因为每次我读到它时,模型总是适合每个空间位置只有一个观察值(一行)的数据。

我的数据集对每个空间点都有可变数量的观察(但它不是时间数据),我想知道这样做是否有效,尤其是在创建距离矩阵时,因为我收到警告:

Warning message:
In spdep::knearneigh(., k = 3, longlat = F) :
  knearneigh: identical points found

事实上,当我绘制邻居关系时,我得到了一个错误的图表(我猜算法认为重复的点是他们自己的邻居,所以它们被隔离了);当我只过滤第一个度量时,情节就可以了。

library(sp); library(spdep);set.seed(12345678)
df = data.frame('id'=rep(1:10, 3),
  'x'=rep(rnorm(10, 48, 0.1), 3),
  'y'=rep(rnorm(10, 2.3, 0.05),3),
  'response'=c(rnorm(5), rnorm(20, 1), rnorm(5)),
  'type.sensor'=rep(c(rep("a", 6), rep("b", 4)), 3))
coordinates(df)<-c("x", "y")
w <-  df %>% spdep::knearneigh(k=3, longlat=F) %>% knn2nb 
plot(w, coordinates(df))
df2 = head(df, 10) # I keep only the first measure for each location
w2 <-  df2 %>% spdep::knearneigh(k=3, longlat=F) %>% knn2nb 
plot(w2, coordinates(df2))

在此处输入图像描述

所以我对我的lagsarlm模型在第一种情况下的结果不是很有信心..

lagsarlm(response ~ type.sensor, data=df, listw=nb2listw(w), type = "lag" )
lagsarlm(response ~ type.sensor, data=df, listw=nb2listw(w2), type = "lag" )

但是,如果我尝试用更大的数据集拟合我的模型,但使用正确的邻居矩阵,它会抱怨

Error in lagsarlm(response ~ type.sensor, data = df, listw = nb2listw(w2),  : 
  Input data and weights have different dimensions

最后,我该如何处理这些数据?谢谢。

4

0 回答 0