Lease Absolute Shrinkage and Selection Operator(LASSO)在给定的模型上执行正则化和变量选择。根据惩罚项的大小,LASSO将不太相关的预测因子缩小到(可能)零。因此,它使我们能够考虑一个更简明的模型。在这组练习中,我们将在R中实现LASSO回归。
 

练习1

加载糖尿病数据集。这有关于糖尿病的病人水平的数据。数据为n = 442名糖尿病患者中的每个人获得了10个基线变量、年龄、性别、体重指数、平均血压和6个血清测量值,以及感兴趣的反应,即一年后疾病进展的定量测量。"
接下来,加载包用来实现LASSO。

head(data)

R语言Lasso回归模型变量选择和糖尿病发展预测模型应用(含练习)_R语言

练习2

数据集有三个矩阵x、x2和y。x是较小的自变量集,而x2包含完整的自变量集以及二次和交互项。
检查每个预测因素与因变量的关系。生成单独的散点图,所有预测因子的最佳拟合线在x中,y在纵轴上。用一个循环来自动完成这个过程。
 

summary(x)

R语言Lasso回归模型变量选择和糖尿病发展预测模型应用(含练习)_R语言_02

for(i in 1:10){
  plot(x[,i], y)
  abline(lm(y~x[,i])
}

 

 R语言Lasso回归模型变量选择和糖尿病发展预测模型应用(含练习)_R语言_03

练习3

使用OLS将y与x中的预测因子进行回归。我们将用这个结果作为比较的基准。

lm(y ~ x)

 

 R语言Lasso回归模型变量选择和糖尿病发展预测模型应用(含练习)_R语言_04

练习4

绘制x的每个变量系数与β向量的L1准则的路径。该图表明每个系数在哪个阶段缩减为零。

plot(model_lasso)

 

R语言Lasso回归模型变量选择和糖尿病发展预测模型应用(含练习)_R语言_05

 

练习5

得到交叉验证曲线和最小化平均交叉验证误差的lambda的值。

plot(cv_fit)

 

R语言Lasso回归模型变量选择和糖尿病发展预测模型应用(含练习)_R语言_06

R语言Lasso回归模型变量选择和糖尿病发展预测模型应用(含练习)_R语言_07

练习6

使用上一个练习中的lambda的最小值,得到估计的β矩阵。注意,有些系数已经缩减为零。这表明哪些预测因子在解释y的变化方面是重要的。

 

> fit$beta

R语言Lasso回归模型变量选择和糖尿病发展预测模型应用(含练习)_R语言_08

练习7

为了得到一个更简明的模型,我们可以使用一个更高的λ值,即在最小值的一个标准误差之内。用这个lambda值来得到β系数。注意,现在有更多的系数被缩减为零。

lambda.1se

 R语言Lasso回归模型变量选择和糖尿病发展预测模型应用(含练习)_R语言_09

beta

 

R语言Lasso回归模型变量选择和糖尿病发展预测模型应用(含练习)_R语言_10

 

练习8

如前所述,x2包含更多的预测因子。使用OLS,将y回归到x2,并评估结果。

 

summary(ols2)

 R语言Lasso回归模型变量选择和糖尿病发展预测模型应用(含练习)_R语言_11

R语言Lasso回归模型变量选择和糖尿病发展预测模型应用(含练习)_R语言_12

练习9

对新模型重复练习-4。

lasso(x2, y)
plot(model_lasso1)

 

 R语言Lasso回归模型变量选择和糖尿病发展预测模型应用(含练习)_R语言_13

练习10

对新模型重复练习5和6,看看哪些系数被缩减为零。当有很多候选变量时,这是缩小重要预测变量的有效方法。

plot(cv_fit1)

R语言Lasso回归模型变量选择和糖尿病发展预测模型应用(含练习)_R语言_14

beta

 

 R语言Lasso回归模型变量选择和糖尿病发展预测模型应用(含练习)_R语言_15

 

R语言Lasso回归模型变量选择和糖尿病发展预测模型应用(含练习)_R语言_16


R语言Lasso回归模型变量选择和糖尿病发展预测模型应用(含练习)_R语言_17