R

mgcv 中的自適應 GAM 平滑

  • September 28, 2017

西蒙伍德關於 GAM 的書​​和他相關的 R 包 mgcv 在 GAM 理論和真實數據和模擬數據的模型擬合方面都非常詳細和信息豐富。

對於 1D 平滑,除了決定是否實現循環基函數和自適應基函數外,真的沒什麼好擔心的,與三次、薄板和 P 樣條平滑相比,它可以給出非常不同的預測結果,因為在在自適應情況下,多個 GAM 沿著樣條擬合到不同的區域。據我所知,循環基在時間序列建模中很常見,而當數據相對於響應變量變化很大時,應該考慮自適應平滑;但是,應“謹慎且謹慎地”使用自適應平滑。

我已經研究 GAM 有一段時間了,鑑於我的研究問題,我發現自己在談到實現哪個平滑時改變了很多想法。mgcv 包括 17 種不同的平滑度可供選擇(根據我的統計)。我考慮了三次和 P 樣條平滑。

我現在的問題是:如果最終目標是使用擬合 GAM 進行預測,那麼何時應該考慮自適應平滑而不是非自適應平滑?出於我的目的,我堅持使用默認的 GCV 平滑度標準,即使它有平滑度不足的趨勢。

應用生態 GAM 的文獻越來越多,但我還沒有遇到過實施自適應平滑的研究。

任何建議表示讚賞。

mgcv工具箱中的大多數額外平滑實際上是用於專業應用程序的——對於一般 GAM,您可以在很大程度上忽略它們,尤其是單變量平滑(您不需要隨機效應樣條曲線、球體上的樣條曲線、馬爾可夫隨機場,例如,如果您有單變量數據,則使用肥皂膜平滑劑。)

如果您可以承擔設置成本,請使用薄板回歸樣條 (TPRS)。

這些樣條在漸近 MSE 意義上是最優的,但每次觀察需要一個基函數。Simon 在mgcv中所做的是通過獲取完整的 TPRS 基礎並對其進行特徵分解來生成標準 TPRS 的低階版本。這創建了一個新的基,其中k新空間中的第一個基函數保留了原始基中的大部分信號,但基函數少得多。這就是mgcv設法獲得僅使用指定數量的基函數而不是每次觀察一個的 TPRS 的方式。這種特徵分解保留了經典 TPRS 基的大部分最優性,但對大型數據集的計算工作量很大。

如果您無法承擔 TPRS 的設置成本,請使用三次回歸樣條 (CRS)

這是生成的快速基礎,因此適用於處理大量數據的問題。然而,它是基於結的,因此在某種程度上,用戶現在需要選擇這些結的放置位置。對於大多數問題,超出默認節點位置(在數據邊界處並且在數據之間均勻間隔)幾乎沒有什麼好處,但是如果您在協變量範圍內的採樣特別不均勻,您可以選擇放置節點例如,協變量的均勻分佈的樣本分位數。

mgcv中的每個其他平滑都是特殊的,用於您想要各向同性平滑或兩個或多個協變量,或用於空間平滑,或實現收縮,或隨機效應和隨機樣條,或協變量是循環的,或擺動變化超過協變量的範圍。如果您遇到需要特殊處理的問題,您需要冒險進入平滑工具箱。

收縮

mgcv中有 TPRS 和 CRS 的收縮版本。這些實現了一個樣條曲線,其中基礎的完美平滑部分也受到平滑度懲罰。這允許平滑度選擇過程將平滑度縮小到甚至超過線性函數,基本上為零。這允許平滑度懲罰也執行特徵選擇。

Duchon 樣條、P 樣條和 B 樣條

這些樣條可用於需要分別指定基階和罰階的專業應用。Duchon 樣條概括了 TPRS。我的印像是 P 樣條被添加到mgcv以允許與其他基於懲罰似然的方法進行比較,並且因為它們是 Eilers 和馬克思在 1996 年的論文中使用的樣條,這激發了 GAM 的許多後續工作。P 樣條線也可用作其他樣條線的基礎,例如具有形狀約束的樣條線和自適應樣條線。

在mgcv中實現的 B 樣條在為樣條設置罰分和結時提供了很大的靈活性,這可以允許在觀察數據范圍之外進行一些外推。

循環樣條

如果協變量的值範圍可以被認為是在一個圓上,該範圍的端點實際上應該是相等的(一年中的月份或日期、運動角度、方面、風向),則可以將此約束施加於基礎。如果你有這樣的協變量,那麼施加這個約束是有意義的。

自適應平滑器

自適應樣條曲線不是在協變量的各個部分中擬合單獨的 GAM,而是使用加權懲罰矩陣,其中允許權重在協變量的範圍內平滑變化。例如,對於 TPRS 和 CRS 樣條,它們假定在協變量範圍內具有相同程度的平滑度。如果您的關係不是這種情況,那麼您最終可以使用比預期更多的自由度,以允許樣條曲線適應擺動和非擺動部分。平滑文獻中的一個經典例子是

library('ggplot2')
theme_set(theme_bw())
library('mgcv')
data(mcycle, package = 'MASS')
pdata <- with(mcycle,
             data.frame(times = seq(min(times), max(times), length = 500)))

ggplot(mcycle, aes(x = times, y = accel)) + geom_point()

在此處輸入圖像描述

這些數據清楚地展示了不同平滑度的時期——該系列的第一部分實際上為零,在衝擊期間很多,之後減少。

如果我們對這些數據擬合標準 GAM,

m1 <- gam(accel ~ s(times, k = 20), data = mcycle, method = 'REML')

我們得到了一個合理的擬合,但在開始和結束的範圍內有一些額外的擺動,times並且使用了 ~14 自由度的擬合

plot(m1, scheme = 1, residuals = TRUE, pch= 16)

在此處輸入圖像描述

為了適應變化的擺動,自適應樣條曲線使用加權懲罰矩陣,權重隨協變量平滑變化。在這裡,我用相同的基礎維度(k = 20)重新擬合了原始模型,但現在我們有 5 個平滑度參數(默認為m = 5)而不是原始模型的 1 個。

m2 <- gam(accel ~ s(times, k = 20, bs = 'ad'), data = mcycle, method = 'REML')

請注意,該模型使用的自由度要少得多(~8),並且擬合的平滑在末端的擺動要小得多,同時仍然能夠充分適應撞擊期間頭部加速度的巨大變化。

在此處輸入圖像描述

這裡實際發生的是樣條曲線具有平滑的基礎和懲罰的基礎(允許權重隨著協變量平滑變化)。默認情況下,這兩個都是 P 樣條,但您也可以使用 CRS 基類型(bs只能是'ps', 'cr', 'cc',之一'cs'

如此處所示,是否進行自適應的選擇實際上取決於問題。如果您有一個假設函數形式是平滑的關係,但平滑度在關係中協變量的範圍內變化,則自適應樣條曲線可能有意義。如果您的系列有快速變化的時期和較低或更平緩的變化時期,這可能表明可能需要自適應平滑。

引用自:https://stats.stackexchange.com/questions/305338

comments powered by Disqus