生存分析

article/2025/10/27 0:24:59

  • 1 KM法计算生存率——非参数模型
  • 2 log-rank秩检验比较不同组的生存率
    • 2.1 输入数据
    • 2.2 建立假设
    • 2.3 log-rank秩精确性检验
    • 2.4 可视化

1 KM法计算生存率——非参数模型

乘积极限法适用于离散数据,它用于建立时刻 t t t 上的生存函数,根据 t t t 时刻之前的所有时期的生存概率的乘积,来估计时刻 t t t 的生存函数 S ( t ) S(t) S(t)和它的标准误 S E ( S ( t ) ) SE(S(t)) SE(S(t))
生存概率 P :观察对象活过某个时期的概率。
P = 1 − d / n P =1-d/n P=1d/n

  • d d d :期内死亡人数
  • n n n:期初观察人数

生存率 S ( t i ) \bf{S(t_i)} S(ti):观察对象从起始时刻 t 0 t_0 t0 t i t_i ti 时刻活过多个时期的概率。
S ^ ( t i ) = ∏ j = 1 i p j , j = 1 , 2 , ⋯ , i \hat{S}(t_i)=\prod_{j=1}^ip_j,\quad j=1,2,\cdots,i S^(ti)=j=1ipj,j=1,2,,i
生存率标准误:
S E ( S ^ ( t i ) ) = S ^ ( t i ) ∑ j = 1 i d j n j ( n j − d j ) , j = 1 , 2 , ⋯ , i SE(\hat{S}(t_i))=\hat{S}(t_i)\sqrt{\sum_{j=1}^i\frac{d_j}{n_j(n_j-d_j)}}\quad ,\quad j=1,2,\cdots,i SE(S^(ti))=S^(ti)j=1inj(njdj)dj ,j=1,2,,i
置信区间: 通常取 95% 置信区间 u α / 2 = 1.96 u_{\alpha/2}=1.96 uα/2=1.96
S ^ ( t i ) ± u α / 2 ⋅ S E ( S ^ ( t i ) ) \hat{S}(t_i)\pm u_{\alpha/2}\cdot SE(\hat{S}(t_i)) S^(ti)±uα/2SE(S^(ti))
实例:

  • 使用肺癌患者数据集,计算生存率。

    library(DT)
    library(survival) 
    datatable(lung)
    

    在这里插入图片描述
    数据集中time表示生存时间,status表示生存状态,1表示存活,为截尾数据,2表示死亡,为完整数据。
    用 survival 包来进行生存分析,survfit()函数计算生存率,surv()函数对生存时间进行排序,并将存活的患者生存时间改为截尾数据,用 + 号表示。

    fit = survfit(Surv(time,status)~1,data = lung) # ~1表示不对数据分组
    summary(fit)
    

    部分结果:
    在这里插入图片描述
    上图中:

    • time:生存时间
    • n.risk:期初观察人数
    • n.event:期内死亡人数
    • survival:生存率
    • std.err:生存率标准误
    • lower 95% CI:95% 置信区间下界
    • upper 95% CI:95% 置信区间上界

    可视化:

    library(survminer)
    ggsurvplot(fit,lung)
    

在这里插入图片描述

2 log-rank秩检验比较不同组的生存率

2.1 输入数据

取 lung 数据集前 20 行作为输入数据。

df = lung[1:20,]
head(df)
 inst time status age sex ph.ecog ph.karno pat.karno meal.cal wt.loss
1    3  306      2  74   1       1       90       100     1175      NA
2    3  455      2  68   1       0       90        90     1225      15
3    3 1010      1  56   1       0       90        90       NA      15
4    5  210      2  57   1       1       90        60     1150      11
5    1  883      2  60   1       0      100        90       NA       0
6   12 1022      1  74   1       1       50        80      513       0

2.2 建立假设

H 0 H_0 H0: 男性患者和女性患者的生存率相同
H 1 H_1 H1: 男性患者和女性患者的生存率不同
检验水准: α = 0.05 \alpha = 0.05 α=0.05

2.3 log-rank秩精确性检验

序号时间(天)MaleFemaleall_nall_d
n 1 i n_{1i} n1i d 1 i d_{1i} d1i T 1 i T_{1i} T1i n 2 i n_{2i} n2i d 2 i d_{2i} d2i T 2 i T_{2i} T2i n i n_i ni d i d_i di
1611500.75510.25201
2711510.7894737400.2105263191
3881410.7777778400.2222222181
41441310.7647059400.2352941171
51661210.75400.2500000161
61701110.7333333400.2666667151
72101010.7142857400.2857143141
8218910.6923077400.3076923131
9306810.6666667400.3333333121
10310700.6363636410.3636364111
11361700.7000000310.3101
12455710.7777778200.222222291
13567610.7500000200.250000081
14613510.7142857200.285714371
15654400.6666667210.333333361
16707410.8000000100.200000051
17728300.7500000110.2541
1888331100031
19101020000020
20102220000020

