Commit afc8d7e9 authored by Marc Oudart's avatar Marc Oudart

Début module 3 et essais notebooks

parent 87648fde
...@@ -226,7 +226,16 @@ Tout est dans le dossier des modules 2. ...@@ -226,7 +226,16 @@ Tout est dans le dossier des modules 2.
Notamment le fichier de l'exercice 4. Notamment le fichier de l'exercice 4.
- Exercice 5 : - Exercice 5 :
Done dans le dossier associé.
# Module 3 : La main à la pate - une analyse réplicable
## L'étude de cas : Grippe
Téléchargement des données hebdomadaires des cas de syndrome grippaux depuis 1985 sur le site du [réseau sentinnelles](https://www.sentiweb.fr/france/fr/?page=table).
S'il y a des données manquantes dans le fichier --> __NE JAMAIS LES MODIFIER A LA MAIN mais toujours dans du code pour les personnes voulant réutiliser l'étude puissent comprendre pourquoi la ligne a été supprimée.__
# Importation des données
Voir le document RMardown _Analyse syndrome grippal_.
<!-- ## R Markdown <!-- ## R Markdown
......
...@@ -3,8 +3,8 @@ title: "Exo4 module 2" ...@@ -3,8 +3,8 @@ title: "Exo4 module 2"
author: "Marc" author: "Marc"
date: "07/04/2020" date: "07/04/2020"
output: output:
html_document: default
pdf_document: default pdf_document: default
html_document: default
--- ---
```{r setup, include=FALSE} ```{r setup, include=FALSE}
......
This is pdfTeX, Version 3.14159265-2.6-1.40.18 (MiKTeX 2.9.6500 64-bit) (preloaded format=pdflatex 2018.1.29) 8 APR 2020 12:31 This is pdfTeX, Version 3.14159265-2.6-1.40.18 (MiKTeX 2.9.6500 64-bit) (preloaded format=pdflatex 2018.1.29) 9 APR 2020 11:04
entering extended mode entering extended mode
**./Calcul_téléphone.tex **./Calcul_téléphone.tex
(Calcul_téléphone.tex (Calcul_téléphone.tex
......
--- ---
title: "R Notebook" title: "R Notebook"
output: html_notebook output:
pdf_document: default
html_notebook: default
--- ---
This is an [R Markdown](http://rmarkdown.rstudio.com) Notebook. When you execute code within the notebook, the results appear beneath the code.
Try executing this chunk by clicking the *Run* button within the chunk or by placing your cursor inside it and pressing *Ctrl+Shift+Enter*. ## L'étude
Cette étude consiste à évaluer mon usage du téléphone depuis le 25 février 2020 pour établir un lien entre la mise en place du confinement le 17 mars 2020 et mon usage téléphonique.
## Le fichier de données
Le fichier de données ci-après est une table représentant différents paramètres chaque jour depuis le 25/02/2020 :
- Le nombre d'appels émis : Appels\_emis
- Le nombre d'appels reçus : Appels\_recus (Comprends aussi les appels manqués)
- La durée totale des appels de la journée en seconde : Duree\_appels
- Le nombre de messages reçus : Messages\_recus
- Le nombre de messages envoyés : Messages\_envoyes
Le fichier peut être importé comme ceci :
```{r} ```{r}
plot(cars) df<-read.csv("C:/Users/Marc/Desktop/MOOC/mooc-rr/module2/exo4/Book1.csv", sep = ";")
head(df)
``` ```
Add a new chunk by clicking the *Insert Chunk* button on the toolbar or by pressing *Ctrl+Alt+I*. ## L'analyse de l'usage téléphonique
When you save the notebook, an HTML file containing the code and output will be saved alongside it (click the *Preview* button or press *Ctrl+Shift+K* to preview the HTML file). Tout d'abord on peut plotter les différents paramètres au cours du temps pour se donner un aperçu de mon usage :
1. Les appels émis
```{r}
barplot(df$Appels_emis, names.arg = df$ï..Date)
```
Les dates sont mal positionnées mais c'est pas grave. Il semble que j'ai beaucoup appelé autour de la date du 17 mars.
2. Appels reçus
```{r}
barplot(df$Appels_recus, names.arg = df$ï..Date)
```
Il semble que j'ai reçu beaucoup d'appels la veille du 17 mars puis que j'ai reçu + d'appels en général après cette période qu'avant.
3. Durée appel
```{r}
barplot(df$Duree_appel, names.arg = df$ï..Date)
```
Là c'est très voyant. J'ai passé beaucoup de temps au téléphone après le 16 mars comparé à avant (sauf 2 fois).
4. Messages reçus
```{r}
barplot(df$Messages_recus, names.arg = df$ï..Date)
```
5. Messages envoyés
```{r}
barplot(df$Messages_envoyes, names.arg = df$ï..Date)
```
Pour les messages, la tendance est inverse aux appels : je reçois et envoie - de sms depuis le 17 mars comparé à avant.
J'ai eput être changé mon usage de l'un à l'autre.
Sauf autour du 16-17 mars où j'ai beaucoup communiqué.
### Représentation des moyennes avant et après le 17 mars
Je vais rajouté une colonne pour indiqué avant ou après le 17 mars.
```{r}
add<-c(rep("avant",21), rep("après",21))
df$add<-add
```
Oui je sais c'est vraiment nul mais en gros je sais qu'il y a 42 lignes dans mon tableau (je peux le vérifier avec `length(df$Appels_emis)` par exemple) et que le 17 mars est la 22ème ligne.
J'ai donc ajouté 21 fois "avant" et 21 fois "après" sur une colonne dans mon data frame df.
Maintenant on va pouvoir calculer les moyennes des paramètres avant et après (inclus) le 17 mars 2020.
```{r}
m_appels_emis<-c(mean(df$Appels_emis[df$add=="avant"]), mean(df$Appels_emis[df$add=="après"]))
m_appels_recus<-c(mean(df$Appels_recus[df$add=="avant"]), mean(df$Appels_recus[df$add=="après"]))
m_duree_appel<-c(mean(df$Duree_appel[df$add=="avant"]), mean(df$Duree_appel[df$add=="après"]))
m_messages_recus<-c(mean(df$Messages_recus[df$add=="avant"]), mean(df$Messages_recus[df$add=="après"]))
m_messages_envoyes<-c(mean(df$Messages_envoyes[df$add=="avant"]), mean(df$Messages_envoyes[df$add=="après"]))
m_appels_emis
m_appels_recus
m_messages_recus
m_messages_envoyes
```
Et les écarts-types :
```{r}
sd_appels_emis<-c(sd(df$Appels_emis[df$add=="avant"]), sd(df$Appels_emis[df$add=="après"]))
sd_appels_recus<-c(sd(df$Appels_recus[df$add=="avant"]), sd(df$Appels_recus[df$add=="après"]))
sd_duree_appel<-c(sd(df$Duree_appel[df$add=="avant"]), sd(df$Duree_appel[df$add=="après"]))
sd_messages_recus<-c(sd(df$Messages_recus[df$add=="avant"]), sd(df$Messages_recus[df$add=="après"]))
sd_messages_envoyes<-c(sd(df$Messages_envoyes[df$add=="avant"]), sd(df$Messages_envoyes[df$add=="après"]))
```
Maintenant on va pouvoir plotter les moyennes de tous les paramètres avant et après (inclus) le 17 mars 2020.
Le mieux c'est d'utiliser ggplot.
```{r}
#install.packages("ggplot2")
library(ggplot2)
a<-data.frame(m_appels_emis, sd_appels_emis, c("aa", "ap"))
ggplot(a, aes(x = a$c..aa....ap.., y = m_appels_emis))+
geom_bar(stat = "identity")+
geom_errorbar(ymin = a$m_appels_emis-a$sd_appels_emis, ymax = a$m_appels_emis+a$sd_appels_emis)+
ylim(-1,4)+
labs(title="Appels émis")
```
```{r}
b<-data.frame(m_appels_recus, sd_appels_recus, c("aa", "ap"))
ggplot(b, aes(x = b$c..aa....ap.., y = b$m_appels_recus))+
geom_bar(stat = "identity")+
geom_errorbar(ymin = b$m_appels_recus-b$sd_appels_recus, ymax = b$m_appels_recus+b$sd_appels_recus)+
ylim(-1,3)+
labs(title="Appels recus")
```
```{r}
c<-data.frame(m_duree_appel, sd_duree_appel, c("aa", "ap"))
ggplot(c, aes(x = c$c..aa....ap.., y = c$m_duree_appel))+
geom_bar(stat = "identity")+
geom_errorbar(ymin = c$m_duree_appel-c$sd_duree_appel, ymax = c$m_duree_appel+c$sd_duree_appel)+
ylim(-500,2000)+
labs(title="Duree appel")
```
```{r}
d<-data.frame(m_messages_envoyes, sd_messages_envoyes, c("aa", "ap"))
ggplot(d, aes(x = d$c..aa....ap.., y = d$m_messages_envoyes))+
geom_bar(stat = "identity")+
geom_errorbar(ymin = d$m_messages_envoyes-d$sd_messages_envoyes, ymax = d$m_messages_envoyes+d$sd_messages_envoyes)+
ylim(0,12)+
labs(title="Messages envoyes")
```
```{r}
e<-data.frame(m_messages_recus, sd_messages_recus, c("aa", "ap"))
ggplot(e, aes(x = e$c..aa....ap.., y = e$m_messages_recus))+
geom_bar(stat = "identity")+
geom_errorbar(ymin = e$m_messages_recus-e$sd_messages_recus, ymax = e$m_messages_recus+e$sd_messages_recus)+
ylim(-2,12)+
labs(title="Messages recus")
```
__Bilan : On voit des augmentations dans les appels et une diminution dans les messages mais les écarts types sont énormes__
A mon avis, rien n'est significatif mais on peut s'entrainer sur un cas.
Comme il n'y a que 21 valeurs dans chaque groupe, je ne peux pas appliquer le théorème central limite. Je vais donc vérifier la distribution normale de chaque groupe ainsi que l'égalité des variances pour voir quel test statistique appliqué.
Prenons comme exemple la durée de l'appel.
```{r}
shapiro.test(df$Duree_appel[df$add=="avant"])
shapiro.test(df$Duree_appel[df$add=="après"])
```
Les tests de Shapiro-Wilk sont significatifs donc les distributions ne sont pas normales.
Utilisation de tests non paramétriques type Mann-Whitney :
```{r}
wilcox.test(df$Duree_appel[df$add=="avant"],df$Duree_appel[df$add=="après"])
```
Ah ben en fait la durée des appels a significativement augmentée après le 17 mars 2020. Je ne suis pas super fort en statistiques donc j'espère que c'est correct. Aussi, 21 échantillons par groupe c'est pas mal pour un test non paramétrique.
Du coup on va essayer de mettre une étoile sur le plot (ce qui n'est pas compris dans les fonctions ggplot).
Pour cela on va donc tester le code d'un ami disponible sur [Github](https://github.com/EvenStar69/significativity.bar).
```{r}
#install.packages("devtools")
library(devtools)
#Besoin de Rtools 3.5
#install_github("EvenStar69/significativity.bar/significativity.bar")
library(significativity.bar)
```
Bon j'ai dû un peu changer sa fonction parce qu'elle n'est plus compatible avec ggplot 3.3.
J'ai changé la manière de retrouver les coordonnées y : The position of ymax in ggplot\_build(plot)\$data[[1]] changed from column 6 to 7.
Et j'ai changé la manière de retrouver l'échalle en y : panel_ranges in ggplot\_build(plot)\$layout does not exist anymore ... use panel\_scale\_y instead.
J'ai aussi dû mettre à jour R vers la version 3.6.3.
Voici le code modifié de sa fonction :
```{r}
significativity_bar <- function(plot, groups, text = "*", text_height = 0.0275, size_bar = 1, color_bar = "black", size_text = 8, color_text = "black", font_face = 1, font_style = "serif", line_type = "solid"){
if (!require("ggplot2", character.only=T, quietly=T)){ # use library ggplot
install.packages("ggplot2")
library(ggplot2, character.only=T)
}
if (class(plot)[1] != "gg"){
stop("Your input plot is not a ggplot")
}
if (length(groups) != 2){
stop("Please select only 2 groups between which you want the error bar")
}
if (!is.vector(groups)){
stop("Please input your 2 selected groups in a vector")
}
if (!is.character(text)) {
stop("Please input the text above the bar as character")
}
if (!is.numeric(text_height) | length(text_height) > 1){
stop("Please input one numeric value for the text height")
}
if (!is.numeric(size_bar) | length(size_bar) > 1){
stop("Please input one numeric value for the bar size")
}
if (!is.character(color_bar)){
stop("Please input an existing R color, as a character, for the color of the bar")
}
if (!is.numeric(size_text) | length(size_text) > 1){
stop("Please input one numeric value for the text size")
}
if (!is.numeric(font_face) | length(font_face) > 1){
stop("Please input one numeric value for the font face")
}
if (!is.character(color_text)){
stop("Please input an existing R color, as a character, for the color of the text")
}
if (!is.character(font_style)){
stop("Please input an existing font family, as a character, for the color of the bar")
}
if (!is.character(line_type)){
stop("Please input an existing line style, as a character, for the color of the bar")
}
if (text_height >=1){
warning("text_height should be between 0 and 1, default value for * and around 0.04 for text are advised")
}
if (class(as.list.environment(plot$layers[[1]])$geom)[1] == "GeomPoint"){ # if the ggplot is a dotplot
coords = ggplot_build(plot)$data[[1]] # get the coordinates of the points
xcoords = c()
ycoords = c()
for (i in groups){ # get the x coordinates of all coordinates in a vector, for the 2 selected groups
xcoord_temp = unique(coords$x)[i]
xcoords = append(xcoords, xcoord_temp)
}
for (i in c(1,2)){
ycoord_temp = max(coords[coords$x == xcoords[i],]$y) # get the y coordinate of the upper point of each group
ycoords = append(ycoords, ycoord_temp)
}
y_range = ggplot_build(plot)$layout$panel_scales_y[[1]]$limits # get the total height of the y scale
# panel_ranges in ggplot_build(plot)$layout does not exist anymore ... use panel_scale_y instead
y_sum = sum(abs(y_range))
y_scale = (7.5/100)*y_sum # starting position of the vertical bar (determined % of the total y scale)
bar_height = y_scale + ((5/100)*y_sum) # final position of the vertical bar (determined % of the total y scale in addition to y_scale)
ycoord_top = max(ycoords) # the bar should take the heighest of the two groups as a reference
coord_bar = data.frame(x = c(xcoords[1], xcoords[1], xcoords[2], xcoords[2]), y = c(ycoord_top + y_scale, ycoord_top + bar_height, ycoord_top + bar_height, ycoord_top + y_scale)) # final coordinates of the bar
star_x = mean(xcoords) # x coordinate of the text above the bar (in the middle of the two groups)
star_y = ycoord_top + bar_height + ((2.75/100)*y_sum) # y coordinate of the text above the bar (above the bar by a determined factor)
coord_star = c(star_x, star_y) # x,y coordinates of the text above the bar
plot = plot + geom_path(data = coord_bar, aes(x=x, y=y), size = size_bar, color = color_bar, linetype = line_type) + annotate("text", x = star_x, y = star_y, label = text, size = size_text, color = color_text, fontface = font_face, family = font_style) # create the new ggplot
print(plot)
} else if (class(as.list.environment(plot$layers[[1]])$geom)[1] == "GeomBar") { # if the ggplot is a dotplot
coords = ggplot_build(plot)$data[[1]]
xcoords = c()
ycoords = c()
for (i in groups){ # get the x and y coordinates of the two groups
xcoord_temp = mean(c(coords[i,]$xmin, coords[i,]$xmax))
xcoords = append(xcoords, xcoord_temp)
ycoord_temp = coords[i,7] # The position of ymax in ggplot_build(plot)$data[[1]] changed from column 6 to 7
ycoords = append(ycoords, ycoord_temp)
}
y_range = ggplot_build(plot)$layout$panel_scales_y[[1]]$limits # get the total height of the y scale
y_sum = sum(abs(y_range))
y_scale = (7.5/100)*y_sum # starting position of the vertical bar (determined % of the total y scale)
bar_height = y_scale + ((5/100)*y_sum) # final position of the vertical bar (determined % of the total y scale in addition to y_scale)
ycoord_top = max(ycoords) # the bar should take the heighest of the two groups as a reference
coord_bar = data.frame(x = c(xcoords[1], xcoords[1], xcoords[2], xcoords[2]), y = c(ycoord_top + y_scale, ycoord_top + bar_height, ycoord_top + bar_height, ycoord_top + y_scale)) # final coordinates of the bar
star_x = mean(xcoords) # x coordinate of the text above the bar (in the middle of the two groups)
star_y = ycoord_top + bar_height + (text_height*y_sum) # y coordinate of the text above the bar (above the bar by a determined factor)
coord_star = c(star_x, star_y) # x,y coordinates of the text above the bar
plot = plot + geom_path(data = coord_bar, aes(x=x, y=y), size = size_bar, color = color_bar, linetype = line_type) + annotate("text", x = star_x, y = star_y, label = text, size = size_text, color = color_text, fontface = font_face, family = font_style) # create the new ggplot
print(plot)
}
}
```
```{r}
gg<- ggplot(c, aes(x = c..aa....ap.., y = as.numeric(m_duree_appel)))+
geom_bar(stat = "identity")+
geom_errorbar(ymin = m_duree_appel-sd_duree_appel, ymax = m_duree_appel+sd_duree_appel)+
ylim(-500,5000)+
labs(title="Duree appel")
significativity_bar(gg, groups = c(1,2))
```
### Taux de réponses
Cette partie c'est juste pour voir si je répond autant aux messages qu'on m'en envoie.
```{r}
Ratio<-df$Messages_recus/df$Messages_envoyes
#Remplacement des NaN et inf (division par 0) en 0.
Ratio[is.na(Ratio)]<-0
Ratio[is.infinite(Ratio)]<-0
barplot(Ratio)
```
```{r}
mean(Ratio)
```
En moyenne c'est assez équilibré : je réponds autant de fois qu'on m'envoie un message.
## Conclusion
The preview shows you a rendered HTML copy of the contents of the editor. Consequently, unlike *Knit*, *Preview* does not run any R code chunks. Instead, the output of the chunk when it was last run in the editor is displayed. __J'ai passé pas mal de temps à faire ça mais ça m'a permis de bien prendre en main l'outil.
Je conçois que mon étude est assez sale et que les manières de plotter ne sont vraiment pas optimisées mais ce n'était pas vraiment le but de l'exercice.__
__Après avoir compilé, je n'ai pas pû le faire en pdf (des erreurs de polices qui ne passent pas avec LaTeX on dirait ...).
Aussi, j'ai remarqué qu'il fallait laissé un retour chariot après la visualisation du plot sinon le texte se met à côté dans le rendu.__
...@@ -1762,21 +1762,483 @@ summary { ...@@ -1762,21 +1762,483 @@ summary {
<!-- rnb-text-begin --> <!-- rnb-text-begin -->
<p>This is an <a href="http://rmarkdown.rstudio.com">R Markdown</a> Notebook. When you execute code within the notebook, the results appear beneath the code.</p> <div id="létude" class="section level2">
<p>Try executing this chunk by clicking the <em>Run</em> button within the chunk or by placing your cursor inside it and pressing <em>Ctrl+Shift+Enter</em>.</p> <h2>L’étude</h2>
<p>Cette étude consiste à évaluer mon usage du téléphone depuis le 25 février 2020 pour établir un lien entre la mise en place du confinement le 17 mars 2020 et mon usage téléphonique.</p>
</div>
<div id="le-fichier-de-données" class="section level2">
<h2>Le fichier de données</h2>
<p>Le fichier de données ci-après est une table représentant différents paramètres chaque jour depuis le 25/02/2020 :<br />
- Le nombre d’appels émis : Appels_emis<br />
- Le nombre d’appels reçus : Appels_recus (Comprends aussi les appels manqués)<br />
- La durée totale des appels de la journée en seconde : Duree_appels<br />
- Le nombre de messages reçus : Messages_recus<br />
- Le nombre de messages envoyés : Messages_envoyes</p>
<p>Le fichier peut être importé comme ceci :</p>
<!-- rnb-text-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuZGY8LXJlYWQuY3N2KFwiQzovVXNlcnMvTWFyYy9EZXNrdG9wL01PT0MvbW9vYy1yci9tb2R1bGUyL2V4bzQvQm9vazEuY3N2XCIsIHNlcCA9IFwiO1wiKVxuaGVhZChkZilcbmBgYCJ9 -->
<pre class="r"><code>df&lt;-read.csv(&quot;C:/Users/Marc/Desktop/MOOC/mooc-rr/module2/exo4/Book1.csv&quot;, sep = &quot;;&quot;)
head(df)</code></pre>
<!-- rnb-source-end -->
<!-- rnb-chunk-end -->
<!-- rnb-text-begin -->
</div>
<div id="lanalyse-de-lusage-téléphonique" class="section level2">
<h2>L’analyse de l’usage téléphonique</h2>
<p>Tout d’abord on peut plotter les différents paramètres au cours du temps pour se donner un aperçu de mon usage :</p>
<ol style="list-style-type: decimal">
<li>Les appels émis</li>
</ol>
<!-- rnb-text-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuYmFycGxvdChkZiRBcHBlbHNfZW1pcywgbmFtZXMuYXJnID0gZGYkw68uLkRhdGUpXG5gYGAifQ== -->
<pre class="r"><code>barplot(df$Appels_emis, names.arg = df$ï..Date)</code></pre>
<!-- rnb-source-end -->
<!-- rnb-chunk-end -->
<!-- rnb-text-begin -->
<p>Les dates sont mal positionnées mais c’est pas grave. Il semble que j’ai beaucoup appelé autour de la date du 17 mars.</p>
<ol start="2" style="list-style-type: decimal">
<li>Appels reçus</li>
</ol>
<!-- rnb-text-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuYmFycGxvdChkZiRBcHBlbHNfcmVjdXMsIG5hbWVzLmFyZyA9IGRmJMOvLi5EYXRlKVxuYGBgIn0= -->
<pre class="r"><code>barplot(df$Appels_recus, names.arg = df$ï..Date)</code></pre>
<!-- rnb-source-end -->
<!-- rnb-chunk-end -->
<!-- rnb-text-begin -->
<p>Il semble que j’ai reçu beaucoup d’appels la veille du 17 mars puis que j’ai reçu + d’appels en général après cette période qu’avant.</p>
<ol start="3" style="list-style-type: decimal">
<li>Durée appel</li>
</ol>
<!-- rnb-text-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuYmFycGxvdChkZiREdXJlZV9hcHBlbCwgbmFtZXMuYXJnID0gZGYkw68uLkRhdGUpXG5gYGAifQ== -->
<pre class="r"><code>barplot(df$Duree_appel, names.arg = df$ï..Date)</code></pre>
<!-- rnb-source-end -->
<!-- rnb-chunk-end -->
<!-- rnb-text-begin -->
<p>Là c’est très voyant. J’ai passé beaucoup de temps au téléphone après le 16 mars comparé à avant (sauf 2 fois).</p>
<ol start="4" style="list-style-type: decimal">
<li>Messages reçus</li>
</ol>
<!-- rnb-text-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuYmFycGxvdChkZiRNZXNzYWdlc19yZWN1cywgbmFtZXMuYXJnID0gZGYkw68uLkRhdGUpXG5gYGAifQ== -->
<pre class="r"><code>barplot(df$Messages_recus, names.arg = df$ï..Date)</code></pre>
<!-- rnb-source-end -->
<!-- rnb-chunk-end -->
<!-- rnb-text-begin -->
<ol start="5" style="list-style-type: decimal">
<li>Messages envoyés</li>
</ol>
<!-- rnb-text-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuYmFycGxvdChkZiRNZXNzYWdlc19lbnZveWVzLCBuYW1lcy5hcmcgPSBkZiTDry4uRGF0ZSlcbmBgYCJ9 -->
<pre class="r"><code>barplot(df$Messages_envoyes, names.arg = df$ï..Date)</code></pre>
<!-- rnb-source-end -->
<!-- rnb-chunk-end -->
<!-- rnb-text-begin -->
<p>Pour les messages, la tendance est inverse aux appels : je reçois et envoie - de sms depuis le 17 mars comparé à avant.<br />
J’ai eput être changé mon usage de l’un à l’autre.<br />
Sauf autour du 16-17 mars où j’ai beaucoup communiqué.</p>
<div id="représentation-des-moyennes-avant-et-après-le-17-mars" class="section level3">
<h3>Représentation des moyennes avant et après le 17 mars</h3>
<p>Je vais rajouté une colonne pour indiqué avant ou après le 17 mars.</p>
<!-- rnb-text-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuYWRkPC1jKHJlcChcImF2YW50XCIsMjEpLCByZXAoXCJhcHLDqHNcIiwyMSkpXG5kZiRhZGQ8LWFkZFxuYGBgIn0= -->
<pre class="r"><code>add&lt;-c(rep(&quot;avant&quot;,21), rep(&quot;après&quot;,21))
df$add&lt;-add</code></pre>
<!-- rnb-source-end -->
<!-- rnb-chunk-end -->
<!-- rnb-text-begin -->
<p>Oui je sais c’est vraiment nul mais en gros je sais qu’il y a 42 lignes dans mon tableau (je peux le vérifier avec <code>length(df$Appels_emis)</code> par exemple) et que le 17 mars est la 22ème ligne.<br />
J’ai donc ajouté 21 fois “avant” et 21 fois “après” sur une colonne dans mon data frame df.</p>
<p>Maintenant on va pouvoir calculer les moyennes des paramètres avant et après (inclus) le 17 mars 2020.</p>
<!-- rnb-text-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxubV9hcHBlbHNfZW1pczwtYyhtZWFuKGRmJEFwcGVsc19lbWlzW2RmJGFkZD09XCJhdmFudFwiXSksIG1lYW4oZGYkQXBwZWxzX2VtaXNbZGYkYWRkPT1cImFwcsOoc1wiXSkpXG5tX2FwcGVsc19yZWN1czwtYyhtZWFuKGRmJEFwcGVsc19yZWN1c1tkZiRhZGQ9PVwiYXZhbnRcIl0pLCBtZWFuKGRmJEFwcGVsc19yZWN1c1tkZiRhZGQ9PVwiYXByw6hzXCJdKSlcbm1fZHVyZWVfYXBwZWw8LWMobWVhbihkZiREdXJlZV9hcHBlbFtkZiRhZGQ9PVwiYXZhbnRcIl0pLCBtZWFuKGRmJER1cmVlX2FwcGVsW2RmJGFkZD09XCJhcHLDqHNcIl0pKVxubV9tZXNzYWdlc19yZWN1czwtYyhtZWFuKGRmJE1lc3NhZ2VzX3JlY3VzW2RmJGFkZD09XCJhdmFudFwiXSksIG1lYW4oZGYkTWVzc2FnZXNfcmVjdXNbZGYkYWRkPT1cImFwcsOoc1wiXSkpXG5tX21lc3NhZ2VzX2Vudm95ZXM8LWMobWVhbihkZiRNZXNzYWdlc19lbnZveWVzW2RmJGFkZD09XCJhdmFudFwiXSksIG1lYW4oZGYkTWVzc2FnZXNfZW52b3llc1tkZiRhZGQ9PVwiYXByw6hzXCJdKSlcbm1fYXBwZWxzX2VtaXNcbm1fYXBwZWxzX3JlY3VzXG5tX21lc3NhZ2VzX3JlY3VzXG5tX21lc3NhZ2VzX2Vudm95ZXNcbmBgYCJ9 -->
<pre class="r"><code>m_appels_emis&lt;-c(mean(df$Appels_emis[df$add==&quot;avant&quot;]), mean(df$Appels_emis[df$add==&quot;après&quot;]))
m_appels_recus&lt;-c(mean(df$Appels_recus[df$add==&quot;avant&quot;]), mean(df$Appels_recus[df$add==&quot;après&quot;]))
m_duree_appel&lt;-c(mean(df$Duree_appel[df$add==&quot;avant&quot;]), mean(df$Duree_appel[df$add==&quot;après&quot;]))
m_messages_recus&lt;-c(mean(df$Messages_recus[df$add==&quot;avant&quot;]), mean(df$Messages_recus[df$add==&quot;après&quot;]))
m_messages_envoyes&lt;-c(mean(df$Messages_envoyes[df$add==&quot;avant&quot;]), mean(df$Messages_envoyes[df$add==&quot;après&quot;]))
m_appels_emis
m_appels_recus
m_messages_recus
m_messages_envoyes</code></pre>
<!-- rnb-source-end -->
<!-- rnb-chunk-end -->
<!-- rnb-text-begin -->
<p>Et les écarts-types :</p>
<!-- rnb-text-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuc2RfYXBwZWxzX2VtaXM8LWMoc2QoZGYkQXBwZWxzX2VtaXNbZGYkYWRkPT1cImF2YW50XCJdKSwgc2QoZGYkQXBwZWxzX2VtaXNbZGYkYWRkPT1cImFwcsOoc1wiXSkpXG5zZF9hcHBlbHNfcmVjdXM8LWMoc2QoZGYkQXBwZWxzX3JlY3VzW2RmJGFkZD09XCJhdmFudFwiXSksIHNkKGRmJEFwcGVsc19yZWN1c1tkZiRhZGQ9PVwiYXByw6hzXCJdKSlcbnNkX2R1cmVlX2FwcGVsPC1jKHNkKGRmJER1cmVlX2FwcGVsW2RmJGFkZD09XCJhdmFudFwiXSksIHNkKGRmJER1cmVlX2FwcGVsW2RmJGFkZD09XCJhcHLDqHNcIl0pKVxuc2RfbWVzc2FnZXNfcmVjdXM8LWMoc2QoZGYkTWVzc2FnZXNfcmVjdXNbZGYkYWRkPT1cImF2YW50XCJdKSwgc2QoZGYkTWVzc2FnZXNfcmVjdXNbZGYkYWRkPT1cImFwcsOoc1wiXSkpXG5zZF9tZXNzYWdlc19lbnZveWVzPC1jKHNkKGRmJE1lc3NhZ2VzX2Vudm95ZXNbZGYkYWRkPT1cImF2YW50XCJdKSwgc2QoZGYkTWVzc2FnZXNfZW52b3llc1tkZiRhZGQ9PVwiYXByw6hzXCJdKSlcbmBgYCJ9 -->
<pre class="r"><code>sd_appels_emis&lt;-c(sd(df$Appels_emis[df$add==&quot;avant&quot;]), sd(df$Appels_emis[df$add==&quot;après&quot;]))
sd_appels_recus&lt;-c(sd(df$Appels_recus[df$add==&quot;avant&quot;]), sd(df$Appels_recus[df$add==&quot;après&quot;]))
sd_duree_appel&lt;-c(sd(df$Duree_appel[df$add==&quot;avant&quot;]), sd(df$Duree_appel[df$add==&quot;après&quot;]))
sd_messages_recus&lt;-c(sd(df$Messages_recus[df$add==&quot;avant&quot;]), sd(df$Messages_recus[df$add==&quot;après&quot;]))
sd_messages_envoyes&lt;-c(sd(df$Messages_envoyes[df$add==&quot;avant&quot;]), sd(df$Messages_envoyes[df$add==&quot;après&quot;]))</code></pre>
<!-- rnb-source-end -->
<!-- rnb-chunk-end -->
<!-- rnb-text-begin -->
<p>Maintenant on va pouvoir plotter les moyennes de tous les paramètres avant et après (inclus) le 17 mars 2020.<br />
Le mieux c’est d’utiliser ggplot.</p>
<!-- rnb-text-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuI2luc3RhbGwucGFja2FnZXMoXCJnZ3Bsb3QyXCIpXG5saWJyYXJ5KGdncGxvdDIpXG5hPC1kYXRhLmZyYW1lKG1fYXBwZWxzX2VtaXMsIHNkX2FwcGVsc19lbWlzLCBjKFwiYWFcIiwgXCJhcFwiKSlcbmdncGxvdChhLCBhZXMoeCA9IGEkYy4uYWEuLi4uYXAuLiwgeSA9IG1fYXBwZWxzX2VtaXMpKStcbiAgICBnZW9tX2JhcihzdGF0ID0gXCJpZGVudGl0eVwiKStcbiAgICBnZW9tX2Vycm9yYmFyKHltaW4gPSBhJG1fYXBwZWxzX2VtaXMtYSRzZF9hcHBlbHNfZW1pcywgeW1heCA9IGEkbV9hcHBlbHNfZW1pcythJHNkX2FwcGVsc19lbWlzKSsgXG4gICAgeWxpbSgtMSw0KStcbiAgICBsYWJzKHRpdGxlPVwiQXBwZWxzIMOpbWlzXCIpXG5gYGAifQ== -->
<pre class="r"><code>#install.packages(&quot;ggplot2&quot;)
library(ggplot2)
a&lt;-data.frame(m_appels_emis, sd_appels_emis, c(&quot;aa&quot;, &quot;ap&quot;))
ggplot(a, aes(x = a$c..aa....ap.., y = m_appels_emis))+
geom_bar(stat = &quot;identity&quot;)+
geom_errorbar(ymin = a$m_appels_emis-a$sd_appels_emis, ymax = a$m_appels_emis+a$sd_appels_emis)+
ylim(-1,4)+
labs(title=&quot;Appels émis&quot;)</code></pre>
<!-- rnb-source-end -->
<!-- rnb-chunk-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuYjwtZGF0YS5mcmFtZShtX2FwcGVsc19yZWN1cywgc2RfYXBwZWxzX3JlY3VzLCBjKFwiYWFcIiwgXCJhcFwiKSlcbmdncGxvdChiLCBhZXMoeCA9IGIkYy4uYWEuLi4uYXAuLiwgeSA9IGIkbV9hcHBlbHNfcmVjdXMpKStcbiAgICBnZW9tX2JhcihzdGF0ID0gXCJpZGVudGl0eVwiKStcbiAgICBnZW9tX2Vycm9yYmFyKHltaW4gPSBiJG1fYXBwZWxzX3JlY3VzLWIkc2RfYXBwZWxzX3JlY3VzLCB5bWF4ID0gYiRtX2FwcGVsc19yZWN1cytiJHNkX2FwcGVsc19yZWN1cykrIFxuICAgIHlsaW0oLTEsMykrXG4gICAgbGFicyh0aXRsZT1cIkFwcGVscyByZWN1c1wiKVxuYGBgIn0= -->
<pre class="r"><code>b&lt;-data.frame(m_appels_recus, sd_appels_recus, c(&quot;aa&quot;, &quot;ap&quot;))
ggplot(b, aes(x = b$c..aa....ap.., y = b$m_appels_recus))+
geom_bar(stat = &quot;identity&quot;)+
geom_errorbar(ymin = b$m_appels_recus-b$sd_appels_recus, ymax = b$m_appels_recus+b$sd_appels_recus)+
ylim(-1,3)+
labs(title=&quot;Appels recus&quot;)</code></pre>
<!-- rnb-source-end -->
<!-- rnb-chunk-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuYzwtZGF0YS5mcmFtZShtX2R1cmVlX2FwcGVsLCBzZF9kdXJlZV9hcHBlbCwgYyhcImFhXCIsIFwiYXBcIikpXG5nZ3Bsb3QoYywgYWVzKHggPSBjJGMuLmFhLi4uLmFwLi4sIHkgPSBjJG1fZHVyZWVfYXBwZWwpKStcbiAgICBnZW9tX2JhcihzdGF0ID0gXCJpZGVudGl0eVwiKStcbiAgICBnZW9tX2Vycm9yYmFyKHltaW4gPSBjJG1fZHVyZWVfYXBwZWwtYyRzZF9kdXJlZV9hcHBlbCwgeW1heCA9IGMkbV9kdXJlZV9hcHBlbCtjJHNkX2R1cmVlX2FwcGVsKSsgXG4gICAgeWxpbSgtNTAwLDIwMDApK1xuICAgIGxhYnModGl0bGU9XCJEdXJlZSBhcHBlbFwiKVxuYGBgIn0= -->
<pre class="r"><code>c&lt;-data.frame(m_duree_appel, sd_duree_appel, c(&quot;aa&quot;, &quot;ap&quot;))
ggplot(c, aes(x = c$c..aa....ap.., y = c$m_duree_appel))+
geom_bar(stat = &quot;identity&quot;)+
geom_errorbar(ymin = c$m_duree_appel-c$sd_duree_appel, ymax = c$m_duree_appel+c$sd_duree_appel)+
ylim(-500,2000)+
labs(title=&quot;Duree appel&quot;)</code></pre>
<!-- rnb-source-end -->
<!-- rnb-chunk-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuZDwtZGF0YS5mcmFtZShtX21lc3NhZ2VzX2Vudm95ZXMsIHNkX21lc3NhZ2VzX2Vudm95ZXMsIGMoXCJhYVwiLCBcImFwXCIpKVxuZ2dwbG90KGQsIGFlcyh4ID0gZCRjLi5hYS4uLi5hcC4uLCB5ID0gZCRtX21lc3NhZ2VzX2Vudm95ZXMpKStcbiAgICBnZW9tX2JhcihzdGF0ID0gXCJpZGVudGl0eVwiKStcbiAgICBnZW9tX2Vycm9yYmFyKHltaW4gPSBkJG1fbWVzc2FnZXNfZW52b3llcy1kJHNkX21lc3NhZ2VzX2Vudm95ZXMsIHltYXggPSBkJG1fbWVzc2FnZXNfZW52b3llcytkJHNkX21lc3NhZ2VzX2Vudm95ZXMpKyBcbiAgICB5bGltKDAsMTIpK1xuICAgIGxhYnModGl0bGU9XCJNZXNzYWdlcyBlbnZveWVzXCIpXG5gYGAifQ== -->
<pre class="r"><code>d&lt;-data.frame(m_messages_envoyes, sd_messages_envoyes, c(&quot;aa&quot;, &quot;ap&quot;))
ggplot(d, aes(x = d$c..aa....ap.., y = d$m_messages_envoyes))+
geom_bar(stat = &quot;identity&quot;)+
geom_errorbar(ymin = d$m_messages_envoyes-d$sd_messages_envoyes, ymax = d$m_messages_envoyes+d$sd_messages_envoyes)+
ylim(0,12)+
labs(title=&quot;Messages envoyes&quot;)</code></pre>
<!-- rnb-source-end -->
<!-- rnb-chunk-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuZTwtZGF0YS5mcmFtZShtX21lc3NhZ2VzX3JlY3VzLCBzZF9tZXNzYWdlc19yZWN1cywgYyhcImFhXCIsIFwiYXBcIikpXG5nZ3Bsb3QoZSwgYWVzKHggPSBlJGMuLmFhLi4uLmFwLi4sIHkgPSBlJG1fbWVzc2FnZXNfcmVjdXMpKStcbiAgICBnZW9tX2JhcihzdGF0ID0gXCJpZGVudGl0eVwiKStcbiAgICBnZW9tX2Vycm9yYmFyKHltaW4gPSBlJG1fbWVzc2FnZXNfcmVjdXMtZSRzZF9tZXNzYWdlc19yZWN1cywgeW1heCA9IGUkbV9tZXNzYWdlc19yZWN1cytlJHNkX21lc3NhZ2VzX3JlY3VzKSsgXG4gICAgeWxpbSgtMiwxMikrXG4gICAgbGFicyh0aXRsZT1cIk1lc3NhZ2VzIHJlY3VzXCIpXG5gYGAifQ== -->
<pre class="r"><code>e&lt;-data.frame(m_messages_recus, sd_messages_recus, c(&quot;aa&quot;, &quot;ap&quot;))
ggplot(e, aes(x = e$c..aa....ap.., y = e$m_messages_recus))+
geom_bar(stat = &quot;identity&quot;)+
geom_errorbar(ymin = e$m_messages_recus-e$sd_messages_recus, ymax = e$m_messages_recus+e$sd_messages_recus)+
ylim(-2,12)+
labs(title=&quot;Messages recus&quot;)</code></pre>
<!-- rnb-source-end -->
<!-- rnb-chunk-end -->
<!-- rnb-text-begin -->
<p><strong>Bilan : On voit des augmentations dans les appels et une diminution dans les messages mais les écarts types sont énormes</strong></p>
<p>A mon avis, rien n’est significatif mais on peut s’entrainer sur un cas.<br />
Comme il n’y a que 21 valeurs dans chaque groupe, je ne peux pas appliquer le théorème central limite. Je vais donc vérifier la distribution normale de chaque groupe ainsi que l’égalité des variances pour voir quel test statistique appliqué.<br />
Prenons comme exemple la durée de l’appel.</p>
<!-- rnb-text-end --> <!-- rnb-text-end -->
<!-- rnb-chunk-begin --> <!-- rnb-chunk-begin -->
<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxucGxvdChjYXJzKVxuYGBgIn0= --> <!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuc2hhcGlyby50ZXN0KGRmJER1cmVlX2FwcGVsW2RmJGFkZD09XCJhdmFudFwiXSlcbnNoYXBpcm8udGVzdChkZiREdXJlZV9hcHBlbFtkZiRhZGQ9PVwiYXByw6hzXCJdKVxuYGBgIn0= -->
<pre class="r"><code>plot(cars)</code></pre> <pre class="r"><code>shapiro.test(df$Duree_appel[df$add==&quot;avant&quot;])
shapiro.test(df$Duree_appel[df$add==&quot;après&quot;])</code></pre>
<!-- rnb-source-end --> <!-- rnb-source-end -->
<!-- rnb-chunk-end --> <!-- rnb-chunk-end -->
<!-- rnb-text-begin --> <!-- rnb-text-begin -->
<p>Add a new chunk by clicking the <em>Insert Chunk</em> button on the toolbar or by pressing <em>Ctrl+Alt+I</em>.</p> <p>Les tests de Shapiro-Wilk sont significatifs donc les distributions ne sont pas normales.<br />
<p>When you save the notebook, an HTML file containing the code and output will be saved alongside it (click the <em>Preview</em> button or press <em>Ctrl+Shift+K</em> to preview the HTML file).</p> Utilisation de tests non paramétriques type Mann-Whitney :</p>
<p>The preview shows you a rendered HTML copy of the contents of the editor. Consequently, unlike <em>Knit</em>, <em>Preview</em> does not run any R code chunks. Instead, the output of the chunk when it was last run in the editor is displayed.</p>
<!-- rnb-text-end --> <!-- rnb-text-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxud2lsY294LnRlc3QoZGYkRHVyZWVfYXBwZWxbZGYkYWRkPT1cImF2YW50XCJdLGRmJER1cmVlX2FwcGVsW2RmJGFkZD09XCJhcHLDqHNcIl0pXG5gYGAifQ== -->
<pre class="r"><code>wilcox.test(df$Duree_appel[df$add==&quot;avant&quot;],df$Duree_appel[df$add==&quot;après&quot;])</code></pre>
<!-- rnb-source-end -->
<!-- rnb-chunk-end -->
<!-- rnb-text-begin -->
<p>Ah ben en fait la durée des appels a significativement augmentée après le 17 mars 2020. Je ne suis pas super fort en statistiques donc j’espère que c’est correct. Aussi, 21 échantillons par groupe c’est pas mal pour un test non paramétrique.</p>
<p>Du coup on va essayer de mettre une étoile sur le plot (ce qui n’est pas compris dans les fonctions ggplot).<br />
Pour cela on va donc tester le code d’un ami disponible sur <a href="https://github.com/EvenStar69/significativity.bar">Github</a>.</p>
<!-- rnb-text-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuI2luc3RhbGwucGFja2FnZXMoXCJkZXZ0b29sc1wiKVxubGlicmFyeShkZXZ0b29scylcbiNCZXNvaW4gZGUgUnRvb2xzIDMuNVxuI2luc3RhbGxfZ2l0aHViKFwiRXZlblN0YXI2OS9zaWduaWZpY2F0aXZpdHkuYmFyL3NpZ25pZmljYXRpdml0eS5iYXJcIilcbmxpYnJhcnkoc2lnbmlmaWNhdGl2aXR5LmJhcilcbmBgYCJ9 -->
<pre class="r"><code>#install.packages(&quot;devtools&quot;)
library(devtools)
#Besoin de Rtools 3.5
#install_github(&quot;EvenStar69/significativity.bar/significativity.bar&quot;)
library(significativity.bar)</code></pre>
<!-- rnb-source-end -->
<!-- rnb-chunk-end -->
<!-- rnb-text-begin -->
<p>Bon j’ai dû un peu changer sa fonction parce qu’elle n’est plus compatible avec ggplot 3.3.<br />
J’ai changé la manière de retrouver les coordonnées y : The position of ymax in ggplot_build(plot)$data[[1]] changed from column 6 to 7.<br />
Et j’ai changé la manière de retrouver l’échalle en y : panel_ranges in ggplot_build(plot)$layout does not exist anymore … use panel_scale_y instead.<br />
J’ai aussi dû mettre à jour R vers la version 3.6.3.<br />
Voici le code modifié de sa fonction :</p>
<!-- rnb-text-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuc2lnbmlmaWNhdGl2aXR5X2JhciA8LSBmdW5jdGlvbihwbG90LCBncm91cHMsIHRleHQgPSBcIipcIiwgdGV4dF9oZWlnaHQgPSAwLjAyNzUsIHNpemVfYmFyID0gMSwgY29sb3JfYmFyID0gXCJibGFja1wiLCBzaXplX3RleHQgPSA4LCBjb2xvcl90ZXh0ID0gXCJibGFja1wiLCBmb250X2ZhY2UgPSAxLCBmb250X3N0eWxlID0gXCJzZXJpZlwiLCBsaW5lX3R5cGUgPSBcInNvbGlkXCIpe1xuICBcbiAgXG4gIFxuICBpZiAoIXJlcXVpcmUoXCJnZ3Bsb3QyXCIsIGNoYXJhY3Rlci5vbmx5PVQsIHF1aWV0bHk9VCkpeyAjIHVzZSBsaWJyYXJ5IGdncGxvdFxuICAgIFxuICAgIGluc3RhbGwucGFja2FnZXMoXCJnZ3Bsb3QyXCIpXG4gICAgXG4gICAgbGlicmFyeShnZ3Bsb3QyLCBjaGFyYWN0ZXIub25seT1UKVxuICAgIFxuICB9XG4gIFxuICBcbiAgXG4gIGlmIChjbGFzcyhwbG90KVsxXSAhPSBcImdnXCIpe1xuICAgIFxuICAgIHN0b3AoXCJZb3VyIGlucHV0IHBsb3QgaXMgbm90IGEgZ2dwbG90XCIpXG4gICAgXG4gIH1cbiAgXG4gIGlmIChsZW5ndGgoZ3JvdXBzKSAhPSAyKXtcbiAgICBcbiAgICBzdG9wKFwiUGxlYXNlIHNlbGVjdCBvbmx5IDIgZ3JvdXBzIGJldHdlZW4gd2hpY2ggeW91IHdhbnQgdGhlIGVycm9yIGJhclwiKVxuICAgIFxuICB9XG4gIFxuICBpZiAoIWlzLnZlY3Rvcihncm91cHMpKXtcbiAgICBcbiAgICBzdG9wKFwiUGxlYXNlIGlucHV0IHlvdXIgMiBzZWxlY3RlZCBncm91cHMgaW4gYSB2ZWN0b3JcIilcbiAgICBcbiAgfVxuICBcbiAgaWYgKCFpcy5jaGFyYWN0ZXIodGV4dCkpIHtcbiAgICBcbiAgICBzdG9wKFwiUGxlYXNlIGlucHV0IHRoZSB0ZXh0IGFib3ZlIHRoZSBiYXIgYXMgY2hhcmFjdGVyXCIpXG4gICAgXG4gIH1cbiAgXG4gIGlmICghaXMubnVtZXJpYyh0ZXh0X2hlaWdodCkgfCBsZW5ndGgodGV4dF9oZWlnaHQpID4gMSl7XG4gICAgXG4gICAgc3RvcChcIlBsZWFzZSBpbnB1dCBvbmUgbnVtZXJpYyB2YWx1ZSBmb3IgdGhlIHRleHQgaGVpZ2h0XCIpXG4gICAgXG4gIH1cbiAgXG4gIGlmICghaXMubnVtZXJpYyhzaXplX2JhcikgfCBsZW5ndGgoc2l6ZV9iYXIpID4gMSl7XG4gICAgXG4gICAgc3RvcChcIlBsZWFzZSBpbnB1dCBvbmUgbnVtZXJpYyB2YWx1ZSBmb3IgdGhlIGJhciBzaXplXCIpXG4gICAgXG4gIH1cbiAgXG4gIGlmICghaXMuY2hhcmFjdGVyKGNvbG9yX2Jhcikpe1xuICAgIFxuICAgIHN0b3AoXCJQbGVhc2UgaW5wdXQgYW4gZXhpc3RpbmcgUiBjb2xvciwgYXMgYSBjaGFyYWN0ZXIsIGZvciB0aGUgY29sb3Igb2YgdGhlIGJhclwiKVxuICAgIFxuICB9XG4gIFxuICBpZiAoIWlzLm51bWVyaWMoc2l6ZV90ZXh0KSB8IGxlbmd0aChzaXplX3RleHQpID4gMSl7XG4gICAgXG4gICAgc3RvcChcIlBsZWFzZSBpbnB1dCBvbmUgbnVtZXJpYyB2YWx1ZSBmb3IgdGhlIHRleHQgc2l6ZVwiKVxuICAgIFxuICB9XG4gIFxuICBpZiAoIWlzLm51bWVyaWMoZm9udF9mYWNlKSB8IGxlbmd0aChmb250X2ZhY2UpID4gMSl7XG4gICAgXG4gICAgc3RvcChcIlBsZWFzZSBpbnB1dCBvbmUgbnVtZXJpYyB2YWx1ZSBmb3IgdGhlIGZvbnQgZmFjZVwiKVxuICAgIFxuICB9XG4gIFxuICBpZiAoIWlzLmNoYXJhY3Rlcihjb2xvcl90ZXh0KSl7XG4gICAgXG4gICAgc3RvcChcIlBsZWFzZSBpbnB1dCBhbiBleGlzdGluZyBSIGNvbG9yLCBhcyBhIGNoYXJhY3RlciwgZm9yIHRoZSBjb2xvciBvZiB0aGUgdGV4dFwiKVxuICAgIFxuICB9XG4gIFxuICBpZiAoIWlzLmNoYXJhY3Rlcihmb250X3N0eWxlKSl7XG4gICAgXG4gICAgc3RvcChcIlBsZWFzZSBpbnB1dCBhbiBleGlzdGluZyBmb250IGZhbWlseSwgYXMgYSBjaGFyYWN0ZXIsIGZvciB0aGUgY29sb3Igb2YgdGhlIGJhclwiKVxuICAgIFxuICB9XG4gIFxuICBpZiAoIWlzLmNoYXJhY3RlcihsaW5lX3R5cGUpKXtcbiAgICBcbiAgICBzdG9wKFwiUGxlYXNlIGlucHV0IGFuIGV4aXN0aW5nIGxpbmUgc3R5bGUsIGFzIGEgY2hhcmFjdGVyLCBmb3IgdGhlIGNvbG9yIG9mIHRoZSBiYXJcIilcbiAgICBcbiAgfVxuICBcbiAgXG4gIFxuICBpZiAodGV4dF9oZWlnaHQgPj0xKXtcbiAgICBcbiAgICB3YXJuaW5nKFwidGV4dF9oZWlnaHQgc2hvdWxkIGJlIGJldHdlZW4gMCBhbmQgMSwgZGVmYXVsdCB2YWx1ZSBmb3IgKiBhbmQgYXJvdW5kIDAuMDQgZm9yIHRleHQgYXJlIGFkdmlzZWRcIilcbiAgICBcbiAgfVxuICBcbiAgXG4gIFxuICBcbiAgXG4gIGlmIChjbGFzcyhhcy5saXN0LmVudmlyb25tZW50KHBsb3QkbGF5ZXJzW1sxXV0pJGdlb20pWzFdID09IFwiR2VvbVBvaW50XCIpeyAjIGlmIHRoZSBnZ3Bsb3QgaXMgYSBkb3RwbG90XG4gICAgXG4gICAgY29vcmRzID0gZ2dwbG90X2J1aWxkKHBsb3QpJGRhdGFbWzFdXSAjIGdldCB0aGUgY29vcmRpbmF0ZXMgb2YgdGhlIHBvaW50c1xuICAgIFxuICAgIHhjb29yZHMgPSBjKClcbiAgICBcbiAgICB5Y29vcmRzID0gYygpXG4gICAgXG4gICAgZm9yIChpIGluIGdyb3Vwcyl7ICMgZ2V0IHRoZSB4IGNvb3JkaW5hdGVzIG9mIGFsbCBjb29yZGluYXRlcyBpbiBhIHZlY3RvciwgZm9yIHRoZSAyIHNlbGVjdGVkIGdyb3Vwc1xuICAgICAgXG4gICAgICB4Y29vcmRfdGVtcCA9IHVuaXF1ZShjb29yZHMkeClbaV1cbiAgICAgIFxuICAgICAgeGNvb3JkcyA9IGFwcGVuZCh4Y29vcmRzLCB4Y29vcmRfdGVtcClcbiAgICAgIFxuICAgIH1cbiAgICBcbiAgICBmb3IgKGkgaW4gYygxLDIpKXtcbiAgICAgIFxuICAgICAgeWNvb3JkX3RlbXAgPSBtYXgoY29vcmRzW2Nvb3JkcyR4ID09IHhjb29yZHNbaV0sXSR5KSAjIGdldCB0aGUgeSBjb29yZGluYXRlIG9mIHRoZSB1cHBlciBwb2ludCBvZiBlYWNoIGdyb3VwXG4gICAgICBcbiAgICAgIHljb29yZHMgPSBhcHBlbmQoeWNvb3JkcywgeWNvb3JkX3RlbXApXG4gICAgICBcbiAgICB9XG4gICAgXG4gICAgXG4gICAgXG4gICAgeV9yYW5nZSA9IGdncGxvdF9idWlsZChwbG90KSRsYXlvdXQkcGFuZWxfc2NhbGVzX3lbWzFdXSRsaW1pdHMgIyBnZXQgdGhlIHRvdGFsIGhlaWdodCBvZiB0aGUgeSBzY2FsZVxuICAgICMgcGFuZWxfcmFuZ2VzIGluIGdncGxvdF9idWlsZChwbG90KSRsYXlvdXQgZG9lcyBub3QgZXhpc3QgYW55bW9yZSAuLi4gdXNlIHBhbmVsX3NjYWxlX3kgaW5zdGVhZFxuICAgIFxuICAgIHlfc3VtID0gc3VtKGFicyh5X3JhbmdlKSkgXG4gICAgXG4gICAgeV9zY2FsZSA9ICg3LjUvMTAwKSp5X3N1bSAjIHN0YXJ0aW5nIHBvc2l0aW9uIG9mIHRoZSB2ZXJ0aWNhbCBiYXIgKGRldGVybWluZWQgJSBvZiB0aGUgdG90YWwgeSBzY2FsZSlcbiAgICBcbiAgICBiYXJfaGVpZ2h0ID0geV9zY2FsZSArICgoNS8xMDApKnlfc3VtKSAjIGZpbmFsIHBvc2l0aW9uIG9mIHRoZSB2ZXJ0aWNhbCBiYXIgKGRldGVybWluZWQgJSBvZiB0aGUgdG90YWwgeSBzY2FsZSBpbiBhZGRpdGlvbiB0byB5X3NjYWxlKVxuICAgIFxuICAgIFxuICAgIFxuICAgIHljb29yZF90b3AgPSBtYXgoeWNvb3JkcykgIyB0aGUgYmFyIHNob3VsZCB0YWtlIHRoZSBoZWlnaGVzdCBvZiB0aGUgdHdvIGdyb3VwcyBhcyBhIHJlZmVyZW5jZVxuICAgIFxuICAgIGNvb3JkX2JhciA9IGRhdGEuZnJhbWUoeCA9IGMoeGNvb3Jkc1sxXSwgeGNvb3Jkc1sxXSwgeGNvb3Jkc1syXSwgeGNvb3Jkc1syXSksIHkgPSBjKHljb29yZF90b3AgKyB5X3NjYWxlLCB5Y29vcmRfdG9wICsgYmFyX2hlaWdodCwgeWNvb3JkX3RvcCArIGJhcl9oZWlnaHQsIHljb29yZF90b3AgKyB5X3NjYWxlKSkgIyBmaW5hbCBjb29yZGluYXRlcyBvZiB0aGUgYmFyXG4gICAgXG4gICAgXG4gICAgXG4gICAgc3Rhcl94ID0gbWVhbih4Y29vcmRzKSAjIHggY29vcmRpbmF0ZSBvZiB0aGUgdGV4dCBhYm92ZSB0aGUgYmFyIChpbiB0aGUgbWlkZGxlIG9mIHRoZSB0d28gZ3JvdXBzKVxuICAgIFxuICAgIHN0YXJfeSA9IHljb29yZF90b3AgKyBiYXJfaGVpZ2h0ICsgKCgyLjc1LzEwMCkqeV9zdW0pICMgeSBjb29yZGluYXRlIG9mIHRoZSB0ZXh0IGFib3ZlIHRoZSBiYXIgKGFib3ZlIHRoZSBiYXIgYnkgYSBkZXRlcm1pbmVkIGZhY3RvcilcbiAgICBcbiAgICBjb29yZF9zdGFyID0gYyhzdGFyX3gsIHN0YXJfeSkgIyB4LHkgY29vcmRpbmF0ZXMgb2YgdGhlIHRleHQgYWJvdmUgdGhlIGJhclxuICAgIFxuICAgIFxuICAgIFxuICAgIHBsb3QgPSBwbG90ICsgZ2VvbV9wYXRoKGRhdGEgPSBjb29yZF9iYXIsIGFlcyh4PXgsIHk9eSksIHNpemUgPSBzaXplX2JhciwgY29sb3IgPSBjb2xvcl9iYXIsIGxpbmV0eXBlID0gbGluZV90eXBlKSArIGFubm90YXRlKFwidGV4dFwiLCB4ID0gc3Rhcl94LCB5ID0gc3Rhcl95LCBsYWJlbCA9IHRleHQsIHNpemUgPSBzaXplX3RleHQsIGNvbG9yID0gY29sb3JfdGV4dCwgZm9udGZhY2UgPSBmb250X2ZhY2UsIGZhbWlseSA9IGZvbnRfc3R5bGUpICMgY3JlYXRlIHRoZSBuZXcgZ2dwbG90XG4gICAgXG4gICAgcHJpbnQocGxvdClcbiAgICBcbiAgICBcbiAgICBcbiAgfSBlbHNlIGlmIChjbGFzcyhhcy5saXN0LmVudmlyb25tZW50KHBsb3QkbGF5ZXJzW1sxXV0pJGdlb20pWzFdID09IFwiR2VvbUJhclwiKSB7ICMgaWYgdGhlIGdncGxvdCBpcyBhIGRvdHBsb3RcbiAgICBcbiAgICBjb29yZHMgPSBnZ3Bsb3RfYnVpbGQocGxvdCkkZGF0YVtbMV1dXG4gICAgXG4gICAgeGNvb3JkcyA9IGMoKSAgXG4gICAgXG4gICAgeWNvb3JkcyA9IGMoKVxuICAgIFxuICAgIGZvciAoaSBpbiBncm91cHMpeyAjIGdldCB0aGUgeCBhbmQgeSBjb29yZGluYXRlcyBvZiB0aGUgdHdvIGdyb3VwcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICBcbiAgICAgIHhjb29yZF90ZW1wID0gbWVhbihjKGNvb3Jkc1tpLF0keG1pbiwgY29vcmRzW2ksXSR4bWF4KSlcbiAgICAgIFxuICAgICAgeGNvb3JkcyA9IGFwcGVuZCh4Y29vcmRzLCB4Y29vcmRfdGVtcClcbiAgICAgIFxuICAgICAgeWNvb3JkX3RlbXAgPSBjb29yZHNbaSw3XSAjIFRoZSBwb3NpdGlvbiBvZiB5bWF4IGluIGdncGxvdF9idWlsZChwbG90KSRkYXRhW1sxXV0gY2hhbmdlZCBmcm9tIGNvbHVtbiA2IHRvIDdcbiAgICAgIFxuICAgICAgeWNvb3JkcyA9IGFwcGVuZCh5Y29vcmRzLCB5Y29vcmRfdGVtcClcbiAgICAgIFxuICAgIH1cbiAgICBcbiAgICBcbiAgICBcbiAgICB5X3JhbmdlID0gZ2dwbG90X2J1aWxkKHBsb3QpJGxheW91dCRwYW5lbF9zY2FsZXNfeVtbMV1dJGxpbWl0cyAjIGdldCB0aGUgdG90YWwgaGVpZ2h0IG9mIHRoZSB5IHNjYWxlXG4gICAgXG4gICAgeV9zdW0gPSBzdW0oYWJzKHlfcmFuZ2UpKVxuICAgIFxuICAgIHlfc2NhbGUgPSAoNy41LzEwMCkqeV9zdW0gICMgc3RhcnRpbmcgcG9zaXRpb24gb2YgdGhlIHZlcnRpY2FsIGJhciAoZGV0ZXJtaW5lZCAlIG9mIHRoZSB0b3RhbCB5IHNjYWxlKVxuICAgIFxuICAgIGJhcl9oZWlnaHQgPSB5X3NjYWxlICsgKCg1LzEwMCkqeV9zdW0pICMgZmluYWwgcG9zaXRpb24gb2YgdGhlIHZlcnRpY2FsIGJhciAoZGV0ZXJtaW5lZCAlIG9mIHRoZSB0b3RhbCB5IHNjYWxlIGluIGFkZGl0aW9uIHRvIHlfc2NhbGUpXG4gICAgXG4gICAgXG4gICAgXG4gICAgeWNvb3JkX3RvcCA9IG1heCh5Y29vcmRzKSAjIHRoZSBiYXIgc2hvdWxkIHRha2UgdGhlIGhlaWdoZXN0IG9mIHRoZSB0d28gZ3JvdXBzIGFzIGEgcmVmZXJlbmNlXG4gICAgXG4gICAgY29vcmRfYmFyID0gZGF0YS5mcmFtZSh4ID0gYyh4Y29vcmRzWzFdLCB4Y29vcmRzWzFdLCB4Y29vcmRzWzJdLCB4Y29vcmRzWzJdKSwgeSA9IGMoeWNvb3JkX3RvcCArIHlfc2NhbGUsIHljb29yZF90b3AgKyBiYXJfaGVpZ2h0LCB5Y29vcmRfdG9wICsgYmFyX2hlaWdodCwgeWNvb3JkX3RvcCArIHlfc2NhbGUpKSAjICBmaW5hbCBjb29yZGluYXRlcyBvZiB0aGUgYmFyXG4gICAgXG4gICAgXG4gICAgXG4gICAgc3Rhcl94ID0gbWVhbih4Y29vcmRzKSAjIHggY29vcmRpbmF0ZSBvZiB0aGUgdGV4dCBhYm92ZSB0aGUgYmFyIChpbiB0aGUgbWlkZGxlIG9mIHRoZSB0d28gZ3JvdXBzKVxuICAgIFxuICAgIHN0YXJfeSA9IHljb29yZF90b3AgKyBiYXJfaGVpZ2h0ICsgKHRleHRfaGVpZ2h0Knlfc3VtKSAjIHkgY29vcmRpbmF0ZSBvZiB0aGUgdGV4dCBhYm92ZSB0aGUgYmFyIChhYm92ZSB0aGUgYmFyIGJ5IGEgZGV0ZXJtaW5lZCBmYWN0b3IpXG4gICAgXG4gICAgY29vcmRfc3RhciA9IGMoc3Rhcl94LCBzdGFyX3kpICMgeCx5IGNvb3JkaW5hdGVzIG9mIHRoZSB0ZXh0IGFib3ZlIHRoZSBiYXJcbiAgICBcbiAgICBcbiAgICBcbiAgICBwbG90ID0gcGxvdCArIGdlb21fcGF0aChkYXRhID0gY29vcmRfYmFyLCBhZXMoeD14LCB5PXkpLCBzaXplID0gc2l6ZV9iYXIsIGNvbG9yID0gY29sb3JfYmFyLCBsaW5ldHlwZSA9IGxpbmVfdHlwZSkgKyBhbm5vdGF0ZShcInRleHRcIiwgeCA9IHN0YXJfeCwgeSA9IHN0YXJfeSwgbGFiZWwgPSB0ZXh0LCBzaXplID0gc2l6ZV90ZXh0LCBjb2xvciA9IGNvbG9yX3RleHQsIGZvbnRmYWNlID0gZm9udF9mYWNlLCBmYW1pbHkgPSBmb250X3N0eWxlKSAjIGNyZWF0ZSB0aGUgbmV3IGdncGxvdFxuICAgIFxuICAgIHByaW50KHBsb3QpXG4gICAgXG4gIH1cbiAgXG59XG5gYGAifQ== -->
<pre class="r"><code>significativity_bar &lt;- function(plot, groups, text = &quot;*&quot;, text_height = 0.0275, size_bar = 1, color_bar = &quot;black&quot;, size_text = 8, color_text = &quot;black&quot;, font_face = 1, font_style = &quot;serif&quot;, line_type = &quot;solid&quot;){
if (!require(&quot;ggplot2&quot;, character.only=T, quietly=T)){ # use library ggplot
install.packages(&quot;ggplot2&quot;)
library(ggplot2, character.only=T)
}
if (class(plot)[1] != &quot;gg&quot;){
stop(&quot;Your input plot is not a ggplot&quot;)
}
if (length(groups) != 2){
stop(&quot;Please select only 2 groups between which you want the error bar&quot;)
}
if (!is.vector(groups)){
stop(&quot;Please input your 2 selected groups in a vector&quot;)
}
if (!is.character(text)) {
stop(&quot;Please input the text above the bar as character&quot;)
}
if (!is.numeric(text_height) | length(text_height) &gt; 1){
stop(&quot;Please input one numeric value for the text height&quot;)
}
if (!is.numeric(size_bar) | length(size_bar) &gt; 1){
stop(&quot;Please input one numeric value for the bar size&quot;)
}
if (!is.character(color_bar)){
stop(&quot;Please input an existing R color, as a character, for the color of the bar&quot;)
}
if (!is.numeric(size_text) | length(size_text) &gt; 1){
stop(&quot;Please input one numeric value for the text size&quot;)
}
if (!is.numeric(font_face) | length(font_face) &gt; 1){
stop(&quot;Please input one numeric value for the font face&quot;)
}
if (!is.character(color_text)){
stop(&quot;Please input an existing R color, as a character, for the color of the text&quot;)
}
if (!is.character(font_style)){
stop(&quot;Please input an existing font family, as a character, for the color of the bar&quot;)
}
if (!is.character(line_type)){
stop(&quot;Please input an existing line style, as a character, for the color of the bar&quot;)
}
if (text_height &gt;=1){
warning(&quot;text_height should be between 0 and 1, default value for * and around 0.04 for text are advised&quot;)
}
if (class(as.list.environment(plot$layers[[1]])$geom)[1] == &quot;GeomPoint&quot;){ # if the ggplot is a dotplot
coords = ggplot_build(plot)$data[[1]] # get the coordinates of the points
xcoords = c()
ycoords = c()
for (i in groups){ # get the x coordinates of all coordinates in a vector, for the 2 selected groups
xcoord_temp = unique(coords$x)[i]
xcoords = append(xcoords, xcoord_temp)
}
for (i in c(1,2)){
ycoord_temp = max(coords[coords$x == xcoords[i],]$y) # get the y coordinate of the upper point of each group
ycoords = append(ycoords, ycoord_temp)
}
y_range = ggplot_build(plot)$layout$panel_scales_y[[1]]$limits # get the total height of the y scale
# panel_ranges in ggplot_build(plot)$layout does not exist anymore ... use panel_scale_y instead
y_sum = sum(abs(y_range))
y_scale = (7.5/100)*y_sum # starting position of the vertical bar (determined % of the total y scale)
bar_height = y_scale + ((5/100)*y_sum) # final position of the vertical bar (determined % of the total y scale in addition to y_scale)
ycoord_top = max(ycoords) # the bar should take the heighest of the two groups as a reference
coord_bar = data.frame(x = c(xcoords[1], xcoords[1], xcoords[2], xcoords[2]), y = c(ycoord_top + y_scale, ycoord_top + bar_height, ycoord_top + bar_height, ycoord_top + y_scale)) # final coordinates of the bar
star_x = mean(xcoords) # x coordinate of the text above the bar (in the middle of the two groups)
star_y = ycoord_top + bar_height + ((2.75/100)*y_sum) # y coordinate of the text above the bar (above the bar by a determined factor)
coord_star = c(star_x, star_y) # x,y coordinates of the text above the bar
plot = plot + geom_path(data = coord_bar, aes(x=x, y=y), size = size_bar, color = color_bar, linetype = line_type) + annotate(&quot;text&quot;, x = star_x, y = star_y, label = text, size = size_text, color = color_text, fontface = font_face, family = font_style) # create the new ggplot
print(plot)
} else if (class(as.list.environment(plot$layers[[1]])$geom)[1] == &quot;GeomBar&quot;) { # if the ggplot is a dotplot
coords = ggplot_build(plot)$data[[1]]
xcoords = c()
ycoords = c()
for (i in groups){ # get the x and y coordinates of the two groups
xcoord_temp = mean(c(coords[i,]$xmin, coords[i,]$xmax))
xcoords = append(xcoords, xcoord_temp)
ycoord_temp = coords[i,7] # The position of ymax in ggplot_build(plot)$data[[1]] changed from column 6 to 7
ycoords = append(ycoords, ycoord_temp)
}
y_range = ggplot_build(plot)$layout$panel_scales_y[[1]]$limits # get the total height of the y scale
y_sum = sum(abs(y_range))
y_scale = (7.5/100)*y_sum # starting position of the vertical bar (determined % of the total y scale)
bar_height = y_scale + ((5/100)*y_sum) # final position of the vertical bar (determined % of the total y scale in addition to y_scale)
ycoord_top = max(ycoords) # the bar should take the heighest of the two groups as a reference
coord_bar = data.frame(x = c(xcoords[1], xcoords[1], xcoords[2], xcoords[2]), y = c(ycoord_top + y_scale, ycoord_top + bar_height, ycoord_top + bar_height, ycoord_top + y_scale)) # final coordinates of the bar
star_x = mean(xcoords) # x coordinate of the text above the bar (in the middle of the two groups)
star_y = ycoord_top + bar_height + (text_height*y_sum) # y coordinate of the text above the bar (above the bar by a determined factor)
coord_star = c(star_x, star_y) # x,y coordinates of the text above the bar
plot = plot + geom_path(data = coord_bar, aes(x=x, y=y), size = size_bar, color = color_bar, linetype = line_type) + annotate(&quot;text&quot;, x = star_x, y = star_y, label = text, size = size_text, color = color_text, fontface = font_face, family = font_style) # create the new ggplot
print(plot)
}
}</code></pre>
<!-- rnb-source-end -->
<!-- rnb-chunk-end -->
<!-- rnb-text-begin -->
<!-- rnb-text-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuZ2c8LSBnZ3Bsb3QoYywgYWVzKHggPSBjLi5hYS4uLi5hcC4uLCB5ID0gYXMubnVtZXJpYyhtX2R1cmVlX2FwcGVsKSkpK1xuICAgIGdlb21fYmFyKHN0YXQgPSBcImlkZW50aXR5XCIpK1xuICAgIGdlb21fZXJyb3JiYXIoeW1pbiA9IG1fZHVyZWVfYXBwZWwtc2RfZHVyZWVfYXBwZWwsIHltYXggPSBtX2R1cmVlX2FwcGVsK3NkX2R1cmVlX2FwcGVsKSsgXG4gICAgeWxpbSgtNTAwLDUwMDApK1xuICAgIGxhYnModGl0bGU9XCJEdXJlZSBhcHBlbFwiKVxuc2lnbmlmaWNhdGl2aXR5X2JhcihnZywgZ3JvdXBzID0gYygxLDIpKVxuYGBgIn0= -->
<pre class="r"><code>gg&lt;- ggplot(c, aes(x = c..aa....ap.., y = as.numeric(m_duree_appel)))+
geom_bar(stat = &quot;identity&quot;)+
geom_errorbar(ymin = m_duree_appel-sd_duree_appel, ymax = m_duree_appel+sd_duree_appel)+
ylim(-500,5000)+
labs(title=&quot;Duree appel&quot;)
significativity_bar(gg, groups = c(1,2))</code></pre>
<!-- rnb-source-end -->
<!-- rnb-chunk-end -->
<!-- rnb-text-begin -->
</div>
<div id="taux-de-réponses" class="section level3">
<h3>Taux de réponses</h3>
<p>Cette partie c’est juste pour voir si je répond autant aux messages qu’on m’en envoie.</p>
<!-- rnb-text-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuUmF0aW88LWRmJE1lc3NhZ2VzX3JlY3VzL2RmJE1lc3NhZ2VzX2Vudm95ZXNcbiNSZW1wbGFjZW1lbnQgZGVzIE5hTiBldCBpbmYgKGRpdmlzaW9uIHBhciAwKSBlbiAwLlxuUmF0aW9baXMubmEoUmF0aW8pXTwtMFxuUmF0aW9baXMuaW5maW5pdGUoUmF0aW8pXTwtMFxuYmFycGxvdChSYXRpbylcbmBgYCJ9 -->
<pre class="r"><code>Ratio&lt;-df$Messages_recus/df$Messages_envoyes
#Remplacement des NaN et inf (division par 0) en 0.
Ratio[is.na(Ratio)]&lt;-0
Ratio[is.infinite(Ratio)]&lt;-0
barplot(Ratio)</code></pre>
<!-- rnb-source-end -->
<!-- rnb-chunk-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxubWVhbihSYXRpbylcbmBgYCJ9 -->
<pre class="r"><code>mean(Ratio)</code></pre>
<!-- rnb-source-end -->
<!-- rnb-chunk-end -->
<!-- rnb-text-begin -->
<p>En moyenne c’est assez équilibré : je réponds autant de fois qu’on m’envoie un message.</p>
</div>
</div>
<div id="conclusion" class="section level2">
<h2>Conclusion</h2>
<p><strong>J’ai passé pas mal de temps à faire ça mais ça m’a permis de bien prendre en main l’outil.<br />
Je conçois que mon étude est assez sale et que les manières de plotter ne sont vraiment pas optimisées mais ce n’était pas vraiment le but de l’exercice.</strong></p>
<p><strong>Après avoir compilé, je n’ai pas pû le faire en pdf (des erreurs de polices qui ne passent pas avec LaTeX on dirait …).<br />
Aussi, j’ai remarqué qu’il fallait laissé un retour chariot après la visualisation du plot sinon le texte se met à côté dans le rendu.</strong></p>
<!-- rnb-text-end -->
</div>
<div id="rmd-source-code">LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpUaGlzIGlzIGFuIFtSIE1hcmtkb3duXShodHRwOi8vcm1hcmtkb3duLnJzdHVkaW8uY29tKSBOb3RlYm9vay4gV2hlbiB5b3UgZXhlY3V0ZSBjb2RlIHdpdGhpbiB0aGUgbm90ZWJvb2ssIHRoZSByZXN1bHRzIGFwcGVhciBiZW5lYXRoIHRoZSBjb2RlLiANCg0KVHJ5IGV4ZWN1dGluZyB0aGlzIGNodW5rIGJ5IGNsaWNraW5nIHRoZSAqUnVuKiBidXR0b24gd2l0aGluIHRoZSBjaHVuayBvciBieSBwbGFjaW5nIHlvdXIgY3Vyc29yIGluc2lkZSBpdCBhbmQgcHJlc3NpbmcgKkN0cmwrU2hpZnQrRW50ZXIqLiANCg0KYGBge3J9DQpwbG90KGNhcnMpDQpgYGANCg0KQWRkIGEgbmV3IGNodW5rIGJ5IGNsaWNraW5nIHRoZSAqSW5zZXJ0IENodW5rKiBidXR0b24gb24gdGhlIHRvb2xiYXIgb3IgYnkgcHJlc3NpbmcgKkN0cmwrQWx0K0kqLg0KDQpXaGVuIHlvdSBzYXZlIHRoZSBub3RlYm9vaywgYW4gSFRNTCBmaWxlIGNvbnRhaW5pbmcgdGhlIGNvZGUgYW5kIG91dHB1dCB3aWxsIGJlIHNhdmVkIGFsb25nc2lkZSBpdCAoY2xpY2sgdGhlICpQcmV2aWV3KiBidXR0b24gb3IgcHJlc3MgKkN0cmwrU2hpZnQrSyogdG8gcHJldmlldyB0aGUgSFRNTCBmaWxlKS4NCg0KVGhlIHByZXZpZXcgc2hvd3MgeW91IGEgcmVuZGVyZWQgSFRNTCBjb3B5IG9mIHRoZSBjb250ZW50cyBvZiB0aGUgZWRpdG9yLiBDb25zZXF1ZW50bHksIHVubGlrZSAqS25pdCosICpQcmV2aWV3KiBkb2VzIG5vdCBydW4gYW55IFIgY29kZSBjaHVua3MuIEluc3RlYWQsIHRoZSBvdXRwdXQgb2YgdGhlIGNodW5rIHdoZW4gaXQgd2FzIGxhc3QgcnVuIGluIHRoZSBlZGl0b3IgaXMgZGlzcGxheWVkLg0K</div> <div id="rmd-source-code">LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6DQogIHBkZl9kb2N1bWVudDogZGVmYXVsdA0KICBodG1sX25vdGVib29rOiBkZWZhdWx0DQotLS0NCg0KDQojIyBMJ8OpdHVkZQ0KQ2V0dGUgw6l0dWRlIGNvbnNpc3RlIMOgIMOpdmFsdWVyIG1vbiB1c2FnZSBkdSB0w6lsw6lwaG9uZSBkZXB1aXMgbGUgMjUgZsOpdnJpZXIgMjAyMCBwb3VyIMOpdGFibGlyIHVuIGxpZW4gZW50cmUgbGEgbWlzZSBlbiBwbGFjZSBkdSBjb25maW5lbWVudCBsZSAxNyBtYXJzIDIwMjAgZXQgbW9uIHVzYWdlIHTDqWzDqXBob25pcXVlLg0KDQojIyBMZSBmaWNoaWVyIGRlIGRvbm7DqWVzDQpMZSBmaWNoaWVyIGRlIGRvbm7DqWVzIGNpLWFwcsOocyBlc3QgdW5lIHRhYmxlIHJlcHLDqXNlbnRhbnQgZGlmZsOpcmVudHMgcGFyYW3DqHRyZXMgY2hhcXVlIGpvdXIgZGVwdWlzIGxlIDI1LzAyLzIwMjAgOiAgIA0KLSBMZSBub21icmUgZCdhcHBlbHMgw6ltaXMgOiBBcHBlbHNcX2VtaXMgIA0KLSBMZSBub21icmUgZCdhcHBlbHMgcmXDp3VzIDogQXBwZWxzXF9yZWN1cyAoQ29tcHJlbmRzIGF1c3NpIGxlcyBhcHBlbHMgbWFucXXDqXMpICANCi0gTGEgZHVyw6llIHRvdGFsZSBkZXMgYXBwZWxzIGRlIGxhIGpvdXJuw6llIGVuIHNlY29uZGUgOiBEdXJlZVxfYXBwZWxzICANCi0gTGUgbm9tYnJlIGRlIG1lc3NhZ2VzIHJlw6d1cyA6IE1lc3NhZ2VzXF9yZWN1cyAgDQotIExlIG5vbWJyZSBkZSBtZXNzYWdlcyBlbnZvecOpcyA6IE1lc3NhZ2VzXF9lbnZveWVzICANCiAgDQpMZSBmaWNoaWVyIHBldXQgw6p0cmUgaW1wb3J0w6kgY29tbWUgY2VjaSA6ICANCmBgYHtyfQ0KZGY8LXJlYWQuY3N2KCJDOi9Vc2Vycy9NYXJjL0Rlc2t0b3AvTU9PQy9tb29jLXJyL21vZHVsZTIvZXhvNC9Cb29rMS5jc3YiLCBzZXAgPSAiOyIpDQpoZWFkKGRmKQ0KYGBgDQoNCiMjIEwnYW5hbHlzZSBkZSBsJ3VzYWdlIHTDqWzDqXBob25pcXVlDQoNClRvdXQgZCdhYm9yZCBvbiBwZXV0IHBsb3R0ZXIgbGVzIGRpZmbDqXJlbnRzIHBhcmFtw6h0cmVzIGF1IGNvdXJzIGR1IHRlbXBzIHBvdXIgc2UgZG9ubmVyIHVuIGFwZXLDp3UgZGUgbW9uIHVzYWdlIDogIA0KICANCjEuIExlcyBhcHBlbHMgw6ltaXMgIA0KYGBge3J9DQpiYXJwbG90KGRmJEFwcGVsc19lbWlzLCBuYW1lcy5hcmcgPSBkZiTDry4uRGF0ZSkNCmBgYA0KDQpMZXMgZGF0ZXMgc29udCBtYWwgcG9zaXRpb25uw6llcyBtYWlzIGMnZXN0IHBhcyBncmF2ZS4gSWwgc2VtYmxlIHF1ZSBqJ2FpIGJlYXVjb3VwIGFwcGVsw6kgYXV0b3VyIGRlIGxhIGRhdGUgZHUgMTcgbWFycy4gIA0KICANCjIuIEFwcGVscyByZcOndXMgIA0KYGBge3J9DQpiYXJwbG90KGRmJEFwcGVsc19yZWN1cywgbmFtZXMuYXJnID0gZGYkw68uLkRhdGUpDQpgYGANCg0KSWwgc2VtYmxlIHF1ZSBqJ2FpIHJlw6d1IGJlYXVjb3VwIGQnYXBwZWxzIGxhIHZlaWxsZSBkdSAxNyBtYXJzIHB1aXMgcXVlIGonYWkgcmXDp3UgKyBkJ2FwcGVscyBlbiBnw6luw6lyYWwgYXByw6hzIGNldHRlIHDDqXJpb2RlIHF1J2F2YW50LiAgDQogIA0KMy4gRHVyw6llIGFwcGVsICANCmBgYHtyfQ0KYmFycGxvdChkZiREdXJlZV9hcHBlbCwgbmFtZXMuYXJnID0gZGYkw68uLkRhdGUpDQpgYGANCg0KTMOgIGMnZXN0IHRyw6hzIHZveWFudC4gSidhaSBwYXNzw6kgYmVhdWNvdXAgZGUgdGVtcHMgYXUgdMOpbMOpcGhvbmUgYXByw6hzIGxlIDE2IG1hcnMgY29tcGFyw6kgw6AgYXZhbnQgKHNhdWYgMiBmb2lzKS4gIA0KICANCjQuIE1lc3NhZ2VzIHJlw6d1cyAgDQpgYGB7cn0NCmJhcnBsb3QoZGYkTWVzc2FnZXNfcmVjdXMsIG5hbWVzLmFyZyA9IGRmJMOvLi5EYXRlKQ0KYGBgDQogIA0KNS4gTWVzc2FnZXMgZW52b3nDqXMgIA0KYGBge3J9DQpiYXJwbG90KGRmJE1lc3NhZ2VzX2Vudm95ZXMsIG5hbWVzLmFyZyA9IGRmJMOvLi5EYXRlKQ0KYGBgDQoNClBvdXIgbGVzIG1lc3NhZ2VzLCBsYSB0ZW5kYW5jZSBlc3QgaW52ZXJzZSBhdXggYXBwZWxzIDogamUgcmXDp29pcyBldCBlbnZvaWUgLSBkZSBzbXMgZGVwdWlzIGxlIDE3IG1hcnMgY29tcGFyw6kgw6AgYXZhbnQuICANCkonYWkgZXB1dCDDqnRyZSBjaGFuZ8OpIG1vbiB1c2FnZSBkZSBsJ3VuIMOgIGwnYXV0cmUuICANClNhdWYgYXV0b3VyIGR1IDE2LTE3IG1hcnMgb8O5IGonYWkgYmVhdWNvdXAgY29tbXVuaXF1w6kuICANCg0KIyMjIFJlcHLDqXNlbnRhdGlvbiBkZXMgbW95ZW5uZXMgYXZhbnQgZXQgYXByw6hzIGxlIDE3IG1hcnMNCkplIHZhaXMgcmFqb3V0w6kgdW5lIGNvbG9ubmUgcG91ciBpbmRpcXXDqSBhdmFudCBvdSBhcHLDqHMgbGUgMTcgbWFycy4gIA0KYGBge3J9DQphZGQ8LWMocmVwKCJhdmFudCIsMjEpLCByZXAoImFwcsOocyIsMjEpKQ0KZGYkYWRkPC1hZGQNCmBgYA0KT3VpIGplIHNhaXMgYydlc3QgdnJhaW1lbnQgbnVsIG1haXMgZW4gZ3JvcyBqZSBzYWlzIHF1J2lsIHkgYSA0MiBsaWduZXMgZGFucyBtb24gdGFibGVhdSAoamUgcGV1eCBsZSB2w6lyaWZpZXIgYXZlYyBgbGVuZ3RoKGRmJEFwcGVsc19lbWlzKWAgcGFyIGV4ZW1wbGUpIGV0IHF1ZSBsZSAxNyBtYXJzIGVzdCBsYSAyMsOobWUgbGlnbmUuICANCkonYWkgZG9uYyBham91dMOpIDIxIGZvaXMgImF2YW50IiBldCAyMSBmb2lzICJhcHLDqHMiIHN1ciB1bmUgY29sb25uZSBkYW5zIG1vbiBkYXRhIGZyYW1lIGRmLiAgDQogIA0KICANCk1haW50ZW5hbnQgb24gdmEgcG91dm9pciBjYWxjdWxlciBsZXMgbW95ZW5uZXMgZGVzIHBhcmFtw6h0cmVzIGF2YW50IGV0IGFwcsOocyAoaW5jbHVzKSBsZSAxNyBtYXJzIDIwMjAuICANCmBgYHtyfQ0KbV9hcHBlbHNfZW1pczwtYyhtZWFuKGRmJEFwcGVsc19lbWlzW2RmJGFkZD09ImF2YW50Il0pLCBtZWFuKGRmJEFwcGVsc19lbWlzW2RmJGFkZD09ImFwcsOocyJdKSkNCm1fYXBwZWxzX3JlY3VzPC1jKG1lYW4oZGYkQXBwZWxzX3JlY3VzW2RmJGFkZD09ImF2YW50Il0pLCBtZWFuKGRmJEFwcGVsc19yZWN1c1tkZiRhZGQ9PSJhcHLDqHMiXSkpDQptX2R1cmVlX2FwcGVsPC1jKG1lYW4oZGYkRHVyZWVfYXBwZWxbZGYkYWRkPT0iYXZhbnQiXSksIG1lYW4oZGYkRHVyZWVfYXBwZWxbZGYkYWRkPT0iYXByw6hzIl0pKQ0KbV9tZXNzYWdlc19yZWN1czwtYyhtZWFuKGRmJE1lc3NhZ2VzX3JlY3VzW2RmJGFkZD09ImF2YW50Il0pLCBtZWFuKGRmJE1lc3NhZ2VzX3JlY3VzW2RmJGFkZD09ImFwcsOocyJdKSkNCm1fbWVzc2FnZXNfZW52b3llczwtYyhtZWFuKGRmJE1lc3NhZ2VzX2Vudm95ZXNbZGYkYWRkPT0iYXZhbnQiXSksIG1lYW4oZGYkTWVzc2FnZXNfZW52b3llc1tkZiRhZGQ9PSJhcHLDqHMiXSkpDQptX2FwcGVsc19lbWlzDQptX2FwcGVsc19yZWN1cw0KbV9tZXNzYWdlc19yZWN1cw0KbV9tZXNzYWdlc19lbnZveWVzDQpgYGANCkV0IGxlcyDDqWNhcnRzLXR5cGVzIDogIA0KYGBge3J9DQpzZF9hcHBlbHNfZW1pczwtYyhzZChkZiRBcHBlbHNfZW1pc1tkZiRhZGQ9PSJhdmFudCJdKSwgc2QoZGYkQXBwZWxzX2VtaXNbZGYkYWRkPT0iYXByw6hzIl0pKQ0Kc2RfYXBwZWxzX3JlY3VzPC1jKHNkKGRmJEFwcGVsc19yZWN1c1tkZiRhZGQ9PSJhdmFudCJdKSwgc2QoZGYkQXBwZWxzX3JlY3VzW2RmJGFkZD09ImFwcsOocyJdKSkNCnNkX2R1cmVlX2FwcGVsPC1jKHNkKGRmJER1cmVlX2FwcGVsW2RmJGFkZD09ImF2YW50Il0pLCBzZChkZiREdXJlZV9hcHBlbFtkZiRhZGQ9PSJhcHLDqHMiXSkpDQpzZF9tZXNzYWdlc19yZWN1czwtYyhzZChkZiRNZXNzYWdlc19yZWN1c1tkZiRhZGQ9PSJhdmFudCJdKSwgc2QoZGYkTWVzc2FnZXNfcmVjdXNbZGYkYWRkPT0iYXByw6hzIl0pKQ0Kc2RfbWVzc2FnZXNfZW52b3llczwtYyhzZChkZiRNZXNzYWdlc19lbnZveWVzW2RmJGFkZD09ImF2YW50Il0pLCBzZChkZiRNZXNzYWdlc19lbnZveWVzW2RmJGFkZD09ImFwcsOocyJdKSkNCmBgYA0KDQogIA0KTWFpbnRlbmFudCBvbiB2YSBwb3V2b2lyIHBsb3R0ZXIgbGVzIG1veWVubmVzIGRlIHRvdXMgbGVzIHBhcmFtw6h0cmVzIGF2YW50IGV0IGFwcsOocyAoaW5jbHVzKSBsZSAxNyBtYXJzIDIwMjAuICANCkxlIG1pZXV4IGMnZXN0IGQndXRpbGlzZXIgZ2dwbG90LiAgIA0KYGBge3J9DQojaW5zdGFsbC5wYWNrYWdlcygiZ2dwbG90MiIpDQpsaWJyYXJ5KGdncGxvdDIpDQphPC1kYXRhLmZyYW1lKG1fYXBwZWxzX2VtaXMsIHNkX2FwcGVsc19lbWlzLCBjKCJhYSIsICJhcCIpKQ0KZ2dwbG90KGEsIGFlcyh4ID0gYSRjLi5hYS4uLi5hcC4uLCB5ID0gbV9hcHBlbHNfZW1pcykpKw0KICAgIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiKSsNCiAgICBnZW9tX2Vycm9yYmFyKHltaW4gPSBhJG1fYXBwZWxzX2VtaXMtYSRzZF9hcHBlbHNfZW1pcywgeW1heCA9IGEkbV9hcHBlbHNfZW1pcythJHNkX2FwcGVsc19lbWlzKSsgDQogICAgeWxpbSgtMSw0KSsNCiAgICBsYWJzKHRpdGxlPSJBcHBlbHMgw6ltaXMiKQ0KYGBgDQpgYGB7cn0NCmI8LWRhdGEuZnJhbWUobV9hcHBlbHNfcmVjdXMsIHNkX2FwcGVsc19yZWN1cywgYygiYWEiLCAiYXAiKSkNCmdncGxvdChiLCBhZXMoeCA9IGIkYy4uYWEuLi4uYXAuLiwgeSA9IGIkbV9hcHBlbHNfcmVjdXMpKSsNCiAgICBnZW9tX2JhcihzdGF0ID0gImlkZW50aXR5IikrDQogICAgZ2VvbV9lcnJvcmJhcih5bWluID0gYiRtX2FwcGVsc19yZWN1cy1iJHNkX2FwcGVsc19yZWN1cywgeW1heCA9IGIkbV9hcHBlbHNfcmVjdXMrYiRzZF9hcHBlbHNfcmVjdXMpKyANCiAgICB5bGltKC0xLDMpKw0KICAgIGxhYnModGl0bGU9IkFwcGVscyByZWN1cyIpDQpgYGANCmBgYHtyfQ0KYzwtZGF0YS5mcmFtZShtX2R1cmVlX2FwcGVsLCBzZF9kdXJlZV9hcHBlbCwgYygiYWEiLCAiYXAiKSkNCmdncGxvdChjLCBhZXMoeCA9IGMkYy4uYWEuLi4uYXAuLiwgeSA9IGMkbV9kdXJlZV9hcHBlbCkpKw0KICAgIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiKSsNCiAgICBnZW9tX2Vycm9yYmFyKHltaW4gPSBjJG1fZHVyZWVfYXBwZWwtYyRzZF9kdXJlZV9hcHBlbCwgeW1heCA9IGMkbV9kdXJlZV9hcHBlbCtjJHNkX2R1cmVlX2FwcGVsKSsgDQogICAgeWxpbSgtNTAwLDIwMDApKw0KICAgIGxhYnModGl0bGU9IkR1cmVlIGFwcGVsIikNCmBgYA0KYGBge3J9DQpkPC1kYXRhLmZyYW1lKG1fbWVzc2FnZXNfZW52b3llcywgc2RfbWVzc2FnZXNfZW52b3llcywgYygiYWEiLCAiYXAiKSkNCmdncGxvdChkLCBhZXMoeCA9IGQkYy4uYWEuLi4uYXAuLiwgeSA9IGQkbV9tZXNzYWdlc19lbnZveWVzKSkrDQogICAgZ2VvbV9iYXIoc3RhdCA9ICJpZGVudGl0eSIpKw0KICAgIGdlb21fZXJyb3JiYXIoeW1pbiA9IGQkbV9tZXNzYWdlc19lbnZveWVzLWQkc2RfbWVzc2FnZXNfZW52b3llcywgeW1heCA9IGQkbV9tZXNzYWdlc19lbnZveWVzK2Qkc2RfbWVzc2FnZXNfZW52b3llcykrIA0KICAgIHlsaW0oMCwxMikrDQogICAgbGFicyh0aXRsZT0iTWVzc2FnZXMgZW52b3llcyIpDQpgYGANCmBgYHtyfQ0KZTwtZGF0YS5mcmFtZShtX21lc3NhZ2VzX3JlY3VzLCBzZF9tZXNzYWdlc19yZWN1cywgYygiYWEiLCAiYXAiKSkNCmdncGxvdChlLCBhZXMoeCA9IGUkYy4uYWEuLi4uYXAuLiwgeSA9IGUkbV9tZXNzYWdlc19yZWN1cykpKw0KICAgIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiKSsNCiAgICBnZW9tX2Vycm9yYmFyKHltaW4gPSBlJG1fbWVzc2FnZXNfcmVjdXMtZSRzZF9tZXNzYWdlc19yZWN1cywgeW1heCA9IGUkbV9tZXNzYWdlc19yZWN1cytlJHNkX21lc3NhZ2VzX3JlY3VzKSsgDQogICAgeWxpbSgtMiwxMikrDQogICAgbGFicyh0aXRsZT0iTWVzc2FnZXMgcmVjdXMiKQ0KYGBgDQoNCl9fQmlsYW4gOiBPbiB2b2l0IGRlcyBhdWdtZW50YXRpb25zIGRhbnMgbGVzIGFwcGVscyBldCB1bmUgZGltaW51dGlvbiBkYW5zIGxlcyBtZXNzYWdlcyBtYWlzIGxlcyDDqWNhcnRzIHR5cGVzIHNvbnQgw6lub3JtZXNfXyAgDQogIA0KQSBtb24gYXZpcywgcmllbiBuJ2VzdCBzaWduaWZpY2F0aWYgbWFpcyBvbiBwZXV0IHMnZW50cmFpbmVyIHN1ciB1biBjYXMuICANCkNvbW1lIGlsIG4neSBhIHF1ZSAyMSB2YWxldXJzIGRhbnMgY2hhcXVlIGdyb3VwZSwgamUgbmUgcGV1eCBwYXMgYXBwbGlxdWVyIGxlIHRow6lvcsOobWUgY2VudHJhbCBsaW1pdGUuIEplIHZhaXMgZG9uYyB2w6lyaWZpZXIgbGEgZGlzdHJpYnV0aW9uIG5vcm1hbGUgZGUgY2hhcXVlIGdyb3VwZSBhaW5zaSBxdWUgbCfDqWdhbGl0w6kgZGVzIHZhcmlhbmNlcyBwb3VyIHZvaXIgcXVlbCB0ZXN0IHN0YXRpc3RpcXVlIGFwcGxpcXXDqS4gIA0KUHJlbm9ucyBjb21tZSBleGVtcGxlIGxhIGR1csOpZSBkZSBsJ2FwcGVsLiAgDQpgYGB7cn0NCnNoYXBpcm8udGVzdChkZiREdXJlZV9hcHBlbFtkZiRhZGQ9PSJhdmFudCJdKQ0Kc2hhcGlyby50ZXN0KGRmJER1cmVlX2FwcGVsW2RmJGFkZD09ImFwcsOocyJdKQ0KYGBgDQpMZXMgdGVzdHMgZGUgU2hhcGlyby1XaWxrIHNvbnQgc2lnbmlmaWNhdGlmcyBkb25jIGxlcyBkaXN0cmlidXRpb25zIG5lIHNvbnQgcGFzIG5vcm1hbGVzLiAgDQpVdGlsaXNhdGlvbiBkZSB0ZXN0cyBub24gcGFyYW3DqXRyaXF1ZXMgdHlwZSBNYW5uLVdoaXRuZXkgOiAgDQpgYGB7cn0NCndpbGNveC50ZXN0KGRmJER1cmVlX2FwcGVsW2RmJGFkZD09ImF2YW50Il0sZGYkRHVyZWVfYXBwZWxbZGYkYWRkPT0iYXByw6hzIl0pDQpgYGANCkFoIGJlbiBlbiBmYWl0IGxhIGR1csOpZSBkZXMgYXBwZWxzIGEgc2lnbmlmaWNhdGl2ZW1lbnQgYXVnbWVudMOpZSBhcHLDqHMgbGUgMTcgbWFycyAyMDIwLiBKZSBuZSBzdWlzIHBhcyBzdXBlciBmb3J0IGVuIHN0YXRpc3RpcXVlcyBkb25jIGonZXNww6hyZSBxdWUgYydlc3QgY29ycmVjdC4gQXVzc2ksIDIxIMOpY2hhbnRpbGxvbnMgcGFyIGdyb3VwZSBjJ2VzdCBwYXMgbWFsIHBvdXIgdW4gdGVzdCBub24gcGFyYW3DqXRyaXF1ZS4gIA0KICANCkR1IGNvdXAgb24gdmEgZXNzYXllciBkZSBtZXR0cmUgdW5lIMOpdG9pbGUgc3VyIGxlIHBsb3QgKGNlIHF1aSBuJ2VzdCBwYXMgY29tcHJpcyBkYW5zIGxlcyBmb25jdGlvbnMgZ2dwbG90KS4gIA0KUG91ciBjZWxhIG9uIHZhIGRvbmMgdGVzdGVyIGxlIGNvZGUgZCd1biBhbWkgZGlzcG9uaWJsZSBzdXIgW0dpdGh1Yl0oaHR0cHM6Ly9naXRodWIuY29tL0V2ZW5TdGFyNjkvc2lnbmlmaWNhdGl2aXR5LmJhcikuICANCmBgYHtyfQ0KI2luc3RhbGwucGFja2FnZXMoImRldnRvb2xzIikNCmxpYnJhcnkoZGV2dG9vbHMpDQojQmVzb2luIGRlIFJ0b29scyAzLjUNCiNpbnN0YWxsX2dpdGh1YigiRXZlblN0YXI2OS9zaWduaWZpY2F0aXZpdHkuYmFyL3NpZ25pZmljYXRpdml0eS5iYXIiKQ0KbGlicmFyeShzaWduaWZpY2F0aXZpdHkuYmFyKQ0KYGBgDQpCb24gaidhaSBkw7sgdW4gcGV1IGNoYW5nZXIgc2EgZm9uY3Rpb24gcGFyY2UgcXUnZWxsZSBuJ2VzdCBwbHVzIGNvbXBhdGlibGUgYXZlYyBnZ3Bsb3QgMy4zLiAgDQpKJ2FpIGNoYW5nw6kgbGEgbWFuacOocmUgZGUgcmV0cm91dmVyIGxlcyBjb29yZG9ubsOpZXMgeSA6IFRoZSBwb3NpdGlvbiBvZiB5bWF4IGluIGdncGxvdFxfYnVpbGQocGxvdClcJGRhdGFbWzFdXSBjaGFuZ2VkIGZyb20gY29sdW1uIDYgdG8gNy4gIA0KRXQgaidhaSBjaGFuZ8OpIGxhIG1hbmnDqHJlIGRlIHJldHJvdXZlciBsJ8OpY2hhbGxlIGVuIHkgOiBwYW5lbF9yYW5nZXMgaW4gZ2dwbG90XF9idWlsZChwbG90KVwkbGF5b3V0IGRvZXMgbm90IGV4aXN0IGFueW1vcmUgLi4uIHVzZSBwYW5lbFxfc2NhbGVcX3kgaW5zdGVhZC4gIA0KSidhaSBhdXNzaSBkw7sgbWV0dHJlIMOgIGpvdXIgUiB2ZXJzIGxhIHZlcnNpb24gMy42LjMuICANClZvaWNpIGxlIGNvZGUgbW9kaWZpw6kgZGUgc2EgZm9uY3Rpb24gOiAgDQpgYGB7cn0NCnNpZ25pZmljYXRpdml0eV9iYXIgPC0gZnVuY3Rpb24ocGxvdCwgZ3JvdXBzLCB0ZXh0ID0gIioiLCB0ZXh0X2hlaWdodCA9IDAuMDI3NSwgc2l6ZV9iYXIgPSAxLCBjb2xvcl9iYXIgPSAiYmxhY2siLCBzaXplX3RleHQgPSA4LCBjb2xvcl90ZXh0ID0gImJsYWNrIiwgZm9udF9mYWNlID0gMSwgZm9udF9zdHlsZSA9ICJzZXJpZiIsIGxpbmVfdHlwZSA9ICJzb2xpZCIpew0KICANCiAgDQogIA0KICBpZiAoIXJlcXVpcmUoImdncGxvdDIiLCBjaGFyYWN0ZXIub25seT1ULCBxdWlldGx5PVQpKXsgIyB1c2UgbGlicmFyeSBnZ3Bsb3QNCiAgICANCiAgICBpbnN0YWxsLnBhY2thZ2VzKCJnZ3Bsb3QyIikNCiAgICANCiAgICBsaWJyYXJ5KGdncGxvdDIsIGNoYXJhY3Rlci5vbmx5PVQpDQogICAgDQogIH0NCiAgDQogIA0KICANCiAgaWYgKGNsYXNzKHBsb3QpWzFdICE9ICJnZyIpew0KICAgIA0KICAgIHN0b3AoIllvdXIgaW5wdXQgcGxvdCBpcyBub3QgYSBnZ3Bsb3QiKQ0KICAgIA0KICB9DQogIA0KICBpZiAobGVuZ3RoKGdyb3VwcykgIT0gMil7DQogICAgDQogICAgc3RvcCgiUGxlYXNlIHNlbGVjdCBvbmx5IDIgZ3JvdXBzIGJldHdlZW4gd2hpY2ggeW91IHdhbnQgdGhlIGVycm9yIGJhciIpDQogICAgDQogIH0NCiAgDQogIGlmICghaXMudmVjdG9yKGdyb3Vwcykpew0KICAgIA0KICAgIHN0b3AoIlBsZWFzZSBpbnB1dCB5b3VyIDIgc2VsZWN0ZWQgZ3JvdXBzIGluIGEgdmVjdG9yIikNCiAgICANCiAgfQ0KICANCiAgaWYgKCFpcy5jaGFyYWN0ZXIodGV4dCkpIHsNCiAgICANCiAgICBzdG9wKCJQbGVhc2UgaW5wdXQgdGhlIHRleHQgYWJvdmUgdGhlIGJhciBhcyBjaGFyYWN0ZXIiKQ0KICAgIA0KICB9DQogIA0KICBpZiAoIWlzLm51bWVyaWModGV4dF9oZWlnaHQpIHwgbGVuZ3RoKHRleHRfaGVpZ2h0KSA+IDEpew0KICAgIA0KICAgIHN0b3AoIlBsZWFzZSBpbnB1dCBvbmUgbnVtZXJpYyB2YWx1ZSBmb3IgdGhlIHRleHQgaGVpZ2h0IikNCiAgICANCiAgfQ0KICANCiAgaWYgKCFpcy5udW1lcmljKHNpemVfYmFyKSB8IGxlbmd0aChzaXplX2JhcikgPiAxKXsNCiAgICANCiAgICBzdG9wKCJQbGVhc2UgaW5wdXQgb25lIG51bWVyaWMgdmFsdWUgZm9yIHRoZSBiYXIgc2l6ZSIpDQogICAgDQogIH0NCiAgDQogIGlmICghaXMuY2hhcmFjdGVyKGNvbG9yX2Jhcikpew0KICAgIA0KICAgIHN0b3AoIlBsZWFzZSBpbnB1dCBhbiBleGlzdGluZyBSIGNvbG9yLCBhcyBhIGNoYXJhY3RlciwgZm9yIHRoZSBjb2xvciBvZiB0aGUgYmFyIikNCiAgICANCiAgfQ0KICANCiAgaWYgKCFpcy5udW1lcmljKHNpemVfdGV4dCkgfCBsZW5ndGgoc2l6ZV90ZXh0KSA+IDEpew0KICAgIA0KICAgIHN0b3AoIlBsZWFzZSBpbnB1dCBvbmUgbnVtZXJpYyB2YWx1ZSBmb3IgdGhlIHRleHQgc2l6ZSIpDQogICAgDQogIH0NCiAgDQogIGlmICghaXMubnVtZXJpYyhmb250X2ZhY2UpIHwgbGVuZ3RoKGZvbnRfZmFjZSkgPiAxKXsNCiAgICANCiAgICBzdG9wKCJQbGVhc2UgaW5wdXQgb25lIG51bWVyaWMgdmFsdWUgZm9yIHRoZSBmb250IGZhY2UiKQ0KICAgIA0KICB9DQogIA0KICBpZiAoIWlzLmNoYXJhY3Rlcihjb2xvcl90ZXh0KSl7DQogICAgDQogICAgc3RvcCgiUGxlYXNlIGlucHV0IGFuIGV4aXN0aW5nIFIgY29sb3IsIGFzIGEgY2hhcmFjdGVyLCBmb3IgdGhlIGNvbG9yIG9mIHRoZSB0ZXh0IikNCiAgICANCiAgfQ0KICANCiAgaWYgKCFpcy5jaGFyYWN0ZXIoZm9udF9zdHlsZSkpew0KICAgIA0KICAgIHN0b3AoIlBsZWFzZSBpbnB1dCBhbiBleGlzdGluZyBmb250IGZhbWlseSwgYXMgYSBjaGFyYWN0ZXIsIGZvciB0aGUgY29sb3Igb2YgdGhlIGJhciIpDQogICAgDQogIH0NCiAgDQogIGlmICghaXMuY2hhcmFjdGVyKGxpbmVfdHlwZSkpew0KICAgIA0KICAgIHN0b3AoIlBsZWFzZSBpbnB1dCBhbiBleGlzdGluZyBsaW5lIHN0eWxlLCBhcyBhIGNoYXJhY3RlciwgZm9yIHRoZSBjb2xvciBvZiB0aGUgYmFyIikNCiAgICANCiAgfQ0KICANCiAgDQogIA0KICBpZiAodGV4dF9oZWlnaHQgPj0xKXsNCiAgICANCiAgICB3YXJuaW5nKCJ0ZXh0X2hlaWdodCBzaG91bGQgYmUgYmV0d2VlbiAwIGFuZCAxLCBkZWZhdWx0IHZhbHVlIGZvciAqIGFuZCBhcm91bmQgMC4wNCBmb3IgdGV4dCBhcmUgYWR2aXNlZCIpDQogICAgDQogIH0NCiAgDQogIA0KICANCiAgDQogIA0KICBpZiAoY2xhc3MoYXMubGlzdC5lbnZpcm9ubWVudChwbG90JGxheWVyc1tbMV1dKSRnZW9tKVsxXSA9PSAiR2VvbVBvaW50Iil7ICMgaWYgdGhlIGdncGxvdCBpcyBhIGRvdHBsb3QNCiAgICANCiAgICBjb29yZHMgPSBnZ3Bsb3RfYnVpbGQocGxvdCkkZGF0YVtbMV1dICMgZ2V0IHRoZSBjb29yZGluYXRlcyBvZiB0aGUgcG9pbnRzDQogICAgDQogICAgeGNvb3JkcyA9IGMoKQ0KICAgIA0KICAgIHljb29yZHMgPSBjKCkNCiAgICANCiAgICBmb3IgKGkgaW4gZ3JvdXBzKXsgIyBnZXQgdGhlIHggY29vcmRpbmF0ZXMgb2YgYWxsIGNvb3JkaW5hdGVzIGluIGEgdmVjdG9yLCBmb3IgdGhlIDIgc2VsZWN0ZWQgZ3JvdXBzDQogICAgICANCiAgICAgIHhjb29yZF90ZW1wID0gdW5pcXVlKGNvb3JkcyR4KVtpXQ0KICAgICAgDQogICAgICB4Y29vcmRzID0gYXBwZW5kKHhjb29yZHMsIHhjb29yZF90ZW1wKQ0KICAgICAgDQogICAgfQ0KICAgIA0KICAgIGZvciAoaSBpbiBjKDEsMikpew0KICAgICAgDQogICAgICB5Y29vcmRfdGVtcCA9IG1heChjb29yZHNbY29vcmRzJHggPT0geGNvb3Jkc1tpXSxdJHkpICMgZ2V0IHRoZSB5IGNvb3JkaW5hdGUgb2YgdGhlIHVwcGVyIHBvaW50IG9mIGVhY2ggZ3JvdXANCiAgICAgIA0KICAgICAgeWNvb3JkcyA9IGFwcGVuZCh5Y29vcmRzLCB5Y29vcmRfdGVtcCkNCiAgICAgIA0KICAgIH0NCiAgICANCiAgICANCiAgICANCiAgICB5X3JhbmdlID0gZ2dwbG90X2J1aWxkKHBsb3QpJGxheW91dCRwYW5lbF9zY2FsZXNfeVtbMV1dJGxpbWl0cyAjIGdldCB0aGUgdG90YWwgaGVpZ2h0IG9mIHRoZSB5IHNjYWxlDQogICAgIyBwYW5lbF9yYW5nZXMgaW4gZ2dwbG90X2J1aWxkKHBsb3QpJGxheW91dCBkb2VzIG5vdCBleGlzdCBhbnltb3JlIC4uLiB1c2UgcGFuZWxfc2NhbGVfeSBpbnN0ZWFkDQogICAgDQogICAgeV9zdW0gPSBzdW0oYWJzKHlfcmFuZ2UpKSANCiAgICANCiAgICB5X3NjYWxlID0gKDcuNS8xMDApKnlfc3VtICMgc3RhcnRpbmcgcG9zaXRpb24gb2YgdGhlIHZlcnRpY2FsIGJhciAoZGV0ZXJtaW5lZCAlIG9mIHRoZSB0b3RhbCB5IHNjYWxlKQ0KICAgIA0KICAgIGJhcl9oZWlnaHQgPSB5X3NjYWxlICsgKCg1LzEwMCkqeV9zdW0pICMgZmluYWwgcG9zaXRpb24gb2YgdGhlIHZlcnRpY2FsIGJhciAoZGV0ZXJtaW5lZCAlIG9mIHRoZSB0b3RhbCB5IHNjYWxlIGluIGFkZGl0aW9uIHRvIHlfc2NhbGUpDQogICAgDQogICAgDQogICAgDQogICAgeWNvb3JkX3RvcCA9IG1heCh5Y29vcmRzKSAjIHRoZSBiYXIgc2hvdWxkIHRha2UgdGhlIGhlaWdoZXN0IG9mIHRoZSB0d28gZ3JvdXBzIGFzIGEgcmVmZXJlbmNlDQogICAgDQogICAgY29vcmRfYmFyID0gZGF0YS5mcmFtZSh4ID0gYyh4Y29vcmRzWzFdLCB4Y29vcmRzWzFdLCB4Y29vcmRzWzJdLCB4Y29vcmRzWzJdKSwgeSA9IGMoeWNvb3JkX3RvcCArIHlfc2NhbGUsIHljb29yZF90b3AgKyBiYXJfaGVpZ2h0LCB5Y29vcmRfdG9wICsgYmFyX2hlaWdodCwgeWNvb3JkX3RvcCArIHlfc2NhbGUpKSAjIGZpbmFsIGNvb3JkaW5hdGVzIG9mIHRoZSBiYXINCiAgICANCiAgICANCiAgICANCiAgICBzdGFyX3ggPSBtZWFuKHhjb29yZHMpICMgeCBjb29yZGluYXRlIG9mIHRoZSB0ZXh0IGFib3ZlIHRoZSBiYXIgKGluIHRoZSBtaWRkbGUgb2YgdGhlIHR3byBncm91cHMpDQogICAgDQogICAgc3Rhcl95ID0geWNvb3JkX3RvcCArIGJhcl9oZWlnaHQgKyAoKDIuNzUvMTAwKSp5X3N1bSkgIyB5IGNvb3JkaW5hdGUgb2YgdGhlIHRleHQgYWJvdmUgdGhlIGJhciAoYWJvdmUgdGhlIGJhciBieSBhIGRldGVybWluZWQgZmFjdG9yKQ0KICAgIA0KICAgIGNvb3JkX3N0YXIgPSBjKHN0YXJfeCwgc3Rhcl95KSAjIHgseSBjb29yZGluYXRlcyBvZiB0aGUgdGV4dCBhYm92ZSB0aGUgYmFyDQogICAgDQogICAgDQogICAgDQogICAgcGxvdCA9IHBsb3QgKyBnZW9tX3BhdGgoZGF0YSA9IGNvb3JkX2JhciwgYWVzKHg9eCwgeT15KSwgc2l6ZSA9IHNpemVfYmFyLCBjb2xvciA9IGNvbG9yX2JhciwgbGluZXR5cGUgPSBsaW5lX3R5cGUpICsgYW5ub3RhdGUoInRleHQiLCB4ID0gc3Rhcl94LCB5ID0gc3Rhcl95LCBsYWJlbCA9IHRleHQsIHNpemUgPSBzaXplX3RleHQsIGNvbG9yID0gY29sb3JfdGV4dCwgZm9udGZhY2UgPSBmb250X2ZhY2UsIGZhbWlseSA9IGZvbnRfc3R5bGUpICMgY3JlYXRlIHRoZSBuZXcgZ2dwbG90DQogICAgDQogICAgcHJpbnQocGxvdCkNCiAgICANCiAgICANCiAgICANCiAgfSBlbHNlIGlmIChjbGFzcyhhcy5saXN0LmVudmlyb25tZW50KHBsb3QkbGF5ZXJzW1sxXV0pJGdlb20pWzFdID09ICJHZW9tQmFyIikgeyAjIGlmIHRoZSBnZ3Bsb3QgaXMgYSBkb3RwbG90DQogICAgDQogICAgY29vcmRzID0gZ2dwbG90X2J1aWxkKHBsb3QpJGRhdGFbWzFdXQ0KICAgIA0KICAgIHhjb29yZHMgPSBjKCkgIA0KICAgIA0KICAgIHljb29yZHMgPSBjKCkNCiAgICANCiAgICBmb3IgKGkgaW4gZ3JvdXBzKXsgIyBnZXQgdGhlIHggYW5kIHkgY29vcmRpbmF0ZXMgb2YgdGhlIHR3byBncm91cHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgDQogICAgICB4Y29vcmRfdGVtcCA9IG1lYW4oYyhjb29yZHNbaSxdJHhtaW4sIGNvb3Jkc1tpLF0keG1heCkpDQogICAgICANCiAgICAgIHhjb29yZHMgPSBhcHBlbmQoeGNvb3JkcywgeGNvb3JkX3RlbXApDQogICAgICANCiAgICAgIHljb29yZF90ZW1wID0gY29vcmRzW2ksN10gIyBUaGUgcG9zaXRpb24gb2YgeW1heCBpbiBnZ3Bsb3RfYnVpbGQocGxvdCkkZGF0YVtbMV1dIGNoYW5nZWQgZnJvbSBjb2x1bW4gNiB0byA3DQogICAgICANCiAgICAgIHljb29yZHMgPSBhcHBlbmQoeWNvb3JkcywgeWNvb3JkX3RlbXApDQogICAgICANCiAgICB9DQogICAgDQogICAgDQogICAgDQogICAgeV9yYW5nZSA9IGdncGxvdF9idWlsZChwbG90KSRsYXlvdXQkcGFuZWxfc2NhbGVzX3lbWzFdXSRsaW1pdHMgIyBnZXQgdGhlIHRvdGFsIGhlaWdodCBvZiB0aGUgeSBzY2FsZQ0KICAgIA0KICAgIHlfc3VtID0gc3VtKGFicyh5X3JhbmdlKSkNCiAgICANCiAgICB5X3NjYWxlID0gKDcuNS8xMDApKnlfc3VtICAjIHN0YXJ0aW5nIHBvc2l0aW9uIG9mIHRoZSB2ZXJ0aWNhbCBiYXIgKGRldGVybWluZWQgJSBvZiB0aGUgdG90YWwgeSBzY2FsZSkNCiAgICANCiAgICBiYXJfaGVpZ2h0ID0geV9zY2FsZSArICgoNS8xMDApKnlfc3VtKSAjIGZpbmFsIHBvc2l0aW9uIG9mIHRoZSB2ZXJ0aWNhbCBiYXIgKGRldGVybWluZWQgJSBvZiB0aGUgdG90YWwgeSBzY2FsZSBpbiBhZGRpdGlvbiB0byB5X3NjYWxlKQ0KICAgIA0KICAgIA0KICAgIA0KICAgIHljb29yZF90b3AgPSBtYXgoeWNvb3JkcykgIyB0aGUgYmFyIHNob3VsZCB0YWtlIHRoZSBoZWlnaGVzdCBvZiB0aGUgdHdvIGdyb3VwcyBhcyBhIHJlZmVyZW5jZQ0KICAgIA0KICAgIGNvb3JkX2JhciA9IGRhdGEuZnJhbWUoeCA9IGMoeGNvb3Jkc1sxXSwgeGNvb3Jkc1sxXSwgeGNvb3Jkc1syXSwgeGNvb3Jkc1syXSksIHkgPSBjKHljb29yZF90b3AgKyB5X3NjYWxlLCB5Y29vcmRfdG9wICsgYmFyX2hlaWdodCwgeWNvb3JkX3RvcCArIGJhcl9oZWlnaHQsIHljb29yZF90b3AgKyB5X3NjYWxlKSkgIyAgZmluYWwgY29vcmRpbmF0ZXMgb2YgdGhlIGJhcg0KICAgIA0KICAgIA0KICAgIA0KICAgIHN0YXJfeCA9IG1lYW4oeGNvb3JkcykgIyB4IGNvb3JkaW5hdGUgb2YgdGhlIHRleHQgYWJvdmUgdGhlIGJhciAoaW4gdGhlIG1pZGRsZSBvZiB0aGUgdHdvIGdyb3VwcykNCiAgICANCiAgICBzdGFyX3kgPSB5Y29vcmRfdG9wICsgYmFyX2hlaWdodCArICh0ZXh0X2hlaWdodCp5X3N1bSkgIyB5IGNvb3JkaW5hdGUgb2YgdGhlIHRleHQgYWJvdmUgdGhlIGJhciAoYWJvdmUgdGhlIGJhciBieSBhIGRldGVybWluZWQgZmFjdG9yKQ0KICAgIA0KICAgIGNvb3JkX3N0YXIgPSBjKHN0YXJfeCwgc3Rhcl95KSAjIHgseSBjb29yZGluYXRlcyBvZiB0aGUgdGV4dCBhYm92ZSB0aGUgYmFyDQogICAgDQogICAgDQogICAgDQogICAgcGxvdCA9IHBsb3QgKyBnZW9tX3BhdGgoZGF0YSA9IGNvb3JkX2JhciwgYWVzKHg9eCwgeT15KSwgc2l6ZSA9IHNpemVfYmFyLCBjb2xvciA9IGNvbG9yX2JhciwgbGluZXR5cGUgPSBsaW5lX3R5cGUpICsgYW5ub3RhdGUoInRleHQiLCB4ID0gc3Rhcl94LCB5ID0gc3Rhcl95LCBsYWJlbCA9IHRleHQsIHNpemUgPSBzaXplX3RleHQsIGNvbG9yID0gY29sb3JfdGV4dCwgZm9udGZhY2UgPSBmb250X2ZhY2UsIGZhbWlseSA9IGZvbnRfc3R5bGUpICMgY3JlYXRlIHRoZSBuZXcgZ2dwbG90DQogICAgDQogICAgcHJpbnQocGxvdCkNCiAgICANCiAgfQ0KICANCn0NCmBgYA0KDQoNCmBgYHtyfQ0KZ2c8LSBnZ3Bsb3QoYywgYWVzKHggPSBjLi5hYS4uLi5hcC4uLCB5ID0gYXMubnVtZXJpYyhtX2R1cmVlX2FwcGVsKSkpKw0KICAgIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiKSsNCiAgICBnZW9tX2Vycm9yYmFyKHltaW4gPSBtX2R1cmVlX2FwcGVsLXNkX2R1cmVlX2FwcGVsLCB5bWF4ID0gbV9kdXJlZV9hcHBlbCtzZF9kdXJlZV9hcHBlbCkrIA0KICAgIHlsaW0oLTUwMCw1MDAwKSsNCiAgICBsYWJzKHRpdGxlPSJEdXJlZSBhcHBlbCIpDQpzaWduaWZpY2F0aXZpdHlfYmFyKGdnLCBncm91cHMgPSBjKDEsMikpDQpgYGANCg0KDQojIyMgVGF1eCBkZSByw6lwb25zZXMNCg0KQ2V0dGUgcGFydGllIGMnZXN0IGp1c3RlIHBvdXIgdm9pciBzaSBqZSByw6lwb25kIGF1dGFudCBhdXggbWVzc2FnZXMgcXUnb24gbSdlbiBlbnZvaWUuICANCmBgYHtyfQ0KUmF0aW88LWRmJE1lc3NhZ2VzX3JlY3VzL2RmJE1lc3NhZ2VzX2Vudm95ZXMNCiNSZW1wbGFjZW1lbnQgZGVzIE5hTiBldCBpbmYgKGRpdmlzaW9uIHBhciAwKSBlbiAwLg0KUmF0aW9baXMubmEoUmF0aW8pXTwtMA0KUmF0aW9baXMuaW5maW5pdGUoUmF0aW8pXTwtMA0KYmFycGxvdChSYXRpbykNCmBgYA0KYGBge3J9DQptZWFuKFJhdGlvKQ0KYGBgDQpFbiBtb3llbm5lIGMnZXN0IGFzc2V6IMOpcXVpbGlicsOpIDogamUgcsOpcG9uZHMgYXV0YW50IGRlIGZvaXMgcXUnb24gbSdlbnZvaWUgdW4gbWVzc2FnZS4gIA0KDQojIyBDb25jbHVzaW9uDQoNCl9fSidhaSBwYXNzw6kgcGFzIG1hbCBkZSB0ZW1wcyDDoCBmYWlyZSDDp2EgbWFpcyDDp2EgbSdhIHBlcm1pcyBkZSBiaWVuIHByZW5kcmUgZW4gbWFpbiBsJ291dGlsLiAgDQpKZSBjb27Dp29pcyBxdWUgbW9uIMOpdHVkZSBlc3QgYXNzZXogc2FsZSBldCBxdWUgbGVzIG1hbmnDqHJlcyBkZSBwbG90dGVyIG5lIHNvbnQgdnJhaW1lbnQgcGFzIG9wdGltaXPDqWVzIG1haXMgY2UgbifDqXRhaXQgcGFzIHZyYWltZW50IGxlIGJ1dCBkZSBsJ2V4ZXJjaWNlLl9fICANCiAgDQpfX0FwcsOocyBhdm9pciBjb21waWzDqSwgamUgbidhaSBwYXMgcMO7IGxlIGZhaXJlIGVuIHBkZiAoZGVzIGVycmV1cnMgZGUgcG9saWNlcyBxdWkgbmUgcGFzc2VudCBwYXMgYXZlYyBMYVRlWCBvbiBkaXJhaXQgLi4uKS4gIA0KQXVzc2ksIGonYWkgcmVtYXJxdcOpIHF1J2lsIGZhbGxhaXQgbGFpc3PDqSB1biByZXRvdXIgY2hhcmlvdCBhcHLDqHMgbGEgdmlzdWFsaXNhdGlvbiBkdSBwbG90IHNpbm9uIGxlIHRleHRlIHNlIG1ldCDDoCBjw7R0w6kgZGFucyBsZSByZW5kdS5fXw0K</div>
......
---
title: "R Notebook"
output:
pdf_document: default
html_notebook: default
---
## L'étude
Cette étude consiste à évaluer mon usage du téléphone depuis le 25 février 2020 pour établir un lien entre la mise en place du confinement le 17 mars 2020 et mon usage téléphonique.
## Le fichier de données
Le fichier de données ci-après est une table représentant différents paramètres chaque jour depuis le 25/02/2020 :
- Le nombre d'appels émis : Appels\_emis
- Le nombre d'appels reçus : Appels\_recus (Comprends aussi les appels manqués)
- La durée totale des appels de la journée en seconde : Duree\_appels
- Le nombre de messages reçus : Messages\_recus
- Le nombre de messages envoyés : Messages\_envoyes
Le fichier peut être importé comme ceci :
```{r}
df<-read.csv("C:/Users/Marc/Desktop/MOOC/mooc-rr/module2/exo4/Book1.csv", sep = ";")
head(df)
```
## L'analyse de l'usage téléphonique
Tout d'abord on peut plotter les différents paramètres au cours du temps pour se donner un aperçu de mon usage :
1. Les appels émis
```{r}
barplot(df$Appels_emis, names.arg = df$ï..Date)
```
Les dates sont mal positionnées mais c'est pas grave. Il semble que j'ai beaucoup appelé autour de la date du 17 mars.
2. Appels reçus
```{r}
barplot(df$Appels_recus, names.arg = df$ï..Date)
```
Il semble que j'ai reçu beaucoup d'appels la veille du 17 mars puis que j'ai reçu + d'appels en général après cette période qu'avant.
3. Durée appel
```{r}
barplot(df$Duree_appel, names.arg = df$ï..Date)
```
Là c'est très voyant. J'ai passé beaucoup de temps au téléphone après le 16 mars comparé à avant (sauf 2 fois).
4. Messages reçus
```{r}
barplot(df$Messages_recus, names.arg = df$ï..Date)
```
5. Messages envoyés
```{r}
barplot(df$Messages_envoyes, names.arg = df$ï..Date)
```
Pour les messages, la tendance est inverse aux appels : je reçois et envoie - de sms depuis le 17 mars comparé à avant.
J'ai eput être changé mon usage de l'un à l'autre.
Sauf autour du 16-17 mars où j'ai beaucoup communiqué.
### Représentation des moyennes avant et après le 17 mars
Je vais rajouté une colonne pour indiqué avant ou après le 17 mars.
```{r}
add<-c(rep("avant",21), rep("après",21))
df$add<-add
```
Oui je sais c'est vraiment nul mais en gros je sais qu'il y a 42 lignes dans mon tableau (je peux le vérifier avec `length(df$Appels_emis)` par exemple) et que le 17 mars est la 22ème ligne.
J'ai donc ajouté 21 fois "avant" et 21 fois "après" sur une colonne dans mon data frame df.
Maintenant on va pouvoir calculer les moyennes des paramètres avant et après (inclus) le 17 mars 2020.
```{r}
m_appels_emis<-c(mean(df$Appels_emis[df$add=="avant"]), mean(df$Appels_emis[df$add=="après"]))
m_appels_recus<-c(mean(df$Appels_recus[df$add=="avant"]), mean(df$Appels_recus[df$add=="après"]))
m_duree_appel<-c(mean(df$Duree_appel[df$add=="avant"]), mean(df$Duree_appel[df$add=="après"]))
m_messages_recus<-c(mean(df$Messages_recus[df$add=="avant"]), mean(df$Messages_recus[df$add=="après"]))
m_messages_envoyes<-c(mean(df$Messages_envoyes[df$add=="avant"]), mean(df$Messages_envoyes[df$add=="après"]))
m_appels_emis
m_appels_recus
m_messages_recus
m_messages_envoyes
```
Et les écarts-types :
```{r}
sd_appels_emis<-c(sd(df$Appels_emis[df$add=="avant"]), sd(df$Appels_emis[df$add=="après"]))
sd_appels_recus<-c(sd(df$Appels_recus[df$add=="avant"]), sd(df$Appels_recus[df$add=="après"]))
sd_duree_appel<-c(sd(df$Duree_appel[df$add=="avant"]), sd(df$Duree_appel[df$add=="après"]))
sd_messages_recus<-c(sd(df$Messages_recus[df$add=="avant"]), sd(df$Messages_recus[df$add=="après"]))
sd_messages_envoyes<-c(sd(df$Messages_envoyes[df$add=="avant"]), sd(df$Messages_envoyes[df$add=="après"]))
```
Maintenant on va pouvoir plotter les moyennes de tous les paramètres avant et après (inclus) le 17 mars 2020.
Le mieux c'est d'utiliser ggplot.
```{r}
#install.packages("ggplot2")
library(ggplot2)
a<-data.frame(m_appels_emis, sd_appels_emis, c("aa", "ap"))
ggplot(a, aes(x = a$c..aa....ap.., y = m_appels_emis))+
geom_bar(stat = "identity")+
geom_errorbar(ymin = a$m_appels_emis-a$sd_appels_emis, ymax = a$m_appels_emis+a$sd_appels_emis)+
ylim(-1,4)+
labs(title="Appels émis")
```
```{r}
b<-data.frame(m_appels_recus, sd_appels_recus, c("aa", "ap"))
ggplot(b, aes(x = b$c..aa....ap.., y = b$m_appels_recus))+
geom_bar(stat = "identity")+
geom_errorbar(ymin = b$m_appels_recus-b$sd_appels_recus, ymax = b$m_appels_recus+b$sd_appels_recus)+
ylim(-1,3)+
labs(title="Appels recus")
```
```{r}
c<-data.frame(m_duree_appel, sd_duree_appel, c("aa", "ap"))
ggplot(c, aes(x = c$c..aa....ap.., y = c$m_duree_appel))+
geom_bar(stat = "identity")+
geom_errorbar(ymin = c$m_duree_appel-c$sd_duree_appel, ymax = c$m_duree_appel+c$sd_duree_appel)+
ylim(-500,2000)+
labs(title="Duree appel")
```
```{r}
d<-data.frame(m_messages_envoyes, sd_messages_envoyes, c("aa", "ap"))
ggplot(d, aes(x = d$c..aa....ap.., y = d$m_messages_envoyes))+
geom_bar(stat = "identity")+
geom_errorbar(ymin = d$m_messages_envoyes-d$sd_messages_envoyes, ymax = d$m_messages_envoyes+d$sd_messages_envoyes)+
ylim(0,12)+
labs(title="Messages envoyes")
```
```{r}
e<-data.frame(m_messages_recus, sd_messages_recus, c("aa", "ap"))
ggplot(e, aes(x = e$c..aa....ap.., y = e$m_messages_recus))+
geom_bar(stat = "identity")+
geom_errorbar(ymin = e$m_messages_recus-e$sd_messages_recus, ymax = e$m_messages_recus+e$sd_messages_recus)+
ylim(-2,12)+
labs(title="Messages recus")
```
__Bilan : On voit des augmentations dans les appels et une diminution dans les messages mais les écarts types sont énormes__
A mon avis, rien n'est significatif mais on peut s'entrainer sur un cas.
Comme il n'y a que 21 valeurs dans chaque groupe, je ne peux pas appliquer le théorème central limite. Je vais donc vérifier la distribution normale de chaque groupe ainsi que l'égalité des variances pour voir quel test statistique appliqué.
Prenons comme exemple la durée de l'appel.
```{r}
shapiro.test(df$Duree_appel[df$add=="avant"])
shapiro.test(df$Duree_appel[df$add=="après"])
```
Les tests de Shapiro-Wilk sont significatifs donc les distributions ne sont pas normales.
Utilisation de tests non paramétriques type Mann-Whitney :
```{r}
wilcox.test(df$Duree_appel[df$add=="avant"],df$Duree_appel[df$add=="après"])
```
Ah ben en fait la durée des appels a significativement augmentée après le 17 mars 2020. Je ne suis pas super fort en statistiques donc j'espère que c'est correct. Aussi, 21 échantillons par groupe c'est pas mal pour un test non paramétrique.
Du coup on va essayer de mettre une étoile sur le plot (ce qui n'est pas compris dans les fonctions ggplot).
Pour cela on va donc tester le code d'un ami disponible sur [Github](https://github.com/EvenStar69/significativity.bar).
```{r}
#install.packages("devtools")
library(devtools)
#Besoin de Rtools 3.5
#install_github("EvenStar69/significativity.bar/significativity.bar")
library(significativity.bar)
```
Bon j'ai dû un peu changer sa fonction parce qu'elle n'est plus compatible avec ggplot 3.3.
J'ai changé la manière de retrouver les coordonnées y : The position of ymax in ggplot\_build(plot)\$data[[1]] changed from column 6 to 7.
Et j'ai changé la manière de retrouver l'échalle en y : panel_ranges in ggplot\_build(plot)\$layout does not exist anymore ... use panel\_scale\_y instead.
J'ai aussi dû mettre à jour R vers la version 3.6.3.
Voici le code modifié de sa fonction :
```{r}
significativity_bar <- function(plot, groups, text = "*", text_height = 0.0275, size_bar = 1, color_bar = "black", size_text = 8, color_text = "black", font_face = 1, font_style = "serif", line_type = "solid"){
if (!require("ggplot2", character.only=T, quietly=T)){ # use library ggplot
install.packages("ggplot2")
library(ggplot2, character.only=T)
}
if (class(plot)[1] != "gg"){
stop("Your input plot is not a ggplot")
}
if (length(groups) != 2){
stop("Please select only 2 groups between which you want the error bar")
}
if (!is.vector(groups)){
stop("Please input your 2 selected groups in a vector")
}
if (!is.character(text)) {
stop("Please input the text above the bar as character")
}
if (!is.numeric(text_height) | length(text_height) > 1){
stop("Please input one numeric value for the text height")
}
if (!is.numeric(size_bar) | length(size_bar) > 1){
stop("Please input one numeric value for the bar size")
}
if (!is.character(color_bar)){
stop("Please input an existing R color, as a character, for the color of the bar")
}
if (!is.numeric(size_text) | length(size_text) > 1){
stop("Please input one numeric value for the text size")
}
if (!is.numeric(font_face) | length(font_face) > 1){
stop("Please input one numeric value for the font face")
}
if (!is.character(color_text)){
stop("Please input an existing R color, as a character, for the color of the text")
}
if (!is.character(font_style)){
stop("Please input an existing font family, as a character, for the color of the bar")
}
if (!is.character(line_type)){
stop("Please input an existing line style, as a character, for the color of the bar")
}
if (text_height >=1){
warning("text_height should be between 0 and 1, default value for * and around 0.04 for text are advised")
}
if (class(as.list.environment(plot$layers[[1]])$geom)[1] == "GeomPoint"){ # if the ggplot is a dotplot
coords = ggplot_build(plot)$data[[1]] # get the coordinates of the points
xcoords = c()
ycoords = c()
for (i in groups){ # get the x coordinates of all coordinates in a vector, for the 2 selected groups
xcoord_temp = unique(coords$x)[i]
xcoords = append(xcoords, xcoord_temp)
}
for (i in c(1,2)){
ycoord_temp = max(coords[coords$x == xcoords[i],]$y) # get the y coordinate of the upper point of each group
ycoords = append(ycoords, ycoord_temp)
}
y_range = ggplot_build(plot)$layout$panel_scales_y[[1]]$limits # get the total height of the y scale
# panel_ranges in ggplot_build(plot)$layout does not exist anymore ... use panel_scale_y instead
y_sum = sum(abs(y_range))
y_scale = (7.5/100)*y_sum # starting position of the vertical bar (determined % of the total y scale)
bar_height = y_scale + ((5/100)*y_sum) # final position of the vertical bar (determined % of the total y scale in addition to y_scale)
ycoord_top = max(ycoords) # the bar should take the heighest of the two groups as a reference
coord_bar = data.frame(x = c(xcoords[1], xcoords[1], xcoords[2], xcoords[2]), y = c(ycoord_top + y_scale, ycoord_top + bar_height, ycoord_top + bar_height, ycoord_top + y_scale)) # final coordinates of the bar
star_x = mean(xcoords) # x coordinate of the text above the bar (in the middle of the two groups)
star_y = ycoord_top + bar_height + ((2.75/100)*y_sum) # y coordinate of the text above the bar (above the bar by a determined factor)
coord_star = c(star_x, star_y) # x,y coordinates of the text above the bar
plot = plot + geom_path(data = coord_bar, aes(x=x, y=y), size = size_bar, color = color_bar, linetype = line_type) + annotate("text", x = star_x, y = star_y, label = text, size = size_text, color = color_text, fontface = font_face, family = font_style) # create the new ggplot
print(plot)
} else if (class(as.list.environment(plot$layers[[1]])$geom)[1] == "GeomBar") { # if the ggplot is a dotplot
coords = ggplot_build(plot)$data[[1]]
xcoords = c()
ycoords = c()
for (i in groups){ # get the x and y coordinates of the two groups
xcoord_temp = mean(c(coords[i,]$xmin, coords[i,]$xmax))
xcoords = append(xcoords, xcoord_temp)
ycoord_temp = coords[i,7] # The position of ymax in ggplot_build(plot)$data[[1]] changed from column 6 to 7
ycoords = append(ycoords, ycoord_temp)
}
y_range = ggplot_build(plot)$layout$panel_scales_y[[1]]$limits # get the total height of the y scale
y_sum = sum(abs(y_range))
y_scale = (7.5/100)*y_sum # starting position of the vertical bar (determined % of the total y scale)
bar_height = y_scale + ((5/100)*y_sum) # final position of the vertical bar (determined % of the total y scale in addition to y_scale)
ycoord_top = max(ycoords) # the bar should take the heighest of the two groups as a reference
coord_bar = data.frame(x = c(xcoords[1], xcoords[1], xcoords[2], xcoords[2]), y = c(ycoord_top + y_scale, ycoord_top + bar_height, ycoord_top + bar_height, ycoord_top + y_scale)) # final coordinates of the bar
star_x = mean(xcoords) # x coordinate of the text above the bar (in the middle of the two groups)
star_y = ycoord_top + bar_height + (text_height*y_sum) # y coordinate of the text above the bar (above the bar by a determined factor)
coord_star = c(star_x, star_y) # x,y coordinates of the text above the bar
plot = plot + geom_path(data = coord_bar, aes(x=x, y=y), size = size_bar, color = color_bar, linetype = line_type) + annotate("text", x = star_x, y = star_y, label = text, size = size_text, color = color_text, fontface = font_face, family = font_style) # create the new ggplot
print(plot)
}
}
```
```{r}
gg<- ggplot(c, aes(x = c..aa....ap.., y = as.numeric(m_duree_appel)))+
geom_bar(stat = "identity")+
geom_errorbar(ymin = m_duree_appel-sd_duree_appel, ymax = m_duree_appel+sd_duree_appel)+
ylim(-500,5000)+
labs(title="Duree appel")
significativity_bar(gg, groups = c(1,2))
```
### Taux de réponses
Cette partie c'est juste pour voir si je répond autant aux messages qu'on m'en envoie.
```{r}
Ratio<-df$Messages_recus/df$Messages_envoyes
#Remplacement des NaN et inf (division par 0) en 0.
Ratio[is.na(Ratio)]<-0
Ratio[is.infinite(Ratio)]<-0
barplot(Ratio)
```
```{r}
mean(Ratio)
```
En moyenne c'est assez équilibré : je réponds autant de fois qu'on m'envoie un message.
## Conclusion
__J'ai passé pas mal de temps à faire ça mais ça m'a permis de bien prendre en main l'outil.
Je conçois que mon étude est assez sale et que les manières de plotter ne sont vraiment pas optimisées mais ce n'était pas vraiment le but de l'exercice.__
__Après avoir compilé, je n'ai pas pû le faire en pdf (des erreurs de polices qui ne passent pas avec LaTeX on dirait ...).
Aussi, j'ai remarqué qu'il fallait laissé un retour chariot après la visualisation du plot sinon le texte se met à côté dans le rendu.__
---
title: "R Notebook"
output:
pdf_document: default
html_notebook: default
---
## L'étude
Cette étude consiste à évaluer mon usage du téléphone depuis le 25 février 2020 pour établir un lien entre la mise en place du confinement le 17 mars 2020 et mon usage téléphonique.
## Le fichier de données
Le fichier de données ci-après est une table représentant différents paramètres chaque jour depuis le 25/02/2020 :
- Le nombre d'appels émis : Appels\_emis
- Le nombre d'appels reçus : Appels\_recus (Comprends aussi les appels manqués)
- La durée totale des appels de la journée en seconde : Duree\_appels
- Le nombre de messages reçus : Messages\_recus
- Le nombre de messages envoyés : Messages\_envoyes
Le fichier peut être importé comme ceci :
```r
df<-read.csv("C:/Users/Marc/Desktop/MOOC/mooc-rr/module2/exo4/Book1.csv", sep = ";")
head(df)
```
```
## ï..Date Appels_emis Appels_recus Duree_appel Messages_recus
## 1 25/02/2020 0 0 0 6
## 2 26/02/2020 1 1 5 3
## 3 27/02/2020 0 0 0 3
## 4 28/02/2020 0 0 0 0
## 5 29/02/2020 3 1 3470 1
## 6 01/03/2020 1 1 141 15
## Messages_envoyes
## 1 4
## 2 4
## 3 2
## 4 0
## 5 0
## 6 7
```
## L'analyse de l'usage téléphonique
Tout d'abord on peut plotter les différents paramètres au cours du temps pour se donner un aperçu de mon usage :
1. Les appels émis
```r
barplot(df$Appels_emis, names.arg = df$ï..Date)
```
![](test-notebook_files/figure-latex/unnamed-chunk-2-1.pdf)<!-- -->
Les dates sont mal positionnées mais c'est pas grave. Il semble que j'ai beaucoup appelé autour de la date du 17 mars.
2. Appels reçus
```r
barplot(df$Appels_recus, names.arg = df$ï..Date)
```
![](test-notebook_files/figure-latex/unnamed-chunk-3-1.pdf)<!-- -->
Il semble que j'ai reçu beaucoup d'appels la veille du 17 mars puis que j'ai reçu + d'appels en général après cette période qu'avant.
3. Durée appel
```r
barplot(df$Duree_appel, names.arg = df$ï..Date)
```
![](test-notebook_files/figure-latex/unnamed-chunk-4-1.pdf)<!-- -->
Là c'est très voyant. J'ai passé beaucoup de temps au téléphone après le 16 mars comparé à avant (sauf 2 fois).
4. Messages reçus
```r
barplot(df$Messages_recus, names.arg = df$ï..Date)
```
![](test-notebook_files/figure-latex/unnamed-chunk-5-1.pdf)<!-- -->
5. Messages envoyés
```r
barplot(df$Messages_envoyes, names.arg = df$ï..Date)
```
![](test-notebook_files/figure-latex/unnamed-chunk-6-1.pdf)<!-- -->
Pour les messages, la tendance est inverse aux appels : je reçois et envoie - de sms depuis le 17 mars comparé à avant.
J'ai eput être changé mon usage de l'un à l'autre.
Sauf autour du 16-17 mars où j'ai beaucoup communiqué.
### Représentation des moyennes avant et après le 17 mars
Je vais rajouté une colonne pour indiqué avant ou après le 17 mars.
```r
add<-c(rep("avant",21), rep("après",21))
df$add<-add
```
Oui je sais c'est vraiment nul mais en gros je sais qu'il y a 42 lignes dans mon tableau (je peux le vérifier avec `length(df$Appels_emis)` par exemple) et que le 17 mars est la 22ème ligne.
J'ai donc ajouté 21 fois "avant" et 21 fois "après" sur une colonne dans mon data frame df.
Maintenant on va pouvoir calculer les moyennes des paramètres avant et après (inclus) le 17 mars 2020.
```r
m_appels_emis<-c(mean(df$Appels_emis[df$add=="avant"]), mean(df$Appels_emis[df$add=="après"]))
m_appels_recus<-c(mean(df$Appels_recus[df$add=="avant"]), mean(df$Appels_recus[df$add=="après"]))
m_duree_appel<-c(mean(df$Duree_appel[df$add=="avant"]), mean(df$Duree_appel[df$add=="après"]))
m_messages_recus<-c(mean(df$Messages_recus[df$add=="avant"]), mean(df$Messages_recus[df$add=="après"]))
m_messages_envoyes<-c(mean(df$Messages_envoyes[df$add=="avant"]), mean(df$Messages_envoyes[df$add=="après"]))
m_appels_emis
```
```
## [1] 1.142857 1.523810
```
```r
m_appels_recus
```
```
## [1] 0.8095238 1.1904762
```
```r
m_messages_recus
```
```
## [1] 6.285714 2.761905
```
```r
m_messages_envoyes
```
```
## [1] 5.285714 1.523810
```
Et les écarts-types :
```r
sd_appels_emis<-c(sd(df$Appels_emis[df$add=="avant"]), sd(df$Appels_emis[df$add=="après"]))
sd_appels_recus<-c(sd(df$Appels_recus[df$add=="avant"]), sd(df$Appels_recus[df$add=="après"]))
sd_duree_appel<-c(sd(df$Duree_appel[df$add=="avant"]), sd(df$Duree_appel[df$add=="après"]))
sd_messages_recus<-c(sd(df$Messages_recus[df$add=="avant"]), sd(df$Messages_recus[df$add=="après"]))
sd_messages_envoyes<-c(sd(df$Messages_envoyes[df$add=="avant"]), sd(df$Messages_envoyes[df$add=="après"]))
```
Maintenant on va pouvoir plotter les moyennes de tous les paramètres avant et après (inclus) le 17 mars 2020.
Le mieux c'est d'utiliser ggplot.
```r
#install.packages("ggplot2")
library(ggplot2)
a<-data.frame(m_appels_emis, sd_appels_emis, c("aa", "ap"))
ggplot(a, aes(x = a$c..aa....ap.., y = m_appels_emis))+
geom_bar(stat = "identity")+
geom_errorbar(ymin = a$m_appels_emis-a$sd_appels_emis, ymax = a$m_appels_emis+a$sd_appels_emis)+
ylim(-1,4)+
labs(title="Appels émis")
```
```
## Warning: Use of `a$c..aa....ap..` is discouraged. Use `c..aa....ap..` instead.
## Warning: Use of `a$c..aa....ap..` is discouraged. Use `c..aa....ap..` instead.
```
![](test-notebook_files/figure-latex/unnamed-chunk-10-1.pdf)<!-- -->
```r
b<-data.frame(m_appels_recus, sd_appels_recus, c("aa", "ap"))
ggplot(b, aes(x = b$c..aa....ap.., y = b$m_appels_recus))+
geom_bar(stat = "identity")+
geom_errorbar(ymin = b$m_appels_recus-b$sd_appels_recus, ymax = b$m_appels_recus+b$sd_appels_recus)+
ylim(-1,3)+
labs(title="Appels recus")
```
```
## Warning: Use of `b$c..aa....ap..` is discouraged. Use `c..aa....ap..` instead.
```
```
## Warning: Use of `b$m_appels_recus` is discouraged. Use `m_appels_recus` instead.
```
```
## Warning: Use of `b$c..aa....ap..` is discouraged. Use `c..aa....ap..` instead.
```
```
## Warning: Use of `b$m_appels_recus` is discouraged. Use `m_appels_recus` instead.
```
![](test-notebook_files/figure-latex/unnamed-chunk-11-1.pdf)<!-- -->
```r
c<-data.frame(m_duree_appel, sd_duree_appel, c("aa", "ap"))
ggplot(c, aes(x = c$c..aa....ap.., y = c$m_duree_appel))+
geom_bar(stat = "identity")+
geom_errorbar(ymin = c$m_duree_appel-c$sd_duree_appel, ymax = c$m_duree_appel+c$sd_duree_appel)+
ylim(-500,2000)+
labs(title="Duree appel")
```
```
## Warning: Use of `c$c..aa....ap..` is discouraged. Use `c..aa....ap..` instead.
```
```
## Warning: Use of `c$m_duree_appel` is discouraged. Use `m_duree_appel` instead.
```
```
## Warning: Use of `c$c..aa....ap..` is discouraged. Use `c..aa....ap..` instead.
```
```
## Warning: Use of `c$m_duree_appel` is discouraged. Use `m_duree_appel` instead.
```
![](test-notebook_files/figure-latex/unnamed-chunk-12-1.pdf)<!-- -->
```r
d<-data.frame(m_messages_envoyes, sd_messages_envoyes, c("aa", "ap"))
ggplot(d, aes(x = d$c..aa....ap.., y = d$m_messages_envoyes))+
geom_bar(stat = "identity")+
geom_errorbar(ymin = d$m_messages_envoyes-d$sd_messages_envoyes, ymax = d$m_messages_envoyes+d$sd_messages_envoyes)+
ylim(0,12)+
labs(title="Messages envoyes")
```
```
## Warning: Use of `d$c..aa....ap..` is discouraged. Use `c..aa....ap..` instead.
```
```
## Warning: Use of `d$m_messages_envoyes` is discouraged. Use `m_messages_envoyes`
## instead.
```
```
## Warning: Use of `d$c..aa....ap..` is discouraged. Use `c..aa....ap..` instead.
```
```
## Warning: Use of `d$m_messages_envoyes` is discouraged. Use `m_messages_envoyes`
## instead.
```
![](test-notebook_files/figure-latex/unnamed-chunk-13-1.pdf)<!-- -->
```r
e<-data.frame(m_messages_recus, sd_messages_recus, c("aa", "ap"))
ggplot(e, aes(x = e$c..aa....ap.., y = e$m_messages_recus))+
geom_bar(stat = "identity")+
geom_errorbar(ymin = e$m_messages_recus-e$sd_messages_recus, ymax = e$m_messages_recus+e$sd_messages_recus)+
ylim(-2,12)+
labs(title="Messages recus")
```
```
## Warning: Use of `e$c..aa....ap..` is discouraged. Use `c..aa....ap..` instead.
```
```
## Warning: Use of `e$m_messages_recus` is discouraged. Use `m_messages_recus`
## instead.
```
```
## Warning: Use of `e$c..aa....ap..` is discouraged. Use `c..aa....ap..` instead.
```
```
## Warning: Use of `e$m_messages_recus` is discouraged. Use `m_messages_recus`
## instead.
```
![](test-notebook_files/figure-latex/unnamed-chunk-14-1.pdf)<!-- -->
__Bilan : On voit des augmentations dans les appels et une diminution dans les messages mais les écarts types sont énormes__
A mon avis, rien n'est significatif mais on peut s'entrainer sur un cas.
Comme il n'y a que 21 valeurs dans chaque groupe, je ne peux pas appliquer le théorème central limite. Je vais donc vérifier la distribution normale de chaque groupe ainsi que l'égalité des variances pour voir quel test statistique appliqué.
Prenons comme exemple la durée de l'appel.
```r
shapiro.test(df$Duree_appel[df$add=="avant"])
```
```
##
## Shapiro-Wilk normality test
##
## data: df$Duree_appel[df$add == "avant"]
## W = 0.53087, p-value = 3.968e-07
```
```r
shapiro.test(df$Duree_appel[df$add=="après"])
```
```
##
## Shapiro-Wilk normality test
##
## data: df$Duree_appel[df$add == "après"]
## W = 0.88753, p-value = 0.0202
```
Les tests de Shapiro-Wilk sont significatifs donc les distributions ne sont pas normales.
Utilisation de tests non paramétriques type Mann-Whitney :
```r
wilcox.test(df$Duree_appel[df$add=="avant"],df$Duree_appel[df$add=="après"])
```
```
## Warning in wilcox.test.default(df$Duree_appel[df$add == "avant"],
## df$Duree_appel[df$add == : cannot compute exact p-value with ties
```
```
##
## Wilcoxon rank sum test with continuity correction
##
## data: df$Duree_appel[df$add == "avant"] and df$Duree_appel[df$add == "après"]
## W = 140.5, p-value = 0.03965
## alternative hypothesis: true location shift is not equal to 0
```
Ah ben en fait la durée des appels a significativement augmentée après le 17 mars 2020. Je ne suis pas super fort en statistiques donc j'espère que c'est correct. Aussi, 21 échantillons par groupe c'est pas mal pour un test non paramétrique.
Du coup on va essayer de mettre une étoile sur le plot (ce qui n'est pas compris dans les fonctions ggplot).
Pour cela on va donc tester le code d'un ami disponible sur [Github](https://github.com/EvenStar69/significativity.bar).
```r
#install.packages("devtools")
library(devtools)
```
```
## Loading required package: usethis
```
```r
#Besoin de Rtools 3.5
#install_github("EvenStar69/significativity.bar/significativity.bar")
library(significativity.bar)
```
Bon j'ai dû un peu changer sa fonction parce qu'elle n'est plus compatible avec ggplot 3.3.
J'ai changé la manière de retrouver les coordonnées y : The position of ymax in ggplot\_build(plot)\$data[[1]] changed from column 6 to 7.
Et j'ai changé la manière de retrouver l'échalle en y : panel_ranges in ggplot\_build(plot)\$layout does not exist anymore ... use panel\_scale\_y instead.
J'ai aussi dû mettre à jour R vers la version 3.6.3.
Voici le code modifié de sa fonction :
```r
significativity_bar <- function(plot, groups, text = "*", text_height = 0.0275, size_bar = 1, color_bar = "black", size_text = 8, color_text = "black", font_face = 1, font_style = "serif", line_type = "solid"){
if (!require("ggplot2", character.only=T, quietly=T)){ # use library ggplot
install.packages("ggplot2")
library(ggplot2, character.only=T)
}
if (class(plot)[1] != "gg"){
stop("Your input plot is not a ggplot")
}
if (length(groups) != 2){
stop("Please select only 2 groups between which you want the error bar")
}
if (!is.vector(groups)){
stop("Please input your 2 selected groups in a vector")
}
if (!is.character(text)) {
stop("Please input the text above the bar as character")
}
if (!is.numeric(text_height) | length(text_height) > 1){
stop("Please input one numeric value for the text height")
}
if (!is.numeric(size_bar) | length(size_bar) > 1){
stop("Please input one numeric value for the bar size")
}
if (!is.character(color_bar)){
stop("Please input an existing R color, as a character, for the color of the bar")
}
if (!is.numeric(size_text) | length(size_text) > 1){
stop("Please input one numeric value for the text size")
}
if (!is.numeric(font_face) | length(font_face) > 1){
stop("Please input one numeric value for the font face")
}
if (!is.character(color_text)){
stop("Please input an existing R color, as a character, for the color of the text")
}
if (!is.character(font_style)){
stop("Please input an existing font family, as a character, for the color of the bar")
}
if (!is.character(line_type)){
stop("Please input an existing line style, as a character, for the color of the bar")
}
if (text_height >=1){
warning("text_height should be between 0 and 1, default value for * and around 0.04 for text are advised")
}
if (class(as.list.environment(plot$layers[[1]])$geom)[1] == "GeomPoint"){ # if the ggplot is a dotplot
coords = ggplot_build(plot)$data[[1]] # get the coordinates of the points
xcoords = c()
ycoords = c()
for (i in groups){ # get the x coordinates of all coordinates in a vector, for the 2 selected groups
xcoord_temp = unique(coords$x)[i]
xcoords = append(xcoords, xcoord_temp)
}
for (i in c(1,2)){
ycoord_temp = max(coords[coords$x == xcoords[i],]$y) # get the y coordinate of the upper point of each group
ycoords = append(ycoords, ycoord_temp)
}
y_range = ggplot_build(plot)$layout$panel_scales_y[[1]]$limits # get the total height of the y scale
# panel_ranges in ggplot_build(plot)$layout does not exist anymore ... use panel_scale_y instead
y_sum = sum(abs(y_range))
y_scale = (7.5/100)*y_sum # starting position of the vertical bar (determined % of the total y scale)
bar_height = y_scale + ((5/100)*y_sum) # final position of the vertical bar (determined % of the total y scale in addition to y_scale)
ycoord_top = max(ycoords) # the bar should take the heighest of the two groups as a reference
coord_bar = data.frame(x = c(xcoords[1], xcoords[1], xcoords[2], xcoords[2]), y = c(ycoord_top + y_scale, ycoord_top + bar_height, ycoord_top + bar_height, ycoord_top + y_scale)) # final coordinates of the bar
star_x = mean(xcoords) # x coordinate of the text above the bar (in the middle of the two groups)
star_y = ycoord_top + bar_height + ((2.75/100)*y_sum) # y coordinate of the text above the bar (above the bar by a determined factor)
coord_star = c(star_x, star_y) # x,y coordinates of the text above the bar
plot = plot + geom_path(data = coord_bar, aes(x=x, y=y), size = size_bar, color = color_bar, linetype = line_type) + annotate("text", x = star_x, y = star_y, label = text, size = size_text, color = color_text, fontface = font_face, family = font_style) # create the new ggplot
print(plot)
} else if (class(as.list.environment(plot$layers[[1]])$geom)[1] == "GeomBar") { # if the ggplot is a dotplot
coords = ggplot_build(plot)$data[[1]]
xcoords = c()
ycoords = c()
for (i in groups){ # get the x and y coordinates of the two groups
xcoord_temp = mean(c(coords[i,]$xmin, coords[i,]$xmax))
xcoords = append(xcoords, xcoord_temp)
ycoord_temp = coords[i,7] # The position of ymax in ggplot_build(plot)$data[[1]] changed from column 6 to 7
ycoords = append(ycoords, ycoord_temp)
}
y_range = ggplot_build(plot)$layout$panel_scales_y[[1]]$limits # get the total height of the y scale
y_sum = sum(abs(y_range))
y_scale = (7.5/100)*y_sum # starting position of the vertical bar (determined % of the total y scale)
bar_height = y_scale + ((5/100)*y_sum) # final position of the vertical bar (determined % of the total y scale in addition to y_scale)
ycoord_top = max(ycoords) # the bar should take the heighest of the two groups as a reference
coord_bar = data.frame(x = c(xcoords[1], xcoords[1], xcoords[2], xcoords[2]), y = c(ycoord_top + y_scale, ycoord_top + bar_height, ycoord_top + bar_height, ycoord_top + y_scale)) # final coordinates of the bar
star_x = mean(xcoords) # x coordinate of the text above the bar (in the middle of the two groups)
star_y = ycoord_top + bar_height + (text_height*y_sum) # y coordinate of the text above the bar (above the bar by a determined factor)
coord_star = c(star_x, star_y) # x,y coordinates of the text above the bar
plot = plot + geom_path(data = coord_bar, aes(x=x, y=y), size = size_bar, color = color_bar, linetype = line_type) + annotate("text", x = star_x, y = star_y, label = text, size = size_text, color = color_text, fontface = font_face, family = font_style) # create the new ggplot
print(plot)
}
}
```
```r
gg<- ggplot(c, aes(x = c..aa....ap.., y = as.numeric(m_duree_appel)))+
geom_bar(stat = "identity")+
geom_errorbar(ymin = m_duree_appel-sd_duree_appel, ymax = m_duree_appel+sd_duree_appel)+
ylim(-500,5000)+
labs(title="Duree appel")
significativity_bar(gg, groups = c(1,2))
```
![](test-notebook_files/figure-latex/unnamed-chunk-19-1.pdf)<!-- -->
### Taux de réponses
Cette partie c'est juste pour voir si je répond autant aux messages qu'on m'en envoie.
```r
Ratio<-df$Messages_recus/df$Messages_envoyes
#Remplacement des NaN et inf (division par 0) en 0.
Ratio[is.na(Ratio)]<-0
Ratio[is.infinite(Ratio)]<-0
barplot(Ratio)
```
![](test-notebook_files/figure-latex/unnamed-chunk-20-1.pdf)<!-- -->
```r
mean(Ratio)
```
```
## [1] 1.067513
```
En moyenne c'est assez équilibré : je réponds autant de fois qu'on m'envoie un message.
## Conclusion
__J'ai passé pas mal de temps à faire ça mais ça m'a permis de bien prendre en main l'outil.
Je conçois que mon étude est assez sale et que les manières de plotter ne sont vraiment pas optimisées mais ce n'était pas vraiment le but de l'exercice.__
__Après avoir compilé, je n'ai pas pû le faire en pdf (des erreurs de polices qui ne passent pas avec LaTeX on dirait ...).
Aussi, j'ai remarqué qu'il fallait laissé un retour chariot après la visualisation du plot sinon le texte se met à côté dans le rendu.__
% Options for packages loaded elsewhere
\PassOptionsToPackage{unicode}{hyperref}
\PassOptionsToPackage{hyphens}{url}
%
\documentclass[
]{article}
\usepackage{lmodern}
\usepackage{amssymb,amsmath}
\usepackage{ifxetex,ifluatex}
\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{textcomp} % provide euro and other symbols
\else % if luatex or xetex
\usepackage{unicode-math}
\defaultfontfeatures{Scale=MatchLowercase}
\defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1}
\fi
% Use upquote if available, for straight quotes in verbatim environments
\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
\IfFileExists{microtype.sty}{% use microtype if available
\usepackage[]{microtype}
\UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
}{}
\makeatletter
\@ifundefined{KOMAClassName}{% if non-KOMA class
\IfFileExists{parskip.sty}{%
\usepackage{parskip}
}{% else
\setlength{\parindent}{0pt}
\setlength{\parskip}{6pt plus 2pt minus 1pt}}
}{% if KOMA class
\KOMAoptions{parskip=half}}
\makeatother
\usepackage{xcolor}
\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available
\IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}}
\hypersetup{
pdftitle={R Notebook},
hidelinks,
pdfcreator={LaTeX via pandoc}}
\urlstyle{same} % disable monospaced font for URLs
\usepackage[margin=1in]{geometry}
\usepackage{color}
\usepackage{fancyvrb}
\newcommand{\VerbBar}{|}
\newcommand{\VERB}{\Verb[commandchars=\\\{\}]}
\DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}}
% Add ',fontsize=\small' for more characters per line
\usepackage{framed}
\definecolor{shadecolor}{RGB}{248,248,248}
\newenvironment{Shaded}{\begin{snugshade}}{\end{snugshade}}
\newcommand{\AlertTok}[1]{\textcolor[rgb]{0.94,0.16,0.16}{#1}}
\newcommand{\AnnotationTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textbf{\textit{#1}}}}
\newcommand{\AttributeTok}[1]{\textcolor[rgb]{0.77,0.63,0.00}{#1}}
\newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.00,0.00,0.81}{#1}}
\newcommand{\BuiltInTok}[1]{#1}
\newcommand{\CharTok}[1]{\textcolor[rgb]{0.31,0.60,0.02}{#1}}
\newcommand{\CommentTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textit{#1}}}
\newcommand{\CommentVarTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textbf{\textit{#1}}}}
\newcommand{\ConstantTok}[1]{\textcolor[rgb]{0.00,0.00,0.00}{#1}}
\newcommand{\ControlFlowTok}[1]{\textcolor[rgb]{0.13,0.29,0.53}{\textbf{#1}}}
\newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.13,0.29,0.53}{#1}}
\newcommand{\DecValTok}[1]{\textcolor[rgb]{0.00,0.00,0.81}{#1}}
\newcommand{\DocumentationTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textbf{\textit{#1}}}}
\newcommand{\ErrorTok}[1]{\textcolor[rgb]{0.64,0.00,0.00}{\textbf{#1}}}
\newcommand{\ExtensionTok}[1]{#1}
\newcommand{\FloatTok}[1]{\textcolor[rgb]{0.00,0.00,0.81}{#1}}
\newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.00,0.00,0.00}{#1}}
\newcommand{\ImportTok}[1]{#1}
\newcommand{\InformationTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textbf{\textit{#1}}}}
\newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.13,0.29,0.53}{\textbf{#1}}}
\newcommand{\NormalTok}[1]{#1}
\newcommand{\OperatorTok}[1]{\textcolor[rgb]{0.81,0.36,0.00}{\textbf{#1}}}
\newcommand{\OtherTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{#1}}
\newcommand{\PreprocessorTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textit{#1}}}
\newcommand{\RegionMarkerTok}[1]{#1}
\newcommand{\SpecialCharTok}[1]{\textcolor[rgb]{0.00,0.00,0.00}{#1}}
\newcommand{\SpecialStringTok}[1]{\textcolor[rgb]{0.31,0.60,0.02}{#1}}
\newcommand{\StringTok}[1]{\textcolor[rgb]{0.31,0.60,0.02}{#1}}
\newcommand{\VariableTok}[1]{\textcolor[rgb]{0.00,0.00,0.00}{#1}}
\newcommand{\VerbatimStringTok}[1]{\textcolor[rgb]{0.31,0.60,0.02}{#1}}
\newcommand{\WarningTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textbf{\textit{#1}}}}
\usepackage{graphicx}
\makeatletter
\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi}
\def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi}
\makeatother
% Scale images if necessary, so that they will not overflow the page
% margins by default, and it is still possible to overwrite the defaults
% using explicit options in \includegraphics[width, height, ...]{}
\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio}
% Set default figure placement to htbp
\makeatletter
\def\fps@figure{htbp}
\makeatother
\setlength{\emergencystretch}{3em} % prevent overfull lines
\providecommand{\tightlist}{%
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
\setcounter{secnumdepth}{-\maxdimen} % remove section numbering
\title{R Notebook}
\author{}
\date{}
\begin{document}
\maketitle
\hypertarget{luxe9tude}{%
\subsection{L'étude}\label{luxe9tude}}
Cette étude consiste à évaluer mon usage du téléphone depuis le 25
février 2020 pour établir un lien entre la mise en place du confinement
le 17 mars 2020 et mon usage téléphonique.
\hypertarget{le-fichier-de-donnuxe9es}{%
\subsection{Le fichier de données}\label{le-fichier-de-donnuxe9es}}
Le fichier de données ci-après est une table représentant différents
paramètres chaque jour depuis le 25/02/2020 :\\
- Le nombre d'appels émis : Appels\_emis\\
- Le nombre d'appels reçus : Appels\_recus (Comprends aussi les appels
manqués)\\
- La durée totale des appels de la journée en seconde : Duree\_appels\\
- Le nombre de messages reçus : Messages\_recus\\
- Le nombre de messages envoyés : Messages\_envoyes
Le fichier peut être importé comme ceci :
\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{df\textless{}{-}}\KeywordTok{read.csv}\NormalTok{(}\StringTok{"C:/Users/Marc/Desktop/MOOC/mooc{-}rr/module2/exo4/Book1.csv"}\NormalTok{, }\DataTypeTok{sep =} \StringTok{";"}\NormalTok{)}
\KeywordTok{head}\NormalTok{(df)}
\end{Highlighting}
\end{Shaded}
\begin{verbatim}
## ï..Date Appels_emis Appels_recus Duree_appel Messages_recus
## 1 25/02/2020 0 0 0 6
## 2 26/02/2020 1 1 5 3
## 3 27/02/2020 0 0 0 3
## 4 28/02/2020 0 0 0 0
## 5 29/02/2020 3 1 3470 1
## 6 01/03/2020 1 1 141 15
## Messages_envoyes
## 1 4
## 2 4
## 3 2
## 4 0
## 5 0
## 6 7
\end{verbatim}
\hypertarget{lanalyse-de-lusage-tuxe9luxe9phonique}{%
\subsection{L'analyse de l'usage
téléphonique}\label{lanalyse-de-lusage-tuxe9luxe9phonique}}
Tout d'abord on peut plotter les différents paramètres au cours du temps
pour se donner un aperçu de mon usage :
\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\tightlist
\item
Les appels émis
\end{enumerate}
\begin{Shaded}
\begin{Highlighting}[]
\KeywordTok{barplot}\NormalTok{(df}\OperatorTok{$}\NormalTok{Appels\_emis, }\DataTypeTok{names.arg =}\NormalTok{ df}\OperatorTok{$}\NormalTok{ï..Date)}
\end{Highlighting}
\end{Shaded}
\includegraphics{test-notebook_files/figure-latex/unnamed-chunk-2-1.pdf}
Les dates sont mal positionnées mais c'est pas grave. Il semble que j'ai
beaucoup appelé autour de la date du 17 mars.
\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\setcounter{enumi}{1}
\tightlist
\item
Appels reçus
\end{enumerate}
\begin{Shaded}
\begin{Highlighting}[]
\KeywordTok{barplot}\NormalTok{(df}\OperatorTok{$}\NormalTok{Appels\_recus, }\DataTypeTok{names.arg =}\NormalTok{ df}\OperatorTok{$}\NormalTok{ï..Date)}
\end{Highlighting}
\end{Shaded}
\includegraphics{test-notebook_files/figure-latex/unnamed-chunk-3-1.pdf}
Il semble que j'ai reçu beaucoup d'appels la veille du 17 mars puis que
j'ai reçu + d'appels en général après cette période qu'avant.
\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\setcounter{enumi}{2}
\tightlist
\item
Durée appel
\end{enumerate}
\begin{Shaded}
\begin{Highlighting}[]
\KeywordTok{barplot}\NormalTok{(df}\OperatorTok{$}\NormalTok{Duree\_appel, }\DataTypeTok{names.arg =}\NormalTok{ df}\OperatorTok{$}\NormalTok{ï..Date)}
\end{Highlighting}
\end{Shaded}
\includegraphics{test-notebook_files/figure-latex/unnamed-chunk-4-1.pdf}
Là c'est très voyant. J'ai passé beaucoup de temps au téléphone après le
16 mars comparé à avant (sauf 2 fois).
\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\setcounter{enumi}{3}
\tightlist
\item
Messages reçus
\end{enumerate}
\begin{Shaded}
\begin{Highlighting}[]
\KeywordTok{barplot}\NormalTok{(df}\OperatorTok{$}\NormalTok{Messages\_recus, }\DataTypeTok{names.arg =}\NormalTok{ df}\OperatorTok{$}\NormalTok{ï..Date)}
\end{Highlighting}
\end{Shaded}
\includegraphics{test-notebook_files/figure-latex/unnamed-chunk-5-1.pdf}
\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\setcounter{enumi}{4}
\tightlist
\item
Messages envoyés
\end{enumerate}
\begin{Shaded}
\begin{Highlighting}[]
\KeywordTok{barplot}\NormalTok{(df}\OperatorTok{$}\NormalTok{Messages\_envoyes, }\DataTypeTok{names.arg =}\NormalTok{ df}\OperatorTok{$}\NormalTok{ï..Date)}
\end{Highlighting}
\end{Shaded}
\includegraphics{test-notebook_files/figure-latex/unnamed-chunk-6-1.pdf}
Pour les messages, la tendance est inverse aux appels : je reçois et
envoie - de sms depuis le 17 mars comparé à avant.\\
J'ai eput être changé mon usage de l'un à l'autre.\\
Sauf autour du 16-17 mars où j'ai beaucoup communiqué.
\hypertarget{repruxe9sentation-des-moyennes-avant-et-apruxe8s-le-17-mars}{%
\subsubsection{Représentation des moyennes avant et après le 17
mars}\label{repruxe9sentation-des-moyennes-avant-et-apruxe8s-le-17-mars}}
Je vais rajouté une colonne pour indiqué avant ou après le 17 mars.
\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{add\textless{}{-}}\KeywordTok{c}\NormalTok{(}\KeywordTok{rep}\NormalTok{(}\StringTok{"avant"}\NormalTok{,}\DecValTok{21}\NormalTok{), }\KeywordTok{rep}\NormalTok{(}\StringTok{"après"}\NormalTok{,}\DecValTok{21}\NormalTok{))}
\NormalTok{df}\OperatorTok{$}\NormalTok{add\textless{}{-}add}
\end{Highlighting}
\end{Shaded}
Oui je sais c'est vraiment nul mais en gros je sais qu'il y a 42 lignes
dans mon tableau (je peux le vérifier avec
\texttt{length(df\$Appels\_emis)} par exemple) et que le 17 mars est la
22ème ligne.\\
J'ai donc ajouté 21 fois ``avant'' et 21 fois ``après'' sur une colonne
dans mon data frame df.
Maintenant on va pouvoir calculer les moyennes des paramètres avant et
après (inclus) le 17 mars 2020.
\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{m\_appels\_emis\textless{}{-}}\KeywordTok{c}\NormalTok{(}\KeywordTok{mean}\NormalTok{(df}\OperatorTok{$}\NormalTok{Appels\_emis[df}\OperatorTok{$}\NormalTok{add}\OperatorTok{==}\StringTok{"avant"}\NormalTok{]), }\KeywordTok{mean}\NormalTok{(df}\OperatorTok{$}\NormalTok{Appels\_emis[df}\OperatorTok{$}\NormalTok{add}\OperatorTok{==}\StringTok{"après"}\NormalTok{]))}
\NormalTok{m\_appels\_recus\textless{}{-}}\KeywordTok{c}\NormalTok{(}\KeywordTok{mean}\NormalTok{(df}\OperatorTok{$}\NormalTok{Appels\_recus[df}\OperatorTok{$}\NormalTok{add}\OperatorTok{==}\StringTok{"avant"}\NormalTok{]), }\KeywordTok{mean}\NormalTok{(df}\OperatorTok{$}\NormalTok{Appels\_recus[df}\OperatorTok{$}\NormalTok{add}\OperatorTok{==}\StringTok{"après"}\NormalTok{]))}
\NormalTok{m\_duree\_appel\textless{}{-}}\KeywordTok{c}\NormalTok{(}\KeywordTok{mean}\NormalTok{(df}\OperatorTok{$}\NormalTok{Duree\_appel[df}\OperatorTok{$}\NormalTok{add}\OperatorTok{==}\StringTok{"avant"}\NormalTok{]), }\KeywordTok{mean}\NormalTok{(df}\OperatorTok{$}\NormalTok{Duree\_appel[df}\OperatorTok{$}\NormalTok{add}\OperatorTok{==}\StringTok{"après"}\NormalTok{]))}
\NormalTok{m\_messages\_recus\textless{}{-}}\KeywordTok{c}\NormalTok{(}\KeywordTok{mean}\NormalTok{(df}\OperatorTok{$}\NormalTok{Messages\_recus[df}\OperatorTok{$}\NormalTok{add}\OperatorTok{==}\StringTok{"avant"}\NormalTok{]), }\KeywordTok{mean}\NormalTok{(df}\OperatorTok{$}\NormalTok{Messages\_recus[df}\OperatorTok{$}\NormalTok{add}\OperatorTok{==}\StringTok{"après"}\NormalTok{]))}
\NormalTok{m\_messages\_envoyes\textless{}{-}}\KeywordTok{c}\NormalTok{(}\KeywordTok{mean}\NormalTok{(df}\OperatorTok{$}\NormalTok{Messages\_envoyes[df}\OperatorTok{$}\NormalTok{add}\OperatorTok{==}\StringTok{"avant"}\NormalTok{]), }\KeywordTok{mean}\NormalTok{(df}\OperatorTok{$}\NormalTok{Messages\_envoyes[df}\OperatorTok{$}\NormalTok{add}\OperatorTok{==}\StringTok{"après"}\NormalTok{]))}
\NormalTok{m\_appels\_emis}
\end{Highlighting}
\end{Shaded}
\begin{verbatim}
## [1] 1.142857 1.523810
\end{verbatim}
\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{m\_appels\_recus}
\end{Highlighting}
\end{Shaded}
\begin{verbatim}
## [1] 0.8095238 1.1904762
\end{verbatim}
\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{m\_messages\_recus}
\end{Highlighting}
\end{Shaded}
\begin{verbatim}
## [1] 6.285714 2.761905
\end{verbatim}
\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{m\_messages\_envoyes}
\end{Highlighting}
\end{Shaded}
\begin{verbatim}
## [1] 5.285714 1.523810
\end{verbatim}
Et les écarts-types :
\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{sd\_appels\_emis\textless{}{-}}\KeywordTok{c}\NormalTok{(}\KeywordTok{sd}\NormalTok{(df}\OperatorTok{$}\NormalTok{Appels\_emis[df}\OperatorTok{$}\NormalTok{add}\OperatorTok{==}\StringTok{"avant"}\NormalTok{]), }\KeywordTok{sd}\NormalTok{(df}\OperatorTok{$}\NormalTok{Appels\_emis[df}\OperatorTok{$}\NormalTok{add}\OperatorTok{==}\StringTok{"après"}\NormalTok{]))}
\NormalTok{sd\_appels\_recus\textless{}{-}}\KeywordTok{c}\NormalTok{(}\KeywordTok{sd}\NormalTok{(df}\OperatorTok{$}\NormalTok{Appels\_recus[df}\OperatorTok{$}\NormalTok{add}\OperatorTok{==}\StringTok{"avant"}\NormalTok{]), }\KeywordTok{sd}\NormalTok{(df}\OperatorTok{$}\NormalTok{Appels\_recus[df}\OperatorTok{$}\NormalTok{add}\OperatorTok{==}\StringTok{"après"}\NormalTok{]))}
\NormalTok{sd\_duree\_appel\textless{}{-}}\KeywordTok{c}\NormalTok{(}\KeywordTok{sd}\NormalTok{(df}\OperatorTok{$}\NormalTok{Duree\_appel[df}\OperatorTok{$}\NormalTok{add}\OperatorTok{==}\StringTok{"avant"}\NormalTok{]), }\KeywordTok{sd}\NormalTok{(df}\OperatorTok{$}\NormalTok{Duree\_appel[df}\OperatorTok{$}\NormalTok{add}\OperatorTok{==}\StringTok{"après"}\NormalTok{]))}
\NormalTok{sd\_messages\_recus\textless{}{-}}\KeywordTok{c}\NormalTok{(}\KeywordTok{sd}\NormalTok{(df}\OperatorTok{$}\NormalTok{Messages\_recus[df}\OperatorTok{$}\NormalTok{add}\OperatorTok{==}\StringTok{"avant"}\NormalTok{]), }\KeywordTok{sd}\NormalTok{(df}\OperatorTok{$}\NormalTok{Messages\_recus[df}\OperatorTok{$}\NormalTok{add}\OperatorTok{==}\StringTok{"après"}\NormalTok{]))}
\NormalTok{sd\_messages\_envoyes\textless{}{-}}\KeywordTok{c}\NormalTok{(}\KeywordTok{sd}\NormalTok{(df}\OperatorTok{$}\NormalTok{Messages\_envoyes[df}\OperatorTok{$}\NormalTok{add}\OperatorTok{==}\StringTok{"avant"}\NormalTok{]), }\KeywordTok{sd}\NormalTok{(df}\OperatorTok{$}\NormalTok{Messages\_envoyes[df}\OperatorTok{$}\NormalTok{add}\OperatorTok{==}\StringTok{"après"}\NormalTok{]))}
\end{Highlighting}
\end{Shaded}
Maintenant on va pouvoir plotter les moyennes de tous les paramètres
avant et après (inclus) le 17 mars 2020.\\
Le mieux c'est d'utiliser ggplot.
\begin{Shaded}
\begin{Highlighting}[]
\CommentTok{\#install.packages("ggplot2")}
\KeywordTok{library}\NormalTok{(ggplot2)}
\NormalTok{a\textless{}{-}}\KeywordTok{data.frame}\NormalTok{(m\_appels\_emis, sd\_appels\_emis, }\KeywordTok{c}\NormalTok{(}\StringTok{"aa"}\NormalTok{, }\StringTok{"ap"}\NormalTok{))}
\KeywordTok{ggplot}\NormalTok{(a, }\KeywordTok{aes}\NormalTok{(}\DataTypeTok{x =}\NormalTok{ a}\OperatorTok{$}\NormalTok{c..aa....ap.., }\DataTypeTok{y =}\NormalTok{ m\_appels\_emis))}\OperatorTok{+}
\StringTok{ }\KeywordTok{geom\_bar}\NormalTok{(}\DataTypeTok{stat =} \StringTok{"identity"}\NormalTok{)}\OperatorTok{+}
\StringTok{ }\KeywordTok{geom\_errorbar}\NormalTok{(}\DataTypeTok{ymin =}\NormalTok{ a}\OperatorTok{$}\NormalTok{m\_appels\_emis}\OperatorTok{{-}}\NormalTok{a}\OperatorTok{$}\NormalTok{sd\_appels\_emis, }\DataTypeTok{ymax =}\NormalTok{ a}\OperatorTok{$}\NormalTok{m\_appels\_emis}\OperatorTok{+}\NormalTok{a}\OperatorTok{$}\NormalTok{sd\_appels\_emis)}\OperatorTok{+}\StringTok{ }
\StringTok{ }\KeywordTok{ylim}\NormalTok{(}\OperatorTok{{-}}\DecValTok{1}\NormalTok{,}\DecValTok{4}\NormalTok{)}\OperatorTok{+}
\StringTok{ }\KeywordTok{labs}\NormalTok{(}\DataTypeTok{title=}\StringTok{"Appels émis"}\NormalTok{)}
\end{Highlighting}
\end{Shaded}
\begin{verbatim}
## Warning: Use of `a$c..aa....ap..` is discouraged. Use `c..aa....ap..` instead.
## Warning: Use of `a$c..aa....ap..` is discouraged. Use `c..aa....ap..` instead.
\end{verbatim}
\includegraphics{test-notebook_files/figure-latex/unnamed-chunk-10-1.pdf}
\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{b\textless{}{-}}\KeywordTok{data.frame}\NormalTok{(m\_appels\_recus, sd\_appels\_recus, }\KeywordTok{c}\NormalTok{(}\StringTok{"aa"}\NormalTok{, }\StringTok{"ap"}\NormalTok{))}
\KeywordTok{ggplot}\NormalTok{(b, }\KeywordTok{aes}\NormalTok{(}\DataTypeTok{x =}\NormalTok{ b}\OperatorTok{$}\NormalTok{c..aa....ap.., }\DataTypeTok{y =}\NormalTok{ b}\OperatorTok{$}\NormalTok{m\_appels\_recus))}\OperatorTok{+}
\StringTok{ }\KeywordTok{geom\_bar}\NormalTok{(}\DataTypeTok{stat =} \StringTok{"identity"}\NormalTok{)}\OperatorTok{+}
\StringTok{ }\KeywordTok{geom\_errorbar}\NormalTok{(}\DataTypeTok{ymin =}\NormalTok{ b}\OperatorTok{$}\NormalTok{m\_appels\_recus}\OperatorTok{{-}}\NormalTok{b}\OperatorTok{$}\NormalTok{sd\_appels\_recus, }\DataTypeTok{ymax =}\NormalTok{ b}\OperatorTok{$}\NormalTok{m\_appels\_recus}\OperatorTok{+}\NormalTok{b}\OperatorTok{$}\NormalTok{sd\_appels\_recus)}\OperatorTok{+}\StringTok{ }
\StringTok{ }\KeywordTok{ylim}\NormalTok{(}\OperatorTok{{-}}\DecValTok{1}\NormalTok{,}\DecValTok{3}\NormalTok{)}\OperatorTok{+}
\StringTok{ }\KeywordTok{labs}\NormalTok{(}\DataTypeTok{title=}\StringTok{"Appels recus"}\NormalTok{)}
\end{Highlighting}
\end{Shaded}
\begin{verbatim}
## Warning: Use of `b$c..aa....ap..` is discouraged. Use `c..aa....ap..` instead.
\end{verbatim}
\begin{verbatim}
## Warning: Use of `b$m_appels_recus` is discouraged. Use `m_appels_recus` instead.
\end{verbatim}
\begin{verbatim}
## Warning: Use of `b$c..aa....ap..` is discouraged. Use `c..aa....ap..` instead.
\end{verbatim}
\begin{verbatim}
## Warning: Use of `b$m_appels_recus` is discouraged. Use `m_appels_recus` instead.
\end{verbatim}
\includegraphics{test-notebook_files/figure-latex/unnamed-chunk-11-1.pdf}
\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{c\textless{}{-}}\KeywordTok{data.frame}\NormalTok{(m\_duree\_appel, sd\_duree\_appel, }\KeywordTok{c}\NormalTok{(}\StringTok{"aa"}\NormalTok{, }\StringTok{"ap"}\NormalTok{))}
\KeywordTok{ggplot}\NormalTok{(c, }\KeywordTok{aes}\NormalTok{(}\DataTypeTok{x =}\NormalTok{ c}\OperatorTok{$}\NormalTok{c..aa....ap.., }\DataTypeTok{y =}\NormalTok{ c}\OperatorTok{$}\NormalTok{m\_duree\_appel))}\OperatorTok{+}
\StringTok{ }\KeywordTok{geom\_bar}\NormalTok{(}\DataTypeTok{stat =} \StringTok{"identity"}\NormalTok{)}\OperatorTok{+}
\StringTok{ }\KeywordTok{geom\_errorbar}\NormalTok{(}\DataTypeTok{ymin =}\NormalTok{ c}\OperatorTok{$}\NormalTok{m\_duree\_appel}\OperatorTok{{-}}\NormalTok{c}\OperatorTok{$}\NormalTok{sd\_duree\_appel, }\DataTypeTok{ymax =}\NormalTok{ c}\OperatorTok{$}\NormalTok{m\_duree\_appel}\OperatorTok{+}\NormalTok{c}\OperatorTok{$}\NormalTok{sd\_duree\_appel)}\OperatorTok{+}\StringTok{ }
\StringTok{ }\KeywordTok{ylim}\NormalTok{(}\OperatorTok{{-}}\DecValTok{500}\NormalTok{,}\DecValTok{2000}\NormalTok{)}\OperatorTok{+}
\StringTok{ }\KeywordTok{labs}\NormalTok{(}\DataTypeTok{title=}\StringTok{"Duree appel"}\NormalTok{)}
\end{Highlighting}
\end{Shaded}
\begin{verbatim}
## Warning: Use of `c$c..aa....ap..` is discouraged. Use `c..aa....ap..` instead.
\end{verbatim}
\begin{verbatim}
## Warning: Use of `c$m_duree_appel` is discouraged. Use `m_duree_appel` instead.
\end{verbatim}
\begin{verbatim}
## Warning: Use of `c$c..aa....ap..` is discouraged. Use `c..aa....ap..` instead.
\end{verbatim}
\begin{verbatim}
## Warning: Use of `c$m_duree_appel` is discouraged. Use `m_duree_appel` instead.
\end{verbatim}
\includegraphics{test-notebook_files/figure-latex/unnamed-chunk-12-1.pdf}
\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{d\textless{}{-}}\KeywordTok{data.frame}\NormalTok{(m\_messages\_envoyes, sd\_messages\_envoyes, }\KeywordTok{c}\NormalTok{(}\StringTok{"aa"}\NormalTok{, }\StringTok{"ap"}\NormalTok{))}
\KeywordTok{ggplot}\NormalTok{(d, }\KeywordTok{aes}\NormalTok{(}\DataTypeTok{x =}\NormalTok{ d}\OperatorTok{$}\NormalTok{c..aa....ap.., }\DataTypeTok{y =}\NormalTok{ d}\OperatorTok{$}\NormalTok{m\_messages\_envoyes))}\OperatorTok{+}
\StringTok{ }\KeywordTok{geom\_bar}\NormalTok{(}\DataTypeTok{stat =} \StringTok{"identity"}\NormalTok{)}\OperatorTok{+}
\StringTok{ }\KeywordTok{geom\_errorbar}\NormalTok{(}\DataTypeTok{ymin =}\NormalTok{ d}\OperatorTok{$}\NormalTok{m\_messages\_envoyes}\OperatorTok{{-}}\NormalTok{d}\OperatorTok{$}\NormalTok{sd\_messages\_envoyes, }\DataTypeTok{ymax =}\NormalTok{ d}\OperatorTok{$}\NormalTok{m\_messages\_envoyes}\OperatorTok{+}\NormalTok{d}\OperatorTok{$}\NormalTok{sd\_messages\_envoyes)}\OperatorTok{+}\StringTok{ }
\StringTok{ }\KeywordTok{ylim}\NormalTok{(}\DecValTok{0}\NormalTok{,}\DecValTok{12}\NormalTok{)}\OperatorTok{+}
\StringTok{ }\KeywordTok{labs}\NormalTok{(}\DataTypeTok{title=}\StringTok{"Messages envoyes"}\NormalTok{)}
\end{Highlighting}
\end{Shaded}
\begin{verbatim}
## Warning: Use of `d$c..aa....ap..` is discouraged. Use `c..aa....ap..` instead.
\end{verbatim}
\begin{verbatim}
## Warning: Use of `d$m_messages_envoyes` is discouraged. Use `m_messages_envoyes`
## instead.
\end{verbatim}
\begin{verbatim}
## Warning: Use of `d$c..aa....ap..` is discouraged. Use `c..aa....ap..` instead.
\end{verbatim}
\begin{verbatim}
## Warning: Use of `d$m_messages_envoyes` is discouraged. Use `m_messages_envoyes`
## instead.
\end{verbatim}
\includegraphics{test-notebook_files/figure-latex/unnamed-chunk-13-1.pdf}
\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{e\textless{}{-}}\KeywordTok{data.frame}\NormalTok{(m\_messages\_recus, sd\_messages\_recus, }\KeywordTok{c}\NormalTok{(}\StringTok{"aa"}\NormalTok{, }\StringTok{"ap"}\NormalTok{))}
\KeywordTok{ggplot}\NormalTok{(e, }\KeywordTok{aes}\NormalTok{(}\DataTypeTok{x =}\NormalTok{ e}\OperatorTok{$}\NormalTok{c..aa....ap.., }\DataTypeTok{y =}\NormalTok{ e}\OperatorTok{$}\NormalTok{m\_messages\_recus))}\OperatorTok{+}
\StringTok{ }\KeywordTok{geom\_bar}\NormalTok{(}\DataTypeTok{stat =} \StringTok{"identity"}\NormalTok{)}\OperatorTok{+}
\StringTok{ }\KeywordTok{geom\_errorbar}\NormalTok{(}\DataTypeTok{ymin =}\NormalTok{ e}\OperatorTok{$}\NormalTok{m\_messages\_recus}\OperatorTok{{-}}\NormalTok{e}\OperatorTok{$}\NormalTok{sd\_messages\_recus, }\DataTypeTok{ymax =}\NormalTok{ e}\OperatorTok{$}\NormalTok{m\_messages\_recus}\OperatorTok{+}\NormalTok{e}\OperatorTok{$}\NormalTok{sd\_messages\_recus)}\OperatorTok{+}\StringTok{ }
\StringTok{ }\KeywordTok{ylim}\NormalTok{(}\OperatorTok{{-}}\DecValTok{2}\NormalTok{,}\DecValTok{12}\NormalTok{)}\OperatorTok{+}
\StringTok{ }\KeywordTok{labs}\NormalTok{(}\DataTypeTok{title=}\StringTok{"Messages recus"}\NormalTok{)}
\end{Highlighting}
\end{Shaded}
\begin{verbatim}
## Warning: Use of `e$c..aa....ap..` is discouraged. Use `c..aa....ap..` instead.
\end{verbatim}
\begin{verbatim}
## Warning: Use of `e$m_messages_recus` is discouraged. Use `m_messages_recus`
## instead.
\end{verbatim}
\begin{verbatim}
## Warning: Use of `e$c..aa....ap..` is discouraged. Use `c..aa....ap..` instead.
\end{verbatim}
\begin{verbatim}
## Warning: Use of `e$m_messages_recus` is discouraged. Use `m_messages_recus`
## instead.
\end{verbatim}
\includegraphics{test-notebook_files/figure-latex/unnamed-chunk-14-1.pdf}
\textbf{Bilan : On voit des augmentations dans les appels et une
diminution dans les messages mais les écarts types sont énormes}
A mon avis, rien n'est significatif mais on peut s'entrainer sur un
cas.\\
Comme il n'y a que 21 valeurs dans chaque groupe, je ne peux pas
appliquer le théorème central limite. Je vais donc vérifier la
distribution normale de chaque groupe ainsi que l'égalité des variances
pour voir quel test statistique appliqué.\\
Prenons comme exemple la durée de l'appel.
\begin{Shaded}
\begin{Highlighting}[]
\KeywordTok{shapiro.test}\NormalTok{(df}\OperatorTok{$}\NormalTok{Duree\_appel[df}\OperatorTok{$}\NormalTok{add}\OperatorTok{==}\StringTok{"avant"}\NormalTok{])}
\end{Highlighting}
\end{Shaded}
\begin{verbatim}
##
## Shapiro-Wilk normality test
##
## data: df$Duree_appel[df$add == "avant"]
## W = 0.53087, p-value = 3.968e-07
\end{verbatim}
\begin{Shaded}
\begin{Highlighting}[]
\KeywordTok{shapiro.test}\NormalTok{(df}\OperatorTok{$}\NormalTok{Duree\_appel[df}\OperatorTok{$}\NormalTok{add}\OperatorTok{==}\StringTok{"après"}\NormalTok{])}
\end{Highlighting}
\end{Shaded}
\begin{verbatim}
##
## Shapiro-Wilk normality test
##
## data: df$Duree_appel[df$add == "après"]
## W = 0.88753, p-value = 0.0202
\end{verbatim}
Les tests de Shapiro-Wilk sont significatifs donc les distributions ne
sont pas normales.\\
Utilisation de tests non paramétriques type Mann-Whitney :
\begin{Shaded}
\begin{Highlighting}[]
\KeywordTok{wilcox.test}\NormalTok{(df}\OperatorTok{$}\NormalTok{Duree\_appel[df}\OperatorTok{$}\NormalTok{add}\OperatorTok{==}\StringTok{"avant"}\NormalTok{],df}\OperatorTok{$}\NormalTok{Duree\_appel[df}\OperatorTok{$}\NormalTok{add}\OperatorTok{==}\StringTok{"après"}\NormalTok{])}
\end{Highlighting}
\end{Shaded}
\begin{verbatim}
## Warning in wilcox.test.default(df$Duree_appel[df$add == "avant"],
## df$Duree_appel[df$add == : cannot compute exact p-value with ties
\end{verbatim}
\begin{verbatim}
##
## Wilcoxon rank sum test with continuity correction
##
## data: df$Duree_appel[df$add == "avant"] and df$Duree_appel[df$add == "après"]
## W = 140.5, p-value = 0.03965
## alternative hypothesis: true location shift is not equal to 0
\end{verbatim}
Ah ben en fait la durée des appels a significativement augmentée après
le 17 mars 2020. Je ne suis pas super fort en statistiques donc j'espère
que c'est correct. Aussi, 21 échantillons par groupe c'est pas mal pour
un test non paramétrique.
Du coup on va essayer de mettre une étoile sur le plot (ce qui n'est pas
compris dans les fonctions ggplot).\\
Pour cela on va donc tester le code d'un ami disponible sur
\href{https://github.com/EvenStar69/significativity.bar}{Github}.
\begin{Shaded}
\begin{Highlighting}[]
\CommentTok{\#install.packages("devtools")}
\KeywordTok{library}\NormalTok{(devtools)}
\end{Highlighting}
\end{Shaded}
\begin{verbatim}
## Loading required package: usethis
\end{verbatim}
\begin{Shaded}
\begin{Highlighting}[]
\CommentTok{\#Besoin de Rtools 3.5}
\CommentTok{\#install\_github("EvenStar69/significativity.bar/significativity.bar")}
\KeywordTok{library}\NormalTok{(significativity.bar)}
\end{Highlighting}
\end{Shaded}
Bon j'ai dû un peu changer sa fonction parce qu'elle n'est plus
compatible avec ggplot 3.3.\\
J'ai changé la manière de retrouver les coordonnées y : The position of
ymax in ggplot\_build(plot)\$data{[}{[}1{]}{]} changed from column 6 to
7.\\
Et j'ai changé la manière de retrouver l'échalle en y : panel\_ranges in
ggplot\_build(plot)\$layout does not exist anymore \ldots{} use
panel\_scale\_y instead.\\
J'ai aussi dû mettre à jour R vers la version 3.6.3.\\
Voici le code modifié de sa fonction :
\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{significativity\_bar \textless{}{-}}\StringTok{ }\ControlFlowTok{function}\NormalTok{(plot, groups, }\DataTypeTok{text =} \StringTok{"*"}\NormalTok{, }\DataTypeTok{text\_height =} \FloatTok{0.0275}\NormalTok{, }\DataTypeTok{size\_bar =} \DecValTok{1}\NormalTok{, }\DataTypeTok{color\_bar =} \StringTok{"black"}\NormalTok{, }\DataTypeTok{size\_text =} \DecValTok{8}\NormalTok{, }\DataTypeTok{color\_text =} \StringTok{"black"}\NormalTok{, }\DataTypeTok{font\_face =} \DecValTok{1}\NormalTok{, }\DataTypeTok{font\_style =} \StringTok{"serif"}\NormalTok{, }\DataTypeTok{line\_type =} \StringTok{"solid"}\NormalTok{)\{}
\ControlFlowTok{if}\NormalTok{ (}\OperatorTok{!}\KeywordTok{require}\NormalTok{(}\StringTok{"ggplot2"}\NormalTok{, }\DataTypeTok{character.only=}\NormalTok{T, }\DataTypeTok{quietly=}\NormalTok{T))\{ }\CommentTok{\# use library ggplot}
\KeywordTok{install.packages}\NormalTok{(}\StringTok{"ggplot2"}\NormalTok{)}
\KeywordTok{library}\NormalTok{(ggplot2, }\DataTypeTok{character.only=}\NormalTok{T)}
\NormalTok{ \}}
\ControlFlowTok{if}\NormalTok{ (}\KeywordTok{class}\NormalTok{(plot)[}\DecValTok{1}\NormalTok{] }\OperatorTok{!=}\StringTok{ "gg"}\NormalTok{)\{}
\KeywordTok{stop}\NormalTok{(}\StringTok{"Your input plot is not a ggplot"}\NormalTok{)}
\NormalTok{ \}}
\ControlFlowTok{if}\NormalTok{ (}\KeywordTok{length}\NormalTok{(groups) }\OperatorTok{!=}\StringTok{ }\DecValTok{2}\NormalTok{)\{}
\KeywordTok{stop}\NormalTok{(}\StringTok{"Please select only 2 groups between which you want the error bar"}\NormalTok{)}
\NormalTok{ \}}
\ControlFlowTok{if}\NormalTok{ (}\OperatorTok{!}\KeywordTok{is.vector}\NormalTok{(groups))\{}
\KeywordTok{stop}\NormalTok{(}\StringTok{"Please input your 2 selected groups in a vector"}\NormalTok{)}
\NormalTok{ \}}
\ControlFlowTok{if}\NormalTok{ (}\OperatorTok{!}\KeywordTok{is.character}\NormalTok{(text)) \{}
\KeywordTok{stop}\NormalTok{(}\StringTok{"Please input the text above the bar as character"}\NormalTok{)}
\NormalTok{ \}}
\ControlFlowTok{if}\NormalTok{ (}\OperatorTok{!}\KeywordTok{is.numeric}\NormalTok{(text\_height) }\OperatorTok{|}\StringTok{ }\KeywordTok{length}\NormalTok{(text\_height) }\OperatorTok{\textgreater{}}\StringTok{ }\DecValTok{1}\NormalTok{)\{}
\KeywordTok{stop}\NormalTok{(}\StringTok{"Please input one numeric value for the text height"}\NormalTok{)}
\NormalTok{ \}}
\ControlFlowTok{if}\NormalTok{ (}\OperatorTok{!}\KeywordTok{is.numeric}\NormalTok{(size\_bar) }\OperatorTok{|}\StringTok{ }\KeywordTok{length}\NormalTok{(size\_bar) }\OperatorTok{\textgreater{}}\StringTok{ }\DecValTok{1}\NormalTok{)\{}
\KeywordTok{stop}\NormalTok{(}\StringTok{"Please input one numeric value for the bar size"}\NormalTok{)}
\NormalTok{ \}}
\ControlFlowTok{if}\NormalTok{ (}\OperatorTok{!}\KeywordTok{is.character}\NormalTok{(color\_bar))\{}
\KeywordTok{stop}\NormalTok{(}\StringTok{"Please input an existing R color, as a character, for the color of the bar"}\NormalTok{)}
\NormalTok{ \}}
\ControlFlowTok{if}\NormalTok{ (}\OperatorTok{!}\KeywordTok{is.numeric}\NormalTok{(size\_text) }\OperatorTok{|}\StringTok{ }\KeywordTok{length}\NormalTok{(size\_text) }\OperatorTok{\textgreater{}}\StringTok{ }\DecValTok{1}\NormalTok{)\{}
\KeywordTok{stop}\NormalTok{(}\StringTok{"Please input one numeric value for the text size"}\NormalTok{)}
\NormalTok{ \}}
\ControlFlowTok{if}\NormalTok{ (}\OperatorTok{!}\KeywordTok{is.numeric}\NormalTok{(font\_face) }\OperatorTok{|}\StringTok{ }\KeywordTok{length}\NormalTok{(font\_face) }\OperatorTok{\textgreater{}}\StringTok{ }\DecValTok{1}\NormalTok{)\{}
\KeywordTok{stop}\NormalTok{(}\StringTok{"Please input one numeric value for the font face"}\NormalTok{)}
\NormalTok{ \}}
\ControlFlowTok{if}\NormalTok{ (}\OperatorTok{!}\KeywordTok{is.character}\NormalTok{(color\_text))\{}
\KeywordTok{stop}\NormalTok{(}\StringTok{"Please input an existing R color, as a character, for the color of the text"}\NormalTok{)}
\NormalTok{ \}}
\ControlFlowTok{if}\NormalTok{ (}\OperatorTok{!}\KeywordTok{is.character}\NormalTok{(font\_style))\{}
\KeywordTok{stop}\NormalTok{(}\StringTok{"Please input an existing font family, as a character, for the color of the bar"}\NormalTok{)}
\NormalTok{ \}}
\ControlFlowTok{if}\NormalTok{ (}\OperatorTok{!}\KeywordTok{is.character}\NormalTok{(line\_type))\{}
\KeywordTok{stop}\NormalTok{(}\StringTok{"Please input an existing line style, as a character, for the color of the bar"}\NormalTok{)}
\NormalTok{ \}}
\ControlFlowTok{if}\NormalTok{ (text\_height }\OperatorTok{\textgreater{}=}\DecValTok{1}\NormalTok{)\{}
\KeywordTok{warning}\NormalTok{(}\StringTok{"text\_height should be between 0 and 1, default value for * and around 0.04 for text are advised"}\NormalTok{)}
\NormalTok{ \}}
\ControlFlowTok{if}\NormalTok{ (}\KeywordTok{class}\NormalTok{(}\KeywordTok{as.list.environment}\NormalTok{(plot}\OperatorTok{$}\NormalTok{layers[[}\DecValTok{1}\NormalTok{]])}\OperatorTok{$}\NormalTok{geom)[}\DecValTok{1}\NormalTok{] }\OperatorTok{==}\StringTok{ "GeomPoint"}\NormalTok{)\{ }\CommentTok{\# if the ggplot is a dotplot}
\NormalTok{ coords =}\StringTok{ }\KeywordTok{ggplot\_build}\NormalTok{(plot)}\OperatorTok{$}\NormalTok{data[[}\DecValTok{1}\NormalTok{]] }\CommentTok{\# get the coordinates of the points}
\NormalTok{ xcoords =}\StringTok{ }\KeywordTok{c}\NormalTok{()}
\NormalTok{ ycoords =}\StringTok{ }\KeywordTok{c}\NormalTok{()}
\ControlFlowTok{for}\NormalTok{ (i }\ControlFlowTok{in}\NormalTok{ groups)\{ }\CommentTok{\# get the x coordinates of all coordinates in a vector, for the 2 selected groups}
\NormalTok{ xcoord\_temp =}\StringTok{ }\KeywordTok{unique}\NormalTok{(coords}\OperatorTok{$}\NormalTok{x)[i]}
\NormalTok{ xcoords =}\StringTok{ }\KeywordTok{append}\NormalTok{(xcoords, xcoord\_temp)}
\NormalTok{ \}}
\ControlFlowTok{for}\NormalTok{ (i }\ControlFlowTok{in} \KeywordTok{c}\NormalTok{(}\DecValTok{1}\NormalTok{,}\DecValTok{2}\NormalTok{))\{}
\NormalTok{ ycoord\_temp =}\StringTok{ }\KeywordTok{max}\NormalTok{(coords[coords}\OperatorTok{$}\NormalTok{x }\OperatorTok{==}\StringTok{ }\NormalTok{xcoords[i],]}\OperatorTok{$}\NormalTok{y) }\CommentTok{\# get the y coordinate of the upper point of each group}
\NormalTok{ ycoords =}\StringTok{ }\KeywordTok{append}\NormalTok{(ycoords, ycoord\_temp)}
\NormalTok{ \}}
\NormalTok{ y\_range =}\StringTok{ }\KeywordTok{ggplot\_build}\NormalTok{(plot)}\OperatorTok{$}\NormalTok{layout}\OperatorTok{$}\NormalTok{panel\_scales\_y[[}\DecValTok{1}\NormalTok{]]}\OperatorTok{$}\NormalTok{limits }\CommentTok{\# get the total height of the y scale}
\CommentTok{\# panel\_ranges in ggplot\_build(plot)$layout does not exist anymore ... use panel\_scale\_y instead}
\NormalTok{ y\_sum =}\StringTok{ }\KeywordTok{sum}\NormalTok{(}\KeywordTok{abs}\NormalTok{(y\_range)) }
\NormalTok{ y\_scale =}\StringTok{ }\NormalTok{(}\FloatTok{7.5}\OperatorTok{/}\DecValTok{100}\NormalTok{)}\OperatorTok{*}\NormalTok{y\_sum }\CommentTok{\# starting position of the vertical bar (determined \% of the total y scale)}
\NormalTok{ bar\_height =}\StringTok{ }\NormalTok{y\_scale }\OperatorTok{+}\StringTok{ }\NormalTok{((}\DecValTok{5}\OperatorTok{/}\DecValTok{100}\NormalTok{)}\OperatorTok{*}\NormalTok{y\_sum) }\CommentTok{\# final position of the vertical bar (determined \% of the total y scale in addition to y\_scale)}
\NormalTok{ ycoord\_top =}\StringTok{ }\KeywordTok{max}\NormalTok{(ycoords) }\CommentTok{\# the bar should take the heighest of the two groups as a reference}
\NormalTok{ coord\_bar =}\StringTok{ }\KeywordTok{data.frame}\NormalTok{(}\DataTypeTok{x =} \KeywordTok{c}\NormalTok{(xcoords[}\DecValTok{1}\NormalTok{], xcoords[}\DecValTok{1}\NormalTok{], xcoords[}\DecValTok{2}\NormalTok{], xcoords[}\DecValTok{2}\NormalTok{]), }\DataTypeTok{y =} \KeywordTok{c}\NormalTok{(ycoord\_top }\OperatorTok{+}\StringTok{ }\NormalTok{y\_scale, ycoord\_top }\OperatorTok{+}\StringTok{ }\NormalTok{bar\_height, ycoord\_top }\OperatorTok{+}\StringTok{ }\NormalTok{bar\_height, ycoord\_top }\OperatorTok{+}\StringTok{ }\NormalTok{y\_scale)) }\CommentTok{\# final coordinates of the bar}
\NormalTok{ star\_x =}\StringTok{ }\KeywordTok{mean}\NormalTok{(xcoords) }\CommentTok{\# x coordinate of the text above the bar (in the middle of the two groups)}
\NormalTok{ star\_y =}\StringTok{ }\NormalTok{ycoord\_top }\OperatorTok{+}\StringTok{ }\NormalTok{bar\_height }\OperatorTok{+}\StringTok{ }\NormalTok{((}\FloatTok{2.75}\OperatorTok{/}\DecValTok{100}\NormalTok{)}\OperatorTok{*}\NormalTok{y\_sum) }\CommentTok{\# y coordinate of the text above the bar (above the bar by a determined factor)}
\NormalTok{ coord\_star =}\StringTok{ }\KeywordTok{c}\NormalTok{(star\_x, star\_y) }\CommentTok{\# x,y coordinates of the text above the bar}
\NormalTok{ plot =}\StringTok{ }\NormalTok{plot }\OperatorTok{+}\StringTok{ }\KeywordTok{geom\_path}\NormalTok{(}\DataTypeTok{data =}\NormalTok{ coord\_bar, }\KeywordTok{aes}\NormalTok{(}\DataTypeTok{x=}\NormalTok{x, }\DataTypeTok{y=}\NormalTok{y), }\DataTypeTok{size =}\NormalTok{ size\_bar, }\DataTypeTok{color =}\NormalTok{ color\_bar, }\DataTypeTok{linetype =}\NormalTok{ line\_type) }\OperatorTok{+}\StringTok{ }\KeywordTok{annotate}\NormalTok{(}\StringTok{"text"}\NormalTok{, }\DataTypeTok{x =}\NormalTok{ star\_x, }\DataTypeTok{y =}\NormalTok{ star\_y, }\DataTypeTok{label =}\NormalTok{ text, }\DataTypeTok{size =}\NormalTok{ size\_text, }\DataTypeTok{color =}\NormalTok{ color\_text, }\DataTypeTok{fontface =}\NormalTok{ font\_face, }\DataTypeTok{family =}\NormalTok{ font\_style) }\CommentTok{\# create the new ggplot}
\KeywordTok{print}\NormalTok{(plot)}
\NormalTok{ \} }\ControlFlowTok{else} \ControlFlowTok{if}\NormalTok{ (}\KeywordTok{class}\NormalTok{(}\KeywordTok{as.list.environment}\NormalTok{(plot}\OperatorTok{$}\NormalTok{layers[[}\DecValTok{1}\NormalTok{]])}\OperatorTok{$}\NormalTok{geom)[}\DecValTok{1}\NormalTok{] }\OperatorTok{==}\StringTok{ "GeomBar"}\NormalTok{) \{ }\CommentTok{\# if the ggplot is a dotplot}
\NormalTok{ coords =}\StringTok{ }\KeywordTok{ggplot\_build}\NormalTok{(plot)}\OperatorTok{$}\NormalTok{data[[}\DecValTok{1}\NormalTok{]]}
\NormalTok{ xcoords =}\StringTok{ }\KeywordTok{c}\NormalTok{() }
\NormalTok{ ycoords =}\StringTok{ }\KeywordTok{c}\NormalTok{()}
\ControlFlowTok{for}\NormalTok{ (i }\ControlFlowTok{in}\NormalTok{ groups)\{ }\CommentTok{\# get the x and y coordinates of the two groups }
\NormalTok{ xcoord\_temp =}\StringTok{ }\KeywordTok{mean}\NormalTok{(}\KeywordTok{c}\NormalTok{(coords[i,]}\OperatorTok{$}\NormalTok{xmin, coords[i,]}\OperatorTok{$}\NormalTok{xmax))}
\NormalTok{ xcoords =}\StringTok{ }\KeywordTok{append}\NormalTok{(xcoords, xcoord\_temp)}
\NormalTok{ ycoord\_temp =}\StringTok{ }\NormalTok{coords[i,}\DecValTok{7}\NormalTok{] }\CommentTok{\# The position of ymax in ggplot\_build(plot)$data[[1]] changed from column 6 to 7}
\NormalTok{ ycoords =}\StringTok{ }\KeywordTok{append}\NormalTok{(ycoords, ycoord\_temp)}
\NormalTok{ \}}
\NormalTok{ y\_range =}\StringTok{ }\KeywordTok{ggplot\_build}\NormalTok{(plot)}\OperatorTok{$}\NormalTok{layout}\OperatorTok{$}\NormalTok{panel\_scales\_y[[}\DecValTok{1}\NormalTok{]]}\OperatorTok{$}\NormalTok{limits }\CommentTok{\# get the total height of the y scale}
\NormalTok{ y\_sum =}\StringTok{ }\KeywordTok{sum}\NormalTok{(}\KeywordTok{abs}\NormalTok{(y\_range))}
\NormalTok{ y\_scale =}\StringTok{ }\NormalTok{(}\FloatTok{7.5}\OperatorTok{/}\DecValTok{100}\NormalTok{)}\OperatorTok{*}\NormalTok{y\_sum }\CommentTok{\# starting position of the vertical bar (determined \% of the total y scale)}
\NormalTok{ bar\_height =}\StringTok{ }\NormalTok{y\_scale }\OperatorTok{+}\StringTok{ }\NormalTok{((}\DecValTok{5}\OperatorTok{/}\DecValTok{100}\NormalTok{)}\OperatorTok{*}\NormalTok{y\_sum) }\CommentTok{\# final position of the vertical bar (determined \% of the total y scale in addition to y\_scale)}
\NormalTok{ ycoord\_top =}\StringTok{ }\KeywordTok{max}\NormalTok{(ycoords) }\CommentTok{\# the bar should take the heighest of the two groups as a reference}
\NormalTok{ coord\_bar =}\StringTok{ }\KeywordTok{data.frame}\NormalTok{(}\DataTypeTok{x =} \KeywordTok{c}\NormalTok{(xcoords[}\DecValTok{1}\NormalTok{], xcoords[}\DecValTok{1}\NormalTok{], xcoords[}\DecValTok{2}\NormalTok{], xcoords[}\DecValTok{2}\NormalTok{]), }\DataTypeTok{y =} \KeywordTok{c}\NormalTok{(ycoord\_top }\OperatorTok{+}\StringTok{ }\NormalTok{y\_scale, ycoord\_top }\OperatorTok{+}\StringTok{ }\NormalTok{bar\_height, ycoord\_top }\OperatorTok{+}\StringTok{ }\NormalTok{bar\_height, ycoord\_top }\OperatorTok{+}\StringTok{ }\NormalTok{y\_scale)) }\CommentTok{\# final coordinates of the bar}
\NormalTok{ star\_x =}\StringTok{ }\KeywordTok{mean}\NormalTok{(xcoords) }\CommentTok{\# x coordinate of the text above the bar (in the middle of the two groups)}
\NormalTok{ star\_y =}\StringTok{ }\NormalTok{ycoord\_top }\OperatorTok{+}\StringTok{ }\NormalTok{bar\_height }\OperatorTok{+}\StringTok{ }\NormalTok{(text\_height}\OperatorTok{*}\NormalTok{y\_sum) }\CommentTok{\# y coordinate of the text above the bar (above the bar by a determined factor)}
\NormalTok{ coord\_star =}\StringTok{ }\KeywordTok{c}\NormalTok{(star\_x, star\_y) }\CommentTok{\# x,y coordinates of the text above the bar}
\NormalTok{ plot =}\StringTok{ }\NormalTok{plot }\OperatorTok{+}\StringTok{ }\KeywordTok{geom\_path}\NormalTok{(}\DataTypeTok{data =}\NormalTok{ coord\_bar, }\KeywordTok{aes}\NormalTok{(}\DataTypeTok{x=}\NormalTok{x, }\DataTypeTok{y=}\NormalTok{y), }\DataTypeTok{size =}\NormalTok{ size\_bar, }\DataTypeTok{color =}\NormalTok{ color\_bar, }\DataTypeTok{linetype =}\NormalTok{ line\_type) }\OperatorTok{+}\StringTok{ }\KeywordTok{annotate}\NormalTok{(}\StringTok{"text"}\NormalTok{, }\DataTypeTok{x =}\NormalTok{ star\_x, }\DataTypeTok{y =}\NormalTok{ star\_y, }\DataTypeTok{label =}\NormalTok{ text, }\DataTypeTok{size =}\NormalTok{ size\_text, }\DataTypeTok{color =}\NormalTok{ color\_text, }\DataTypeTok{fontface =}\NormalTok{ font\_face, }\DataTypeTok{family =}\NormalTok{ font\_style) }\CommentTok{\# create the new ggplot}
\KeywordTok{print}\NormalTok{(plot)}
\NormalTok{ \}}
\NormalTok{\}}
\end{Highlighting}
\end{Shaded}
\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{gg\textless{}{-}}\StringTok{ }\KeywordTok{ggplot}\NormalTok{(c, }\KeywordTok{aes}\NormalTok{(}\DataTypeTok{x =}\NormalTok{ c..aa....ap.., }\DataTypeTok{y =} \KeywordTok{as.numeric}\NormalTok{(m\_duree\_appel)))}\OperatorTok{+}
\StringTok{ }\KeywordTok{geom\_bar}\NormalTok{(}\DataTypeTok{stat =} \StringTok{"identity"}\NormalTok{)}\OperatorTok{+}
\StringTok{ }\KeywordTok{geom\_errorbar}\NormalTok{(}\DataTypeTok{ymin =}\NormalTok{ m\_duree\_appel}\OperatorTok{{-}}\NormalTok{sd\_duree\_appel, }\DataTypeTok{ymax =}\NormalTok{ m\_duree\_appel}\OperatorTok{+}\NormalTok{sd\_duree\_appel)}\OperatorTok{+}\StringTok{ }
\StringTok{ }\KeywordTok{ylim}\NormalTok{(}\OperatorTok{{-}}\DecValTok{500}\NormalTok{,}\DecValTok{5000}\NormalTok{)}\OperatorTok{+}
\StringTok{ }\KeywordTok{labs}\NormalTok{(}\DataTypeTok{title=}\StringTok{"Duree appel"}\NormalTok{)}
\KeywordTok{significativity\_bar}\NormalTok{(gg, }\DataTypeTok{groups =} \KeywordTok{c}\NormalTok{(}\DecValTok{1}\NormalTok{,}\DecValTok{2}\NormalTok{))}
\end{Highlighting}
\end{Shaded}
\includegraphics{test-notebook_files/figure-latex/unnamed-chunk-19-1.pdf}
\hypertarget{taux-de-ruxe9ponses}{%
\subsubsection{Taux de réponses}\label{taux-de-ruxe9ponses}}
Cette partie c'est juste pour voir si je répond autant aux messages
qu'on m'en envoie.
\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{Ratio\textless{}{-}df}\OperatorTok{$}\NormalTok{Messages\_recus}\OperatorTok{/}\NormalTok{df}\OperatorTok{$}\NormalTok{Messages\_envoyes}
\CommentTok{\#Remplacement des NaN et inf (division par 0) en 0.}
\NormalTok{Ratio[}\KeywordTok{is.na}\NormalTok{(Ratio)]\textless{}{-}}\DecValTok{0}
\NormalTok{Ratio[}\KeywordTok{is.infinite}\NormalTok{(Ratio)]\textless{}{-}}\DecValTok{0}
\KeywordTok{barplot}\NormalTok{(Ratio)}
\end{Highlighting}
\end{Shaded}
\includegraphics{test-notebook_files/figure-latex/unnamed-chunk-20-1.pdf}
\begin{Shaded}
\begin{Highlighting}[]
\KeywordTok{mean}\NormalTok{(Ratio)}
\end{Highlighting}
\end{Shaded}
\begin{verbatim}
## [1] 1.067513
\end{verbatim}
En moyenne c'est assez équilibré : je réponds autant de fois qu'on
m'envoie un message.
\hypertarget{conclusion}{%
\subsection{Conclusion}\label{conclusion}}
\textbf{J'ai passé pas mal de temps à faire ça mais ça m'a permis de
bien prendre en main l'outil.\\
Je conçois que mon étude est assez sale et que les manières de plotter
ne sont vraiment pas optimisées mais ce n'était pas vraiment le but de
l'exercice.}
\textbf{Après avoir compilé, je n'ai pas pû le faire en pdf (des erreurs
de polices qui ne passent pas avec LaTeX on dirait \ldots).\\
Aussi, j'ai remarqué qu'il fallait laissé un retour chariot après la
visualisation du plot sinon le texte se met à côté dans le rendu.}
\end{document}
---
title: "R Notebook"
output:
pdf_document: default
html_notebook: default
---
## L'étude
Cette étude consiste à évaluer mon usage du téléphone depuis le 25 février 2020 pour établir un lien entre la mise en place du confinement le 17 mars 2020 et mon usage téléphonique.
## Le fichier de données
Le fichier de données ci-après est une table représentant différents paramètres chaque jour depuis le 25/02/2020 :
- Le nombre d'appels émis : Appels\_emis
- Le nombre d'appels reçus : Appels\_recus (Comprends aussi les appels manqués)
- La durée totale des appels de la journée en seconde : Duree\_appels
- Le nombre de messages reçus : Messages\_recus
- Le nombre de messages envoyés : Messages\_envoyes
Le fichier peut être importé comme ceci :
```r
df<-read.csv("C:/Users/Marc/Desktop/MOOC/mooc-rr/module2/exo4/Book1.csv", sep = ";")
head(df)
```
```
## ï..Date Appels_emis Appels_recus Duree_appel Messages_recus
## 1 25/02/2020 0 0 0 6
## 2 26/02/2020 1 1 5 3
## 3 27/02/2020 0 0 0 3
## 4 28/02/2020 0 0 0 0
## 5 29/02/2020 3 1 3470 1
## 6 01/03/2020 1 1 141 15
## Messages_envoyes
## 1 4
## 2 4
## 3 2
## 4 0
## 5 0
## 6 7
```
## L'analyse de l'usage téléphonique
Tout d'abord on peut plotter les différents paramètres au cours du temps pour se donner un aperçu de mon usage :
1. Les appels émis
```r
barplot(df$Appels_emis, names.arg = df$ï..Date)
```
![](test-notebook_files/figure-latex/unnamed-chunk-2-1.pdf)<!-- -->
Les dates sont mal positionnées mais c'est pas grave. Il semble que j'ai beaucoup appelé autour de la date du 17 mars.
2. Appels reçus
```r
barplot(df$Appels_recus, names.arg = df$ï..Date)
```
![](test-notebook_files/figure-latex/unnamed-chunk-3-1.pdf)<!-- -->
Il semble que j'ai reçu beaucoup d'appels la veille du 17 mars puis que j'ai reçu + d'appels en général après cette période qu'avant.
3. Durée appel
```r
barplot(df$Duree_appel, names.arg = df$ï..Date)
```
![](test-notebook_files/figure-latex/unnamed-chunk-4-1.pdf)<!-- -->
Là c'est très voyant. J'ai passé beaucoup de temps au téléphone après le 16 mars comparé à avant (sauf 2 fois).
4. Messages reçus
```r
barplot(df$Messages_recus, names.arg = df$ï..Date)
```
![](test-notebook_files/figure-latex/unnamed-chunk-5-1.pdf)<!-- -->
5. Messages envoyés
```r
barplot(df$Messages_envoyes, names.arg = df$ï..Date)
```
![](test-notebook_files/figure-latex/unnamed-chunk-6-1.pdf)<!-- -->
Pour les messages, la tendance est inverse aux appels : je reçois et envoie - de sms depuis le 17 mars comparé à avant.
J'ai eput être changé mon usage de l'un à l'autre.
Sauf autour du 16-17 mars où j'ai beaucoup communiqué.
### Représentation des moyennes avant et après le 17 mars
Je vais rajouté une colonne pour indiqué avant ou après le 17 mars.
```r
add<-c(rep("avant",21), rep("après",21))
df$add<-add
```
Oui je sais c'est vraiment nul mais en gros je sais qu'il y a 42 lignes dans mon tableau (je peux le vérifier avec `length(df$Appels_emis)` par exemple) et que le 17 mars est la 22ème ligne.
J'ai donc ajouté 21 fois "avant" et 21 fois "après" sur une colonne dans mon data frame df.
Maintenant on va pouvoir calculer les moyennes des paramètres avant et après (inclus) le 17 mars 2020.
```r
m_appels_emis<-c(mean(df$Appels_emis[df$add=="avant"]), mean(df$Appels_emis[df$add=="après"]))
m_appels_recus<-c(mean(df$Appels_recus[df$add=="avant"]), mean(df$Appels_recus[df$add=="après"]))
m_duree_appel<-c(mean(df$Duree_appel[df$add=="avant"]), mean(df$Duree_appel[df$add=="après"]))
m_messages_recus<-c(mean(df$Messages_recus[df$add=="avant"]), mean(df$Messages_recus[df$add=="après"]))
m_messages_envoyes<-c(mean(df$Messages_envoyes[df$add=="avant"]), mean(df$Messages_envoyes[df$add=="après"]))
m_appels_emis
```
```
## [1] 1.142857 1.523810
```
```r
m_appels_recus
```
```
## [1] 0.8095238 1.1904762
```
```r
m_messages_recus
```
```
## [1] 6.285714 2.761905
```
```r
m_messages_envoyes
```
```
## [1] 5.285714 1.523810
```
Et les écarts-types :
```r
sd_appels_emis<-c(sd(df$Appels_emis[df$add=="avant"]), sd(df$Appels_emis[df$add=="après"]))
sd_appels_recus<-c(sd(df$Appels_recus[df$add=="avant"]), sd(df$Appels_recus[df$add=="après"]))
sd_duree_appel<-c(sd(df$Duree_appel[df$add=="avant"]), sd(df$Duree_appel[df$add=="après"]))
sd_messages_recus<-c(sd(df$Messages_recus[df$add=="avant"]), sd(df$Messages_recus[df$add=="après"]))
sd_messages_envoyes<-c(sd(df$Messages_envoyes[df$add=="avant"]), sd(df$Messages_envoyes[df$add=="après"]))
```
Maintenant on va pouvoir plotter les moyennes de tous les paramètres avant et après (inclus) le 17 mars 2020.
Le mieux c'est d'utiliser ggplot.
```r
#install.packages("ggplot2")
library(ggplot2)
a<-data.frame(m_appels_emis, sd_appels_emis, c("aa", "ap"))
ggplot(a, aes(x = a$c..aa....ap.., y = m_appels_emis))+
geom_bar(stat = "identity")+
geom_errorbar(ymin = a$m_appels_emis-a$sd_appels_emis, ymax = a$m_appels_emis+a$sd_appels_emis)+
ylim(-1,4)+
labs(title="Appels émis")
```
```
## Warning: Use of `a$c..aa....ap..` is discouraged. Use `c..aa....ap..` instead.
## Warning: Use of `a$c..aa....ap..` is discouraged. Use `c..aa....ap..` instead.
```
![](test-notebook_files/figure-latex/unnamed-chunk-10-1.pdf)<!-- -->
```r
b<-data.frame(m_appels_recus, sd_appels_recus, c("aa", "ap"))
ggplot(b, aes(x = b$c..aa....ap.., y = b$m_appels_recus))+
geom_bar(stat = "identity")+
geom_errorbar(ymin = b$m_appels_recus-b$sd_appels_recus, ymax = b$m_appels_recus+b$sd_appels_recus)+
ylim(-1,3)+
labs(title="Appels recus")
```
```
## Warning: Use of `b$c..aa....ap..` is discouraged. Use `c..aa....ap..` instead.
```
```
## Warning: Use of `b$m_appels_recus` is discouraged. Use `m_appels_recus` instead.
```
```
## Warning: Use of `b$c..aa....ap..` is discouraged. Use `c..aa....ap..` instead.
```
```
## Warning: Use of `b$m_appels_recus` is discouraged. Use `m_appels_recus` instead.
```
![](test-notebook_files/figure-latex/unnamed-chunk-11-1.pdf)<!-- -->
```r
c<-data.frame(m_duree_appel, sd_duree_appel, c("aa", "ap"))
ggplot(c, aes(x = c$c..aa....ap.., y = c$m_duree_appel))+
geom_bar(stat = "identity")+
geom_errorbar(ymin = c$m_duree_appel-c$sd_duree_appel, ymax = c$m_duree_appel+c$sd_duree_appel)+
ylim(-500,2000)+
labs(title="Duree appel")
```
```
## Warning: Use of `c$c..aa....ap..` is discouraged. Use `c..aa....ap..` instead.
```
```
## Warning: Use of `c$m_duree_appel` is discouraged. Use `m_duree_appel` instead.
```
```
## Warning: Use of `c$c..aa....ap..` is discouraged. Use `c..aa....ap..` instead.
```
```
## Warning: Use of `c$m_duree_appel` is discouraged. Use `m_duree_appel` instead.
```
![](test-notebook_files/figure-latex/unnamed-chunk-12-1.pdf)<!-- -->
```r
d<-data.frame(m_messages_envoyes, sd_messages_envoyes, c("aa", "ap"))
ggplot(d, aes(x = d$c..aa....ap.., y = d$m_messages_envoyes))+
geom_bar(stat = "identity")+
geom_errorbar(ymin = d$m_messages_envoyes-d$sd_messages_envoyes, ymax = d$m_messages_envoyes+d$sd_messages_envoyes)+
ylim(0,12)+
labs(title="Messages envoyes")
```
```
## Warning: Use of `d$c..aa....ap..` is discouraged. Use `c..aa....ap..` instead.
```
```
## Warning: Use of `d$m_messages_envoyes` is discouraged. Use `m_messages_envoyes`
## instead.
```
```
## Warning: Use of `d$c..aa....ap..` is discouraged. Use `c..aa....ap..` instead.
```
```
## Warning: Use of `d$m_messages_envoyes` is discouraged. Use `m_messages_envoyes`
## instead.
```
![](test-notebook_files/figure-latex/unnamed-chunk-13-1.pdf)<!-- -->
```r
e<-data.frame(m_messages_recus, sd_messages_recus, c("aa", "ap"))
ggplot(e, aes(x = e$c..aa....ap.., y = e$m_messages_recus))+
geom_bar(stat = "identity")+
geom_errorbar(ymin = e$m_messages_recus-e$sd_messages_recus, ymax = e$m_messages_recus+e$sd_messages_recus)+
ylim(-2,12)+
labs(title="Messages recus")
```
```
## Warning: Use of `e$c..aa....ap..` is discouraged. Use `c..aa....ap..` instead.
```
```
## Warning: Use of `e$m_messages_recus` is discouraged. Use `m_messages_recus`
## instead.
```
```
## Warning: Use of `e$c..aa....ap..` is discouraged. Use `c..aa....ap..` instead.
```
```
## Warning: Use of `e$m_messages_recus` is discouraged. Use `m_messages_recus`
## instead.
```
![](test-notebook_files/figure-latex/unnamed-chunk-14-1.pdf)<!-- -->
__Bilan : On voit des augmentations dans les appels et une diminution dans les messages mais les écarts types sont énormes__
A mon avis, rien n'est significatif mais on peut s'entrainer sur un cas.
Comme il n'y a que 21 valeurs dans chaque groupe, je ne peux pas appliquer le théorème central limite. Je vais donc vérifier la distribution normale de chaque groupe ainsi que l'égalité des variances pour voir quel test statistique appliqué.
Prenons comme exemple la durée de l'appel.
```r
shapiro.test(df$Duree_appel[df$add=="avant"])
```
```
##
## Shapiro-Wilk normality test
##
## data: df$Duree_appel[df$add == "avant"]
## W = 0.53087, p-value = 3.968e-07
```
```r
shapiro.test(df$Duree_appel[df$add=="après"])
```
```
##
## Shapiro-Wilk normality test
##
## data: df$Duree_appel[df$add == "après"]
## W = 0.88753, p-value = 0.0202
```
Les tests de Shapiro-Wilk sont significatifs donc les distributions ne sont pas normales.
Utilisation de tests non paramétriques type Mann-Whitney :
```r
wilcox.test(df$Duree_appel[df$add=="avant"],df$Duree_appel[df$add=="après"])
```
```
## Warning in wilcox.test.default(df$Duree_appel[df$add == "avant"],
## df$Duree_appel[df$add == : cannot compute exact p-value with ties
```
```
##
## Wilcoxon rank sum test with continuity correction
##
## data: df$Duree_appel[df$add == "avant"] and df$Duree_appel[df$add == "après"]
## W = 140.5, p-value = 0.03965
## alternative hypothesis: true location shift is not equal to 0
```
Ah ben en fait la durée des appels a significativement augmentée après le 17 mars 2020. Je ne suis pas super fort en statistiques donc j'espère que c'est correct. Aussi, 21 échantillons par groupe c'est pas mal pour un test non paramétrique.
Du coup on va essayer de mettre une étoile sur le plot (ce qui n'est pas compris dans les fonctions ggplot).
Pour cela on va donc tester le code d'un ami disponible sur [Github](https://github.com/EvenStar69/significativity.bar).
```r
#install.packages("devtools")
library(devtools)
```
```
## Loading required package: usethis
```
```r
#Besoin de Rtools 3.5
#install_github("EvenStar69/significativity.bar/significativity.bar")
library(significativity.bar)
```
Bon j'ai dû un peu changer sa fonction parce qu'elle n'est plus compatible avec ggplot 3.3.
J'ai changé la manière de retrouver les coordonnées y : The position of ymax in ggplot\_build(plot)\$data[[1]] changed from column 6 to 7.
Et j'ai changé la manière de retrouver l'échalle en y : panel_ranges in ggplot\_build(plot)\$layout does not exist anymore ... use panel\_scale\_y instead.
J'ai aussi dû mettre à jour R vers la version 3.6.3.
Voici le code modifié de sa fonction :
```r
significativity_bar <- function(plot, groups, text = "*", text_height = 0.0275, size_bar = 1, color_bar = "black", size_text = 8, color_text = "black", font_face = 1, font_style = "serif", line_type = "solid"){
if (!require("ggplot2", character.only=T, quietly=T)){ # use library ggplot
install.packages("ggplot2")
library(ggplot2, character.only=T)
}
if (class(plot)[1] != "gg"){
stop("Your input plot is not a ggplot")
}
if (length(groups) != 2){
stop("Please select only 2 groups between which you want the error bar")
}
if (!is.vector(groups)){
stop("Please input your 2 selected groups in a vector")
}
if (!is.character(text)) {
stop("Please input the text above the bar as character")
}
if (!is.numeric(text_height) | length(text_height) > 1){
stop("Please input one numeric value for the text height")
}
if (!is.numeric(size_bar) | length(size_bar) > 1){
stop("Please input one numeric value for the bar size")
}
if (!is.character(color_bar)){
stop("Please input an existing R color, as a character, for the color of the bar")
}
if (!is.numeric(size_text) | length(size_text) > 1){
stop("Please input one numeric value for the text size")
}
if (!is.numeric(font_face) | length(font_face) > 1){
stop("Please input one numeric value for the font face")
}
if (!is.character(color_text)){
stop("Please input an existing R color, as a character, for the color of the text")
}
if (!is.character(font_style)){
stop("Please input an existing font family, as a character, for the color of the bar")
}
if (!is.character(line_type)){
stop("Please input an existing line style, as a character, for the color of the bar")
}
if (text_height >=1){
warning("text_height should be between 0 and 1, default value for * and around 0.04 for text are advised")
}
if (class(as.list.environment(plot$layers[[1]])$geom)[1] == "GeomPoint"){ # if the ggplot is a dotplot
coords = ggplot_build(plot)$data[[1]] # get the coordinates of the points
xcoords = c()
ycoords = c()
for (i in groups){ # get the x coordinates of all coordinates in a vector, for the 2 selected groups
xcoord_temp = unique(coords$x)[i]
xcoords = append(xcoords, xcoord_temp)
}
for (i in c(1,2)){
ycoord_temp = max(coords[coords$x == xcoords[i],]$y) # get the y coordinate of the upper point of each group
ycoords = append(ycoords, ycoord_temp)
}
y_range = ggplot_build(plot)$layout$panel_scales_y[[1]]$limits # get the total height of the y scale
# panel_ranges in ggplot_build(plot)$layout does not exist anymore ... use panel_scale_y instead
y_sum = sum(abs(y_range))
y_scale = (7.5/100)*y_sum # starting position of the vertical bar (determined % of the total y scale)
bar_height = y_scale + ((5/100)*y_sum) # final position of the vertical bar (determined % of the total y scale in addition to y_scale)
ycoord_top = max(ycoords) # the bar should take the heighest of the two groups as a reference
coord_bar = data.frame(x = c(xcoords[1], xcoords[1], xcoords[2], xcoords[2]), y = c(ycoord_top + y_scale, ycoord_top + bar_height, ycoord_top + bar_height, ycoord_top + y_scale)) # final coordinates of the bar
star_x = mean(xcoords) # x coordinate of the text above the bar (in the middle of the two groups)
star_y = ycoord_top + bar_height + ((2.75/100)*y_sum) # y coordinate of the text above the bar (above the bar by a determined factor)
coord_star = c(star_x, star_y) # x,y coordinates of the text above the bar
plot = plot + geom_path(data = coord_bar, aes(x=x, y=y), size = size_bar, color = color_bar, linetype = line_type) + annotate("text", x = star_x, y = star_y, label = text, size = size_text, color = color_text, fontface = font_face, family = font_style) # create the new ggplot
print(plot)
} else if (class(as.list.environment(plot$layers[[1]])$geom)[1] == "GeomBar") { # if the ggplot is a dotplot
coords = ggplot_build(plot)$data[[1]]
xcoords = c()
ycoords = c()
for (i in groups){ # get the x and y coordinates of the two groups
xcoord_temp = mean(c(coords[i,]$xmin, coords[i,]$xmax))
xcoords = append(xcoords, xcoord_temp)
ycoord_temp = coords[i,7] # The position of ymax in ggplot_build(plot)$data[[1]] changed from column 6 to 7
ycoords = append(ycoords, ycoord_temp)
}
y_range = ggplot_build(plot)$layout$panel_scales_y[[1]]$limits # get the total height of the y scale
y_sum = sum(abs(y_range))
y_scale = (7.5/100)*y_sum # starting position of the vertical bar (determined % of the total y scale)
bar_height = y_scale + ((5/100)*y_sum) # final position of the vertical bar (determined % of the total y scale in addition to y_scale)
ycoord_top = max(ycoords) # the bar should take the heighest of the two groups as a reference
coord_bar = data.frame(x = c(xcoords[1], xcoords[1], xcoords[2], xcoords[2]), y = c(ycoord_top + y_scale, ycoord_top + bar_height, ycoord_top + bar_height, ycoord_top + y_scale)) # final coordinates of the bar
star_x = mean(xcoords) # x coordinate of the text above the bar (in the middle of the two groups)
star_y = ycoord_top + bar_height + (text_height*y_sum) # y coordinate of the text above the bar (above the bar by a determined factor)
coord_star = c(star_x, star_y) # x,y coordinates of the text above the bar
plot = plot + geom_path(data = coord_bar, aes(x=x, y=y), size = size_bar, color = color_bar, linetype = line_type) + annotate("text", x = star_x, y = star_y, label = text, size = size_text, color = color_text, fontface = font_face, family = font_style) # create the new ggplot
print(plot)
}
}
```
```r
gg<- ggplot(c, aes(x = c..aa....ap.., y = as.numeric(m_duree_appel)))+
geom_bar(stat = "identity")+
geom_errorbar(ymin = m_duree_appel-sd_duree_appel, ymax = m_duree_appel+sd_duree_appel)+
ylim(-500,5000)+
labs(title="Duree appel")
significativity_bar(gg, groups = c(1,2))
```
![](test-notebook_files/figure-latex/unnamed-chunk-19-1.pdf)<!-- -->
### Taux de réponses
Cette partie c'est juste pour voir si je répond autant aux messages qu'on m'en envoie.
```r
Ratio<-df$Messages_recus/df$Messages_envoyes
#Remplacement des NaN et inf (division par 0) en 0.
Ratio[is.na(Ratio)]<-0
Ratio[is.infinite(Ratio)]<-0
barplot(Ratio)
```
![](test-notebook_files/figure-latex/unnamed-chunk-20-1.pdf)<!-- -->
```r
mean(Ratio)
```
```
## [1] 1.067513
```
En moyenne c'est assez équilibré : je réponds autant de fois qu'on m'envoie un message.
## Conclusion
__J'ai passé pas mal de temps à faire ça mais ça m'a permis de bien prendre en main l'outil.
Je conçois que mon étude est assez sale et que les manières de plotter ne sont vraiment pas optimisées mais ce n'était pas vraiment le but de l'exercice.__
__Après avoir compilé, je n'ai pas pû le faire en pdf (des erreurs de polices qui ne passent pas avec LaTeX on dirait ...).
Aussi, j'ai remarqué qu'il fallait laissé un retour chariot après la visualisation du plot sinon le texte se met à côté dans le rendu.__
---
title: "Analyse de l'incidence du syndrome grippal"
author: "Marc"
date: "10/04/2020"
output: html_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
Récupération des données à partir du site du réseau sentinelle.
```{r}
data_url = "https://www.sentiweb.fr/datasets/incidence-PAY-3.csv"
```
Importer les données dans la variable data en sautant la première ligne de commentaire du fichier.
```{r}
data = read.csv(data_url, skip=1)
head(data)
```
Voir la fin du document :
```{r}
tail(data)
```
Regarder s'il y a des données manquantes :
```{r}
lignes_na = apply(data, 1, function(x) any(is.na(x)))
data[lignes_na,]
```
Traverser data ligne par ligne (`data, 1`) et appliquer la fonction qui traverse colonne par colonne qui retourne tout (`any`) s'il y a valeur manquante (`is.na`).
`data[lignes_na,]` pour voir le contenu de ces lignes.
Quelles types de données ?
Pour la colonne semaine et la colonne indice :
```{r}
class(data$week)
class(data$inc)
```
Tous les deux sont des entiers (différent de la vidéo).
En fait la donnée manquante de inc a été remplacée par 0.
Il faut que R comprenne que la 1ère colonne sont des dates.
Il nous faut donc la librairie `parsedate`.
```{r message=FALSE, warning=FALSE}
install.packages("parsedate")
library("parsedate")
```
Création d'une fonction (`convert_week`) pour transformer la 1ère colonne en date.
```{r}
convert_week = function(date){
ws = paste(date)
iso = paste0(substring(ws, 1, 4), "-W", substring(ws, 5, 6))
as.character(parse_iso_8601(iso))
}
```
Appliquer la fonction à toute les lignes.
```{r}
data$date = as.Date(sapply(data$week, convert_week))
class(data$date)
```
Trier le jeu de données par ordre chronologique.
```{r}
data = data[order(data$date),]
head(data)
```
Est-ce que les lignes sont bien séparées d'1 semaine ?
```{r}
all(diff(data$date) == 7)
```
On peut plotter les données :
```{r}
with(data, plot(date, inc, type ="l"))
```
Le `with` spécifie juste que c'est de la variable `data` qu'il faut prendre (au lieu d'utiliser `data$date`).
Appliquer seulement aux 200 derniers points :
```{r}
with(tail(data, 200), plot(date, inc, type ="l"))
```
## L'analyse
On va analyser d'années en années et non pas de semaine en semaine.
On va faire des années du 1er août au 1er août de chaque année pour ne pas tomber au milieu d'un pic.
On va faire une fonction pour ça :
```{r}
pic_annuel = function(annee){
debut = paste0(annee-1, "-08-01")
fin = paste0(annee, "-08-01")
semaines = data$date > debut & data$date <= fin
sum(data$inc[semaines], na.rm = TRUE)
}
```
L'année 1984 commence en hiver donc dans le pic donc il vaut mieux prendre des années à partir de 1985.
```{r}
annees = 1985:2020
```
On va créer un nouveau tableau des incidences par année.
```{r}
incidence_annuelle = data.frame(année = annees, incidence = sapply(annees, pic_annuel))
head(incidence_annuelle)
```
```{r}
plot(incidence_annuelle, type="p")
```
Voir les pics les plus importants en faisant un tri par l'incidence.
```{r}
head(incidence_annuelle[order(-incidence_annuelle$incidence),])
```
Histogramme de la fréquence des incidences en 10 catégories.
```{r}
hist(incidence_annuelle$incidence, breaks=10)
```
# @source="rseau Sentinelles, INSERM, Sorbonne Universit, http://www.sentiweb.fr", @meta={"period":[198444,202014],"geo":["PAY","1"],"geo_ref":"insee","indicator":"3","type":"all","conf_int":true,"compact":false}, @date=2020-04-10T17:15:59+02:00
week,indicator,inc,inc_low,inc_up,inc100,inc100_low,inc100_up,geo_insee,geo_name
202014,3,0,0,0,0,0,0,FR,France
202013,3,0,0,0,0,0,0,FR,France
202012,3,8321,5873,10769,13,9,17,FR,France
202011,3,101704,93652,109756,154,142,166,FR,France
202010,3,104977,96650,113304,159,146,172,FR,France
202009,3,110696,102066,119326,168,155,181,FR,France
202008,3,143753,133984,153522,218,203,233,FR,France
202007,3,183610,172812,194408,279,263,295,FR,France
202006,3,206669,195481,217857,314,297,331,FR,France
202005,3,187957,177445,198469,285,269,301,FR,France
202004,3,122331,113492,131170,186,173,199,FR,France
202003,3,78413,71330,85496,119,108,130,FR,France
202002,3,53614,47654,59574,81,72,90,FR,France
202001,3,36850,31608,42092,56,48,64,FR,France
201952,3,28135,23220,33050,43,36,50,FR,France
201951,3,29786,25042,34530,45,38,52,FR,France
201950,3,34223,29156,39290,52,44,60,FR,France
201949,3,25662,21414,29910,39,33,45,FR,France
201948,3,22367,18055,26679,34,27,41,FR,France
201947,3,18669,14759,22579,28,22,34,FR,France
201946,3,16030,12567,19493,24,19,29,FR,France
201945,3,10138,7160,13116,15,10,20,FR,France
201944,3,7822,5010,10634,12,8,16,FR,France
201943,3,9487,6448,12526,14,9,19,FR,France
201942,3,7747,5243,10251,12,8,16,FR,France
201941,3,7122,4720,9524,11,7,15,FR,France
201940,3,8505,5784,11226,13,9,17,FR,France
201939,3,7091,4462,9720,11,7,15,FR,France
201938,3,4897,2891,6903,7,4,10,FR,France
201937,3,3172,1367,4977,5,2,8,FR,France
201936,3,2295,728,3862,3,1,5,FR,France
201935,3,1010,2,2018,2,0,4,FR,France
201934,3,1672,279,3065,3,1,5,FR,France
201933,3,1593,68,3118,2,0,4,FR,France
201932,3,1592,71,3113,2,0,4,FR,France
201931,3,2337,695,3979,4,2,6,FR,France
201930,3,1944,415,3473,3,1,5,FR,France
201929,3,2096,420,3772,3,0,6,FR,France
201928,3,1195,125,2265,2,0,4,FR,France
201927,3,2466,848,4084,4,2,6,FR,France
201926,3,1798,402,3194,3,1,5,FR,France
201925,3,1544,389,2699,2,0,4,FR,France
201924,3,876,17,1735,1,0,2,FR,France
201923,3,2004,748,3260,3,1,5,FR,France
201922,3,2181,602,3760,3,1,5,FR,France
201921,3,2585,1102,4068,4,2,6,FR,France
201920,3,2891,1202,4580,4,1,7,FR,France
201919,3,3221,1509,4933,5,2,8,FR,France
201918,3,1385,278,2492,2,0,4,FR,France
201917,3,3166,1348,4984,5,2,8,FR,France
201916,3,3842,1973,5711,6,3,9,FR,France
201915,3,5932,3669,8195,9,6,12,FR,France
201914,3,12675,9167,16183,19,14,24,FR,France
201913,3,16513,12530,20496,25,19,31,FR,France
201912,3,22184,17786,26582,34,27,41,FR,France
201911,3,31553,26556,36550,48,40,56,FR,France
201910,3,49742,43268,56216,76,66,86,FR,France
201909,3,88354,79564,97144,134,121,147,FR,France
201908,3,172604,160024,185184,262,243,281,FR,France
201907,3,307338,291220,323456,467,443,491,FR,France
201906,3,394286,376782,411790,599,572,626,FR,France
201905,3,355785,339295,372275,540,515,565,FR,France
201904,3,241090,227261,254919,366,345,387,FR,France
201903,3,147063,135890,158236,223,206,240,FR,France
201902,3,75548,67632,83464,115,103,127,FR,France
201901,3,50295,43525,57065,76,66,86,FR,France
201852,3,37903,31375,44431,58,48,68,FR,France
201851,3,39259,32977,45541,60,50,70,FR,France
201850,3,27781,22638,32924,42,34,50,FR,France
201849,3,19738,15481,23995,30,24,36,FR,France
201848,3,19501,15275,23727,30,24,36,FR,France
201847,3,15949,12105,19793,24,18,30,FR,France
201846,3,11278,7957,14599,17,12,22,FR,France
201845,3,11065,7791,14339,17,12,22,FR,France
201844,3,6586,3875,9297,10,6,14,FR,France
201843,3,6550,3988,9112,10,6,14,FR,France
201842,3,7787,5129,10445,12,8,16,FR,France
201841,3,8048,5098,10998,12,8,16,FR,France
201840,3,7409,4717,10101,11,7,15,FR,France
201839,3,7174,4235,10113,11,7,15,FR,France
201838,3,7349,4399,10299,11,7,15,FR,France
201837,3,4915,2386,7444,7,3,11,FR,France
201836,3,3215,1349,5081,5,2,8,FR,France
201835,3,1506,239,2773,2,0,4,FR,France
201834,3,1368,116,2620,2,0,4,FR,France
201833,3,1962,5,3919,3,0,6,FR,France
201832,3,1839,183,3495,3,0,6,FR,France
201831,3,2048,242,3854,3,0,6,FR,France
201830,3,1951,202,3700,3,0,6,FR,France
201829,3,1951,252,3650,3,0,6,FR,France
201828,3,1654,52,3256,3,1,5,FR,France
201827,3,3266,1145,5387,5,2,8,FR,France
201826,3,3758,1493,6023,6,3,9,FR,France
201825,3,4580,2220,6940,7,3,11,FR,France
201824,3,3223,1351,5095,5,2,8,FR,France
201823,3,1207,136,2278,2,0,4,FR,France
201822,3,3202,1330,5074,5,2,8,FR,France
201821,3,2537,763,4311,4,1,7,FR,France
201820,3,2694,967,4421,4,1,7,FR,France
201819,3,1025,0,2098,2,0,4,FR,France
201818,3,3541,1416,5666,5,2,8,FR,France
201817,3,2573,1003,4143,4,2,6,FR,France
201816,3,4818,2724,6912,7,4,10,FR,France
201815,3,16311,12168,20454,25,19,31,FR,France
201814,3,22666,18092,27240,35,28,42,FR,France
201813,3,32680,25536,39824,50,39,61,FR,France
201812,3,52040,44590,59490,79,68,90,FR,France
201811,3,65159,56506,73812,99,86,112,FR,France
201810,3,93512,83989,103035,142,128,156,FR,France
201809,3,108545,98645,118445,165,150,180,FR,France
201808,3,131870,120950,142790,201,184,218,FR,France
201807,3,141138,130177,152099,215,198,232,FR,France
201806,3,138810,128164,149456,211,195,227,FR,France
201805,3,157839,146646,169032,240,223,257,FR,France
201804,3,175483,163835,187131,267,249,285,FR,France
201803,3,178329,166640,190018,271,253,289,FR,France
201802,3,198079,185663,210495,302,283,321,FR,France
201801,3,235493,220941,250045,358,336,380,FR,France
201752,3,299114,279359,318869,459,429,489,FR,France
201751,3,229448,214366,244530,352,329,375,FR,France
201750,3,129535,118787,140283,199,183,215,FR,France
201749,3,63789,56120,71458,98,86,110,FR,France
201748,3,37568,31541,43595,58,49,67,FR,France
201747,3,24972,19923,30021,38,30,46,FR,France
201746,3,13398,9948,16848,21,16,26,FR,France
201745,3,14035,8091,19979,22,13,31,FR,France
201744,3,8544,5318,11770,13,8,18,FR,France
201743,3,7300,4402,10198,11,7,15,FR,France
201742,3,9966,6503,13429,15,10,20,FR,France
201741,3,12434,8718,16150,19,13,25,FR,France
201740,3,12725,8690,16760,20,14,26,FR,France
201739,3,14949,10534,19364,23,16,30,FR,France
201738,3,11463,7438,15488,18,12,24,FR,France
201737,3,9716,6364,13068,15,10,20,FR,France
201736,3,2815,917,4713,4,1,7,FR,France
201735,3,2794,850,4738,4,1,7,FR,France
201734,3,2497,879,4115,4,2,6,FR,France
201733,3,2406,766,4046,4,1,7,FR,France
201732,3,2667,879,4455,4,1,7,FR,France
201731,3,3256,1158,5354,5,2,8,FR,France
201730,3,3759,1299,6219,6,2,10,FR,France
201729,3,5014,1989,8039,8,3,13,FR,France
201728,3,5271,2576,7966,8,4,12,FR,France
201727,3,3924,1432,6416,6,2,10,FR,France
201726,3,3171,1166,5176,5,2,8,FR,France
201725,3,837,0,1721,1,0,2,FR,France
201724,3,1566,248,2884,2,0,4,FR,France
201723,3,1664,203,3125,3,1,5,FR,France
201722,3,1305,92,2518,2,0,4,FR,France
201721,3,971,0,2046,1,0,3,FR,France
201720,3,2686,793,4579,4,1,7,FR,France
201719,3,3461,1490,5432,5,2,8,FR,France
201718,3,2102,515,3689,3,1,5,FR,France
201717,3,2071,428,3714,3,0,6,FR,France
201716,3,1380,222,2538,2,0,4,FR,France
201715,3,479,0,1242,1,0,2,FR,France
201714,3,1110,0,2549,2,0,4,FR,France
201713,3,7594,3808,11380,12,6,18,FR,France
201712,3,8780,4834,12726,13,7,19,FR,France
201711,3,7814,4329,11299,12,7,17,FR,France
201710,3,11802,7964,15640,18,12,24,FR,France
201709,3,13111,9099,17123,20,14,26,FR,France
201708,3,29545,23136,35954,45,35,55,FR,France
201707,3,59590,49764,69416,91,76,106,FR,France
201706,3,93628,82560,104696,144,127,161,FR,France
201705,3,193677,179255,208099,297,275,319,FR,France
201704,3,256428,240618,272238,394,370,418,FR,France
201703,3,267276,251345,283207,410,386,434,FR,France
201702,3,260588,245070,276106,400,376,424,FR,France
201701,3,255535,239743,271327,392,368,416,FR,France
201652,3,224489,207799,241179,345,319,371,FR,France
201651,3,187704,172655,202753,288,265,311,FR,France
201650,3,126570,115081,138059,194,176,212,FR,France
201649,3,76390,67374,85406,117,103,131,FR,France
201648,3,40502,33949,47055,62,52,72,FR,France
201647,3,22270,17612,26928,34,27,41,FR,France
201646,3,20816,16125,25507,32,25,39,FR,France
201645,3,15957,11448,20466,24,17,31,FR,France
201644,3,15145,10357,19933,23,16,30,FR,France
201643,3,9378,5830,12926,14,9,19,FR,France
201642,3,12920,9044,16796,20,14,26,FR,France
201641,3,13909,9709,18109,21,15,27,FR,France
201640,3,13379,8969,17789,21,14,28,FR,France
201639,3,10598,6814,14382,16,10,22,FR,France
201638,3,5969,3073,8865,9,5,13,FR,France
201637,3,4065,1538,6592,6,2,10,FR,France
201636,3,2372,473,4271,4,1,7,FR,France
201635,3,3420,1350,5490,5,2,8,FR,France
201634,3,2233,0,4643,3,0,7,FR,France
201633,3,1567,0,3938,2,0,6,FR,France
201632,3,2100,93,4107,3,0,6,FR,France
201631,3,3691,0,9120,6,0,14,FR,France
201630,3,3209,644,5774,5,1,9,FR,France
201629,3,1469,0,3073,2,0,4,FR,France
201628,3,2725,357,5093,4,0,8,FR,France
201627,3,5905,2343,9467,9,4,14,FR,France
201626,3,4186,1636,6736,6,2,10,FR,France
201625,3,4611,1560,7662,7,2,12,FR,France
201624,3,4977,2404,7550,8,4,12,FR,France
201623,3,4893,2416,7370,8,4,12,FR,France
201622,3,5667,3015,8319,9,5,13,FR,France
201621,3,5603,2475,8731,9,4,14,FR,France
201620,3,3908,1679,6137,6,3,9,FR,France
201619,3,4738,2308,7168,7,3,11,FR,France
201618,3,8204,4394,12014,13,7,19,FR,France
201617,3,13385,8822,17948,21,14,28,FR,France
201616,3,25670,19632,31708,39,30,48,FR,France
201615,3,48441,39824,57058,74,61,87,FR,France
201614,3,92603,81261,103945,142,125,159,FR,France
201613,3,170654,156387,184921,262,240,284,FR,France
201612,3,272174,254338,290010,418,391,445,FR,France
201611,3,304543,286453,322633,467,439,495,FR,France
201610,3,261822,245799,277845,402,377,427,FR,France
201609,3,229943,214533,245353,353,329,377,FR,France
201608,3,195067,180874,209260,299,277,321,FR,France
201607,3,207359,193223,221495,318,296,340,FR,France
201606,3,196143,182672,209614,301,280,322,FR,France
201605,3,178963,166296,191630,275,256,294,FR,France
201604,3,148473,136591,160355,228,210,246,FR,France
201603,3,75277,66630,83924,116,103,129,FR,France
201602,3,44617,37821,51413,68,58,78,FR,France
201601,3,42263,35556,48970,65,55,75,FR,France
201553,3,24835,19106,30564,38,29,47,FR,France
201552,3,19495,14319,24671,30,22,38,FR,France
201551,3,29080,23014,35146,45,36,54,FR,France
201550,3,25043,19812,30274,39,31,47,FR,France
201549,3,21479,16686,26272,33,26,40,FR,France
201548,3,16428,12273,20583,25,19,31,FR,France
201547,3,14959,10856,19062,23,17,29,FR,France
201546,3,12599,8237,16961,20,13,27,FR,France
201545,3,13577,9192,17962,21,14,28,FR,France
201544,3,14596,10025,19167,23,16,30,FR,France
201543,3,16749,11745,21753,26,18,34,FR,France
201542,3,18675,13613,23737,29,21,37,FR,France
201541,3,13585,9830,17340,21,15,27,FR,France
201540,3,13100,9349,16851,20,14,26,FR,France
201539,3,8595,5671,11519,13,8,18,FR,France
201538,3,8402,4929,11875,13,8,18,FR,France
201537,3,8817,4089,13545,14,7,21,FR,France
201536,3,1922,440,3404,3,1,5,FR,France
201535,3,229,0,644,0,0,1,FR,France
201534,3,760,0,1618,1,0,2,FR,France
201533,3,1537,208,2866,2,0,4,FR,France
201532,3,1594,66,3122,2,0,4,FR,France
201531,3,2845,475,5215,4,0,8,FR,France
201530,3,2447,353,4541,4,1,7,FR,France
201529,3,2389,332,4446,4,1,7,FR,France
201528,3,2089,105,4073,3,0,6,FR,France
201527,3,2257,393,4121,3,0,6,FR,France
201526,3,2536,774,4298,4,1,7,FR,France
201525,3,2607,680,4534,4,1,7,FR,France
201524,3,2849,1000,4698,4,1,7,FR,France
201523,3,2702,857,4547,4,1,7,FR,France
201522,3,4262,1989,6535,7,3,11,FR,France
201521,3,5547,2875,8219,9,5,13,FR,France
201520,3,4594,2040,7148,7,3,11,FR,France
201519,3,6307,3256,9358,10,5,15,FR,France
201518,3,3664,1544,5784,6,3,9,FR,France
201517,3,6382,3523,9241,10,6,14,FR,France
201516,3,12098,7913,16283,19,13,25,FR,France
201515,3,19458,14192,24724,30,22,38,FR,France
201514,3,30940,24617,37263,48,38,58,FR,France
201513,3,49563,41986,57140,77,65,89,FR,France
201512,3,70024,61079,78969,109,95,123,FR,France
201511,3,99295,88838,109752,154,138,170,FR,France
201510,3,143931,131682,156180,223,204,242,FR,France
201509,3,238947,222902,254992,370,345,395,FR,France
201508,3,409972,388670,431274,635,602,668,FR,France
201507,3,517750,494301,541199,802,766,838,FR,France
201506,3,533317,510627,556007,827,792,862,FR,France
201505,3,457911,436964,478858,710,678,742,FR,France
201504,3,292161,275491,308831,453,427,479,FR,France
201503,3,153931,141290,166572,239,219,259,FR,France
201502,3,104096,93358,114834,161,144,178,FR,France
201501,3,70962,60505,81419,110,94,126,FR,France
201452,3,63168,52705,73631,98,82,114,FR,France
201451,3,45346,38002,52690,71,60,82,FR,France
201450,3,42182,35049,49315,66,55,77,FR,France
201449,3,33537,27281,39793,52,42,62,FR,France
201448,3,28156,21896,34416,44,34,54,FR,France
201447,3,18158,13186,23130,28,20,36,FR,France
201446,3,14764,10174,19354,23,16,30,FR,France
201445,3,16172,11449,20895,25,18,32,FR,France
201444,3,15500,10464,20536,24,16,32,FR,France
201443,3,16011,10653,21369,25,17,33,FR,France
201442,3,21651,15828,27474,34,25,43,FR,France
201441,3,22486,16295,28677,35,25,45,FR,France
201440,3,16526,11583,21469,26,18,34,FR,France
201439,3,8583,5054,12112,13,8,18,FR,France
201438,3,10567,6496,14638,16,10,22,FR,France
201437,3,7714,3780,11648,12,6,18,FR,France
201436,3,5018,1949,8087,8,3,13,FR,France
201435,3,2268,355,4181,4,1,7,FR,France
201434,3,2367,250,4484,4,1,7,FR,France
201433,3,2358,0,4875,4,0,8,FR,France
201432,3,3229,447,6011,5,1,9,FR,France
201431,3,4143,349,7937,6,0,12,FR,France
201430,3,4631,902,8360,7,1,13,FR,France
201429,3,5122,1258,8986,8,2,14,FR,France
201428,3,4145,1200,7090,6,1,11,FR,France
201427,3,4823,1997,7649,8,4,12,FR,France
201426,3,3858,1235,6481,6,2,10,FR,France
201425,3,4564,1276,7852,7,2,12,FR,France
201424,3,2007,249,3765,3,0,6,FR,France
201423,3,5164,1853,8475,8,3,13,FR,France
201422,3,6907,1856,11958,11,3,19,FR,France
201421,3,4523,1039,8007,7,2,12,FR,France
201420,3,5881,2432,9330,9,4,14,FR,France
201419,3,3588,1277,5899,6,2,10,FR,France
201418,3,4708,1654,7762,7,2,12,FR,France
201417,3,2989,625,5353,5,1,9,FR,France
201416,3,7057,3381,10733,11,5,17,FR,France
201415,3,10800,6762,14838,17,11,23,FR,France
201414,3,19217,13490,24944,30,21,39,FR,France
201413,3,21577,15435,27719,34,24,44,FR,France
201412,3,23524,17260,29788,37,27,47,FR,France
201411,3,44513,35939,53087,69,56,82,FR,France
201410,3,86105,73497,98713,134,114,154,FR,France
201409,3,147035,131889,162181,229,205,253,FR,France
201408,3,188419,171950,204888,293,267,319,FR,France
201407,3,208726,191283,226169,325,298,352,FR,France
201406,3,160403,145280,175526,250,226,274,FR,France
201405,3,120261,107176,133346,187,167,207,FR,France
201404,3,85280,74414,96146,133,116,150,FR,France
201403,3,64159,54089,74229,100,84,116,FR,France
201402,3,46850,38202,55498,73,60,86,FR,France
201401,3,35624,27451,43797,55,42,68,FR,France
201352,3,30142,22721,37563,47,35,59,FR,France
201351,3,29787,23215,36359,47,37,57,FR,France
201350,3,24055,18214,29896,38,29,47,FR,France
201349,3,18071,13058,23084,28,20,36,FR,France
201348,3,17606,12195,23017,28,20,36,FR,France
201347,3,22636,16343,28929,35,25,45,FR,France
201346,3,13340,8367,18313,21,13,29,FR,France
201345,3,10596,6057,15135,17,10,24,FR,France
201344,3,10193,5622,14764,16,9,23,FR,France
201343,3,15780,9497,22063,25,15,35,FR,France
201342,3,14830,9545,20115,23,15,31,FR,France
201341,3,12391,7265,17517,19,11,27,FR,France
201340,3,9794,5140,14448,15,8,22,FR,France
201339,3,5371,1704,9038,8,2,14,FR,France
201338,3,9324,4198,14450,15,7,23,FR,France
201337,3,5027,1752,8302,8,3,13,FR,France
201336,3,4639,1425,7853,7,2,12,FR,France
201335,3,1291,0,3112,2,0,5,FR,France
201334,3,1889,0,4912,3,0,8,FR,France
201333,3,4740,348,9132,7,0,14,FR,France
201332,3,4709,549,8869,7,0,14,FR,France
201331,3,2270,0,5811,4,0,10,FR,France
201330,3,2169,0,4630,3,0,7,FR,France
201329,3,1696,0,3558,3,0,6,FR,France
201328,3,983,0,2168,2,0,4,FR,France
201327,3,4278,1327,7229,7,2,12,FR,France
201326,3,3488,839,6137,5,1,9,FR,France
201325,3,2735,0,5826,4,0,9,FR,France
201324,3,7245,2997,11493,11,4,18,FR,France
201323,3,16094,8918,23270,25,14,36,FR,France
201322,3,7245,2923,11567,11,4,18,FR,France
201321,3,5974,2401,9547,9,3,15,FR,France
201320,3,3831,1245,6417,6,2,10,FR,France
201319,3,1166,0,2680,2,0,4,FR,France
201318,3,3415,757,6073,5,1,9,FR,France
201317,3,7941,2950,12932,12,4,20,FR,France
201316,3,9520,4758,14282,15,8,22,FR,France
201315,3,19357,13311,25403,30,21,39,FR,France
201314,3,36855,27737,45973,58,44,72,FR,France
201313,3,43236,34048,52424,68,54,82,FR,France
201312,3,60822,50414,71230,95,79,111,FR,France
201311,3,84308,72456,96160,132,113,151,FR,France
201310,3,165558,148471,182645,259,232,286,FR,France
201309,3,259984,239067,280901,407,374,440,FR,France
201308,3,351626,327537,375715,550,512,588,FR,France
201307,3,470076,443682,496470,736,695,777,FR,France
201306,3,471647,445112,498182,738,696,780,FR,France
201305,3,492026,464729,519323,770,727,813,FR,France
201304,3,391525,367182,415868,613,575,651,FR,France
201303,3,224661,207134,242188,352,325,379,FR,France
201302,3,184159,168343,199975,288,263,313,FR,France
201301,3,163491,147340,179642,256,231,281,FR,France
201252,3,159290,141978,176602,251,224,278,FR,France
201251,3,113901,99835,127967,179,157,201,FR,France
201250,3,79918,68086,91750,126,107,145,FR,France
201249,3,47537,38711,56363,75,61,89,FR,France
201248,3,43006,32863,53149,68,52,84,FR,France
201247,3,39223,29140,49306,62,46,78,FR,France
201246,3,26436,18286,34586,42,29,55,FR,France
201245,3,18893,12799,24987,30,20,40,FR,France
201244,3,13106,8784,17428,21,14,28,FR,France
201243,3,17791,11284,24298,28,18,38,FR,France
201242,3,13096,8369,17823,21,14,28,FR,France
201241,3,18675,12010,25340,29,19,39,FR,France
201240,3,17873,11545,24201,28,18,38,FR,France
201239,3,20257,14180,26334,32,22,42,FR,France
201238,3,14715,9178,20252,23,14,32,FR,France
201237,3,7775,3509,12041,12,5,19,FR,France
201236,3,6384,2420,10348,10,4,16,FR,France
201235,3,8277,2206,14348,13,3,23,FR,France
201234,3,3858,0,8641,6,0,14,FR,France
201233,3,6492,840,12144,10,1,19,FR,France
201232,3,6381,0,14034,10,0,22,FR,France
201231,3,2696,0,5763,4,0,9,FR,France
201230,3,1834,0,4194,3,0,7,FR,France
201229,3,6329,1424,11234,10,2,18,FR,France
201228,3,4628,1091,8165,7,1,13,FR,France
201227,3,4162,1487,6837,7,3,11,FR,France
201226,3,4819,1097,8541,8,2,14,FR,France
201225,3,2669,530,4808,4,1,7,FR,France
201224,3,5977,2335,9619,9,3,15,FR,France
201223,3,2361,576,4146,4,1,7,FR,France
201222,3,5772,2435,9109,9,4,14,FR,France
201221,3,3722,821,6623,6,1,11,FR,France
201220,3,2731,897,4565,4,1,7,FR,France
201219,3,3267,1317,5217,5,2,8,FR,France
201218,3,2328,569,4087,4,1,7,FR,France
201217,3,6982,2701,11263,11,4,18,FR,France
201216,3,11455,6874,16036,18,11,25,FR,France
201215,3,20437,13435,27439,32,21,43,FR,France
201214,3,36740,27799,45681,58,44,72,FR,France
201213,3,62917,50171,75663,99,79,119,FR,France
201212,3,84738,71566,97910,133,112,154,FR,France
201211,3,128945,113778,144112,203,179,227,FR,France
201210,3,174704,157337,192071,275,248,302,FR,France
201209,3,225648,206810,244486,355,325,385,FR,France
201208,3,287293,264901,309685,452,417,487,FR,France
201207,3,263557,242711,284403,415,382,448,FR,France
201206,3,175123,158942,191304,276,251,301,FR,France
201205,3,106110,92524,119696,167,146,188,FR,France
201204,3,67778,56784,78772,107,90,124,FR,France
201203,3,49440,40981,57899,78,65,91,FR,France
201202,3,40507,32652,48362,64,52,76,FR,France
201201,3,45104,35640,54568,71,56,86,FR,France
201152,3,36532,28367,44697,58,45,71,FR,France
201151,3,25835,19002,32668,41,30,52,FR,France
201150,3,24155,18145,30165,38,28,48,FR,France
201149,3,27209,20376,34042,43,32,54,FR,France
201148,3,32358,24451,40265,51,38,64,FR,France
201147,3,17627,11780,23474,28,19,37,FR,France
201146,3,22368,15730,29006,35,24,46,FR,France
201145,3,18104,11995,24213,29,19,39,FR,France
201144,3,14050,8471,19629,22,13,31,FR,France
201143,3,21522,14251,28793,34,22,46,FR,France
201142,3,16932,11363,22501,27,18,36,FR,France
201141,3,7486,4024,10948,12,7,17,FR,France
201140,3,14053,8659,19447,22,13,31,FR,France
201139,3,17021,11062,22980,27,18,36,FR,France
201138,3,14007,8465,19549,22,13,31,FR,France
201137,3,8365,4174,12556,13,6,20,FR,France
201136,3,4606,1714,7498,7,2,12,FR,France
201135,3,4178,1634,6722,7,3,11,FR,France
201134,3,3312,683,5941,5,1,9,FR,France
201133,3,2421,0,5277,4,0,9,FR,France
201132,3,2590,119,5061,4,0,8,FR,France
201131,3,2409,320,4498,4,1,7,FR,France
201130,3,3972,1395,6549,6,2,10,FR,France
201129,3,2265,717,3813,4,2,6,FR,France
201128,3,1977,255,3699,3,0,6,FR,France
201127,3,3524,551,6497,6,1,11,FR,France
201126,3,1155,0,2685,2,0,4,FR,France
201125,3,3791,1006,6576,6,2,10,FR,France
201124,3,3507,1149,5865,6,2,10,FR,France
201123,3,3406,1170,5642,5,1,9,FR,France
201122,3,3122,1125,5119,5,2,8,FR,France
201121,3,2694,769,4619,4,1,7,FR,France
201120,3,3951,1443,6459,6,2,10,FR,France
201119,3,5416,1995,8837,9,4,14,FR,France
201118,3,5306,1815,8797,8,2,14,FR,France
201117,3,2659,310,5008,4,0,8,FR,France
201116,3,5061,1988,8134,8,3,13,FR,France
201115,3,6557,3038,10076,10,4,16,FR,France
201114,3,7352,3784,10920,12,6,18,FR,France
201113,3,8749,5213,12285,14,8,20,FR,France
201112,3,12491,7845,17137,20,13,27,FR,France
201111,3,14619,10009,19229,23,16,30,FR,France
201110,3,33628,26073,41183,53,41,65,FR,France
201109,3,54522,46057,62987,86,73,99,FR,France
201108,3,78392,67885,88899,124,107,141,FR,France
201107,3,149219,134798,163640,236,213,259,FR,France
201106,3,216579,200236,232922,343,317,369,FR,France
201105,3,278192,260235,296149,440,412,468,FR,France
201104,3,278218,259626,296810,440,411,469,FR,France
201103,3,275882,257313,294451,437,408,466,FR,France
201102,3,308949,288320,329578,489,456,522,FR,France
201101,3,309933,288190,331676,490,456,524,FR,France
201052,3,228105,208046,248164,363,331,395,FR,France
201051,3,158957,142576,175338,253,227,279,FR,France
201050,3,104874,91639,118109,167,146,188,FR,France
201049,3,54971,46418,63524,88,74,102,FR,France
201048,3,36982,29304,44660,59,47,71,FR,France
201047,3,26598,20123,33073,42,32,52,FR,France
201046,3,15465,10915,20015,25,18,32,FR,France
201045,3,9040,5772,12308,14,9,19,FR,France
201044,3,15833,10255,21411,25,16,34,FR,France
201043,3,16002,11001,21003,25,17,33,FR,France
201042,3,18709,13376,24042,30,22,38,FR,France
201041,3,17352,12182,22522,28,20,36,FR,France
201040,3,18331,12824,23838,29,20,38,FR,France
201039,3,11978,7913,16043,19,13,25,FR,France
201038,3,8936,4906,12966,14,8,20,FR,France
201037,3,5318,2551,8085,8,4,12,FR,France
201036,3,4954,2058,7850,8,3,13,FR,France
201035,3,4279,1604,6954,7,3,11,FR,France
201034,3,4926,566,9286,8,1,15,FR,France
201033,3,2950,0,6507,5,0,11,FR,France
201032,3,671,0,1522,1,0,2,FR,France
201031,3,2732,509,4955,4,0,8,FR,France
201030,3,3989,1068,6910,6,1,11,FR,France
201029,3,4123,1531,6715,7,3,11,FR,France
201028,3,1209,0,2640,2,0,4,FR,France
201027,3,2494,433,4555,4,1,7,FR,France
201026,3,5808,2454,9162,9,4,14,FR,France
201025,3,8019,4395,11643,13,7,19,FR,France
201024,3,3584,1657,5511,6,3,9,FR,France
201023,3,4016,1905,6127,6,3,9,FR,France
201022,3,6251,3664,8838,10,6,14,FR,France
201021,3,3860,1636,6084,6,2,10,FR,France
201020,3,2470,442,4498,4,1,7,FR,France
201019,3,2273,636,3910,4,1,7,FR,France
201018,3,4095,1639,6551,7,3,11,FR,France
201017,3,2216,817,3615,4,2,6,FR,France
201016,3,3471,1085,5857,6,2,10,FR,France
201015,3,3990,1376,6604,6,2,10,FR,France
201014,3,6188,3191,9185,10,5,15,FR,France
201013,3,6705,3665,9745,11,6,16,FR,France
201012,3,6727,3582,9872,11,6,16,FR,France
201011,3,8692,5002,12382,14,8,20,FR,France
201010,3,8844,5465,12223,14,9,19,FR,France
201009,3,12081,7334,16828,19,11,27,FR,France
201008,3,15433,10422,20444,25,17,33,FR,France
201007,3,19690,11728,27652,31,18,44,FR,France
201006,3,27858,18883,36833,44,30,58,FR,France
201005,3,22197,17019,27375,35,27,43,FR,France
201004,3,33817,26151,41483,54,42,66,FR,France
201003,3,36236,27936,44536,58,45,71,FR,France
201002,3,40691,32891,48491,65,53,77,FR,France
201001,3,66574,56164,76984,106,89,123,FR,France
200953,3,96141,81818,110464,153,130,176,FR,France
200952,3,172872,153238,192506,275,244,306,FR,France
200951,3,247809,229140,266478,395,365,425,FR,France
200950,3,379424,355974,402874,604,567,641,FR,France
200949,3,473718,447756,499680,754,713,795,FR,France
200948,3,467551,441506,493596,744,703,785,FR,France
200947,3,378924,355752,402096,603,566,640,FR,France
200946,3,223847,203918,243776,356,324,388,FR,France
200945,3,147046,131155,162937,234,209,259,FR,France
200944,3,170231,151298,189164,271,241,301,FR,France
200943,3,131408,114883,147933,209,183,235,FR,France
200942,3,99387,84491,114283,158,134,182,FR,France
200941,3,100802,86381,115223,160,137,183,FR,France
200940,3,111587,97628,125546,178,156,200,FR,France
200939,3,121267,106153,136381,193,169,217,FR,France
200938,3,137924,121242,154606,220,193,247,FR,France
200937,3,101332,87522,115142,161,139,183,FR,France
200936,3,46024,36435,55613,73,58,88,FR,France
200935,3,31660,23669,39651,50,37,63,FR,France
200934,3,24985,17699,32271,40,28,52,FR,France
200933,3,24435,16308,32562,39,26,52,FR,France
200932,3,23151,14624,31678,37,23,51,FR,France
200931,3,30255,9818,50692,48,15,81,FR,France
200930,3,13868,7861,19875,22,12,32,FR,France
200929,3,10704,5314,16094,17,8,26,FR,France
200928,3,15516,273,30759,25,1,49,FR,France
200927,3,10354,2760,17948,16,4,28,FR,France
200926,3,9932,5257,14607,16,9,23,FR,France
200925,3,7619,4026,11212,12,6,18,FR,France
200924,3,7794,3409,12179,12,5,19,FR,France
200923,3,4342,1975,6709,7,3,11,FR,France
200922,3,6390,3020,9760,10,5,15,FR,France
200921,3,7118,3704,10532,11,6,16,FR,France
200920,3,9482,5804,13160,15,9,21,FR,France
200919,3,7538,4299,10777,12,7,17,FR,France
200918,3,9627,5121,14133,15,8,22,FR,France
200917,3,9537,5267,13807,15,8,22,FR,France
200916,3,14666,9218,20114,23,14,32,FR,France
200915,3,17533,12137,22929,28,19,37,FR,France
200914,3,26324,19150,33498,42,31,53,FR,France
200913,3,27737,20781,34693,44,33,55,FR,France
200912,3,38811,29935,47687,62,48,76,FR,France
200911,3,40410,30705,50115,64,49,79,FR,France
200910,3,53395,41943,64847,85,67,103,FR,France
200909,3,70558,57400,83716,112,91,133,FR,France
200908,3,109100,94840,123360,174,151,197,FR,France
200907,3,141531,125101,157961,225,199,251,FR,France
200906,3,276274,252759,299789,440,403,477,FR,France
200905,3,401868,375032,428704,640,597,683,FR,France
200904,3,545313,512892,577734,868,816,920,FR,France
200903,3,520957,487271,554643,829,775,883,FR,France
200902,3,287145,262869,311421,457,418,496,FR,France
200901,3,200349,180878,219820,319,288,350,FR,France
200852,3,198418,115769,281067,323,188,458,FR,France
200851,3,112588,96656,128520,184,158,210,FR,France
200850,3,51746,43319,60173,84,70,98,FR,France
200849,3,34950,27527,42373,57,45,69,FR,France
200848,3,25604,18563,32645,42,31,53,FR,France
200847,3,18706,10838,26574,30,17,43,FR,France
200846,3,10899,5461,16337,18,9,27,FR,France
200845,3,12472,7082,17862,20,11,29,FR,France
200844,3,9772,5661,13883,16,9,23,FR,France
200843,3,9345,5541,13149,15,9,21,FR,France
200842,3,9087,5572,12602,15,9,21,FR,France
200841,3,9925,5637,14213,16,9,23,FR,France
200840,3,7869,4535,11203,13,8,18,FR,France
200839,3,2195,506,3884,4,1,7,FR,France
200838,3,3679,1481,5877,6,2,10,FR,France
200837,3,2429,561,4297,4,1,7,FR,France
200836,3,2512,492,4532,4,1,7,FR,France
200835,3,1901,0,4869,3,0,8,FR,France
200834,3,2552,0,6509,4,0,10,FR,France
200833,3,7229,0,16106,12,0,26,FR,France
200832,3,4378,107,8649,7,0,14,FR,France
200831,3,3972,621,7323,6,1,11,FR,France
200830,3,3821,643,6999,6,1,11,FR,France
200829,3,2055,0,4225,3,0,7,FR,France
200828,3,3257,208,6306,5,0,10,FR,France
200827,3,2862,474,5250,5,1,9,FR,France
200826,3,897,0,2062,1,0,3,FR,France
200825,3,2006,360,3652,3,0,6,FR,France
200824,3,3217,823,5611,5,1,9,FR,France
200823,3,2906,1006,4806,5,2,8,FR,France
200822,3,1792,451,3133,3,1,5,FR,France
200821,3,3642,925,6359,6,2,10,FR,France
200820,3,6452,2790,10114,11,5,17,FR,France
200819,3,5173,1485,8861,8,2,14,FR,France
200818,3,5315,1770,8860,9,3,15,FR,France
200817,3,10150,5835,14465,17,10,24,FR,France
200816,3,11876,7054,16698,19,11,27,FR,France
200815,3,22871,16253,29489,37,26,48,FR,France
200814,3,45610,27907,63313,74,45,103,FR,France
200813,3,38600,29300,47900,63,48,78,FR,France
200812,3,53169,43299,63039,87,71,103,FR,France
200811,3,62014,50430,73598,101,82,120,FR,France
200810,3,90342,75729,104955,147,123,171,FR,France
200809,3,119696,104205,135187,195,170,220,FR,France
200808,3,198688,180749,216627,324,295,353,FR,France
200807,3,286498,264535,308461,467,431,503,FR,France
200806,3,377097,350714,403480,615,572,658,FR,France
200805,3,344050,320436,367664,561,523,599,FR,France
200804,3,290196,268193,312199,473,437,509,FR,France
200803,3,260268,233385,287151,424,380,468,FR,France
200802,3,160872,145311,176433,262,237,287,FR,France
200801,3,102562,88547,116577,167,144,190,FR,France
200752,3,86742,72295,101189,141,117,165,FR,France
200751,3,61954,51764,72144,101,84,118,FR,France
200750,3,45366,36923,53809,74,60,88,FR,France
200749,3,38351,26177,50525,63,43,83,FR,France
200748,3,48174,35418,60930,79,58,100,FR,France
200747,3,30716,23351,38081,50,38,62,FR,France
200746,3,18204,12267,24141,30,20,40,FR,France
200745,3,15521,10195,20847,25,16,34,FR,France
200744,3,13904,9072,18736,23,15,31,FR,France
200743,3,16212,10778,21646,26,17,35,FR,France
200742,3,20197,13955,26439,33,23,43,FR,France
200741,3,12987,8464,17510,21,14,28,FR,France
200740,3,13517,2983,24051,22,5,39,FR,France
200739,3,15985,7519,24451,26,12,40,FR,France
200738,3,4769,837,8701,8,2,14,FR,France
200737,3,1449,300,2598,2,0,4,FR,France
200736,3,1100,0,2424,2,0,4,FR,France
200735,3,1177,0,2872,2,0,5,FR,France
200734,3,3353,654,6052,5,1,9,FR,France
200733,3,4189,360,8018,7,1,13,FR,France
200732,3,132,0,688,0,0,1,FR,France
200731,3,1965,0,4461,3,0,7,FR,France
200730,3,2158,0,4583,4,0,8,FR,France
200729,3,3406,240,6572,6,1,11,FR,France
200728,3,1459,0,3467,2,0,5,FR,France
200727,3,1453,0,3382,2,0,5,FR,France
200726,3,157,0,513,0,0,1,FR,France
200725,3,3699,0,7778,6,0,13,FR,France
200724,3,2854,481,5227,5,1,9,FR,France
200723,3,5343,2164,8522,9,4,14,FR,France
200722,3,7689,4224,11154,13,7,19,FR,France
200721,3,4319,1659,6979,7,3,11,FR,France
200720,3,6400,2685,10115,10,4,16,FR,France
200719,3,3012,703,5321,5,1,9,FR,France
200718,3,2232,348,4116,4,1,7,FR,France
200717,3,4705,1736,7674,8,3,13,FR,France
200716,3,3817,1438,6196,6,2,10,FR,France
200715,3,4757,717,8797,8,1,15,FR,France
200714,3,11377,6957,15797,19,12,26,FR,France
200713,3,21271,13093,29449,35,22,48,FR,France
200712,3,25433,17717,33149,41,28,54,FR,France
200711,3,30764,23356,38172,50,38,62,FR,France
200710,3,49469,40368,58570,81,66,96,FR,France
200709,3,138901,117018,160784,226,190,262,FR,France
200708,3,316747,284988,348506,516,464,568,FR,France
200707,3,417698,386505,448891,681,630,732,FR,France
200706,3,500016,466668,533364,815,761,869,FR,France
200705,3,375457,346822,404092,612,565,659,FR,France
200704,3,209878,189332,230424,342,309,375,FR,France
200703,3,126161,110596,141726,206,181,231,FR,France
200702,3,82849,69493,96205,135,113,157,FR,France
200701,3,70842,58613,83071,115,95,135,FR,France
200652,3,78190,64191,92189,128,105,151,FR,France
200651,3,62734,50210,75258,103,82,124,FR,France
200650,3,35668,27280,44056,58,44,72,FR,France
200649,3,18773,13164,24382,31,22,40,FR,France
200648,3,16439,11225,21653,27,18,36,FR,France
200647,3,16104,9343,22865,26,15,37,FR,France
200646,3,14032,5590,22474,23,9,37,FR,France
200645,3,12285,7745,16825,20,13,27,FR,France
200644,3,8031,4172,11890,13,7,19,FR,France
200643,3,21157,12483,29831,35,21,49,FR,France
200642,3,16673,8249,25097,27,13,41,FR,France
200641,3,13920,9081,18759,23,15,31,FR,France
200640,3,11950,7132,16768,20,12,28,FR,France
200639,3,8945,4333,13557,15,7,23,FR,France
200638,3,2532,138,4926,4,0,8,FR,France
200637,3,1786,233,3339,3,0,6,FR,France
200636,3,1107,0,2346,2,0,4,FR,France
200635,3,2170,0,4760,4,0,8,FR,France
200634,3,1572,0,3756,3,0,7,FR,France
200633,3,0,0,0,0,0,0,FR,France
200632,3,0,0,0,0,0,0,FR,France
200631,3,1773,0,3892,3,0,6,FR,France
200630,3,665,0,1614,1,0,3,FR,France
200629,3,1339,0,3260,2,0,5,FR,France
200628,3,843,0,2245,1,0,3,FR,France
200627,3,1351,0,3031,2,0,5,FR,France
200626,3,4564,1506,7622,7,2,12,FR,France
200625,3,6259,2072,10446,10,3,17,FR,France
200624,3,4279,964,7594,7,2,12,FR,France
200623,3,4532,1489,7575,7,2,12,FR,France
200622,3,5807,2667,8947,10,5,15,FR,France
200621,3,4661,1761,7561,8,3,13,FR,France
200620,3,8859,4754,12964,15,8,22,FR,France
200619,3,5083,2011,8155,8,3,13,FR,France
200618,3,4454,1632,7276,7,2,12,FR,France
200617,3,17762,11802,23722,29,19,39,FR,France
200616,3,22096,15420,28772,36,25,47,FR,France
200615,3,26969,19631,34307,44,32,56,FR,France
200614,3,40321,31022,49620,66,51,81,FR,France
200613,3,77053,63531,90575,126,104,148,FR,France
200612,3,108004,93005,123003,177,152,202,FR,France
200611,3,122437,106388,138486,201,175,227,FR,France
200610,3,124749,109104,140394,204,178,230,FR,France
200609,3,164150,146099,182201,269,239,299,FR,France
200608,3,199088,178830,219346,326,293,359,FR,France
200607,3,243908,221071,266745,400,363,437,FR,France
200606,3,256758,235190,278326,421,386,456,FR,France
200605,3,184928,166901,202955,303,273,333,FR,France
200604,3,104620,90909,118331,171,149,193,FR,France
200603,3,66255,55727,76783,109,92,126,FR,France
200602,3,39211,31418,47004,64,51,77,FR,France
200601,3,34603,26269,42937,57,43,71,FR,France
200552,3,32132,24389,39875,53,40,66,FR,France
200551,3,40344,28397,52291,67,47,87,FR,France
200550,3,36880,28635,45125,61,47,75,FR,France
200549,3,27589,20576,34602,46,34,58,FR,France
200548,3,24860,17839,31881,41,29,53,FR,France
200547,3,26884,19810,33958,44,32,56,FR,France
200546,3,23967,17155,30779,40,29,51,FR,France
200545,3,14609,8709,20509,24,14,34,FR,France
200544,3,20481,13625,27337,34,23,45,FR,France
200543,3,18045,11916,24174,30,20,40,FR,France
200542,3,23653,15209,32097,39,25,53,FR,France
200541,3,26466,18270,34662,44,30,58,FR,France
200540,3,26647,18088,35206,44,30,58,FR,France
200539,3,23994,15381,32607,40,26,54,FR,France
200538,3,21881,13979,29783,36,23,49,FR,France
200537,3,10347,5384,15310,17,9,25,FR,France
200536,3,7082,2806,11358,12,5,19,FR,France
200535,3,2448,0,4987,4,0,8,FR,France
200534,3,5281,539,10023,9,1,17,FR,France
200533,3,2815,0,6252,5,0,11,FR,France
200532,3,1572,0,3690,3,0,6,FR,France
200531,3,3767,0,10955,6,0,18,FR,France
200530,3,2203,0,5072,4,0,9,FR,France
200529,3,3965,739,7191,7,2,12,FR,France
200528,3,1988,96,3880,3,0,6,FR,France
200527,3,2305,0,4713,4,0,8,FR,France
200526,3,4720,1385,8055,8,2,14,FR,France
200525,3,2354,0,4747,4,0,8,FR,France
200524,3,5892,2029,9755,10,4,16,FR,France
200523,3,5246,1722,8770,9,3,15,FR,France
200522,3,3935,1031,6839,6,1,11,FR,France
200521,3,4284,474,8094,7,1,13,FR,France
200520,3,7841,3611,12071,13,6,20,FR,France
200519,3,7638,3346,11930,13,6,20,FR,France
200518,3,2755,388,5122,5,1,9,FR,France
200517,3,7166,3530,10802,12,6,18,FR,France
200516,3,9741,5344,14138,16,9,23,FR,France
200515,3,14881,9018,20744,25,15,35,FR,France
200514,3,21988,14834,29142,36,24,48,FR,France
200513,3,42971,33053,52889,71,55,87,FR,France
200512,3,90040,75374,104706,149,125,173,FR,France
200511,3,183032,161407,204657,302,266,338,FR,France
200510,3,222526,199990,245062,367,330,404,FR,France
200509,3,251784,229464,274104,416,379,453,FR,France
200508,3,277423,254825,300021,458,421,495,FR,France
200507,3,459444,430026,488862,759,710,808,FR,France
200506,3,568610,536207,601013,939,885,993,FR,France
200505,3,568285,534912,601658,938,883,993,FR,France
200504,3,316856,292011,341701,523,482,564,FR,France
200503,3,154208,137061,171355,255,227,283,FR,France
200502,3,88853,75576,102130,147,125,169,FR,France
200501,3,55801,45339,66263,92,75,109,FR,France
200453,3,40695,31926,49464,68,53,83,FR,France
200452,3,32687,24316,41058,54,40,68,FR,France
200451,3,46209,36017,56401,77,60,94,FR,France
200450,3,42358,31865,52851,70,53,87,FR,France
200449,3,27092,17910,36274,45,30,60,FR,France
200448,3,30522,21236,39808,51,36,66,FR,France
200447,3,21148,13386,28910,35,22,48,FR,France
200446,3,13934,8335,19533,23,14,32,FR,France
200445,3,15658,9703,21613,26,16,36,FR,France
200444,3,23166,14852,31480,38,24,52,FR,France
200443,3,16780,10545,23015,28,18,38,FR,France
200442,3,20480,13909,27051,34,23,45,FR,France
200441,3,15852,9789,21915,26,16,36,FR,France
200440,3,25639,17291,33987,43,29,57,FR,France
200439,3,22680,13222,32138,38,22,54,FR,France
200438,3,17483,9417,25549,29,16,42,FR,France
200437,3,9103,4768,13438,15,8,22,FR,France
200436,3,7753,3596,11910,13,6,20,FR,France
200435,3,4408,775,8041,7,1,13,FR,France
200434,3,4501,610,8392,7,1,13,FR,France
200433,3,1697,0,4046,3,0,7,FR,France
200432,3,3496,0,8181,6,0,14,FR,France
200431,3,2949,20,5878,5,0,10,FR,France
200430,3,3557,642,6472,6,1,11,FR,France
200429,3,5164,1162,9166,9,2,16,FR,France
200428,3,6358,2224,10492,11,4,18,FR,France
200427,3,7486,3040,11932,12,5,19,FR,France
200426,3,7113,0,14709,12,0,25,FR,France
200425,3,3275,508,6042,5,0,10,FR,France
200424,3,6737,2394,11080,11,4,18,FR,France
200423,3,9792,807,18777,16,1,31,FR,France
200422,3,8077,3482,12672,13,5,21,FR,France
200421,3,8073,3588,12558,13,6,20,FR,France
200420,3,7885,3454,12316,13,6,20,FR,France
200419,3,7235,3101,11369,12,5,19,FR,France
200418,3,5108,1830,8386,8,3,13,FR,France
200417,3,3647,523,6771,6,1,11,FR,France
200416,3,5265,1359,9171,9,3,15,FR,France
200415,3,8272,3655,12889,14,6,22,FR,France
200414,3,15657,8888,22426,26,15,37,FR,France
200413,3,8316,4067,12565,14,7,21,FR,France
200412,3,12482,6899,18065,21,12,30,FR,France
200411,3,13964,7879,20049,23,13,33,FR,France
200410,3,22531,14164,30898,37,23,51,FR,France
200409,3,12618,7283,17953,21,12,30,FR,France
200408,3,17738,11055,24421,29,18,40,FR,France
200407,3,25484,17228,33740,42,28,56,FR,France
200406,3,27452,19505,35399,46,33,59,FR,France
200405,3,35110,25869,44351,58,43,73,FR,France
200404,3,44571,35266,53876,74,59,89,FR,France
200403,3,60482,50389,70575,100,83,117,FR,France
200402,3,95234,81407,109061,158,135,181,FR,France
200401,3,109116,84565,133667,181,140,222,FR,France
200352,3,72239,5520,138958,121,10,232,FR,France
200351,3,445464,389214,501714,744,650,838,FR,France
200350,3,522427,491781,553073,873,822,924,FR,France
200349,3,555492,524706,586278,928,877,979,FR,France
200348,3,514668,485364,543972,860,811,909,FR,France
200347,3,332927,305972,359882,556,511,601,FR,France
200346,3,146101,126840,165362,244,212,276,FR,France
200345,3,95565,80900,110230,160,135,185,FR,France
200344,3,54703,43193,66213,91,72,110,FR,France
200343,3,45834,36611,55057,77,62,92,FR,France
200342,3,39010,28885,49135,65,48,82,FR,France
200341,3,29579,21478,37680,49,35,63,FR,France
200340,3,30862,19484,42240,52,33,71,FR,France
200339,3,26592,18927,34257,44,31,57,FR,France
200338,3,14811,8777,20845,25,15,35,FR,France
200337,3,14735,7495,21975,25,13,37,FR,France
200336,3,10951,3732,18170,18,6,30,FR,France
200335,3,1504,0,3349,3,0,6,FR,France
200334,3,2194,0,4889,4,0,9,FR,France
200333,3,1504,0,3921,3,0,7,FR,France
200332,3,1619,0,4072,3,0,7,FR,France
200331,3,5164,0,10601,9,0,18,FR,France
200330,3,3183,28,6338,5,0,10,FR,France
200329,3,6801,450,13152,11,0,22,FR,France
200328,3,3975,609,7341,7,1,13,FR,France
200327,3,2293,0,4605,4,0,8,FR,France
200326,3,5333,2138,8528,9,4,14,FR,France
200325,3,2602,0,5228,4,0,8,FR,France
200324,3,8429,0,19483,14,0,32,FR,France
200323,3,4821,1479,8163,8,2,14,FR,France
200322,3,2573,158,4988,4,0,8,FR,France
200321,3,5563,2465,8661,9,4,14,FR,France
200320,3,7554,3748,11360,13,7,19,FR,France
200319,3,8325,3777,12873,14,6,22,FR,France
200318,3,12268,6392,18144,20,10,30,FR,France
200317,3,46253,36234,56272,77,60,94,FR,France
200316,3,50759,39835,61683,85,67,103,FR,France
200315,3,69269,55778,82760,116,93,139,FR,France
200314,3,70084,55374,84794,117,92,142,FR,France
200313,3,70335,56370,84300,118,95,141,FR,France
200312,3,88582,73568,103596,148,123,173,FR,France
200311,3,99729,83353,116105,167,140,194,FR,France
200310,3,121516,104361,138671,203,174,232,FR,France
200309,3,177255,151800,202710,296,253,339,FR,France
200308,3,222638,194269,251007,372,325,419,FR,France
200307,3,237104,207851,266357,396,347,445,FR,France
200306,3,206955,177973,235937,346,298,394,FR,France
200305,3,151864,125877,177851,254,211,297,FR,France
200304,3,95356,76211,114501,159,127,191,FR,France
200303,3,50983,38264,63702,85,64,106,FR,France
200302,3,31447,21706,41188,53,37,69,FR,France
200301,3,31228,19202,43254,52,32,72,FR,France
200252,3,47016,33692,60340,79,57,101,FR,France
200251,3,47629,36912,58346,80,62,98,FR,France
200250,3,35221,26217,44225,59,44,74,FR,France
200249,3,24656,16900,32412,41,28,54,FR,France
200248,3,19799,12868,26730,33,21,45,FR,France
200247,3,16449,9214,23684,28,16,40,FR,France
200246,3,12753,5779,19727,21,9,33,FR,France
200245,3,19304,8475,30133,32,14,50,FR,France
200244,3,18082,10671,25493,30,18,42,FR,France
200243,3,14326,7548,21104,24,13,35,FR,France
200242,3,13774,7800,19748,23,13,33,FR,France
200241,3,11036,5650,16422,19,10,28,FR,France
200240,3,8137,3375,12899,14,6,22,FR,France
200239,3,15989,9892,22086,27,17,37,FR,France
200238,3,7067,3299,10835,12,6,18,FR,France
200237,3,12409,4981,19837,21,9,33,FR,France
200236,3,1679,0,4072,3,0,7,FR,France
200235,3,2126,0,6301,4,0,11,FR,France
200234,3,2843,0,7483,5,0,13,FR,France
200233,3,2670,0,5462,4,0,9,FR,France
200232,3,1087,0,3003,2,0,5,FR,France
200231,3,5455,399,10511,9,1,17,FR,France
200230,3,3601,0,7836,6,0,13,FR,France
200229,3,5576,379,10773,9,0,18,FR,France
200228,3,6602,0,14289,11,0,24,FR,France
200227,3,1882,0,6151,3,0,10,FR,France
200226,3,4523,0,12320,8,0,21,FR,France
200225,3,4765,1076,8454,8,2,14,FR,France
200224,3,12063,7174,16952,20,12,28,FR,France
200223,3,15468,9806,21130,26,16,36,FR,France
200222,3,4854,1696,8012,8,3,13,FR,France
200221,3,5901,2212,9590,10,4,16,FR,France
200220,3,3803,1215,6391,6,2,10,FR,France
200219,3,6139,2598,9680,10,4,16,FR,France
200218,3,6083,2646,9520,10,4,16,FR,France
200217,3,7223,2678,11768,12,4,20,FR,France
200216,3,17762,9887,25637,30,17,43,FR,France
200215,3,21654,13662,29646,36,23,49,FR,France
200214,3,23877,15709,32045,40,26,54,FR,France
200213,3,27497,16289,38705,46,27,65,FR,France
200212,3,33510,20938,46082,56,35,77,FR,France
200211,3,40426,29171,51681,68,49,87,FR,France
200210,3,42915,24537,61293,72,41,103,FR,France
200209,3,63735,48368,79102,107,81,133,FR,France
200208,3,117204,95548,138860,197,161,233,FR,France
200207,3,170251,137065,203437,286,230,342,FR,France
200206,3,325084,296111,354057,546,497,595,FR,France
200205,3,456186,422559,489813,767,710,824,FR,France
200204,3,504715,470859,538571,848,791,905,FR,France
200203,3,383720,353019,414421,645,593,697,FR,France
200202,3,244028,217752,270304,410,366,454,FR,France
200201,3,115422,95696,135148,194,161,227,FR,France
200152,3,57999,43225,72773,98,73,123,FR,France
200151,3,45961,36017,55905,78,61,95,FR,France
200150,3,31309,22878,39740,53,39,67,FR,France
200149,3,34792,23268,46316,59,40,78,FR,France
200148,3,43283,20164,66402,73,34,112,FR,France
200147,3,27455,20021,34889,46,33,59,FR,France
200146,3,21127,14294,27960,36,24,48,FR,France
200145,3,20766,13979,27553,35,24,46,FR,France
200144,3,11410,6593,16227,19,11,27,FR,France
200143,3,23311,15652,30970,39,26,52,FR,France
200142,3,18963,11652,26274,32,20,44,FR,France
200141,3,20241,14032,26450,34,24,44,FR,France
200140,3,18113,9971,26255,31,17,45,FR,France
200139,3,25407,7785,43029,43,13,73,FR,France
200138,3,9736,4985,14487,16,8,24,FR,France
200137,3,8025,3527,12523,14,6,22,FR,France
200136,3,4663,654,8672,8,1,15,FR,France
200135,3,4399,0,9810,7,0,16,FR,France
200134,3,2990,0,6419,5,0,11,FR,France
200133,3,0,0,0,0,0,0,FR,France
200132,3,0,0,0,0,0,0,FR,France
200131,3,18999,4286,33712,32,7,57,FR,France
200130,3,2144,0,5670,4,0,10,FR,France
200129,3,2408,0,5215,4,0,9,FR,France
200128,3,3555,553,6557,6,1,11,FR,France
200127,3,4739,1122,8356,8,2,14,FR,France
200126,3,3335,466,6204,6,1,11,FR,France
200125,3,2643,527,4759,4,0,8,FR,France
200124,3,4784,2158,7410,8,4,12,FR,France
200123,3,6299,3161,9437,11,6,16,FR,France
200122,3,4544,2006,7082,8,4,12,FR,France
200121,3,8925,4094,13756,15,7,23,FR,France
200120,3,15269,8883,21655,26,15,37,FR,France
200119,3,17369,10575,24163,29,18,40,FR,France
200118,3,21043,14262,27824,36,25,47,FR,France
200117,3,25787,19109,32465,44,33,55,FR,France
200116,3,24025,16833,31217,41,29,53,FR,France
200115,3,24188,17340,31036,41,29,53,FR,France
200114,3,40429,31774,49084,68,53,83,FR,France
200113,3,48644,39517,57771,82,67,97,FR,France
200112,3,45411,35780,55042,77,61,93,FR,France
200111,3,49809,40534,59084,84,68,100,FR,France
200110,3,46649,37240,56058,79,63,95,FR,France
200109,3,58623,47346,69900,99,80,118,FR,France
200108,3,77423,63237,91609,131,107,155,FR,France
200107,3,126970,107898,146042,215,183,247,FR,France
200106,3,225969,198142,253796,382,335,429,FR,France
200105,3,278674,249486,307862,471,422,520,FR,France
200104,3,209193,189129,229257,354,320,388,FR,France
200103,3,139823,124243,155403,236,210,262,FR,France
200102,3,105356,92392,118320,178,156,200,FR,France
200101,3,98930,84599,113261,167,143,191,FR,France
200052,3,143525,124203,162847,244,211,277,FR,France
200051,3,125224,108719,141729,213,185,241,FR,France
200050,3,99177,84857,113497,169,145,193,FR,France
200049,3,74170,54196,94144,126,92,160,FR,France
200048,3,43642,34064,53220,74,58,90,FR,France
200047,3,64848,11322,118374,110,19,201,FR,France
200046,3,20598,14053,27143,35,24,46,FR,France
200045,3,25375,17229,33521,43,29,57,FR,France
200044,3,16330,9762,22898,28,17,39,FR,France
200043,3,36951,27693,46209,63,47,79,FR,France
200042,3,41200,30772,51628,70,52,88,FR,France
200041,3,40022,30939,49105,68,53,83,FR,France
200040,3,27237,19986,34488,46,34,58,FR,France
200039,3,19338,12649,26027,33,22,44,FR,France
200038,3,7417,3193,11641,13,6,20,FR,France
200037,3,2243,0,4722,4,0,8,FR,France
200036,3,2990,0,6416,5,0,11,FR,France
200035,3,5590,0,12003,10,0,21,FR,France
200034,3,5188,0,12418,9,0,21,FR,France
200033,3,1690,0,3859,3,0,7,FR,France
200032,3,1405,0,4239,2,0,7,FR,France
200031,3,2159,0,4744,4,0,8,FR,France
200030,3,218,0,783,0,0,1,FR,France
200029,3,1532,0,3751,3,0,7,FR,France
200028,3,1071,0,2881,2,0,5,FR,France
200027,3,2427,150,4704,4,0,8,FR,France
200026,3,1997,0,4996,3,0,8,FR,France
200025,3,4239,221,8257,7,0,14,FR,France
200024,3,5411,1122,9700,9,2,16,FR,France
200023,3,8757,4101,13413,15,7,23,FR,France
200022,3,4966,1694,8238,8,2,14,FR,France
200021,3,4271,1389,7153,7,2,12,FR,France
200020,3,4520,1478,7562,8,3,13,FR,France
200019,3,13867,8548,19186,24,15,33,FR,France
200018,3,5386,2261,8511,9,4,14,FR,France
200017,3,7018,1581,12455,12,3,21,FR,France
200016,3,5328,1433,9223,9,2,16,FR,France
200015,3,12020,6436,17604,20,11,29,FR,France
200014,3,10942,5691,16193,19,10,28,FR,France
200013,3,8572,3443,13701,15,6,24,FR,France
200012,3,7081,3097,11065,12,5,19,FR,France
200011,3,12172,7447,16897,21,13,29,FR,France
200010,3,9091,5450,12732,15,9,21,FR,France
200009,3,14631,9200,20062,25,16,34,FR,France
200008,3,23647,17172,30122,40,29,51,FR,France
200007,3,59173,48440,69906,101,83,119,FR,France
200006,3,146517,129961,163073,249,221,277,FR,France
200005,3,261687,239983,283391,445,408,482,FR,France
200004,3,374822,349785,399859,637,594,680,FR,France
200003,3,484233,456706,511760,824,777,871,FR,France
200002,3,521069,492185,549953,886,837,935,FR,France
200001,3,541945,511326,572564,922,870,974,FR,France
199952,3,387655,360652,414658,663,617,709,FR,France
199951,3,272075,250906,293244,465,429,501,FR,France
199950,3,181113,164571,197655,310,282,338,FR,France
199949,3,112328,99058,125598,192,169,215,FR,France
199948,3,58710,48651,68769,100,83,117,FR,France
199947,3,35912,23462,48362,61,40,82,FR,France
199946,3,8601,1503,15699,15,3,27,FR,France
199945,3,17781,10817,24745,30,18,42,FR,France
199944,3,18238,12870,23606,31,22,40,FR,France
199943,3,18135,12601,23669,31,22,40,FR,France
199942,3,19183,13258,25108,33,23,43,FR,France
199941,3,25171,18689,31653,43,32,54,FR,France
199940,3,24185,16184,32186,41,27,55,FR,France
199939,3,28553,20776,36330,49,36,62,FR,France
199938,3,12430,7759,17101,21,13,29,FR,France
199937,3,7543,4283,10803,13,7,19,FR,France
199936,3,8191,2827,13555,14,5,23,FR,France
199935,3,3334,1188,5480,6,2,10,FR,France
199934,3,7600,0,27730,13,0,47,FR,France
199933,3,9757,354,19160,17,1,33,FR,France
199932,3,7149,0,15077,12,0,26,FR,France
199931,3,2640,0,5463,5,0,10,FR,France
199930,3,1478,0,3153,3,0,6,FR,France
199929,3,3983,498,7468,7,1,13,FR,France
199928,3,3731,712,6750,6,1,11,FR,France
199927,3,5004,1597,8411,9,3,15,FR,France
199926,3,3459,699,6219,6,1,11,FR,France
199925,3,5302,2057,8547,9,3,15,FR,France
199924,3,4327,1646,7008,7,2,12,FR,France
199923,3,5370,2374,8366,9,4,14,FR,France
199922,3,4404,1643,7165,8,3,13,FR,France
199921,3,4180,1485,6875,7,2,12,FR,France
199920,3,6073,2775,9371,10,4,16,FR,France
199919,3,6241,3220,9262,11,6,16,FR,France
199918,3,3057,678,5436,5,1,9,FR,France
199917,3,2904,701,5107,5,1,9,FR,France
199916,3,7539,3360,11718,13,6,20,FR,France
199915,3,11535,6814,16256,20,12,28,FR,France
199914,3,18730,13131,24329,32,22,42,FR,France
199913,3,38453,29560,47346,66,51,81,FR,France
199912,3,58090,48072,68108,99,82,116,FR,France
199911,3,91329,78686,103972,156,134,178,FR,France
199910,3,147976,131058,164894,253,224,282,FR,France
199909,3,207450,188710,226190,355,323,387,FR,France
199908,3,313293,292280,334306,536,500,572,FR,France
199907,3,524136,496702,551570,896,849,943,FR,France
199906,3,493908,466605,521211,844,797,891,FR,France
199905,3,476884,449696,504072,815,769,861,FR,France
199904,3,368514,345131,391897,630,590,670,FR,France
199903,3,242388,224208,260568,414,383,445,FR,France
199902,3,160657,145209,176105,275,249,301,FR,France
199901,3,130133,115125,145141,222,196,248,FR,France
199853,3,107611,92301,122921,185,159,211,FR,France
199852,3,72373,61032,83714,124,105,143,FR,France
199851,3,78179,67156,89202,134,115,153,FR,France
199850,3,54775,45478,64072,94,78,110,FR,France
199849,3,33385,26332,40438,57,45,69,FR,France
199848,3,22636,16668,28604,39,29,49,FR,France
199847,3,14505,9746,19264,25,17,33,FR,France
199846,3,13804,9049,18559,24,16,32,FR,France
199845,3,13021,8113,17929,22,14,30,FR,France
199844,3,12631,7410,17852,22,13,31,FR,France
199843,3,12180,7125,17235,21,12,30,FR,France
199842,3,18885,12726,25044,32,21,43,FR,France
199841,3,24196,17506,30886,42,31,53,FR,France
199840,3,20235,14114,26356,35,25,45,FR,France
199839,3,17075,11538,22612,29,20,38,FR,France
199838,3,10837,6336,15338,19,11,27,FR,France
199837,3,6968,3227,10709,12,6,18,FR,France
199836,3,3033,580,5486,5,1,9,FR,France
199835,3,2491,0,5022,4,0,8,FR,France
199834,3,3853,589,7117,7,1,13,FR,France
199833,3,2934,0,6598,5,0,11,FR,France
199832,3,1308,0,2894,2,0,5,FR,France
199831,3,12147,0,29237,21,0,50,FR,France
199830,3,5309,1628,8990,9,3,15,FR,France
199829,3,6486,2465,10507,11,4,18,FR,France
199828,3,9577,4464,14690,16,7,25,FR,France
199827,3,12358,7158,17558,21,12,30,FR,France
199826,3,10415,6547,14283,18,11,25,FR,France
199825,3,18246,13050,23442,31,22,40,FR,France
199824,3,16263,11126,21400,28,19,37,FR,France
199823,3,8553,4911,12195,15,9,21,FR,France
199822,3,5181,2669,7693,9,5,13,FR,France
199821,3,4751,2416,7086,8,4,12,FR,France
199820,3,12129,8099,16159,21,14,28,FR,France
199819,3,24118,17906,30330,41,30,52,FR,France
199818,3,31612,24512,38712,54,42,66,FR,France
199817,3,61148,51894,70402,105,89,121,FR,France
199816,3,123195,109878,136512,211,188,234,FR,France
199815,3,171603,156715,186491,294,268,320,FR,France
199814,3,319092,298398,339786,547,512,582,FR,France
199813,3,298212,278513,317911,512,478,546,FR,France
199812,3,263585,246356,280814,452,422,482,FR,France
199811,3,220578,204894,236262,378,351,405,FR,France
199810,3,202354,186304,218404,347,319,375,FR,France
199809,3,227553,209970,245136,390,360,420,FR,France
199808,3,271362,252005,290719,465,432,498,FR,France
199807,3,190187,173694,206680,326,298,354,FR,France
199806,3,88217,76829,99605,151,131,171,FR,France
199805,3,45180,36970,53390,77,63,91,FR,France
199804,3,30005,23272,36738,51,39,63,FR,France
199803,3,23900,18221,29579,41,31,51,FR,France
199802,3,31143,23994,38292,53,41,65,FR,France
199801,3,24809,17786,31832,43,31,55,FR,France
199752,3,29039,21984,36094,50,38,62,FR,France
199751,3,34924,27737,42111,60,48,72,FR,France
199750,3,33527,26388,40666,58,46,70,FR,France
199749,3,15978,11147,20809,27,19,35,FR,France
199748,3,11507,7744,15270,20,14,26,FR,France
199747,3,11059,7151,14967,19,12,26,FR,France
199746,3,8073,4613,11533,14,8,20,FR,France
199745,3,18202,13113,23291,31,22,40,FR,France
199744,3,19770,14405,25135,34,25,43,FR,France
199743,3,16707,11945,21469,29,21,37,FR,France
199742,3,15340,10351,20329,26,17,35,FR,France
199741,3,16933,11941,21925,29,20,38,FR,France
199740,3,13292,8709,17875,23,15,31,FR,France
199739,3,10189,6279,14099,18,11,25,FR,France
199738,3,3231,1061,5401,6,2,10,FR,France
199737,3,4542,1949,7135,8,4,12,FR,France
199736,3,5131,2205,8057,9,4,14,FR,France
199735,3,1842,0,3740,3,0,6,FR,France
199734,3,3226,0,6717,6,0,12,FR,France
199733,3,1799,0,4368,3,0,7,FR,France
199732,3,2086,0,4411,4,0,8,FR,France
199731,3,1386,0,3332,2,0,5,FR,France
199730,3,2116,0,4919,4,0,9,FR,France
199729,3,1973,0,4347,3,0,7,FR,France
199728,3,1560,216,2904,3,1,5,FR,France
199727,3,2540,754,4326,4,1,7,FR,France
199726,3,5582,2699,8465,10,5,15,FR,France
199725,3,4012,1090,6934,7,2,12,FR,France
199724,3,4696,1824,7568,8,3,13,FR,France
199723,3,4709,2136,7282,8,4,12,FR,France
199722,3,2283,665,3901,4,1,7,FR,France
199721,3,2108,664,3552,4,2,6,FR,France
199720,3,3257,1519,4995,6,3,9,FR,France
199719,3,4646,2436,6856,8,4,12,FR,France
199718,3,5246,2764,7728,9,5,13,FR,France
199717,3,14236,9906,18566,24,17,31,FR,France
199716,3,12169,8111,16227,21,14,28,FR,France
199715,3,9516,6192,12840,16,10,22,FR,France
199714,3,13602,9659,17545,23,16,30,FR,France
199713,3,18032,13345,22719,31,23,39,FR,France
199712,3,17199,12707,21691,30,22,38,FR,France
199711,3,19988,15419,24557,34,26,42,FR,France
199710,3,21903,17338,26468,38,30,46,FR,France
199709,3,29860,24261,35459,51,41,61,FR,France
199708,3,55445,47857,63033,95,82,108,FR,France
199707,3,70876,62518,79234,122,108,136,FR,France
199706,3,76906,68152,85660,132,117,147,FR,France
199705,3,95900,86095,105705,165,148,182,FR,France
199704,3,96896,87079,106713,167,150,184,FR,France
199703,3,143844,131917,155771,248,227,269,FR,France
199702,3,211578,197395,225761,364,340,388,FR,France
199701,3,280440,263783,297097,483,454,512,FR,France
199652,3,388201,369211,407191,670,637,703,FR,France
199651,3,640627,617388,663866,1106,1066,1146,FR,France
199650,3,535205,514568,555842,924,888,960,FR,France
199649,3,411498,393335,429661,710,679,741,FR,France
199648,3,195568,182563,208573,338,316,360,FR,France
199647,3,71980,63619,80341,124,110,138,FR,France
199646,3,32138,26358,37918,55,45,65,FR,France
199645,3,25551,20136,30966,44,35,53,FR,France
199644,3,10753,7230,14276,19,13,25,FR,France
199643,3,12971,9311,16631,22,16,28,FR,France
199642,3,11929,8472,15386,21,15,27,FR,France
199641,3,9918,6674,13162,17,11,23,FR,France
199640,3,10765,7067,14463,19,13,25,FR,France
199639,3,8377,5183,11571,14,8,20,FR,France
199638,3,9470,5965,12975,16,10,22,FR,France
199637,3,2925,829,5021,5,1,9,FR,France
199636,3,1122,23,2221,2,0,4,FR,France
199635,3,1674,93,3255,3,0,6,FR,France
199634,3,1273,122,2424,2,0,4,FR,France
199633,3,540,0,1246,1,0,2,FR,France
199632,3,1453,176,2730,3,1,5,FR,France
199631,3,3010,752,5268,5,1,9,FR,France
199630,3,2992,706,5278,5,1,9,FR,France
199629,3,1559,144,2974,3,1,5,FR,France
199628,3,3109,541,5677,5,1,9,FR,France
199627,3,4456,1595,7317,8,3,13,FR,France
199626,3,2871,1138,4604,5,2,8,FR,France
199625,3,2308,856,3760,4,1,7,FR,France
199624,3,2490,1067,3913,4,2,6,FR,France
199623,3,2819,1262,4376,5,2,8,FR,France
199622,3,4005,1984,6026,7,4,10,FR,France
199621,3,7042,4291,9793,12,7,17,FR,France
199620,3,10619,7365,13873,18,12,24,FR,France
199619,3,11898,8065,15731,21,14,28,FR,France
199618,3,18338,13352,23324,32,23,41,FR,France
199617,3,24954,19100,30808,43,33,53,FR,France
199616,3,29313,23868,34758,51,42,60,FR,France
199615,3,51703,43644,59762,89,75,103,FR,France
199614,3,44414,36774,52054,77,64,90,FR,France
199613,3,30622,25062,36182,53,43,63,FR,France
199612,3,31818,25852,37784,55,45,65,FR,France
199611,3,24427,19499,29355,42,33,51,FR,France
199610,3,20910,16198,25622,36,28,44,FR,France
199609,3,19594,15228,23960,34,26,42,FR,France
199608,3,19046,14850,23242,33,26,40,FR,France
199607,3,23041,18338,27744,40,32,48,FR,France
199606,3,21810,17153,26467,38,30,46,FR,France
199605,3,25275,20410,30140,44,36,52,FR,France
199604,3,43359,36948,49770,75,64,86,FR,France
199603,3,54691,48016,61366,94,82,106,FR,France
199602,3,105606,96106,115106,182,166,198,FR,France
199601,3,223830,209274,238386,386,361,411,FR,France
199552,3,397122,378252,415992,688,655,721,FR,France
199551,3,749988,725434,774542,1299,1256,1342,FR,France
199550,3,604926,583100,626752,1047,1009,1085,FR,France
199549,3,375500,358200,392800,650,620,680,FR,France
199548,3,206446,193457,219435,357,335,379,FR,France
199547,3,120472,110526,130418,209,192,226,FR,France
199546,3,62380,55042,69718,108,95,121,FR,France
199545,3,29791,24523,35059,52,43,61,FR,France
199544,3,13168,9820,16516,23,17,29,FR,France
199543,3,16188,12389,19987,28,21,35,FR,France
199542,3,15178,11387,18969,26,19,33,FR,France
199541,3,14980,10851,19109,26,19,33,FR,France
199540,3,16245,11610,20880,28,20,36,FR,France
199539,3,18499,13844,23154,32,24,40,FR,France
199538,3,13123,9410,16836,23,17,29,FR,France
199537,3,4895,2666,7124,8,4,12,FR,France
199536,3,3659,1574,5744,6,2,10,FR,France
199535,3,2496,644,4348,4,1,7,FR,France
199534,3,1887,214,3560,3,0,6,FR,France
199533,3,905,0,2007,2,0,4,FR,France
199532,3,700,0,1699,1,0,3,FR,France
199531,3,1946,92,3800,3,0,6,FR,France
199530,3,1898,46,3750,3,0,6,FR,France
199529,3,2148,687,3609,4,1,7,FR,France
199528,3,3312,1430,5194,6,3,9,FR,France
199527,3,4853,2683,7023,8,4,12,FR,France
199526,3,4986,2911,7061,9,5,13,FR,France
199525,3,4571,2520,6622,8,4,12,FR,France
199524,3,8058,5054,11062,14,9,19,FR,France
199523,3,13820,9801,17839,24,17,31,FR,France
199522,3,14124,9999,18249,24,17,31,FR,France
199521,3,11931,8655,15207,21,15,27,FR,France
199520,3,18846,14311,23381,33,25,41,FR,France
199519,3,26261,21488,31034,45,37,53,FR,France
199518,3,39231,33258,45204,68,58,78,FR,France
199517,3,88640,79343,97937,153,137,169,FR,France
199516,3,140488,129439,151537,243,224,262,FR,France
199515,3,181007,169110,192904,313,292,334,FR,France
199514,3,248704,235144,262264,431,408,454,FR,France
199513,3,209839,197191,222487,363,341,385,FR,France
199512,3,122434,112497,132371,212,195,229,FR,France
199511,3,81730,73346,90114,142,127,157,FR,France
199510,3,49387,42703,56071,86,74,98,FR,France
199509,3,39696,33259,46133,69,58,80,FR,France
199508,3,38008,32225,43791,66,56,76,FR,France
199507,3,30550,25479,35621,53,44,62,FR,France
199506,3,37351,32007,42695,65,56,74,FR,France
199505,3,27876,23218,32534,48,40,56,FR,France
199504,3,27643,22818,32468,48,40,56,FR,France
199503,3,24844,20391,29297,43,35,51,FR,France
199502,3,23480,19249,27711,41,34,48,FR,France
199501,3,26556,21916,31196,46,38,54,FR,France
199452,3,22036,17495,26577,38,30,46,FR,France
199451,3,26912,21750,32074,47,38,56,FR,France
199450,3,28831,23470,34192,50,41,59,FR,France
199449,3,21161,16559,25763,37,29,45,FR,France
199448,3,18487,14456,22518,32,25,39,FR,France
199447,3,15206,11578,18834,26,20,32,FR,France
199446,3,14252,10525,17979,25,19,31,FR,France
199445,3,12152,8448,15856,21,15,27,FR,France
199444,3,11307,7688,14926,20,14,26,FR,France
199443,3,11254,8002,14506,20,14,26,FR,France
199442,3,14406,10653,18159,25,18,32,FR,France
199441,3,14073,10341,17805,24,18,30,FR,France
199440,3,15962,11850,20074,28,21,35,FR,France
199439,3,15878,11643,20113,28,21,35,FR,France
199438,3,15366,11100,19632,27,20,34,FR,France
199437,3,5949,3561,8337,10,6,14,FR,France
199436,3,2806,1133,4479,5,2,8,FR,France
199435,3,4556,2358,6754,8,4,12,FR,France
199434,3,3459,1444,5474,6,2,10,FR,France
199433,3,4272,977,7567,7,1,13,FR,France
199432,3,4786,1613,7959,8,2,14,FR,France
199431,3,5027,1580,8474,9,3,15,FR,France
199430,3,2100,520,3680,4,1,7,FR,France
199429,3,1188,0,2384,2,0,4,FR,France
199428,3,1581,316,2846,3,1,5,FR,France
199427,3,713,0,1459,1,0,2,FR,France
199426,3,990,80,1900,2,0,4,FR,France
199425,3,5431,3222,7640,9,5,13,FR,France
199424,3,6288,3723,8853,11,7,15,FR,France
199423,3,6440,1052,11828,11,2,20,FR,France
199422,3,845,0,2449,1,0,4,FR,France
199421,3,2197,395,3999,4,1,7,FR,France
199420,3,2217,852,3582,4,2,6,FR,France
199419,3,1483,406,2560,3,1,5,FR,France
199418,3,3705,1940,5470,6,3,9,FR,France
199417,3,2288,1064,3512,4,2,6,FR,France
199416,3,5156,3176,7136,9,6,12,FR,France
199415,3,6952,4678,9226,12,8,16,FR,France
199414,3,4671,2784,6558,8,5,11,FR,France
199413,3,3343,1641,5045,6,3,9,FR,France
199412,3,4305,2412,6198,7,4,10,FR,France
199411,3,5399,3327,7471,9,5,13,FR,France
199410,3,4548,2529,6567,8,4,12,FR,France
199409,3,5635,3251,8019,10,6,14,FR,France
199408,3,9539,6652,12426,17,12,22,FR,France
199407,3,14639,11188,18090,25,19,31,FR,France
199406,3,17308,13395,21221,30,23,37,FR,France
199405,3,18489,14290,22688,32,25,39,FR,France
199404,3,23712,19048,28376,41,33,49,FR,France
199403,3,29882,24817,34947,52,43,61,FR,France
199402,3,47402,41415,53389,82,72,92,FR,France
199401,3,118119,108182,128056,205,188,222,FR,France
199352,3,233137,218608,247666,406,381,431,FR,France
199351,3,377472,359792,395152,658,627,689,FR,France
199350,3,627639,607097,648181,1094,1058,1130,FR,France
199349,3,898045,873419,922671,1565,1522,1608,FR,France
199348,3,527582,507752,547412,920,885,955,FR,France
199347,3,241371,226769,255973,421,396,446,FR,France
199346,3,76034,68003,84065,133,119,147,FR,France
199345,3,32289,27022,37556,56,47,65,FR,France
199344,3,17832,14015,21649,31,24,38,FR,France
199343,3,15098,11333,18863,26,19,33,FR,France
199342,3,19187,14893,23481,33,26,40,FR,France
199341,3,18285,14384,22186,32,25,39,FR,France
199340,3,13805,10348,17262,24,18,30,FR,France
199339,3,14783,11173,18393,26,20,32,FR,France
199338,3,10492,7329,13655,18,12,24,FR,France
199337,3,7023,4503,9543,12,8,16,FR,France
199336,3,4361,2445,6277,8,5,11,FR,France
199335,3,5589,3066,8112,10,6,14,FR,France
199334,3,2984,1209,4759,5,2,8,FR,France
199333,3,3217,758,5676,6,2,10,FR,France
199332,3,3755,1051,6459,7,2,12,FR,France
199331,3,4163,1768,6558,7,3,11,FR,France
199330,3,4055,1907,6203,7,3,11,FR,France
199329,3,3714,1668,5760,6,2,10,FR,France
199328,3,1774,484,3064,3,1,5,FR,France
199327,3,2574,918,4230,4,1,7,FR,France
199326,3,3048,1450,4646,5,2,8,FR,France
199325,3,8348,5260,11436,15,10,20,FR,France
199324,3,6624,3747,9501,12,7,17,FR,France
199323,3,7424,4302,10546,13,8,18,FR,France
199322,3,3432,1849,5015,6,3,9,FR,France
199321,3,5942,3670,8214,10,6,14,FR,France
199320,3,5137,3157,7117,9,6,12,FR,France
199319,3,4593,2725,6461,8,5,11,FR,France
199318,3,5027,3075,6979,9,6,12,FR,France
199317,3,8111,5138,11084,14,9,19,FR,France
199316,3,24932,19468,30396,43,33,53,FR,France
199315,3,22181,17147,27215,39,30,48,FR,France
199314,3,38266,30865,45667,67,54,80,FR,France
199313,3,62987,54506,71468,110,95,125,FR,France
199312,3,63493,55956,71030,111,98,124,FR,France
199311,3,80548,72628,88468,140,126,154,FR,France
199310,3,127910,117688,138132,223,205,241,FR,France
199309,3,184150,171378,196922,321,299,343,FR,France
199308,3,222932,209051,236813,389,365,413,FR,France
199307,3,248494,234936,262052,433,409,457,FR,France
199306,3,286939,271830,302048,500,474,526,FR,France
199305,3,255890,241516,270264,446,421,471,FR,France
199304,3,193107,181261,204953,337,316,358,FR,France
199303,3,147854,137256,158452,258,240,276,FR,France
199302,3,90269,82164,98374,157,143,171,FR,France
199301,3,75288,67244,83332,131,117,145,FR,France
199253,3,56622,49107,64137,99,86,112,FR,France
199252,3,49588,42568,56608,87,75,99,FR,France
199251,3,41156,35024,47288,72,61,83,FR,France
199250,3,40100,34699,45501,70,61,79,FR,France
199249,3,39146,33847,44445,69,60,78,FR,France
199248,3,32392,27499,37285,57,48,66,FR,France
199247,3,26276,21797,30755,46,38,54,FR,France
199246,3,22758,18462,27054,40,32,48,FR,France
199245,3,22023,17804,26242,39,32,46,FR,France
199244,3,27619,22945,32293,48,40,56,FR,France
199243,3,24969,20704,29234,44,37,51,FR,France
199242,3,29980,25261,34699,52,44,60,FR,France
199241,3,24091,19953,28229,42,35,49,FR,France
199240,3,17593,13885,21301,31,25,37,FR,France
199239,3,13535,10301,16769,24,18,30,FR,France
199238,3,9837,7106,12568,17,12,22,FR,France
199237,3,7480,5130,9830,13,9,17,FR,France
199236,3,5155,2958,7352,9,5,13,FR,France
199235,3,6383,3687,9079,11,6,16,FR,France
199234,3,2953,922,4984,5,1,9,FR,France
199233,3,4046,1549,6543,7,3,11,FR,France
199232,3,4963,2215,7711,9,4,14,FR,France
199231,3,4233,1733,6733,7,3,11,FR,France
199230,3,3091,1145,5037,5,2,8,FR,France
199229,3,3586,1583,5589,6,2,10,FR,France
199228,3,4179,2133,6225,7,3,11,FR,France
199227,3,5568,3134,8002,10,6,14,FR,France
199226,3,5886,3229,8543,10,5,15,FR,France
199225,3,5304,2805,7803,9,5,13,FR,France
199224,3,5928,3482,8374,10,6,14,FR,France
199223,3,3914,1855,5973,7,3,11,FR,France
199222,3,4899,2641,7157,9,5,13,FR,France
199221,3,5059,2889,7229,9,5,13,FR,France
199220,3,4308,2226,6390,8,4,12,FR,France
199219,3,2982,1181,4783,5,2,8,FR,France
199218,3,3887,1777,5997,7,3,11,FR,France
199217,3,3614,1216,6012,6,2,10,FR,France
199216,3,5460,2934,7986,10,6,14,FR,France
199215,3,8642,5029,12255,15,9,21,FR,France
199214,3,11346,7536,15156,20,13,27,FR,France
199213,3,11693,8096,15290,20,14,26,FR,France
199212,3,11752,7834,15670,21,14,28,FR,France
199211,3,11689,7575,15803,20,13,27,FR,France
199210,3,19224,12971,25477,34,23,45,FR,France
199209,3,26629,20275,32983,47,36,58,FR,France
199208,3,37667,30887,44447,66,54,78,FR,France
199207,3,57312,48777,65847,100,85,115,FR,France
199206,3,112450,99989,124911,197,175,219,FR,France
199205,3,165474,151342,179606,290,265,315,FR,France
199204,3,147959,133595,162323,259,234,284,FR,France
199203,3,137893,122944,152842,241,215,267,FR,France
199202,3,185852,166558,205146,325,291,359,FR,France
199201,3,247688,222574,272802,434,390,478,FR,France
199152,3,349815,325499,374131,615,572,658,FR,France
199151,3,378413,355928,400898,666,626,706,FR,France
199150,3,198721,182878,214564,350,322,378,FR,France
199149,3,93903,82992,104814,165,146,184,FR,France
199148,3,45173,37384,52962,79,65,93,FR,France
199147,3,35691,28224,43158,63,50,76,FR,France
199146,3,23685,17531,29839,42,31,53,FR,France
199145,3,19565,13551,25579,34,23,45,FR,France
199144,3,21571,15477,27665,38,27,49,FR,France
199143,3,28842,21958,35726,51,39,63,FR,France
199142,3,27483,20385,34581,48,36,60,FR,France
199141,3,28185,20655,35715,50,37,63,FR,France
199140,3,26740,16049,37431,47,28,66,FR,France
199139,3,14373,8734,20012,25,15,35,FR,France
199138,3,7460,3700,11220,13,6,20,FR,France
199137,3,2429,434,4424,4,0,8,FR,France
199136,3,2380,0,4882,4,0,8,FR,France
199135,3,2372,0,5025,4,0,9,FR,France
199134,3,2099,0,5104,4,0,9,FR,France
199133,3,1654,0,4102,3,0,7,FR,France
199132,3,625,0,2190,1,0,4,FR,France
199131,3,2464,0,5830,4,0,10,FR,France
199130,3,2382,0,6857,4,0,12,FR,France
199129,3,3837,40,7634,7,0,14,FR,France
199128,3,3297,152,6442,6,0,12,FR,France
199127,3,3164,934,5394,6,2,10,FR,France
199126,3,6376,3324,9428,11,6,16,FR,France
199125,3,8218,4776,11660,14,8,20,FR,France
199124,3,8223,4660,11786,14,8,20,FR,France
199123,3,6801,3596,10006,12,6,18,FR,France
199122,3,6050,2682,9418,11,5,17,FR,France
199121,3,6391,3385,9397,11,6,16,FR,France
199120,3,8633,4683,12583,15,8,22,FR,France
199119,3,7785,3986,11584,14,7,21,FR,France
199118,3,10856,6457,15255,19,11,27,FR,France
199117,3,15603,10950,20256,27,19,35,FR,France
199116,3,15665,11184,20146,28,20,36,FR,France
199115,3,15062,10715,19409,26,18,34,FR,France
199114,3,27862,21583,34141,49,38,60,FR,France
199113,3,32179,25829,38529,57,46,68,FR,France
199112,3,27873,22312,33434,49,39,59,FR,France
199111,3,46186,38876,53496,81,68,94,FR,France
199110,3,88750,77784,99716,156,137,175,FR,France
199109,3,139093,124326,153860,245,219,271,FR,France
199108,3,216369,198630,234108,381,350,412,FR,France
199107,3,208836,191789,225883,367,337,397,FR,France
199106,3,134737,121280,148194,237,213,261,FR,France
199105,3,73564,62716,84412,129,110,148,FR,France
199104,3,48253,39031,57475,85,69,101,FR,France
199103,3,29382,22258,36506,52,39,65,FR,France
199102,3,29759,22044,37474,52,38,66,FR,France
199101,3,42927,33706,52148,76,60,92,FR,France
199052,3,41262,31607,50917,73,56,90,FR,France
199051,3,46924,37544,56304,83,66,100,FR,France
199050,3,44125,36137,52113,78,64,92,FR,France
199049,3,38379,30603,46155,68,54,82,FR,France
199048,3,29571,22315,36827,52,39,65,FR,France
199047,3,23358,15890,30826,41,28,54,FR,France
199046,3,20246,7930,32562,36,14,58,FR,France
199045,3,17571,11591,23551,31,20,42,FR,France
199044,3,16182,10305,22059,29,19,39,FR,France
199043,3,17579,11588,23570,31,20,42,FR,France
199042,3,13011,7875,18147,23,14,32,FR,France
199041,3,19723,13330,26116,35,24,46,FR,France
199040,3,20433,14614,26252,36,26,46,FR,France
199039,3,15618,10315,20921,28,19,37,FR,France
199038,3,11146,6197,16095,20,11,29,FR,France
199037,3,4051,1022,7080,7,2,12,FR,France
199036,3,2542,124,4960,4,0,8,FR,France
199035,3,934,0,2681,2,0,5,FR,France
199034,3,201,0,595,0,0,1,FR,France
199033,3,0,0,0,0,0,0,FR,France
199032,3,1399,0,3849,2,0,6,FR,France
199031,3,881,0,2206,2,0,4,FR,France
199030,3,425,0,1262,1,0,2,FR,France
199029,3,1077,0,2643,2,0,5,FR,France
199028,3,959,0,2252,2,0,4,FR,France
199027,3,2948,793,5103,5,1,9,FR,France
199026,3,7236,2651,11821,13,5,21,FR,France
199025,3,7879,3136,12622,14,6,22,FR,France
199024,3,5727,2460,8994,10,4,16,FR,France
199023,3,3655,1043,6267,6,1,11,FR,France
199022,3,4196,1292,7100,7,2,12,FR,France
199021,3,1004,0,2367,2,0,4,FR,France
199020,3,4506,1771,7241,8,3,13,FR,France
199019,3,5897,2440,9354,10,4,16,FR,France
199018,3,1738,141,3335,3,0,6,FR,France
199017,3,5278,2197,8359,9,4,14,FR,France
199016,3,8129,3754,12504,14,6,22,FR,France
199015,3,11707,5831,17583,21,11,31,FR,France
199014,3,12862,8177,17547,23,15,31,FR,France
199013,3,21879,15088,28670,39,27,51,FR,France
199012,3,17035,11135,22935,30,20,40,FR,France
199011,3,20018,14311,25725,35,25,45,FR,France
199010,3,16294,11045,21543,29,20,38,FR,France
199009,3,21793,15460,28126,39,28,50,FR,France
199008,3,26110,19342,32878,46,34,58,FR,France
199007,3,61742,49720,73764,109,88,130,FR,France
199006,3,399984,353345,446623,707,625,789,FR,France
199005,3,161765,146354,177176,286,259,313,FR,France
199004,3,287771,267698,307844,509,474,544,FR,France
199003,3,315466,296550,334382,558,525,591,FR,France
199002,3,345060,326087,364033,610,576,644,FR,France
199001,3,483600,460913,506287,855,815,895,FR,France
198952,3,581149,556023,606275,1035,990,1080,FR,France
198951,3,821540,793846,849234,1463,1414,1512,FR,France
198950,3,749283,723633,774933,1334,1288,1380,FR,France
198949,3,358043,340053,376033,638,606,670,FR,France
198948,3,119087,108253,129921,212,193,231,FR,France
198947,3,40963,33897,48029,73,60,86,FR,France
198946,3,23547,17952,29142,42,32,52,FR,France
198945,3,22711,16999,28423,40,30,50,FR,France
198944,3,23405,17475,29335,42,31,53,FR,France
198943,3,29549,23287,35811,53,42,64,FR,France
198942,3,39410,32172,46648,70,57,83,FR,France
198941,3,43763,35245,52281,78,63,93,FR,France
198940,3,31453,24288,38618,56,43,69,FR,France
198939,3,24622,18425,30819,44,33,55,FR,France
198938,3,18296,13483,23109,33,24,42,FR,France
198937,3,12022,8082,15962,21,14,28,FR,France
198936,3,4769,2299,7239,8,4,12,FR,France
198935,3,4661,1696,7626,8,3,13,FR,France
198934,3,6039,2185,9893,11,4,18,FR,France
198933,3,7940,3858,12022,14,7,21,FR,France
198932,3,7114,2361,11867,13,5,21,FR,France
198931,3,2721,0,5478,5,0,10,FR,France
198930,3,3168,561,5775,6,1,11,FR,France
198929,3,3909,1504,6314,7,3,11,FR,France
198928,3,1284,105,2463,2,0,4,FR,France
198927,3,3641,1350,5932,6,2,10,FR,France
198926,3,5753,2885,8621,10,5,15,FR,France
198925,3,6299,3454,9144,11,6,16,FR,France
198924,3,6337,3537,9137,11,6,16,FR,France
198923,3,11779,7984,15574,21,14,28,FR,France
198922,3,9104,4764,13444,16,8,24,FR,France
198921,3,9554,4316,14792,17,8,26,FR,France
198920,3,6093,1023,11163,11,2,20,FR,France
198919,3,0,,,0,,,FR,France
198918,3,13452,1365,25539,24,2,46,FR,France
198917,3,10949,7147,14751,19,12,26,FR,France
198916,3,10908,7494,14322,19,13,25,FR,France
198915,3,9667,6209,13125,17,11,23,FR,France
198914,3,15230,10469,19991,27,19,35,FR,France
198913,3,10564,6767,14361,19,12,26,FR,France
198912,3,13419,9542,17296,24,17,31,FR,France
198911,3,16633,12140,21126,30,22,38,FR,France
198910,3,12387,8750,16024,22,16,28,FR,France
198909,3,12895,9183,16607,23,16,30,FR,France
198908,3,19746,15258,24234,35,27,43,FR,France
198907,3,27277,21760,32794,49,39,59,FR,France
198906,3,47844,40320,55368,85,72,98,FR,France
198905,3,52840,45665,60015,94,81,107,FR,France
198904,3,54942,47750,62134,98,85,111,FR,France
198903,3,66010,58065,73955,118,104,132,FR,France
198902,3,112284,102003,122565,200,182,218,FR,France
198901,3,202266,188305,216227,360,335,385,FR,France
198852,3,467971,447033,488909,837,800,874,FR,France
198851,3,872748,846468,899028,1562,1515,1609,FR,France
198850,3,1001824,974799,1028849,1793,1745,1841,FR,France
198849,3,966523,940068,992978,1729,1682,1776,FR,France
198848,3,637811,614785,660837,1141,1100,1182,FR,France
198847,3,246062,231234,260890,440,413,467,FR,France
198846,3,92484,83160,101808,165,148,182,FR,France
198845,3,53940,46148,61732,97,83,111,FR,France
198844,3,42106,35336,48876,75,63,87,FR,France
198843,3,38252,31909,44595,68,57,79,FR,France
198842,3,45495,38467,52523,81,68,94,FR,France
198841,3,46336,39344,53328,83,70,96,FR,France
198840,3,39882,33507,46257,71,60,82,FR,France
198839,3,43730,36755,50705,78,66,90,FR,France
198838,3,35243,29367,41119,63,52,74,FR,France
198837,3,15537,11911,19163,28,22,34,FR,France
198836,3,7539,4840,10238,13,8,18,FR,France
198835,3,7797,4762,10832,14,9,19,FR,France
198834,3,4950,2005,7895,9,4,14,FR,France
198833,3,7937,3861,12013,14,7,21,FR,France
198832,3,7033,2595,11471,13,5,21,FR,France
198831,3,8758,3591,13925,16,7,25,FR,France
198830,3,4205,1224,7186,8,3,13,FR,France
198829,3,6103,1013,11193,11,2,20,FR,France
198828,3,8562,3483,13641,15,6,24,FR,France
198827,3,4690,2196,7184,8,4,12,FR,France
198826,3,7065,3905,10225,13,7,19,FR,France
198825,3,7657,4664,10650,14,9,19,FR,France
198824,3,6676,3978,9374,12,7,17,FR,France
198823,3,8695,5755,11635,16,11,21,FR,France
198822,3,11566,8282,14850,21,15,27,FR,France
198821,3,11107,7742,14472,20,14,26,FR,France
198820,3,14118,10223,18013,25,18,32,FR,France
198819,3,18260,13847,22673,33,25,41,FR,France
198818,3,20415,16281,24549,37,30,44,FR,France
198817,3,21750,17436,26064,39,31,47,FR,France
198816,3,33730,27496,39964,60,49,71,FR,France
198815,3,70616,61754,79478,126,110,142,FR,France
198814,3,123868,113211,134525,222,203,241,FR,France
198813,3,193710,181519,205901,347,325,369,FR,France
198812,3,283445,268834,298056,507,481,533,FR,France
198811,3,316175,300858,331492,566,539,593,FR,France
198810,3,235142,222004,248280,421,397,445,FR,France
198809,3,135564,125263,145865,243,225,261,FR,France
198808,3,87753,78449,97057,157,140,174,FR,France
198807,3,77099,68423,85775,138,122,154,FR,France
198806,3,69349,61502,77196,124,110,138,FR,France
198805,3,72705,64952,80458,130,116,144,FR,France
198804,3,72818,64944,80692,130,116,144,FR,France
198803,3,68869,60922,76816,123,109,137,FR,France
198802,3,59743,51907,67579,107,93,121,FR,France
198801,3,60929,52573,69285,109,94,124,FR,France
198753,3,47257,38170,56344,85,69,101,FR,France
198752,3,11935,2353,21517,21,4,38,FR,France
198751,3,47744,34266,61222,86,62,110,FR,France
198750,3,57767,50181,65353,104,90,118,FR,France
198749,3,49380,42461,56299,89,77,101,FR,France
198748,3,41871,35115,48627,75,63,87,FR,France
198747,3,29688,23465,35911,53,42,64,FR,France
198746,3,37216,30199,44233,67,54,80,FR,France
198745,3,35456,29024,41888,64,52,76,FR,France
198744,3,41024,33829,48219,74,61,87,FR,France
198743,3,46356,38370,54342,83,69,97,FR,France
198742,3,38021,30236,45806,68,54,82,FR,France
198741,3,42021,32016,52026,76,58,94,FR,France
198740,3,24641,15930,33352,44,28,60,FR,France
198739,3,32328,23548,41108,58,42,74,FR,France
198738,3,16782,11870,21694,30,21,39,FR,France
198737,3,11208,6542,15874,20,12,28,FR,France
198736,3,7906,4014,11798,14,7,21,FR,France
198735,3,6149,2970,9328,11,5,17,FR,France
198734,3,6631,2734,10528,12,5,19,FR,France
198733,3,6404,1834,10974,12,4,20,FR,France
198732,3,7215,2353,12077,13,4,22,FR,France
198731,3,8233,3655,12811,15,7,23,FR,France
198730,3,4642,1301,7983,8,2,14,FR,France
198729,3,4389,913,7865,8,2,14,FR,France
198728,3,2702,138,5266,5,0,10,FR,France
198727,3,10171,5904,14438,18,10,26,FR,France
198726,3,12341,7824,16858,22,14,30,FR,France
198725,3,23413,15490,31336,42,28,56,FR,France
198724,3,11289,7282,15296,20,13,27,FR,France
198723,3,15857,10943,20771,29,20,38,FR,France
198722,3,14887,9743,20031,27,18,36,FR,France
198721,3,17619,12649,22589,32,23,41,FR,France
198720,3,10344,6454,14234,19,12,26,FR,France
198719,3,12539,7943,17135,23,15,31,FR,France
198718,3,16095,10330,21860,29,19,39,FR,France
198717,3,21256,14850,27662,38,26,50,FR,France
198716,3,32416,25100,39732,58,45,71,FR,France
198715,3,44292,36456,52128,80,66,94,FR,France
198714,3,50642,41866,59418,91,75,107,FR,France
198713,3,62246,52749,71743,112,95,129,FR,France
198712,3,59625,50653,68597,107,91,123,FR,France
198711,3,53561,45035,62087,96,81,111,FR,France
198710,3,93067,80519,105615,167,144,190,FR,France
198709,3,147006,133519,160493,264,240,288,FR,France
198708,3,217779,202179,233379,391,363,419,FR,France
198707,3,288180,270718,305642,518,487,549,FR,France
198706,3,296702,279051,314353,533,501,565,FR,France
198705,3,236046,219483,252609,424,394,454,FR,France
198704,3,158333,143625,173041,285,259,311,FR,France
198703,3,103841,91699,115983,187,165,209,FR,France
198702,3,74213,64014,84412,133,115,151,FR,France
198701,3,69745,59207,80283,125,106,144,FR,France
198652,3,76263,64958,87568,138,118,158,FR,France
198651,3,72920,63047,82793,132,114,150,FR,France
198650,3,73413,64019,82807,133,116,150,FR,France
198649,3,56296,48229,64363,102,87,117,FR,France
198648,3,46031,38578,53484,83,70,96,FR,France
198647,3,36740,29710,43770,66,53,79,FR,France
198646,3,32134,25327,38941,58,46,70,FR,France
198645,3,38964,31382,46546,70,56,84,FR,France
198644,3,28646,22048,35244,52,40,64,FR,France
198643,3,27532,20842,34222,50,38,62,FR,France
198642,3,31815,25124,38506,57,45,69,FR,France
198641,3,32864,25939,39789,59,47,71,FR,France
198640,3,33516,26776,40256,60,48,72,FR,France
198639,3,28665,22477,34853,52,41,63,FR,France
198638,3,26615,20479,32751,48,37,59,FR,France
198637,3,15998,10802,21194,29,20,38,FR,France
198636,3,9182,4982,13382,17,9,25,FR,France
198635,3,10587,4470,16704,19,8,30,FR,France
198634,3,5762,858,10666,10,1,19,FR,France
198633,3,3115,554,5676,6,1,11,FR,France
198632,3,1027,0,2311,2,0,4,FR,France
198631,3,2247,0,4574,4,0,8,FR,France
198630,3,2346,141,4551,4,0,8,FR,France
198629,3,3654,931,6377,7,2,12,FR,France
198628,3,2327,0,5318,4,0,9,FR,France
198627,3,7529,3353,11705,14,6,22,FR,France
198626,3,8778,5106,12450,16,9,23,FR,France
198625,3,11075,6804,15346,20,12,28,FR,France
198624,3,11160,7252,15068,20,13,27,FR,France
198623,3,14372,9896,18848,26,18,34,FR,France
198622,3,9717,5594,13840,18,11,25,FR,France
198621,3,14460,9575,19345,26,17,35,FR,France
198620,3,17133,12106,22160,31,22,40,FR,France
198619,3,22177,16008,28346,40,29,51,FR,France
198618,3,31736,24115,39357,57,43,71,FR,France
198617,3,34874,27440,42308,63,50,76,FR,France
198616,3,41196,32894,49498,74,59,89,FR,France
198615,3,42659,33537,51781,77,61,93,FR,France
198614,3,49792,39728,59856,90,72,108,FR,France
198613,3,87249,63562,110936,157,114,200,FR,France
198612,3,124777,97237,152317,225,175,275,FR,France
198611,3,168146,151035,185257,303,272,334,FR,France
198610,3,257305,231225,283385,464,417,511,FR,France
198609,3,321140,296644,345636,580,536,624,FR,France
198608,3,448786,419219,478353,810,757,863,FR,France
198607,3,490723,460150,521296,886,831,941,FR,France
198606,3,439300,411764,466836,793,743,843,FR,France
198605,3,364727,339868,389586,658,613,703,FR,France
198604,3,348509,322464,374554,629,582,676,FR,France
198603,3,271539,248654,294424,490,449,531,FR,France
198602,3,178138,159344,196932,322,288,356,FR,France
198601,3,112614,96539,128689,203,174,232,FR,France
198552,3,86452,72250,100654,157,131,183,FR,France
198551,3,114666,99538,129794,208,181,235,FR,France
198550,3,86031,73604,98458,156,133,179,FR,France
198549,3,65931,55326,76536,120,101,139,FR,France
198548,3,68291,57581,79001,124,105,143,FR,France
198547,3,66177,55221,77133,120,100,140,FR,France
198546,3,70534,58788,82280,128,107,149,FR,France
198545,3,57514,47167,67861,104,85,123,FR,France
198544,3,67356,55744,78968,122,101,143,FR,France
198543,3,87402,74208,100596,158,134,182,FR,France
198542,3,76218,64604,87832,138,117,159,FR,France
198541,3,45712,36755,54669,83,67,99,FR,France
198540,3,49739,40335,59143,90,73,107,FR,France
198539,3,39819,31234,48404,72,56,88,FR,France
198538,3,27605,20614,34596,50,37,63,FR,France
198537,3,22219,15626,28812,40,28,52,FR,France
198536,3,27986,18992,36980,51,35,67,FR,France
198535,3,30215,18546,41884,55,34,76,FR,France
198534,3,40389,24786,55992,73,45,101,FR,France
198533,3,22611,8819,36403,41,16,66,FR,France
198532,3,7488,1851,13125,14,4,24,FR,France
198531,3,16958,8479,25437,31,16,46,FR,France
198530,3,11598,5507,17689,21,10,32,FR,France
198529,3,13054,6474,19634,24,12,36,FR,France
198528,3,14588,7659,21517,26,13,39,FR,France
198527,3,19670,11761,27579,36,22,50,FR,France
198526,3,18609,12637,24581,34,23,45,FR,France
198525,3,19362,12454,26270,35,22,48,FR,France
198524,3,19855,13577,26133,36,25,47,FR,France
198523,3,19373,10010,28736,35,18,52,FR,France
198522,3,24099,17190,31008,44,31,57,FR,France
198521,3,26096,19621,32571,47,35,59,FR,France
198520,3,27896,20885,34907,51,38,64,FR,France
198519,3,43154,32821,53487,78,59,97,FR,France
198518,3,40555,29935,51175,74,55,93,FR,France
198517,3,34053,24366,43740,62,44,80,FR,France
198516,3,50362,36451,64273,91,66,116,FR,France
198515,3,63881,45538,82224,116,83,149,FR,France
198514,3,134545,114400,154690,244,207,281,FR,France
198513,3,197206,176080,218332,357,319,395,FR,France
198512,3,245240,223304,267176,445,405,485,FR,France
198511,3,276205,252399,300011,501,458,544,FR,France
198510,3,353231,326279,380183,640,591,689,FR,France
198509,3,369895,341109,398681,670,618,722,FR,France
198508,3,389886,359529,420243,707,652,762,FR,France
198507,3,471852,432599,511105,855,784,926,FR,France
198506,3,565825,518011,613639,1026,939,1113,FR,France
198505,3,637302,592795,681809,1155,1074,1236,FR,France
198504,3,424937,390794,459080,770,708,832,FR,France
198503,3,213901,174689,253113,388,317,459,FR,France
198502,3,97586,80949,114223,177,147,207,FR,France
198501,3,85489,65918,105060,155,120,190,FR,France
198452,3,84830,60602,109058,154,110,198,FR,France
198451,3,101726,80242,123210,185,146,224,FR,France
198450,3,123680,101401,145959,225,184,266,FR,France
198449,3,101073,81684,120462,184,149,219,FR,France
198448,3,78620,60634,96606,143,110,176,FR,France
198447,3,72029,54274,89784,131,99,163,FR,France
198446,3,87330,67686,106974,159,123,195,FR,France
198445,3,135223,101414,169032,246,184,308,FR,France
198444,3,68422,20056,116788,125,37,213,FR,France
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment