Statistiques Univariées et Bivariées
Contenu :
Ce sujet de TD est un condensé des deux premiers TD (analyse univariée et bi-variée). Vous allez devoir réaliser tout ce que vous avez vu durant les précédentes séances.
Pré-requis pour la séance :
- La compréhension totale des TD1 et TD2.
Quelques opérations utiles sur R :
a = 2
b = 4
a + b # addition
a - b # soustraction
a * b # multiplication
a / b # division
a**2 # élévation au carré
c = c(1,2,3,4,5,6) # création d'une liste de valeur
sum(c) # somme d'une liste, fonctionne aussi pour sum(data$colonne)
sum(c - a) # somme d'une liste où l'on a soustrait une valeur (a)
# à tous les éléments de c
a * c # multiplie chaque élement de c par a
Présentation du jeu de données
Pour cette séance, vous allez travailler sur les données météorologiques de Météo-France Nouvelle-Calédonie, à deux périodes différentes : Janvier 2024 et Juillet 2024.
poste | lat | lon | aaaamm | alt | pre | tem | hum | sea |
---|---|---|---|---|---|---|---|---|
BELEP AEROD. | -19.71983 | 163.6610 | 202401 | 88 | 110.9 | 28.3 | 79 | 1339 |
BELEP AEROD. | -19.71983 | 163.6610 | 202407 | 88 | 57.4 | 22.3 | 76 | 1339 |
BOURAKE | -21.94250 | 165.9998 | 202401 | 53 | 73.0 | 29.1 | 71 | 440 |
BOURAKE | -21.94250 | 165.9998 | 202407 | 53 | 53.6 | 21.4 | 76 | 440 |
POE | -21.60800 | 165.3998 | 202401 | 6 | 56.7 | 27.5 | 74 | 596 |
Avec :
poste
: Le nom de la station installéelat
: La latitude de la station installéelon
: La longitude de la station météorologiqueaaaamm
: Le mois et l’année de mesure (Janvier 2024 et Juillet 2024 sont au format 202401 et 202407, respectivement)alt
: L’altitude à laquelle la station est installée (en mm)pre
: Le cumul de précipitations mensuelles mesuré (en mm) durant la périodeaaaamm
tem
: La température moyenne mesurée (en °C) durant la périodeaaaamm
hum
: L’humidité moyenne mesurée (en %) durant la périodeaaaamm
sea
: La distance de la station par rapport à la mer (en m)
Pour chacune de ces deux périodes, 20 stations ont mesuré les variables météorologiques énoncées.
Chargement du jeu de données (uniquement pour la version R)
Jusqu’à présent, les données que vous avez utilisées en TD étaient
déjà disponibles dans le logiciel R. Pour ce TD, vous allez travailler
sur des données externes (comme si vous aviez récolté ces données durant
vos prélèvements terrain). Veuillez donc suivre ces étapes pour charger
des données externes. Pour charger le jeu de données externes qui est un
fichier Excel (xlsx
), vous devrez installer une librairie
(une extension) sur R.
Dans la console R, tapez ces deux commandes :
install.packages("readxl") # pour installer la librairie
library("readxl") # pour la rendre utilisable dans votre session
Lorsque vous taperez install.packages("readxl")
dans la
console, vous aurez ce premier message :
Cliquez sur Oui
.
Puis, vous aurez ce second message :
Cliquez sur Oui
également.
Enfin, vous aurez un message de type “Secure CRAN mirrors”. Cliquez
sur 0-Cloud [https]
(tout en haut de la liste) puis sur
OK
. La package va s’installer. Cela devrait prendre moins
de 2min.
Une fois l’installation terminée, vous pouvez taper
library("readxl")
dans la console.
Analyse univariée
1.1. Chargement des données
1.1.1. Chargez les données en utilisant la commande suivante :
meteo = read_excel("chemin/vers/meteo.xlsx")
# la fonction read_excel est contenu dans
# la librairie readxl que vous venez d'installer
où chemin/vers/meteo.xlsx
est le chemin d’accès menant
vers le dossier où est situé le fichier de données que vous avez
téléchargées, le chemin devrait être de la forme
C:/Users/rgovan/Téléchargements/meteo.xlsx
.
Si vous n’avez pas encore téléchargé les données, cliquez ici.
Sur Windows, vous pouvez récupérer le chemin du fichier en maintenant la touche
Maj
du clavier, puis en faisant un clique-droit sur le fichiermeteo.xlsx
dans votre Explorateur Windows. Vous devrez avoir l’optionCopier en tant que chemin d'accès
. Cliquez dessus, puis vous pourrez faire un clique-droitColler
dans votre fonctionread_excel()
. Assurez-vous que le chemin d’accès dans la fonction est bien entres guillemets.
Après avoir lancé read_excel()
, vous pouvez taper
head(meteo)
pour vérifier que les données ont bien été
chargées.
1.2. Séparation des données par période
1.2.1. Créez deux variables meteo01
et
meteo07
pour filtrer les données météorologiques selon la
période de mesure.
Sur R, pour filtrer un tableau selon une colonne (ici,
aaaamm
), tapez la commande suivante :
meteo01 = meteo[meteo$aaaamm == 202401, ]
# data[cond1, cond2] permet de filtrer les lignes selon la condition cond1
# et les colonnes selon la condition cond2
# la syntaxe `a == b` permet de vérifier que `a` et `b` sont identiques.
# elle est complètement différente de `a = b` qui (sur R) est la syntaxe
# pour affecter `b` à la variable `a` que vous créez.
poste | lat | lon | aaaamm | alt | pre | tem | hum | sea |
---|---|---|---|---|---|---|---|---|
BELEP AEROD. | -19.71983 | 163.6610 | 202401 | 88 | 110.9 | 28.3 | 79 | 1339 |
BOURAKE | -21.94250 | 165.9998 | 202401 | 53 | 73.0 | 29.1 | 71 | 440 |
POE | -21.60800 | 165.3998 | 202401 | 6 | 56.7 | 27.5 | 74 | 596 |
NAKUTAKOIN | -22.17117 | 166.4355 | 202401 | 3 | 78.3 | 27.9 | 72 | 35 |
HOUAILOU P | -21.27833 | 165.6280 | 202401 | 11 | 235.7 | 26.9 | 83 | 290 |
MOUE | -22.58983 | 167.4522 | 202401 | 95 | 48.9 | 26.3 | 83 | 3027 |
1.2.2. Faites de même pour l’autre période.
1.3. Statistiques descriptives
1.3.1. Calculer les minimum, moyenne, médiane, maximum et variance des précipitations pour chaque période.
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 24.40 68.92 105.25 131.47 165.65 331.80
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 18.80 56.98 97.25 134.05 225.07 419.20
On observe qu’en Janvier 2024 (qui est la saison dite chaude et pluvieuse), les précipitations mesurées ont été largement supérieures aux précipitations en Juillet 2024 (qui est la saison dite froide et sèche).
1.3.2. Faites de même sur l’humidité et la température.
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 70.00 73.75 77.50 77.60 82.00 87.00
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 73.00 74.75 76.00 77.10 78.25 85.00
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 25.10 26.52 27.65 27.41 28.23 29.10
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 19.00 20.48 20.90 20.98 21.52 22.60
Ces statistiques descriptives confirment bien notre observation sur les précipitations où les deux saisons ont bien été mesurées.
1.4. Visualisation
1.4.1. Pour mieux visualiser la différence entre les deux saisons, affichez les boxplots de températures dans un même graphique.
Pour afficher deux boxplots dans un même graphique, vous pouvez taper (et adapter) la commande suivante :
boxplot(boxplot1, boxplot2,
main="Distribution de températures en Janvier et Juillet 2024",
names=c("nom du boxplot1", "nom du boxplot2"),
)
Bien évidemment, vous remplacerez boxplot1
et
boxplot2
par les données correspondantes.
boxplot(meteo01$tem, meteo07$tem,
main="Distribution de températures en Janvier et Juillet 2024",
names=c("Janvier", "Juillet"),
ylab="Température (°C)"
)
Analyse bi-variée
2.1. Covariance
2.1.1. Toutes périodes confondues, y a-t-il des variables indépendantes ? Justifiez.
## alt pre tem hum sea
## alt 5408.80769 3976.42308 -43.676282 180.628205 121585.923
## pre 3976.42308 9387.14759 -64.047795 302.498974 155559.052
## tem -43.67628 -64.04779 11.605378 -2.440128 -1437.439
## hum 180.62821 302.49897 -2.440128 18.387179 6985.882
## sea 121585.92308 155559.05231 -1437.438718 6985.882051 8407978.349
Il n’y a aucune variable indépendante puisque toutes les covariances sont différentes de 0. Rappel : Si Cov\((X,Y) \neq 0\), alors \(X\) et \(Y\) ne sont pas indépendants.
2.2. Corrélation
2.2.1. Toutes périodes confondues, y a-t-il des variables fortement corrélées ?
Nous observons une forte corrélation entre les précipitations et l’humidité, peu importe la saison puisque la corrélation est de 73%.
2.3. Régression linéaire
2.3.1. Toutes périodes confondues, déterminez l’équation de la droite expliquant l’humidité en fonction des précipitations.
##
## Call:
## lm(formula = hum ~ pre, data = meteo)
##
## Residuals:
## Min 1Q Median 3Q Max
## -6.2814 -1.9836 -0.3341 2.3161 8.3524
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 73.071835 0.805313 90.737 < 2e-16 ***
## pre 0.032225 0.004921 6.548 1.01e-07 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.978 on 38 degrees of freedom
## Multiple R-squared: 0.5302, Adjusted R-squared: 0.5178
## F-statistic: 42.88 on 1 and 38 DF, p-value: 1.012e-07
2.3.2. Donnez l’équation de la droite estimé. Interprétez.
La droite expliquant l’humidité en fonction des précipitations est donnée par l’équation suivante : \(y=0.032225x + 73.071835\)
Avec une pente positive de 0.032225, l’équation nous montre que lorsque les précipitations augmentent de 1 mm, l’humidité augmente de 0.032225 point.
2.3.3. Calculez via R, les termes \(a\) et \(b\), sans utiliser la sortie de la fonction
lm()
.
Rappel : Pour un ensemble de données sous la forme de \(n\) paires \((x_i, y_i)\), \(y_i\) est la variable à expliquer en
fonction de \(x_i\), la variable
explicative. Par la méthode des moindres carrés ordinaire, la droite
ajustée est de la forme : \(y = ax +
b\), où \(a\) est la pente de la
droite et \(b\) est l’ordonnée à
l’origine (intercept).
Ainsi, la pente et l’ordonnée sont respectivement définies par :
\(\qquad\qquad a = \frac{\text{Cov}(X,Y)}{\sigma^2_X}\qquad\) avec \(\sigma^2_X\) la variance de \(X\)
\(\qquad\qquad b = \bar{Y} - \frac{\text{Cov}(X,Y)}{\sigma^2_X}\bar{X}\quad\) avec \(\bar{X}\) et \(\bar{Y}\), la moyenne observée des variables \(X\) et \(Y\), respectivement.
## 0.0322248 73.07184
2.3.4. Calculez via R, le coefficient de détermination \(R^2\), sans utiliser la sortie de la
fonction lm()
.
Rappel : Le coefficient de détermination est défini par :
\(\qquad\qquad R^2 = 1 - \frac{\sum\limits_{i=1}^{n} (y_i - \hat{y_i})^2}{\sum\limits_{i=1}^{n} (y_i - \bar{y})^2}\qquad\) avec
- \(y_i\) la valeur observée au point \(x_i\) (la valeur que l’on retrouve dans le jeu de données au point \(x_i\)) ;
- \(\hat{y_i}\) la valeur estimée au point \(x_i\) (la valeur déterminée par l’équation de la droite au point \(x_i\)) ;
- \(\bar{y}\) la moyenne observée de la variable \(y\).
Pour vous aider, vous pouvez calculer chaque élément de l’équation
séparément, puis les rassembler à la fin.
Par exemple en créant une variable numerateur
pour calculer
\(\sum (y_i - \hat{y_i})^2\), puis une
variable denominateur
pour calculer \(\sum (y_i - \bar{y})^2\).
# on calcule toutes les valeurs estimées selon les précipitations observées
ychap = a*meteo$pre + b
# on calcule le numérateur
numerateur = sum( (meteo$hum - ychap)**2 )
# on calcule le dénominateur
denominateur = sum( (meteo$hum - mean(meteo$hum))**2 )
# on calcule le coefficient de détermination
r2 = 1 - (numerateur / denominateur)
print(r2)
## [1] 0.5301503
2.3.5. L’équation est-elle parfaitement ajustée ? Que pouvez-vous en conclure ?
L’équation n’est pas parfaitement ajustée puisque son coefficient de détermination \(R^2\) est de 53%, avec un coefficient ajustée de 52%. Cela peut être en raison de deux causes :
- Il n’y a pas assez de mesures permettant de prouver que les précipitations causent une hausse de l’humidité.
- À elle seule, la précipitation n’est pas la seule cause d’une hausse de l’humidité.
2.3.6. Affichez dans un graphique, l’humidité en fonction des précipitations. Intégrez sur le graphique, la droite estimée par la régression linéaire.
Indication : Utilisez la fonction plot(x, y)
où
x
est votre série de valeurs en abscisses et y
est votre série de valeurs en ordonnées (en fonction de x
).
Pour afficher la droite, utilisez la fonction abline(model)
où model
est votre régression ajustée sur les données.
plot(meteo$pre, meteo$hum, main="Humidité en fonction des précitpitations",
xlab="Précipitations", ylab="Humidité")
abline(mod, col="red")