Я пытаюсь запустить линейную смешанную модель, используя пакет 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,:
оператору нужен один или два аргумента '
Это проблема кодирования или проблема моделирования?
Большое спасибо за вашу помощь