Commit ea066676 authored by 6ko_31's avatar 6ko_31

new

parent 169b625c
---
title: "Analyse du risque de d?faillance des joints toriques de la navette Challenger - CORRECTION"
author: "Arnaud Legrand & cor.FMG"
date: "14/12/2021"
output: html_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
# CORRECTION PERSONNELLE
On va essayer de refaire l'analyse avec les éléments qui nous semblent "légers" :
\- la disparition des données de malfonctions jugées inutiles, qui vont réduire
mécaniquement l’incertitude et biaisé la prise de décision
\- la sortie arbitraire du facteur pression dans la regression logistique
\- ou alternativement (1), tenter de réduire la difficulté d’analyse des
résultats de la régression par une approche plus conservatrice consistant à
détecter toute malfonction comme la survenue d’un évènement à éviter, à partir
du recodage de la variable en une variable binaire/booléenne 0/1 pure (=\>1 pour
la moindre malfonction de joint) =\> permettrait d’avoir **exp(coefficient
regression log) = odds-ratio qui associe la variable explicative à la variable
expliquée**)
## Chargement et visualisation du dataset
On commence de la même façon par le chargement des données /création du dataset de travail, mais nous ne retirons pas les données jugées valables arbitrairement. Nous conservons toutes les données de disfonctionnement des joints. Cela augmente la taille de l'échantillon et devrait réduire l'incertitude générale.
On les affiches ensuite
```{r}
data_f = read.csv("shuttle.csv",header=T)
data_f
```
On poursuit pour l'instant la même procédure d'analyse.
On va donc représenter les variations de dysfonctionnement des joints avec la température, sur les données non-tromquées
```{r}
plot(data=data_f, Malfunction/Count ~ Temperature, ylim=c(0,1))
```
C'est pas super évident, mais il semble malgré tout que la température "réduit" les dysfonctionnement.
Ce qui est visible en revanche, si on essaie d'agrandir les échelles, c'est que nous n'avons qu'une plage très ressérées d'observations, représentant des évènements de températures assez hohmogènes
```{r}
plot(data=data_f, Malfunction/Count~Temperature, xlim=c(30, 90), ylim=c(0,1))
```
Il était aussi possible de réaliser une visualisation plus précise, qui intégrait directement la regression logistique
```{r}
library(ggplot2)
ggplot(data_f,aes(x=Temperature, y=Malfunction/Count)) + geom_point(alpha=.3, size=3) +
theme_bw() + geom_smooth(method = "glm", method.args = list(family = "binomial")) + xlim(30,90)
```
On voit ici que la tendancce que nous donne la regression n'est déjà plus aussi sécurisante que les simple plots...
### Estimation de l'impact de la température
Avec le modèle complet
```{r}
logistic_reg1 = glm(data=data_f, Malfunction/Count ~ Temperature, weights=Count,
family=binomial(link='logit'))
summary(logistic_reg1)
```
**La température est devenue significative !**
L'analyse des coefficients restent cependant toujours compliqués (pas une véritable variable binaire qui permettrait d'avoir des odds-ratios par exponentielle des coefficients), bien que le signe de trompe pas : relation négative. Donc, plus la température monte, plus la proportion de défaillance des joints toriques baisse.
##### Essai twoby et Epi
Juste pour le fun
```{r}
library(Epi)
malf_c <- (data_f$Malfunction/data_f$Count)
twoby2(1-malf_c, 1-data_f$Temperature)
```
Ben ça marche pas, pas des variables binaires... :-)
```{r}
exp(-0.11560)
```
Envrion 0.9... Cela caractérise bien la perte de proba à mesure que la température augmente (et inversement, 1,15 pour si la température chute)
### Prédiction/Estimation de la probabilité de dysfonctionnant des joints toriques
On reprend le code proposé en modifiant les variables de calcul.
Ici, on crée une séquence par "0,5" de 30 à 90 (abscisses axe), et on crée un jeu de données prédites par le modèle de la regression logistique (ordonnées axe).
Ensuite, on le représente graphiqement
```{r}
tempv = seq(from=30, to=90, by = .5)
rmv <- predict(logistic_reg1,list(Temperature=tempv),type="response")
plot(tempv,rmv,type="l",ylim=c(0,1))
points(data=data_f, Malfunction/Count ~ Temperature)
```
Là, cela devient évident! Avec des température de 30 degré farenheit, le risque de défaillance est très grand ! Nous pourrions nous en tenir là, et estimer les defauts par l'absence d'un dataset complet...
## Intégration de la variable pression
```{r}
logistic_reg2 = glm(data=data_f, Malfunction/Count ~ Temperature + Pressure + Temperature:Pressure, weights=Count,
family=binomial(link='logit'))
summary(logistic_reg2)
```
Pas d'interaction, ni d'effet simple : le retrait de la pression n'était donc pas dommageable selon les données disponibles
## Modèle avec variables binaires : approche plus conservatrice
L'idée est de recoder la variable "incident" (ici la défaillance d'un joint torique) en une variablel binaire/bouléenne. Ainsi, on comptabilise le risque de défaillance d'au moins 1 joint torique (avec l'idée qu'un seul suffit à mettre en danger la navette)
Création de la variable binaire
```{r}
data_f$Malfunction_b <- ifelse(data_f$Malfunction>=1, 1,0)
```
On refait la regression
```{r}
logistic_reg3 = glm(data=data_f, Malfunction_b ~ Temperature, weights=Count,
family=binomial(link='logit'))
summary(logistic_reg3)
```
### Analyse des odds-ratios
La librairie twoby ne fonctonnera pas.
Mais ici, l'exp(coef) = OR!
```{r}
exp(0.23216)
```
On trouve qu'il y a 1,3 fois plus de chance de défaillance avec la baisse de la temperature.
Cette approche, comme on s'y attendait, montre plus facilemnt encore le risque qu'encourt la navette avec une plus forte probabilité signifiative qu'au moins 1 joint torique ne lâche avec la baisse de la température lors du lancement.
```{r}
tempv = seq(from=30, to=90, by = .5)
rmv <- predict(logistic_reg3,list(Temperature=tempv),type="response")
plot(tempv,rmv,type="l",ylim=c(0,1))
points(data=data_f, Malfunction_b ~ Temperature)
```
**En fait, si on en croit les prédictions du modèle, l'accident (défaillance d'au moins 1 joint torique) était inévitable en dessous de 50°F...**
This diff is collapsed.
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