-
Notifications
You must be signed in to change notification settings - Fork 7
/
07-stats.Rmd
125 lines (87 loc) · 3.91 KB
/
07-stats.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
# Premiers traitements statistiques
## Obtenir des informations
La fonction `summary()` peut s'appliquer à une table entière ou un vecteur. Appliquée sur un tableau, elle donne les statistiques principales sur chacune des variables, en s'adaptant au type de celles-ci (numerique ou texte).
```{r stat_1}
base_extrait <- base %>%
select(1, 3, 5, 7:12)
summary(base_extrait)
```
- Les variables quantitatives
```{r stat_2}
base_extrait %>%
pull(NAIS0914) %>%
summary()
```
- Les variables qualitatives
```{r stat_3}
base_extrait %>%
pull(ZAU) %>%
summary()
```
## Calculer des statistiques spécifiques
Les fonctions `sum()`, `mean()`, `median()`, `min()`, `max()`, `var()`, `sd()`... résument l'information pour en donner une statistique.
La fonction `quantile()` renvoie les quartiles de la variables (ou bien tout autre découpage qu'on lui renseigne).
```{r stat_4}
base_extrait %>%
pull(P14_POP) %>%
sum(na.rm = TRUE)
base_extrait %>%
pull(P14_POP) %>%
mean(na.rm = TRUE)
base_extrait %>%
pull(P14_POP) %>%
median(na.rm = TRUE)
base_extrait %>%
pull(P14_POP) %>%
quantile(probs = c(0.25, 0.5, 0.75), na.rm = TRUE)
```
Ces fonctions retournent une valeur, ou bien un ensemble de valeur (pour `quantile()`). Le résultat est donc un vecteur de un ou plusieurs nombres.
## Agréger des données
### Globalement
<center>![](images/summarise.png)</center>
La fonction `summarise()` permet d'agréger des données, en appliquant une fonction sur les variables pour construire une statistique sur les observations de la table. C'est une fonction dite de “résumé”.
```{r stat_5, eval=FALSE}
summarise(TableEnEntree, NomVariableAgregee = Fonction(NomVariableEtude))
```
```{r stat_6}
base_med <- base_extrait %>%
summarise(population_med = median(P14_POP, na.rm = T))
```
La fonction `summarise()` retourne un data.frame.
### Selon un facteur
<center>![](images/groupby.png)</center>
La fonction `summarise()` couplée à `group_by()` permet de calculer des statistiques pour chaque modalité d'une variable qualitative. Avec `group_by()`, on précise les variables qui formeront des groupes, sur lesquels on appliquera une fonction :
```{r, eval=FALSE}
TableauGroupes <- group_by(TableEnEntree, Variable1, ..., VariableN) %>%
summarise(NomVariableAgregee = Fonction (NomVariableEtude))
```
Par exemple, si on veut avoir la médiane de la variable P14_POP, pour chaque ZAU et chaque région :
```{r stat_7}
base_reg_ann <- base_extrait %>%
group_by(ZAU, REG) %>%
summarise(population_med = median(P14_POP, na.rm = TRUE))
```
## Tableau de contingence
La fonction `table()` calcule les effectifs d'un tableau croisé :
```{r stat_8}
t <- base_extrait %>%
select(ZAU, REG) %>%
table()
print(t)
```
## Tableau de proportions
La fonction `prop.table()` prend en entrée un objet `table` (tableau de contingence avec les effectifs) et calcule les pourcentages (total, ligne, colonne) associés $\rightarrow$ `?prop.table`
```{r stat_9}
# Calcule la fréquence en % (la somme de tous les pourcentages vaut 100)
(prop.table(t) * 100) %>% round(digits = 1)
```
```{r stat_9b}
# Calcule la fréquence en % par région (la somme de tous les pourcentages d'une colonne vaut 100)
(prop.table(t,"REG") * 100) %>%
round(digits = 1)
```
*Attention*: la fonction `prop.table()` a été améliorée avec le changement de version de R base. La version <3.6.2 ne permettait pas d'utiliser le nom de la variable (ici "REG") pour spécifier le mode de calcul des fréquences, l'option était alors `margin=` (1: en ligne, 2: en colonne)
## Exercice 4 : calcul de statistiques
```{r mod1_exo4, child=charge_exo("m1", "exo4.rmd"), echo=FALSE}
```
Pour aller plus loin et ajouter des variables de pondération, calculer les profils-ligne ou profils-colonne, rendez-vous au [module 3 "Statistiques descriptives"](https://mtes-mct.github.io/parcours_r_module_statistiques_descriptives/) ou demander à un GF (Gentil Formateur).