ฉันสนใจในการสร้างแบบจำลองการจับปลาทั้งหมดโดยใช้ gam ใน mgcv เพื่อสร้างเอฟเฟกต์แบบสุ่มง่าย ๆ สำหรับเรือแต่ละลำ ฉันมีวิชา 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" และโดย = 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 เป็นปัจจัย แต่ฉันใช้มันอย่างราบรื่นสำหรับเอฟเฟกต์แบบสุ่ม
ฉันสามารถทำนายการใช้เกมได้อย่างประสบความสำเร็จโดยไม่มีเอฟเฟกต์แบบง่าย (bs = "re")
คุณสามารถให้คำแนะนำเกี่ยวกับวิธีการทำนายแบบจำลองนี้โดยไม่ใช้คำว่า VesselID (แต่ยังรวมอยู่ในคำศัพท์ได้)
ขอบคุณ!