岳阳做网站公司,正能量晚上看的网站2021,网站开发杭州,做网站的过程弹性网络#xff08;Elastic Net#xff09;:是一种用于回归分析的统计方法#xff0c;它是岭回归#xff08;Ridge Regression#xff09;和lasso回归#xff08;Lasso Regression#xff09;的结合#xff0c;旨在克服它们各自的一些限制。弹性网络能够同时考虑L1正则…弹性网络Elastic Net:是一种用于回归分析的统计方法它是岭回归Ridge Regression和lasso回归Lasso Regression的结合旨在克服它们各自的一些限制。弹性网络能够同时考虑L1正则化lasso和L2正则化岭回归从而在特定情况下对于高维数据集具有更好的性能。
#清空
rm(listls())
gc()#导入包
library(glmnet)
help(packageglmnet)
library(survival)
library(caret)
library(tibble)
library(magrittr)#原始数据处理
data(cancer)
data-na.omit(lung) %% data.frame
dim(lung)
#K折交叉验证
folds-createMultiFolds(ylung$status,k3,time1)
val-list(traindata,test1data[folds$Fold1.Rep1,],test2data[folds$Fold2.Rep1,],test3data[folds$Fold3.Rep1,])#构建模型
x1 - as.matrix(data[,!(colnames(data) %in% c(time,status))])
x2 - as.matrix(Surv(data$time,data$status))
result - data.frame()
#使用循环使得alpha参数从0到1
for (alpha in seq(0,1,0.1)) {set.seed(123)fit cv.glmnet(x1, x2,family cox,alphaalpha,nfolds 10)rs - lapply(val,function(x){cbind(x[,c(time,status)],RSas.numeric(predict(fit,typelink,newxas.matrix(x[,!(colnames(data) %in% c(time,status))]),sfit$lambda.min)))})cc - data.frame(Cindexsapply(rs,function(x){as.numeric(summary(coxph(Surv(time,status)~RS,x))$concordance[1])}))%%rownames_to_column(ID)cc$Model - paste0(Enet,[α,alpha,])result - rbind(result,cc)
}
#得到每个alpha下C指数的平均值
library(dplyr)
mean_result-result %% group_by(Model) %% summarise(Cindexmean(Cindex))#绘图
plot(fit) mean_result %%ggplot(aes(Cindex,reorder(Model,Cindex)))geom_bar(width0.7,stat identity,fillgreen)geom_text(aes(label round(Cindex, 2)), hjust1,vjust 0.5,color black) # 在条形柱顶端添加数值theme_void()scale_x_break(c(0.05,0.53),scales 20)mean_result - pivot_wider(result,names_from ID,values_from Cindex)%%as.data.frame()
mean_result[,-1] - apply(mean_result[,-1],2,as.numeric)
heatdata - as.matrix(mean_result2[, 2:5])
rownames(heatdata) - mean_result2$Model
args(pheatmap)
pheatmap(heatdata,name Cindex,cluster_cols FALSE,#不进行行聚类cluster_rows T, #进行行聚类show_colnames FALSE,show_rownames T, # 显示行名display_numbersT,annotation_coldata.frame(Typec(train,test1,test2,test3)),annotation_colors list(Typec(trainred,test1yellow,test2blue,test3green)),cellwidth 30, # 调整小方块的宽度cellheight 20 # 调整小方块的高度)