Lasso交叉验证构建模型并计算各样本评分

Lasso交叉验证

library(glmnet)
library(survival)
library(survminer)

x = exp[,gene] #gene为纳入的基因集
y = Surv(time = cl$pfs_time, event = cl$pfs_status)

lasso.cv = cv.glmnet(x, y, nfolds = 10,  family = "cox", type.measure = 'C') #10折
plot(lasso.cv)#有两条垂直的虚线,左侧表示取得MSE最小值的logλ,右侧表示距离最小值1个标准误差的logλ,如果存在过拟合问题,那么logλ是一个很好的解决问题的起点

lasso.coef.cv = coef(lasso.cv, s = "lambda.1se") # 或者选择"lambda.min"
result.lasso = data.frame(i = lasso.coef.cv@i, Coef = lasso.coef.cv@x) #i为基因排序,x为回归系数
result.lasso$EnsemblID = gene[result.lasso$i]
  • k折交叉检验的结果如下:指定 λ 后做 k 次交叉验证并对得到对应的 C-index 值的可信区间,根据此图选取 λ 值 
plot(lasso.cv)
  •  输出结果 result.lasso 如下,包括了基因名和对应的回归系数

 计算各样本模型评分Score

meta = merge(exp[, colnames(exp) %in% result.lasso$EnsemblID], cl, by=0) #by=0为按行名组合
rownames(meta)=meta$Row.names;meta=meta[,-1]

for(i in 1:6){             #可选
  meta[,i] <- meta[,i]*result.lasso$Coef[i]
}
meta$Score = rowSums(meta[,1:6]) #可选,计算每个样本的Score
meta$group = ifelse(meta$Score > median(meta$Score),'high','low')
  • 输入数据 meta 的结构为:基因表达(z-score)+ 生存资料
 meta

 

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郁柳_Fudan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值