Tek tek gemiler için basit rastgele efektleri modellemek için mgcv'de gam kullanarak toplam balık avını modellemekle ilgileniyorum (balıkçılıkta zamanla tekrarlanan yolculuklar yapıyorum). 98 denek var, bu yüzden rastgele efektleri modellemek için gamm yerine gam kullanacağımı düşündüm. Modelim:
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")
Ben rasgele etkisi bs = "re" ve by = dum ile kodlanmış (bu bana tahmin edilen değerleri veya sıfır damar etkileri ile tahmin izin verecek okudum). "dum" 1'in bir vektörüdür.
Model çalışıyor, ama tahmin etmekte sorun yaşıyorum. Tahminler için damarlardan birini seçtim (Vessel21) ve tahminler için ilgi tahmincisi (Distance) hariç her şey için ortalama değerler.
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)
Aldığım hata:
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
Sanırım bu çağrılıyor, çünkü VesselID bir faktör, ama rastgele etkiler için düzgün kullanıyorum.
Basit rasgele efektler olmadan gam kullanmayı başarılı bir şekilde tahmin edebildim (bs = "re").
Bu modeli VesselID terimi olmadan nasıl tahmin edeceğiniz konusunda tavsiyelerde bulunabilir misiniz (ancak yine de fitting'e dahil edin)?
Teşekkür ederim!