Déterminer s'il y a un lien entre des variables quantitatives et/ou qualitatives/catégorielles

Un tuto simple pour débuter dans l'analyse de données sous R


L'essentiel de cette page !

Comment savoir quel test statistique faire ? Cette page rappelle quels tests faire dans certaines situations très classiques, quelles fonctions sont utiles pour cela et comment les utiliser.

Statistiques_choix_test_R.pptx

0- Prenons un jeu de données qui nous permettra de nous entraîner et de comprendre les exemples.

Le code ci-dessous nous permet d'avoir un jeu de données qui décrivent des mesures réalisées mois par mois d'ensoleillement, d'ozone, et de vent. On modifie exprès certaines variables pour qu'elles soient qualitatives (Au lieu d'une mesure d'Ozone, on dit seulement quand on a une mesure de type : "un peu", "moyen", beaucoup").

Code à copier-coller "bêtement" :-)

data(airquality)

Solar.Force <- ifelse(airquality$Solar.R<quantile(airquality$Solar.R,probs=0.25,na.rm=T), "léger",ifelse(airquality$Solar.R>quantile(airquality$Solar.R,probs=0.75,na.rm=T),"fort","moyen"))

Ozone <- ifelse(airquality$Ozone<quantile(airquality$Ozone,probs=0.25,na.rm=T), "peu",ifelse(airquality$Ozone>quantile(airquality$Ozone,probs=0.75,na.rm=T),"beaucoup","moyen"))

airquality<- data.frame(airquality[,-c(1,2)],Solar.Force,Ozone)

View(airquality)

1- Etablir un lien entre deux variables quantitatives

Exemple : y a-t-il un lien entre le poids et la taille ?

Etablir un lien entre deux variables, c'est faire une corrélation.

La corrélation sous R s'établit avec cor.test() qui permet de savoir si une corrélation est significative ou non grâce à la p-value (qui doit être inférieure en général à 0,05 (plus petit, c'est mieux).

Exemple : établir une dépendance entre la température et l'intensité du vent.

cor.test(airquality$Wind,airquality$Temp)

# p-value = 2.642e-09 - cor = -0.4579879

On a ainsi une corrélation négative significative : plus il y a du vent, moins il fait chaud.

On peut ensuite envisager d'établir un modèle de régression linéaire avec lm() :

reg <- lm(airquality$Temp~airquality$Wind)

plot(airquality$Wind,airquality$Temp) ; abline(reg,col="red")

Le graphique idéal pour illustrer cela sera un diagramme de dispersion ou nuage de points

2- Etablir un lien entre une variable quantitative et une variable qualitative

Exemple : y a-t-il un lien entre le poids et le sexe ?

Etablir une relative entre une variable quantitative et une variable qualitative, c'est faire des comparaisons de moyennes ou de médianes.

Ex : Si je veux établir un lien entre Taille et Sexe : cela revient à comparer la taille moyenne des hommes et des femmes pour établir s'il y a une différence.

De façon classique : comparer deux échantillons, c'est faire un test de Student (t.test()) (mais il faut que les échantillons aient une répartition normale !).

Si on compare plus de deux échantillons (comme la croissance du maïs pour 3 engrais A, B et C), on pensera plutôt à une ANOVA (anova()).

Mais ça dépend de ce qu'on compare, il existe ainsi plein de test pour comparer moyennes ou médianes !

Ou plus simple ! On utilise la commande m.test() de la librairie {KefiR} - Suivre ce lien pour installer {KefiR}

Exemple : on vérifie que le niveau d'Ozone à un effet sur la température :

m.test(airquality$Temp,airquality$Ozone)

m.test() va réaliser tous les tests nécessaires et appropriées et vous renvoyer un bilan complet.

Vous pouvez obtenir le code nécessaire pour faire pareil que m.test() en faisant :

m.test(airquality$Temp,airquality$Ozone,code=T)

Le graphique idéal pour illustrer cela sera un diagramme en barres

Diagrammes possibles : boxplot ou diagramme en barres :

# Boîtes à moustaches

boxplot(airquality$Temp~airquality$Ozone)

# Diagramme en barres

barplot(by(airquality$Temp,airquality$Ozone,mean))

3- Etablir un lien entre deux variables qualitatives

Exemple : y a-t-il un lien entre le sexe et le fait d'être malade ?

Etablir une relation entre deux variables qualitatives, c'est faire un khi² d'indépendance.

Exemple : on souhaite établir le un lien entre l'ensolleiement (léger, moyen, fort) et le taux d'ozone (léger, moyen, fort) :

1) D'abord, on réalise un tableau de contingent :

tablo <- table(airquality$Ozone,airquality$Solar.Force)

tablo

fort léger moyen

beaucoup 6 0 21

moyen 16 14 27

peu 5 15 7

2) Ensuite, je réalise de test de Khi² avec chisq.test() :

chisq.test(tablo)

Pearson's Chi-squared test


data: tablo

X-squared = 24.248, df = 4, p-value = 7.124e-05

On voit ainsi un lien significatif entre le niveau d'Ozone et le niveau d'ensoleillement.

3) Représentations graphiques

# Barres cumulées

barplot(tablo)

# Barres accolées

barplot(tablo,beside=TRUE)

4- Voir toutes ces relations en un seul graphique

Toutes ces relations peuvent être vues avec corrigraph() du packages {KefiR}

  • Lien bleu : corrélation positive

  • Lien rouge : corrélation négative

  • Lien orange : différences de moyennes/médianes d'une catégorie à l'autre

  • Lien rose : lien entre deux variables qualitatives

  • Rond blanc : variable quantitative, et - Rond gris : variable qualitative/catégories.

corrigraph(airquality,mu=TRUE, prop=TRUE)