如何在Pearson和Spearman相关之间选择?


119

我怎么知道何时在Spearman的和Pearson的之间进行选择?我的变量包括满意度,并且使用分数总和来解释分数。但是,这些分数也可以排名。ρr


2
有关非正常数据的统计信息

1
如果数据正常,请产生皮尔逊。如果数据不正常,请产生spearman。

Answers:


137

如果您想浏览数据,则最好同时计算两者,因为Spearman(S)和Pearson(P)相关性之间的关系会提供一些信息。简而言之,S是按秩计算的,因此描述了单调关系,而P是真实值,并且描述了线性关系。

例如,如果您设置:

x=(1:100);  
y=exp(x);                         % then,
corr(x,y,'type','Spearman');      % will equal 1, and 
corr(x,y,'type','Pearson');       % will be about equal to 0.25

这是因为与单调增加,因此Spearman相关性是理想的,但不是线性的,因此Pearson相关性是不完美的。 yx

corr(x,log(y),'type','Pearson');  % will equal 1

两者都很有趣,因为如果S> P,则意味着您具有单调但不是线性的相关性。由于统计数据具有线性关系(这很容易),因此可以尝试对进行转换(例如对数)。y

我希望这有助于使相关类型之间的差异更容易理解。


2
我猜想这是您已经说过的,但我只是想确认S <P不可能发生。
乔纳森·锡勒

9
@JonathanThiele完全有可能使S <P。例如,Anscombe的《四重奏》中的第二和第四集就证明了这种行为。另外,请参阅以下问题:stats.stackexchange.com/questions/27127/…–
atomicules

1
@atomicules感谢您提供信息。我刚刚检查了Anscombe的四重奏中的相关性,您的链接很有帮助。
乔纳森·锡勒

您如何在一个Corrgram演示中包括Pearson和Spearson相关性?--我在这里考虑的是stackoverflow.com/a/40523080/54964--我有一个多因素问题,所以我认为Spearson可以包括在内,我不能只和Pearson一起去。
莱奥波德·赫兹(LéoLéopoldHertz),2016年

这是我通常采用的方法,因为它具有绕过一项测试与另一项测试的辩解的额外好处,尤其是在测试多个变量之间的相关性时。无需检查每个变量以查看是否满足Pearson或Spearman相关性的假设,只需对所有内容都运行即可。在许多实际应用中,它们将给出相似的关联度度量,因此您只需要更深入地研究其结果差异很大的相对较少的实例,无论如何这些都是有趣的案例,以了解更多信息。
核王

50

最短且最正确的答案是:

皮尔逊(Pearson)基准线性关系,斯皮尔曼(Spearman)基准单调关系(无穷无穷的情况更普遍,但需要权衡取舍)。

因此,如果您假设/认为该关系是线性的(或者,作为一种特殊情况,它们是同一事物的两个量度,那么该关系为),那么情况就不会太奇怪(请查看其他答案以获取详细信息),请与Pearson一起使用。否则,请使用Spearman。y=1x+0


35

在统计中通常会发生这种情况:您可以根据情况采用多种方法,但您不知道选择哪种方法。您应该根据所考虑方法的优缺点和问题的具体情况来做出决定,但是即使这样,该决定通常还是主观的,没有商定的“正确”答案。通常,尝试尽可能多的合理方法是一个好主意,并且您的耐心将允许并查看最终哪种方法可以为您带来最佳效果。

皮尔森相关性与斯皮尔曼相关性之间的区别在于,皮尔森最适合于从间隔量表获取的测量值,而斯皮尔曼更适合于从序数表获取的测量值。间隔刻度的示例包括“温度单位为华氏度”和“长度单位为英寸”,其中各个单位(1华氏度,1英寸)是有意义的。诸如“满意度得分”之类的东西往往是序数类型的,因为虽然很明显“ 5个幸福”比“ 3个幸福”更快乐,但不清楚您是否可以对“ 1个幸福单位”做出有意义的解释。但是当你加起来 许多序数类型的度量(这就是您的情况)会导致最终得到的度量实际上既不是序数也不是间隔,并且难以解释。

