У меня есть большой набор данных о количестве животных, собранных по сетке из 20 точек за несколько лет.Я хочу запустить негинную модель данных, учитывающую пространственную автокорреляцию, которая (насколько я знаю) между точками.
Я построил модель, следуя инструкциям пространственной автокорреляции с glmmTMB :
данные игрушки:
df <- structure(list(Stratum = structure(c(2L, 1L, 3L, 3L, 2L, 2L,
1L, 3L, 2L, 3L, 1L, 1L, 2L, 2L, 2L, 1L, 2L, 1L, 1L, 1L), .Label = c("A",
"C", "G"), class = "factor"), SubstratumNum = structure(c(3L,
3L, 3L, 2L, 2L, 1L, 1L, 1L, 2L, 2L, 1L, 2L, 2L, 3L, 3L, 1L, 3L,
2L, 1L, 3L), .Label = c("1", "2", "3"), class = "factor"), Round_IDGlobal = structure(c(33L,
9L, 1L, 14L, 1L, 15L, 12L, 5L, 20L, 8L, 4L, 31L, 23L, 10L, 2L,
3L, 19L, 16L, 2L, 22L), .Label = c("494", "506", "746", "821",
"822", "829", "830", "831", "834", "841", "842", "858", "862",
"864", "866", "868", "869", "881", "886", "887", "888", "892",
"894", "905", "920", "929", "939", "950", "951", "952", "954",
"961", "962", "963"), class = "factor"), NTotal = c(0, 0, 0,
22, 0, 0, 0, 44, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), Easting = c(421404.301562637,
418803.885030836, 418042.117225571, 417187.715740421, 419311.45516526,
417264.924140131, 416268.565309357, 416408.875490186, 419311.45516526,
417187.715740421, 416268.565309357, 417488.310843067, 419311.45516526,
421404.301562637, 421404.301562637, 416268.565309357, 421404.301562637,
417488.310843067, 416268.565309357, 418803.885030836), Northing = c(7000230.98045177,
7004401.10398065, 6992987.57831617, 6994272.80680691, 6999227.50164136,
6998264.92240288, 7002164.31946824, 6995705.21394914, 6999227.50164136,
6994272.80680691, 7002164.31946824, 7003320.22469426, 6999227.50164136,
7000230.98045177, 7000230.98045177, 7002164.31946824, 7000230.98045177,
7003320.22469426, 7002164.31946824, 7004401.10398065)), row.names = c(NA,
-20L), class = c("tbl_df", "tbl", "data.frame"))
расчет переменной, которая будет использоваться для пространственной автокорреляции:
library(glmmTMB)
df$pos <- numFactor(df$Easting, df$Northing)
модель:
mod1 <- glmmTMB(NTotal ~ YearF +
# sampling variables
Stratum + SubstratumNum +
# random variable
(1 | Round_IDGlobal) +
# autocorrelation
exp(pos + 0 | Round_IDGlobal),
family = nbinom2,
data= df)
Thisэто упрощенная версия моей полной модели.Всякий раз, когда я запускаю полную или любую упрощенную модель в своем полном наборе данных, я всегда получаю предупреждение non-positive-definite Hessian matrix
, если только я не закомментирую пространственную структуру exp()
.Виньетка говорит мне, что, скорее всего, это проблема сложности модели, но наверняка набор данных из 24 000 точек предоставит достаточно информации для этого.Это заставляет меня думать, что я делаю что-то не так.Из набора данных игрушек и структуры модели - есть мысли?