逆概率加权法最早由 Horvitz和Thompson提出,即对每个可观测的yi的概率取倒数,作为被观测的 yi 的权重,修正由缺失数据或有偏抽样带来的估计偏差.IPTW 是减少多组观察性数据间混杂偏倚的有效方法, 在处理多组间变量混杂偏倚中起到了重要作用。简单来说,就是把许多协变量和混杂因素打包成一个概率并进行加权,这样的话,我只用计算它的权重就可以了,方便了许多。


经我自己总结,做R语言逆概率加权(IPTW)需要以下几步:

  1. 导入数据,整理好数据
  2. 把需要比较的变量拿出来做结果变量,其他的变量做协变量,组成logistic回归方程,生成预测值
  3. 通过预测值计算出拟概率权重
  4. 建立COX回归方程,加入权重
    今天我们使用R语言来演示逆概率加权(IPTW)并行生存曲线分析,继续使用我们的乳腺癌数据(公众号回复:乳腺癌可以获得数据),可以做逆概率加权(IPTW)的R包很多,今天我们以survival包和RISCA包分别做演示
    首先导入包和导入数据
library(foreign)
library(RISCA)
library(survminer)
bc <- read.spss("E:/r/test/Breast cancer survival agec.sav",use.value.labels=F, to.data.frame=T)
bc <- na.omit(bc)


我们先来看看数据:
age表示年龄,pathsize表示病理肿瘤大小(厘米),lnpos表示腋窝淋巴结阳性,histgrad表示病理组织学等级,er表示雌激素受体状态,pr表示孕激素受体状态,status结局事件是否死亡,pathscat表示病理肿瘤大小类别(分组变量),ln_yesno表示是否有淋巴结肿大,time是生存时间,后面的agec是我们自己设定的,不用管它。

把分类变量转换成因子

bc$er<-as.factor(bc$er)
bc$pr<-as.factor(bc$pr)
bc$ln_yesno<-as.factor(bc$ln_yesno)
names(bc)

OK,整理好数据之后,假设我们想知道ln_yesno(表示是否有淋巴结肿大)对生存时间的影响。
为了好进行比较,我们先做下没有概率加权(IPTW)的COX回归模型,可以看到ln_yesno1为1.9851

fit=coxph(Surv(time,status) ~ ln_yesno+ age+er+pr+histgrad+pathsize,data=bc)
summary(fit)


绘制生存曲线图

fit1 <- survfit(Surv(time,status) ~ ln_yesno, data = bc)
plot(fit1, ylab="Confounder-adjusted survival",xlab="Time post-transplantation (years)", col=c(1,2), grid.lty=1)


也可以使用ggsurvplot函数绘图

ggsurvplot(fit1, data = bc)


进一步修饰一下,可以看出有淋巴转移的生存率明显要低

下面我们来进行逆概率加权
我们把ln_yesno作为结果变量, age、er、pr、histgrad、pathsize作为协变量组成logistic回归方程

pr<- glm(ln_yesno~ age+er+pr+histgrad+pathsize, data=bc,family=binomial(link = "logit"))

生成预测值

pr1<-pr$fitted.values

生成权重

W <- (bc$ln_yesno==1) * (1/pr1) + (bc$ln_yesno==0) * (1)/(1-pr1)

查看生成权重后模型, ln_yesno1为1.9525,和没有拟加权之前(1.9851 )结果有一点改变,但是改变不大,总体说明我们的结果是稳定的,可靠的

fit.IPTW=coxph(Surv(time,status) ~ ln_yesno+ age+er+pr+histgrad+pathsize,data=bc,weights=W)
summary(fit.IPTW)


生成权重后就可以用RISCA 包的ipw.survival函数可以进行加权并绘图了,和没有加权之前有一点点改变,红线稍微上移了一点

fit.ipw<-ipw.survival(times=bc$time, failures=bc$status,variable=bc$ln_yesno, weights=W)
plot(fit, ylab="Confounder-adjusted survival",xlab="Time post-transplantation (years)", col=c(1,2), grid.lty=1)


也可以使用ggsurvplot函数绘图

fit2.ipw <- survfit(Surv(time,status) ~ ln_yesno, data = bc,weights = W)
ggsurvplot(fit2.ipw, data = bc)


OK,看着麻烦,其实很简单,主要就那几个步骤。

