Corrélation de Spearman et liens
Je suis de calcul de Spearman rho sur de petits ensembles de paires de classement.
Spearman est bien connu pour ne pas traiter les liens correctement. Par exemple, la prise de 2 séries de 8 classement, même si les 6 sont des liens dans l'un des deux ensembles, la corrélation est jusqu'à très haut:
> 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
Et la valeur de p <.05, qui semble être une très haute signification statistique de ces données.
Est-il un liens-version corrigée de Spearman dans R?
Quelle est la meilleure formule à la date de la calculer avec beaucoup de liens?
source d'informationauteur Mulone
Vous devez vous connecter pour publier un commentaire.
Bien, Kendall tau rank correlation est également un non-paramétrique du test statistique de la dépendance entre deux ordinal (ou de rang-transformé) variables-comme de Spearman, mais à la différence de Spearman, pouvez gérer les liens.
Plus précisément, il y a trois Kendall tau statistiques--la protéine tau, tau-b, et le tau-c. tau-b est spécifiquement adapté pour gérer les liens.
Le tau-b statistique poignées liens (c'est à dire, les deux membres de la paire ont la même valeur ordinale) par un diviseur terme, qui représente la moyenne géométrique entre le nombre de paires ne sont pas liés sur x et le nombre ne sont pas liés sur y.
Kendall tau n'est pas de Spearman est--ils ne sont pas les mêmes, mais ils sont également très similaires. Vous aurez à décider, en fonction du contexte, si les deux sont assez similaires tels on peut être substitué à l'autre.
Par exemple, tau-b:
P: nombre de paires concordantes ('concordants" désigne le rang de chaque membre de la paire de points de données est d'accord)
Q: nombre de discordants paires
X0: nombre de paires ne sont pas liés sur x
Y0: nombre de paires ne sont pas liés sur y
Il est en fait une variante de Spearman rho qui tient explicitement compte de liens. Dans des situations où j'avais besoin d'un non-paramétrique rang de corrélation statistique, j'ai toujours choisi la protéine tau au cours de rho. La raison en est que rho sommes la carré erreursalors que tau sommes l'absolu
les écarts. Étant donné que les deux tau et rho sont compétentes statistiques, et nous sont laissées au choix, d'un linéaire de pénalité sur les écarts (tau) m'a toujours semblé, d'une manière plus naturelle d'exprimer rang de corrélation. Ce n'est pas une recommandation, votre contexte peut être très différente et n'en décident autrement.
Je pense que
exact=FALSE
fait le tour.cor.test avec method="spearman" en fait, calcule le coefficient de Spearman corrigé pour les liens.
Je l'ai vérifié par "manuellement" le calcul de la cravate-corrigé et cravate-non corrigée de Spearman coefficients à partir des équations dans la Zar, 1984, l'Analyse Biostatistique. Voici le code en remplaçant simplement vos propres noms de variables pour vérifier par vous-même:
Liens-corrigé de Spearman
À l'aide de
method="spearman"
vous donne les liens-corrigé de Spearman. Spearman rho, selon la définition, est tout simplement le Pearson de l'échantillon, le coefficient de corrélation calculées pour rangs des données de l'échantillon. De sorte qu'il fonctionne à la fois en présence et en absence de liens.Vous pouvez voir qu'après le remplacement de vos données d'origine avec leurs rangs (midranks pour les liens) et à l'aide de
method="pearson"
, vous obtiendrez le même résultat:Avis, il existe une procédure simplifiée pas de liens de Spearman versionqui est en fait utilisé dans
cor.test()
mise en œuvre en l'absence de liens, mais il est équivalente à la définition ci-dessus.P-valeur
En cas d'ex æquo dans les données exactes de p-valeurs ne sont pas calculé ni de Spearman, ni pour Kendall mesures (dans
cor.test()
mise en œuvre), d'où l'avertissement. Comme mentionné dans d'Eduardo post, pour ne pas obtenir un message d'avertissement vous devez définirexact=FALSE
J'ai eu un problème similaire et en lisant les réponses ici et le fichier d'aide sur la R j'ai vu que, lorsque vous avez des liens, vous devez ajouter le paramètre
exact = FALSE
) à lacor.test()
fonction. En ajoutant à cela, il n'a pas essayer de calculer exactement la valeur P, mais plutôt "la statistique de test est l'estimation de l'échelle de moyenne nulle et de variance unité, et est d'environ distribuées normalement".Le résultat, dans mon cas, c'était exactement la même, mais sans l'avertissement sur les liens.