Copier/coller de mon programme réalisé sur Rstudio vers -> exercice_fr.Rmd

parent a0189610
--- ---
title: "Votre titre" title: 'Sujet 6 : Autour du Paradoxe de Simpson'
author: "Votre nom" author: "Leharanger Maxime"
date: "La date du jour" date: "23/12/2020"
output: html_document output:
pdf_document: default
word_document: default
html_document: default
--- ---
```{r}
library(formatR)
library(knitr)
library(markdown)
library(rmarkdown)
```
```{r setup, include=FALSE} ```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE) 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"))
``` ```
## Quelques explications ## 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.)
```
Ceci est un document R markdown que vous pouvez aisément exporter au format HTML, PDF, et MS Word. Pour plus de détails sur R Markdown consultez <http://rmarkdown.rstudio.com>. ### Résumé des données des fumeuses
Lorsque vous cliquerez sur le bouton **Knit** ce document sera compilé afin de ré-exécuter le code R et d'inclure les résultats dans un document final. Comme nous vous l'avons montré dans la vidéo, on inclue du code R de la façon suivante: ```{r}
summary(smoker)
```{r cars}
summary(cars)
``` ```
Et on peut aussi aisément inclure des figures. Par exemple: ### Résumé des données des personnes non-fumeuses
```{r pressure, echo=FALSE} ```{r}
plot(pressure) summary(nosmoker)
``` ```
Vous remarquerez le paramètre `echo = FALSE` qui indique que le code ne doit pas apparaître dans la version finale du document. Nous vous recommandons dans le cadre de ce MOOC de ne pas utiliser ce paramètre car l'objectif est que vos analyses de données soient parfaitement transparentes pour être reproductibles. ## 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é.
Comme les résultats ne sont pas stockés dans les fichiers Rmd, pour faciliter la relecture de vos analyses par d'autres personnes, vous aurez donc intérêt à générer un HTML ou un PDF et à le commiter.
Maintenant, à vous de jouer! Vous pouvez effacer toutes ces informations et les remplacer par votre document computationnel.
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