为什么Spearman在zscore上产生不同的结果?

时间:2019-01-21 01:38:44

标签: r correlation pearson

嗨,看来spearman相关性应该产生相同的结果,而不管其zscore还是raw。这是两个例子。

https://stats.stackexchange.com/questions/77562/why-does-correlation-come-out-the-same-on-raw-data-and-z-scored-standardized-d

https://stats.stackexchange.com/questions/13952/can-spearmans-correlation-be-run-on-z-scores

但是,在此示例中,这两个相关性是不同的,我想知道发生了什么。

df = read.csv("https://www.dropbox.com/s/jdktw9jugzm97v3/test.csv?dl=1", head=F)

cor(df[, 1], df[,2], method="spearman")
cor(scale(df[, 1]), scale(df[,2]), method="spearman")

# 0.8462699 vs 0.8905341

有趣的是,皮尔森给出了相同的结果。我想知道我在做什么或在这里思考不正确吗?

编辑: 所以除此之外,我认为这可能是由于领带造成的,所以我也使用kendall应该处理领带,但是它也会给出不同的结果。

cor(as.matrix ( df[, 1] ) , as.matrix ( df[,2] ), method="kendall" )
cor(scale(as.matrix ( df[, 1] )), scale(as.matrix ( df[,2] )),  method="kendall")

谢谢。

1 个答案:

答案 0 :(得分:0)

您好,如上所述,这是由于舍入错误引起的。没有人回答,但我想补充一下,以防其他人在类似问题上绊倒。因此,当我四舍五入到15-16位数字时,结果是相同的。

df = read.csv("https://www.dropbox.com/s/jdktw9jugzm97v3/test.csv?dl=1", head=F)

df = round(df, digits = 15)

cor(as.matrix ( df[, 1] ) , as.matrix ( df[,2] ), method="spearman" )
cor(scale(df[, 1] ), scale(df[,2] ),  method="spearman")

感谢大家的帮助。