我正在使用 R 包“mgcv”创建用于预测海鸟分布的 GAM。我在解释某些模型的 gam.check() 结果时遇到一些问题(每个物种一个模型)。
我正在使用负二项式族和对数链接,以及样本区域对数的偏移量。我有 13 个可能的预测变量。我的回复数据是来自调查的离散计数数据,它是高度零膨胀的。
在每个候选中,我检查并发性(在整个模型中使用 0.8 作为阈值),并且我的模型项使用summary() 是显着的(否则它们将被丢弃),并且模型每次都会收敛。
尽管如此,我仍然从 gam.check() 中获得了非常重要的结果。尽管 edf 远低于 k,但还是如此。
我尝试过多次增加 k,但它对结果没有影响,对 edf 也没有影响,我也尝试过使用 tweedie 和零膨胀泊松 (zip) 系列,但这也没有太大影响。不过,我要说的是,我的 QQ 图看起来不太好。
QQ_plot https://i.stack.imgur.com/4fsVO.png
有谁知道为什么会发生这种情况?我认为该模型不稳定,不应使用,但我不知道如何修复它。几乎所有物种都会发生这种情况,因此它并不特定于某个文件。
这是我的模型
gam_nb <- gam(COUNT_SUM ~ s(X_MEAN_2, k=25) + s(Currents_Northward, k=25),
data=my_data,family = "nb", select=TRUE, offset=LOG_AREA_SUM, method = "REML")
这是诊断结果
Method: REML Optimizer: outer newton
full convergence after 7 iterations.
Gradient range [-0.002334867,0.0005403022]
(score 1783.03 & scale 1).
Hessian positive definite, eigenvalue range [1.846342e-06,121.4505].
Model rank = 49 / 49
Basis dimension (k) checking results. Low p-value (k-index<1) may
indicate that k is too low, especially if edf is close to k'.
k' edf k-index p-value
s(X_MEAN_2) 24.0 11.4 0.66 <2e-16 ***
s(Currents_Northward) 24.0 11.8 0.69 0.025 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
现在看看当我增加 k 时会发生什么
gam_nb <- gam(COUNT_SUM ~ s(X_MEAN_2, k=100) + s(Currents_Northward, k=100),
data=my_data,family = "nb", select=TRUE, offset=LOG_AREA_SUM, method = "REML")
Method: REML Optimizer: outer newton
full convergence after 7 iterations.
Gradient range [-6.715822e-05,1.121576e-05]
(score 1783.004 & scale 1).
Hessian positive definite, eigenvalue range [7.32924e-06,120.848].
Model rank = 199 / 199
Basis dimension (k) checking results. Low p-value (k-index<1) may
indicate that k is too low, especially if edf is close to k'.
k' edf k-index p-value
s(X_MEAN_2) 99.0 12.0 0.67 <2e-16 ***
s(Currents_Northward) 99.0 13.1 0.68 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1