前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >「R」使用ggpolar绘制生存关联网络图

「R」使用ggpolar绘制生存关联网络图

作者头像
王诗翔呀
发布于 2022-06-27 10:56:26
发布于 2022-06-27 10:56:26
58300
代码可运行
举报
文章被收录于专栏:优雅R优雅R
运行总次数:0
代码可运行

之前课题组一个师妹有需要绘制一个带相关性又能展示生存分析显著性的极坐标图,所以造了ggpolar这个包,今天分享给大家,感兴趣的读者不妨使用自己的数据模仿下,应用到自己的分析项目中去。

Source: `vignettes/surv-corr-connection.Rmd`[1]

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(ggpolar)
#> Loading required package: ggplot2
library(survival)
library(ezcox)
#> Welcome to 'ezcox' package!
#> =======================================================================
#> You are using ezcox version 1.0.2
#> 
#> Project home : https://github.com/ShixiangWang/ezcox
#> Documentation: https://shixiangwang.github.io/ezcox
#> Cite as      : arXiv:2110.14232
#> =======================================================================
#> 
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
data = survival::lung
head(data)
#>   inst time status age sex ph.ecog ph.karno pat.karno meal.cal wt.loss
#> 1    3  306      2  74   1       1       90       100     1175      NA
#> 2    3  455      2  68   1       0       90        90     1225      15
#> 3    3 1010      1  56   1       0       90        90       NA      15
#> 4    5  210      2  57   1       1       90        60     1150      11
#> 5    1  883      2  60   1       0      100        90       NA       0
#> 6   12 1022      1  74   1       1       50        80      513       0

Pick several variables.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vars = c("age", "sex", "ph.ecog", "ph.karno", "pat.karno", "meal.cal", "wt.loss")

Univariable Cox analysis

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df_cox = ezcox(data, vars)
df_cox
#> # A tibble: 7 × 12
#>   Variable  is_control contrast_level ref_level n_contrast n_ref      beta    HR
#>   <chr>     <lgl>      <chr>          <chr>          <int> <int>     <dbl> <dbl>
#> 1 age       FALSE      age            age              228   228  0.0187   1.02 
#> 2 sex       FALSE      sex            sex              228   228 -0.531    0.588
#> 3 ph.ecog   FALSE      ph.ecog        ph.ecog          227   227  0.476    1.61 
#> 4 ph.karno  FALSE      ph.karno       ph.karno         227   227 -0.0164   0.984
#> 5 pat.karno FALSE      pat.karno      pat.karno        225   225 -0.0199   0.98 
#> 6 meal.cal  FALSE      meal.cal       meal.cal         181   181 -0.000124 1    
#> 7 wt.loss   FALSE      wt.loss        wt.loss          214   214  0.00132  1    
#> # … with 4 more variables: lower_95 <dbl>, upper_95 <dbl>, p.value <dbl>,
#> #   global.pval <dbl>

Correlation analysis

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vars_comb = combn(vars, 2, simplify = FALSE)
cor_value = sapply(vars_comb, function(x) {
  cor(data[[x[1]]], data[[x[2]]], use = "pairwise")
})

df_cor = cbind(as.data.frame(t(sapply(vars_comb, function(x) x))), cor_value)
colnames(df_cor) = c("var1", "var2", "correlation")
df_cor$size = abs(df_cor$correlation)
df_cor$way = ifelse(df_cor$correlation > 0, "positive", "negative")
df_cor
#>         var1      var2 correlation       size      way
#> 1        age       sex -0.12216709 0.12216709 negative
#> 2        age   ph.ecog  0.19323604 0.19323604 positive
#> 3        age  ph.karno -0.20318207 0.20318207 negative
#> 4        age pat.karno -0.12616688 0.12616688 negative
#> 5        age  meal.cal -0.23141071 0.23141071 negative
#> 6        age   wt.loss  0.03814787 0.03814787 positive
#> 7        sex   ph.ecog -0.02060379 0.02060379 negative
#> 8        sex  ph.karno  0.01138505 0.01138505 positive
#> 9        sex pat.karno  0.04607145 0.04607145 positive
#> 10       sex  meal.cal -0.16835976 0.16835976 negative
#> 11       sex   wt.loss -0.12907708 0.12907708 negative
#> 12   ph.ecog  ph.karno -0.80726666 0.80726666 negative
#> 13   ph.ecog pat.karno -0.51122086 0.51122086 negative
#> 14   ph.ecog  meal.cal -0.09851018 0.09851018 negative
#> 15   ph.ecog   wt.loss  0.18758944 0.18758944 positive
#> 16  ph.karno pat.karno  0.52029737 0.52029737 positive
#> 17  ph.karno  meal.cal  0.04223324 0.04223324 positive
#> 18  ph.karno   wt.loss -0.17543452 0.17543452 negative
#> 19 pat.karno  meal.cal  0.16575874 0.16575874 positive
#> 20 pat.karno   wt.loss -0.17199064 0.17199064 negative
#> 21  meal.cal   wt.loss -0.10257242 0.10257242 negative

