diff --git "a/Exercice \303\251valuer par les pairs/code_exo_pair" "b/Exercice \303\251valuer par les pairs/code_exo_pair" new file mode 100644 index 0000000000000000000000000000000000000000..082ee90cbd8c96a77ba998887b53133ed17cc3f5 --- /dev/null +++ "b/Exercice \303\251valuer par les pairs/code_exo_pair" @@ -0,0 +1,193 @@ + +## Orignes des données +[Extrait du Sujet 6: Autour du Paradoxe de Simpson](https://www.fun-mooc.fr/courses/course-v1:inria+41016+self-paced/courseware/5b932aa591d245d48d8943385cb3120a/57c96f2c7f7b42018eaac3e6b34546f4/) +"En 1972-1974, à Whickham, une ville du nord-est de l'Angleterre, située à environ 6,5 kilomètres au sud-ouest de Newcastle upon Tyne, un sondage d'un sixième des électeurs a été effectué afin d'éclairer des travaux sur les maladies thyroïdiennes et cardiaques (Tunbridge et al. 1977). Une suite de cette étude a été menée vingt ans plus tard (Vanderpump et al. 1995). Certains des résultats avaient trait au tabagisme et cherchaient à savoir si les individus étaient toujours en vie lors de la seconde étude. Par simplicité, nous nous restreindrons aux femmes et parmi celles-ci aux 1314 qui ont été catégorisées comme "fumant actuellement" ou "n'ayant jamais fumé". Il y avait relativement peu de femmes dans le sondage initial ayant fumé et ayant arrêté depuis (162) et très peu pour lesquelles l'information n'était pas disponible (18). La survie à 20 ans a été déterminée pour l'ensemble des femmes du premier sondage." + +```{r} +data_url= "https://gitlab.inria.fr/learninglab/mooc-rr/mooc-rr-ressources/-/raw/master/module3/Practical_session/Subject6_smoking.csv?inline=false" +``` + +Pour nous protéger contre une éventuelle disparition ou modification du fichier, nous faisons une copie locale de ce jeu de données que nous préservons avec notre analyse. Il est inutile et même risquée de télécharger les données à chaque exécution, car dans le cas d'une panne nous pourrions remplacer nos données par un fichier défectueux. Pour cette raison, nous téléchargeons les données seulement si la copie locale n'existe pas. + +```{r} +data_file = "Subject6_smoking.csv" +if (!file.exists(data_file)) { + download.file(data_url, data_file, method="auto") +} +``` + +Voici l'explication des colonnes données décrit dans le [sujet 6](https://www.fun-mooc.fr/courses/course-v1:inria+41016+self-paced/courseware/5b932aa591d245d48d8943385cb3120a/57c96f2c7f7b42018eaac3e6b34546f4/) +Chaque ligne représente une femme. + +| Nom de colonne | Decription de colonne | +|----------------+-----------------------------------------------------------------------------------------------------------------------------------| +| `Smoke` | La femme interrogée est fumeuse ou non + | +| `Statut` | La femme interrogée est vivante ou morte au moment de la seconde étude | +| `Age` | Age de la femme interrogée au moment du premier sondage + + +## Lecture des données +```{r} +data=read.csv(data_file, header=T) +``` + +1. Observation de l'aspect des données +Pour visualiser comment la lecture du jeu de donnée a été effectué, on choisit d'observer le début et la fin de notre jeu de donnée *via* les fontions head et tail +```{r message=TRUE, warning=TRUE, paged.print=TRUE} +head(data) +tail(data) +``` + +2.Y a-t-il des points manquants dans nos données ? +```{r} +na_records = apply(data, 1, function (x) any(is.na(x))) +data[na_records,] +``` +Aucune ligne ne présente de données manquantes, il n'y aura pas besoin de faire attention à ce point dans la suite des analyses + +3. Vérification de la nature des variables +On vérifie maintenant que R classifie correctement nos variables. +On attend que: +`Smoker` et `Status`soit considérés comme des facteurs +`Age` soit considérés comme un numérique +```{r} +str(data) +``` +Tout est correcte. + +4.Conclusion +Le jeu de donée est correctement lu par R et le jeu de donnée ne présente pas de données manquante. +Nous pouvons donc commencer à répondre au question de l'excercice. + +## Question 1 + +### Enoncé +Représentez dans un tableau le nombre total de femmes vivantes et décédées sur la période en fonction de leur habitude de tabagisme. Calculez dans chaque groupe (fumeuses / non fumeuses) le taux de mortalité (le rapport entre le nombre de femmes décédées dans un groupe et le nombre total de femmes dans ce groupe). Vous pourrez proposer une représentation graphique de ces données. En quoi ce résultat est-il surprenant ? + +### Résolusion de la question 1 +####Tableau du nombre total de femmes vivantes et décédées sur la période en fonction de leur habitude de tabagisme + +On Crée d'une table de contigence +```{r} +statut=table(data$Status, data$Smoker) +statut + +``` + +####Calculs des taux de mortalité en fonction des habitudes de tabagisme + +On exprime le taux de mortalité par habitude de tabagisme en appliquant pour un +groupe la formule suivante: + +$mortalité = Ndécédée / (Nvivante + Ndécédée)$ + +N = nombre de femme du groupe répondant au statu mentionné (décédée ou vivante) + +On retrouve ces différents effectifs dans notre table de contigence. + +__Calcul pour le groupe fumeuses__ +```{r} +# Calcul du taux de mortalité chez les fumeuses +morta_fumeuse= 139/(443+139) +morta_fumeuse +# Expression en pourcentage +P_morta_fumeuse = morta_fumeuse * 100 +P_morta_fumeuse +``` +__Calcul pour le groupe fumeuses__ +```{r} +# Calcul du taux de mortalité chez les fumeuses +morta_non_fumeuse= 230/(502+230) +morta_non_fumeuse +# Expression en pourcentage +P_morta_non_fumeuse = morta_non_fumeuse * 100 +P_morta_non_fumeuse +``` + +####Représentation graphique des données + +Pour représenter graphiquement le statut d'une personne en fonction du son habitude de tabagisme on choisit de faire un diagramme en bâton car ces deux variable sont de nature qualitative. + +On peut choisir d'abord de représenter strictement les nombre contenut dans la table de contigence nommé `statut` +```{r} +barplot(statut, col=c("lightblue", "lavender"), legend.text = c("alive","dead"), ylim = c(0,800), ylab="effectif", xlab="habitude de tabagisme", main="statut des femme en fonction de leur habitude de tabagisme") +``` +Mais cette représentation n'est pas la plus adapté pour mettre en avant les diffrences de `status` en fonction de l'habitude de tabagisme. + +Pour avoir une meilleure vision des différences on décide de réprésenté sur l'axe des ordonnées une proportion plutôt qu'un effectif. + +On réalise ceci en convertisant notre table de contigence précédement crée en table de proportion grace à la fontion prop.table +```{r} +barplot(prop.table(statut,2), col=c("lightblue", "lavender"), legend.text = c("alive","dead"), ylim = c(0,1), ylab="Proportion", xlab="habitude de tabagisme", main="statut des femme en fonction de leur habitude de tabagisme") + +#### En quoi ce résultat est-il surprenant ? + +ce résultat est surprenant car on s'attendrait à voir que le taux de mortalité est plus importante chez les femmes fumeuse. C'est l'inversse qui ressort ici: le taux de mortalité est plus important chez les femmes n'ayant jamais fumée. + +## Question 2 +### Enoncé + +Reprenez la question 1 (effectifs et taux de mortalité) en rajoutant une nouvelle catégorie liée à la classe d'âge. On considérera par exemple les classes suivantes : 18-34 ans, 34-54 ans, 55-64 ans, plus de 65 ans. En quoi ce résultat est-il surprenant ? Arrivez-vous à expliquer ce paradoxe ? De même, vous pourrez proposer une représentation graphique de ces données pour étayer vos explications. + +### Réponse à la question 2 + +#### Ajout de la variable âge + +Ici on propose d'ajouter à notre jeu de donnée la variable age par classes. +4 classes ont été définit: + +1. 18-34 ans + +2. 34-54 ans + +3. 55-64 ans + +4. plus de 65 ans + +__Remarque__: Certaines classes ne sont pas continue (_i.e._: 34-54 et 55-64) ceci s'explique par le fait que aucune femme interrogée n'a entre [54.1-54.9] ans. De même il n'y a pas de femme interrogée ayant entre 64.0 et 64.9 ans. + +Néanmoins ces classes ne sont pas par défaut contenu dans notre jeu de données. Il va donc falloir les définir dans notre tableau. + +Nous allons créer pour cela une nouvelles colonne dans notre tableau que nous appellerons `class_age`. + +Dans cette variable nous allons "découper" la variable `Age` selon les classes définit précédement +Pour cela nous allons utiliser la fonction cut qui crée des classe en excluant la valeur de la borne inférieur et en incluant celle de la borne supérieur. + +Matématiquement cela donne ceci : $)a;b]$ + +Avant cela on remarque que les ages dans notre fichier contiennent des virgules, il nous faut donc être plus précis sur la définition des bornes de nos classes. Ainsi nous allons définir à R nos 4 classes de la façon suivante: + +1. )17.9-33.9] ans -> Nous indiquons 17.9 pour que les sujets de 18.0 ans soit inclus dans la classe et 33.9 pour que la classe suivante démarre à 34 ans + +2. )33.9-54.0] ans -> Nous indiquons 33.9 pour que les sujets de 34.0 ans soit inclus dans la classe et 54.0 pour inclure les sujet de 54.0 ans dans la classe + +3. )54.0-64.0] ans-> Nous indiquons 54.0 pour que les sujets de 55 ans soit inclus dans la classe (NB: il n'y a pas de valeur entre 54.1 et 54.9) et 64.0 pour inclure les sujet de 64.0 ans dans la classe + +4. )64.0-89.9]ans -> Nous indiquons 64.0 pour que les sujets de 65 ans soit inclus dans la classe (NB: il n'y a pas de valeur entre 64.1 et 64.9) et 89.9 car ceci correspond à l'âge des sujets les plus agés +```{r} +class_age<- cut((data$Age),c(17.9,33.9,54.0,64.0,89.9)) +data$class_age<-class_age + +``` +On vérifie visuellement si les différentes classes sont bien découper. pour nous facilité la tache nous allons d'abord réorganiser notre jeu de donné en fontion de l'age. +```{r} +data = data[order(data$Age),] +View(data) +``` +La classification c'est bien passée. + +Néanmoins pour nous éviter des erreurs d'interprétation par la suite, nous allons renommé nos classes pour qu'elles correspondent aux noms de celles définit dans l'énoncé de la question2 +```{r} +rename_class_age<-class_age +levels(rename_class_age) +levels(rename_class_age)[c(4)]<-">65" +levels(rename_class_age) +levels(rename_class_age)[c(3)]<-"55-64" +levels(rename_class_age) +levels(rename_class_age)[c(2)]<-"34-54" +levels(rename_class_age) +levels(rename_class_age)[c(1)]<-"18-34" +levels(rename_class_age) +data$class_age<-rename_class_age +```