从意义矩阵或手工紧凑的字母显示
Compact Letter Display from a matrix of significancies or by hand
我是 运行 R 中的多重成对比较。我正在使用生存包 survminer。我正在使用以下功能:
pairwise_survdiff {survminer}
它按预期给出了具有显着性的成对比较,但似乎没有办法给出结果的紧凑字母显示 (CLD)。我正在看成对的 19 个级别。我最终打印了结果,手工将它们放入 excel,然后手工写字母。但现在我需要再做一次,希望有更简单的方法。
- 我可以让 R 直接根据 pairwise_survdiff {survminer} 结果进行 CLD 吗?
除此之外
有没有办法让它将结果打印到电子表格可以读取的 table 中?
如果我手工制作逻辑矩阵,我如何让 R 将其转换为 CLD?
并且 4) 如果我全部手动完成,我想知道是否有更紧凑的方法来显示此比较列表。由于冗余,我可以删除这些字母中的任何一个吗?
hand made CLD for comparisons
谢谢
这是来自 survminer
的示例
library(survminer)
library(multcomp)
library(tidyr)
data(myeloma)
res <- pairwise_survdiff(Surv(time, event) ~ molecular_group,
data = myeloma)
查看 multcomp
包中 glht.summary
方法的内部结构,我们创建了 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))]
然后我们可以re-arrange将res
对象中的p-values转化为矩阵。 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"
我是 运行 R 中的多重成对比较。我正在使用生存包 survminer。我正在使用以下功能: pairwise_survdiff {survminer}
它按预期给出了具有显着性的成对比较,但似乎没有办法给出结果的紧凑字母显示 (CLD)。我正在看成对的 19 个级别。我最终打印了结果,手工将它们放入 excel,然后手工写字母。但现在我需要再做一次,希望有更简单的方法。
- 我可以让 R 直接根据 pairwise_survdiff {survminer} 结果进行 CLD 吗?
除此之外
有没有办法让它将结果打印到电子表格可以读取的 table 中?
如果我手工制作逻辑矩阵,我如何让 R 将其转换为 CLD?
并且 4) 如果我全部手动完成,我想知道是否有更紧凑的方法来显示此比较列表。由于冗余,我可以删除这些字母中的任何一个吗? hand made CLD for comparisons
谢谢
这是来自 survminer
library(survminer)
library(multcomp)
library(tidyr)
data(myeloma)
res <- pairwise_survdiff(Surv(time, event) ~ molecular_group,
data = myeloma)
查看 multcomp
包中 glht.summary
方法的内部结构,我们创建了 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))]
然后我们可以re-arrange将res
对象中的p-values转化为矩阵。 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"