Ce cours requiert d’avoir déjà été initié à R : Initiation à R.
La table est disponible sur le dépôt gitlab : Dépôt GitLab.
Préalablement à l’exercice, chargez les packages, puis ouvrez et préparez la table ainsi :
# Chargez les packageslibrary(readxl)library(gtools)library(ggplot2)library(dplyr)
Attachement du package : 'dplyr'
Les objets suivants sont masqués depuis 'package:stats':
filter, lag
Les objets suivants sont masqués depuis 'package:base':
intersect, setdiff, setequal, union
library(car)
Le chargement a nécessité le package : carData
Attachement du package : 'car'
L'objet suivant est masqué depuis 'package:dplyr':
recode
L'objet suivant est masqué depuis 'package:gtools':
logit
# 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 niveauxdf$amplDisc <-quantcut(df$ampl, 3) levels(df$amplDisc) <-c("faible","moyenne","forte") # Discrétise la variable "jrs_neige" en quartiles et renommez les niveauxdf$neigeDisc <-quantcut(df$jrs_neige, 4) levels(df$neigeDisc) <-c("faible","moyenne","forte","très forte")
1 Opérations sur des variables quantitatives
Voilà les fonctions de base en statistiques descriptives univariées :
Fonction
Signification
min(x)
Minimum
max(x)
Maximum
range(x)
Étendue
median(x)
Médiane
mean(x)
Moyenne
var(x)
Variance
sd(x)
Écart-type
quantile(x)
Quantiles
summary(x)
Moyenne, min-max et quantiles
psych::describe(x)
La totale
Pour le coefficient de variation, il faut faire le calcul manuellement :
cvAlt <-sd(df$alt) /mean(df$alt)cvAlt
[1] 1.097042
Souvent, on souhaite calculer ces statistiques pour plusieurs colonnes d’un coup. La fonction apply() est alors adaptée :
apply(df[,2:5], MARGIN =2, FUN ="mean") # Calcul des moyennes pour les colonnes 2 à 5
precip alt temp ampl
753.15152 146.48485 11.34545 15.71818
2 Opérations sur des variables quantitatives en fonction de catégories de variables qualitatives
Imaginons que l’on souhaite calculer la moyenne d’une variable selon différents groupes d’une autre variable :
aggregate(df$precip, by=list(df$amplDisc), FUN ="mean")
Group.1 x
1 faible 824.2500
2 moyenne 689.1667
3 forte 743.6667
psych::describeBy(df$precip, df$amplDisc, digits =2) # Plus complet
Descriptive statistics by group
group: faible
vars n mean sd median trimmed mad min max range skew kurtosis
X1 1 12 824.25 133.05 835 819.8 163.09 634 1059 425 0.15 -1.41
se
X1 38.41
------------------------------------------------------------
group: moyenne
vars n mean sd median trimmed mad min max range skew kurtosis se
X1 1 12 689.17 60.6 708 690.7 76.35 586 777 191 -0.21 -1.52 17.49
------------------------------------------------------------
group: forte
vars n mean sd median trimmed mad min max range skew kurtosis se
X1 1 9 743.67 122.62 731 743.67 109.71 588 992 404 0.69 -0.68 40.87
Avec dplyr, qui offre les solutions les plus maniables :
# A tibble: 3 × 4
amplDisc alt ppSd distLitt
<fct> <dbl> <dbl> <dbl>
1 faible 67.7 133. 67.8
2 moyenne 127. 60.6 258.
3 forte 278. 123. 459.
3 Les graphiques univariés
Quel que soit le graphique concerné, on peut toujours le produire via les fonctions de base ou ggplot2.
3.1 Histogrammes
hist(df$temp, col ="darkblue", border ="white", main ="Distribution des températures", xlab ="Temp. en degrés", ylab ="Fréquence")
ggplot(data = df, aes(temp)) +geom_histogram(bins =7, col ="white", fill ="darkblue")+labs(title ="Distribution des températures", x ="Temp. en degrés")
3.2 Boites à moustaches (boxplots)
boxplot(df$temp, col ="grey50", main ="Boxplot des températures")
Avec car::Boxplot() :
par(mfrow =c(1,2)) # syntaxe pour placer 2 figures côte à côteBoxplot(~ampl, data=df, col ="grey50", main ="Amplitude thermique annuelle")
[1] "7"
Boxplot(~temp, data=df, col ="grey50", main ="Températures")