Correlation

什麼可能導致給定數據集的 Pearson 和 Spearman 相關之間的相關係數存在很大差異?

  • June 9, 2011

兩個變量之間的 Pearson 係數相當高 (r=.65)。但是當我對變量值進行排序並運行 Spearman 相關時,係數值要低得多(r=.30)。

  • 對此有何解釋?

為什麼差別很大

  • 如果您的數據是正態分佈或均勻分佈的,我認為 Spearman 和 Pearson 的相關性應該非常相似。

  • 如果他們給出的結果與您的情況截然不同(0.65 與 0.30),我的猜測是您的數據或異常值出現了偏差,並且異常值導致 Pearson 的相關性大於 Spearman 的相關性。即,非常高的 X 值可能與非常高的 Y 值同時出現。

  • @chl 是正確的。您的第一步應該是查看散點圖。

  • 一般來說,皮爾遜和斯皮爾曼之間如此大的差異是一個危險信號,表明

    • Pearson 相關性可能不是您的兩個變量之間關聯的有用總結,或者
    • 您應該在使用 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 在添加異常值時完全不同。這突出了為什麼斯皮爾曼經常被稱為健壯。

在此處輸入圖像描述

引用自:https://stats.stackexchange.com/questions/11746

comments powered by Disqus