查看: 1538|回复: 14

[R语言] R|生存分析-结果整理

  [复制链接]

版主

Rank: 10Rank: 10Rank: 10

主题
34
注册时间
2016.3.21
在线时间
133 小时

活跃会员突出贡献


发表于 2020.7.28 22:28:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
代码码不清楚可以参考 原文链接;https://mp.weixin.qq.com/s/MkXFdobi94fhB58VOa6ITQ


生存分析
        根据上面的生存分析的介绍可以大概的了解了生存分析的概念和原理以及KM曲线的绘制。但是生存分析中COX回归的结果不容易直接输出,本文简单的介绍一种自定义函数,批量并且规则的输出结果的方式。
#载入所需的R包
[AppleScript] 纯文本查看 复制代码
library("survival")
library("survminer")
#载入并查看数据集
data("lung")
head(lung)



#cox 回归分析
[AppleScript] 纯文本查看 复制代码
res.cox <- coxph(Surv(time, status) ~ sex, data = lung)
res.cox
summary(res.cox)
Call:coxph(formula = Surv(time, status) ~ sex, data = lung)  
n= 228, number of events= 165       
coef exp(coef) se(coef)      z Pr(>|z|)   
sex -0.5310    0.5880   0.1672 -3.176  0.00149 **
---Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1    
exp(coef) exp(-coef) lower .95 upper .95
sex     0.588      1.701    0.4237     0.816
Concordance= 0.579  (se = 0.022 )
Rsquare= 0.046   (max possible= 0.999 )
Likelihood ratio test= 10.63  on 1 df,   p=0.001111
Wald test            = 10.09  on 1 df,   p=0.001491
Score (logrank) test = 10.33  on 1 df,   p=0.001312

         COX回归的结果中需要提取HR,HR的置信区间,wald.test和 p.value的信息,最简单的是在summary结果中进行复制粘贴,当然效率很低。
假设当变量成百上前后,会发生什么呢?
--------------------
复制粘贴N*成百上千次!!!
还可以构建自定义函数,数据框的形式一次输出所有变量的COX回归结果
#查看待分析的变量
[AppleScript] 纯文本查看 复制代码
covariates <- names(lung[,4:10])
covariates[1] 
"age"       "sex"       "ph.ecog"   "ph.karno"  "pat.karno" "meal.cal"  "wt.loss"


#构建自定义函数,以数据框形式输出结果
[AppleScript] 纯文本查看 复制代码
univ_formulas <- sapply(covariates,                        function(x) as.formula(paste('Surv(time, status)~', x))) 
#设定函数输出的信息                  
univ_models <- lapply( univ_formulas, function(x){coxph(x, data = lung)})
# Extract data 
univ_results <- lapply(univ_models,                       
function(x){                           
x <- summary(x)                          
p.value<-signif(x$wald["pvalue"], digits=2)                          
wald.test<-signif(x$wald["test"], digits=2)                         
 beta<-signif(x$coef[1], digits=2);#coeficient beta                          
HR <-signif(x$coef[2], digits=2);#exp(beta)                          
HR.confint.lower <- signif(x$conf.int[,"lower .95"], 2)                          
HR.confint.upper <- signif(x$conf.int[,"upper .95"],2)                          
HR <- paste0(HR, " (",                                        HR.confint.lower, "-", HR.confint.upper, ")")                          
res<-c(beta, HR, wald.test, p.value)                          
names(res)<-c("beta", "HR (95% CI for HR)", "wald.test",                                         "p.value")                          
return(res)                          
#return(exp(cbind(coef(x),confint(x))))                         
})


#输出所有变量的COX结果
[AppleScript] 纯文本查看 复制代码
res <- t(as.data.frame(univ_results, check.names = FALSE))
as.data.frame(res)
              beta HR (95% CI for HR) wald.test p.value
