R语言生存分析模型因果分析:非参数估计、IP加权风险模型、结构嵌套加速失效(AFT)模型分析流行病学随访研究数据
最近我们被客户要求撰写关于生存分析的研究报告,包括一些图形和统计输出。理解世界,我们可以从相关性的角度去描述,统计,机器学习,很多问题都是从相关的角度去描述的。我们去构建一个模型,不管是统计机器学习模型,还是深度学习模型,本质上是构建一个复杂映射。从特征到标签的一个映射,这个映射是有用的,但不完全有用。
相关视频:R语言生存分析原理与晚期肺癌患者分析案例
R语言生存分析Survival analysis原理与晚期肺癌患者分析案例
,时长08:41
因果分析
我们在这里用一个隐喻,下雨,来描述causal 和relevance。我们可以构建一个关于预测明天是否下雨的模型,从搜集到的大量特征,以及历史的下雨结果最为标签,构建模型。不管准确率多少,我们用这样一个模型能够预测明天是否能够下雨。
但是,我们很多时候要的不仅仅是预测,而是需要改变现状,例如沙漠中,我们想要哪些因素改变了,能够导致下雨。这就涉及到因果推断, causal inference 。
因果生存分析
在报告随机实验的结果时,除了意向治疗效应外,研究人员通常选择呈现符合方案效应。然而,这些符合方案的影响通常是回顾性描述的,例如,比较在整个研究期间坚持其指定治疗策略的个体之间的结果。这种对符合方案效应的回顾性定义经常被混淆,并且无法进行因果解释,因为它遇到了治疗混杂因素。
我们的目标是概述使用逆概率加权对生存结果的因果推断。这里描述的基本概念也适用于其他类型的暴露策略,尽管这些可能需要额外的设计或分析考虑。
生存曲线的非参数估计
# 对数据进行一些预处理
ifelse(nes$death==0, 120, (ns$yrh-83)*12+nhefs$moh) # yrt从83到92不等
summary(survtime)
survdiff(Surv(srtm, dah) ~ qmk, data=nes)
fit <- survfit(Surv(rvie, dth) ~ sk, data=ns)
ggsurvplot(fit
通过风险模型对生存曲线进行参数化估计
# 创建月数据efsurv$ent <- ifelse(nhfs.rv$time==nhfs.urv$srvme-1 & nhf.srv$death==1, 1, 0)# 拟合参数性风险模型
haads.el <- glm(event==0 ~ qs
#对每个人月的估计(1-风险)的分配 */
qk0$pnoevt0 <- predict(hardoel, mk0, type="response")# 计算每个人月的生存率
qm0$uv0 <- cumprod(qm0$pnoet0)# 一些数据管理来绘制估计的生存曲线
hadgrh$suvdff <- haardsgph$suv1-hardgrph$srv0# 绘制
ggplot(hads.aph
通过IP加权风险模型估计生存曲线
# 估计ip权重的分母nef$p.mk <- predict(enm, nes, type="response")# 估计ip权重的分子
p.m <- glm(qk ~ 1, data=nefs, family=binomial() )
hfs$pnsm <- predict(p.m, nes, type="response")# 估计权重的计算
nef$s.<- ifelse(hes$qsk==1, nefs$pqmk/nhes$d.qmk,(1-nfs$p.smk)/(1-nef$pdqk))
summary(nhs$swa)
# 创建人月数据
nhfsw <- exnRos(nhfs, "srvtime", drop=F)
nh.pw$ime <- sqee(rle(nefs.ipw$seqn)$lengths)-1
nhfipw$evnt <- ifele(nhf.iw$tie=nhefs.i$rv1 &) nhfs.w$eath==1, 1, 0)
nhefpw$tmesq <- nhfs.pw$me^2# 拟合加权风险模型
imel <- glm(eve
# 创建生存曲线
ipw.k0 <- data.frame(cbind(seq(0, 119),0, (seq(0, 119))^2))# 对每个人月的估计(1-危险)的分配 */
iwqk0$p.nvnt0 <- predict(ipwdl, pwm0, type="response")
iwsk1$povt1 <- predict(ip.el, ipmk1, type="response")# 计算每个人月的生存率
ip.qs0$srv0 <- cumprod(ipwsk0$p.nevnt0)
ip.qm1$suv1 <- cumprod(iwqsk1$p.nvent1)# 一些数据管理来绘制估计的生存曲线
ipwgph <- merge(ip.qmk0,pwsm1, by=c("time", "timesq") )
ipw.aph$surff <-ipw.ah$sv1-pwgrph$surv0# 绘制
ggplot(ip.gph, ae
通过g-formula估计生存曲线
# 带有协变量的风险模型的拟合情况g.mo <- glm(event==0 ~ qsm
# 创建数据集,包括每个治疗水平下的所有时间点
# 每个人在每个治疗水平下的所有时间点
gf.qmk <- exanos(nfs, cunt=120, cotis.cl=F)
gf.qm0$te <- rep(q(0, 119), now(nhf))
gqm0$tesq <- gqk0$tie^2
gqsk0$qmk <- 0gfqsk1 <- gf.qm0
gf.sk1$mk <- 1gfqk0$p.vnt0 <- predict(g.mdel, g.qk0, type="response")
gfqk1$p.eent1 <- predict(gf.mol, gf.mk1, type="response")
# 绘图
ggplot(gf.graph
通过结构嵌套AFT模型估计中位生存时间比率
# 对数据进行一些预处理#
modelA <- glm(qsmk ~ sex +
nhs$pqsk <- predict(moeA, nhe, type="response")
d <- nes[!is.na(hf$surve),] # 只选择有观察到的死亡时间的人# 定义需要被最小化的估计函数
smf <- function(pi){# 创建delta指标if (psi>=0){delta <- ifelse1, 0)} else if (psi < 0) {dlta <- ifelse}# 协方差sgma <- t(at) %*% smatif (sa == 0){siga <- 1e-16}etm <- svl*solve(sia)*t(sal)return(etmeq)
}res <- optimize
# 使用简单的分割法找到95%置信度下限和上限的估计值
frcf <- function(x){return(smef(x) - 3.84)
}if (bfuc < 3.84){# 找到sumeef(x)>3.84的估计值# 95%CI的下限while (tetlw < 3.84 & cnlow < 100){psl <- pilw - increteslow <- sumeef(pslw)cunlow <- cunlow + 1}# 95%CI的上限值while (tsigh < 3.84 & onhih < 100){phigh <- pshih + inremtestig <- sumeef(pihigh)cunhgh <- cuntigh + 1}# 使用分切法进行更好的估计if ((tstig > 3.84) & (tslw > 3.84)){# 分割法cont <- 0dif <- right - leftwhile {test <- fmiddle * fleftif (test < 0){} else {}diff <- right - left}psi_high <- middleobjfunc_high <- fmiddle + 3.84# 95%CI的下限left <- psilowwhile(!){test <- fmiddle * fleftif (test < 0)
R语言生存分析模型因果分析:非参数估计、IP加权风险模型、结构嵌套加速失效(AFT)模型分析流行病学随访研究数据相关推荐
- R语言生存分析模型简介及survival包实现实战:基于survival包lung数据集
R语言生存分析模型简介及survival包实现实战:基于survival包lung数据集 目录 R语言生存分析模型简介及survival包实现实战 #survival包简介
- R语言生存分析数据分析可视化案例
目标 本文的目的是对如何在R中进行生存分析进行简短而全面的评估.关于该主题的文献很广泛,仅涉及有限数量的(常见)问题.最近我们被客户要求撰写关于生存分析的研究报告,包括一些图形和统计输出. 可用的R包 ...
- 视频|分类模型评估:精确率、召回率、ROC曲线、AUC与R语言生存分析时间依赖性ROC实现
最近我们被客户要求撰写关于分类模型的研究报告,包括一些图形和统计输出. 本文将帮助您回答以下问题: ROC曲线是什么? 曲线下的面积是多少? 二元分类的决策阈值是多少? 分类模型可接受的 AUC值是多 ...
- R语言生存分析(survival analysis)与生存资料有关的概念详解
R语言生存分析(survival analysis)与生存资料有关的概念详解 目录 R语言生存分析(survival analysis)与生存资料有关的概念详解 #生存分析
- R语言生存分析寿命表(life table)实战案例:比较两种药物治疗感染患者的生存时间
R语言生存分析寿命表(life table)实战案例:比较两种药物治疗感染患者的生存时间 目录
- R语言生存分析COX回归分析实战:以乳腺癌数据为例
R语言生存分析COX回归分析实战:以乳腺癌数据为例 目录
- R语言生存分析Log-rank假设检验组间生存曲线比较实战
R语言生存分析Log-rank假设检验组间生存曲线比较实战 目录 R语言生存分析Log-rank假设检验组间生存曲线比较实战 #log-rank检验
- R语言生存分析COX回归分析实战:两种治疗方法发生肾功能损害的情况
R语言生存分析COX回归分析实战:两种治疗方法发生肾功能损害的情况 目录
- R语言生存分析COX回归分析实战:放疗是否会延长胰脏癌症患者的生存时间
R语言生存分析COX回归分析实战:放疗是否会延长胰脏癌症患者的生存时间 目录
最新文章
- OC学习笔记之Foundation框架NSNumber、NSValue和NSDate(转)
- DRP问题集结(一)-Tomcat无法启动,报错java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory...
- HashMap、TreeMap、Hashable和LinkedHashMap
- dubbo控制中心部署,权重配置,以及管控台中各个配置的简单查看
- python 正则re模块
- ssh 双机互信配置记要
- 以太坊互助保险项目Nexus Mutual新增支持Badger DAO
- 2021年中国醋栗果提取物市场趋势报告、技术动态创新及2027年市场预测
- cassandra vs mongo (1)存储引擎
- countable php,ThinkPHP容器之Countable巧用
- 没有IDEA与Eclipse,该怎么学Java?
- 证件照的背景颜色转换
- Python排序算法(四)——插入排序
- 关于maven :pom.xml文件中父工程部分提示spring-boot-starter-parent:2.0.7.RELEAS not found
- python学习笔记_week19
- js URL 地址参数格式化
- 人工智能行业每日必读(02·04)
- Failed to install metadata com.weiwen.common:weiwen-common-core/maven-metadata.xml: Could not parse
- 设置Win10 输入法默认简体中文
- 【测控电路】三运放高共模抑制比放大电路