如何根据邓恩斯检验的输出创建 p 值的相关矩阵?
How to create a correlation matrix of p values from the output of a dunns test?
使用以下数据框,我需要做一个 dunn_test
以根据每个 var
查看哪些 Loc
彼此不同:
set.seed(123)
dat1 <- data.frame(Loc = rep(letters[1:20], each = 10),
ID = 1:200,
var1 = rnorm(200),
var2 = rnorm(200),
var3 = rnorm(200),
var4 = rnorm(200),
var5 = rnorm(200),
var6 = rnorm(200))
dat1$ID <- factor(dat1$ID)
library(rstatix)
res <- dunn_test(dat1, var1 ~ Loc)
如何在对象 res
的 Loc
之间创建一个“p 值的相关矩阵”,使其看起来如下所示,并显示每个的 p 值成对比较:
a b c d e f g h i j k l m n o p q r s t
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
这是一个基本的 R 方法:
pvals <- res$p
dst <- matrix(NA, 20, 20)
dst[lower.tri(dst)] <- pvals
dst <- as.dist(dst)
attr(dst, "Labels") <- letters[1:20]
dst <- as.matrix(dst, upper=TRUE, lower=TRUE)
dst[1:5, 1:5]
# a b c d e
# a 0.0000000 0.54159206 0.25928005 0.33606421 0.7661024
# b 0.5415921 0.00000000 0.08212246 0.72516551 0.3639394
# c 0.2592800 0.08212246 0.00000000 0.03661193 0.4061898
# d 0.3360642 0.72516551 0.03661193 0.00000000 0.2078686
# e 0.7661024 0.36393940 0.40618977 0.20786861 0.0000000
您没有在对角线上注明您想要的内容。由于这些是 p 值,因此用 1 填充对角线是有意义的:
diag(dst) <- 1
根据要求:
data.frame(Group1=res$group1, Group2=res$group2, PValue=res$p) %>%
group_by(Group2) %>%
pivot_wider(values_from="PValue", names_from=c("Group1"))
为您提供未经调整的 p 值的下三角矩阵。交换 Group2
和 "Group1"
(在 group_by
和 pivot_wider
动词中)将得到一个上三角矩阵。
使用以下数据框,我需要做一个 dunn_test
以根据每个 var
查看哪些 Loc
彼此不同:
set.seed(123)
dat1 <- data.frame(Loc = rep(letters[1:20], each = 10),
ID = 1:200,
var1 = rnorm(200),
var2 = rnorm(200),
var3 = rnorm(200),
var4 = rnorm(200),
var5 = rnorm(200),
var6 = rnorm(200))
dat1$ID <- factor(dat1$ID)
library(rstatix)
res <- dunn_test(dat1, var1 ~ Loc)
如何在对象 res
的 Loc
之间创建一个“p 值的相关矩阵”,使其看起来如下所示,并显示每个的 p 值成对比较:
a b c d e f g h i j k l m n o p q r s t
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
这是一个基本的 R 方法:
pvals <- res$p
dst <- matrix(NA, 20, 20)
dst[lower.tri(dst)] <- pvals
dst <- as.dist(dst)
attr(dst, "Labels") <- letters[1:20]
dst <- as.matrix(dst, upper=TRUE, lower=TRUE)
dst[1:5, 1:5]
# a b c d e
# a 0.0000000 0.54159206 0.25928005 0.33606421 0.7661024
# b 0.5415921 0.00000000 0.08212246 0.72516551 0.3639394
# c 0.2592800 0.08212246 0.00000000 0.03661193 0.4061898
# d 0.3360642 0.72516551 0.03661193 0.00000000 0.2078686
# e 0.7661024 0.36393940 0.40618977 0.20786861 0.0000000
您没有在对角线上注明您想要的内容。由于这些是 p 值,因此用 1 填充对角线是有意义的:
diag(dst) <- 1
根据要求:
data.frame(Group1=res$group1, Group2=res$group2, PValue=res$p) %>%
group_by(Group2) %>%
pivot_wider(values_from="PValue", names_from=c("Group1"))
为您提供未经调整的 p 值的下三角矩阵。交换 Group2
和 "Group1"
(在 group_by
和 pivot_wider
动词中)将得到一个上三角矩阵。