Функция Predict в пакете spaMM, приводящая к ошибке при добавлении третьего случайного эффекта в линейную смешанную модель - PullRequest
0 голосов
/ 07 июня 2019

Я пытаюсь запустить линейную смешанную модель, используя пакет spaMM и функцию fitme () в R, однако, когда я добавляю третий случайный эффект, функция предсказания () не может быть завершена.

Я бы хотел, чтобы модель meanfit1 имела один фиксированный эффект:

elev

и три случайных эффекта:

Matern(1|long+lat)
1|river_ID
1|source_ID

однако функция предсказания, по-видимому, не допускает трех случайных эффектов.

Data <- data.frame(source_ID = c("A","B","C","D","E"),
               lat = c(51.63,51.69,51.72,51.69,51.72),
               long = c(1.56,1.51,1.37,1.43,1.60),
               river_ID = c("b","a","b","b","t"),
               elev = c(63,54,32,45,48),
               mean = c(28,28,31,31,27),
               n = rep(5,5),
               var = c(0.1,0.4,0.5,1.5,0.8))

dispfit1 <- fitme(
  formula = var ~ 1 + Matern(1|long + lat) + (1|river_ID) + 
  (1|source_ID),
  family = stats::Gamma(log), data = Data, fixed = list(phi = 2),
  prior.weights = n - 1, control.dist = list(dist.method = 
  "Earth"),
  method = "REML")

Data$disp <- spaMM::predict.HLfit(dispfit1, newdata = Data, variances = 
                              list(respVar = T))

meanfit1 <- fitme(
  formula = mean ~ 1 + elev + Matern(1|long + lat) + (1|river_ID) + 
  (1|source_ID),
  data = Data, resid.model = list(formula = ~0 + offset(disp), family = 
  stats::Gamma(identity)),
  prior.weights = n, control.dist = list(dist.method = "Earth"),
  method = "REML")

Код работает хорошо, если я удаляю (1 | source_ID) или (1 | river_ID), однако выдает следующее сообщение об ошибке, когда включены все три случайных эффекта: 'Ошибка в' + '(c (0, 0, 0, 0, 0, 0, 0,00508460138716231, 0, 0, 0, 0, 0, 0,: оператору нужен один или два аргумента '

Это проблема кодирования или проблема моделирования?

Большое спасибо за вашу помощь

1 Ответ

0 голосов
/ 24 июня 2019

К вопросу в ОП,

Это проблема кодирования или проблема моделирования?

ответ - ошибка в исходном коде spaMM; код плаката был верным. spaMM должен был быть в состоянии оценить отклонения прогноза для моделей, включающих более двух случайных эффектов. Эта ошибка была исправлена ​​в версии 3.0.0 этого пакета .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...