Estoy interesado en modelar la captura total de peces usando gam en mgcv para modelar efectos aleatorios simples para buques individuales (que realizan viajes repetidos a lo largo del tiempo en la pesquería). Tengo 98 sujetos, así que pensé que usaría gam en lugar de gamm para modelar los efectos aleatorios. Mi modelo es:
modelGOM <- gam(TotalFish ~ factor(SetYear) + factor(SetMonth) + factor(TimePeriod) +
s(SST) + s(VesselID, bs = "re", by = dum) + s(Distance, by = TimePeriod) +
offset(log(HooksSet)), data = GOM, family = tw(), method = "REML")
He codificado el efecto aleatorio con bs = "re" y by = dum (leí que esto me permitiría predecir con los efectos del vaso a sus valores pronosticados o cero). "dum" es un vector de 1.
El modelo funciona, pero tengo problemas para predecir. Elegí uno de los recipientes para las predicciones (Vessel21) y los valores promedio para todo lo demás, excepto el predictor de interés para las predicciones (Distancia).
data.frame("Distance"=seq(min(GOM$Distance),max(GOM$Distance),length = 100),
"SetYear" = '2006',
"SetMonth" = '6',
"TimePeriod" = 'A',
"SST" = mean(GOM$SST),
"VesselID" = 'Vessel21',
"dum" = '0', #to predict without vessel effect
"HooksSet" = mean(GOM$HooksSet))
pred_GOM_A_Swordfish <- predict(modelGOM, grid.bin.GOM_A_Swordfish, type = "response",
se = T)
El error que obtengo es:
Error in Predict.matrix.tprs.smooth(object, dk$data) :
NA/NaN/Inf in foreign function call (arg 1)
In addition: Warning message:
In Ops.factor(xx, object$shift[i]) : - not meaningful for factors
Creo que esto se llama porque VesselID es un factor, pero lo estoy usando sin problemas para los efectos aleatorios.
He podido predecir con éxito el uso de gam sin los simples efectos aleatorios (bs = "re").
¿Puede dar algún consejo sobre cómo predecir este modelo sin el término VesselID (pero aún así incluirlo en la adaptación)?
¡Gracias!
fuente
exclude
? Intenté usarloc()
pero no parece funcionar.exclude = c("s(x0)", "s(x2)")
digamos del siguiente modelo ab<-gam(y~s(x0)+s(I(x1^2))+s(x2)+offset(x3),data=dat)
partir de?predict.gam
ejemplos. Debe especificar las cadenas en el vector al que se pasóexclude
con la notación utilizadasummary()
al mostrar la información sobre cada término uniforme