Lasso回归是一种线性回归的变量选择方法,它可以用于在众多预测变量中选择最相关的变量。Lasso回归通过对回归系数进行L1正则化,将一些不重要的变量系数缩小到零,从而实现变量选择。
准备数据:1.每一行是一个样本,每一列为基因的基因表达矩阵;2.一列表示分组
# install.packages("glmnet")
library(glmnet)
data <- read.csv("all.csv")
rownames(data) <- data[,1]
data <- data[,-1]
#通过glmnet函数中的设置family参数定义采用的算法模型,比如设置cox
mod <- glmnet(data[,1:15],data[,16],family = "binomial")
#family为可选模型(“gaussian”, “binomial”, “poisson”, “multinomial”, “cox”, “mgaussian”)
#binomial为二分类logistics回归,cox包含生存分析
##Lasso回归最重要的就是选择合适的λ值,可以通过cv.glmnet函数实现
cvmod <- cv.glmnet(as.matrix(data[,1:15]),as.matrix(data[,16]),family = "binomial") # 交叉验证
cvmod
plot(mod,label = T,lwd=2)
plot(mod,xvar = "lambda",label = T,lwd=2)
plot(cvmod)
#基于该图选择最佳的λ,一般可以采用两个内置函数实现cvmod$lambda.min和 cvmod$lambda.1se
cvmod$lambda.min
##基因筛选,采用coef函数即可,有相应参数的gene则被保留,采用λ使用的是lambda.min
coef.min <- coef(cvmod,s="lambda.min")
coef.min
#第二列有数值是非点号的则代表被选择的基因