欢迎光临散文网 会员登陆 & 注册

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

2021-08-02 11:49 作者:拓端tecdat  | 我要投稿

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

原文出处:拓端数据部落公众号

拟合岭回归和LASSO回归,解释系数,并对其在λ范围内的变化做一个直观的可视化。

  1. # 加载CBI数据

  2. # 子集所需的变量(又称,列)

  3. CBI_sub <- CBI


  4. # 重命名变量列(节省大量的输入)

  5. names(CBI_sub)[1] <- "cbi"



  6. # 只要完整案例,删除缺失值。

  7. CBI_sub <- CBI_sub[complete.cases(CBI_sub),]


  8. #现在检查一下CBI_sub里面的内容

  9. names(CBI_sub)

  1. # 设置控制参数

  2. control = method = "cv",number=5)     # 5折CV


  3. cbi ~ ., data = CBI_sub, method = "glmnet",

  4. trControl = control, preProc = c("center","scale"),  # 中心和标准化数据


  5. # 得到系数估计值(注意,我们真正关心的是β值,而不是S.E.)。

  6. coef(ridge_caret.fit, bestTune$lambda)

  1. cbi ~ ., data = CBI_sub, method = "glmnet",

  2. tuneGrid = expand.grid(alpha = 1,


  3. # 获得系数估计

  4. coef(lasso_caret,bestTunelambda)

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

准备数据  

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

  1. # 拟合岭回归模型

  2. glmnet(X, Y, alpha = 0)


  3. #检查glmnet模型的输出(注意我们拟合了一个岭回归模型

  4. #记得使用print()函数而不是summary()函数

  5. print(glmnet.fit)

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


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

绘制结果 

  1. #

  2. plot(ridge_glmnet.fit, label = TRUE)

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

  1. par(mfrow=c(1,2))  # 建立1乘2的绘图环境

  2. plot_glmnet(ridge_glmnet.fit, xvar = "lambda", label=6, xlab = expression(paste("log(", lambda, ")")), ylab = expression(beta))   # "标签"是指你想让图表显示的前N个变量。

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

  2. coef(ridge_glmnet.fit, s = 0.1)

交叉验证的岭回归 

  1. #

  2. plot(cv.ridge)


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

  4. lambda.min

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

  1. #  lambda.min是λ的值,它使交叉验证的平均误差最小

  2. # 选择具有最大惩罚性的一个

  3. coef

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

数据挖掘

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

  1. # 加载CBI数据

  2. CBI <- read.csv("dat.csv")

  3. #对需要的变量进行取子集(列)

  4. names(CBI)<- "cbi"

fitpoly(degree = 2, thre = 1e-4)   # 设置多项式的度数为2

bootstrap 

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

交叉验证 

  1. # 交叉验证,10折CV

  2. cbi ~ ., data = CBI_sub, degrees.cv = 1:3,)

  1. # 提取最佳模型并进行bootstrap

  2. boot(cv.pred, nboot = 5)   # 5次bootstrap


  3. # 绘制cv.boot的预测值的边际效应

  4. marg(cv.boot))

补充

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

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


  2. library(boot)

  3. boot(CBI_sub, function(data, idx)

  4. bootSamples

最受欢迎的见解

1.R语言多元Logistic逻辑回归 应用案例

2.面板平滑转移回归(PSTR)分析案例实现

3.matlab中的偏最小二乘回归(PLSR)和主成分回归(PCR)

4.R语言泊松Poisson回归模型分析案例

5.R语言回归中的Hosmer-Lemeshow拟合优度检验

6.r语言中对LASSO回归,Ridge岭回归和Elastic Net模型实现

7.在R语言中实现Logistic逻辑回归

8.python用线性回归预测股票价格

9.R语言如何在生存分析与Cox回归中计算IDI,NRI指标


拓端tecdat|R语言Bootstrap的岭回归和自适应LASSO回归可视化的评论 (共 条)

分享到微博请遵守国家法律