我目前正在尝试使用可能在空间上自相关的数据在R中进行高斯线性回归。我的数据集包含地理坐标(经度值,纬度值),种类,自变量(BS和LTS)以及一些解释性变量;看起来像:
head(dataset)
coordinates SPECIES BS LTS DEPTH OCEAN
(155, 47) Cristaphyes abyssorum 8.66 28.3 5373 WPac
(150, 41) Cristaphyes abyssorum 8.66 28.3 5250 WPac
(-72, -41) Cristaphyes anomalus 8.69 NA 35 EPac
(-74, -44) Cristaphyes anomalus 8.69 NA 35 EPac
(-57, -46) Cristaphyes anomalus 8.69 NA NA WAtl
(29, 80) Cristaphyes arctous 8.32 27.0 393 EAtl
tail(dataset)
coordinates SPECIES BS LTS DEPTH OCEAN
(-80, 27) Zelinkaderes brightae NA 20.1 13.04 WAtl
(-80, 27) Zelinkaderes floridensis 7.10 12.4 140.00 WAtl
(35, 25) Zelinkaderes klepali NA 25.0 1.00 WInd
(9, 57) Zelinkaderes submersus 7.99 21.4 30.00 EAtl
(130, 36) Zelinkaderes yong NA 12.7 4.50 WAtl
(126, 33) Zelinkaderes yong NA 12.7 0.00 WAtl
数据集还包括分隔列中的纬度和经度值。
我从截断的采样点之间的地理距离矩阵中提取了基于正特征向量的空间滤波器。我想将空间过滤器视为线性回归模型中的候选解释变量。我这样做如下:首先,我创建了一个邻居列表对象(nb)。对于不规则采样,我使用了R包knearneight
的函数spdep
:
knea8 <-knearneight(coordinates(dataset), longlat=TRUE, k=8)
neib8 <-knn2nb(knea8)
然后,我使用R包nb2listw
的函数spdep
创建了一个空间权重矩阵:
nb2listw(neib8)
distgab8 <- nbdists(neib8, coordinates(dataset))
str(distgab8)
fdist<-lapply(distgab8, function(x) 1-x/max(dist(coordinates(dataset))))
listwgab8 <- nb2listw(neib8, glist = fdist8, style = "B")
然后,我建立了空间预测变量,以将其纳入高斯线性回归中。我使用R包mem
的{{1}}函数来做到这一点,如下所示:
adespatial
此外,还使用mem.gab8 <- mem(listwgab8)
函数对每个特征向量计算和测试了Moran I,如下所示:
moran.randtest
我获得了一些具有明显正空间自相关的特征向量。现在,我想将它们包括在高斯线性回归中。我尝试使用moranI8 <-moran.randtest(mem.gab8, listwgab8, 99)
的函数ME
来做到这一点,如下所示:
spdep
不幸的是,我收到此错误:
sW%*%var中的错误: 文件../MatrixOps/cholmod_sdmult.c,第90行的Cholmod错误“ X和/或Y的尺寸错误”
如何解决此错误?或者,还有另一种方式可以在高斯线性回归中执行空间特征向量选择?