age          0.019            1 (1-1)       4.1   0.042
sex          -0.53   0.59 (0.42-0.82)        10  0.0015
ph.ecog       0.48        1.6 (1.3-2)        18 2.7e-05
ph.karno    -0.016      0.98 (0.97-1)       7.9   0.005
pat.karno    -0.02   0.98 (0.97-0.99)        13 0.00028
meal.cal  -0.00012            1 (1-1)      0.29    0.59
wt.loss     0.0013         1 (0.99-1)      0.05    0.83


OK!可以write了,至于csv还是txt ,啦意随。。。

参考链接:https://www.r-bloggers.com/cox-proportional-hazards-model/               
回复

使用道具 举报

钵水母

Rank: 3Rank: 3

主题
0
注册时间
2016.6.6
在线时间
7 小时

发表于 2020.7.29 11:37:59 | 显示全部楼层
谢谢!好好学习下
回复 支持 反对

使用道具 举报

帝王蝶

Rank: 4

主题
12
注册时间
2020.4.30
在线时间
18 小时

突出贡献


发表于 2020.7.31 22:26:52 | 显示全部楼层
新的一天加油!
回复

使用道具 举报

帝王蝶

Rank: 4

主题
12
注册时间
2020.4.30
在线时间
18 小时

突出贡献


发表于 2020.8.1 10:44:04 | 显示全部楼层
新的一天加油!
回复

使用道具 举报

钵水母

Rank: 3Rank: 3

主题
0
注册时间
2020.2.12
在线时间
17 小时

活跃会员


发表于 2020.8.5 11:45:16 | 显示全部楼层
新的一天加油!
回复

使用道具 举报

钵水母

Rank: 3Rank: 3

主题
0
注册时间
2020.8.9
在线时间
1 小时

发表于 2020.8.13 19:10:05 | 显示全部楼层
xxxx
回复

使用道具 举报

钵水母

Rank: 3Rank: 3

主题
1
注册时间
2020.8.9
在线时间
5 小时

发表于 2020.8.13 20:23:13 | 显示全部楼层
8r8939759
回复

使用道具 举报

钵水母

Rank: 3Rank: 3

主题
1
注册时间
2020.8.9
在线时间
5 小时

发表于 2020.8.13 20:23:59 | 显示全部楼层
7878
回复

使用道具 举报

钵水母

Rank: 3Rank: 3

主题
1
注册时间
2020.8.9
在线时间
5 小时

发表于 2020.8.13 20:27:57 | 显示全部楼层
78989789
回复

使用道具 举报

中华鲟

Rank: 5Rank: 5

主题
0
注册时间
2017.11.3
在线时间
173 小时

发表于 2020.8.15 08:41:02 | 显示全部楼层
谢谢
加油,顺顺利利~!
回复

使用道具 举报

帝王蝶

Rank: 4

主题
12
注册时间
2020.4.30
在线时间
18 小时

突出贡献


发表于 2020.8.17 10:49:05 | 显示全部楼层
新的一天加油!
回复

使用道具 举报

草履虫

Rank: 2

主题
0
注册时间
2020.8.18
在线时间
1 小时

发表于 2020.8.19 10:27:12 | 显示全部楼层
学习了,真的很实用
回复 支持 反对

使用道具 举报

钵水母

Rank: 3Rank: 3

主题
0
注册时间
2020.3.18
在线时间
4 小时

发表于 2020.8.22 11:05:21 | 显示全部楼层

学习了,真的很实用
新的一天加油!
回复 支持 反对

使用道具 举报

钵水母

Rank: 3Rank: 3

主题
0
注册时间
2020.8.24
在线时间
0 小时

发表于 2020.8.25 08:20:13 | 显示全部楼层
谢谢!好好学习下
回复 支持 反对

使用道具 举报

帝王蝶

Rank: 4

主题
12
注册时间
2020.4.30
在线时间
18 小时

突出贡献


发表于 2020.8.27 11:10:05 | 显示全部楼层
新的一天加油!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表