Je m'intéresse à la modélisation des prises totales de poisson en utilisant gam en mgcv pour modéliser des effets aléatoires simples pour des navires individuels (qui effectuent des déplacements répétés au fil du temps dans la pêche). J'ai 98 sujets, j'ai donc pensé utiliser gam au lieu de gamm pour modéliser les effets aléatoires. Mon modèle est:
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")
J'ai codé l'effet aléatoire avec bs = "re" et by = dum (j'ai lu que cela me permettrait de prédire avec les effets du vaisseau à leurs valeurs prédites ou zéro). "dum" est un vecteur de 1.
Le modèle fonctionne, mais j'ai du mal à prévoir. J'ai choisi l'un des navires pour les prévisions (Vessel21) et les valeurs moyennes pour tout le reste, sauf le prédicteur d'intérêt pour les prévisions (Distance).
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'erreur que je reçois est:
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
Je pense que cela est appelé parce que VesselID est un facteur, mais je l'utilise de manière fluide pour les effets aléatoires.
J'ai pu prédire avec succès l'utilisation de gam sans les effets aléatoires simples (bs = "re").
Pouvez-vous fournir des conseils sur la façon de prédire ce modèle sans le terme VesselID (mais toujours l'inclure dans l'ajustement)?
Je vous remercie!
exclude
? J'ai essayé d'utiliserc()
mais cela ne semble pas fonctionner.exclude = c("s(x0)", "s(x2)")
dites du modèle suivant àb<-gam(y~s(x0)+s(I(x1^2))+s(x2)+offset(x3),data=dat)
partir d'?predict.gam
exemples. Vous devez spécifier les chaînes dans le vecteur transmisexclude
avec la notation utilisée parsummary()
lors de l'affichage des informations sur chaque terme lisse