384
Le logiciel R - Effectuer des analyses statistiques
Astuce
Notez qu’il est possible de programmer soi-mˆ eme ces coefficients en
traduisant simplement la formule de τ b en instructions R :
> Kendall.taub <- function(x,y) {
+ a1 <- sign(outer(as.numeric(x),as.numeric(x),"-"))
+ a2 <- sign(outer(as.numeric(y),as.numeric(y),"-"))
+ num <- sum(a1 * a2)
+ N <- length(x)
+ b1 <- sum(margin.table(table(x,y),1)^2)
+ b2 <- sum(margin.table(table(x,y),2)^2)
+ denom <- sqrt((N^2-b1) * (N^2-b2))
+ taub <- num / denom
+ return(taub)
+ }
> Kendall.taub(viande,poisson)
[1] -0.1583088
9.5.2.2 Coefficient ρ de corr´ elation des rangs de Spearman
Il faut commencer par calculer les rangs (fonction rank()) des individus
pour la variable X (not´ es x i ) et pour la variable Y (not´ es y i ). En cas d’ex æquo,
il faut assigner comme mˆ eme rang aux valeurs ´ egales la moyenne de leurs positions dans l’ordre croissant des valeurs (ce que fait la fonction rank() par
d´ efaut).
Lorsqu’il n’y a pas d’ex æquo, le coefficient de corr´ elation des rangs de
Spearman est donn´ e par la formule suivante :
ρ = 1 −
6
N
i=1 d
2
i
N(N 2 − 1)
avec d i = x i − y i .
En pr´ esence de valeurs ex æquo, il faut utiliser le coefficient de corr´ elation
classique de Pearson entre les rangs :
ρ =
N(
N
i=1 x i y i ) − (
N
i=1 x i )(
N
i=1 y i )
N(
N
i=1 x
2
i ) − (
N
i=1 x i ) 2
N(
N
i=1 y
2
i ) − (
N
i=1 y i ) 2
.
Pour l’obtenir sous R, on peut donc utiliser les fonctions rank() et cor(),
ou bien directement la fonction cor() avec la valeur d’entr´ ee "spearman" de
son param` etre method.
> cor(rank(matgras),rank(situation))
[1] 0.008787643
> cor(as.numeric(matgras),as.numeric(situation),method="spearman")
[1] 0.008787643
Le logiciel R - Effectuer des analyses statistiques
Astuce
Notez qu’il est possible de programmer soi-mˆ eme ces coefficients en
traduisant simplement la formule de τ b en instructions R :
> Kendall.taub <- function(x,y) {
+ a1 <- sign(outer(as.numeric(x),as.numeric(x),"-"))
+ a2 <- sign(outer(as.numeric(y),as.numeric(y),"-"))
+ num <- sum(a1 * a2)
+ N <- length(x)
+ b1 <- sum(margin.table(table(x,y),1)^2)
+ b2 <- sum(margin.table(table(x,y),2)^2)
+ denom <- sqrt((N^2-b1) * (N^2-b2))
+ taub <- num / denom
+ return(taub)
+ }
> Kendall.taub(viande,poisson)
[1] -0.1583088
9.5.2.2 Coefficient ρ de corr´ elation des rangs de Spearman
Il faut commencer par calculer les rangs (fonction rank()) des individus
pour la variable X (not´ es x i ) et pour la variable Y (not´ es y i ). En cas d’ex æquo,
il faut assigner comme mˆ eme rang aux valeurs ´ egales la moyenne de leurs positions dans l’ordre croissant des valeurs (ce que fait la fonction rank() par
d´ efaut).
Lorsqu’il n’y a pas d’ex æquo, le coefficient de corr´ elation des rangs de
Spearman est donn´ e par la formule suivante :
ρ = 1 −
6
N
i=1 d
2
i
N(N 2 − 1)
avec d i = x i − y i .
En pr´ esence de valeurs ex æquo, il faut utiliser le coefficient de corr´ elation
classique de Pearson entre les rangs :
ρ =
N(
N
i=1 x i y i ) − (
N
i=1 x i )(
N
i=1 y i )
N(
N
i=1 x
2
i ) − (
N
i=1 x i ) 2
N(
N
i=1 y
2
i ) − (
N
i=1 y i ) 2
.
Pour l’obtenir sous R, on peut donc utiliser les fonctions rank() et cor(),
ou bien directement la fonction cor() avec la valeur d’entr´ ee "spearman" de
son param` etre method.
> cor(rank(matgras),rank(situation))
[1] 0.008787643
> cor(as.numeric(matgras),as.numeric(situation),method="spearman")
[1] 0.008787643
