R语言入门秘录15/25:检验相关性的显著性

数据分析网整理自tbkken的《R语言入门25招》,一招招技能带你走进R语言。

问题

计算两个变量的相关性,但不知道相关性在统计上是否足够显著。

解决方案

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」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「我们」留言处理。

(0)
小胖的头像小胖编辑
上一篇 2016-01-08 14:32
下一篇 2016-01-10 14:35

相关文章

关注我们
关注我们
分享本页
返回顶部