如何在R中实现IPTW队列的加权竞争风险分析
R实现IPTW加权竞争风险分析及加权CIF绘制方案
核心原理
cmprsk包原生函数不支持传入权重参数,你可以使用经方法学验证的riskRegression包完成加权竞争风险分析,全程无需调用SAS或Stata,完全基于R环境实现。
操作步骤
- 前置准备:确保你的数据集已包含4类核心变量:随访时间变量、结局变量(0=删失,1=目标事件,2=竞争事件)、分组变量、IPTW计算得到的权重变量
- 安装加载依赖包,运行以下代码:
# 首次使用需先安装 install.packages(c("survival", "riskRegression", "ggplot2")) # 加载包 library(survival) library(riskRegression) library(ggplot2)
- 拟合加权原因特异性Cox模型,直接传入IPTW权重:
# 替换your_data为你的数据集名称,替换括号内的变量名为你实际的变量名 weighted_csc_model <- CSC(Hist(随访时间, 结局变量) ~ 分组变量, data = your_data, weights = 你的IPTW权重变量名)
- 计算加权累积发生率(CIF):
# cause参数填你要统计的目标事件对应的编码,此处以1为例 weighted_cif <- predictRisk(weighted_csc_model, newdata = your_data, cause = 1)
- 绘制加权CIF曲线:
# 基础可视化,可根据需求调整配色、坐标轴标签等参数 plot(weighted_csc_model, cause = 1, xlab = "随访时间", ylab = "目标事件累积发生率", col = c("#E41A1C", "#377EB8"), legend = TRUE, legend.title = "分组")
注意事项
- 若你使用的是归一化IPTW权重,建议通过自助法(Bootstrap)重采样计算可信区间,避免模型默认输出的标准误偏小
- 若你习惯cmprsk包的分析逻辑,也可以手动将IPTW权重乘以每个观测的事件贡献值,再输入cmprsk的计算函数,结果和上述方法一致,但
riskRegression的封装方法更简便,出错概率更低
内容的提问来源于stack exchange,提问作者张博文
相关产品推荐
相关产品推荐

