分享

练习R:cv.glmnet()函数实现交叉验证的lasso回归

 数据小兵 2024-03-24 发布于陕西
今天练习内容:针对二分类因变量数据资料,用lasso回归筛选自变量。
数据资料embolism,研究肺动脉栓塞的风险。因变量group,1表示发生肺动脉栓塞,0表示未发生。
其他自变量包括age、bmi、tos、等共13个,均为连续性数据或二分类数据。
===
先准备好自变量和因变量矩阵,
x <- as.matrix(embolism[,2:14])y <- as.matrix(embolism[,1])
准备好随机种子和λ,
lambdas <- seq(from=0,to=0.5,length.out=200)set.seed(123)
接下来开始拟合lasso回归,
cv.lasso <- cv.glmnet(x=x,y=y,alpha=1, lambda = lambdas, nfolds = 3, family="binomial")
绘制λ偏差图,
plot(cv.lasso)
来看结果,
图中显示,在最小偏差1个标准差位置上,仍然有7个自变量的偏回归系数是不为零的。实现了筛选自变量的目的。
再画一个λ偏回归系数图,
plot(cv.lasso$glmnet.fit,xvar = "lambda",label = T)
来看结果,
最后看一下λ取最小偏差1个标准差时的回归系数,
剩下的这7个自变量,可以继续去做多因素的logistic回归,进行影响因素的分析。
===

参考资料:

彭献镇《R语言临床预测模型实战》

本文如有侵权请告知删除
===
大家如果有统计方法选择、统计软件使用、统计结果解释分析、论文数据分析等疑难问题,欢迎加入我的视频课程,额外赠送1对1答疑咨询。没时间看视频,那么可以可以随时交流解决问题。
本文含广告。
购买和学习地址:

有知乎账号的朋友,也可以直接前往知乎,在“数据小兵”知乎首页右侧,有【知乎咨询】入口,欢迎来快速解决问题。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多