如何在R中执行空间特征向量选择?

时间:2018-10-08 15:09:45

标签: r regression spatial correlation spdep

我目前正在尝试使用可能在空间上自相关的数据在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的尺寸错误”

如何解决此错误?或者,还有另一种方式可以在高斯线性回归中执行空间特征向量选择?

0 个答案:

没有答案