无需代码,一键完成LASSO回归分析,超简易教程

企业   2024-10-15 11:40   中国  

大家好,2年前,我们写了一篇关于LASSO回归的推文:“什么是LASSO回归,怎么看懂LASSO回归的结果”。当时我们说,如果阅读量超过3000,我们就就再开一期教程,手把手带大家做出LASSO回归,可是后来拖延症发作,没有及时兑现大家的承诺,在这里先和大家说声对不起。

不过,鸽了2年之后,我们今天终于要兑现这个承诺啦!今天我们将会给大家带来完整的用R语言实现LASSO回归的教程。

另外,针对不想使用R语言的小伙伴,我们还准备一个非常好用的工具,无需代码,可以一键完成LASSO回归分析

使用R语言实现LASSO回归

1.首先安装LASSO必要的包:glmnet和Matrix,如果已经安装了,直接加载即可。

# 安装并加载必要的包
install.packages("glmnet")
install.packages("Matrix")
library(glmnet)
library(Matrix)

2.导入数据。大家需要把自己手上的excel数据导入到R中,这时候我们需要拿到这个excel的路径,比如:C:\Users\张三\Desktop‌\data.csv  读入之后,我们可以用summary(data)来检查是否导入成功。

3.删除缺失值,生成新数据集。在运行glmnet包的时候,如果数据里面包含缺失,会导致报错,所以我们需要对缺失数据进行删除,然后保存一份没有缺失的数据集c_data。(如果你的样本量不大,或者缺失过多,可以考虑进行数据插补,这里的代码就不详细讲解了)

# 导入数据
data = read.csv("/Users/zhao/Desktop/lasso回归代码/data.csv", header=T)
summary(data)

# 删除缺失值
c_data <- na.omit(data)
summary(c_data)

4.指定纳入LASSO方程的多个X和Y。y = as.factor(c_data[,7]) 中的数字“7”表示了数据集的第7列是Y,c(1,3,5,6,8,9),表示了 135689列是纳入方程的协变量X。(这里需要替换成自己想要分析的变量哦)

# 指定多个X和Y
# 这里的数字代表的是变量在数据集中的列数,比如age是第3列,那么就是c(3)

x <- as.matrix(c_data[, c(1,3,5,6,8,9)])
# 这里相当于选择了 135689列作为X,这里的数字要根据自己的数据进行修改调整

y = as.factor(c_data[,7])
# 这里指定了第7列作为方程的Y

5.使用glmnet函数来拟合Lasso回归模型,并生成系数路径图:

# Lasso筛选变量动态过程图
la.eq <- glmnet(x, y, family="binomial", alpha=1)
plot(la.eq, xvar = "lambda", label = F)

运行这个代码就会生成大家熟悉的路径图:

横坐标为lambda的值,纵坐标为变量系数,可以看出,随着的增加,部分变量的系数逐渐被压缩为0,变量个数随之减少。

6.交叉验证,寻找最优λ下面我们我们使用使用10折交叉验证的方法,选择合适的正则化参数λ:

# 交叉验证法挑选lambda
mod_cv <- cv.glmnet(x=x, y=y, family="binomial", alpha=1)
plot(mod_cv)


7.使用最优λ训练模型,并显示最优的lasso模型。一般来说我们会选择2个参数,分别是lambda.min和lambda.1se,输出方程就可以看到结果了

# 选择lambda=lambda.min的模型系数估计
best_lambda <- mod_cv$lambda.min
best_model <- glmnet(x, y, family="binomial", alpha = 1, lambda = best_lambda)
coef(best_model)

# 选择lambda=lambda.1se的模型系数估计
best_lambda1se <- mod_cv$lambda.1se
best_model1se <- glmnet(x, y, family="binomial", alpha = 1, lambda = best_lambda1se)
coef(best_model1se)

结果如下,其中系数不是0的变量,就是LASSO方程挑选出来的变量,这几个变量就可以进入到我们后续的回归方程中了。

以上就是使用R代码自己实现LASSO回归的过程,终于填上2年前的坑了。不过大家也发现了,自己使用R代码实现LASSO回归还是比较麻烦的。

为了解决这个难题,我们开发了一个不用写代码,可以一键完成LASSO回归的工具EasyR,下面,我们就进入EasyR的教程环节:

使用EasyR实现LASSO回归

1.注册并登录EasyR网站,网站的域名是www.easyr.cc ,整个工具是在网页端的,不需要下载软件~

2.上传自己的excel数据

3.进入LASSO模块,选择Y和X,点击分析。

4.查看结果:在下面就可以看到最终的结果,参数不是0的变量,就是LASSO最后筛选出来的变量。点击图片,可以查看路径图和交叉验证图:

到这就全部搞完了,整个过程不超过3分钟,是不是非常简单

其实,EasyR是我们开发的一套非常完善的在线数据分析工具,这个工具摒弃了传统分析软件对使用者的高要求,一切操作都非常清晰、简单、易懂。软件还会根据数据分布类型选择分析方法。

除了LASSO之外,EasyR还涵盖了很多统计模块,包括机器学习、多重插补、倾向性评分匹配,之后我们会逐步向大家分享,感兴趣的可以关注我们的微信号哦,我们下期再见

易侕科研
专注于临床科研数据管理+数据分析。定期分享一些研究设计、数据分析的内容,也会推荐一些好用的科研工具和网站。每天10min,让科研更简单!(本账号原名为:易侕统计。本账号为斯录欣公司旗下产品,2018年更名为:易侕科研)
 最新文章