exercice fini sujet 6

parent 0db17439
......@@ -5,29 +5,160 @@ date: "01/02/2024"
output: html_document
---
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.
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```{r}
data_url = "https://gitlab.inria.fr/learninglab/mooc-rr/mooc-rr-ressources/-/raw/master/module3/Practical_session/Subject6_smoking.csv"
```
```{r}
data = read.csv(data_url)
head(data)
```
```{r}
tableau <- table(data$Smoker, data$Status)
# Renommer les lignes et les colonnes
rownames(tableau) <- c("Non Fumeur", "Fumeur")
colnames(tableau) <- c("Vivant", "Décédé")
# Affichage du tableau
print(tableau)
```
Vivant Décédé
Non Fumeur 502 230
Fumeur 443 139
# Données
total_smokers <- 582
deaths_smokers <- 139
total_non_smokers <- 732
deaths_non_smokers <- 230
# Calcul des taux de mortalité
mortality_rate_smokers <- deaths_smokers / total_smokers
mortality_rate_non_smokers <- deaths_non_smokers / total_non_smokers
# Fonction pour calculer l'intervalle de confiance binomial
binom_conf_interval <- function(p, n, alpha = 0.05) {
z <- qnorm(1 - alpha / 2)
se <- sqrt(p * (1 - p) / n)
lower <- p - z * se
upper <- p + z * se
return(c(lower, upper))
}
# Calcul des intervalles de confiance
ci_smokers <- binom_conf_interval(mortality_rate_smokers, total_smokers)
ci_non_smokers <- binom_conf_interval(mortality_rate_non_smokers, total_non_smokers)
# Création du graphique
barplot(
c(mortality_rate_smokers, mortality_rate_non_smokers),
ylim = c(0, 0.4),
names.arg = c("Fumeurs", "Non fumeurs"),
ylab = "Taux de mortalité",
col = c("lightblue", "lightgreen"),
main = "Taux de mortalité par groupe avec intervalles de confiance"
)
# Ajout des barres d'erreur pour les intervalles de confiance
segments(1, ci_smokers[1], 1, ci_smokers[2], lwd = 2, col = "blue")
segments(2, ci_non_smokers[1], 2, ci_non_smokers[2], lwd = 2, col = "green")
```
figure
En quoi ce résultat est-il surprenant ?
ce résultat est surprenant car le taux de mortalité est plus élevée chez les femmes non fumeuses
# 2ème questions
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}
library(ggplot2)
# Convertir la colonne "age" en type numérique
data$age <- as.numeric(as.character(data$age))
# Créer des classes d'âge
data$age_category <- cut(data$Age, breaks = c(18, 34, 54, 65, Inf), labels = c("18-34 ans", "34-54 ans", "55-64 ans", "plus de 65 ans"))
## Quelques explications
# Calculer le taux de mortalité pour chaque catégorie d'âge et pour les fumeurs et les non-fumeurs
taux_mortalite <- aggregate(data$Status== "Dead", by = list(data$Smoker, data$age_category), FUN = mean)
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>.
# Renommer les colonnes pour plus de clarté
colnames(taux_mortalite) <- c("Smoker", "Age_Category", "Mortality_Rate")
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:
# Filtrer les données pour exclure les valeurs NA
taux_mortalite <- na.omit(taux_mortalite)
# Afficher les résultats
print(taux_mortalite)
# Créer un graphique à barres pour visualiser le taux de mortalité par catégorie d'âge et pour les fumeurs et les non-fumeurs
ggplot(taux_mortalite, aes(x = Age_Category, y = Mortality_Rate, fill = Smoker)) +
geom_bar(stat = "identity", position = "dodge") +
labs(x = "Catégorie d'âge", y = "Taux de mortalité", fill = "Fumeur") +
ggtitle("Taux de mortalité par catégorie d'âge et par fumeur/non-fumeur") +
theme_minimal()
```{r cars}
summary(cars)
```
Et on peut aussi aisément inclure des figures. Par exemple:
figure
ce résultat est surprenant car pour la classe d'âge 65 et plus, le taux de mortalité est pratiquement identique entre les fumeuses et non-fumeuses
ce résultat doit être expliqué par l'augmentation de l'incidence de maladies plus sévère avec l'âge et que donc cela se confond avec le tabagisme
# 3ème questions
Afin d'éviter un biais induit par des regroupements en tranches d'âges arbitraires et non régulières, il est envisageable d'essayer de réaliser une régression logistique. Si on introduit une variable Death valant 1 ou 0 pour indiquer si l'individu est décédé durant la période de 20 ans, on peut étudier le modèle Death ~ Age pour étudier la probabilité de décès en fonction de l'âge selon que l'on considère le groupe des fumeuses ou des non fumeuses. Ces régressions vous permettent-elles de conclure sur la nocivité du tabagisme ? Vous pourrez proposer une représentation graphique de ces régressions (en n'omettant pas les régions de confiance).
```{r}
library(ggplot2)
library(dplyr)
# Chargement des données
data <- read.csv("https://gitlab.inria.fr/learninglab/mooc-rr/mooc-rr-ressources/-/raw/master/module3/Practical_session/Subject6_smoking.csv")
# Création de la variable "Death"
data$Death <- ifelse(data$Status == "Dead", 1, 0)
# Réalisation de la régression logistique pour les fumeuses
regression_fumeuses <- glm(Death ~ Age, data = filter(data, Smoker == "Yes"), family = binomial)
# Réalisation de la régression logistique pour les non-fumeuses
regression_non_fumeuses <- glm(Death ~ Age, data = filter(data, Smoker == "No"), family = binomial)
# Résumé des résultats de la régression pour les fumeuses
summary(regression_fumeuses)
# Résumé des résultats de la régression pour les non-fumeuses
summary(regression_non_fumeuses)
# Représentation graphique des régressions
ggplot(data, aes(x = Age, y = Death, color = Smoker)) +
geom_point() +
geom_smooth(method = "glm", method.args = list(family = "binomial"), se = TRUE) +
labs(x = "Âge", y = "Probabilité de décès", color = "Fumeur") +
ggtitle("Régression logistique de la probabilité de décès en fonction de l'âge par groupe de fumeur/non-fumeur")
```{r pressure, echo=FALSE}
plot(pressure)
```
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.
figure
Pour les âges inférieurs à 65 ans, le tabagisme est nocif puisque le taux de mortalité est plus élevé chez les fumeuses que les non-fumeuses mais au-dessus de cet âge (de 65 ans), la courbe s'inverse légèrement ce qui indique que le taux de mortalité est presque identique
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