如何在 r 中使用 regsubsets() 进行模型选择
您可以使用 R 中的leafs包中的regsubsets()函数来查找生成最佳回归模型的预测变量子集。
下面的例子展示了如何在实际中使用这个功能。
示例:在 R 中使用 regsubsets() 进行模型选择
在此示例中,我们将使用 R 中内置的mtcars数据集,其中包含 32 辆不同汽车的 11 种不同属性的测量结果。
#view first six rows of mtcars dataset
head(mtcars)
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3,460 20.22 1 0 3 1
假设我们想要使用hp作为响应变量和以下潜在预测变量来拟合回归模型:
- 英里/加仑
- 重量
- 拉屎
- 快秒
我们可以使用Leaps包中的regsubsets()函数来执行详尽的搜索,以找到最佳的回归模型:
library (leaps)
#find best regression model
bestSubsets <- regsubsets(hp ~ mpg + wt + drat + qsec, data=mtcars)
#view results
summary(bestSubsets)
Subset selection object
Call: regsubsets.formula(hp ~ mpg + wt + drat + qsec, data = mtcars)
4 Variables (and intercept)
Forced in Forced out
mpg FALSE FALSE
wt FALSE FALSE
drat FALSE FALSE
qsec FALSE FALSE
1 subsets of each size up to 4
Selection Algorithm: exhaustive
mpg wt drat qsec
1 ( 1 ) "*" " " " " " "
2 (1) " " "*" " " "*"
3 ( 1 ) “*” “*” “ “ “*”
4 ( 1 ) “*” “*” “*” “*”
结果底部的星号 ( * ) 指示对于具有不同数量的预测变量的每个可能模型,哪些预测变量属于最佳回归模型。
以下是如何解释结果:
对于具有单个预测变量的模型,使用mpg作为预测变量生成最佳回归模型。
对于具有两个预测变量的模型,使用wt和qsec作为预测变量生成最佳回归模型。
对于具有三个预测变量的模型,使用mpg 、 wt和qsec作为预测变量生成最佳回归模型。
对于具有四个预测变量的模型,使用mpg 、 wt 、 drat和qsec作为预测变量生成最佳回归模型。
请注意,您还可以为每个模型提取以下指标:
- rsq :每个模型的r 平方值
- RSS :每个模型的残差平方和
- adjr2 :每个模型调整后的 r 平方值
- cp :每个模型的锦葵的 Cp
- bic :每个型号的BIC 值
例如,我们可以使用以下语法来提取四个最佳模型中每个模型的拟合 R 平方值:
#view adjusted R-squared value of each model
summary(bestSubsets)$adjr2
[1] 0.5891853 0.7828169 0.7858829 0.7787005
从结果我们可以看出:
- 以mpg作为预测变量的模型的调整 R 平方值为0.589 。
- 以wt和qsec作为预测变量的模型的调整 R 平方值为0.783 。
- 以mp g 、 wt和qsec作为预测变量的模型的调整 R 平方值为0.786 。
- 以mpg 、 wt 、 drat和qsec作为预测变量的模型的调整 R 平方值为0.779 。
这些值让我们了解预测变量集对响应变量值的预测效果如何,并根据模型中预测变量的数量进行调整。
其他资源
以下教程解释了如何在 R 中执行其他常见任务: