LASSO 回归也叫套索回归,是通过生成一个惩罚函数是回归模型中的变量系数进行压缩,达到防止过度拟合,解决严重共线性的问题,LASSO 回归最先由英国人Robert Tibshirani提出,目前在预测模型中应用非常广泛。在新格兰文献中,有大牛提出,对于变量过多而且变量数较少的模型拟合,首先要考虑使用LASSO 惩罚函数。今天我们来讲讲怎么使用R语言通过LASSO 回归构造预测模型。
首先我们要下载R的glmnet包,由 LASSO 回归的发明人,斯坦福统计学家 Trevor Hastie 领衔开发。
加载需要的包,导入数据(还是我们既往的SPSS乳腺癌数据),删除缺失值

library(glmnet)
library(foreign)
bc <- read.spss("E:/r/Breast cancer survival agec.sav",use.value.labels=F, to.data.frame=T)
bc <- na.omit(bc)


目前,glmnet包只能接受矩阵形式的数据,数据框的数据会报错,所以我们先要把数据转换成矩阵形式,这一步很重要。

y<-as.matrix(bc[,8])
x<-as.matrix(bc[,c(2:7,9:11)])


通过转换后,我们得到了两个数据矩阵,Y是结果,X是数据的变量
开始构建模型

f1 = glmnet(x, y, family="binomial", nlambda=100, alpha=1) #这里alpha=1为LASSO回归,如果等于0就是岭回归
#参数 family 规定了回归模型的类型:
family="gaussian" 适用于一维连续因变量(univariate)
family="mgaussian" 适用于多维连续因变量(multivariate)
family="poisson" 适用于非负次数因变量(count)
family="binomial" 适用于二元离散因变量(binary)
family="multinomial" 适用于多元离散因变量(category)
我们这里结局指标是2分类变量,所以使用binomial
print(f1)#把f1结果输出



可以看到随着lambdas增加,自由度和残差减少,最小lambda为0.000233
输出图形

plot(f1, xvar="lambda", label=TRUE)


横坐标为随着lambdas的对数,纵坐标为变量系数,可以看到随着lambdas增加变量系数不断减少,部分变量系数变为0(等于没有这个变量了)

下面进行交叉验证
我们可以把数据集取一部分进行验证(这步不做也可以)

predict(f1, newx=x[2:5,], type = "response")


然后通过glmnet自带函数进行交叉检验,并输出图形

cvfit=cv.glmnet(x,y)
plot(cvfit)


我们这个图中有两条虚线,一个是均方误差最小时的λ值,一个是距离均方误差最小时一个标准误的λ值,有点拗口没关系,我们只要知道它是多少就可以了

cvfit$lambda.min#求出最小值
cvfit$lambda.1se#求出最小值一个标准误的λ值



OK,我们得出这两个值后分别带进模型看一看

l.coef2<-coef(cvfit$glmnet.fit,s=0.004174369,exact = F)
l.coef1<-coef(cvfit$glmnet.fit,s=0.04272596,exact = F)
l.coef1
l.coef2



我们看到第一个模型变量都没有了,第二个模型还有5个变量,因此就只能选第2个了。
我们把这几个系数拿出来组成广义线性方程,时间变量time懒得拿了(做示范而已,拿也是可以的)

mod<-glm(status~age+pathsize+lnpos+pr,family="binomial",data = bc)
summary(mod)


有3个指标入选,我们还可以求出OR和95%CI

OK,做到这里,模型已经全部做出来啦,您学会了吗?

扩展阅读
R语言glmnet包lasso回归中分类变量的处理

