问题
计算两个变量的相关性,但不知道相关性在统计上是否足够显著。
解决方案
cor.test函数不仅可以计算P值,还可以算出相关性的可信区间。如果变量来自正态分布总体,可以用默认的相关性定义,即Pearson相关性:
代码
> cor.test(x, y)
对于非正态分布的总体,可以用Spearman相关性:
代码
> cor.test(x, y, method=”spearman”)
这个函数会返回几个值,包括显著性检验的P值。通常,P值小于0.05表示相关性很有可能是显著的,而P值大于0.05则表示不显著。
讨论
根据我的经验,人们经常没有检查相关性的显著性。实际上,不少人甚至都不知道相关性也有可能是不显著的。他们就是把数据丢到计算机中,然后折腾出一个相关性,最后盲目的相信结果。他们其实应该问问自己:数据量够大吗?相关性足够大吗?庆幸的是,cor.test函数可以回答这些问题。假设有两个向量,x和y,两者中的值符合正态分布。我们可以看到它们的相关系数大于0.83:
代码
> cor(x, y)
[1] 0.8352458
别天真了!试试cor.test,p值大到了0.1648:
代码
> cor.test(x, y)
Pearson’s product-moment correlation
data: x and y
t = 2.1481, df = 2, p-value = 0.1648
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
-0.6379590 0.9964437
sample estimates:
cor
0.8352458
通常P值的阈值是0.05,所以我们可以得出结论:这个相关性不显著。
还可以用置信区间检查相关性。在这个例子中,置信区间是(0.638, 0.996)。这个区间包含0,所以相关性有可能是0,其实也就是可能没有相关性。要强调一下,不要盲目的相信相关性是显著的。
cor.test函数还会输出cor得到的点估计(在最下面,有“sample estimates”说明),就不需要再运行cor了。
默认情况下,cor.test会计算皮尔森相关性,它假设整体是服从正态分布的。Spearman方法是无参的,所以没有这个假设。在处理非正态分布的数据时,用method=”spearman”。
扩展阅读
关于相关性和其他统计量的计算见第8招。
本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「我们」留言处理。