{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Analyse du risque de défaillance des joints toriques de la navette Challenger" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Le 27 Janvier 1986, veille du décollage de la navette *Challenger*, eu\n", "lieu une télé-conférence de trois heures entre les ingénieurs de la\n", "Morton Thiokol (constructeur d'un des moteurs) et de la NASA. La\n", "discussion portait principalement sur les conséquences de la\n", "température prévue au moment du décollage de 31°F (juste en dessous de\n", "0°C) sur le succès du vol et en particulier sur la performance des\n", "joints toriques utilisés dans les moteurs. En effet, aucun test\n", "n'avait été effectué à cette température.\n", "\n", "L'étude qui suit reprend donc une partie des analyses effectuées cette\n", "nuit là et dont l'objectif était d'évaluer l'influence potentielle de\n", "la température et de la pression à laquelle sont soumis les joints\n", "toriques sur leur probabilité de dysfonctionnement. Pour cela, nous\n", "disposons des résultats des expériences réalisées par les ingénieurs\n", "de la NASA durant les 6 années précédant le lancement de la navette\n", "Challenger.\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Chargement des données\n", "Nous commençons donc par charger ces données:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
DateCountTemperaturePressureMalfunction
04/12/81666500
111/12/81670501
23/22/82669500
311/11/82668500
44/04/83667500
56/18/82672500
68/30/836731000
711/28/836701000
82/03/846572001
94/06/846632001
108/30/846702001
1110/05/846782000
1211/08/846672000
131/24/856532002
144/12/856672000
154/29/856752000
166/17/856702000
177/29/856812000
188/27/856762000
1910/03/856792000
2010/30/856752002
2111/26/856762000
221/12/866582001
\n", "
" ], "text/plain": [ " Date Count Temperature Pressure Malfunction\n", "0 4/12/81 6 66 50 0\n", "1 11/12/81 6 70 50 1\n", "2 3/22/82 6 69 50 0\n", "3 11/11/82 6 68 50 0\n", "4 4/04/83 6 67 50 0\n", "5 6/18/82 6 72 50 0\n", "6 8/30/83 6 73 100 0\n", "7 11/28/83 6 70 100 0\n", "8 2/03/84 6 57 200 1\n", "9 4/06/84 6 63 200 1\n", "10 8/30/84 6 70 200 1\n", "11 10/05/84 6 78 200 0\n", "12 11/08/84 6 67 200 0\n", "13 1/24/85 6 53 200 2\n", "14 4/12/85 6 67 200 0\n", "15 4/29/85 6 75 200 0\n", "16 6/17/85 6 70 200 0\n", "17 7/29/85 6 81 200 0\n", "18 8/27/85 6 76 200 0\n", "19 10/03/85 6 79 200 0\n", "20 10/30/85 6 75 200 2\n", "21 11/26/85 6 76 200 0\n", "22 1/12/86 6 58 200 1" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import numpy as np\n", "import pandas as pd\n", "data = pd.read_csv(\"shuttle.csv\")\n", "data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Le jeu de données nous indique la date de l'essai, le nombre de joints\n", "toriques mesurés (il y en a 6 sur le lançeur principal), la\n", "température (en Farenheit) et la pression (en psi), et enfin le\n", "nombre de dysfonctionnements relevés. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Inspection graphique des données\n", "Les vols où aucun incident n'est relevé n'apportant aucun information\n", "sur l'influence de la température ou de la pression sur les\n", "dysfonctionnements, nous nous concentrons sur les expériences où au\n", "moins un joint a été défectueux.\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
DateCountTemperaturePressureMalfunction
82/03/846572001
94/06/846632001
131/24/856532002
221/12/866582001
\n", "
" ], "text/plain": [ " Date Count Temperature Pressure Malfunction\n", "8 2/03/84 6 57 200 1\n", "9 4/06/84 6 63 200 1\n", "13 1/24/85 6 53 200 2\n", "22 1/12/86 6 58 200 1" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#data = data[data.Malfunction>0] \n", "data2 = data[data.Temperature <= 65]\n", "data2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Très bien, nous avons une variabilité de température importante mais\n", "la pression est quasiment toujours égale à 200, ce qui devrait\n", "simplifier l'analyse.\n", "\n", "Comment la fréquence d'échecs varie-t-elle avec la température ?\n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "pd.set_option('mode.chained_assignment',None) # this removes a useless warning from pandas\n", "import matplotlib.pyplot as plt\n", "\n", "data2[\"Frequency\"]=data2.Malfunction/data2.Count\n", "data2.plot(x=\"Temperature\",y=\"Frequency\",kind=\"scatter\",ylim=[0,1])\n", "plt.grid(True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "À première vue, ce n'est pas flagrant mais bon, essayons quand même\n", "d'estimer l'impact de la température $t$ sur la probabilité de\n", "dysfonctionnements d'un joint. \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Estimation de l'influence de la température\n", "\n", "Supposons que chacun des 6 joints toriques est endommagé avec la même\n", "probabilité et indépendamment des autres et que cette probabilité ne\n", "dépend que de la température. Si on note $p(t)$ cette probabilité, le\n", "nombre de joints $D$ dysfonctionnant lorsque l'on effectue le vol à\n", "température $t$ suit une loi binomiale de paramètre $n=6$ et\n", "$p=p(t)$. Pour relier $p(t)$ à $t$, on va donc effectuer une\n", "régression logistique." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
Generalized Linear Model Regression Results
Dep. Variable: Frequency No. Observations: 4
Model: GLM Df Residuals: 2
Model Family: Binomial Df Model: 1
Link Function: logit Scale: 1.0000
Method: IRLS Log-Likelihood: -1.3845
Date: Wed, 13 Aug 2025 Deviance: 0.040847
Time: 16:05:21 Pearson chi2: 0.0407
No. Iterations: 4 Covariance Type: nonrobust
\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
coef std err z P>|z| [0.025 0.975]
Intercept 4.3201 20.789 0.208 0.835 -36.425 45.066
Temperature -0.0985 0.364 -0.271 0.787 -0.812 0.615
" ], "text/plain": [ "\n", "\"\"\"\n", " Generalized Linear Model Regression Results \n", "==============================================================================\n", "Dep. Variable: Frequency No. Observations: 4\n", "Model: GLM Df Residuals: 2\n", "Model Family: Binomial Df Model: 1\n", "Link Function: logit Scale: 1.0000\n", "Method: IRLS Log-Likelihood: -1.3845\n", "Date: Wed, 13 Aug 2025 Deviance: 0.040847\n", "Time: 16:05:21 Pearson chi2: 0.0407\n", "No. Iterations: 4 Covariance Type: nonrobust\n", "===============================================================================\n", " coef std err z P>|z| [0.025 0.975]\n", "-------------------------------------------------------------------------------\n", "Intercept 4.3201 20.789 0.208 0.835 -36.425 45.066\n", "Temperature -0.0985 0.364 -0.271 0.787 -0.812 0.615\n", "===============================================================================\n", "\"\"\"" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import statsmodels.api as sm\n", "\n", "data2[\"Success\"]=data2.Count-data2.Malfunction\n", "data2[\"Intercept\"]=1\n", "\n", "logmodel=sm.GLM(data2['Frequency'], data2[['Intercept','Temperature']], family=sm.families.Binomial(sm.families.links.logit)).fit()\n", "\n", "logmodel.summary()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "L'estimateur le plus probable du paramètre de température est 0.0014\n", "et l'erreur standard de cet estimateur est de 0.122, autrement dit on\n", "ne peut pas distinguer d'impact particulier et il faut prendre nos\n", "estimations avec des pincettes.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Estimation de la probabilité de dysfonctionnant des joints toriques\n", "La température prévue le jour du décollage est de 31°F. Essayons\n", "d'estimer la probabilité de dysfonctionnement des joints toriques à\n", "cette température à partir du modèle que nous venons de construire:\n" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
DateCountTemperaturePressureMalfunctionFrequencySuccessIntercept
82/03/8465720010.16666751
94/06/8466320010.16666751
131/24/8565320020.33333341
221/12/8665820010.16666751
\n", "
" ], "text/plain": [ " Date Count Temperature Pressure Malfunction Frequency Success \\\n", "8 2/03/84 6 57 200 1 0.166667 5 \n", "9 4/06/84 6 63 200 1 0.166667 5 \n", "13 1/24/85 6 53 200 2 0.333333 4 \n", "22 1/12/86 6 58 200 1 0.166667 5 \n", "\n", " Intercept \n", "8 1 \n", "9 1 \n", "13 1 \n", "22 1 " ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data2" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "ename": "KeyError", "evalue": "'Frequency'", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m/opt/conda/lib/python3.6/site-packages/pandas/core/indexes/base.py\u001b[0m in \u001b[0;36mget_loc\u001b[0;34m(self, key, method, tolerance)\u001b[0m\n\u001b[1;32m 2524\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2525\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2526\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32mpandas/_libs/index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n", "\u001b[0;32mpandas/_libs/index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n", "\u001b[0;32mpandas/_libs/hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[0;34m()\u001b[0m\n", "\u001b[0;32mpandas/_libs/hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[0;34m()\u001b[0m\n", "\u001b[0;31mKeyError\u001b[0m: 'Frequency'", "\nDuring handling of the above exception, another exception occurred:\n", "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mdata_pred\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'Frequency'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlogmodel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpredict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata_pred\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'Intercept'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m'Temperature'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mdata_pred\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"Temperature\"\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"Frequency\"\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mkind\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"line\"\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mylim\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mscatter\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"Temperature\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"Frequency\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgrid\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/opt/conda/lib/python3.6/site-packages/pandas/core/frame.py\u001b[0m in \u001b[0;36m__getitem__\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 2137\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_getitem_multilevel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2138\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2139\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_getitem_column\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2140\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2141\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_getitem_column\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/opt/conda/lib/python3.6/site-packages/pandas/core/frame.py\u001b[0m in \u001b[0;36m_getitem_column\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 2144\u001b[0m \u001b[0;31m# get column\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2145\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mis_unique\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2146\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_get_item_cache\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2147\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2148\u001b[0m \u001b[0;31m# duplicate columns & possible reduce dimensionality\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/opt/conda/lib/python3.6/site-packages/pandas/core/generic.py\u001b[0m in \u001b[0;36m_get_item_cache\u001b[0;34m(self, item)\u001b[0m\n\u001b[1;32m 1840\u001b[0m \u001b[0mres\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcache\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mitem\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1841\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mres\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1842\u001b[0;31m \u001b[0mvalues\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_data\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mitem\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1843\u001b[0m \u001b[0mres\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_box_item_values\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mitem\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalues\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1844\u001b[0m \u001b[0mcache\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mitem\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mres\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/opt/conda/lib/python3.6/site-packages/pandas/core/internals.py\u001b[0m in \u001b[0;36mget\u001b[0;34m(self, item, fastpath)\u001b[0m\n\u001b[1;32m 3841\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3842\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0misna\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mitem\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 3843\u001b[0;31m \u001b[0mloc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mitem\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3844\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3845\u001b[0m \u001b[0mindexer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0misna\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/opt/conda/lib/python3.6/site-packages/pandas/core/indexes/base.py\u001b[0m in \u001b[0;36mget_loc\u001b[0;34m(self, key, method, tolerance)\u001b[0m\n\u001b[1;32m 2525\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2526\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2527\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_maybe_cast_indexer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2528\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2529\u001b[0m \u001b[0mindexer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_indexer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmethod\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mmethod\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtolerance\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtolerance\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32mpandas/_libs/index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n", "\u001b[0;32mpandas/_libs/index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n", "\u001b[0;32mpandas/_libs/hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[0;34m()\u001b[0m\n", "\u001b[0;32mpandas/_libs/hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[0;34m()\u001b[0m\n", "\u001b[0;31mKeyError\u001b[0m: 'Frequency'" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "data_pred = pd.DataFrame({'Temperature': np.linspace(start=25, stop=60, num=121), 'Intercept': 1})\n", "data_pred['Frequency'] = logmodel.predict(data_pred[['Intercept','Temperature']])\n", "data_pred.plot(x=\"Temperature\",y=\"Frequency\",kind=\"line\",ylim=[0,1])\n", "plt.scatter(x=data[\"Temperature\"],y=data[\"Frequency\"])\n", "plt.grid(True)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
InterceptTemperatureFrequency
0130.0000000.796399
1130.3333330.791021
2130.6666670.785539
3131.0000000.779954
4131.3333330.774265
5131.6666670.768472
6132.0000000.762576
7132.3333330.756578
8132.6666670.750478
9133.0000000.744277
10133.3333330.737975
11133.6666670.731574
12134.0000000.725075
13134.3333330.718479
14134.6666670.711788
15135.0000000.705003
16135.3333330.698126
17135.6666670.691159
18136.0000000.684104
19136.3333330.676963
20136.6666670.669738
21137.0000000.662433
22137.3333330.655049
23137.6666670.647590
24138.0000000.640058
25138.3333330.632456
26138.6666670.624788
27139.0000000.617057
28139.3333330.609266
29139.6666670.601419
............
91160.3333330.164500
92160.6666670.160035
93161.0000000.155669
94161.3333330.151400
95161.6666670.147228
96162.0000000.143152
97162.3333330.139170
98162.6666670.135281
99163.0000000.131485
100163.3333330.127779
101163.6666670.124163
102164.0000000.120635
103164.3333330.117193
104164.6666670.113838
105165.0000000.110566
106165.3333330.107377
107165.6666670.104269
108166.0000000.101241
109166.3333330.098291
110166.6666670.095418
111167.0000000.092620
112167.3333330.089896
113167.6666670.087245
114168.0000000.084664
115168.3333330.082153
116168.6666670.079710
117169.0000000.077334
118169.3333330.075022
119169.6666670.072775
120170.0000000.070589
\n", "

121 rows × 3 columns

\n", "
" ], "text/plain": [ " Intercept Temperature Frequency\n", "0 1 30.000000 0.796399\n", "1 1 30.333333 0.791021\n", "2 1 30.666667 0.785539\n", "3 1 31.000000 0.779954\n", "4 1 31.333333 0.774265\n", "5 1 31.666667 0.768472\n", "6 1 32.000000 0.762576\n", "7 1 32.333333 0.756578\n", "8 1 32.666667 0.750478\n", "9 1 33.000000 0.744277\n", "10 1 33.333333 0.737975\n", "11 1 33.666667 0.731574\n", "12 1 34.000000 0.725075\n", "13 1 34.333333 0.718479\n", "14 1 34.666667 0.711788\n", "15 1 35.000000 0.705003\n", "16 1 35.333333 0.698126\n", "17 1 35.666667 0.691159\n", "18 1 36.000000 0.684104\n", "19 1 36.333333 0.676963\n", "20 1 36.666667 0.669738\n", "21 1 37.000000 0.662433\n", "22 1 37.333333 0.655049\n", "23 1 37.666667 0.647590\n", "24 1 38.000000 0.640058\n", "25 1 38.333333 0.632456\n", "26 1 38.666667 0.624788\n", "27 1 39.000000 0.617057\n", "28 1 39.333333 0.609266\n", "29 1 39.666667 0.601419\n", ".. ... ... ...\n", "91 1 60.333333 0.164500\n", "92 1 60.666667 0.160035\n", "93 1 61.000000 0.155669\n", "94 1 61.333333 0.151400\n", "95 1 61.666667 0.147228\n", "96 1 62.000000 0.143152\n", "97 1 62.333333 0.139170\n", "98 1 62.666667 0.135281\n", "99 1 63.000000 0.131485\n", "100 1 63.333333 0.127779\n", "101 1 63.666667 0.124163\n", "102 1 64.000000 0.120635\n", "103 1 64.333333 0.117193\n", "104 1 64.666667 0.113838\n", "105 1 65.000000 0.110566\n", "106 1 65.333333 0.107377\n", "107 1 65.666667 0.104269\n", "108 1 66.000000 0.101241\n", "109 1 66.333333 0.098291\n", "110 1 66.666667 0.095418\n", "111 1 67.000000 0.092620\n", "112 1 67.333333 0.089896\n", "113 1 67.666667 0.087245\n", "114 1 68.000000 0.084664\n", "115 1 68.333333 0.082153\n", "116 1 68.666667 0.079710\n", "117 1 69.000000 0.077334\n", "118 1 69.333333 0.075022\n", "119 1 69.666667 0.072775\n", "120 1 70.000000 0.070589\n", "\n", "[121 rows x 3 columns]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data_pred\n" ] }, { "cell_type": "markdown", "metadata": { "hideCode": false, "hidePrompt": false, "scrolled": true }, "source": [ "Comme on pouvait s'attendre au vu des données initiales, la\n", "température n'a pas d'impact notable sur la probabilité d'échec des\n", "joints toriques. Elle sera d'environ 0.2, comme dans les essais\n", "précédents où nous il y a eu défaillance d'au moins un joint. Revenons\n", "à l'ensemble des données initiales pour estimer la probabilité de\n", "défaillance d'un joint:\n" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.06521739130434782\n" ] } ], "source": [ "data = pd.read_csv(\"shuttle.csv\")\n", "print(np.sum(data.Malfunction)/np.sum(data.Count))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Cette probabilité est donc d'environ $p=0.065$, sachant qu'il existe\n", "un joint primaire un joint secondaire sur chacune des trois parties du\n", "lançeur, la probabilité de défaillance des deux joints d'un lançeur\n", "est de $p^2 \\approx 0.00425$. La probabilité de défaillance d'un des\n", "lançeur est donc de $1-(1-p^2)^3 \\approx 1.2%$. Ça serait vraiment\n", "pas de chance... Tout est sous contrôle, le décollage peut donc avoir\n", "lieu demain comme prévu.\n", "\n", "Seulement, le lendemain, la navette Challenger explosera et emportera\n", "avec elle ses sept membres d'équipages. L'opinion publique est\n", "fortement touchée et lors de l'enquête qui suivra, la fiabilité des\n", "joints toriques sera directement mise en cause. Au delà des problèmes\n", "de communication interne à la NASA qui sont pour beaucoup dans ce\n", "fiasco, l'analyse précédente comporte (au moins) un petit\n", "problème... Saurez-vous le trouver ? Vous êtes libre de modifier cette\n", "analyse et de regarder ce jeu de données sous tous les angles afin\n", "d'expliquer ce qui ne va pas." ] } ], "metadata": { "celltoolbar": "Hide code", "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.4" } }, "nbformat": 4, "nbformat_minor": 2 }