You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

cor.test与rcorr的P值差异原因及结果采信问询

为什么cor.test()和rcorr()的P值差异这么大?该信哪个?

这是相关性分析里非常典型的问题,核心差异完全来自多重比较校正,我给你拆解清楚:

一、两者P值差异的本质

  • cor.test():无校正的单个检验
    每次调用cor.test()只针对一对变量做检验,输出的是原始P值——它默认假设你只做这一次检验,没有考虑“你同时在跑多组相关”带来的假阳性风险。比如你连续跑了9次检验,每次假阳性率是5%,9次下来整体误判的概率会远高于5%。
  • rcorr()(Hmisc包):默认带多重比较校正
    当你用rcorr()计算整个相关矩阵时,它会自动对所有检验的P值做Bonferroni校正(默认方法),目的是控制「家族误差率(FWER)」——简单说就是帮你减少因为多次检验而把随机巧合当成真相关的概率。校正后的P值会比原始值大很多,所以很多在cor.test()里显著的结果,到rcorr()里就变成了ns(不显著)。

二、该采信哪一组结果?

完全看你的分析目的:

  1. 如果是单独验证某一对变量的相关性:
    直接用cor.test()的原始P值就好,因为不需要考虑多重比较的问题。
  2. 如果是批量计算多组变量的相关矩阵:
    必须采信rcorr()校正后的结果(或者自己手动做其他多重校正,比如FDR校正)。否则你很容易得出一堆假阳性的“显著相关”结论。

三、结合你的结果具体解释

从你的输出能明显看到:

  • cor.test()里所有配对的原始P值都远小于0.05,所以全部标记为显著;
  • rcorr()经过校正后,antag_pid、log.negaff_MSSD、log.posaff_MSSD这几个配对的校正后P值超过了0.05,所以标记为ns。
    这完全符合多重校正的预期——校正后严格控制了假阳性风险。

内容的提问来源于stack exchange,提问作者Tine Harpøth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:46:35