Sono interessato a modellare il pescato totale usando gam in mgcv per modellare semplici effetti casuali per le singole navi (che effettuano viaggi ripetuti nel tempo nel settore della pesca). Ho 98 soggetti, quindi ho pensato di usare gam invece di gamm per modellare gli effetti casuali. Il mio modello è:
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")
Ho codificato l'effetto casuale con bs = "re" e con = dum (ho letto che questo mi permetterebbe di prevedere con gli effetti della nave ai loro valori previsti o zero). "dum" è un vettore di 1.
Il modello funziona, ma ho problemi di previsione. Ho scelto una delle navi per le previsioni (Vessel21) e valori medi per tutto il resto tranne il predittore di interesse per le previsioni (Distanza).
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)
L'errore che sto ricevendo è:
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
Penso che questo venga chiamato perché VesselID è un fattore, ma lo sto usando per gli effetti casuali.
Sono stato in grado di prevedere con successo l'utilizzo di gam senza i semplici effetti casuali (bs = "re").
Potete fornire qualche consiglio su come prevedere questo modello senza il termine VesselID (ma includendolo comunque nell'adattamento)?
Grazie!