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

news2024/10/5 17:17:06
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)

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/879084.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

「网络」网络安全必须知道的19个知识分享

一、防火墙&#xff08;Firewall&#xff09; 定义&#xff1a;都知道防火墙是干什么用的&#xff0c;但我觉得需要特别提醒一下&#xff0c;防火墙抵御的是外部的攻击&#xff0c;并不能对内部的病毒 ( 如ARP病毒 ) 或攻击没什么太大作用。 功能 : 防火墙的功能主要是两个网…

『C语言初阶』第九章 -结构体

前言 今天小羊又来给铁汁们分享关于C语言的结构体&#xff0c;在C语言中&#xff0c;结构体类型属于一种构造类型&#xff08;其他的构造类型还有&#xff1a;数组类型&#xff0c;联合类型&#xff09;&#xff0c;今天我们主要简单了解一下结构体。 一、结构体是什么&#x…

02.FFMPEG的安装和添加硬件加速自编译

说一个极其郁闷的事情&#xff0c;就在昨天收到3399的一块板子后&#xff0c;往电脑上面一插&#xff0c;然后悲剧的事情就发生了&#xff0c;我的电脑蓝屏重启了&#xff0c;这下好了&#xff0c;我写到一半的帖子也不见了&#xff0c;我的SSH里面的记录全部消失了&#xff0c…

一文解析超标量处理器

一、引言 处理器&#xff08;central process unit,简称CPU&#xff09;是手机的核心部件&#xff0c;其主要功能是取指令并译码执行。CPU主要包括控制器和运算器两个部件&#xff0c;它对在手机中的所有硬件资源&#xff08;如存储器&#xff0c;输入输出单元&#xff09;进行…

等保案例 1

用户简介 吉林省人力资源和社会保障厅&#xff08;简称“吉林省人社厅”&#xff09;响应《网络安全法》的建设要求&#xff0c;为了向吉林省人民提供更好、更快、更稳定的信息化服务&#xff0c;根据《网络安全法》和等级保护2.0相关标准&#xff0c;落实网络安全与信息化建设…

AD20之PCB设计

一、原理图 1、CTRL鼠标滚轮 图纸的放大缩小 2、修改栅格颜色 3、选择图纸尺寸 4、编译原理图 选中项目右键 5、编译原理图后 出现原理图中所使用的元器件 或错误信息 元器件 编译原理图报错 6、编译原理图库后 选中右侧栏中元器件 可进行添加 或删除库中元器件 7、去…

欧拉OS 使用 CentOS 7 yum repo

一、下载CentOS的repo的yum文件 任何基于CentOS的yum的repo 的url是这样的&#xff1a; 但欧拉OS输出这个变量为&#xff1a;openEuler 20.03 (LTS-SP3) 那明显欧拉想要使用这个yum的url找不到这个版本&#xff0c; 所以直接讲这个变量替换为 7, Centos 7的7 然后执行&…

C进阶(1/7)——数据在内存中的存储

目录 前言&#xff1a; 一.数据类型介绍 类型基本归类&#xff1a; 整型家族&#xff1a; 浮点数家族&#xff1a; 构造类型&#xff1a; ​指针类型&#xff1a; 空类型&#xff1a; 二.整型在内存中的存储 1.原码&#xff0c;反码&#xff0c;补码 2.大小端介绍 3.练…

web基础入门和php语言基础入门 二

web基础入门和php语言基础入门 二 MySQL入门-续MySQL之数据查询操作MySQL其他知识点 php语言基础入门认识PHPPHP的工作流程安装PHP环境认识一个PHP程序PHP基础知识点进入正题 PHP与WEB交互PHP与MySQL交互总结 MySQL入门-续 MySQL之数据查询操作 WHERE 子句&#xff0c;条件限…

面向对象设计与分析40讲(20)消息驱动编程和事件驱动编程模型

文章目录 消息驱动编程事件驱动编程消息驱动和事件驱动的区别 消息驱动编程 消息驱动是一种编程模型&#xff0c;它基于事件和消息的传递来驱动程序的执行流程。在消息驱动的模型中&#xff0c;系统中的各个组件&#xff08;或对象&#xff09;通过发送和接收消息进行通信和协…

