[分享] MuMIn 套件分享:複迴歸變數挑選

作者: andrew43 (討厭有好心推文後刪文者)   2016-11-25 06:42:09
1. 套件名稱:
MuMIn
2. 套件主要用途:
"Model selection and model averaging based on
information criteria (AICc and alike)"
此套件最主要的工作:
線性模型的變數選擇提供很暴力或彈性的解決方案。
預設的選擇指標是 AICc 值,但可以自行選用其它常見的指標。
3. 套件主要函數列表:
a. dredge(full_model)
對 full_model 以特定的準則進行可能的 reduced model 之評量。
例如,full_model 有 3 個自變數,
則可以一次比較所有 7 個可能模型的 AICc 值,
幫助你選出最佳模型,而不是按傳統的 step() 來進行。
b. get.models(dredge 的回傳物件)
可以按特定的規則提取出經 dredge() 的較優良的模型。
會回傳一個 list,之內每項為 model 同樣物件。
c. importance(dredge 的回傳物件)
取得各自變數「綜合各模型」的重要性。
d. model.avg(dredge 或 get.models 的回傳物件)
計算數個模型根據優良程度「加權平均」之係數,
分成 full average 和 conditional average 二類,
在 help(model.avg) 中有更多說明其不同之處。
在你無法選出一個最佳模型的時候會有作用。
4. 分享內容:
library(MuMIn)
# 建立一個一般線性模型 y ~ x1 + x2 + x3 + x4 + x5
# x1 到 x3 對 y 的重要性越來越低,x4 和 x5 是冗餘的
N <- 100
set.seed(123)
dt <- data.frame(
x1 = runif(N),
x2 = runif(N),
x3 = runif(N),
x4 = runif(N),
x5 = runif(N)
)
dt$y <-
dt$x1 * rnorm(N, mean = 5, sd = 0.1) +
dt$x2 * rnorm(N, mean = 20, sd = 5) +
dt$x3 * rnorm(N, mean = 30, sd = 20) +
rnorm(N)
full.model <- lm(
y ~ x1 + x2 + x3 + x4 + x5,
data = dt,
na.action = "na.fail" # 在有缺失值時可避免不全相同資料
)
dd1 <- dredge(full.model)
dd1 # 暴力解所有可能模型
dd2 <- subset(dd1, delta < 4)
dd2 # 只看 AICc 與最小 AICc 模型的差 4 之內的模型
get.models(dd1, delta < 4) # 同上,但回傳的是 lm 物件
importance(dd2) # 在 dd2 各模型中自變數「累積」的重要性
model.avg(dd2) # 取得 dd2 之下的「平均模型」,
# 另見手冊中對「average」與「subset」之說明
5. 備註
我並不支持變數選擇僅靠單一的指標進行,
所以對我來說這只是個參考工具。
作者: cywhale (cywhale)   2016-11-25 16:22:00
推~ 感謝分享~~

Links booklink

Contact Us: admin [ a t ] ucptt.com