Tôi quan tâm đến việc mô hình hóa tổng lượng cá đánh bắt bằng cách sử dụng gam trong mgcv để mô hình hóa các hiệu ứng ngẫu nhiên đơn giản cho từng tàu (thực hiện các chuyến đi lặp đi lặp lại theo thời gian trong nghề cá). Tôi có 98 đối tượng, vì vậy tôi nghĩ rằng tôi sẽ sử dụng gam thay vì gamm để mô hình hóa các hiệu ứng ngẫu nhiên. Mô hình của tôi là:
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")
Tôi đã mã hóa hiệu ứng ngẫu nhiên với bs = "re" và by = dum (Tôi đọc rằng điều này sẽ cho phép tôi dự đoán với các hiệu ứng tàu ở các giá trị dự đoán của chúng hoặc bằng 0). "dum" là một vectơ của 1.
Mô hình chạy, nhưng tôi có vấn đề dự đoán. Tôi đã chọn một trong các tàu cho các dự đoán (V Tàu21) và các giá trị trung bình cho mọi thứ khác ngoại trừ dự đoán quan tâm cho các dự đoán (Khoảng cách).
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ỗi mà tôi nhận được là:
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
Tôi nghĩ rằng điều này đang được gọi bởi vì VesselID là một yếu tố, nhưng tôi đang sử dụng nó một cách trơn tru cho các hiệu ứng ngẫu nhiên.
Tôi đã có thể dự đoán thành công khi sử dụng gam mà không cần các hiệu ứng ngẫu nhiên đơn giản (bs = "re").
Bạn có thể cung cấp bất kỳ lời khuyên nào về cách dự đoán mô hình này mà không có thuật ngữ VesselID (nhưng vẫn bao gồm nó phù hợp) không?
Cảm ơn bạn!