R语言 如何将调整后的p值添加到相关图矩阵?

jum4pzuy  于 2023-04-03  发布在  其他
关注(0)|答案(2)|浏览(172)

我使用以下代码创建相关矩阵并生成p值。如何为每个相关性创建调整后的p值?

library(corrplot)
#Running correlation
M = cor(mtcars)

#identifying pvalues
testRes = cor.mtest(mtcars, conf.level = 0.95)

#creating pairwise p value
pval = as.data.frame(as.table(testRes$p))
head(pval)

输出为:

Var1    Var2    Freq
   <fct>    <fct>   <dbl>
1   mpg     mpg     0.000000e+00
2   cyl     mpg     6.112687e-10
3   disp    mpg     9.380327e-10
4   hp      mpg     1.787835e-07
5   drat    mpg     1.776240e-05
6   wt      mpg     1.293959e-10

如何计算调整后的pvalue并将其添加到pvalue之后的列中?

flvlnr44

flvlnr441#

可以使用bcdstats生成adjusted pvalue。

library(corrplot)
library(bcdstats)

M = cor(mtcars)
adjp = adjust.corr(M, adjust="fdr")

head(as.data.frame(as.table(adjp$P)))

输出:

Var1    Var2    Freq
   <fct>    <fct>   <chr>
1   mpg     mpg 
2   cyl     mpg   <.0001
3   disp    mpg   <.0001
4   hp      mpg   <.0001
5   drat    mpg   <.0001
6   wt      mpg   <.0001
dzhpxtsq

dzhpxtsq2#

其实就是cbind(<res>, p.adj=p.adjust(<res>$p, method='BH'))
首先是不使用corrplot包的相关性 p 值解决方案。

pm <- outer(mtcars, mtcars, Vectorize(\(x, y) cor.test(x, y)$p.value))
res <- as.data.frame(as.table(pm)) |> setNames(c("Var1", "Var2", "p"))

现在,cbind调整p值;我使用Benjamini-Hochberg(又名 * 错误发现率 *(FDR))方法。有关选项,请参见?p.adjust

res <- cbind(res, p.adj=p.adjust(res$p, method='BH'))  ## here you could use any `res`, e.g. your `pval` object and `pval&Freq`

head(res)
#   Var1 Var2            p        p.adj
# 1  mpg  mpg 0.000000e+00 0.000000e+00
# 2  cyl  mpg 6.112687e-10 3.892817e-09
# 3 disp  mpg 9.380327e-10 5.404855e-09
# 4   hp  mpg 1.787835e-07 6.555396e-07
# 5 drat  mpg 1.776240e-05 3.770615e-05
# 6   wt  mpg 1.293959e-10 9.209941e-10

如果你喜欢管道,你可以这样做:

res <- outer(mtcars, mtcars, Vectorize(\(x, y) cor.test(x, y)$p.value)) |>
  as.table() |> as.data.frame() |> setNames(c("Var1", "Var2", "p")) |>
  {\(.) cbind(., p.adj=p.adjust(.$p, method='BH'))}()

head(res)
#   Var1 Var2            p        p.adj
# 1  mpg  mpg 0.000000e+00 0.000000e+00
# 2  cyl  mpg 6.112687e-10 3.892817e-09
# 3 disp  mpg 9.380327e-10 5.404855e-09
# 4   hp  mpg 1.787835e-07 6.555396e-07
# 5 drat  mpg 1.776240e-05 3.770615e-05
# 6   wt  mpg 1.293959e-10 9.209941e-10

相关问题