基于R语言逆概率加权(IPTW)并行生存曲线分析
逆概率加权法最早由 Horvitz和Thompson提出,即对每个可观测的yi的概率取倒数,作为被观测的 yi 的权重,修正由缺失数据或有偏抽样带来的估计偏差.IPTW 是减少多组观察性数据间混杂偏倚的有效方法, 在处理多组间变量混杂偏倚中起到了重要作用。简单来说,就是把许多协变量和混杂因素打包成一个概率并进行加权,这样的话,我只用计算它的权重就可以了,方便了许多。
经我自己总结,做R语言逆概率加权(IPTW)需要以下几步:
- 导入数据,整理好数据
- 把需要比较的变量拿出来做结果变量,其他的变量做协变量,组成logistic回归方程,生成预测值
- 通过预测值计算出拟概率权重
- 建立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)并行生存曲线分析相关推荐
- 基于R语言3组以上倾向评分逆概率加权(IPTW)
基于 PS (倾向评分)的IPTW 法首先由Rosenbaum作为一种以模型为基础的直接标准化法提出,属于边际结构模型.简单来说,就是把许多协变量和混杂因素打包成一个概率并进行加权,这样的话,我只用计 ...
- 基于R语言混合效应模型(mixed model)案例研究
全文链接: http://tecdat.cn/?p=2596 在本文中,我们描述了灵活的竞争风险回归模型.回归模型被指定为转移概率,也就是竞争性风险设置中的累积发生率(点击文末"阅读原文&q ...
- 基于R语言的聚类分析(k-means,层次聚类)
今天给大家展示基于R语言的聚类,在此之前呢,首先谈谈聚类分析,以及常见的聚类模型,说起聚类我们都知道,就是按照一定的相似性度量方式,把接近的一些个体聚在一起.这里主要是相似性度量,不同的数据类型,我们 ...
- 基于R语言的Copula变量相关性分析及应用
在工程.水文和金融等各学科的研究中,总是会遇到很多变量,研究这些相互纠缠的变量间的相关关系是各学科的研究的重点.虽然皮尔逊相关.秩相关等相关系数提供了变量间相关关系的粗略结果,但这些系数都存在着无法克 ...
- 基于R语言的Meta分析【全流程、不确定性分析】方法与Meta机器学习技术应用
Meta分析是针对某一科研问题,根据明确的搜索策略.选择筛选文献标准.采用严格的评价方法,对来源不同的研究成果进行收集.合并及定量统计分析的方法,最早出现于"循证医学",现已广泛应 ...
- 基于R语言极值统计学及其在相关领域中的应用
受到气候变化.温室效应以及人类活动等因素的影响,自然界中极端高温.极端环境污染.大洪水和大暴雨等现象的发生日益频繁:在人类社会中,股市崩溃.金融危机等极端情况也时有发生:今年的新冠疫情就是非常典型的极 ...
- 基于R语言的多元线性回归--我国经济增长的定量研究
基于R语言的多元线性回归--我国经济增长的定量研究 一.实验介绍 1.1 实验内容 经济增长一直以来都是我国宏观经济政策的目标之一,研究影响经济增长的因素对促进我国经济快速发展有着重要意义.本实验运用 ...
- 概率图模型基于R语言(一)贝叶斯模型
概率图模型基于R语言[一]贝叶斯模型 条件概率 贝叶斯模型 R 参考书:<概率图模型基于R语言> 记录一些代码和自己的想法和目前版本代码的写法(书中有一些无法用了) 随时更新 条件概率 熟 ...
- canoco5主成分分析步骤_基于R语言的主成分分析
基于R语言的主成分分析 加入的SPSS群里有人问,怎么用SPSS进行主成分分析.确实没有注意到这种操作.很好奇,于是翻了翻孙振球的<医学统计学>,发现主成分分析这一块,竟使用了SAS!后来 ...
最新文章
- HTML基础 --- HTML简介
- Python3--baby网的数据爬取
- Java连接open fire_java – 为什么我不能连接到openfire服务器?
- VTK:可视化之StructuredDataTypes
- DAO模式多表联查案例
- iis服务器显示http1.1,IIS服务器“500”内部错误 HTTP/1.1 新建会话失败
- SpringBoot安装和创建简单的Web应用
- 微信分享JS-SDK示例页面
- Block 在不同情况下的变量存储区域
- 【拯救赵明】UTM解决网络安全大问题
- c语言程序设计基础第三版答案,清华大学出版社-图书详情-《C语言程序设计上机指导与习题解答(第3版)》...
- yapi接口管理工具
- android的sd卡分区,超强Android系统SD卡分区教程!
- 教职工使用计算机管理制度,关于教师办公室电脑使用与管理的规章制度
- jQuery插件应用之--- 选项卡插件的使用(10级学员 韩晓爽课堂笔记)
- 住宅IP,家庭宽带IP,数据中心IP,机房IP是什么,他们有什么区别及应用?
- 今天是没有python的一天(大物实验‘利用牛顿环测量曲率半径’报告和大物复习)
- shp文件转换到CAD dwg,dxf
- java mail实现smtp登录验证
- MacOS系统下 adb 调试电视相关(homebrew安装 adb)
热门文章
- 记C# 调用虹软人脸识别 那些坑
- 智能家居(7) —— 人脸识别 翔云平台编程使用(编译openSSL支持libcurl的https访问、安装SSL依赖库openSSL)
- 现代企业环境中的DCS(“分布式控制系统”)和SCADA(“站点控制和数据采集”)...
- Java面试题库,2021Java大厂面试真题
- 无人机影像的纹理特征提取【ENVI+Python】--纯操作无原理
- 计算机网络期末部分题型
- 热敏电阻(NTC)温度计算,C语言
- 可调电阻封装图_常用电阻器介绍大全
- mysql bdb_深入了解mysql它BDB系列(1)---BDB基础知识
- 以太坊go-ethereum客户端查询交易列表(二)