R语言Bootstrap的岭回归和自适应LASSO回归可视化

科技   科技   2024-11-22 18:30   浙江  

原文链接:http://tecdat.cn/?p=22921


拟合岭回归和LASSO回归,解释系数,并对其在λ范围内的变化做一个直观的可视化点击文末“阅读原文”获取完整代码数据


 

# 加载CBI数据
# 子集所需的变量(又称,列)
CBI_sub <- CBI

# 重命名变量列(节省大量的输入)
names(CBI_sub)\[1\] <- "cbi"


# 只要完整案例,删除缺失值。
CBI\_sub <- CBI\_sub\[complete.cases(CBI_sub),\]

#现在检查一下CBI_sub里面的内容
names(CBI_sub)

# 设置控制参数
control = method = "cv",number=5)     # 5折CV

cbi ~ ., data = CBI_sub, method = "glmnet",
                trControl = control, preProc = c("center","scale"),  # 中心和标准化数据
 
# 得到系数估计值(注意,我们真正关心的是β值,而不是S.E.)。
coef(ridge_caret.fit, bestTune$lambda)

cbi ~ ., data = CBI_sub, method = "glmnet",
                tuneGrid = expand.grid(alpha = 1,    

# 获得系数估计
coef(lasso_caret,bestTunelambda)

使用glmnet软件包中的相关函数对岭回归和lasso套索回归进行分析。

准备数据  

注意系数是以稀疏矩阵格式表示的,因为沿着正则化路径的解往往是稀疏的。使用稀疏格式在时间和空间上更有效率

# 拟合岭回归模型
 glmnet(X, Y, alpha = 0)

#检查glmnet模型的输出(注意我们拟合了一个岭回归模型
#记得使用print()函数而不是summary()函数 
print(glmnet.fit)

# 输出最佳lamda处的岭回归coefs

coef(glmnet.fit, s = lambda.1se)

绘制结果 


plot(ridge_glmnet.fitlabel = TRUE)

图中显示了随着lambda的变化,模型系数对整个系数向量的L1-norm的路径。上面的轴表示在当前lambda下非零系数的数量,这也是lasso的有效自由度(df)。

par(mfrow=c(1,2))  # 建立12的绘图环境
plot\_glmnet(ridge\_glmnet.fitxvar = "lambda"label=6, xlab = expression(paste("log("lambda")")), ylab = expression(beta))   # "标签"是指你想让图表显示的前N个变量。

# 进行变量选择,比如说,我想根据λ>0.1的标准或其他一些值来选择实际系数。
coef(ridge_glmnet.fit, s = 0.1)

交叉验证的岭回归 

#  
plot(cv.ridge)

# 我们可以查看选定的lambda和相应的系数。例如:
lambda.min

# 根据最小的lambda(惩罚)选择变量

#  lambda.min是λ的值,它使交叉验证的平均误差最小
# 选择具有最大惩罚性的一个
coef

## 对lasso模型做同样的处理

数据挖掘

使用自适应LASSO进行函数形式规范检查

# 加载CBI数据
CBI <- read.csv("dat.csv")
#对需要的变量进行取子集(列)
names(CBI)<- "cbi"
fitpoly(degree = 2, thre = 1e-4)   # 设置多项式的度数为2

bootstrap 

boot(poly.fit1, nboot = 5)   #5次bootstrap迭代

交叉验证 

# 交叉验证,10折CV
cbi ~ ., data = CBI_sub, degrees.cv = 1:3,)

# 提取最佳模型并进行bootstrap
boot(cv.pred, nboot = 5)   # 5次bootstrap

# 绘制cv.boot的预测值的边际效应
marg(cv.boot))

补充

获得岭回归和LASSO模型的bootstrap平均数

#如果你想要S.E.,通过bootstrap模拟得到它。

library(boot)
boot(CBI_sub, function(data, idx) 
bootSamples


本文中分析的数据、代码分享到会员群,扫描下面二维码即可加群! 




资料获取


在公众号后台回复“领资料”,可免费获取数据分析、机器学习、深度学习等学习资料。



点击文末“阅读原文”

获取全文完整代码数据资料


本文选自《R语言Bootstrap的岭回归和自适应LASSO回归可视化》。


点击标题查阅往期内容

R语言Lasso回归模型变量选择和糖尿病发展预测模型
R语言实现贝叶斯分位数回归、lasso和自适应lasso贝叶斯分位数回归分析
基于R语言实现LASSO回归分析
R语言用LASSO,adaptive LASSO预测通货膨胀时间序列
R语言自适应LASSO 多项式回归、二元逻辑回归和岭回归应用分析
R语言惩罚logistic逻辑回归(LASSO,岭回归)高维变量选择的分类模型案例
Python中的Lasso回归之最小角算法LARS
r语言中对LASSO回归,Ridge岭回归和弹性网络Elastic Net模型实现
r语言中对LASSO回归,Ridge岭回归和Elastic Net模型实现
R语言实现LASSO回归——自己编写LASSO回归算法
R使用LASSO回归预测股票收益
python使用LASSO回归预测股票收益




拓端数据部落
拓端(tecdat.cn)创立于2016年,提供专业的数据分析与挖掘服务,致力于充分挖掘数据价值。
 最新文章