Commit 9df89c7e authored by Arnaud Legrand's avatar Arnaud Legrand

Regenerate after MGD's corrections. This needs to be republished in FUN.

parent 1fe6c72d
......@@ -275,7 +275,7 @@ for the JavaScript code in this tag.
<div id="content">
<h1 class="title">Analyse du risque de défaillance des joints toriques de la navette Challenger</h1>
<p>
<b>Préambule:</b> Les explications données dans ce document sur le contexte
<b>Préambule :</b> 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é <i>Visual Explanations: Images and Quantities, Evidence
and Narrative</i>, publié en 1997 par <i>Graphics Press</i> et réédité en 2005,
......@@ -284,17 +284,17 @@ Space Shuttle: Pre-Challenger Prediction of Failure</i> et publié en 1989
dans <i>Journal of the American Statistical Association</i>.
</p>
<div id="outline-container-org95fbd2d" class="outline-2">
<h2 id="org95fbd2d"><span class="section-number-2">1</span> Contexte</h2>
<div id="outline-container-orgc84b2f3" class="outline-2">
<h2 id="orgc84b2f3"><span class="section-number-2">1</span> Contexte</h2>
<div class="outline-text-2" id="text-1">
<p>
Dans cette étude, nous vous proposons de revenir sur <a href="https://fr.wikipedia.org/wiki/Accident_de_la_navette_spatiale_Challenger">l'accident de la
navette spatiale Challenger</a>. Le 28 Janvier 1986, 73 secondes après son
lancement, la navette Challenger se désintègre (voir Figure <a href="#org7a7557d">1</a>)
lancement, la navette Challenger se désintègre (voir Figure <a href="#org22bba0b">1</a>)
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 <a href="#orge54c304">2</a>). Ces joints ont perdu de leur
propulseurs (voir Figure <a href="#orgc01ded2">2</a>). 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
</p>
<div id="org7a7557d" class="figure">
<div id="org22bba0b" class="figure">
<p><img src="challenger5.jpg" alt="challenger5.jpg" />
</p>
<p><span class="figure-number">Figure&nbsp;1&nbsp;: </span>Photos de la catastrophe de Challenger.</p>
......@@ -310,7 +310,7 @@ de 0°C alors que l'ensemble des vols précédents avaient été effectués
<div id="orge54c304" class="figure">
<div id="orgc01ded2" class="figure">
<p><img src="o-ring.png" alt="o-ring.png" />
</p>
<p><span class="figure-number">Figure&nbsp;2&nbsp;: </span>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.</p>
......@@ -349,7 +349,7 @@ années précédant le lancement de la navette Challenger.
<p>
Dans le répertoire <code>module2/exo5/</code> de votre espace <code>gitlab</code>, 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 :
</p>
<ol class="org-ol">
<li>Chargement des données</li>
......@@ -361,9 +361,9 @@ toriques</li>
<p>
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, &#x2026;) et la quatrième étape des bases de
économétrie, bio-statistique&#x2026;) 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.
</div>
</div>
<div id="outline-container-org1c79137" class="outline-2">
<h2 id="org1c79137"><span class="section-number-2">2</span> Introduction à la régression logistique</h2>
<div id="outline-container-org2b7fcc8" class="outline-2">
<h2 id="org2b7fcc8"><span class="section-number-2">2</span> Introduction à la régression logistique</h2>
<div class="outline-text-2" id="text-2">
<p>
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é :
</p>
<div class="org-src-container">
......@@ -405,7 +405,7 @@ str(df)
<p>
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 :
</p>
<div class="org-src-container">
<pre class="src src-R">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.</object>
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 fonction
<div class="org-src-container">
<pre class="src src-R">age_range=5
df_grouped = df <span class="org-ess-XopX">%&gt;%</span> mutate(Age=age_range*(floor(Age/age_range)+.5)) <span class="org-ess-XopX">%&gt;%</span>
group_by(Age) <span class="org-ess-XopX">%&gt;%</span> summarize(Malade=sum(Malade),N=n()) <span class="org-ess-XopX">%&gt;%</span>
group_by(Age) <span class="org-ess-XopX">%&gt;%</span> summarise(Malade=sum(Malade),N=n()) <span class="org-ess-XopX">%&gt;%</span>
rowwise() <span class="org-ess-XopX">%&gt;%</span>
do(data.frame(Age=.$Age, binconf(.$Malade, .$N, alpha=0.05))) <span class="org-ess-XopX">%&gt;%</span>
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 :
</p>
<div class="org-src-container">
<pre class="src src-R">ggplot(df,aes(x=Age,y=Malade)) + geom_point(alpha=.3,size=3) +
......@@ -477,8 +477,8 @@ Sorry, your browser does not support SVG.</object>
<p>
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).
</p>
......@@ -498,7 +498,7 @@ et \(\beta\) à partir des données.
<p>
Cette technique n'a pas de sens pour estimer une probabilité et il
convient donc d'utiliser ce que l'on appelle une <a href="https://fr.wikipedia.org/wiki/R%C3%A9gression_logistique">régression
logistique</a>:
logistique</a> :
</p>
<div class="org-src-container">
<pre class="src src-R">ggplot(df,aes(x=Age,y=Malade)) + geom_point(alpha=.3,size=3) +
......@@ -519,7 +519,7 @@ Sorry, your browser does not support SVG.</object>
Ici, la bibliothèque <code>ggplot</code> 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 (en <code>R</code> ou en <code>python</code>
réalisons la régression et la prédiction à la main (en <code>R</code> ou en <code>Python</code>
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".
<p>
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).
</p>
<p>
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,
&#x2026;), 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&#x2026;),
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,
......
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