From a01896100abff8039798b4ef478b2aaa57df25ea Mon Sep 17 00:00:00 2001 From: 29b56e5e7dc0e38f035da79740a0812b <29b56e5e7dc0e38f035da79740a0812b@app-learninglab.inria.fr> Date: Wed, 10 Mar 2021 14:23:43 +0000 Subject: [PATCH] =?UTF-8?q?T=C3=A9l=C3=A9chargement=20du=20fichier=20RStud?= =?UTF-8?q?io=20qui=20a=20permis=20de=20g=C3=A9n=C3=A9rer=20le=20PDF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sujet_6_Paradoxe_Simpson.Rmd" | 307 ++++++++++++++++++ 1 file changed, 307 insertions(+) create mode 100644 "module3/Travail pratique \303\251valu\303\251 par les pairs/Sujet_6_Paradoxe_Simpson.Rmd" diff --git "a/module3/Travail pratique \303\251valu\303\251 par les pairs/Sujet_6_Paradoxe_Simpson.Rmd" "b/module3/Travail pratique \303\251valu\303\251 par les pairs/Sujet_6_Paradoxe_Simpson.Rmd" new file mode 100644 index 0000000..b9394b7 --- /dev/null +++ "b/module3/Travail pratique \303\251valu\303\251 par les pairs/Sujet_6_Paradoxe_Simpson.Rmd" @@ -0,0 +1,307 @@ +--- +title: 'Sujet 6 : Autour du Paradoxe de Simpson' +author: "Leharanger Maxime" +date: "23/12/2020" +output: + pdf_document: default + word_document: default + html_document: default +--- +```{r} +library(formatR) +library(knitr) +library(markdown) +library(rmarkdown) +``` + +```{r setup, include=FALSE} +knitr::opts_chunk$set(echo = TRUE,tidy.opts=list(width.cutoff=55), tidy=TRUE) +``` + + +# Question 1 + +```{r include=FALSE, linewidth=60} +smp <- read.csv2("C:/Users/Maxime Leharanger/Desktop/ED 585/Mooc Recherche reproductible principes méthodologiques pour une science transparente/Subject6_smoking.csv") +``` + +## Résumé du fichier "Sujet 6 : Autour du Paradoxe de Simpson" + +```{r} +summary(smp) +``` + +## Calcul du taux de mortalité pour chaque groupe## +### Sélection des données# + +```{r} +smp$X.Age. <- as.numeric(as.character(smp$X.Age.)) +#Convertion des données "AGE" en variable numérique +smoker <- subset(smp, smp$X.Smoker.== "Yes")#Sélection de la variable Fumeuse +nosmoker <- subset(smp, smp$X.Smoker.== "No")#Sélection de la variable non Fumeuse +summary(smoker)#Résumé des données des fumeuses +summary(nosmoker)#Résumé des données des non-fumeuses +``` + +### Assignation du taux de mortalité chez les fumeuses à la variable "mortalité.smoker" + +```{r} +mortalite.smoker <- sum(smoker$X.Status.[] == "Dead") / (sum(sum(smoker$X.Status.[] == "Alive"),sum(smoker$X.Status.[] == "Dead"))) +``` + +### Assignation du taux de mortalité chez les non-fumeuses à la variable "mortalité.nosmoker" + +```{r message=TRUE} +mortalite.nosmoker <- sum(nosmoker$X.Status.[] == "Dead") / (sum(sum(nosmoker$X.Status.[] == "Alive"),sum(nosmoker$X.Status.[] == "Dead"))) +``` + +### Taux de mortalité chez les fumeuses + +```{r} +mortalite.smoker +``` + +### Taux de mortalité chez les non-fumeuses + +```{r} +mortalite.nosmoker +``` + +## Représentation graphique des effectifs## + +```{r} +barplot(table(smp$X.Status.,smp$X.Smoker.), + main = "Nombre de personne en vie/décédé en fonction \n du groupe fumeuse/non-fumeuse", + beside= TRUE, + xlab = "Fumeuse", + ylab = "Nombre de personne",legend.text = c("Alive","Dead"),col = c("white", "black")) +``` + +## Calcul de l'intervalle de confiance## +### Installation des packages + +```{r} +library(binom) +``` + +### Intervalles de confiance chez les fumeuses + +```{r} +binom.confint(sum(smoker$X.Status.[] == "Dead"),sum(sum(smoker$X.Status.[] == "Alive"),sum(smoker$X.Status.[] == "Dead")),method="exact") +``` + +Le taux de mortalité chez le groupe "Fumeuse" est de 0.2388316 et est bien compris entre l'intervalle de confiance [0.2047323;0.2756061]. + +### Intervalles de confiance chez les non-fumeuses + +```{r} +binom.confint(sum(nosmoker$X.Status.[] == "Dead"),sum(sum(nosmoker$X.Status.[] == "Alive"),sum(nosmoker$X.Status.[] == "Dead")),method="exact") +``` +Le taux de mortalité chez le groupe "Non-fumeuse" est de 0.3142077 et est bien compris entre l'intervalle de confiance [0.2807031;0.3492176]. + +## En quoi ce résultat est-il surprenant ? + +Ce résultat est surprenant car je m'attendais à ce que le taux de mortalité soit plus élevé chez le groupe "fumeuse" par rapport au groupe "non-fumeuse". Dans ce cas-là c'est l'inverse. + + +# Question 2 + +## Sélection des données + +### Transformation de la variable "Age" en données numériques + +```{r} +smp$X.Age. <- as.numeric(as.character(smp$X.Age.)) +``` + +### Classifaction de la variable "Age" en plusieurs classe d'âge + +```{r} +smp$X.Age. <- cut(smp$X.Age., breaks = c(18, 34, 54, 64, 99), include.lowest = TRUE) +``` + +### Sélection de la variable "Fumeuse" en fonction de son état de vie et de sa classe d'âge + +```{r} +smoker <- subset(smp, smp$X.Smoker.== "Yes", X.Status. & X.Age.) +``` + +### Sélection de la variable "non Fumeuse" en fonction de son état de vie et de sa classe d'âge + +```{r} +nosmoker <- subset(smp, smp$X.Smoker.== "No",X.Status. & X.Age.) +``` + +### Résumé des données des fumeuses + +```{r} +summary(smoker) + +``` + +### Résumé des données des personnes non-fumeuses + +```{r} +summary(nosmoker) +``` + +## Calcul du taux de mortalité + +### Assignation du taux (en % arrondi au centième) de mortalité chez le groupe des personnes fumeuses en fonction de chaque classe d'âge + +```{r} +Mort.smk <- c(round(sum(smoker$X.Status.[] == "Dead" & smoker$X.Age.[]== "[18,34]")/ (sum(sum(smoker$X.Status.[] == "Alive" & smoker$X.Age.[]== "[18,34]"),sum(smoker$X.Status.[] == "Dead" & smoker$X.Age.[]== "[18,34]")))*100,2), +round(sum(smoker$X.Status.[] == "Dead" & smoker$X.Age.[]== "(34,54]")/ (sum(sum(smoker$X.Status.[] == "Alive" & smoker$X.Age.[]== "(34,54]"),sum(smoker$X.Status.[] == "Dead" & smoker$X.Age.[]== "(34,54]")))*100,2), +round(sum(smoker$X.Status.[] == "Dead" & smoker$X.Age.[]== "(54,64]")/ (sum(sum(smoker$X.Status.[] == "Alive" & smoker$X.Age.[]== "(54,64]"),sum(smoker$X.Status.[] == "Dead" & smoker$X.Age.[]== "(54,64]")))*100,2), +round(sum(smoker$X.Status.[] == "Dead" & smoker$X.Age.[]== "(64,99]")/ (sum(sum(smoker$X.Status.[] == "Alive" & smoker$X.Age.[]== "(64,99]"),sum(smoker$X.Status.[] == "Dead" & smoker$X.Age.[]== "(64,99]")))*100,2)) +``` + +### Assignation du taux de mortalité (en % arrondi au centième) chez le groupe des personnes non-fumeuses en fonction de chaque classe d'âge + +```{r} +Mort.nosmk <- c(round(sum(nosmoker$X.Status.[] == "Dead" & nosmoker$X.Age.[]== "[18,34]")/ (sum(sum(nosmoker$X.Status.[] == "Alive" & nosmoker$X.Age.[]== "[18,34]"),sum(nosmoker$X.Status.[] == "Dead" & nosmoker$X.Age.[]== "[18,34]")))*100,2), +round(sum(nosmoker$X.Status.[] == "Dead" & nosmoker$X.Age.[]== "(34,54]")/ (sum(sum(nosmoker$X.Status.[] == "Alive" & nosmoker$X.Age.[]== "(34,54]"),sum(nosmoker$X.Status.[] == "Dead" & nosmoker$X.Age.[]== "(34,54]")))*100,2), +round(sum(nosmoker$X.Status.[] == "Dead" & nosmoker$X.Age.[]== "(54,64]")/ (sum(sum(nosmoker$X.Status.[] == "Alive" & nosmoker$X.Age.[]== "(54,64]"),sum(nosmoker$X.Status.[] == "Dead" & nosmoker$X.Age.[]== "(54,64]")))*100,2), +round(sum(nosmoker$X.Status.[] == "Dead" & nosmoker$X.Age.[]== "(64,99]")/ (sum(sum(nosmoker$X.Status.[] == "Alive" & nosmoker$X.Age.[]== "(64,99]"),sum(nosmoker$X.Status.[] == "Dead" & nosmoker$X.Age.[]== "(64,99]")))*100,2)) +``` + +### Tableau récapitulatif du taux (en % arrondi au centième) de mortalité entre les groupes en fonction des classes d'âge + +```{r} +Tx.mortalite <- data.frame(Mort.nosmk,summary(smoker$X.Age.), Mort.smk,summary(nosmoker$X.Age.))#Création du tableau récapitulatif +rownames(Tx.mortalite) <- c("[18-34]","[34-54]","[55-64]","[65-99]") +colnames(Tx.mortalite) <- c("Pourcentage de mortalité chez les fumeuses","Nombre de fumeuses","Pourcentage de mortalité chez les non-fumeuses","Nombre de non-fumeuses") +Tx.mortalite#Affichage tableau +``` + +## En quoi ce résultat est-il surprenant ? + +Ce résultat est surprenant car je m'attendais à ce que les taux de mortalités chez les fumeuses soient plus fort par rapport au groupe non-fumeuse à chaque classe d'âge. Ici, c'est l'inverse. Cependant on remarque une disproportion de l'échantillon en fonction de la classe d'âge. En effet, la mortalité augmente avec l'âge, et il y a moins de personnes âgées dans le groupe "fumeuses" (49). Nous pouvons nous demander si le biais de la mortalité "naturelle" ne permet pas dans ce cas là, d'observer l'effet du tabagisme sur la mortalité des femmes fumeuses. Les deux groupes auraient dû avoir le même nombre de personnes. + +## Représentation graphique des effectifs + +```{r} +barplot(table(smoker$X.Status.,smoker$X.Age.), + main = "Nombre de personne en vie/décédé en fonction de sa classe \n d'âge chez les personnes fumeuses", + beside= TRUE, + xlab = "Classe d'âge", ylab = "Nombre de personne", legend.text = c("Alive","Dead"), col = c("white", "black")) + +barplot(table(nosmoker$X.Status.,nosmoker$X.Age.), + main = "Nombre de personne en vie/décédé en fonction de sa classe \n d'âge chez les personnes non-fumeuses", + beside= TRUE, + xlab = "Classe d'âge",ylab = "Nombre de personne",legend.text =c("Alive","Dead"),col=c("white","black")) +``` + + Dans le premier tableau, nous observons une proportion de personnes fumeuses plus grande pour les classes d'âges plus jeune ([18,34],(34,54])) et qui sont moins à risque de mortalité. +A l'inverse dans le deuxième tableau la forte proportion de personnes non-fumeuses dans la dernière classe d'âge (64,99] permet d'observer une mortalité beaucoup plus grande. + +# Question 3 + +## Gestion des données + +```{r include=FALSE} +smp <- read.csv2("C:/Users/Maxime Leharanger/Desktop/ED 585/Mooc Recherche reproductible principes méthodologiques pour une science transparente/Subject6_smoking.csv") +``` +```{r} +summary(smp)#Résumé du fichier +smp$X.Age. <- as.numeric(as.character(smp$X.Age.)) +#Transformation de la variable Age en données numériques +smp$X.Status. <- factor(smp$X.Status., labels = c("0","1")) +#"0" signifie que les individus sont en vie et "1" signifie qu'ils sont morts +colnames(smp) <- c("X.Smoker.","DEATH","AGE") +#Dénomination des variables selon la consigne +smoker <- data.frame(subset(smp, smp$X.Smoker.== "Yes")) +#Sélection de la variable Fumeuse +nosmoker <- data.frame(subset(smp, smp$X.Smoker.== "No")) +#Sélection de la variable Non-Fumeuse +``` + + +## Régression Logistique + +### Vérifications des paramètres de la régression logistique chez les personnes fumeuses : + +```{r} +summary(smoker); +``` + +VA à expliquer = 582; VA explicatives : age(1) Status(1) +Il faut au moins 5-10 évènements par VA explicative; + +```{r} +(1+1)* 10 +(1+1)* 5 +``` + +20 < 582, il faut au minimum 20 personnes pour la variable à expliquer et nous en avons 582 -> paramètre accepté +10 < 582, il faut au minimum 10 personnes pour la variable à expliquer et nous en avons 582 -> paramètre accepté + +### Vérifications des paramètres de la régression logistique chez les personnes non-fumeuses : + +```{r} +summary(nosmoker) +``` + +VA à expliquer = 732; VA explicatives : age(1) Status(1); +Il faut au moins 5-10 évènements par VA explicative; + +```{r} +(1+1) * 10 +(1+1)* 5 +``` + +20 < 732, il faut au minimum 20 personnes pour la variable à expliquer et nous en avons 732 -> paramètre accepté +10 < 732, il faut au minimum 10 personnes pour la variable à expliquer et nous en avons 732 -> paramètre accepté + +### Calcul de la régression logistique chez les fumeuses + +```{r} +reg.smoker <- glm(smoker$DEATH~smoker$AGE, data=smoker, family=binomial(link=logit)) +summary(reg.smoker) +``` + +L'âge chez les personnes fumeuses sont statistiquement associés à la mortalité (<2e-16 ***). Lorsque l'âge augmente de 1 chez les fumeurs, le niveau de mortalité augmente de plus 8%. + +```{r} +x =smoker$AGE +y = as.numeric(as.character(smoker$DEATH)) +#Convertion de la variable "DEATH" en variable numérique +COEFF= coef(reg.smoker) +#Assignation des coefficients de la régression logistique +logit_ypreditsmoker = COEFF[2]*x + COEFF[1] +ypreditsmoker=exp(logit_ypreditsmoker)/(1 + exp(logit_ypreditsmoker)) +# transfo inverse de logit +plot(x,y, ylim = c(0,1)) +points(x,ypreditsmoker, col="red") +#Représentation de la régression logistique + +``` + +### Calcul de la régression logistique chez les non-fumeuses + +```{r} +reg.nosmoker <- glm(nosmoker$DEATH~nosmoker$AGE, data=nosmoker, family="binomial") +summary(reg.nosmoker) +``` + +L'âge chez les personnes non-fumeuses sont statistiquement associés à la mortalité (<2e-16 ***). Lorsque l'âge augmente de 1 chez les non-fumeurs, le niveau de mortalité augmente plus de 10%. + +```{r} +x2 = nosmoker$AGE +y2 = as.numeric(as.character(nosmoker$DEATH)) +COEFF2= coef(reg.nosmoker) +logit_ypreditnosmoker = COEFF2[2]*x2 + COEFF2[1] +ypreditnosmoker = exp(logit_ypreditnosmoker)/(1 + exp(logit_ypreditnosmoker)) +plot(x2,y2, ylim = c(0,1)) +points(x2,ypreditnosmoker, col="red") +``` + +## Ces régressions vous permettent-elles de conclure sur la nocivité du tabagisme ? + +Ces régressions ne permettent pas de conclure sur la nocivité du tabagisme. En effet, ces régressions permettent de quantifier le lien entre la variable "DEATH" et la variable "AGE", c'est à dire que plus les sujets sont agés plus le niveau de mortalité augmente. + +Pour étudier l'effet du tabagisme sur la mortalité, il faut prendre en compte l'effet de l'âge sur le taux de mortalité. La disproportion des classes d'âge entraine un biais d'interprétation qui ne permet pas de conclure sur l'effet du tabagisme sur la mortalité. + + + + -- 2.18.1