개별 선박에 대한 간단한 무작위 효과를 모델링하기 위해 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으로 임의의 효과를 코딩했다. (이는 내가 예상 한 값 또는 0에서 혈관 효과로 예측할 수 있다는 것을 읽었다). "dum"은 1의 벡터입니다.
모델이 실행되지만 예측하는 데 문제가 있습니다. 나는 예측 (Vessel21)에 대한 혈관 중 하나와 예측에 대한 관심있는 예측 변수 (Distance)를 제외한 다른 모든 것에 대한 평균 값을 선택했습니다.
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")없이 gam을 사용하여 성공적으로 예측할 수있었습니다.
VesselID 항없이이 모델을 예측하는 방법에 대한 조언을 제공 할 수 있습니까 (하지만 여전히 피팅에 포함)?
감사합니다!