我有兴趣使用 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 术语的情况下预测该模型提供任何建议(但仍将其包含在拟合中)?
谢谢!