Спирман ранговая корреляция между факторами в R - PullRequest
0 голосов
/ 02 февраля 2020

У меня есть данные, подобные следующим:

directions <- c("North", "East", "South", "South")
x<-factor(directions, levels= c("North", "East", "South", "West"))

cities <- c("New York","Rome","Paris","London")
y<-factor(cities, levels= c("New York","Rome","Paris","London"))

Как рассчитать ранговую связь Спирмена между x и y?

РЕДАКТИРОВАТЬ

Как предлагают комментарии @ user20650 и @dcarlson, переменные должны иметь ранжирование, чтобы одно значение было больше или меньше другого значения. Это так, потому что North, East et c. ключевые слова, отсортированные по их наличию в документе.

1 Ответ

1 голос
/ 03 февраля 2020

Чтобы получить корреляцию Спирмена с факторами, вам нужно преобразовать их в их основную цифру c код:

cor(as.numeric(x), as.numeric(y), method="spearman")
# [1] 0.9486833
cor.test(as.numeric(x), as.numeric(y), method="spearman")
# 
#   Spearman's rank correlation rho
# 
# data:  as.numeric(x) and as.numeric(y)
# S = 0.51317, p-value = 0.05132
# alternative hypothesis: true rho is not equal to 0
# sample estimates:
#       rho 
# 0.9486833 
# 
# Warning message:
# In cor.test.default(as.numeric(x), as.numeric(y), method = "spearman") :
#   Cannot compute exact p-value with ties

Обратите внимание на предупреждение о связях, которые затрудняют вычисление точного p-значения. Вы можете использовать spearman_test в пакете coin для данных со связями:

library(coin)
spearman_test(as.numeric(x)~as.numeric(y))
# 
#   Asymptotic Spearman Correlation Test
# 
# data:  as.numeric(x) by as.numeric(y)
# Z = 1.6432, p-value = 0.1003
# alternative hypothesis: true rho is not equal to 0
...