Correlation
什麼可能導致給定數據集的 Pearson 和 Spearman 相關之間的相關係數存在很大差異?
兩個變量之間的 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 在添加異常值時完全不同。這突出了為什麼斯皮爾曼經常被稱為健壯。