基于R语言逆概率加权(IPTW)并行生存曲线分析相关推荐

  1. 基于R语言3组以上倾向评分逆概率加权(IPTW)

    基于 PS (倾向评分)的IPTW 法首先由Rosenbaum作为一种以模型为基础的直接标准化法提出,属于边际结构模型.简单来说,就是把许多协变量和混杂因素打包成一个概率并进行加权,这样的话,我只用计 ...

  2. 基于R语言混合效应模型(mixed model)案例研究

    全文链接: http://tecdat.cn/?p=2596 在本文中,我们描述了灵活的竞争风险回归模型.回归模型被指定为转移概率,也就是竞争性风险设置中的累积发生率(点击文末"阅读原文&q ...

  3. 基于R语言的聚类分析(k-means,层次聚类)

    今天给大家展示基于R语言的聚类,在此之前呢,首先谈谈聚类分析,以及常见的聚类模型,说起聚类我们都知道,就是按照一定的相似性度量方式,把接近的一些个体聚在一起.这里主要是相似性度量,不同的数据类型,我们 ...

  4. 基于R语言的Copula变量相关性分析及应用

    在工程.水文和金融等各学科的研究中,总是会遇到很多变量,研究这些相互纠缠的变量间的相关关系是各学科的研究的重点.虽然皮尔逊相关.秩相关等相关系数提供了变量间相关关系的粗略结果,但这些系数都存在着无法克 ...

  5. 基于R语言的Meta分析【全流程、不确定性分析】方法与Meta机器学习技术应用

    Meta分析是针对某一科研问题,根据明确的搜索策略.选择筛选文献标准.采用严格的评价方法,对来源不同的研究成果进行收集.合并及定量统计分析的方法,最早出现于"循证医学",现已广泛应 ...

  6. 基于R语言极值统计学及其在相关领域中的应用

    受到气候变化.温室效应以及人类活动等因素的影响,自然界中极端高温.极端环境污染.大洪水和大暴雨等现象的发生日益频繁:在人类社会中,股市崩溃.金融危机等极端情况也时有发生:今年的新冠疫情就是非常典型的极 ...

  7. 基于R语言的多元线性回归--我国经济增长的定量研究

    基于R语言的多元线性回归--我国经济增长的定量研究 一.实验介绍 1.1 实验内容 经济增长一直以来都是我国宏观经济政策的目标之一,研究影响经济增长的因素对促进我国经济快速发展有着重要意义.本实验运用 ...

  8. 概率图模型基于R语言(一)贝叶斯模型

    概率图模型基于R语言[一]贝叶斯模型 条件概率 贝叶斯模型 R 参考书:<概率图模型基于R语言> 记录一些代码和自己的想法和目前版本代码的写法(书中有一些无法用了) 随时更新 条件概率 熟 ...

  9. canoco5主成分分析步骤_基于R语言的主成分分析

    基于R语言的主成分分析 加入的SPSS群里有人问,怎么用SPSS进行主成分分析.确实没有注意到这种操作.很好奇,于是翻了翻孙振球的<医学统计学>,发现主成分分析这一块,竟使用了SAS!后来 ...

最新文章

  1. HTML基础 --- HTML简介
  2. Python3--baby网的数据爬取
  3. Java连接open fire_java – 为什么我不能连接到openfire服务器?
  4. VTK:可视化之StructuredDataTypes
  5. DAO模式多表联查案例
  6. iis服务器显示http1.1,IIS服务器“500”内部错误 HTTP/1.1 新建会话失败
  7. SpringBoot安装和创建简单的Web应用
  8. 微信分享JS-SDK示例页面
  9. Block 在不同情况下的变量存储区域
  10. 【拯救赵明】UTM解决网络安全大问题
  11. c语言程序设计基础第三版答案,清华大学出版社-图书详情-《C语言程序设计上机指导与习题解答(第3版)》...
  12. yapi接口管理工具
  13. android的sd卡分区,超强Android系统SD卡分区教程!
  14. 教职工使用计算机管理制度,关于教师办公室电脑使用与管理的规章制度
  15. jQuery插件应用之--- 选项卡插件的使用(10级学员 韩晓爽课堂笔记)
  16. 住宅IP,家庭宽带IP,数据中心IP,机房IP是什么,他们有什么区别及应用?
  17. 今天是没有python的一天(大物实验‘利用牛顿环测量曲率半径’报告和大物复习)
  18. shp文件转换到CAD dwg,dxf
  19. java mail实现smtp登录验证
  20. MacOS系统下 adb 调试电视相关(homebrew安装 adb)

热门文章

  1. 记C# 调用虹软人脸识别 那些坑
  2. 智能家居(7) —— 人脸识别 翔云平台编程使用(编译openSSL支持libcurl的https访问、安装SSL依赖库openSSL)
  3. 现代企业环境中的DCS(“分布式控制系统”)和SCADA(“站点控制和数据采集”)...
  4. Java面试题库,2021Java大厂面试真题
  5. 无人机影像的纹理特征提取【ENVI+Python】--纯操作无原理
  6. 计算机网络期末部分题型
  7. 热敏电阻(NTC)温度计算,C语言
  8. 可调电阻封装图_常用电阻器介绍大全
  9. mysql bdb_深入了解mysql它BDB系列(1)---BDB基础知识
  10. 以太坊go-ethereum客户端查询交易列表(二)