对于给定的数据集,什么会导致Pearson和Spearman相关之间的相关系数有很大差异?


22

两个变量之间的皮尔逊系数非常高(r = .65)。但是,当我对变量值进行排名并运行Spearman的相关性时,系数值要低得多(r = .30)。

  • 这是什么解释?

5
在解释相关系数之前,先显示数据散点图通常是一个好主意。
chl

您的样本量是多少?
Jeromy Anglim 2011年

Answers:


37

为什么差异很大

  • 如果您的数据是正态分布或均匀分布的,我认为Spearman和Pearson的相关性应该相当相似。

  • 如果他们给出的结果与您的情况截然不同(.65与.30),则我猜测是您偏斜了数据或离群值,并且离群值导致Pearson的相关性大于Spearman的相关性。即,X上的很高值可能与Y上的很高值同时出现。

  • @chl出现了。第一步应该是查看散点图。
  • 通常,皮尔逊与斯皮尔曼之间的巨大差异是一个危险信号,表明
    • 皮尔逊相关性可能不是两个变量之间关联的有用总结,或者
    • 您应该在使用Pearson的相关之前转换一个或两个变量,或者
    • 您应该先删除或调整离群值,然后再使用Pearson的相关性。

相关问题

另请参阅有关Spearman和Pearson相关性之间差异的以下先前问题:

简单的R示例

以下是如何发生这种情况的简单模拟。请注意,以下情况涉及单个异常值,但是您可以对多个异常值或偏斜数据产生相似的效果。

# Set Seed of random number generator
set.seed(4444)

# Generate random data
# First, create some normally distributed correlated data
x1 <- rnorm(200)
y1 <- rnorm(200) + .6 * x1

# Second, add a major outlier
x2 <- c(x1, 14)
y2 <- c(y1, 14)

# Plot both data sets
par(mfrow=c(2,2))
plot(x1, y1, main="Raw no outlier")
plot(x2, y2, main="Raw with outlier")

plot(rank(x1), rank(y1), main="Rank no outlier")
plot(rank(x2), rank(y2), main="Rank with outlier")

# Calculate correlations on both datasets
round(cor(x1, y1, method="pearson"), 2)
round(cor(x1, y1, method="spearman"), 2)
round(cor(x2, y2, method="pearson"), 2)
round(cor(x2, y2, method="spearman"), 2)

这给出了这个输出

[1] 0.44
[1] 0.44
[1] 0.7
[1] 0.44

相关分析表明,在没有异常值的情况下,Spearman和Pearson非常相似,而在极端异常值的情况下,相关性则非常不同。

下图显示了如何将数据视为等级来消除异常值的极端影响,从而使有和没有异常值的Spearman都相似,而添加异常值时Pearson则有很大不同。这突出了为什么Spearman通常被称为“健壮”。

在此处输入图片说明

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.