手把手教你使用R语言做LASSO 回归相关推荐

  1. 独家 | 手把手教你用R语言做回归后的残差分析(附代码)

    作者:Abhijit Telang 翻译:张睿毅 校对:丁楠雅 本文约2600字,建议阅读10分钟. 本文介绍了做残差分析的方法及其重要性,以及利用R语言实现残差分析. 在这篇文章中,我们通过探索残差 ...

  2. r语言中残差与回归值的残差图_独家 | 手把手教你用R语言做回归后的残差分析(附代码)-阿里云开发者社区...

    作者:Abhijit Telang 翻译:张睿毅 校对:丁楠雅 文章来源:微信公众号 数据派THU 本文介绍了做残差分析的方法及其重要性,以及利用R语言实现残差分析. 在这篇文章中,我们通过探索残差分 ...

  3. r语言做断轴_手把手教你用R语言做回归后的残差分析

    本文介绍了做残差分析的方法及其重要性,以及利用R语言实现残差分析. 在这篇文章中,我们通过探索残差分析和用R可视化结果,深入研究了R语言. 残差本质上是当一个给定的模型(在文中是线性回归)不完全符合给 ...

  4. 手把手教你使用R语言建立COX回归并画出列线图(Nomogram)

    列线图,又称诺莫图(Nomogram),它是建立在回归分析的基础上,使用多个临床指标或者生物属性,然后采用带有分数高低的线段,从而达到设置的目的:基于多个变量的值预测一定的临床结局或者某类事件发生的概 ...

  5. R语言实现LASSO回归

    Lasso回归又称为套索回归,是Robert Tibshirani于1996年提出的一种新的变量选择技术.Lasso是一种收缩估计方法,其基本思想是在回归系数的绝对值之和小于一个常数的约束条件下,使残 ...

  6. 手把手教你入门R语言--数据分析篇(1)——数据导入与基础绘图

    R语言入门系列课程(6) 前面已将R语言的基础全部交给大家了,这两节将教大家用R语言进行数据分析的基础.数据读入(数据源包括txt文件.Excel文件.MySLQ数据库.MongoDB数据库).数据写 ...

  7. 独家 | 手把手教你学习R语言(附资源链接)

    作者:NSS 翻译:杨金鸿 术语校对:韩海畴 全文校对:林亦霖 本文约3000字,建议阅读7分钟. 本文为带大家了解R语言以及分段式的步骤教程! 人们学习R语言时普遍存在缺乏系统学习方法的问题.学习者 ...

  8. 超级干货 :手把手教你学习R语言(附资源链接)

    作者:NSS:翻译:杨金鸿:校对:韩海畴,林亦霖: 本文约3000字,建议阅读7分钟. 本文为带大家了解R语言以及分段式的步骤教程! 人们学习R语言时普遍存在缺乏系统学习方法的问题.学习者不知道从哪开 ...

  9. 手把手教你学习R语言

    本文为带大家了解R语言以及分段式的步骤教程! 人们学习R语言时普遍存在缺乏系统学习方法的问题.学习者不知道从哪开始,如何进行,选择什么学习资源.虽然网络上有许多不错的免费学习资源,然而它们多过了头,反 ...

最新文章

  1. 没有 4.21 ,Linus Torvalds 宣布 Linux 进入 5.0 时代
  2. .NET牛人应该知道些什么
  3. 《ASCE1885的信息安全》の使用Crypto++的MD5算法对字符串进行哈希
  4. Boost.MultiIndex 使用序列索引的示例
  5. python多分支实现四则运算器代码_一份让Python疯狂加速的工具合集!
  6. POJ 1185 炮兵阵地
  7. CSS3的常用属性(一)
  8. Leetcode——300. 最长上升子序列
  9. 2017.3.14 游戏(scoi2009) 失败总结
  10. yolov3从头实现(六)损失计算
  11. 计算机每个人都适合学吗,代码不等于计算机科学:为什么所有人都应该学习编程...
  12. Web前端学习 | Ajax
  13. 汤家凤:历年真题怎么用?接力题典怎么配合?黄金十月拼命干,提高很多分数不是梦!...
  14. 产品分析之美团_米米米米粒口红_新浪博客
  15. PDF如何编辑,怎么删除PDF页眉页脚
  16. 图像相似度的评价指标 : FID(Fréchet Inception Distance)
  17. uniapp打包的app上架应用商店隐私政策:您的应用在用户同意隐私政策前申请获取用户个人信息
  18. android面试宝典!Android高级工程师面试实战,通用流行框架大全
  19. stm32笔记02——ST-Link下载器使用说明
  20. 计算机专业数学专业考研学校排名,数学专业考研院校推荐

热门文章

  1. Lock锁中ReentrantLock中Condition的使用
  2. 音视频基础知识-时间戳的理解
  3. 移动APP导航栏设计对比
  4. 高项_第十章项目沟通管理
  5. 《博弈心理学》-占据主动的策略思维
  6. 【小树T系列3D打印机安装教程】
  7. Linux下更新网卡驱动
  8. 漏刻有时数据可视化Echarts组件开发(27):盒须图(箱线图)前后端php交互的实战案例
  9. IBM SPSS Modeler 14.1下载安装及注册详细教程
  10. 前端入门 1| HTML基本结构