当前位置: 首页 > news >正文

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.1seresult<-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<-lungfor (model_name in comb) {i=1if (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)

 

http://www.lryc.cn/news/124535.html

相关文章:

  • Qt应用开发(基础篇)——滚屏区域基类 QAbstractScrollArea
  • HTTPS安全通信
  • C语言暑假刷题冲刺篇——day1
  • trollcave靶场
  • 反馈式编译
  • sql-libs靶场-----0x00、环境准备
  • 一百四十九、Kettle——Linux上安装的kettle8.2创建共享资源库时遇到的问题(持续更新中)
  • Mysql 建索引规范
  • 新基建助推数字经济,CosmosAI率先布局AI超算租赁新纪元
  • 微服务06-分布式事务解决方案Seata
  • Wireshark有线网卡抓包报错The capture session could not be initiated on capture device
  • FreeSWITCH执行bridge时如何“制造“ringback
  • Java # 类加载子系统
  • YOLOv5改进系列(21)——替换主干网络之RepViT(清华 ICCV 2023|最新开源移动端ViT)
  • 安卓中常见的字节码指令介绍
  • TCP的三次握手和四次挥手
  • 前后端分离------后端创建笔记(08)表单提交
  • 途乐证券-KDJ分别代表什么?
  • 用C语言重写的原始Matlab OpenShoe算法:深入理解和实现步态分析的关键技术
  • 什么开放式耳机音质好?值得推荐的开放式耳机分享
  • mac harbor的安装
  • SetActive和Enable有什么不同?
  • 【Vue-Router】重定向
  • vulnhub靶场之ADROIT: 1.0.1
  • 【非欧几里得域信号的信号处理】使用经典信号处理和图信号处理在一维和二维欧几里得域信号上应用低通滤波器研究(Matlab代码实现)
  • 【深入理解ES6】字符串和正则表达式
  • 易服客工作室:Pixwell主题 – 现代杂志/WordPress新闻主题
  • iOS手机无法安装Charles 的ssl证书
  • Promise处理异步操作
  • jpa查询返回自定义对象、返回指定VO、POJO