美文网首页
回归模型的优化:逐步回归和最佳子集

回归模型的优化:逐步回归和最佳子集

作者: 北欧森林 | 来源:发表于2021-04-27 16:55 被阅读0次
1. 导入、查看数据集
library(MASS)
head(birthwt)
image.png
2. 逐步回归法

从完全模型开始

full <- glm(low ~.,family = binomial,data = birthwt)
summary(full)
image.png
step <- stepAIC(full,trace = FALSE)
step
image.png

前向回归

forward <- stepAIC(full,direction = "forward",trace = FALSE)
forward
image.png

该语句中因为使用完全模型进行前向逐步回归,所以没有额外的变量可以加入,最终的模型即为完全模型。
前向选择也可以以空模型开始(incept only model)

后向回归

backward <- stepAIC(full,direction = "backward",trace = FALSE)
backward
image.png

参数的使用:k

BIC <- stepAIC(full,k = log(nrow(birthwt)),trace = F)
# Only k =2 gives the genuine AIC; k = kog(n) sometimes referred to as BIC or SBC
BIC
image.png

参数的使用:scope (用来指定被纳入模型中的变量范围)

scope <- stepAIC(full,scope = list(lower =~smoke+age,upper = full),trace = F)
# 如果scope为单一公式,则指定为上层模型,下层模型则为空
# 如果scope缺失,则原始模型为上层模型
scope
image.png

更加复杂的模型(加入交互项)

step2 <- stepAIC(full,~.^2+I(scale(age)^2)+I(scale(lwt)^2),trace = FALSE)
# “^”符号表示指定程度的交互。本例中,“2”表示所有可能变量组合中指定了二级交互。如:a,b,c -> a:b+b:c+a:c
# I()中所有元素均以其算术的方式进行解读。
# scale(age)函数将年龄以均值和标准差进行标准化处理。
# “~. ^2+I(scale(age)^2)+I(scale(lwt)^2)” 为scope参数,而单一公式代表为上层模型。
step2
image.png
3. 最佳子集法
#install.packages("bestglm")
library(bestglm)

args(bestglm)
# function (Xy, family = gaussian, IC = "BIC", t = "default", CVArgs = "default", 
#     qLevel = 0.99, TopModels = 5, method = "exhaustive", intercept = TRUE, 
#     weights = NULL, nvmax = "default", RequireFullEnumerationQ = FALSE, 
#     ...) 
# 注意Xy的形式,因变量y一定要放在最后
image.png

整理数据框(为使用最佳子集法):

birthwt.move <- birthwt[,-1]
birthwt.move$low <- birthwt$low

#install.packages("dummies")
library(dummies)
race <- data.frame(dummy(birthwt$race)[,c(1,2)]) # 会有warning
ftv <- data.frame(dummy(birthwt$ftv)[,c(2,3)]) # 会有warning

birthwt.dummy <- birthwt[,-c(1,4,9)]
low <- birthwt$low
birthwt.dummy <- cbind(birthwt.dummy,race,ftv,low)

head(birthwt.dummy)
image.png
bestglm(birthwt.dummy,IC="BIC",family=binomial)
image.png

如果不进行哑变量处理,则会报错:


image.png

参考资料
文中代码及部分截图来自章仲恒教授的丁香园公开课:回归模型的优化:最佳子集和逐步回归

相关文章

网友评论

      本文标题:回归模型的优化:逐步回归和最佳子集

      本文链接:https://www.haomeiwen.com/subject/pxxurltx.html