r - 具有逆倾向治疗加权的 Cox 回归
问题描述
一个正常的 Cox 回归如下:
coxph(formula = Surv(time, status) ~ v1 + v2 + v3, data = x)
我已经用随后的倾向得分计算了逆倾向治疗加权 (IPTW) 得分。
倾向得分可以计算如下:
ps<-glm(treat~v1+v2+v3, family="binomial", data=x)
用于 IPTW 的权重计算如下:
weight <- ifelse (treat==1, 1/(ps), 1/(1-ps))
数据集中的每个主题都可以使用上述方法进行加权(每个主题都得到一个特定的权重,如上计算),但我认为没有地方可以将权重放在“正常”Cox 回归公式中。
是否有 Cox 回归公式,我们可以在其中评估每个受试者的计算权重,以及这些计算使用什么 R 包或代码?
解决方案
倾向得分加权法 (逆概率加权法)R用于以下统计分析。
加载以下 R 包:
library(ipw) library(survival)
根据变量估计数据框 (base_model) 中每个 ID 的倾向得分。
倾向得分是在存在给定协变量 (v) 的情况下分配治疗的概率。如您的数据所示,
PS estimation ps_model <- glm(treatment~v1+v2+v3...., family = binomial, data = base_model) summary(ps_model) # view propensity score values pscore <- ps_model$fitted.values dataframe$propensityScore <- predict(ps_model, type = "response")
计算权重
#estimate weight for each patient base_model$weight.ATE <- ifelse((base_model$treatment=="1"),(1/base_model$propensityScore), (1/(1-base_model$propensityScore))) base_weight <- ipwpoint(exposure = treatment, family = "binomial", link="logit", numerator = ~1, denominator =~v1+v2+v3....vn, data = base_model, trunc=0.05) #truncation of 5% for few extreme weights if needed
生存分析:Cox 回归
#time to event analysis with weights HR5 <- coxph(Surv(time, event)~as.factor(treat_group), weights = weights.trunc, data = base_model) summary(HR5)
weights参数是根据之前的估计权重添加的。
- R 的钴或 tableOne 包将帮助您查看倾向得分加权之前和之后的特征平衡。
祝你好运!
推荐阅读
- python - 使用函数在 tkinter 的第二个窗口中创建一个按钮
- bash - 在bash中按日期时间格式排序
- apache-kafka - Kafka中的ExtractTopic转换
- mern - 如何使用 Mern 堆栈存储会话的服务器文件
- swift - 在 SwiftUI 视图中初始化惰性变量
- c++ - W10 线程排序服务
- git - InteliJ - 你可以添加一个 maven 依赖项目但留在不同的功能分支上吗?
- shell - Shell中的不同程序如何处理数据流中的不同列?
- c++ - 如何在 Visual Studio 中编译为单个可执行文件
- reactjs - 客户端(React)从服务器接收部分数据(Sequelize)