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

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

拟合岭回归和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.fit, label = TRUE)

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

par(mfrow=c(1,2))  # 建立1乘2的绘图环境
plot\_glmnet(ridge\_glmnet.fit, xvar = "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

相关文章
|
5月前
|
数据可视化 数据挖掘 图形学
R语言基础可视化:使用ggplot2构建精美图形的探索
【8月更文挑战第29天】 `ggplot2`是R语言中一个非常强大的图形构建工具,它基于图形语法提供了一种灵活且直观的方式来创建各种统计图形。通过掌握`ggplot2`的基本用法和美化技巧,你可以轻松地将复杂的数据转化为直观易懂的图形,从而更好地理解和展示你的数据分析结果。希望本文能够为你探索`ggplot2`的世界提供一些帮助和启发。
|
5月前
|
数据可视化 数据挖掘 数据处理
R语言高级可视化技巧:使用Plotly与Shiny制作互动图表
【8月更文挑战第30天】通过使用`plotly`和`shiny`,我们可以轻松地创建高度互动的数据可视化图表。这不仅增强了图表的表现力,还提高了用户与数据的交互性,使得数据探索变得更加直观和高效。本文仅介绍了基本的使用方法,`plotly`和`shiny`还提供了更多高级功能和自定义选项,等待你去探索和发现。希望这篇文章能帮助你掌握使用`plotly`和`shiny`制作互动图表的技巧,并在你的数据分析和可视化工作中发挥更大的作用。
|
8月前
|
数据可视化 数据挖掘 API
【R语言实战】聚类分析及可视化
【R语言实战】聚类分析及可视化
|
5月前
|
数据可视化
R语言可视化设计原则:打造吸引力十足的数据可视化
【8月更文挑战第30天】R语言可视化设计是一个综合性的过程,需要综合运用多个设计原则来创作出吸引力十足的作品。通过明确目标、选择合适的图表类型、合理运用色彩与视觉层次、明确标注与引导视线以及引入互动性与动态效果等原则的应用,你可以显著提升你的数据可视化作品的吸引力和实用性。希望本文能为你提供一些有益的启示和帮助。
|
7月前
|
前端开发 Apache 数据库
ThinkPHP+Bootstrap简约自适应网址导航网站源码
使用 ThinkPHP+bootstrap 开发,后台采用全局 ajax 无刷新加载,前后台自适应,前台页面非常简洁适合自己收藏网站或做导航网站。
120 1
|
8月前
|
数据采集 数据可视化
利用R语言进行因子分析实战(数据+代码+可视化+详细分析)
利用R语言进行因子分析实战(数据+代码+可视化+详细分析)
|
8月前
|
Web App开发 数据可视化 数据挖掘
利用R语言进行聚类分析实战(数据+代码+可视化+详细分析)
利用R语言进行聚类分析实战(数据+代码+可视化+详细分析)
|
8月前
|
移动开发 数据可视化
广义线性模型beta二项分布的淋巴结疾病风险预测可视化R语言2实例合集|附数据代码
广义线性模型beta二项分布的淋巴结疾病风险预测可视化R语言2实例合集|附数据代码
|
4月前
|
数据采集 机器学习/深度学习 数据可视化
R语言从数据到决策:R语言在商业分析中的实践
【9月更文挑战第1天】R语言在商业分析中的应用广泛而深入,从数据收集、预处理、分析到预测模型构建和决策支持,R语言都提供了强大的工具和功能。通过学习和掌握R语言在商业分析中的实践应用,我们可以更好地利用数据驱动企业决策,提升企业的竞争力和盈利能力。未来,随着大数据和人工智能技术的不断发展,R语言在商业分析领域的应用将更加广泛和深入,为企业带来更多的机遇和挑战。
|
3月前
|
数据挖掘 C语言 C++
R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。
【10月更文挑战第21天】时间序列分析是一种重要的数据分析方法,广泛应用于经济学、金融学、气象学、生态学等领域。R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。本文将介绍使用R语言进行时间序列分析的基本概念、方法和实例,帮助读者掌握R语言在时间序列分析中的应用。
62 3