私は、mgcvのgamを使用して総漁獲量をモデル化し、個々の船(時間の経過とともに繰り返し漁業を行う)の単純なランダム効果をモデル化することに興味があります。私は98科目を持っているので、ランダム効果をモデル化するためにgammではなくgamを使用すると思いました。私のモデルは:
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")
私はbs = "re"とby = dumでランダム効果をコード化しました(これにより、予測値またはゼロでの血管効果を予測できるようになります)。"dum"は1のベクトルです。
モデルは実行されますが、予測に問題があります。予測のために血管の1つ(Vessel21)を選択し、予測に関心のある予測子(距離)以外のすべての平均値を選択しました。
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)
私が得ているエラーは:
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
これはVesselIDが要因であるため呼び出されていると思いますが、ランダムな効果のためにスムーズに使用しています。
単純なランダム効果なしでgamの使用を正常に予測できました(bs = "re")。
VesselID項なしでこのモデルを予測する方法についてアドバイスを提供できますか(ただし、フィッティングに含めます)?
ありがとうございました!