原文鏈接:http://tecdat.cn/?p=23509
原文出處:拓端數據部落公眾號
我們在研究工作中使用廣義加性模型(GAMs)。mgcv軟件包是一套優秀的軟件,可以為非常大的數據集指定、擬合和可視化GAMs。
這篇文章介紹一下廣義加性模型(GAMs)目前可以實現的功能。
我們需要加載mgcv
library('mgcv')
受歡迎的例子數據集
dat中的數據在GAM相關的研究中得到了很好的研究,包含了一些協變量--標記為x0到x3--這些協變量在不同程度上與因變量有非線性關系。
我們想通過使用樣條來逼近協變量和因變量之間的真實關系來嘗試擬合這些關系。為了擬合一個加性模型,我們使用
gam(y ~ s(x0) + s(x1) + s(x2) + s(x3), dat, "REML")
mgcv提供了一個summary()方法,用來提取關於擬合GAM的信息。
check()函數,用於檢查模型中的每個光滑函數是否使用了足夠數量的基函數。你可能沒有直接使用check()——會輸出其他診斷結果,也會產生四個模型診斷圖。
繪制光滑函數圖
為了將估計的GAMs可視化,mgcv提供了plot.gam()方法和vis.gam()函數,從對象中產生類似ggplot2的圖。為了使GAM模型中的四個估計光滑函數可視化,我們將使用
plot(mod)
結果是繪制mod GAM中每一個光滑函數。
使用plot函數在繪圖設備上繪制多個面板,並將各個繪圖排成一行。
提取光滑函數數據
用於處理mod中表示的基礎光滑函數,如果你想提取用於構建該圖的大部分數據,你可以使用smooth()函數。
smooth(mod, "x1")
診斷圖
由check()產生的診斷圖
check(mod)
結果是一個包含四個診斷圖的數組,包括模型殘差的Q-Q圖(左上)和直方圖(左下),殘差與線性預測器的圖(右上),以及觀察值與擬合值的圖。
這四張圖中的每一張都是通過用戶可訪問的函數生成的,函數實現了一個特定的圖。例如,qqplot(mod)產生上圖左上方的Q-Q圖。
qqplot(mod)
qqplot(mod)的結果是一個殘差的Q-Q圖,其中的參考量值是通過模擬擬合模型的數據而得到。
還可以處理目前可用的許多更專業的
光滑函數。例如,二維
光滑函數。
-
-
plot(mod)
二維光滑函數的默認繪制方式是使用plot()。
和因子光滑函數交互項,相當於光滑曲線的隨機斜率和截距,被畫在一個面板上,顏色被用來區分不同的隨機光滑函數。
-
-
## 模擬數據
-
f0 <- function(x) 2 * sin(pi * x)
-
f1 <- function(x, a=2, b=-1) exp(a * x)+b
-
f2 <- function(x) 0.2 * x^11 * (10 * (1 - x))^6 + 10 * (10 * x)^3 * (1 - x)^10
-
f <- f0(x0) + f1(x1, a[fac], b[fac]) + f2(x2)
-
fac <- factor(fac)
-
y <- f + rnorm(n) * 2
-
-
-
plot(mod)
含有因子-光滑函數交互項的更復雜的GAM的結果,bs = 'fs'。
還能做什么?
可以處理mgcv可以估計的大多數光滑函數,包括帶有因子和連續副變量的按變量光滑函數、隨機效應光滑函數(bs = 're')、二維張量積光滑函數,以及帶有參數項的模型。
參考文獻
Augustin, N. H., Sauleau, E.-A., and Wood, S. N. (2012). On quantile quantile plots for generalized linear models. Computational statistics & data analysis 56, 2404–2409. doi:10.1016/j.csda.2012.01.026.
最受歡迎的見解
3.matlab中的偏最小二乘回歸(PLSR)和主成分回歸(PCR)
6.r語言中對LASSO回歸,Ridge嶺回歸和Elastic Net模型實現