[英]ordisurf vs mgcv:gam model
我想更新 R vegan 中 ordisurf 函數背后的 GAM 模型(添加隨機因子)。 為此,我首先構建了應該與 ordisurf 后面的模型相同的模型,如下所述: https ://www.fromthebottomoftheheap.net/2011/06/10/what-is-ordisurf-doing/
然而,我在 mgcv 中制作的 ordisurf 和 GAM 模型給出了完全不同的結果。 下面帶有沙丘數據的示例代碼。 誰能解釋一下? GAM 模型應該如何與 ordisurf 類似地執行? (重要的是在開始改進之前知道...... :))
ord <-metaMDS(dune, k=3)
surf <- ordisurf(ord, dune.env$A1, choices = c(2,3))
scrs <- data.frame(scores(ord, display = "sites", choices = c(1,2,3)))
dat <- with(dune, cbind(scrs, dune.env$A1))
mod_23 <- gam(dune.env$A1 ~ s(NMDS2, NMDS3, k = 10), data = dat)
plot.gam(mod_12, se=FALSE, cex = 1, pch = 1, col="blue")
此類問題的最佳答案是閱讀源代碼以了解實際執行的操作。 自從我寫了ordisurf()
博文后,我們決定調整ordisurf()
的默認設置,以反映估計 GAM 的良好做法,並對模型選擇更加嚴格。
第一個意味着我們使用method = 'REML'
用mgcv::gam()
擬合模型,以利用 REML 平滑度選擇。 GCV 平滑度選擇(當前)是mgcv::gam()
) 中的默認設置,但不推薦使用,並且mgcv的開發者 Simon Wood 暗示,某些未來版本的mgcv可能會更改默認設置 from method = 'GCV.Cp'
method = 'REML'
。 其原因是在許多應用中觀察到 GCV 平滑度選擇不夠平滑。 這發生在 GCV 函數的輪廓在全局最佳 GCV 分數附近變得非常平坦的情況下。 數據中的細微差異可能會導致選擇的平滑度參數非常不同,其中一些會導致明顯的平滑度不足。 REML 和 ML 平滑度選擇受此問題的影響較小; REML 分數的輪廓往往更彎曲,並且具有明顯的最小值。
第二點,以及我們現在使用select = TRUE
,來自觀察 GAM 中的平滑度懲罰,即選擇估計表面的擺動程度,僅影響擺動基函數。 基擴展包含幾個基函數,從懲罰的角度來看,它們是完全平滑的; 有兩個線性二維基函數表示兩個線性平面,根據定義,它們具有零曲率(零二階導數),因此對擺動懲罰根本沒有貢獻(無論如何都是默認值,即使用估計樣條曲率的懲罰)。 最終結果是平滑度懲罰可以一直懲罰回到估計的平面表面,但不能再進一步了。 這在實踐中意味着用戶可以將ordisurf()
模型的結果解釋為線性表面,即使該線性表面在統計上不顯着(並且許多用戶只看圖而不是底層 GAM,它會告訴他們的飛機是否重要)。 select = TRUE
所做的是為平滑添加第二個懲罰,這只會影響完美平滑的基函數。 這具有 GAM 能夠懲罰/縮小模型整個我們正在估計的表面的效果。 換句話說,它可以將表面縮小為平坦、水平的零效應表面 === 排序配置和響應變量之間的零關系。
總之,我覺得這些選項最能防止用戶誤報。
如果您將gam()
調用更改為:
mod_23 <- gam(dune.env$A1 ~ s(NMDS2, NMDS3, k = 10), data = dat,
method = 'REML', select = TRUE)
那么你應該得到與ordisurf()
產生的輸出相同的輸出:
r$> mod_23
Family: gaussian
Link function: identity
Formula:
dune.env$A1 ~ s(NMDS2, NMDS3, k = 10)
Estimated degrees of freedom:
0.285 total = 1.28
REML score: 43.25057
r$> surf
Family: gaussian
Link function: identity
Formula:
y ~ s(x1, x2, k = 10, bs = "tp", fx = FALSE)
Estimated degrees of freedom:
0.285 total = 1.28
REML score: 43.25057
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.