卡方计算:
V k i = n k i n i ( 1 − n k i n i ) ( n i − d i n i − 1 ) d i χ 2 = 2 ⋅ ( ∑ d k i − ∑ T k i ) 2 ∑ V k i V_{ki}=\frac{n_{ki}}{n_i} (1-\frac{n_{ki}}{n_i}) (\frac{n_i-d_i}{n_i-1}) d_i \\[3ex] \chi^2=2\cdot \frac{(\sum{d_{ki}}-\sum{T_{ki}})^2}{\sum{V_{ki}}} Vki=ninki(1ninki)(ni1nidi)diχ2=2Vki(dkiTki)2

n1_i = c(15,15,14,13,12,11,10,9,8,7,7,7,6,5,4,4,3,3,2,2)
n_i = c(rev(2:20),2)
d_i = c(rep(1,18),rep(0,2))
T1_i = d_i/n_i*n1_i
d1_i = c(0,1,1,1,1,1,1,1,1,0,0,1,1,1,0,1,0,1,0,0)sum1 = (sum(d1_i)-sum(T1_i))^2
sumVk = sum((n1_i/n_i)*(1 - n1_i/n_i) * (n_i- d_i)/(n_i-1) * d_i)chisq = 2*sum1/sumVk
chisq
[1] 0.1138165

经过计算: χ 2 ≈ 0.1 \chi^2 \approx 0.1 χ20.1 ,查表得 P ≈ 0.8 P\approx 0.8 P0.8
通常用 survival 包中 survdiff()函数计算 P P P值:

survdiff(Surv(time,status)~sex,data = df)
Call:
survdiff(formula = Surv(time, status) ~ sex, data = df)N Observed Expected (O-E)^2/E (O-E)^2/V
sex=1 15       13    13.43    0.0140    0.0569
sex=2  5        5     4.57    0.0412    0.0569Chisq= 0.1  on 1 degrees of freedom, p= 0.8 

2.4 可视化

