首页 > 解决方案 > 从意义矩阵或手动显示紧凑型字母

问题描述

我在 R 中运行多个成对比较。我正在使用生存包 survminer。我正在使用该功能:pairwise_survdiff {survminer}

它提供了具有预期意义的成对比较,但似乎没有办法给出结果的紧凑字母显示(CLD)。我正在看成对的 19 个级别。我最终打印了结果,手工将它们放入 excel 中,然后手工写字母。但现在我需要再做一次,并希望有一种更简单的方法。

  1. 我可以让 R 直接从 pairwise_survdiff {survminer} 结果中进行 CLD 吗?

霸占那个

  1. 有没有办法让它将结果打印到电子表格可以读取的表格中?

  2. 如果我手工制作逻辑矩阵,我如何让 R 把它变成 CLD?

4)如果我全部手动完成,我想知道是否有更紧凑的方法来显示这个比较列表。由于冗余,我可以删除这些字母中的任何一个吗? 用于比较的手工 CLD

谢谢

标签: rpairwisesurvminer

解决方案


这是来自的示例survminer

library(survminer)
library(multcomp)
library(tidyr)
data(myeloma)

res <- pairwise_survdiff(Surv(time, event) ~ molecular_group,
                         data = myeloma)

glht.summary从包中查看方法的内部结构multcomp,我们创建了一个lvl_order向量,该向量标识了x从最小到最大的级别顺序。

x <- myeloma$molecular_group
levs <- levels(x)
y <- Surv(myeloma$time, myeloma$event)
lvl_order <- levels(x)[order(tapply(as.numeric(y)[1:length(x)], 
                                        x, mean))]

然后我们可以将对象中的 p 值重新排列res到矩阵中。 mycomps是成对比较两侧的矩阵。该signif向量是逻辑的,指示差异是否显着。

comps <- as_tibble(res$p.value, rownames="row") %>% 
  pivot_longer(-row, names_to="col", values_to="p") %>% 
  na.omit()
mycomps <- as.matrix(comps[,1:2])
signif <- comps$p < .05

然后,您可以使用insert_absorb内部函数来创建字母:

multcomp:::insert_absorb(signif, 
                         decreasing=FALSE, 
                         comps=mycomps, 
                         lvl_order=lvl_order)
# $Letters
# MAF    Proliferation       Cyclin D-2            MMSET     Hyperdiploid 
# "ab"              "a"              "b"             "ab"              "b" 
# Low bone disease       Cyclin D-1 
# "ab"             "ab" 
# 
# $monospacedLetters
# MAF    Proliferation       Cyclin D-2            MMSET     Hyperdiploid 
# "ab"             "a "             " b"             "ab"             " b" 
# Low bone disease       Cyclin D-1 
# "ab"             "ab" 
# 
# $LetterMatrix
# a     b
# MAF               TRUE  TRUE
# Proliferation     TRUE FALSE
# Cyclin D-2       FALSE  TRUE
# MMSET             TRUE  TRUE
# Hyperdiploid     FALSE  TRUE
# Low bone disease  TRUE  TRUE
# Cyclin D-1        TRUE  TRUE
# 
# $aLetters
# [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v"
# [23] "w" "x" "y" "z" "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R"
# [45] "S" "T" "U" "V" "W" "X" "Y" "Z"
# 
# $aseparator
# [1] "."
# 
# attr(,"class")
# [1] "multcompLetters"

推荐阅读