R语言生存分析算法的简单组合

复制代码
library(survival)
library(randomForestSRC)

# 生成模拟数据
set.seed(123)
n <- 200
time <- rexp(n, rate = 0.1)
status <- rbinom(n, size = 1, prob = 0.7)
var1 <- rnorm(n)
var2 <- rnorm(n)
var3 <- rnorm(n)
data1 <- data.frame(time = time, status = status, var1 = var1, var2 = var2, var3 = var3)

# 定义模型列表
models <- list(
  cox = function(data) {
    fit <- survival::coxph(Surv(time,status) ~ .,data=data)
    sum<-summary(fit)[["coefficients"]][,5] 
    canshu<-names(sum)
    result<-list(fit=fit,canshu=canshu)
    return(result)
  },
  rsf=function(data){
    fit<-rfsrc(Surv(time,status) ~ .,data=data1)
    canshu<-var.select(object=fit,
                       method="md",
                       conservative="low")$md.obj$topvars.1se
    result<-list(fit=fit,canshu=canshu)
    return(result)
  }
)

# 列举所有模型组合(考虑顺序)
model<-c("cox","rsf")
all_combinations <- list()
library(gtools)
for (n in 1:length(model)) {
  permutations <- permutations(2,n,v=model)
  mat_list <- apply(permutations, 1, function(row) paste(row, collapse = ","))
  mat_vector_list <- lapply(mat_list, function(str) unlist(strsplit(str, ",")))
  all_combinations <- c(all_combinations, mat_vector_list)
}
model_combinations<-all_combinations

# 循环遍历不同模型组合
selected_vars_final <- list()
for (i in 1:length(model_combinations)) {
  comb <- model_combinations[[i]]
  selected_vars <- NULL
  # 循环遍历每个模型类型
  data1<-lung
  for (model_name in comb) {
    i=1
    if (grep(model_name,comb)==1) {
      # 根据前一步的选择变量建立模型并筛选变量
      result <- models[[model_name]](data1)
      cat("第一步:",model_name,"---",result$canshu,"\n")
    } else {
      vc=paste("c(", paste(sprintf('"%s"', selected_vars), collapse = ","), ")", sep = "")
      cat("纳入第二步的因素:",model_name,"---",vc,"\n")
      selected_data <-  data.frame(data1[,eval(parse(text = vc))],
                                   data1[,c("time","status")])
      result <- models[[model_name]](selected_data)
    }
    # 更新选定变量
    selected_vars <- result$canshu
  }
  selected_vars_final[[paste(comb, collapse = "_")]] <- selected_vars
}

print(selected_vars_final)
相关推荐
zhangfeng11333 小时前
win7 R 4.4.0和RStudio1.25的版本兼容性以及系统区域设置有关 导致Plots绘图面板被禁用,但是单独页面显示
开发语言·人工智能·r语言·生物信息
zhangfeng113310 小时前
在 R 语言里,`$` 只有一个作用 按名字提取“列表型”对象里的单个元素 对象 $ 名字
开发语言·windows·r语言
高-老师10 小时前
R语言生物群落(生态)数据统计分析与绘图实践技术应用
开发语言·r语言·生物群落
WangYan20221 天前
R语言:数据读取与重构、试验设计(RCB/BIB/正交/析因)、ggplot2高级绘图与统计检验(t检验/方差分析/PCA/聚类)
r语言·ggplot2·dplyr
zhangfeng11331 天前
错误于make.names(vnames, unique = TRUE): invalid multibyte string 9 使用 R 语言进行数据处理时
开发语言·r语言·生物信息
zhangfeng11332 天前
R geo 然后读取数据的时候 make.names(vnames, unique = TRUE): invalid multibyte string 9
开发语言·chrome·r语言·生物信息
梦想的初衷~3 天前
R语言生物群落数据分析全流程:从数据清洗到混合模型与结构方程
机器学习·r语言·生态·环境
没有梦想的咸鱼185-1037-16635 天前
基于R语言机器学习方法在生态经济学领域中的实践技术应用
开发语言·机器学习·数据分析·r语言
zhangfeng11335 天前
R 语法高亮为什么没有,是需要安装专用的编辑软件,R语言自带的R-gui 功能还是比较简单
开发语言·r语言
WangYan20225 天前
经济学+机器学习+R语言:十大原理、熵权法、随机森林、神经网络、因果推断全解析
r语言·生态经济学·经济学