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.
![](https://www.google.com/images/icons/product/drive-32.png)
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)