tabla - Correlación de spearman y lazos.
tabla de correlacion de spearman (6)
Bueno, Kendall tau rank correlation es también una prueba no paramétrica para la dependencia estadística entre dos variables ordinales (o transformadas por rango), como Spearman''s, pero a diferencia de Spearman, puede manejar los empates .
Más específicamente, hay tres estadísticas tau de Kendall: tau-a, tau-b y tau-c. tau-b está específicamente adaptado para manejar lazos.
El estadístico tau-b maneja los lazos (es decir, ambos miembros del par tienen el mismo valor ordinal) por un término divisor, que representa la media geométrica entre el número de pares no vinculados en x y el número no vinculado en y.
La tau de Kendall no es de Spearman, no son lo mismo, pero también son bastante similares. Deberá decidir, según el contexto, si los dos son lo suficientemente similares para que uno pueda ser sustituido por el otro.
Por ejemplo, tau-b :
Kendall_tau_b = (P - Q) / ( (P + Q + Y0)*(P + Q + X0) )^0.5
P : número de pares concordantes (''concordante'' significa los rangos de cada miembro del par de puntos de datos de acuerdo)
Q : número de pares discordantes
X0 : número de pares no empatados en x
Y0 : número de pares no empatados en y
De hecho, hay una variante del rho de Spearman que explícitamente explica los lazos. En situaciones en las que necesitaba una estadística de correlación de rango no paramétrica, siempre he elegido tau sobre rho. La razón es que rho suma los errores al cuadrado , mientras que tau suma las discrepancias absolutas . Dado que tanto tau como rho son estadísticas competentes y nos queda por elegir, siempre me ha parecido una penalización lineal en las discrepancias (tau), una forma más natural de expresar la correlación de rango. Eso no es una recomendación, su contexto podría ser muy diferente y dictar lo contrario.
Estoy calculando la rho de Spearman en pequeños conjuntos de clasificaciones pareadas. Spearman es bien conocido por no manejar los lazos adecuadamente. Por ejemplo, tomando 2 conjuntos de 8 clasificaciones, incluso si 6 son empates en uno de los dos conjuntos, la correlación es muy alta:
> cor.test(c(1,2,3,4,5,6,7,8), c(0,0,0,0,0,0,7,8), method="spearman")
Spearman''s rank correlation rho
S = 19.8439, p-value = 0.0274
sample estimates:
rho
0.7637626
Warning message:
Cannot compute exact p-values with ties
Y el valor p <.05, que parece ser un significado estadístico bastante alto para estos datos. ¿Hay una versión corregida de empates de Spearman en R? ¿Cuál es la mejor fórmula hasta la fecha para calcularla con muchos vínculos?
Creo que exact=FALSE
hace el truco.
cor.test(c(1,2,3,4,5,6,7,8), c(0,0,0,0,0,0,7,8), method="spearman", exact=FALSE)
Spearman''s rank correlation rho
data: c(1, 2, 3, 4, 5, 6, 7, 8) and c(0, 0, 0, 0, 0, 0, 7, 8)
S = 19.8439, p-value = 0.0274
alternative hypothesis: true rho is not equal to 0
sample estimates:
rho
0.7637626
El documento "Un nuevo coeficiente de correlación de rango con aplicación al problema de clasificación de consenso" tiene como objetivo resolver el problema de clasificación con empate. También menciona que Tau-b no debe utilizarse como una medida de correlación de clasificación para medir el acuerdo entre los ordenamientos débiles.
Emond, EJ y Mason, DW (2002), Un nuevo coeficiente de correlación de rangos con aplicación al problema de clasificación por consenso. J. Multi-Crit. Decis. Anal., 11 : 17-28. doi: 10.1002 / mcda.313
Estaba teniendo un problema similar y al leer las respuestas aquí y el archivo de ayuda en RI vi que, cuando tiene vínculos, debe agregar el parámetro exact = FALSE
) a la función cor.test()
. Al agregar esto, no intenta calcular un valor de P exacto, sino que "el estadístico de prueba es la estimación escalada a la media de la varianza y la variación de la unidad, y se distribuye aproximadamente con normalidad". El resultado, en mi caso, fue exactamente el mismo, pero sin la advertencia sobre los empates.
cor.test(x, y, method = "spearm", exact = FALSE)
cor.test con method = "spearman" en realidad calcula el coeficiente de Spearman corregido para los empates. Lo verifiqué calculando "manualmente" los coeficientes de Spearman corregidos y no corregidos a partir de las ecuaciones en Zar 1984, Análisis bioestadístico. Aquí está el código: simplemente sustituya sus propios nombres de variables para comprobarlo usted mismo:
ym <- data.frame(lousy, dors) ## my data
## ranking variables
ym$l <- rank(ym$lousy)
ym$d <- rank(ym$dors)
## calculating squared differences between ranks
ym$d2d <- (ym$l-ym$d)^2
## calculating variables for equations 19.35 and 19.37 in Zar 1984
lice <- as.data.frame(table(ym$lousy))
lice$t <- lice$Freq^3-lice$Freq
dorsal <- as.data.frame(table(ym$dors))
dorsal$t <- dorsal$Freq^3-dorsal$Freq
n <- nrow(ym)
sum.d2 <- sum(ym$d2d)
Tx <- sum(lice$t)/12
Ty <-sum(dorsal$t)/12
## calculating the coefficients
rs1 <- 1 - (6*sum.d2/(n^3-n)) ## "standard" Spearman cor. coeff. (uncorrected for ties) - eq. 19.35
rs2 <- ((n^3-n)/6 - sum.d2 - Tx - Ty)/sqrt(((n^3-n)/6 - 2*Tx)*((n^3-n)/6 - 2*Ty)) ## Spearman cor.coeff. corrected for ties - eq.19.37
##comparing with cor.test function
cor.test(ym$lousy,ym$dors, method="spearman") ## cor.test gives tie-corrected coefficient!
Lanza corregida por lazos
Usar
method="spearman"
te da el Spearman corregido por los lazos. La rho de Spearman, según la definición, es simplemente el coeficiente de correlación muestral de Pearson calculado para los rangos de datos muestrales. Así funciona tanto en presencia como en ausencia de vínculos. Puedes ver que después de reemplazar tus datos originales con sus rangos (midranks para empates) y usarmethod="pearson"
, obtendrás el mismo resultado:> cor.test(rank(c(1,2,3,4,5,6,7,8)), rank(c(0,0,0,0,0,0,7,8)), method="pearson") Pearson''s product-moment correlation data: rank(c(1, 2, 3, 4, 5, 6, 7, 8)) and rank(c(0, 0, 0, 0, 0, 0, 7, 8)) t = 2.8983, df = 6, p-value = 0.0274 alternative hypothesis: true correlation is not equal to 0 95 percent confidence interval: 0.1279559 0.9546436 sample estimates: cor 0.7637626
Tenga en cuenta que existe una versión simplificada de Spearman de no vínculos , que de hecho se utiliza en la
cor.test()
decor.test()
en ausencia de vínculos, pero es equivalente a la definición anterior.Valor de p
En el caso de vínculos en los datos, los valores p exactos no se calculan ni para Spearman ni para las medidas de Kendall (dentro de la implementación de
cor.test()
), de ahí la advertencia. Como se mencionó en la publicación de Eduardo, para no recibir una advertencia, debe establecerexact=FALSE
,