Я построил модель GAMLSS для исследования популяционных факторов для видов рыб на основе существующего набора данных, но возникла проблема при попытке предсказать значения отклика для нового набора данных.
Чтобы создать фиктивный набор данных:
Site <- c("Angle Crossing","Angle Crossing Pool","Casuarina Sands","Kambah Pool","Kissops Flat","Lawler Rd","Point Hut Crossing","Retallacks Hole","Scottsdale","Tharwa Sandwash")
Year <- round((rnorm(n=100, mean=2013, sd=2.530846)), digits=0)
LogTurbidity <- (rnorm(n=100, mean=2.026, sd=1.417185))
Datej <- rnorm(n=100, mean=105.0, sd=41.66927)
Catch <- round((rnorm(n=100, mean=1.596, sd=1.895757)), digits=0)
Catch <- ifelse(Catch < 0, 0, Catch)
mc.dummy <- data.frame(Site=Site, Catch=Catch, Year=Year,
Turbidity=LogTurbidity, Datej=Datej)
Используя модель GAMLSS:
ZIPGAMM.dummy <- gamlss(Catch ~ cs(Datej, k=5) + cs(Year, k=5) + cs(Turbidity, k=5) + random(Site), family= ZIP(), data=mc.dummy, n.cyc=100)
Когда я запустил функцию predict()
в существующем наборе данных, я былвозможность получить все параметры модели без каких-либо проблем.ОДНАКО, когда я пытался получить прогнозируемые значения ответа, используя новый набор данных (MC.df.newdata <- data.frame(Datej=c(1:100), Year=2010, Turbidity=1.959954, Site="Retallacks Hole")
), я получил следующее сообщение об ошибке:
MC.predicted <- predict(ZIPGAMM.dummy, newdata = MC.df.newdata, what="mu", type="response")
new prediction
Error in pred.s %*% rep(1, n.smooths) :
requires numeric/complex matrix/vector arguments
In addition: Warning message:
contrasts dropped from factor random(Site)
Я использовал все тот же код выше без +random(Site)
, и все работалохорошо, поэтому мой вопрос действительно заключается в том, как заставить функцию predict()
работать со случайным эффектом в модели?