我使用以下代码创建关联矩阵并生成pValue.如何 for each 相关性创建调整后的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之后的列中?

推荐答案

实际上只有cbind(<res>, p.adj=p.adjust(<res>$p, method='BH'))美元.

首先,在不使用corrlot包的情况下,使用相关性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值;我使用本杰米尼-霍奇伯格(又名false discovery rate(FDR)方法)."bonferroni"方法也很常见;有关选项,请参阅?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

R相关问答推荐

R:随机抽取所有可能排列的样本

R中的滞后累积量

Select R中列未排序的收件箱中的最后一个按顺序编号的列

从R中的函数中提取变量以及它们来自哪些环境?

分组时间连续值

R -模运算后的加法

创建重复删除的唯一数据集组合列表

如何创建构成多个独立列条目列表的收件箱框列?

如何将在HW上运行的R中的消息(错误、警告等)作为批处理任务输出

在(g)子中使用asserable字符

如何使用rmarkdown和kableExtra删除包含折叠行的表的第一列的名称

如何写一个R函数来旋转最后n分钟?

如何将R中数据帧中的任何Nas替换为最后4个值

Select 季度月值

展开对数比例绘图的轴(添加填充)

识别连接的子网(R-igraph)

SHILINY中DT列的条件着色

如何在使用因子时获得Sankey图的Scale_Fill_Viridis的全范围

如何从嵌套数据中自动创建命名对象?在R中

Broom.Mixed::Augment不适用于Sample::分析