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. 备注
我并不支持变量选择仅靠单一的指标进行,
所以对我来说这只是个参考工具。