#+TITLE: Autour du Paradoxe de Simpson #+AUTHOR: Adam Taheraly #+DATE: \daily #+LANGUAGE: fr # #+PROPERTY: header-args :eval never-export #+HTML_HEAD: #+HTML_HEAD: #+HTML_HEAD: #+HTML_HEAD: #+HTML_HEAD: #+HTML_HEAD: * Chargement des librairies R :noexport: #+begin_src R :results output :session *R* :exports both library(devtools) # Obtention des informations sur la session R library(dplyr) # Manipulation des données library(tidyverse) # Collection de packages pour la data science library(knitr) # Génération de rapports dynamique library(forcats) library(broman) # Function intéressante pour R library(RColorBrewer) # Couleur des figures library(ggplot2) # Création des figures library(orgutils) # Utilitaire orgmode library(xtable) # Jolie tableau library(kableExtra) # Création de tableau #+end_src * Mise en place des données :noexport: ** Chargement #+begin_src R :results output :session *R* :exports both simpson_data <- read.csv("Subject6_smoking.csv") #+end_src Les données sont sous la forme : | Libellé | Description | |---------+-------------------------------| | Smoker | Fume (Yes) ou non (No) | | Status | En vie (Alive) ou mort (Dead) | | Age | Age du sujet | ** Vérification Vérification du bon chargement des données en visualisant le début et la fin des données. #+begin_src R :results output :session *R* :exports both head(simpson_data) tail(simpson_data) #+end_src Vérification de la présence de données manquante. #+begin_src R :results output :session *R* :exports both na_records <- apply(simpson_data, 1, function(x) any(is.na(x))) simpson_data[na_records,] #+end_src Vérification de la classe des données et du nombre de data. #+begin_src R :results output :session *R* :exports both nrow(simpson_data) class(simpson_data$Smoker) class(simpson_data$Status) class(simpson_data$Age) #+end_src * Analyse des données ** Question 1 #+begin_src R :results output :session *R* :exports both dead_or_alive <- simpson_data%>% group_by(Smoker)%>% summarise(Number = n(), Alive = sum(Status == "Alive"), Dead = sum(Status == "Dead"), mortality = (sum(Status == "Dead")/n())*100) dead_or_alive$mortality <- round(dead_or_alive$mortality, 2) #+end_src #+begin_src R :results table :colnames yes :session *R* :exports results xtable(dead_or_alive) #+end_src #+begin_src R :results output graphics :file (org-babel-temp-file "figure" ".png") :exports both :width 600 :height 400 :session *R* mortality <- ggplot(dead_or_alive, aes(x = Smoker, y = mortality, fill = Smoker)) + geom_bar(stat = "identity") + labs(x = "Smoker", y = "Mortality rate", title = "Mortality rate by behaviour") mortality #+end_src Le résultat est surprenant car on observe un plus fort taux de mortalité chez les non-fumeur que chez les fumeur. ** Question 2 On recrée un data-frame pour ne pas interagir avec les résultats précédent. #+begin_src R :results output :session *R* :exports both simpson_data_q2 <- simpson_data simpson_data_q2$Age <- as.numeric(simpson_data_q2$Age) #+end_src On regroupe les ages en catégories #+begin_src R :results output :session *R* :exports both simpson_data_q2$Age <- cut(simpson_data_q2$Age, c(18, 34, 54, 64, 200), include.lowest = TRUE, labels = c("18-34", "35-54", "55-64", "plus de 65")) table(simpson_data_q2$Age) #+end_src #+begin_src R :results output :session *R* :exports both dead_or_alive2 <- simpson_data_q2%>% group_by(Smoker, Age)%>% summarise(Number = n(), Alive = sum(Status == "Alive"), Dead = sum(Status == "Dead"))%>% ungroup()%>% group_by(Smoker)%>% mutate(mortality = (Dead/sum(Number))*100) dead_or_alive$mortality <- round(dead_or_alive$mortality, 2) #+end_src #+begin_src R :results table :colnames yes :session *R* :exports results xtable(dead_or_alive2) #+end_src #+begin_src R :results output graphics :file (org-babel-temp-file "figure" ".png") :exports both :width 600 :height 400 :session *R* mortality2 <- ggplot(dead_or_alive2, aes(x = Smoker, y = mortality, fill = Age))+ geom_bar(stat = "identity", position = position_dodge()) + labs(x = "Smoker", y = "Mortality rate", title = "Mortality rate by behaviour") mortality2 #+end_src On observe une diminution du taux de mortalité chez les moins de 65 ans parmis les non fumeur par rapport au fumeur. Cependant, chez les plus de 65 ans, la tendence s'inverse avec un plus grande mortalité chez les fumeurs par rappor au non fumeur (3 fois plus). L'inversion de ces proportions peut s'expliquer par un enrichissement en personnes agées chez les non fumeurs. ** Question 3 On recrée un data-frame pour ne pas interagir avec les résultats précédent. #+begin_src R :results output :session *R* :exports both simpson_data_q3 <- simpson_data simpson_data_q3$Death <- factor(simpson_data_q3$Status) simpson_data_q3$Death <- fct_recode(simpson_data_q3$Death, "1"="Alive", "0"="Dead") simpson_data_q3$Death <- as.numeric(as.character(simpson_data_q3$Death)) simpson_data_q3$Age <- as.numeric(as.character(simpson_data_q3$Age)) #+end_src #+begin_src R :results output :session *R* :exports both head(simpson_data_q3) #+end_src #+begin_src R :results output :session *R* :exports both reg_log_total <- ggplot(simpson_data_q3, aes(x=Age,y=Death)) + geom_point(alpha=.3,size=3) + theme_bw() + geom_smooth(method = "glm", method.args = list(family = "binomial"),fullrange = TRUE) reg_log_fumeur <- ggplot(simpson_data_q3[simpson_data_q3$Smoker == "Yes",], aes(x=Age,y=Death)) + geom_point(alpha=.3,size=3) + theme_bw() + geom_smooth(method = "glm", method.args = list(family = "binomial"),fullrange = TRUE) reg_log_non_fumeur <- ggplot(simpson_data_q3[simpson_data_q3$Smoker == "No",], aes(x=Age,y=Death)) + geom_point(alpha=.3,size=3) + theme_bw() + geom_smooth(method = "glm", method.args = list(family = "binomial"),fullrange = TRUE) #+end_src #+begin_src R :results output graphics :file (org-babel-temp-file "figure" ".png") :exports both :width 600 :height 400 :session *R* reg_log_total #+end_src #+begin_src R :results output graphics :file (org-babel-temp-file "figure" ".png") :exports both :width 600 :height 400 :session *R* reg_log_fumeur #+end_src #+begin_src R :results output graphics :file (org-babel-temp-file "figure" ".png") :exports both :width 600 :height 400 :session *R* reg_log_non_fumeur #+end_src Passer 60 ans, bien que les courbes soient semblable, on voit que l'intervalle de confiance chez les fumeurs est plus grands que chez les non fumeur. Cela s'explique bien par une plus faible population de personne agée chez les fumeurs. Etant donné l'augmentation de la mortalités observé dans la question 2, on peut conclure à une mortalité supérieur dans le cas d'une consommation de tabac chez les moins de 65 ans. Cependant, il est necessaire de faire une analyse avec des populations plus homogènes chez les + de 65 ans.