我对使用mgcv中的gam来模拟单个船的简单随机效应(在渔业中随时间反复旅行)建模总的鱼获量感兴趣。我有98个科目,所以我想我会使用gam而不是gamm来模拟随机效果。我的模型是:
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的向量。
该模型可以运行,但是我在预测时遇到问题。我选择了其中一个用于预测的容器(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术语的情况下预测此模型的任何建议(但仍将其包括在内)吗?
谢谢!