Analyse du risque de défaillance des joints toriques de la navette Challenger
-Préambule: Les explications données dans ce document sur le contexte +Préambule : Les explications données dans ce document sur le contexte de l'étude sont largement reprises de l'excellent livre d'Edward R. Tufte intitulé Visual Explanations: Images and Quantities, Evidence and Narrative, publié en 1997 par Graphics Press et réédité en 2005, @@ -284,17 +284,17 @@ Space Shuttle: Pre-Challenger Prediction of Failure et publié en 1989 dans Journal of the American Statistical Association.
-1 Contexte
+1 Contexte
Dans cette étude, nous vous proposons de revenir sur l'accident de la navette spatiale Challenger. Le 28 Janvier 1986, 73 secondes après son -lancement, la navette Challenger se désintègre (voir Figure 1) +lancement, la navette Challenger se désintègre (voir Figure 1) et entraîne avec elle, les sept astronautes à son bord. Cette explosion est due à la défaillance des deux joints toriques assurant l'étanchéité entre les parties hautes et basses des -propulseurs (voir Figure 2). Ces joints ont perdu de leur +propulseurs (voir Figure 2). Ces joints ont perdu de leur efficacité en raison du froid particulier qui régnait au moment du lancement. En effet, la température ce matin là était juste en dessous de 0°C alors que l'ensemble des vols précédents avaient été effectués @@ -302,7 +302,7 @@ de 0°C alors que l'ensemble des vols précédents avaient été effectués
-
Figure 1 : Photos de la catastrophe de Challenger.
@@ -310,7 +310,7 @@ de 0°C alors que l'ensemble des vols précédents avaient été effectués -
Figure 2 : Schéma des propulseurs de la navette challenger. Les joints toriques (un joint principale et un joint secondaire) en caoutchouc de plus de 11 mètres de circonférence assurent l'étanchéité entre la partie haute et la partie basse du propulseur.
@@ -349,7 +349,7 @@ années précédant le lancement de la navette Challenger.
Dans le répertoire module2/exo5/
de votre espace gitlab
, vous
trouverez les données d'origine ainsi qu'une analyse pour chacun des
-différents parcours proposés. Cette analyse comporte quatre étapes:
+différents parcours proposés. Cette analyse comporte quatre étapes :
- Chargement des données @@ -361,9 +361,9 @@ toriques
Les deux premières étapes ne supposent que des compétences de base en -R ou en python. La troisième étape suppose une familiarité avec la +R ou en Python. La troisième étape suppose une familiarité avec la régression logistique (généralement abordée en L3 ou M1 de stats, -économétrie, bio-statistique, …) et la quatrième étape des bases de +économétrie, bio-statistique…) et la quatrième étape des bases de probabilités (niveau lycée). Nous vous présentons donc dans la prochaine section une introduction à la régression logistique qui ne s'attarde pas sur les détails du calcul, mais juste sur le sens donné @@ -372,15 +372,15 @@ aux résultats de cette régression.
2 Introduction à la régression logistique
+2 Introduction à la régression logistique
Imaginons que l'on dispose des données suivantes qui indiquent pour une cohorte d'individus s'ils ont déclaré une maladie particulière ou -pas. Je montre ici l'analyse avec R mais le code python n'est pas forcément +pas. Je montre ici l'analyse avec R mais le code Python n'est pas forcément très éloigné. Les données sont stockées dans une data frame dont voici -un bref résumé: +un bref résumé :
Voici une représentation graphique des données qui permet de mieux percevoir le lien qu'il peut y avoir entre l'âge et le fait de -contracter cette maladie ou pas: +contracter cette maladie ou pas :
ggplot(df,aes(x=Age,y=Malade)) + geom_point(alpha=.3,size=3) + theme_bw() @@ -423,7 +423,7 @@ Sorry, your browser does not support SVG. Il apparaît clairement sur ces données que plus l'on est âgé, plus la probabilité de développer cette maladie est importante. Mais comment estimer cette probabilité à partir uniquement de ces valeurs binaires -(malade/pas malade)? Pour chaque tranche d'âge (par exemple de 5 ans), +(malade/pas malade) ? Pour chaque tranche d'âge (par exemple de 5 ans), on pourrait regarder la fréquence de la maladie (le code qui suit est un peu compliqué car le calcul de l'intervalle de confiance pour ce type de données nécessite un traitement particulier via la fonction @@ -433,7 +433,7 @@ type de données nécessite un traitement particulier via la fonctionage_range=5 df_grouped = df %>% mutate(Age=age_range*(floor(Age/age_range)+.5)) %>% - group_by(Age) %>% summarize(Malade=sum(Malade),N=n()) %>% + group_by(Age) %>% summarise(Malade=sum(Malade),N=n()) %>% rowwise() %>% do(data.frame(Age=.$Age, binconf(.$Malade, .$N, alpha=0.05))) %>% as.data.frame() @@ -460,7 +460,7 @@ arbitraire, et qu'on n'a pas grande idée de la façon dont ça évolue. Pour modéliser cette évolution de façon plus continue, on pourrait tenter une régression linéaire (le modèle le plus simple possible pour rendre compte de l'influence d'un paramètre) et ainsi -estimer l'effet de l'âge sur la probabilité d'être malade: +estimer l'effet de l'âge sur la probabilité d'être malade :ggplot(df,aes(x=Age,y=Malade)) + geom_point(alpha=.3,size=3) + @@ -477,8 +477,8 @@ Sorry, your browser does not support SVG.La ligne bleue est la régression linéaire au sens des moindres carrés -et la zone grise dans laquelle est la zone de confiance à 95% de cette -estimation (avec les données dont l'on dispose et cette hypothèse de +et la zone grise est la zone de confiance à 95% de cette +estimation (avec les données dont on dispose et cette hypothèse de linéarité, la ligne bleue est la plus probable et il y a 95% de chance que la vraie ligne soit dans cette zone grise).
@@ -498,7 +498,7 @@ et \(\beta\) à partir des données.Cette technique n'a pas de sens pour estimer une probabilité et il convient donc d'utiliser ce que l'on appelle une régression -logistique: +logistique :
ggplot(df,aes(x=Age,y=Malade)) + geom_point(alpha=.3,size=3) + @@ -519,7 +519,7 @@ Sorry, your browser does not support SVG. Ici, la bibliothèqueggplot
fait tous les calculs de régression logistique pour nous et nous montre uniquement le résultat "graphique" mais dans l'analyse que nous vous proposerons pour Challenger, nous -réalisons la régression et la prédiction à la main (enR
ou enpython
+réalisons la régression et la prédiction à la main (enR
ou enPython
selon le parcours que vous choisirez) de façon à pouvoir effectuer si besoin une inspection plus fine. Comme avant, la courbe bleue indique l'estimation de la probabilité d'être malade en fonction de l'âge et @@ -533,17 +533,17 @@ grise".Dans ce modèle, on suppose que \(P[\textsf{Malade}] = \pi(\textsf{Age})\) avec \(\displaystyle\pi(x)=\frac{e^{\alpha.x + \beta}}{1+e^{\alpha.x + \beta}}\). Cette -formule (étrange au premier abord) a la bonne propriété nous donner +formule (étrange au premier abord) a la bonne propriété de nous donner systématiquement une valeur comprise entre 0 et 1 et de bien tendre rapidement vers \(0\) quand l'âge tend vers \(-\infty\) et vers \(1\) quand l'âge tend vers \(+\infty\) (mais ce n'est pas bien sûr pas la seule motivation).
-En conclusion, lorsque l'on dispose de données événementielles +En conclusion, lorsque l'on dispose de données évènementielles (binaires) et que l'on souhaite estimer l'influence d'un paramètre sur -la probabilité d'occurrence de l'évènement (maladie, défaillance, -…), le modèle le plus naturel et le plus simple est celui de la +la probabilité d'occurrence de l'évènement (maladie, défaillance…), +le modèle le plus naturel et le plus simple est celui de la régression logistique. Notez, que même en se restreignant à une petite partie des données (par exemple, uniquement les patients de moins de 50 ans), il est possible d'obtenir une estimation assez raisonnable, diff --git a/module2/exo5/challenger.pdf b/module2/exo5/challenger.pdf index cfb9542ac4f27b70b4bb9651503f3003ee203576..48c158d2f28a1291342af1faf2f7266bc5bf645b 100644 Binary files a/module2/exo5/challenger.pdf and b/module2/exo5/challenger.pdf differ