fit = survfit(Surv(time,status)~sex,data = df)
library(survminer)
ggsurvplot(fit, data = df,#conf.int = TRUE,pval = TRUE,                     # logrank秩检验fun = "pct",                     # 生存率转换为百分数risk.table = TRUE,               # 添加风险表size = 1,linetype = "strata",palette = c("#E7B800","#2E9FDF"),legend = "bottom",legend.title = "Sex",legend.labs = c("Male","Female")) # 1代表Male,2代表Female

在这里插入图片描述
从上图可以看出男性和女性患者生存率并没有区别。

本博客内容将同步更新到个人微信公众号生信玩家。欢迎大家关注~~~
在这里插入图片描述


http://chatgpt.dhexx.cn/article/Qy42L9MH.shtml

相关文章

8.常用统计分析方法——生存分析

目录 生存分析基本概念 生存率估计 1. 乘积极限法 2. 寿命表法 3. 生存曲线 生存曲线比较 COX比例风险回归模型 1. 建立COX回归模型 2. 比例风险假定的检验 3. 生存预测 生存分析基本概念 logistic回归中因变量是终点事件发生与否,而生存分析则关注的是终…

生存分析(1)

一、基本概念和名词解释 1.生存分析(survival analysis) 是研究生存现象和响应时间数据及其统计规律的一门学科。 是将事件的结果(终点事件)和出现这一结果所经历的时间结合起来分析的一种统计分析方法。 生存分析与其他多因素…

什么是生存分析(survival analysis)?

什么是生存分析(survival analysis)? 用来研究生存时间的分布规律以及生存时间和相关因索之间关系的一种统计分析方法 基本概念 失效事件(Failure Event):常被简称为事件,研究者规定的终点结局,医学研究中可以是患者死亡,也可以是疾病的发生、某种治疗的反应、疾病的…

生存分析原理简明教程 单因素生存分析 Kaplan-Meier、LogRank 只能针对单一的变量进行 多因素cox回归分析

一、生存分析 狭义上来说,生存分析用来分析病人的生存和死亡情况。广义上讲的是事件是否发生。在这里就用是否死亡来代替。一般来说,生存的数据一般有两个变量,一个事件是否发生,病人是否死亡,死亡为1,未死…

IRIS 2021 技术文档 First Look 25 -- 数据库加密

本文档向您介绍 InterSystems IRIS数据平台如何处理数据库加密,这是所有企业安全战略的重要组成部分。 本文档介绍了数据库加密的情况,并引导您完成一些与创建加密数据库有关的初始任务。一旦您完成了本指南,您将创建一个密钥文件&#xff0c…

开始使用了

开始了 今天开始用,请大家指教 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown…

Oracle LiveLabs实验:DB Security - Key Vault

概述 此实验关于Oracle Key Vault。 此实验申请地址在这里,时间为55分钟。 实验帮助在这里。 实验生成需要15分钟左右,最终会生成2个虚机,以下为我的专属配置: 129.146.74.138 DBSEC-LAB (数据库主机)…

idea 启动项目找不到程序包,提示程序包不存在

我是一个父子工程项目,项目在编译,build,rebuild的时候都没用报错,但用idea启动的时候就报错 error:找不到该程序包.或者类… 在网上找了很多方法都没有解决:reimport maven ,rebuild 都不行 .maven实际是完整的,本地也有这个jar包. 现在我在网上找了几种解决方法: 1.是因为id…

docker-compose vmwkmip

vSphere 6.5 中引入了许多 vSphere 安全增强功能,包括备受期待的虚拟机加密功能。为了能够使用新的虚拟机加密功能,您需要先设置一个 密钥管理互操作性协议 (KMIP)服务器(如果您还没有)并将其与您的 vCenter Server 相关联。有很多 3rd 方供应商提供与新的 VM 加密功能互操…

运维实战:Xtrabackup备份与还原

目录 运维实战:percona-xtrabackup备份与还原 一、工作原理 二、版本区别 三、Xtrabckup特点及限制 3.1 特点 3.2 限制 四、xtrabckup安装(mariadb5.5 xtrabckup 2.4) 4.1 rpm安装xtrabackup 4.2 xtrabackup的rpm包含哪些内容 4.2…

FileNotFoundException: jdcbc.properties (系统找不到指定的文件) 该问题的解决方法

一般遇到这种问题都是我们将properties文件创建在模块下面了, 这时候,由于默认访问路径在项目下面, 所以此时我们应该加上当前模块的路径, 即可解决这个问题

pykmip测试

开源路径:https://github.com/OpenKMIP 创建key并加解密 import ssl from kmip.pie.client import ProxyKmipClient, enums from kmip.pie import objectsclient ProxyKmipClient(hostname127.0.0.1,port5696,cert/home/nxy/PyKMIP/bin/client_cert.pem,key/home/nxy/PyKMIP…

开始使用KMIP4J

开始使用KMIP4J 密钥管理互操作协议(KMIP)的开源实现 KMIP定义了密钥生命周期管理系统(KLMS)和其客户之间的沟通。一些公司已经使用专有的KMIP实现,这些KMIP实现使用不同的编程语言,但是到现在为止&#xf…

KMIP4J数据处理流程

Kmip1.0测试环境介绍:http://blog.csdn.net/lihuayong/article/details/25098093 1 测试环境整体结构 系统的结构是基于客户端-服务器体系结构(见下图)。红色水平虚线显示了KMIP1.0库和测试环境的边界。实现的测试环境由一个客户端和服务器端…

KMIP1.0环境搭建

开发环境:MyEclipse 10 JDK:jdk1.7 Tomcat:apache-tomcat-7.0.6 数据库:H2嵌入式数据库 下载java 实现的KIMP1.0版本的源码包和相关的jar包文件。 下载地址:http://sourceforge.net/projects/kmip4j/files/KMIP4J-V1.0…

kmip4j_KMIP4J入门

kmip4j 有关管理数据安全性和合规性的电子书 组织难以确定多个合规性任务的优先级,并创建数据安全策略来满足这些要求并保护其最敏感的数据。 您可以下载eBook, 管理合规性并保护企业数据 ,以了解在企业数据保护策略中有效管理合规性要求和保护数据的六个基本步骤。 “加密…

KMIP协议/TTLV格式解码

文章目录 KMIP协议官方文档手动解析TTLV格式请求响应 自动解析解析请求和响应 KMIP协议官方文档 KMIP协议官方文档:http://docs.oasis-open.org/kmip/spec/ 打开是这样的,在我写这篇文章的时候 KMIP更新到了1.4版本 以下KIMIP1.0协议为例: …

导入pfx证书

本文分享从Micrsoft Manange Console(简写为 MMC)中导入PFX证书的内容,您可以按住“Windows R”,从Run对话框中输入mmc,打开MMC界面。 一:添加管理单元(snap-in) 从File主菜单中选…

关于pfx证书和cer证书

Pfx证书,同时包含了公钥信息和私钥信息(用私钥加密进行签名证明是本人签名,用公钥解密对签名进行进行验证,证明签名的合法性) PFX也称为PKCS#12(Public Key Cryptography Standards #12,公钥密码技术标准#…

OpenSSL 生成pfx

OpenSSL 生成pfx Window需要安装OpenSSL(需要下载),Linux自带OpenSSL工具(无需安装) Window下载地址: 1. 官网 2. 上传了一份到csdn Window 命令 # 生成私钥 "D:\Program Files\OpenSSL-Win64\bi…