我发表了一篇新文章,因为我对在 gam() 函数(mgcv 包)中使用偏移量感到非常困惑。我实际上正在使用航空调查(捕食者的观察)和二级生产模型输出来预测海洋顶级捕食者的分布。我的数据以 0.25° 分辨率网格形成,覆盖大面积区域,例如西南印度洋。已经在该网格上的几个部门进行了调查,也就是说,所有网格都没有被抽样。我的二次生产协变量来自 Lehodey 等人开发的 SEAPODYM 模型。我有一组大约 12 个协变量,并希望找到它们的最佳组合来预测捕食者的分布。
也就是说,因为我的目标是预测捕食者的分布,所以在排除了相关协变量的所有组合之后,我根据 GCV 分数进行了模型选择。我正在对观察进行建模,因此我使用了准泊松分布(过度分散的数据),每个像素的采样面积作为偏移量。我使用如下编写的模型进行了模型选择:
mod1<-gam(Y ~ offset(log(sampled area))+ covariate1 + covariate2 + covariate3 + covariate4, family=quasipoisson)
在那之前,一切都很顺利,但后来我开始在我的整个网格中预测捕食者的观察结果。使用之前的模型执行此操作会导致仅预测过采样像素。根据同事的建议,我预测使用不同的写作,认为它不会改变结果中的任何内容:
mod2<-gam(Y ~ covariate1 + covariate2 + covariate3 + covariate4, offset(log(sampled area)), family=quasipoisson)
确实,它允许我预测整个网格的观察结果,但我完全混淆了,因为我查看了模型的摘要。结果实际上完全不同,GCV 分数和已解释的偏差具有更高的值:
summary(mod1)
Family: quasipoisson
Link function: log
Formula:
species ~ offset(log(sampled area) + s(covariate1,k=4) + s(covariate2,k=4)
+ s(covariate3,k=4) + s(covariate4,k=4)
Parametric coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.12268 0.08025 -1.529 0.127
Approximate significance of smooth terms:
edf Ref.df F p-value
s(bathy_mnk_B) 2.722 2.951 15.89 4.83e-10 ***
s(meso_mnk_B) 2.995 3.000 17.52 3.52e-11 ***
s(bathy_mnk_P) 2.989 3.000 20.37 6.21e-13 ***
s(mmeso_mnk_P) 2.536 2.855 12.71 6.49e-08 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
R-sq.(adj) = 0.0838 Deviance explained = 16.4%
GCV score = 22.371 Scale est. = 22.188 n = 1491
summary(mod2)
Family: quasipoisson
Link function: log
Formula:
species ~ s(covariate1,k=4) + s(covariate2,k=4) + s(covariate3,k=4) +
s(covariate4,k=4)
Parametric coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.30093 0.07884 16.5 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Approximate significance of smooth terms:
edf Ref.df F p-value
s(bathy_mnk_B) 2.802 2.974 17.37 5.18e-11 ***
s(meso_mnk_B) 3.000 3.000 16.35 1.86e-10 ***
s(bathy_mnk_P) 2.988 3.000 27.75 < 2e-16 ***
s(mmeso_mnk_P) 2.460 2.806 12.47 1.12e-07 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
R-sq.(adj) = 0.0938 Deviance explained = 17.5%
GCV score = 31.809 Scale est. = 31.547 n = 1491
鉴于我的模型选择是基于 GCV 分数的,它如此变化的事实让我感到困惑,我想知道我的模型选择是否正确。我用第二种模型(Y~X1+X2,offset)重新进行了模型选择,结果选择的模型并不总是与我的第一个程序相同。
看到这里,我想知道我应该根据模型的哪个写作来进行建模和预测?
有谁可以解释一下为什么这两个模型给出了如此不同的结果?
提前感谢您的帮助和建议,
夏洛特