原文链接:http://tecdat.cn/?p=26632
了解世界,咱们能够从相关性的角度去形容,统计,机器学习,很多问题都是从相干的角度去形容的。咱们去构建一个模型,不论是统计机器学习模型,还是深度学习模型,实质上是构建一个简单映射。从特色到标签的一个映射,这个映射是有用的,但不齐全有用。
因果剖析
咱们在这里用一个隐喻,下雨,来形容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)-1nhfipw$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^2gqsk0$qmk <- 0gfqsk1 <- gf.qm0gf.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 <- ifelse 1, 0) } else if (psi < 0) { dlta <- ifelse } # 协方差 sgma <- t(at) %*% smat if (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 - incre teslow <- sumeef(pslw) cunlow <- cunlow + 1 } # 95%CI的上限值 while (tsigh < 3.84 & onhih < 100){ phigh <- pshih + inrem testig <- sumeef(pihigh) cunhgh <- cuntigh + 1 } # 应用分切法进行更好的预计 if ((tstig > 3.84) & (tslw > 3.84)){ # 宰割法 cont <- 0 dif <- right - left while { test <- fmiddle * fleft if (test < 0){ } else { } diff <- right - left } psi_high <- middle objfunc_high <- fmiddle + 3.84 # 95%CI的上限 left <- psilow while(!){ test <- fmiddle * fleft if (test < 0)
最受欢迎的见解
1.R语言绘制生存曲线预计|生存剖析|如何R作生存曲线图
2.R语言生存剖析可视化剖析
3.R语言如何在生存剖析与Cox回归中计算IDI,NRI指标
4.r语言中应用Bioconductor 剖析芯片数据
5.R语言生存剖析数据分析可视化案例
6.r语言ggplot2误差棒图疾速指南
7.R 语言绘制性能富集泡泡图
8.R语言如何找到患者数据中具备差别的指标?(PLS—DA剖析)
9.R语言中的生存剖析Survival analysis早期肺癌患者4例