Visualization

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df_cox$role = ifelse(
  df_cox$p.value > 0.05, "non-signf",
  ifelse(df_cox$HR < 1, "protector", "risker")
)
df_cox$`-log10(p)` = -log10(df_cox$p.value)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
p = polar_init(df_cox, x = Variable, aes(color = role, size = `-log10(p)`))
p
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
p + 
  ggnewscale::new_scale("color") +
  polar_connect(df_cor, x1 = var1, x2= var2, size = size, color = way, alpha = 0.3) + 
  scale_size(range = c(0.1, 4))
#> Scale for 'size' is already present. Adding another scale for 'size', which
#> will replace the existing scale.

参考资料

[1]

vignettes/surv-corr-connection.Rmd: https://github.com/ShixiangWang/polar/blob/master/vignettes/surv-corr-connection.Rmd

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-06-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 优雅R 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
R|生存分析-结果整理
根据上面的生存分析的介绍可以大概的了解了生存分析的概念和原理以及KM曲线的绘制。但是生存分析中COX回归的结果不容易直接输出,本文简单的介绍一种自定义函数,批量并且规则的输出结果的方式。
生信补给站
2020/08/05
1.8K0
R语言生存分析:Cox回归
上次介绍了生存分析中的寿命表、K-M曲线、logrank检验、最佳切点的寻找等,本次主要介绍Cox回归。
医学和生信笔记
2023/02/14
1.8K1
R语言生存分析:Cox回归
生存资料校准曲线的绘制
前面我们已经讲过logistic模型的校准曲线的画法,这次我们学习生存资料的校准曲线画法。
医学和生信笔记
2022/11/15
8860
生存资料校准曲线的绘制
「R」使用 ezcox 进行批量 Cox 模型处理
Cox 模型是我们做生存分析最常用的模型,在实际的分析工作中,我们常常想逐一查看多个变量对生存时间的影响。注意,这与多变量分析不同,后者是通常将多个变量纳入模型查看它们的影响。
王诗翔呀
2020/07/06
2K0
「R」使用 ezcox 进行批量 Cox 模型处理
TCGA生存分析②
接上文,Kaplan-Meier曲线有助于可视化两个分类组之间的生存差异,当你设置参数pval = TRUE时,可以获得的对数秩检验值有助于探讨不同组之间的生存率是否存在差异。 但这并不能很好地评估连续性定量变量的对生存的影响。比如你的某一个node属性取值范围是0-33,这将导致生存曲线图上出现33条生存曲线。如果遇到分组过多或者想要评估多个变量如何协同以影响生存。 例如,比如当希望同时检查种族和社会经济状况对生存的影响时就可能需要换种生存分析方法。
用户1359560
2018/12/05
1.2K0
TCGA生存分析②
「R」一文掌握生存分析
学习生存分析预先要求对R有所了解,基本能够操作R数据框和包的使用。要是懂ggplot2和dplyr就更好了。
王诗翔呀
2020/07/03
3.5K0
「R」一文掌握生存分析
区分度评价:C-statistic的计算
C-statistic是评价模型区分度的指标之一,在logistic模型中,C-statistic就是AUC,在生存资料中,C-statistic和AUC略有不同。
医学和生信笔记
2022/11/15
1.5K0
区分度评价:C-statistic的计算
计算列线图得分并进行危险分层
大多数情况下都是使用1代表死亡,0代表删失,这个数据集用2代表死亡。在这里没有影响,但有的R包会报错,需要注意!
医学和生信笔记
2023/10/31
6130
计算列线图得分并进行危险分层
🤔 forplo | 冲冲冲!这个画森林图的包好flexible哦~
1写在前面 我想大家肯定都用过森林图,应用比较多的场景可能是展示meta分析,回归分析结果的时候。🥳 画森林图的包还是挺多的,今天介绍一下forplo包的用法。😘 2用到的包 rm(list = ls()) library(tidyverse) library(forplo) library(meta) library(autoReg) library(survival) 3meta分析结果可视化 3.1 示例数据 这里我准备了一个随机数据,假设是我们收集的各篇文章中的某个指标。 dat <- read.
生信漫卷
2023/02/24
4890
🤔 forplo | 冲冲冲!这个画森林图的包好flexible哦~
R语言生存分析可视化分析
从“应对治疗”(完全缓解)到发生感兴趣事件的时间通常称为生存时间(或事件发生的时间)。
拓端
2020/07/17
1.3K0
R语言生存分析可视化分析
R|生存分析 - KM曲线 ,必须拥有姓名和颜值
生存分析作为分析疾病/癌症预后的出镜频率超高的分析手段,而其结果展示的KM曲线也必须拥有姓名和颜值!
生信补给站
2020/08/05
3.1K0
R|生存分析 - KM曲线 ,必须拥有姓名和颜值
「R」ezcox 森林图中点估计方块大小设定
这篇文章与 https://github.com/ShixiangWang/MessageBoard/issues/69[1] 与 https://github.com/ShixiangWang/ezcox/issues/12[2] 相关。
王诗翔呀
2020/07/03
1.3K0
「R」ezcox 森林图中点估计方块大小设定
C-statistic的显著性检验
R语言临床预测模型系列,从入门到进阶,目前已更新20+篇优秀推文,所有数据和代码均可免费获取,持续更新中,欢迎订阅。
医学和生信笔记
2022/11/15
8940
R语言生存分析的实现
生存分析是临床常用统计方法,一旦和时间扯上关系,分析就变得复杂多了,此时不再是单一的因变量,还需要考虑时间给因变量和自变量带来的各种影响。
医学和生信笔记
2023/02/14
1.4K0
R语言生存分析的实现
「R」使用 ezcox 展示森林图
我之前写过一篇文章介绍最近写的一个包 ezcox,它可以用来进行批量处理 Cox 模型(支持并行计算)。那个时候我已经关注到了 forestmodel 包并修复了几个 Bug,但作者没有将更新推到 CRAN 上,所以我就没将它加入到 ezcox 的早期版本中。最近我通过版本检查巧妙地规避了这个问题,因此写一篇文章来介绍下如何使用 ezcox 绘制森林图。
王诗翔呀
2020/07/06
7600
「R」使用 ezcox 展示森林图
R语言之生信⑦Cox比例风险模型(单因素)目录
在前一章(TCGA生存分析)中,我们描述了生存分析的基本概念以及分析和总结生存数据的方法,包括:1.危险和生存功能的定义 2.为不同患者群构建Kaplan-Meier生存曲线用于比较两条或更多条生存曲线的logrank检验
用户1359560
2018/12/18
4K0
「R」forestmodel给多水平变量添加整体p值
好吧,这下让我有点兴趣了。我仔细看了下issue(https://github.com/NikNakk/forestmodel/issues/31),发现提问人是想要把多水平变量的p值展示在森林图上。
王诗翔呀
2022/01/21
8510
「R」forestmodel给多水平变量添加整体p值
「R」ezcox v1.0.2 更新
针对@lijing-lin在GitHub的ezcox仓库提出的Fast way to add interaction terms?[1]问题, 这两天闲暇时废了些脑细胞进行解决。同时也fix之前记录的
王诗翔呀
2021/10/26
5570
「R」ezcox v1.0.2 更新
「Workshop」第三期:生存分析
生存函数:个体存活到某个时间点t的概率,或者说到时间t为止,感兴趣的事件(T)没有发生的概率:
王诗翔呀
2020/07/03
2.7K0
「Workshop」第三期:生存分析
XGB-8: Xgboost加速故障时间的生存分析
生存分析(回归)模型时间到感兴趣事件的持续时间。生存分析是一种特殊的回归,与传统的回归任务不同,具体如下:
用户3578099
2024/05/30
3610
XGB-8: Xgboost加速故障时间的生存分析
相关推荐
R|生存分析-结果整理
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验