如何基于 ACK Serverless 快速部署 AI 推理服务

作者&#xff1a;元毅 随着 AI 浪潮的到来&#xff0c;各种 AI 应用层出不穷&#xff0c;众所周知 AI 应用对 GPU 资源强烈依赖&#xff0c;但 GPU 很昂贵&#xff0c;如何降低 GPU 资源使用成本成为用户首要问题。而 AI 与 Serverless 技术结合&#xff0c;完全可以达到按需使…

mysql中在有数据的表中新增一个主键处理方案

需求&#xff1a;因为业务需要修改表中原来的主键为新增的字段&#xff1b; 处理方案&#xff1a; 1、先将表名修改一下&#xff1b; 2、新增一个一样的表结构&#xff0c;表名与原表名一致&#xff0c;多了一个主键&#xff08;自增&#xff09;的字段&#xff1b; 3、把原…

ArcGIS入门操作手册

一.ArcGIS安装过程 参考本人博客&#xff1a;保姆级Arcgis安装图文安装教程_追忆苔上雪的博客-CSDN博客 二.ArcGIS植被指数计算 (1)使用工具&#xff1a;栅格计算器 打开软件&#xff0c;右侧搜索栅格计算器打开&#xff0c;要是搜索栏不小心叉掉找不到了&#xff0c;可以通…

cmake-ibmtpm1682编译

1、error Ossl library is using different radix 异常解决 RADIX_BITS由 64改成32 --whole-archive CMakeFiles\ibm-tpm-my.dir/objects.a -Wl, --no-whole-archive CMakeFiles\ibm-tpm-my.dir\linklibs.rsp CMake中的 --whole-archive以及–no-whole-archive两者都是编译器…

【数据库】Sql Server可视化工具SSMS条件和SQL窗格以及版本信息

2023年&#xff0c;第34周&#xff0c;第1篇文章。给自己一个目标&#xff0c;然后坚持总会有收货&#xff0c;不信你试试&#xff01; SQL SERVER 官方本身就有数据库可视化管理工具SSMS&#xff0c;所以大部分都会使用SSMS。以前版本是直接捆绑&#xff0c; 安装完成就自带有…

idea入门与maven配置的一些介绍

idea入门与maven配置的一些介绍 1.确保Java和Maven已安装2.创建一个新的Maven项目3.导航到要创建项目的目录配置Maven4.配置项目的pom.xml文件5.配置其他Tomcat和设置jdk6.构建和运行项目 关于idea入门基础配置 步骤1&#xff1a;安装IntelliJ IDEA 首先&#xff0c;从IntelliJ…

Python-OpenCV中的图像处理-GrabCut算法交互式前景提取

Python-OpenCV中的图像处理-GrabCut算法交互式前景提取 Python-OpenCV中的图像处理-GrabCut算法交互式前景提取 Python-OpenCV中的图像处理-GrabCut算法交互式前景提取 cv2.grabCut(img: Mat, mask: typing.Optional[Mat], rect, bgdModel, fgdModel, iterCount, mode…) img…

vmalert集成钉钉告警

vmalert通过在alert.rules中配置告警规则实现告警&#xff0c;告警规则语法与Prometheus兼容&#xff0c;依赖Alertmanager与prometheus-webhook-dingtalk实现钉钉告警&#xff0c;以下步骤&#xff1a; 1、构建vmalert 从源代码构建vmalert&#xff1a; git clone https://…

TCGA数据下载推荐:R语言easyTCGA包

#使用easyTCGA获取数据 #清空 rm(listls()) gc() # 安装bioconductor上面的R包 options(BioC_mirror"https://mirrors.tuna.tsinghua.edu.cn/bioconductor") if(!require("BiocManager")) install.packages("BiocManager") if(!require("TC…

制作自己的数据集并训练的YOLOv8模型

文章目录 1.制作数据集1.1 下载安装labelImg1.2 开始制作数据集 准备训练分配数据集训练测试 1.制作数据集 1.1 下载安装labelImg LabelImg源码 下载好源码并 cd到源码路径下 安装需要的环境 # 安装lxml pip install lxml# 安装pyqt5 pip install pyqt5# 将"resources…