# Chargez les packages
library(readxl)
library(gtools)
library(ggplot2)
library(dplyr)
library(car)
# Importez la table (disponible ici : https://gitlab.huma-num.fr/tfeuillet/cours/data)
df <- read_excel("data/table_climato.xlsx")
# Discrétisez la variable "ampl" en terciles et renommez les niveaux
df$amplDisc <- quantcut(df$ampl, 3)
levels(df$amplDisc) <- c("faible","moyenne","forte")
# Discrétise la variable "jrs_neige" en quartiles et renommez les niveaux
df$neigeDisc <- quantcut(df$jrs_neige, 4)
levels(df$neigeDisc) <- c("faible","moyenne","forte","très forte") Statistiques bivariées
Préalablement à l’exercice, chargez les packages, puis ouvrez et préparez la table ainsi :
1 Relations entre deux variables quantitatives
1.1 Caractérisation de la relation
On va chercher ici à étudier la relation entre la distance au littoral et l’amplitude thermique. On commence par observer la forme du nuage de points (graphique cartésien) entre ces deux variables, pour juger de la nature, du sens et de l’intensité d’une éventuelle relation.
plot1 <- ggplot(df, aes(x=dist_litt, y=ampl)) + geom_point() +
labs(title="Relation amplitude thermique vs distance au littoral")+
xlab("Distance au littoral (km)") + ylab("Amplitude thermique (degrés)")+
theme(plot.title = element_text(face = "bold"))
plot1
1.2 Coefficient de corrélation linéaire
On constate que la relation est linéaire et positive. On peut donc calculer le coefficient de corrélation linéaire de Bravais-Pearson (si la relation n’avait pas été linéaire, le coefficient de Spearman (basé sur les rangs et non sur les valeurs) aurait été préféré) :
cor.test(df$ampl, df$dist_litt)
Pearson's product-moment correlation
data: df$ampl and df$dist_litt
t = 10.773, df = 31, p-value = 5.258e-12
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
0.7842384 0.9438243
sample estimates:
cor
0.888367
Rappelons que comme pour tout test de liaison, l’hypothèse nulle est l’indépendance des variables. Si la p-value est > 0.05, on rejette l’hypothèse nulle (il y a donc une relation significative entre les variables). Ce coefficient est égal à 0.89 et très fortement significatif. Il y a donc bien une forte corrélation positive entre les deux variables.
2 Relations entre deux variables qualitatives
L’analyse de la relation entre deux variables qualitatives passe par le tableau de contigence. Le principal test utilisé pour vérifier cette relation est le test du \(\chi^2\).
Nous cherchons ici à tester la relation entre nos deux variables discrétisées (amplitude thermique et jours de neige). Le tableau de contingence était celui-ci :
| faible | moyenne | forte | très forte | |
|---|---|---|---|---|
| faible | 5 | 4 | 2 | 0 |
| moyenne | 2 | 4 | 5 | 1 |
| forte | 1 | 0 | 1 | 7 |
Comme certains effectifs sont très faibles (voire nuls) dans certaines cases du tableau, il convient de plutôt utiliser le test exact de Fisher :
fisher.test(df$amplDisc, df$neigeDisc)
Fisher's Exact Test for Count Data
data: df$amplDisc and df$neigeDisc
p-value = 0.001226
alternative hypothesis: two.sided
Juste pour montrer le code, essayons avec le test du \(\chi^2\) :
chi <- chisq.test(df$amplDisc, df$neigeDisc)Warning in chisq.test(df$amplDisc, df$neigeDisc): L’approximation du Chi-2 est
peut-être incorrecte
chi$p.value[1] 0.001040181
Le résultat est très proche.
3 Relations entre une variable qualitative et une variable quantitative
Cette approche consiste à vérifier si la moyenne (ou la variance, ou la proportion) d’une variable quantiative varie significativement selon les modalités d’une variable qualitative. Par exemple, est-ce que la température moyenne varie selon l’intensité de l’amplitude thermique (sous forme discrète) ?
boxplot(df$temp ~ df$amplDisc, col="grey50", xlab = "Amplitude thermique", ylab = "Température")
3.1 Test de Student
Le test de Student sert à comparer des moyennes dans deux groupes. Il faut que les variances soient identiques.
t.test(varX~varY, data=data) # test de Student3.2 ANOVA
Pour mettre en relation une variable quantitative avec une variable qualitative à plus de deux modalités, l’ANOVA (analyse de la variance) est adaptée. C’est un type de régression qui permet de voir dans quelle mesure les moyennes varient selon les modalités en questions.
anova <- aov(temp ~ amplDisc, data=df)
summary(anova) Df Sum Sq Mean Sq F value Pr(>F)
amplDisc 2 5.97 2.985 1.769 0.188
Residuals 30 50.61 1.687