ANOVA 比較模型
我正在這個網站上尋找關於 R 中 GAM 的研討會:http: //qcbs.ca/wiki/r_workshop8
在本節的最後,
2. Multiple smooth terms
他們展示了一個示例,anova
用於比較三個不同的模型以確定最佳擬合模型。輸出是Analysis of Deviance Table Model 1: y ~ x0 + s(x1) Model 2: y ~ x0 + s(x1) + x2 Model 3: y ~ x0 + s(x1) + s(x2) Resid. Df Resid. Dev Df Deviance Pr(>Chi) 1 394.08 5231.6 2 393.10 4051.3 0.97695 1180.2 < 2.2e-16 *** 3 385.73 1839.5 7.37288 2211.8 < 2.2e-16 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
基於此,他們得出結論,模型 3 是最好的。我的問題是他們怎麼看?
我目前的理解是:
Pr(>Chi)
模型 2 和 3 的 -value 都很小,因此它們比模型 1 更好。但是,他們使用什麼其他變量來確定 3 優於 2?
輸出
anova()
是一系列似然比檢驗。輸出中的行是:
- 輸出中的第一行對應於最簡單的模型,只有一個平滑的
x1
(我忽略了這個因素x0
,因為在你的例子中沒有考慮到它)——這沒有針對任何更簡單的東西進行測試,因此最後幾列條目是空的。- 第二行是第 1 行中的模型和第 2 行中的模型之間的似然比檢驗。以
0.97695
額外的自由度為代價,剩餘偏差減少了1180.2
.x2
如果 的真實效果為 0 ,則以 <1 自由度為代價的這種偏差減少(或相反地解釋偏差增加)是極不可能的。為什麼
0.97695
自由度會增加?好吧,線性函數x2
將向模型添加 1 個 df,但更平滑的x1
將比以前受到更多的懲罰,因此使用的有效自由度略少,因此整體自由度的變化 <1。 3. 第三行與我上面描述的完全相同,但用於比較第二行中的模型和第三行中的模型:即第三行正在評估從建模x2
為線性項到建模x2
為平滑函數。同樣,如果與 相關的額外參數都等於 0 ,則模型擬合的這種改進(偏差的變化現在以更多的自由度為2211.8
代價)是不可能的。7.37288``s(x2)
總之,第 2 行表示模型 2 比模型 1 更適合,因此 的線性函數
x2
總比沒有 的效果好x1
。但第 3 行表明模型 3 比模型 2 更適合數據,因此 的平滑函數x2
優於 的線性函數x2
。這是對模型的順序分析,而不是與最簡單模型的一系列比較。然而…
他們所展示的並不是最好的方法——最近的理論表明,輸出
summary(m3)
將具有最“正確”的覆蓋屬性。此外,要在模型之間進行選擇,可能應該select = TRUE
在擬合完整模型(具有兩個平滑的模型)時使用,這將允許收縮包含具有線性x2
甚至沒有此變量影響的模型的項。它們也不適合使用 REML 或 ML 平滑度選擇,我們許多mgcv用戶會考慮默認選項(即使它不是 中的實際默認值gam()
)我會做的是:
library("mgcv") gam_data <- gamSim(eg=5) m3 <- gam(y ~ x0 + s(x1) + s(x2), data = gam_data, select = TRUE, method = "REML") summary(m3)
最後一行產生以下內容:
> summary(m3) Family: gaussian Link function: identity Formula: y ~ x0 + s(x1) + s(x2) Parametric coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 8.4097 0.2153 39.053 < 2e-16 *** x02 1.9311 0.3073 6.284 8.93e-10 *** x03 4.4241 0.3052 14.493 < 2e-16 *** x04 5.7639 0.3042 18.948 < 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(x1) 2.487 9 25.85 <2e-16 *** s(x2) 7.627 9 76.03 <2e-16 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 R-sq.(adj) = 0.769 Deviance explained = 77.7% -REML = 892.61 Scale est. = 4.5057 n = 400
我們可以看到,這兩個平滑項都與空函數顯著不同。
正在做
select = TRUE
的是在懲罰的零空間上施加額外的懲罰(這是完全平滑的樣條曲線部分)。如果你沒有這個,平滑度選擇只能懲罰平滑回到線性函數(因為進行平滑度選擇的懲罰只適用於基礎的非平滑(擺動)部分)。為了執行選擇,我們還需要能夠懲罰零空間(基礎的平滑部分)。
select = TRUE
通過使用添加到模型中所有平滑項的第二個懲罰來實現這一點(Marra and Wood,2011)。這就像一種收縮,將所有平滑項拉向 0,但它會將多餘的項更快地拉向 0,因此如果它們沒有任何解釋能力,則將它們從模型中選擇出來。在評估平滑的重要性時,我們為此付出了代價;注意Ref.df
上面的列(9 來自 的默認值k = 10
,對於具有中心約束的薄板樣條曲線意味著 9 個基函數),而不是為樣條曲線支付 2.5 和 7.7 自由度,我們支付 9 度每個人的自由。這反映了我們已經完成選擇的事實,我們不確定模型中應該包含哪些術語。***注意:***重要的是不要
anova(m1, m2, m3)
在使用select = TRUE
. 如 中所述?mgcv:::anova.gam
,所使用的近似值對於在其零空間上進行懲罰的平滑可能非常糟糕。在評論中,@BillyJean 提到使用 AIC 進行選擇。Simon Wood 及其同事 (Wood et al, 2016) 最近的工作推導出了一個 AIC,它解釋了由於我們估計了模型中的平滑度參數而導致的額外不確定性。這個 AIC 工作得相當好,但是當 IIRC 平滑接近線性函數時,有一些關於 AIC 推導的行為的討論。無論如何,AIC 會給我們:
m1 <- gam(y ~ x0 + s(x1), data = gam_data, method = "ML") m2 <- gam(y ~ x0 + s(x1) + x2, data = gam_data, method = "ML") m3 <- gam(y ~ x0 + s(x1) + s(x2), data = gam_data, method = "ML") AIC(m1, m2, m3) > AIC(m1, m2, m3) df AIC m1 7.307712 2149.046 m2 8.608444 2055.651 m3 16.589330 1756.890
請注意,我使用 ML 平滑度選擇重新調整了所有這些,因為我不確定 AIC 何時會做什麼,
select = TRUE
並且您必須小心比較具有不同固定效果的模型,這些模型沒有完全受到懲罰,使用 REML。推論又是清楚的;與其他兩個模型相比,具有平滑度的模型
x1
具有明顯更好的擬合度。x2
Marra, G. & Wood, SN 廣義加法模型的實用變量選擇。計算。統計。數據肛門。55, 2372–2387 (2011)。
Wood, SN, Pya, N. & Säfken, B. 一般平滑模型的平滑參數和模型選擇。J.上午。統計。副教授。111, 1548–1563 (2016)。