我建议您将满意度分数转换为分位数分数,然后使用这些分数的总和,因为这将为您提供更易于解释的数据。但是即使在这种情况下,也不清楚Pearson还是Spearman是否更合适。


2
例如...交流恐惧感如何?高忧虑与高忧虑并没有确定的区别,对吗?但是我已经看到,使用Pearson的r,该变量已与其他变量相关联。这样可以吗 谢谢!

28

今天我遇到了一个有趣的极端案例。

如果我们查看的样本数量很少,则Spearman和Pearson之间的差异可能会很大。

在以下情况下,这两种方法报告的是完全相反的相关性。

在此处输入图片说明

决定Spearman对Pearson的一些快速经验法则:

  • Pearsons的假设是恒定的方差和线性(或合理的近似值),如果不满足这些假设,则值得Spearmans尝试。
  • 上面的示例是一个极端情况,只有在极少数(<5)个数据点时才会弹出。如果有> 100个数据点,并且数据是线性的或接近线性的,则Pearson将与Spearman非常相似。
  • 如果您认为线性回归是分析数据的合适方法,那么Pearsons的输出将与线性回归斜率的正负号和大小相匹配(如果变量已标准化)。
  • 如果您的数据包含一些线性回归不会吸收的非线性成分,则首先尝试通过应用变换将数据整理为线性形式(也许记录为e)。如果那不起作用,那么Spearman可能是合适的。
  • 我总是先尝试Pearson的方法,如果那不起作用,那么我尝试使用Spearman。
  • 您能否添加更多经验法则或更正我刚刚得出的经验法则?我已将此问题设为社区Wiki,因此您可以这样做。

ps这是用于重现上图的R代码:

# Script that shows that in some corner cases, the reported correlation for spearman can be
# exactly opposite to that for pearson. In this case, spearman is +0.4 and pearson is -0.4.
y = c(+2.5,-0.5, -0.8, -1)
x = c(+0.2,-3,   -2.5,+0.6)

plot(y ~ x,xlim=c(-6,+6),ylim=c(-1,+2.5))
title("Correlation: corner case for Spearman vs. Pearson\nNote that they are exactly opposite each other (-0.4 vs. +0.4)")
abline(v=0)
abline(h=0)
lm1=lm(y ~ x)
abline(lm1,col="red")

spearman = cor(y,x,method="spearman")
pearson = cor(y,x,method="pearson")
legend("topleft",
    c("Red line: regression.",
    sprintf("Spearman: %.5f",spearman),
    sprintf("Pearson:   +%.5f",pearson)
))

7

在同意查尔斯答案的同时,我建议(在严格的实践水平上)建议您计算两个系数并查看差异。在许多情况下,它们将完全相同,因此您不必担心。

但是,如果它们不同,则需要查看是否满足Pearsons的假设(恒定方差和线性),如果不满足这些假设,则最好使用Spearmans。


3
作为机器学习者,我当然不是统计正确性的圣人,但是在执行测试之后检查假设对我而言似乎是异端。
steffen 2011年

7
@steffen我认为很好。回归的一种假设是残差呈正态分布。在运行回归之前,您将如何检查?
格伦(Glen)

1
@格伦:在这种情况下,我不能。但是,当我比较不同模型的质量时,我通常更喜欢在执行测试之前检查假设(例如近似正态分布),以减少倾向于某些测试结果而放宽假设的趋势。称其为“预防脑筋急转弯”。我想那只是我;)。
steffen 2011年

1
@ steffen:您对异端是正确的,但是如果这两个过程给出的结果相同,则使用哪个口味问题,但是如果不这样做,则检查假设和失败之处通常可以对数据提供有用的见解。就个人而言,我会尽可能使用Spearman,但这在我的领域并不常见。
richiemorrisroe 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.