Commit 33dba250 authored by Nébie Gaston Cyrille's avatar Nébie Gaston Cyrille

Ma proposition de l'exo 5 du module 2. Que je partagé également sur Rpubs

parent 285143cc
--- ---
title: "Analyse du risque de défaillance des joints toriques de la navette Challenger" title: "Analyse du risque de défaillance des joints toriques de la navette Challenger"
author: "Arnaud Legrand" author: "NEBIE Gaston Cyrille"
date: "28 juin 2018" date: "20 janvier 2025"
output: html_document output: html_document
--- ---
```{r warning = FALSE , message = FALSE}
# Chargeons les packages neccessaires
library(tidyverse)
library(splines)
library(plotly)
```
Le 27 Janvier 1986, veille du décollage de la navette _Challenger_, eu Le 27 Janvier 1986, veille du décollage de la navette _Challenger_, eu
lieu une télé-conférence de trois heures entre les ingénieurs de la lieu une télé-conférence de trois heures entre les ingénieurs de la Morton Thiokol (constructeur d'un des moteurs) et de la NASA. La discussion portait principalement sur les conséquences de la température prévue au moment du décollage de 31°F (juste en dessous de 0°C) sur le succès du vol et en particulier sur la performance des joints toriques utilisés dans les moteurs. En effet, aucun test n'avait été effectué à cette température.
Morton Thiokol (constructeur d'un des moteurs) et de la NASA. La
discussion portait principalement sur les conséquences de la L'étude qui suit reprend donc une partie des analyses effectuées cette nuit là et dont l'objectif était d'évaluer l'influence potentielle de la température et de la pression à laquelle sont soumis les joints toriques sur leur probabilité de dysfonctionnement. Pour cela, nous disposons des résultats des expériences réalisées par les ingénieurs de la NASA durant les 6 années précédant le lancement de la navette
température prévue au moment du décollage de 31°F (juste en dessous de
0°C) sur le succès du vol et en particulier sur la performance des
joints toriques utilisés dans les moteurs. En effet, aucun test
n'avait été effectué à cette température.
L'étude qui suit reprend donc une partie des analyses effectuées cette
nuit là et dont l'objectif était d'évaluer l'influence potentielle de
la température et de la pression à laquelle sont soumis les joints
toriques sur leur probabilité de dysfonctionnement. Pour cela, nous
disposons des résultats des expériences réalisées par les ingénieurs
de la NASA durant les 6 années précédant le lancement de la navette
Challenger. Challenger.
# Chargement des données # Chargement et exploiration des données
Nous commençons donc par charger ces données: Nous commençons donc par charger ces données:
```{r} ```{r}
data = read.csv("shuttle.csv",header=T) data = read.csv("shuttle.csv",header=T)
data str(data)
summary(data)
head(data)
```
Le jeu de données nous inclut :
- *Date* : qui représente la date de l’essai,
- *Temperature* : Température en Farenheit lors de l’essai,
- **Pressure** (psi) : Pression des moteurs,
- **Count** : Nombre total de joints observés (6 par moteur),
- **Malfunction** : Nombre de joints défaillants.
Calculon la proportions de défaillance :
```{r}
data <- data %>%
mutate(
Failure_Proportion = Malfunction / Count
)
```
```{r}
# Distribution des variables
library(ggplot2)
ggplot(data,
aes(
x = Temperature,
y = Failure_Proportion,
color = Pressure
)
) +
geom_point(size = 3) +
scale_color_gradient(
low = "blue",
high = "red") +
labs(title = "Proportion de défaillances en fonction de la température et de la pression",
x = "Température (°F)", y = "Proportion de défaillances", color = "Pression (psi)") +
theme_minimal()
``` ```
Le jeu de données nous indique la date de l'essai, le nombre de joints La rampe de couleur suivant la pression n'affiche pas de tendance claire par rapport à la proportion de défaillances. Aussi, les données sont dominées par des pressions élevées (200 psi), ce qui limite l'analyse de l'effet de la pression.
toriques mesurés (il y en a 6 sur le lançeur principal), la
température (en Farenheit) et la pression (en psi), et enfin le
nombre de dysfonctionnements relevés.
# Inspection graphique des données Regardons de ce fait à travers le graphique ci-dessous l'effet, de la température.
Les vols où aucun incident n'est relevé n'apportant aucun information
sur l'influence de la température ou de la pression sur les
dysfonctionnements, nous nous concentrons sur les expériences où au
moins un joint a été défectueux.
```{r} ```{r}
data = data[data$Malfunction>0,] ggplot(data,
data aes(x = Temperature,
y = Failure_Proportion)) +
geom_point(size = 3,
color = "blue") +
geom_smooth(method = "loess",
se = FALSE,
color = "red") +
labs(title = "Relation entre la température et la proportion de défaillances",
x = "Température (°F)",
y = "Proportion de défaillances") +
theme_minimal()
``` ```
Très bien, nous avons une variabilité de température importante mais La courbe met en évidence une forte augmentation des défaillances à basse température, en particulier autour de $50–60°F$. En revanche, à mesure que la température dépasse $70°F$, la proportion de défaillances diminue de manière significative. Ce comportement suggère l'existence d'une relation non linéaire entre la température et les défaillances, une tendance qui pourrait ne pas être correctement capturée par un modèle linéaire simple.
la pression est quasiment toujours égale à 200, ce qui devrait
simplifier l'analyse. Regardons à présent les données en trois dimension.
Comment la fréquence d'échecs varie-t-elle avec la température ?
```{r} ```{r}
plot(data=data, Malfunction/Count ~ Temperature, ylim=c(0,1)) plot_ly(data, x = ~Temperature,
y = ~Pressure,
z = ~Failure_Proportion,
type = "scatter3d",
mode = "markers",
color = ~Failure_Proportion) %>%
layout(title = "Proportion de défaillances en fonction de la température et de la pression",
scene = list(
xaxis = list(title = "Température (°F)"),
yaxis = list(title = "Pression (psi)"),
zaxis = list(title = "Proportion de défaillances")))
``` ```
À première vue, ce n'est pas flagrant mais bon, essayons quand même Ce graphique met en évidence que les défaillances sont principalement concentrées dans des conditions de basse température, en particulier en dessous de 60°F. Par ailleurs, la pression ne semble pas avoir d’influence notable sur la proportion de défaillances, ou du moins, aucune tendance claire ne peut être discernée à partir des données disponibles.
d'estimer l'impact de la température $t$ sur la probabilité de
dysfonctionnements d'un joint. # Estimation de l'influence de réelle des variable par la modélisation statistique
# Estimation de l'influence de la température Nous ajustons une régression logistique pour estimer la probabilité de défaillance d’un joint torique en fonction de la température, de la pression et de leur interaction.
Supposons que chacun des 6 joints toriques est endommagé avec la même
probabilité et indépendamment des autres et que cette probabilité ne
dépend que de la température. Si on note $p(t)$ cette probabilité, le
nombre de joints $D$ dysfonctionnant lorsque l'on effectue le vol à
température $t$ suit une loi binomiale de paramètre $n=6$ et
$p=p(t)$. Pour relier $p(t)$ à $t$, on va donc effectuer une
régression logistique.
```{r} ```{r}
logistic_reg = glm(data=data, Malfunction/Count ~ Temperature, weights=Count, logistic_reg <- glm(Malfunction / Count ~ Temperature * Pressure,
family=binomial(link='logit')) weights = Count,
family = binomial(link="logit"),
data = data)
# Résumé du modèle
summary(logistic_reg) summary(logistic_reg)
``` ```
L'estimateur le plus probable du paramètre de température est 0.001416 ## Résumé du modèle
et l'erreur standard de cet estimateur est de 0.049, autrement dit on L’intercept ($-21.77$) représente la valeur de la log-odds de défaillance lorsque la température et la pression sont nulles, une situation théorique en dehors du domaine couvert par les données. Ce coefficient n'est pas significatif ($p=0.638$).
ne peut pas distinguer d'impact particulier et il faut prendre nos
estimations avec des pincettes. Le coefficient associé à la température ($0.25$) reflète l'effet isolé de la température sur la probabilité de défaillance. Cet effet n'est également pas significatif ($p=0.703$), ce qui indique une grande incertitude dans l'estimation de cet effet.
Le coefficient de la pression ($0.13$) capture l'effet isolé de la pression sur la probabilité de défaillance. Tout comme pour la température, cet effet n'est pas significatif ($p=0.574$).
L'interaction entre température et pression ($-0.0018$) représente la synergie ou l'antagonisme potentiel entre ces deux variables. Cet effet est également non significatif ($p=0.596$).
# Estimation de la probabilité de dysfonctionnant des joints toriques ## Interprétation
La température prévue le jour du décollage est de 31°F. Essayons Aucun des termes du modèle n'est statistiquement significatif au seuil classique ($p<0.05$). Cela peut indiquer que les variables température et pression n'ont pas d'effet notable sur les défaillances dans ce jeu de données. Cependant, il est également possible que la taille limitée de l'échantillon et la distribution des données, en particulier le manque de données pour des températures très basses, entraînent une incertitude élevée dans les estimations.
d'estimer la probabilité de dysfonctionnement des joints toriques à
cette température à partir du modèle que nous venons de construire: ## Performances du modèle
En termes de performance, la déviance nulle (24.23) comparée à la déviance résiduelle (16.26) montre que le modèle réduit la déviance, mais pas suffisamment pour expliquer une grande partie de la variabilité dans les défaillances observées. Par ailleurs, l'AIC (37.817) est relativement élevé pour un modèle simple, ce qui reflète un ajustement limité aux données. Ces éléments suggèrent que le modèle actuel est loin d'être optimal pour prédire les défaillances dans ce contexte.
# Analysons le modèle à partir de données de prédictions
A cet effet, nous allons générer des valeurs fictives mais réaliste.
```{r} ```{r}
# shuttle=shuttle[shuttle$r!=0,] temp_seq <- seq(min(data$Temperature), max(data$Temperature), by = 1)
tempv = seq(from=30, to=90, by = .5) press_seq <- seq(min(data$Pressure), max(data$Pressure), by = 1)
rmv <- predict(logistic_reg,list(Temperature=tempv),type="response") grid <- expand.grid(Temperature = temp_seq, Pressure = press_seq)
plot(tempv,rmv,type="l",ylim=c(0,1)) grid$Failure_Prob <- predict(logistic_reg, newdata = grid, type = "response")
points(data=data, Malfunction/Count ~ Temperature)
``` ```
Comme on pouvait s'attendre au vu des données initiales, la Réalisons à présent un *Heatmap* des probabilités.
température n'a pas d'impact notable sur la probabilité d'échec des
joints toriques. Elle sera d'environ 0.2, comme dans les essais
précédents où nous il y a eu défaillance d'au moins un joint. Revenons
à l'ensemble des données initiales pour estimer la probabilité de
défaillance d'un joint:
```{r} ```{r}
data_full = read.csv("shuttle.csv",header=T) ggplot(grid,
sum(data_full$Malfunction)/sum(data_full$Count) aes(
x = Temperature,
y = Pressure,
fill = Failure_Prob)) +
geom_tile() +
scale_fill_gradient(
low = "blue",
high = "red") +
labs(title = "Probabilité de défaillance en fonction de la température et de la pression",
x = "Température (°F)", y = "Pression (psi)", fill = "Probabilité") +
theme_minimal()
``` ```
Cette probabilité est donc d'environ $p=0.065$, sachant qu'il existe La heatmap révèle une probabilité de défaillance légèrement plus élevée pour les basses températures, notamment entre 50 et 60°F, lorsqu'elles sont associées à une pression élevée d'environ 200 psi. Toutefois, les variations globales restent faibles, ce qui traduit l'incertitude des prédictions fournies par le modèle.
un joint primaire un joint secondaire sur chacune des trois parties du
lançeur, la probabilité de défaillance des deux joints d'un lançeur # Conclusion
est de $p^2 \approx 0.00425$. La probabilité de défaillance d'un des
lançeur est donc de $1-(1-p^2)^3 \approx 1.2%$. Ça serait vraiment Les analyses mettent en évidence une augmentation marquée de la proportion de défaillances à basse température, en particulier pour des températures inférieures à 60°F. Cependant, les données manquent d’observations à des températures très basses, comme 31°F (les conditions du jour du lancement), ce qui limite la capacité du modèle à estimer précisément le risque dans ces conditions critiques.
pas de chance... Tout est sous contrôle, le décollage peut donc avoir
lieu demain comme prévu. En ce qui concerne la pression, les données disponibles ne montrent pas d’influence significative sur la probabilité de défaillance. Cette absence d’effet apparent peut s'expliquer par la faible variabilité des pressions dans le jeu de données, dominé par une pression élevée de 200 psi, ce qui empêche une évaluation fiable de l'effet isolé ou combiné de la pression.
Seulement, le lendemain, la navette Challenger explosera et emportera L'interaction entre la température et la pression, quant à elle, n'a pas été identifiée comme significative par le modèle. Cela suggère qu'aucune synergie ou antagonisme notable entre ces deux variables ne peut être confirmé avec les données actuelles.
avec elle ses sept membres d'équipages. L'opinion publique est
fortement touchée et lors de l'enquête qui suivra, la fiabilité des Les principales limitations de cette analyse résident dans le manque de représentativité des données pour des températures basses, en dessous de 50°F. De plus, la concentration des observations à une pression élevée de 200 psi limite la possibilité d’explorer l’effet de la pression ou des combinaisons température-pression. Ces lacunes entraînent une incertitude élevée dans les estimations et réduisent la portée des conclusions.
joints toriques sera directement mise en cause. Au delà des problèmes
de communication interne à la NASA qui sont pour beaucoup dans ce Pour mieux capturer les relations non linéaires entre les variables, il est recommandé de tester des modèles alternatifs, tels que des modèles non linéaires ou utilisant des transformations des variables explicatives.
fiasco, l'analyse précédente comporte (au moins) un petit
problème... Saurez-vous le trouver ? Vous êtes libre de modifier cette Une collecte de données supplémentaires serait essentielle pour compléter l’analyse. Il serait particulièrement important d’obtenir des observations pour des températures basses, comme 31°F, et pour une gamme de pressions plus variée.
analyse et de regarder ce jeu de données sous tous les angles afin
d'expliquer ce qui ne va pas. Bien que le modèle ne révèle pas de relations statistiquement significatives, les graphiques exploratoires montrent une augmentation évidente des risques de défaillance à basse température. Ces résultats soulignent l'importance d'une collecte de données représentatives et d'une interprétation critique des tendances visuelles, en complément des analyses statistiques. L'adoption de telles pratiques aurait pu prévenir les conclusions erronées et mettre en lumière les risques sous-jacents, notamment dans des conditions extrêmes comme celles du jour du lancement de Challenger.
\ No newline at end of file
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