最近我们被客户要求撰写关于生存分析的研究报告,包括一些图形和统计输出。理解世界,我们可以从相关性的角度去描述,统计,机器学习,很多问题都是从相关的角度去描述的。我们去构建一个模型,不管是统计机器学习模型,还是深度学习模型,本质上是构建一个复杂映射。从特征到标签的一个映射,这个映射是有用的,但不完全有用。

 相关视频: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)模型分析流行病学随访研究数据相关推荐

  1. R语言生存分析模型简介及survival包实现实战:基于survival包lung数据集

    R语言生存分析模型简介及survival包实现实战:基于survival包lung数据集 目录 R语言生存分析模型简介及survival包实现实战 #survival包简介

  2. R语言生存分析数据分析可视化案例

    目标 本文的目的是对如何在R中进行生存分析进行简短而全面的评估.关于该主题的文献很广泛,仅涉及有限数量的(常见)问题.最近我们被客户要求撰写关于生存分析的研究报告,包括一些图形和统计输出. 可用的R包 ...

  3. 视频|分类模型评估:精确率、召回率、ROC曲线、AUC与R语言生存分析时间依赖性ROC实现

    最近我们被客户要求撰写关于分类模型的研究报告,包括一些图形和统计输出. 本文将帮助您回答以下问题: ROC曲线是什么? 曲线下的面积是多少? 二元分类的决策阈值是多少? 分类模型可接受的 AUC值是多 ...

  4. R语言生存分析(survival analysis)与生存资料有关的概念详解

    R语言生存分析(survival analysis)与生存资料有关的概念详解 目录 R语言生存分析(survival analysis)与生存资料有关的概念详解 #生存分析

  5. R语言生存分析寿命表(life table)实战案例:比较两种药物治疗感染患者的生存时间

    R语言生存分析寿命表(life table)实战案例:比较两种药物治疗感染患者的生存时间 目录

  6. R语言生存分析COX回归分析实战:以乳腺癌数据为例

    R语言生存分析COX回归分析实战:以乳腺癌数据为例 目录

  7. R语言生存分析Log-rank假设检验组间生存曲线比较实战

    R语言生存分析Log-rank假设检验组间生存曲线比较实战 目录 R语言生存分析Log-rank假设检验组间生存曲线比较实战 #log-rank检验

  8. R语言生存分析COX回归分析实战:两种治疗方法发生肾功能损害的情况

    R语言生存分析COX回归分析实战:两种治疗方法发生肾功能损害的情况 目录

  9. R语言生存分析COX回归分析实战:放疗是否会延长胰脏癌症患者的生存时间

    R语言生存分析COX回归分析实战:放疗是否会延长胰脏癌症患者的生存时间 目录

最新文章

  1. OC学习笔记之Foundation框架NSNumber、NSValue和NSDate(转)
  2. DRP问题集结(一)-Tomcat无法启动,报错java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory...
  3. HashMap、TreeMap、Hashable和LinkedHashMap
  4. dubbo控制中心部署,权重配置,以及管控台中各个配置的简单查看
  5. python 正则re模块
  6. ssh 双机互信配置记要
  7. 以太坊互助保险项目Nexus Mutual新增支持Badger DAO
  8. 2021年中国醋栗果提取物市场趋势报告、技术动态创新及2027年市场预测
  9. cassandra vs mongo (1)存储引擎
  10. countable php,ThinkPHP容器之Countable巧用
  11. 没有IDEA与Eclipse,该怎么学Java?
  12. 证件照的背景颜色转换
  13. Python排序算法(四)——插入排序
  14. 关于maven :pom.xml文件中父工程部分提示spring-boot-starter-parent:2.0.7.RELEAS not found
  15. python学习笔记_week19
  16. js URL 地址参数格式化
  17. 人工智能行业每日必读(02·04)
  18. Failed to install metadata com.weiwen.common:weiwen-common-core/maven-metadata.xml: Could not parse
  19. 设置Win10 输入法默认简体中文
  20. 【测控电路】三运放高共模抑制比放大电路

热门文章

  1. python冒泡排序算法非递归_python 冒泡排序,递归
  2. linux用shell冒泡排序,Linux Shell冒泡排序
  3. 块效应 振铃效应 呼吸效应
  4. 安卓面试之自定义View流程及原理
  5. 工作中办公文件共享用什么软件比较便捷?
  6. IM即时通讯开发万人群聊消息投递方案
  7. Web3.0赚疯了!周星驰都要做
  8. 虹吸式雨水排水系统施工工艺标准
  9. PTA-Python-第2章-12 输出三角形面积和周长 (15分)
  10. 人工智能——机器学习系统