为何correlation与rstatix多变量相关检验的p值存在差异?
解决correlation包多变量Spearman相关p值异常问题
问题原因
- correlation包处理多变量相关分析时,默认会对p值执行多重检验校正(默认方法为"holm"),目的是降低多次检验带来的假阳性风险。
- 你的示例数据是完全随机生成的,变量间真实相关系数为0,经过多重校正后,原本的随机小p值会被大幅拉高,最终全部显示为0.999。
- 而
rstatix::cor_test和单独调用的cor.test()默认不做多重检验校正,因此能返回逐检验的原始p值。
解决方案
要保留correlation包的置信区间输出,同时得到与其他工具一致的原始p值,只需在调用correlation()时关闭多重检验校正:
library(correlation) # 关闭多重检验校正,获取原始p值 cor_result <- correlation(df, method = "spearman", p_adjust = "none") # 查看结果 print(cor_result)
结果验证
运行上述代码后,correlation返回的p值会与rstatix::cor_test(df, method = "spearman")、cor.test(df$Var1, df$Var2, method = "spearman")的结果完全一致,同时仍保留95%置信区间的输出。
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

