如何在 r 中建立不对称相关?

How can I make an asymmetric correlation in r?

有时我曾经将 psych::corr.test 函数与两个数据框一起使用,例如:

df1 <- tibble(a=c(1,2,4,5,67,21,21,65,1,5), b=c(21,5,2,6,8,4,2,6,2,2))

df2 <- tibble(a=c(1,2,3,4,5,6,7,8,9,8), b=c(1,6,54,8,3,8,9,5,2,1), c=c(1,4,6,8,5,3,9,7,5,4))

corr <- corr.test(df1,df2, adjust = "BH")

我从 corr$p.adj 得到 p 值 但有时它给我奇怪的重复 p.values 比如:

          a         b         c
a 0.5727443 0.5964993 0.5727443
b 0.2566757 0.5727443 0.2566757

有谁知道这些 p 值有多合适?我们可以用 corr.test 做到这一点吗?如果不是,我怎样才能做出不对称相关?

我很强调,如果我尝试执行像

这样的对称相关
df <- bind_cols(df1,df2[-3])
corr <- corr.test(df, adjust = "BH")

它的 p 值不那么重复:

Probability values (Entries above the diagonal are adjusted for multiple tests.) 
      a...1 b...2 a...3 b...4
a...1  0.00  0.97  0.62  0.72
b...2  0.97  0.00  0.38  0.62
a...3  0.39  0.06  0.00  0.62
b...4  0.60  0.40  0.41  0.00

UPD:好的,我意识到它和第一个一样重复,我有点傻。

BH 校正基于计算 n/i * p 的累积最小值,其中 pn = 6 未调整 p-values 降序排列,i6:1。 (你可以在psych::p.adjust中看到计算。)

因为它是一个累积最小值(即第一个值,然后是第一个和第二个的最小值,然后是第一个到第三个的最小值,等等)所以可能会重复。