В настоящее время я пытаюсь выполнить гауссовую линейную регрессию в 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).В моем случае нерегулярных выборок я использовал функцию knearneight
пакета R spdep
:
knea8 <-knearneight(coordinates(dataset), longlat=TRUE, k=8)
neib8 <-knn2nb(knea8)
Затем я создал пространственную весовую матрицу с функцией nb2listw
пакета R 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")
Затем я построил пространственные предикторы, чтобы включить их в гауссовую линейную регрессию.Я сделал это с помощью функции mem
пакета R adespatial
, как показано ниже:
mem.gab8 <- mem(listwgab8)
Кроме того, Морана I были вычислены и протестированы для каждого собственного вектора с функцией moran.randtest
, как показано ниже:
moranI8 <-moran.randtest(mem.gab8, listwgab8, 99)
Я получил несколько собственных векторов со значительной положительной пространственной автокорреляцией.Теперь я хотел бы включить их в гауссовскую линейную регрессию.Я попытался сделать это с помощью функции ME
из spdep
следующим образом:
GLM1 <- ME(BS~LATITUDE, data=dataset, listw=listwgab8, family=gaussian, nsim=99, alpha=0.05)
К сожалению, я получаю эту ошибку:
Ошибка в sW% *%var: ошибка Cholmod 'X и / или Y имеют неправильные размеры' в файле ../MatrixOps/cholmod_sdmult.c, строка 90
Как мне решить эту ошибку?Или есть другой способ выполнить выбор пространственного вектора в гауссовой линейной регрессии?