diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..e4e5f6c8b2deb54bf38312dd9e2f53489b60d6a6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*~ \ No newline at end of file diff --git a/module1/module1_ressources_introduction_to_markdown_fr.org b/module1/module1_ressources_introduction_to_markdown_fr.org new file mode 100644 index 0000000000000000000000000000000000000000..4d3265e53a80fe711826f83697f4f4b309ddc9ec --- /dev/null +++ b/module1/module1_ressources_introduction_to_markdown_fr.org @@ -0,0 +1,243 @@ +# -- coding: utf-8-unix; mode:org; fill-column: 100; mode: auto-fill; -*- + +#+TITLE: Introduction à Markdown +#+DATE: June, 2018 +#+LANG: fr +#+STARTUP: overview indent +#+OPTIONS: num:nil toc:t + + +Voici un aperçu rapide de la syntaxe Markdown repris d'une +[[https://guides.github.com/features/mastering-markdown/][présentation de GitHub]] ainsi que de celles d'[[http://csrgxtu.github.io/2015/03/20/Writing-Mathematic-Fomulars-in-Markdown/][Archer Reilly]]. + +* Table des matières :TOC: +- [[#syntaxe][Syntaxe]] + - [[#headers][Headers]] + - [[#emphasis][Emphasis]] + - [[#lists][Lists]] + - [[#images][Images]] + - [[#links][Links]] + - [[#blockquotes][Blockquotes]] + - [[#inline-code][Inline code]] +- [[#écrire-des-maths][Écrire des Maths]] + - [[#lettres-grecques][Lettres grecques]] + - [[#fonctions-et-opérateurs][Fonctions et opérateurs]] + - [[#exposants-et-indices][Exposants et indices]] + - [[#fractions-coefficients-binomiaux-racines-][Fractions, coefficients binomiaux, racines...]] + - [[#sommes-et-intégrales][Sommes et intégrales]] + - [[#déguisements][Déguisements]] +- [[#autour-de-markdown][Autour de Markdown]] + + +* Syntaxe +** Headers +#+BEGIN_EXAMPLE + # This is an

tag + ## This is an

tag + ###### This is an

tag +#+END_EXAMPLE + + +** Emphasis +#+BEGIN_EXAMPLE + *This text will be italic* + _This will also be italic_ + + **This text will be bold** + __This will also be bold__ + + _You **can** combine them_ +#+END_EXAMPLE + + +** Lists +*** Unordered +#+BEGIN_EXAMPLE + - Item 1 + - Item 2 + - Item 2a + - Item 2b +#+END_EXAMPLE +*** Ordered +#+BEGIN_EXAMPLE + 1. Item 1 + 2. Item 2 + 3. Item 3 + 1. Item 3a + 2. Item 3b +#+END_EXAMPLE + +** Images +#+BEGIN_EXAMPLE + ![GitHub Logo](/images/logo.png) + Format: ![Alt Text](url) +#+END_EXAMPLE + +** Links +#+BEGIN_EXAMPLE + http://github.com - automatic! + [GitHub](http://github.com) +#+END_EXAMPLE + +** Blockquotes +#+BEGIN_EXAMPLE + As Kanye West said: + + > We're living the future so + > the present is our past. +#+END_EXAMPLE + +** Inline code +#+BEGIN_EXAMPLE +To print some text with Python, you should use the `print()` function. +``` +print("Hello world!") +``` +#+END_EXAMPLE + +* Écrire des Maths +Il est possible d'écrire des formules en Markdown, soit en mode *inline* +soit en mode *displayed formulas*. Dans le premier cas, les formules +sont incluses directement à l'intérieur du paragraphe courant alors +que dans le second, elles apparaissent centrées et mises en exergue. + +Le formatage de la formule est légèrement différent dans les deux cas +car pour qu'une formule s'affiche joliment sur une seule ligne, il +faut la "tasser" un peu plus que lorsqu'elle est mise en valeur. + +Pour écrire une formule en mode *inline*, il faut la délimiter par un =$= +(du coup, pour écrire le symbole dollar, il faut le préfixer par un +backslash, comme ceci : =\$=) alors que pour écrire en mode *displayed*, il +faut la délimiter par un =$$=. Un petit exemple valant mieux qu'un long +discours, voici concrètement comment cela fonctionne : + +#+BEGIN_EXAMPLE +Cette expression $\sum_{i=1}^n X_i$ est inlinée. +#+END_EXAMPLE + +Cette expression $\sum_{i=1}^n X_i$ est inlinée. + +#+BEGIN_EXAMPLE +Cette expression est mise en valeur : +$$\sum_{i=1}^n X_i$$ +#+END_EXAMPLE + +Cette expression est mise en valeur : +$$\sum_{i=1}^n X_i$$ + +Nous vous présentons par la suite une sélection de symboles et de +commandes courants. En fait, à peu près tout ce qui est classique +dans le langage LaTeX peut être utilisé pourvu que vous délimitiez +bien avec un =$=. Pour d'autres exemples plus complets jetez un coup +d'œil à ces [[http://www.statpower.net/Content/310/R%20Stuff/SampleMarkdown.html][exemples de James H. Steiger]]. +** Lettres grecques + | Symbole | Commande | + |---------+----------| + | $\alpha$ | =$\alpha$= | + | $\beta$ | =$\beta$= | + | $\gamma$ | =$\gamma$= | + | $\Gamma$ | =$\Gamma$= | + | $\pi$ | =$\pi$= | + +** Fonctions et opérateurs + | Symbole | Commande | + |---------+----------| + | $\cos$ | =$\cos$= | + | $\sin$ | =$\sin$= | + | $\lim$ | =$\lim$= | + | $\exp$ | =$\exp$= | + | $\to$ | =$\to$= | + | $\in$ | =$\in$= | + | $\forall$ | =$\forall$= | + | $\exists$ | =$\exists$= | + | $\equiv$ | =$\equiv$= | + | $\sim$ | =$\sim$= | + | $\approx$ | =$\approx$= | + | $\times$ | =$\times$= | + | $\le$ | =$\le$= | + | $\ge$ | =$\ge$= | + +** Exposants et indices + | Symbole | Commande | + |---------+-----------| + | $k_{n+1}$ | =$k_{n+1}$= | + | $n^2$ | =$n^2$= | + | $k_n^2$ | =$k_n^2$= | + +** Fractions, coefficients binomiaux, racines... + | Symbole | Commande | + |-----------------------------+-----------------------------| + | $\frac{4z^3}{16}$ | =$\frac{4z^3}{16}$= | + | $\frac{n!}{k!(n-k)!}$ | =$\frac{n!}{k!(n-k)!}$= | + | $\binom{n}{k}$ | =$\binom{n}{k}$= | + | $\frac{\frac{x}{1}}{x - y}$ | =$\frac{\frac{x}{1}}{x - y}$= | + | $^3/_7$ | =$^3/_7$= | + | $\sqrt{k}$ | =$\sqrt{k}$= | + | $\sqrt[n]{k}$ | =$\sqrt[n]{k}$= | + +** Sommes et intégrales + | Symbole | Commande | + |---------------------------------+--------------------------------------| + | $\sum_{i=1}^{10} t_i$ | =$\sum_{i=1}^{10} t_i$= | + | $\int_0^\infty \mathrm{e}^{-x}\,\mathrm{d}x$ | =$\int_0^\infty \mathrm{e}^{-x}\,\mathrm{d}x$= | + +** Déguisements + | Symbole | Commande | + |-----------------------+-----------------------| + | $\hat{a}$ | =$\hat{a}$= | + | $\bar{a}$ | =$\bar{a}$= | + | $\dot{a}$ | =$\dot{a}$= | + | $\ddot{a}$ | =$\ddot{a}$= | + | $\overrightarrow{AB}$ | =$\overrightarrow{AB}$= | + + +* Autour de =Markdown= +Tout d'abord, pour aller plus loin avec =Markdown= et ses extensions / ramifications : +- Le didacticiel « [[https://enacit1.epfl.ch/markdown-pandoc/][Élaboration et conversion de documents avec Markdown et Pandoc]] » de Jean-Daniel Bonjour (EPFL), précis, complet, concis, en français ; un vrai bonheur ! +- L'article [[https://en.wikipedia.org/wiki/Markdown#Example][Markdown]] de wikipedia en anglais contient un bon pense-bête sur la syntaxe =Markdown=. +- GitHub propose un court et efficace didacticiel (en anglais) : [[https://guides.github.com/features/mastering-markdown/][Mastering Markdown]]. + +Comme nous l'illustrons dans le « film d'écran » (/screencast/), l'éditeur de texte des dépôts =GitHub= +et =GitLab= permet d'interpréter / transformer à la demande un fichier =Markdown= en un fichier +=html=. C'est à la fois agréable et pratique, mais ce n'est pas une solution pour une utilisation +quotidienne de =Markdown=, pour cela, il est plus efficace d'éditer son texte, avec un éditeur de +texte, sur son ordinateur, avant de « l'exporter » dans un format comme =html=, =pdf=, =docx=, =epub=, +etc. Il existe des éditeurs plus ou moins spécialisés pour =Markdown=, certains sont indiqués sur la +page [[https://github.com/jgm/pandoc/wiki/Pandoc-Extras#editors][Editors]] du site de =Pandoc=, mais nous préconisons clairement l'emploi d'un éditeur de texte +« généraliste » capable de reconnaître la syntaxe =Markdown=. Nous en avons indiqué en début de +séquence et on pourra trouver des informations complémentaires dans la section +[[https://enacit1.epfl.ch/markdown-pandoc/#editeurs_markdown][Quelques éditeurs adaptés à l'édition Markdown]] du didacticiel de Jean-Daniel Bonjour. + +Pour convertir un fichier =Markdown= en un format « arbitraire », la solution à ce jour la plus +complète est [[http://pandoc.org/][Pandoc]], logiciel développé par John MacFarlane, un philosophe de Berkeley (le site +[[https://github.com/jgm/pandoc][GitHub]]). En plus du site de =Pandoc=, le didacticiel de J.-D. Bonjour donne de nombreuses explications +sur comment installer et utiliser =Pandoc= dans la section [[https://enacit1.epfl.ch/markdown-pandoc/#commande_pandoc][Utilisation du convertisseur Pandoc]]. Comme +=Pandoc= -- écrit en Haskell -- peut être parfois un peu difficile à installer, nous indiquons +maintenant quelques solutions alternatives : +- Des sites comme [[http://www.markdowntopdf.com/]] et [[http://markdown2pdf.com/]] permettent de convertir + en ligne un fichier =Markdown= en un fichier =pdf=. +- Le projet [[http://commonmark.org/][CommonMark]] propose, en plus d'une spécification plus rigoureuse de la syntaxe =Markdown=, + des convertisseurs =Markdown= → =html= / =LaTeX= (et plus) écrits en =C= et en =JavaScript= + ([[https://github.com/CommonMark/CommonMark]]). +- Le site de [[https://daringfireball.net/projects/markdown/][John Gruber]], le créateur de =Markdown=, fournit un convertisseur =Markdown= → =html= écrit en + =Perl=. +- [[http://fletcherpenney.net/multimarkdown/][MultiMarkdown]] est une autre extension de =Markdown= qui vient avec son convertisseur =Markdown= → =html= + écrit en =C=. +- [[https://github.com/joeyespo/grip][grip]] est un serveur écrit en =Python= qui permet de convertir et visualiser à la volée des fichiers + =Markdown= avec son navigateur (très utile pour éviter d'avoir à faire des « commits » en grande + quantité lorsqu'on écrit de tels fichiers pour un dépôt =GitHub= ou =GitLab=). +La conversion en =pdf= passe toujours par [[https://fr.wikipedia.org/wiki/LaTeX][LaTeX]] ce qui nécessite d'avoir une version complète et à +jour de ce logiciel sur sa machine. + +Dans la petite démonstration, nous montrons comment générer un fichier =docx= à partir d'un fichier =md= +avec =Pandoc= et nous soulignons qu'il est alors possible d'utiliser un traitement de texte comme +=LibreOffice= pour modifier le fichier obtenu. Il est clair que si des modifications sont apportées au +=docx= elles ne seront pas (automatiquement) propagées au =md=. Il faudra utiliser =Pandoc= pour cela et +effectuer une conversion de =docx= vers =md= (et seuls les éléments du format =docx= qui existent en =md= +seront conservés). + +Une stratégie qui est souvent employée et qui fonctionne bien en pratique consiste à faire le gros +du travail de rédaction d'un article ou d'un mémoire en =Markdown=. La rédaction terminée, le fichier +est exporté au format =docx= (ou =LaTeX=) et des ajustements de mise en page sont alors effectués avec +un logiciel de traitement de texte (ou un éditeur =LaTeX=). + diff --git a/module2/exo1/toy_document_en.Rmd b/module2/exo1/toy_document_en.Rmd deleted file mode 100644 index 13b258ddd0da29bc3bf08c64b6a1db742f6d5409..0000000000000000000000000000000000000000 --- a/module2/exo1/toy_document_en.Rmd +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: "Your title" -author: "Your name" -date: "Today's date" -output: html_document ---- - - -```{r setup, include=FALSE} -knitr::opts_chunk$set(echo = TRUE) -``` - -## Some explanations - -This is an R Markdown document that you can easily export to HTML, PDF, and MS Word formats. For more information on R Markdown, see . - -When you click on the button **Knit**, the document will be compiled in order to re-execute the R code and to include the results into the final document. As we have shown in the video, R code is inserted as follows: - -```{r cars} -summary(cars) -``` - -It is also straightforward to include figures. For example: - -```{r pressure, echo=FALSE} -plot(pressure) -``` - -Note the parameter `echo = FALSE` that indicates that the code will not appear in the final version of the document. We recommend not to use this parameter in the context of this MOOC, because we want your data analyses to be perfectly transparent and reproducible. - -Since the results are not stored in Rmd files, you should generate an HTML or PDF version of your exercises and commit them. Otherwise reading and checking your analysis will be difficult for anyone else but you. - -Now it's your turn! You can delete all this information and replace it by your computational document. diff --git a/module2/exo1/toy_document_orgmode_R_en.org b/module2/exo1/toy_document_orgmode_R_en.org deleted file mode 100644 index 2b73d64e82dad485ab562f8bda6434ffa7b68d27..0000000000000000000000000000000000000000 --- a/module2/exo1/toy_document_orgmode_R_en.org +++ /dev/null @@ -1,81 +0,0 @@ -#+TITLE: Your title -#+AUTHOR: Your name -#+DATE: Today's date -#+LANGUAGE: en -# #+PROPERTY: header-args :eval never-export - -#+HTML_HEAD: -#+HTML_HEAD: -#+HTML_HEAD: -#+HTML_HEAD: -#+HTML_HEAD: -#+HTML_HEAD: - -* Some explanations - -This is an org-mode document with code examples in R. Once opened in -Emacs, this document can easily be exported to HTML, PDF, and Office -formats. For more information on org-mode, see -https://orgmode.org/guide/. - -When you type the shortcut =C-c C-e h o=, this document will be -exported as HTML. All the code in it will be re-executed, and the -results will be retrieved and included into the exported document. If -you do not want to re-execute all code each time, you can delete the # -and the space before ~#+PROPERTY:~ in the header of this document. - -Like we showed in the video, R code is included as follows (and is -exxecuted by typing ~C-c C-c~): - -#+begin_src R :results output :exports both -print("Hello world!") -#+end_src - -#+RESULTS: -: [1] "Hello world!" - -And now the same but in an R session. This is the most frequent -situation, because R is really an interactive language. With a -session, R's state, i.e. the values of all the variables, remains -persistent from one code block to the next. The code is still executed -using ~C-c C-c~. - -#+begin_src R :results output :session *R* :exports both -summary(cars) -#+end_src - -#+RESULTS: -: speed dist -: Min. : 4.0 Min. : 2.00 -: 1st Qu.:12.0 1st Qu.: 26.00 -: Median :15.0 Median : 36.00 -: Mean :15.4 Mean : 42.98 -: 3rd Qu.:19.0 3rd Qu.: 56.00 -: Max. :25.0 Max. :120.00 - -Finally, an example for graphical output: -#+begin_src R :results output graphics :file "./cars.png" :exports results :width 600 :height 400 :session *R* -plot(cars) -#+end_src - -#+RESULTS: -[[file:./cars.png]] - -Note the parameter ~:exports results~, which indicates that the code -will not appear in the exported document. We recommend that in the -context of this MOOC, you always leave this parameter setting as -~:exports both~, because we want your analyses to be perfectly -transparent and reproducible. - -Watch out: the figure generated by the code block is /not/ stored in -the org document. It's a plain file, here named ~cars.png~. You have -to commit it explicitly if you want your analysis to be legible and -understandable on GitLab. - -Finally, don't forget that we provide in the resource section of this -MOOC a configuration with a few keyboard shortcuts that allow you to -quickly create code blocks in R by typing ~ -#+HTML_HEAD: -#+HTML_HEAD: -#+HTML_HEAD: -#+HTML_HEAD: -#+HTML_HEAD: - -* Some explanations - -This is an org-mode document with code examples in R. Once opened in -Emacs, this document can easily be exported to HTML, PDF, and Office -formats. For more information on org-mode, see -https://orgmode.org/guide/. - -When you type the shortcut =C-c C-e h o=, this document will be -exported as HTML. All the code in it will be re-executed, and the -results will be retrieved and included into the exported document. If -you do not want to re-execute all code each time, you can delete the # -and the space before ~#+PROPERTY:~ in the header of this document. - -Like we showed in the video, Python code is included as follows (and -is exxecuted by typing ~C-c C-c~): - -#+begin_src python :results output :exports both -print("Hello world!") -#+end_src - -#+RESULTS: -: Hello world! - -And now the same but in an Python session. With a session, Python's -state, i.e. the values of all the variables, remains persistent from -one code block to the next. The code is still executed using ~C-c -C-c~. - -#+begin_src python :results output :session :exports both -import numpy -x=numpy.linspace(-15,15) -print(x) -#+end_src - -#+RESULTS: -#+begin_example -[-15. -14.3877551 -13.7755102 -13.16326531 -12.55102041 - -11.93877551 -11.32653061 -10.71428571 -10.10204082 -9.48979592 - -8.87755102 -8.26530612 -7.65306122 -7.04081633 -6.42857143 - -5.81632653 -5.20408163 -4.59183673 -3.97959184 -3.36734694 - -2.75510204 -2.14285714 -1.53061224 -0.91836735 -0.30612245 - 0.30612245 0.91836735 1.53061224 2.14285714 2.75510204 - 3.36734694 3.97959184 4.59183673 5.20408163 5.81632653 - 6.42857143 7.04081633 7.65306122 8.26530612 8.87755102 - 9.48979592 10.10204082 10.71428571 11.32653061 11.93877551 - 12.55102041 13.16326531 13.7755102 14.3877551 15. ] -#+end_example - -Finally, an example for graphical output: -#+begin_src python :results output file :session :var matplot_lib_filename="./cosxsx.png" :exports results -import matplotlib.pyplot as plt - -plt.figure(figsize=(10,5)) -plt.plot(x,numpy.cos(x)/x) -plt.tight_layout() - -plt.savefig(matplot_lib_filename) -print(matplot_lib_filename) -#+end_src - -#+RESULTS: -[[file:./cosxsx.png]] - -Note the parameter ~:exports results~, which indicates that the code -will not appear in the exported document. We recommend that in the -context of this MOOC, you always leave this parameter setting as -~:exports both~, because we want your analyses to be perfectly -transparent and reproducible. - -Watch out: the figure generated by the code block is /not/ stored in -the org document. It's a plain file, here named ~cosxsx.png~. You have -to commit it explicitly if you want your analysis to be legible and -understandable on GitLab. - -Finally, don't forget that we provide in the resource section of this -MOOC a configuration with a few keyboard shortcuts that allow you to -quickly create code blocks in Python by typing ~ -#+HTML_HEAD: -#+HTML_HEAD: -#+HTML_HEAD: -#+HTML_HEAD: -#+HTML_HEAD: - -* Some explanations - -This is an org-mode document with code examples in R. Once opened in -Emacs, this document can easily be exported to HTML, PDF, and Office -formats. For more information on org-mode, see -https://orgmode.org/guide/. - -When you type the shortcut =C-c C-e h o=, this document will be -exported as HTML. All the code in it will be re-executed, and the -results will be retrieved and included into the exported document. If -you do not want to re-execute all code each time, you can delete the # -and the space before ~#+PROPERTY:~ in the header of this document. - -Like we showed in the video, R code is included as follows (and is -exxecuted by typing ~C-c C-c~): - -#+begin_src R :results output :exports both -print("Hello world!") -#+end_src - -#+RESULTS: -: [1] "Hello world!" - -And now the same but in an R session. This is the most frequent -situation, because R is really an interactive language. With a -session, R's state, i.e. the values of all the variables, remains -persistent from one code block to the next. The code is still executed -using ~C-c C-c~. - -#+begin_src R :results output :session *R* :exports both -summary(cars) -#+end_src - -#+RESULTS: -: speed dist -: Min. : 4.0 Min. : 2.00 -: 1st Qu.:12.0 1st Qu.: 26.00 -: Median :15.0 Median : 36.00 -: Mean :15.4 Mean : 42.98 -: 3rd Qu.:19.0 3rd Qu.: 56.00 -: Max. :25.0 Max. :120.00 - -Finally, an example for graphical output: -#+begin_src R :results output graphics :file "./cars.png" :exports results :width 600 :height 400 :session *R* -plot(cars) -#+end_src - -#+RESULTS: -[[file:./cars.png]] - -Note the parameter ~:exports results~, which indicates that the code -will not appear in the exported document. We recommend that in the -context of this MOOC, you always leave this parameter setting as -~:exports both~, because we want your analyses to be perfectly -transparent and reproducible. - -Watch out: the figure generated by the code block is /not/ stored in -the org document. It's a plain file, here named ~cars.png~. You have -to commit it explicitly if you want your analysis to be legible and -understandable on GitLab. - -Finally, don't forget that we provide in the resource section of this -MOOC a configuration with a few keyboard shortcuts that allow you to -quickly create code blocks in R by typing ~. - -When you click on the button **Knit**, the document will be compiled in order to re-execute the R code and to include the results into the final document. As we have shown in the video, R code is inserted as follows: - -```{r cars} -summary(cars) -``` - -It is also straightforward to include figures. For example: - -```{r pressure, echo=FALSE} -plot(pressure) -``` - -Note the parameter `echo = FALSE` that indicates that the code will not appear in the final version of the document. We recommend not to use this parameter in the context of this MOOC, because we want your data analyses to be perfectly transparent and reproducible. - -Since the results are not stored in Rmd files, you should generate an HTML or PDF version of your exercises and commit them. Otherwise reading and checking your analysis will be difficult for anyone else but you. - -Now it's your turn! You can delete all this information and replace it by your computational document. diff --git a/module2/exo2/exercice_en.ipynb b/module2/exo2/exercice_en.ipynb deleted file mode 100644 index 0bbbe371b01e359e381e43239412d77bf53fb1fb..0000000000000000000000000000000000000000 --- a/module2/exo2/exercice_en.ipynb +++ /dev/null @@ -1,25 +0,0 @@ -{ - "cells": [], - "metadata": { - "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.3" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} - diff --git a/module2/exo2/exercice_python_en.org b/module2/exo2/exercice_python_en.org deleted file mode 100644 index 5782f493934678ba782fb65634a4d86e5f3adefc..0000000000000000000000000000000000000000 --- a/module2/exo2/exercice_python_en.org +++ /dev/null @@ -1,94 +0,0 @@ -#+TITLE: Your title -#+AUTHOR: Your name -#+DATE: Today's date -#+LANGUAGE: en -# #+PROPERTY: header-args :eval never-export - -#+HTML_HEAD: -#+HTML_HEAD: -#+HTML_HEAD: -#+HTML_HEAD: -#+HTML_HEAD: -#+HTML_HEAD: - -* Some explanations - -This is an org-mode document with code examples in R. Once opened in -Emacs, this document can easily be exported to HTML, PDF, and Office -formats. For more information on org-mode, see -https://orgmode.org/guide/. - -When you type the shortcut =C-c C-e h o=, this document will be -exported as HTML. All the code in it will be re-executed, and the -results will be retrieved and included into the exported document. If -you do not want to re-execute all code each time, you can delete the # -and the space before ~#+PROPERTY:~ in the header of this document. - -Like we showed in the video, Python code is included as follows (and -is exxecuted by typing ~C-c C-c~): - -#+begin_src python :results output :exports both -print("Hello world!") -#+end_src - -#+RESULTS: -: Hello world! - -And now the same but in an Python session. With a session, Python's -state, i.e. the values of all the variables, remains persistent from -one code block to the next. The code is still executed using ~C-c -C-c~. - -#+begin_src python :results output :session :exports both -import numpy -x=numpy.linspace(-15,15) -print(x) -#+end_src - -#+RESULTS: -#+begin_example -[-15. -14.3877551 -13.7755102 -13.16326531 -12.55102041 - -11.93877551 -11.32653061 -10.71428571 -10.10204082 -9.48979592 - -8.87755102 -8.26530612 -7.65306122 -7.04081633 -6.42857143 - -5.81632653 -5.20408163 -4.59183673 -3.97959184 -3.36734694 - -2.75510204 -2.14285714 -1.53061224 -0.91836735 -0.30612245 - 0.30612245 0.91836735 1.53061224 2.14285714 2.75510204 - 3.36734694 3.97959184 4.59183673 5.20408163 5.81632653 - 6.42857143 7.04081633 7.65306122 8.26530612 8.87755102 - 9.48979592 10.10204082 10.71428571 11.32653061 11.93877551 - 12.55102041 13.16326531 13.7755102 14.3877551 15. ] -#+end_example - -Finally, an example for graphical output: -#+begin_src python :results output file :session :var matplot_lib_filename="./cosxsx.png" :exports results -import matplotlib.pyplot as plt - -plt.figure(figsize=(10,5)) -plt.plot(x,numpy.cos(x)/x) -plt.tight_layout() - -plt.savefig(matplot_lib_filename) -print(matplot_lib_filename) -#+end_src - -#+RESULTS: -[[file:./cosxsx.png]] - -Note the parameter ~:exports results~, which indicates that the code -will not appear in the exported document. We recommend that in the -context of this MOOC, you always leave this parameter setting as -~:exports both~, because we want your analyses to be perfectly -transparent and reproducible. - -Watch out: the figure generated by the code block is /not/ stored in -the org document. It's a plain file, here named ~cosxsx.png~. You have -to commit it explicitly if you want your analysis to be legible and -understandable on GitLab. - -Finally, don't forget that we provide in the resource section of this -MOOC a configuration with a few keyboard shortcuts that allow you to -quickly create code blocks in Python by typing ~ -#+HTML_HEAD: -#+HTML_HEAD: -#+HTML_HEAD: -#+HTML_HEAD: -#+HTML_HEAD: - -* Some explanations - -This is an org-mode document with code examples in R. Once opened in -Emacs, this document can easily be exported to HTML, PDF, and Office -formats. For more information on org-mode, see -https://orgmode.org/guide/. - -When you type the shortcut =C-c C-e h o=, this document will be -exported as HTML. All the code in it will be re-executed, and the -results will be retrieved and included into the exported document. If -you do not want to re-execute all code each time, you can delete the # -and the space before ~#+PROPERTY:~ in the header of this document. - -Like we showed in the video, R code is included as follows (and is -exxecuted by typing ~C-c C-c~): - -#+begin_src R :results output :exports both -print("Hello world!") -#+end_src - -#+RESULTS: -: [1] "Hello world!" - -And now the same but in an R session. This is the most frequent -situation, because R is really an interactive language. With a -session, R's state, i.e. the values of all the variables, remains -persistent from one code block to the next. The code is still executed -using ~C-c C-c~. - -#+begin_src R :results output :session *R* :exports both -summary(cars) -#+end_src - -#+RESULTS: -: speed dist -: Min. : 4.0 Min. : 2.00 -: 1st Qu.:12.0 1st Qu.: 26.00 -: Median :15.0 Median : 36.00 -: Mean :15.4 Mean : 42.98 -: 3rd Qu.:19.0 3rd Qu.: 56.00 -: Max. :25.0 Max. :120.00 - -Finally, an example for graphical output: -#+begin_src R :results output graphics :file "./cars.png" :exports results :width 600 :height 400 :session *R* -plot(cars) -#+end_src - -#+RESULTS: -[[file:./cars.png]] - -Note the parameter ~:exports results~, which indicates that the code -will not appear in the exported document. We recommend that in the -context of this MOOC, you always leave this parameter setting as -~:exports both~, because we want your analyses to be perfectly -transparent and reproducible. - -Watch out: the figure generated by the code block is /not/ stored in -the org document. It's a plain file, here named ~cars.png~. You have -to commit it explicitly if you want your analysis to be legible and -understandable on GitLab. - -Finally, don't forget that we provide in the resource section of this -MOOC a configuration with a few keyboard shortcuts that allow you to -quickly create code blocks in R by typing ~. - -When you click on the button **Knit**, the document will be compiled in order to re-execute the R code and to include the results into the final document. As we have shown in the video, R code is inserted as follows: - -```{r cars} -summary(cars) -``` - -It is also straightforward to include figures. For example: - -```{r pressure, echo=FALSE} -plot(pressure) -``` - -Note the parameter `echo = FALSE` that indicates that the code will not appear in the final version of the document. We recommend not to use this parameter in the context of this MOOC, because we want your data analyses to be perfectly transparent and reproducible. - -Since the results are not stored in Rmd files, you should generate an HTML or PDF version of your exercises and commit them. Otherwise reading and checking your analysis will be difficult for anyone else but you. - -Now it's your turn! You can delete all this information and replace it by your computational document. diff --git a/module2/exo3/exercice_en.ipynb b/module2/exo3/exercice_en.ipynb deleted file mode 100644 index 0bbbe371b01e359e381e43239412d77bf53fb1fb..0000000000000000000000000000000000000000 --- a/module2/exo3/exercice_en.ipynb +++ /dev/null @@ -1,25 +0,0 @@ -{ - "cells": [], - "metadata": { - "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.3" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} - diff --git a/module2/exo3/exercice_python_en.org b/module2/exo3/exercice_python_en.org deleted file mode 100644 index 5782f493934678ba782fb65634a4d86e5f3adefc..0000000000000000000000000000000000000000 --- a/module2/exo3/exercice_python_en.org +++ /dev/null @@ -1,94 +0,0 @@ -#+TITLE: Your title -#+AUTHOR: Your name -#+DATE: Today's date -#+LANGUAGE: en -# #+PROPERTY: header-args :eval never-export - -#+HTML_HEAD: -#+HTML_HEAD: -#+HTML_HEAD: -#+HTML_HEAD: -#+HTML_HEAD: -#+HTML_HEAD: - -* Some explanations - -This is an org-mode document with code examples in R. Once opened in -Emacs, this document can easily be exported to HTML, PDF, and Office -formats. For more information on org-mode, see -https://orgmode.org/guide/. - -When you type the shortcut =C-c C-e h o=, this document will be -exported as HTML. All the code in it will be re-executed, and the -results will be retrieved and included into the exported document. If -you do not want to re-execute all code each time, you can delete the # -and the space before ~#+PROPERTY:~ in the header of this document. - -Like we showed in the video, Python code is included as follows (and -is exxecuted by typing ~C-c C-c~): - -#+begin_src python :results output :exports both -print("Hello world!") -#+end_src - -#+RESULTS: -: Hello world! - -And now the same but in an Python session. With a session, Python's -state, i.e. the values of all the variables, remains persistent from -one code block to the next. The code is still executed using ~C-c -C-c~. - -#+begin_src python :results output :session :exports both -import numpy -x=numpy.linspace(-15,15) -print(x) -#+end_src - -#+RESULTS: -#+begin_example -[-15. -14.3877551 -13.7755102 -13.16326531 -12.55102041 - -11.93877551 -11.32653061 -10.71428571 -10.10204082 -9.48979592 - -8.87755102 -8.26530612 -7.65306122 -7.04081633 -6.42857143 - -5.81632653 -5.20408163 -4.59183673 -3.97959184 -3.36734694 - -2.75510204 -2.14285714 -1.53061224 -0.91836735 -0.30612245 - 0.30612245 0.91836735 1.53061224 2.14285714 2.75510204 - 3.36734694 3.97959184 4.59183673 5.20408163 5.81632653 - 6.42857143 7.04081633 7.65306122 8.26530612 8.87755102 - 9.48979592 10.10204082 10.71428571 11.32653061 11.93877551 - 12.55102041 13.16326531 13.7755102 14.3877551 15. ] -#+end_example - -Finally, an example for graphical output: -#+begin_src python :results output file :session :var matplot_lib_filename="./cosxsx.png" :exports results -import matplotlib.pyplot as plt - -plt.figure(figsize=(10,5)) -plt.plot(x,numpy.cos(x)/x) -plt.tight_layout() - -plt.savefig(matplot_lib_filename) -print(matplot_lib_filename) -#+end_src - -#+RESULTS: -[[file:./cosxsx.png]] - -Note the parameter ~:exports results~, which indicates that the code -will not appear in the exported document. We recommend that in the -context of this MOOC, you always leave this parameter setting as -~:exports both~, because we want your analyses to be perfectly -transparent and reproducible. - -Watch out: the figure generated by the code block is /not/ stored in -the org document. It's a plain file, here named ~cosxsx.png~. You have -to commit it explicitly if you want your analysis to be legible and -understandable on GitLab. - -Finally, don't forget that we provide in the resource section of this -MOOC a configuration with a few keyboard shortcuts that allow you to -quickly create code blocks in Python by typing ~ -#+HTML_HEAD: -#+HTML_HEAD: -#+HTML_HEAD: -#+HTML_HEAD: -#+HTML_HEAD: - -* Some explanations - -This is an org-mode document with code examples in R. Once opened in -Emacs, this document can easily be exported to HTML, PDF, and Office -formats. For more information on org-mode, see -https://orgmode.org/guide/. - -When you type the shortcut =C-c C-e h o=, this document will be -exported as HTML. All the code in it will be re-executed, and the -results will be retrieved and included into the exported document. If -you do not want to re-execute all code each time, you can delete the # -and the space before ~#+PROPERTY:~ in the header of this document. - -Like we showed in the video, R code is included as follows (and is -exxecuted by typing ~C-c C-c~): - -#+begin_src R :results output :exports both -print("Hello world!") -#+end_src - -#+RESULTS: -: [1] "Hello world!" - -And now the same but in an R session. This is the most frequent -situation, because R is really an interactive language. With a -session, R's state, i.e. the values of all the variables, remains -persistent from one code block to the next. The code is still executed -using ~C-c C-c~. - -#+begin_src R :results output :session *R* :exports both -summary(cars) -#+end_src - -#+RESULTS: -: speed dist -: Min. : 4.0 Min. : 2.00 -: 1st Qu.:12.0 1st Qu.: 26.00 -: Median :15.0 Median : 36.00 -: Mean :15.4 Mean : 42.98 -: 3rd Qu.:19.0 3rd Qu.: 56.00 -: Max. :25.0 Max. :120.00 - -Finally, an example for graphical output: -#+begin_src R :results output graphics :file "./cars.png" :exports results :width 600 :height 400 :session *R* -plot(cars) -#+end_src - -#+RESULTS: -[[file:./cars.png]] - -Note the parameter ~:exports results~, which indicates that the code -will not appear in the exported document. We recommend that in the -context of this MOOC, you always leave this parameter setting as -~:exports both~, because we want your analyses to be perfectly -transparent and reproducible. - -Watch out: the figure generated by the code block is /not/ stored in -the org document. It's a plain file, here named ~cars.png~. You have -to commit it explicitly if you want your analysis to be legible and -understandable on GitLab. - -Finally, don't forget that we provide in the resource section of this -MOOC a configuration with a few keyboard shortcuts that allow you to -quickly create code blocks in R by typing ~. - -When you click on the button **Knit**, the document will be compiled in order to re-execute the R code and to include the results into the final document. As we have shown in the video, R code is inserted as follows: - -```{r cars} -summary(cars) -``` - -It is also straightforward to include figures. For example: - -```{r pressure, echo=FALSE} -plot(pressure) -``` - -Note the parameter `echo = FALSE` that indicates that the code will not appear in the final version of the document. We recommend not to use this parameter in the context of this MOOC, because we want your data analyses to be perfectly transparent and reproducible. - -Since the results are not stored in Rmd files, you should generate an HTML or PDF version of your exercises and commit them. Otherwise reading and checking your analysis will be difficult for anyone else but you. - -Now it's your turn! You can delete all this information and replace it by your computational document. diff --git a/module2/exo4/exercice_en.ipynb b/module2/exo4/exercice_en.ipynb deleted file mode 100644 index 0bbbe371b01e359e381e43239412d77bf53fb1fb..0000000000000000000000000000000000000000 --- a/module2/exo4/exercice_en.ipynb +++ /dev/null @@ -1,25 +0,0 @@ -{ - "cells": [], - "metadata": { - "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.3" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} - diff --git a/module2/exo4/exercice_python_en.org b/module2/exo4/exercice_python_en.org deleted file mode 100644 index 5782f493934678ba782fb65634a4d86e5f3adefc..0000000000000000000000000000000000000000 --- a/module2/exo4/exercice_python_en.org +++ /dev/null @@ -1,94 +0,0 @@ -#+TITLE: Your title -#+AUTHOR: Your name -#+DATE: Today's date -#+LANGUAGE: en -# #+PROPERTY: header-args :eval never-export - -#+HTML_HEAD: -#+HTML_HEAD: -#+HTML_HEAD: -#+HTML_HEAD: -#+HTML_HEAD: -#+HTML_HEAD: - -* Some explanations - -This is an org-mode document with code examples in R. Once opened in -Emacs, this document can easily be exported to HTML, PDF, and Office -formats. For more information on org-mode, see -https://orgmode.org/guide/. - -When you type the shortcut =C-c C-e h o=, this document will be -exported as HTML. All the code in it will be re-executed, and the -results will be retrieved and included into the exported document. If -you do not want to re-execute all code each time, you can delete the # -and the space before ~#+PROPERTY:~ in the header of this document. - -Like we showed in the video, Python code is included as follows (and -is exxecuted by typing ~C-c C-c~): - -#+begin_src python :results output :exports both -print("Hello world!") -#+end_src - -#+RESULTS: -: Hello world! - -And now the same but in an Python session. With a session, Python's -state, i.e. the values of all the variables, remains persistent from -one code block to the next. The code is still executed using ~C-c -C-c~. - -#+begin_src python :results output :session :exports both -import numpy -x=numpy.linspace(-15,15) -print(x) -#+end_src - -#+RESULTS: -#+begin_example -[-15. -14.3877551 -13.7755102 -13.16326531 -12.55102041 - -11.93877551 -11.32653061 -10.71428571 -10.10204082 -9.48979592 - -8.87755102 -8.26530612 -7.65306122 -7.04081633 -6.42857143 - -5.81632653 -5.20408163 -4.59183673 -3.97959184 -3.36734694 - -2.75510204 -2.14285714 -1.53061224 -0.91836735 -0.30612245 - 0.30612245 0.91836735 1.53061224 2.14285714 2.75510204 - 3.36734694 3.97959184 4.59183673 5.20408163 5.81632653 - 6.42857143 7.04081633 7.65306122 8.26530612 8.87755102 - 9.48979592 10.10204082 10.71428571 11.32653061 11.93877551 - 12.55102041 13.16326531 13.7755102 14.3877551 15. ] -#+end_example - -Finally, an example for graphical output: -#+begin_src python :results output file :session :var matplot_lib_filename="./cosxsx.png" :exports results -import matplotlib.pyplot as plt - -plt.figure(figsize=(10,5)) -plt.plot(x,numpy.cos(x)/x) -plt.tight_layout() - -plt.savefig(matplot_lib_filename) -print(matplot_lib_filename) -#+end_src - -#+RESULTS: -[[file:./cosxsx.png]] - -Note the parameter ~:exports results~, which indicates that the code -will not appear in the exported document. We recommend that in the -context of this MOOC, you always leave this parameter setting as -~:exports both~, because we want your analyses to be perfectly -transparent and reproducible. - -Watch out: the figure generated by the code block is /not/ stored in -the org document. It's a plain file, here named ~cosxsx.png~. You have -to commit it explicitly if you want your analysis to be legible and -understandable on GitLab. - -Finally, don't forget that we provide in the resource section of this -MOOC a configuration with a few keyboard shortcuts that allow you to -quickly create code blocks in Python by typing ~\n", - "A data.frame: 23 × 5\n", - "\n", - "\tDateCountTemperaturePressureMalfunction\n", - "\t<fct><int><int><int><int>\n", - "\n", - "\n", - "\t4/12/81 666 500\n", - "\t11/12/81 670 501\n", - "\t3/22/82 669 500\n", - "\t11/11/82 668 500\n", - "\t4/04/83 667 500\n", - "\t6/18/82 672 500\n", - "\t8/30/83 6731000\n", - "\t11/28/83 6701000\n", - "\t2/03/84 6572001\n", - "\t4/06/84 6632001\n", - "\t8/30/84 6702001\n", - "\t10/05/84 6782000\n", - "\t11/08/84 6672000\n", - "\t1/24/85 6532002\n", - "\t4/12/85 6672000\n", - "\t4/29/85 6752000\n", - "\t6/17/85 6702000\n", - "\t7/29/856812000\n", - "\t8/27/85 6762000\n", - "\t10/03/85 6792000\n", - "\t10/30/85 6752002\n", - "\t11/26/85 6762000\n", - "\t1/12/86 6582001\n", - "\n", - "\n" - ], - "text/latex": [ - "A data.frame: 23 × 5\n", - "\\begin{tabular}{r|lllll}\n", - " Date & Count & Temperature & Pressure & Malfunction\\\\\n", - " & & & & \\\\\n", - "\\hline\n", - "\t 4/12/81 & 6 & 66 & 50 & 0\\\\\n", - "\t 11/12/81 & 6 & 70 & 50 & 1\\\\\n", - "\t 3/22/82 & 6 & 69 & 50 & 0\\\\\n", - "\t 11/11/82 & 6 & 68 & 50 & 0\\\\\n", - "\t 4/04/83 & 6 & 67 & 50 & 0\\\\\n", - "\t 6/18/82 & 6 & 72 & 50 & 0\\\\\n", - "\t 8/30/83 & 6 & 73 & 100 & 0\\\\\n", - "\t 11/28/83 & 6 & 70 & 100 & 0\\\\\n", - "\t 2/03/84 & 6 & 57 & 200 & 1\\\\\n", - "\t 4/06/84 & 6 & 63 & 200 & 1\\\\\n", - "\t 8/30/84 & 6 & 70 & 200 & 1\\\\\n", - "\t 10/05/84 & 6 & 78 & 200 & 0\\\\\n", - "\t 11/08/84 & 6 & 67 & 200 & 0\\\\\n", - "\t 1/24/85 & 6 & 53 & 200 & 2\\\\\n", - "\t 4/12/85 & 6 & 67 & 200 & 0\\\\\n", - "\t 4/29/85 & 6 & 75 & 200 & 0\\\\\n", - "\t 6/17/85 & 6 & 70 & 200 & 0\\\\\n", - "\t 7/29/85 & 6 & 81 & 200 & 0\\\\\n", - "\t 8/27/85 & 6 & 76 & 200 & 0\\\\\n", - "\t 10/03/85 & 6 & 79 & 200 & 0\\\\\n", - "\t 10/30/85 & 6 & 75 & 200 & 2\\\\\n", - "\t 11/26/85 & 6 & 76 & 200 & 0\\\\\n", - "\t 1/12/86 & 6 & 58 & 200 & 1\\\\\n", - "\\end{tabular}\n" - ], - "text/markdown": [ - "\n", - "A data.frame: 23 × 5\n", - "\n", - "| Date <fct> | Count <int> | Temperature <int> | Pressure <int> | Malfunction <int> |\n", - "|---|---|---|---|---|\n", - "| 4/12/81 | 6 | 66 | 50 | 0 |\n", - "| 11/12/81 | 6 | 70 | 50 | 1 |\n", - "| 3/22/82 | 6 | 69 | 50 | 0 |\n", - "| 11/11/82 | 6 | 68 | 50 | 0 |\n", - "| 4/04/83 | 6 | 67 | 50 | 0 |\n", - "| 6/18/82 | 6 | 72 | 50 | 0 |\n", - "| 8/30/83 | 6 | 73 | 100 | 0 |\n", - "| 11/28/83 | 6 | 70 | 100 | 0 |\n", - "| 2/03/84 | 6 | 57 | 200 | 1 |\n", - "| 4/06/84 | 6 | 63 | 200 | 1 |\n", - "| 8/30/84 | 6 | 70 | 200 | 1 |\n", - "| 10/05/84 | 6 | 78 | 200 | 0 |\n", - "| 11/08/84 | 6 | 67 | 200 | 0 |\n", - "| 1/24/85 | 6 | 53 | 200 | 2 |\n", - "| 4/12/85 | 6 | 67 | 200 | 0 |\n", - "| 4/29/85 | 6 | 75 | 200 | 0 |\n", - "| 6/17/85 | 6 | 70 | 200 | 0 |\n", - "| 7/29/85 | 6 | 81 | 200 | 0 |\n", - "| 8/27/85 | 6 | 76 | 200 | 0 |\n", - "| 10/03/85 | 6 | 79 | 200 | 0 |\n", - "| 10/30/85 | 6 | 75 | 200 | 2 |\n", - "| 11/26/85 | 6 | 76 | 200 | 0 |\n", - "| 1/12/86 | 6 | 58 | 200 | 1 |\n", - "\n" - ], - "text/plain": [ - " Date Count Temperature Pressure Malfunction\n", - "1 4/12/81 6 66 50 0 \n", - "2 11/12/81 6 70 50 1 \n", - "3 3/22/82 6 69 50 0 \n", - "4 11/11/82 6 68 50 0 \n", - "5 4/04/83 6 67 50 0 \n", - "6 6/18/82 6 72 50 0 \n", - "7 8/30/83 6 73 100 0 \n", - "8 11/28/83 6 70 100 0 \n", - "9 2/03/84 6 57 200 1 \n", - "10 4/06/84 6 63 200 1 \n", - "11 8/30/84 6 70 200 1 \n", - "12 10/05/84 6 78 200 0 \n", - "13 11/08/84 6 67 200 0 \n", - "14 1/24/85 6 53 200 2 \n", - "15 4/12/85 6 67 200 0 \n", - "16 4/29/85 6 75 200 0 \n", - "17 6/17/85 6 70 200 0 \n", - "18 7/29/85 6 81 200 0 \n", - "19 8/27/85 6 76 200 0 \n", - "20 10/03/85 6 79 200 0 \n", - "21 10/30/85 6 75 200 2 \n", - "22 11/26/85 6 76 200 0 \n", - "23 1/12/86 6 58 200 1 " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "data = read.csv(\"shuttle.csv\",header=T)\n", - "data" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The data set shows us the date of each test, the number of O-rings (there are 6 on the main launcher), the temperature (in Fahrenheit) and pressure (in psi), and finally the number of identified malfunctions." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Graphical inspection\n", - "Flights without incidents do not provide any information\n", - "on the influence of temperature or pressure on malfunction.\n", - "We thus focus on the experiments in which at least one O-ring\n", - "was defective." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\n", - "\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\n", - "
A data.frame: 7 × 5
DateCountTemperaturePressureMalfunction
<fct><int><int><int><int>
211/12/81670 501
92/03/84 6572001
104/06/84 6632001
118/30/84 6702001
141/24/85 6532002
2110/30/856752002
231/12/86 6582001
\n" - ], - "text/latex": [ - "A data.frame: 7 × 5\n", - "\\begin{tabular}{r|lllll}\n", - " & Date & Count & Temperature & Pressure & Malfunction\\\\\n", - " & & & & & \\\\\n", - "\\hline\n", - "\t2 & 11/12/81 & 6 & 70 & 50 & 1\\\\\n", - "\t9 & 2/03/84 & 6 & 57 & 200 & 1\\\\\n", - "\t10 & 4/06/84 & 6 & 63 & 200 & 1\\\\\n", - "\t11 & 8/30/84 & 6 & 70 & 200 & 1\\\\\n", - "\t14 & 1/24/85 & 6 & 53 & 200 & 2\\\\\n", - "\t21 & 10/30/85 & 6 & 75 & 200 & 2\\\\\n", - "\t23 & 1/12/86 & 6 & 58 & 200 & 1\\\\\n", - "\\end{tabular}\n" - ], - "text/markdown": [ - "\n", - "A data.frame: 7 × 5\n", - "\n", - "| | Date <fct> | Count <int> | Temperature <int> | Pressure <int> | Malfunction <int> |\n", - "|---|---|---|---|---|---|\n", - "| 2 | 11/12/81 | 6 | 70 | 50 | 1 |\n", - "| 9 | 2/03/84 | 6 | 57 | 200 | 1 |\n", - "| 10 | 4/06/84 | 6 | 63 | 200 | 1 |\n", - "| 11 | 8/30/84 | 6 | 70 | 200 | 1 |\n", - "| 14 | 1/24/85 | 6 | 53 | 200 | 2 |\n", - "| 21 | 10/30/85 | 6 | 75 | 200 | 2 |\n", - "| 23 | 1/12/86 | 6 | 58 | 200 | 1 |\n", - "\n" - ], - "text/plain": [ - " Date Count Temperature Pressure Malfunction\n", - "2 11/12/81 6 70 50 1 \n", - "9 2/03/84 6 57 200 1 \n", - "10 4/06/84 6 63 200 1 \n", - "11 8/30/84 6 70 200 1 \n", - "14 1/24/85 6 53 200 2 \n", - "21 10/30/85 6 75 200 2 \n", - "23 1/12/86 6 58 200 1 " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "data = data[data$Malfunction>0,]\n", - "data" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We have a high temperature variability but\n", - "the pressure is almost always 200, which should\n", - "simplify the analysis.\n", - "\n", - "How does the frequency of failure vary with temperature?" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAAC+lBMVEUAAAABAQECAgIDAwME\nBAQFBQUGBgYHBwcICAgJCQkKCgoLCwsMDAwNDQ0ODg4PDw8QEBARERESEhITExMUFBQVFRUW\nFhYXFxcYGBgZGRkaGhobGxscHBwdHR0eHh4fHx8gICAhISEiIiIjIyMkJCQlJSUmJiYnJycp\nKSkqKiorKystLS0uLi4vLy8wMDAxMTEyMjIzMzM0NDQ1NTU2NjY3Nzc4ODg5OTk6Ojo7Ozs8\nPDw9PT0+Pj4/Pz9AQEBBQUFCQkJDQ0NERERFRUVGRkZHR0dISEhJSUlKSkpLS0tMTExNTU1O\nTk5PT09QUFBRUVFSUlJTU1NUVFRVVVVWVlZXV1dYWFhZWVlaWlpbW1tcXFxdXV1eXl5fX19g\nYGBhYWFiYmJjY2NkZGRlZWVmZmZnZ2doaGhpaWlqampra2tsbGxtbW1ubm5vb29wcHBxcXFy\ncnJzc3N0dHR1dXV2dnZ3d3d4eHh5eXl6enp7e3t8fHx9fX1+fn5/f3+AgICBgYGCgoKDg4OE\nhISFhYWGhoaHh4eIiIiJiYmKioqLi4uMjIyNjY2Ojo6Pj4+QkJCRkZGSkpKTk5OUlJSVlZWW\nlpaXl5eYmJiZmZmampqbm5ucnJydnZ2enp6fn5+goKChoaGioqKjo6OkpKSlpaWmpqanp6eo\nqKipqamqqqqrq6usrKytra2urq6vr6+wsLCxsbGysrKzs7O0tLS1tbW2tra3t7e4uLi5ubm6\nurq7u7u8vLy9vb2+vr6/v7/AwMDBwcHCwsLDw8PExMTFxcXGxsbHx8fIyMjJycnKysrLy8vM\nzMzNzc3Ozs7Pz8/Q0NDR0dHS0tLT09PU1NTV1dXW1tbX19fY2NjZ2dna2trb29vc3Nzd3d3e\n3t7f39/g4ODh4eHi4uLj4+Pk5OTl5eXm5ubn5+fo6Ojp6enq6urr6+vs7Ozt7e3u7u7v7+/w\n8PDx8fHy8vLz8/P09PT19fX29vb39/f4+Pj5+fn6+vr7+/v8/Pz9/f3+/v7///9puzMQAAAA\nCXBIWXMAABJ0AAASdAHeZh94AAAgAElEQVR4nO3dC3SU5b3v8WdIhksgICi3cAlotbUtETxc\nWvBQo2WrWPTUgtgqEVqsgMZdVKBFQLywd2i1anW70b29HbcepFGPp8IRkSpFYQOixeIlokes\nQUESLZdwCXnXOnNLJoT0ncl+f7zv+8TvZy0zz5p5JvzX63xXkrkaB4BnJugBgNaAkAABQgIE\nCAkQICRAgJAAAUICBAgJECAkQICQAAFCAgQICRAgJECAkAABQgIECAkQICRAgJAAAUICBAgJ\nECAkQICQAAFCAgQICRAgJECAkAABQgIECAkQICRAgJAAAUICBAgJECAkQICQAAFCAgQICRAg\nJECAkAABQgIECAkQICRAgJAAAUICBAgJECAkQICQAAFCAgQICRAgJECAkAABQgIECAkQICRA\ngJAAAUICBAgJECAkQICQAAFCAgQICRAgJECAkAABQgIECAkQICRAgJAAAUICBAgJECAkQICQ\nAAFCAgQICRAgJECAkAABQgIECAkQICRAgJAAAUICBAgJECAkQICQAAFCAgQICRAgJECAkAAB\nQgIECAkQICRAgJAAAUICBAgJECAkQICQAAFCAgQICRDwIaQ3NgJWeaPlt/LjH9IGA1hmQ4tv\n5sc/pLXm4HH/NwChg2Zti69DSEAThAQIEBIgQEiAACEBAoQECBASIOB3SHXbVpaXr9qeYRch\nwTL+hlQ1s0fyUeD+C/e77SMkWMbXkCoHmlNL5peVzZ1YYAZVuWwkJFjG15CmRJemVrX3Rkpd\nNhISLONrSL0mp9cT+rlsJCRYxteQorel1wvaumwkJFjG15AKx6fX4wa4bCQkWMbXkEojiw8k\nV3vnmVkuGwkJlvE1pOrBJr+4ZMb0SaPzzKg9LhsJCZbx93Gkg3cU5cQfRooOX1Lrto+QYBnf\nnyJU896mTRWZMiEkWIbn2gEChAQIBBXS+8XFTc45snplg98SEuwSVEibTdPv8kH3rg3yzF7B\nvwH4JqiQarZscbn0fuN25zgQOuH8G4mQYJnAQvq8wuVCQoJlAgtpltt3ISRYhpAAAUICBHwN\naUgjvQgJrYivIbVp065BDiGhFfE1pFn56bvq+NUOrYmvIR0648xD9WtCQmvi750NWztcX78k\nJLQmPt9r9+Xu+tUfF7lsIyRYhqcIAQKEBAgQEiBASIAAIQEChAQIEBIgQEiAACEBAoQECBAS\nIEBIgAAhAQKEBAgQEiBASIAAIQEChAQIEBIgQEiAACEBAoQECBASIEBIgAAhAQKEBAgQEiBA\nSIAAIQEChAQIEBIgQEiAACEBAoQECBASIEBIgAAhAQKEBAgQEiBASIAAIQEChAQIEBIgQEiA\nACEBAoQECBASIEBIgAAhAQKEBAgQEiBASIAAIQEChAQIEBIgQEiAACEBAoQECBASIEBIgAAh\nAQKEBAgQEiBASIAAIQEChAQIEBIgQEiAACEBAoQECBASIEBIgAAhAQKEBAgQEiBASIAAIQEC\nhAQIEBIgQEiAACEBAoQECBASIEBIgAAhAQKEBAgQEiBASIBAICEdemvjAdcNhATL+BvSqtED\nzlvnrCgwpvO9bvsICZbxNaRXc03nNh1f7dzvivFdzXKXjYQEy/ga0oW93nR2fq//oP2OUzXg\nH1w2EhIs42tIJ94S+7LBPBxf39rNZSMhwTK+hpT7aOxLpflDfP1vuS4bCQmW8TWknvNjX/5o\n7oqvf9nTZSMhwTK+hnRpt5cO/vlb3+j/V8fZ2vUSl42EBMv4GtLb+caYblsL8743IjdnvctG\nQoJl/H0cacvEYSXvOFuGRszJz7jtIyRYJpinCO3Z6X45IcEyPNcOECAkQCCokN4vLm5yTtW0\nqQ1GERLsElRIm03T70JIsFhQIdVs2eJyKb/awTL8jQQI+B1S3baV5eWrtmfYRUiwjL8hVc3s\nYRL6L9zvto+QYBlfQ6ocaE4tmV9WNndigRlU5bKRkGAZX0OaEl2aWtXeGyl12UhIsIyvIfWa\nnF5P6OeykZBgGV9Dit6WXi9o67KRkGAZX0MqHJ9ejxvgspGQYBlfQyqNLE69n93eeWaWy0ZC\ngmV8Dal6sMkvLpkxfdLoPDPKLRVCgmX8fRzp4B1FOfGHkaLDl9S67SMkWMb3pwjVvLdpU8XB\nDJsICZbhuXaAACEBAoQECBASIEBIgAAhAQKEBAgQEiBASIAAIQEChAQIEBIgQEiAACEBAoQE\nCBASIEBIgAAhAQKEBAgQEiBASIAAIQEChAQIEBIgQEiAACEBAoQECBASIEBIgAAhAQKEBAgQ\nEiBASIAAIQEChAQIEBIgQEiAACEBAoQECBASIEBIgAAhAQKEBAgQEiBASIAAIQEChAQIEBIg\nQEiAACEBAoQECBASIEBIgAAhAQKEBAgQEiBASIAAIQEChAQIEBIgQEiAACEBAoQECBASIEBI\ngAAhAQKEBAgQEiBASIAAIQEChAQIEBIgQEiAACEBAoQECBASIEBIgAAhAQJeQ1qzO7VYv0wy\nTxIhwTJeQzJPpxa/7iqZJ4mQYBlPIVUsX27mLU8oH5onnIqQYBlPIS0yjVwinIqQYBlvv9pV\nPmsuX5RQtuyQcCpCgmW8/o10wWu6WdIICZbh7m9AwGtIdUvHFn0zSTcUIcE2XkNabExelyTd\nUIQE23gNqe+YbS2+fu2f125330FIsIzXkKLrWnLNtdNjXx7raYwZ9LLbPkKCZTz/RGrJvXar\n23aqc54ynX407dw27Ta6bCQkWMZrSDdMa8EVR/eocJyBhZWx5boOF7psJCRYxmtIe8ZctmJr\nRULmK3a+3nG+MHcl1j87wWUjIcEynp+0mpb5ih1vcpwDkd8n1je3d9lISLCM15AmTppSL/MV\nv3vqPsf5zvXx5YFBg1w2EhIs4+szG54zg//v4U29H9l3aN3Z5l9dNhISLOPvU4Qe6Gg6nF5o\ncnJM5Bd1LvsICZbxGlJxg1HZXPXTxWMK89udOOTaTa7bCAmWkd3ZkF+gG4qQYBuvIR1O2PfW\n9Wd9qRuKkGAb2d9Is3/ueZY0QoJlZCG91rJf7d4vLm5yzgfduzbIM39r8VRAgGQhvdCyNz/Z\nfMwDuEdWr2xQyk8k2MVrSNVJO1cXteyFfTVbtrhcyq92sIzuKUKP6YYiJNjG85ufJF109YvZ\nXbdu28ry8lUZXtdHSLCNv89sqJrZI/njq//C/W77CAmWEYS069WV66qzumLlQHNqyfyysrkT\nC8ygKpeNhATLeA5pzbD4T5hIsdt9B/WmRJemVrX3RkpdNhISLOM1pPXtckZOmXHlsEjndzJf\nsdfk9HpCP5eNhATLeA3pwr5vJ05f7zEx8xWjt6XXC9q6bCQkWMZrSCfenlos6Jn5ioXj0+tx\nA1w2EhIs4zWk3EdTi4ejma9YGll8ILnaO8/MctlISLCM15AK5qQWN/bJfMXqwSa/uGTG9Emj\n88wot1QICZbxGlJJp2fiL3WtK+/402z+tTuKcuJ38kWHL6l120dIsIzXkD7sYXqdfeHZvUzv\nj7O7cs17mzZVHMywiZBgGc+PI22f1CX2I6bbTytlIzmEBOsIntlQV1mxQzRNPUKCZTyG9Nmr\nydPfZfccoWwREizjLaSXTzgncfqm6dPyT3dxQUiwjKeQKk/KTT4eW3d3m1NrdEMREmzjKaSb\nzQP1yzvN/aKJ4ggJlvEU0uBTjtQvD/cdLpoojpBgGU8hnXRZ+sxL8iXzJBESLOMppLbXpM+8\nyu3Z3C1FSLCMp5B6j0uf+b0snmuXNUKCZTyF9INOn9cvK3J/KJoojpBgGU8hPWUuPpxcfTnU\nPCebiZBgHU8h1Z1jhpT/zXF2PlhoLlZORUiwjLdnNlSfZ0zkhHxjzATXt9dqKUKCZbw+afX5\niSd3zP/6la/oJoojJFjG3zeIzBYhwTJeQrp7q3aWNEKCZbyEZEzBFY9KX9BXj5BgGS8hffTg\nhO7GnH7t/5Z/KhghwTIe/0aqe73s3A4m9zvzXjkkHIqQYBvBnQ0HXpw9pI3pdL5oojhCgmVE\n99rtXjp1oGCaeoQEy3D3NyDgNaS6pWOLvpmkG4qQYBuvIS02Jq9Lkm4oQoJtvIbUd4z07YNS\nCAmW8RpSdJ1uljRCgmU8/0R6TTdLGiHBMl5DumGabpY0QoJlvIa0Z8xlK7ZWJOiGIiTYxmtI\nJk03FCHBNl5DmjhpSj3dUIQE2/DMBkBAENKuV1eu036qCyHBNp5DWjMs/vdRpHiLbCSHkGAd\nryGtb5czcsqMK4dFOr+jG4qQYBuvIV3Y9+3E6es9JoomiiMkWMZrSCfenlos6CmZJ4mQYBmv\nIeU+mlo8HJXMk0RIsIzXkArmpBY38mkU+ArzGlJJp2fqYid15R1/KpuJkGAdryF92MP0OvvC\ns3uZ3h/rhiIk2Mbz40jbJ3UxxnT7qfSNIgkJlhE8s6GusmKHaJp6hATLeAlpR1XsvzThVIQE\ny3h67+8xvIwCSPAS0oRFsf/ShFMREizDyygAAa8hrdmdWqxfJpkniZBgGc8vNX86tfh1V8k8\nSYQEy3gKqWL5cjNveUL50DzhVIQEy3gKaVGj++zMJcKpCAmW8farXeWz5vJFCWXLlJ80Rkiw\njNe/kS7gnVYBxd3fb+2Kf3ldNE8SIcEyXkM6NNmsjp3cY0pqVSM5hATreA3pN+aCD2In70ww\nv5XNREiwjteQvjU2tTj/a5J5kggJlvEaUoffpBZlvGcDvsK8htTzmtRiGu8ihK8wryFNzvtD\n/OTQktzLVSM5hATreA2psrfpf+7Ykd1M7490QxESbOP5caRPf36iMab7z/4qG8khJFhH8Z4N\nn7y/VzRNPUKCZXhhHyDgNaS6pWOLvpmkG4qQYBuvIS02Jq9Lkm4oQoJtvIbUd8w23TANCAmW\n8RpSdJ1uljRCgmU8/0Ti9UiA95BumKabJY2QYBmvIe0Zc9mKrRUJuqEICbbx/HZcvGUx4D2k\niZOm1NMNRUiwDc9sAAQICRDwGlJxg1G6oQgJtpHd2ZBfoBuKkGAbryEdTtj31vVnfakbipBg\nG9nfSLN/7nmWNEKCZWQhvcavdvgKk4X0Ah/rgq8wryFVJ+1cXcQL+/AVpnuK0GO6oQgJtvH8\nsS5JF139om4mQoJ1eGYDIOAlpF+scpyr3viv/Ktfznrb9XJCgmW8hNRmUaNPNW+Rj81zrpcT\nEizjJaTeJ0ybZf7HrHqZr9jwiouJ5vuuL7sgJFjGS0iPtW/8qeZZ/OVkst1PSLCMpzsbqjes\nMbevqZf5iv+YU7Qi8bDTX8yT1dUuGwkJlvF6r92YV1tyzQ1Fkau/cPgbCa2Ol5A+Plo2Vz38\nTx0KlhESWh0vIZms/+Zp5P1ic+F2QkIr4yWkCUfL9uoPdes0n5DQusie2bB3R9bX/+xSQ0ho\nXWQhPd67Bd/h+ZlbXS8nJFjGc0i77plZGnNVn3zZTIQE63gN6cPuqbsacm/WDUVIsI3XkH6c\n/7tV5sEVs/usaNn3eL+4uMk5R1avbFBKSLCL15D6z3ZqzGuOs7nbn1r0PTYfc3f5B927Nsgz\nf2vxVECAPH/Q2JLYt3g5trip6U8YdzVbtrhcyq92sIzXkLrd4jidHootnuAzZPEV5jWkcX1W\nOyPOjN3sf9Yjq+vWbVtZXr5qe4ZdhATLeA1pffshzr+bfhcXmR9ncc2qmT2S9/H1X7jfbR8h\nwTKeH0faeJ9TN6eDifxgV+YrVg40p5bMLyubO7HADKpy2UhIsIzmmQ01H7r+gKk3Jbo0taq9\nN1LqspGQYBlf30Wo1+T0ekI/l42EBMt4CunwUTJfMXpber2grctGQoJlPIXU0tcjFY5Pr8cN\ncNlISLCMt5Byzri0Ja9HKo0sPpBc7Z1n3N51iJBgGU8hXdfDFN7wVvZXrB5s8otLZkyfNDrP\njHJLhZBgGW93Nhx+7pJ2ZsjdWdzznfrX7ijKif8WGB2+pNZtHyHBMp7vtau+f4SJXvT0oWyv\nXPPepk0VBzNsIiRYRnH3d8VNA8xJ12zUDJRASLCM5nGkupfPyvZdhLJCSLCMIqQjKy7taL62\nUDNQAiHBMt5Demd2H5N/5SuqgRIICZbxGFL1/cNNZPQj+4QTxRESLOMppBWXtjcDF3yonCeJ\nkGAZj89sGHHz/3munnAqQoJlfH2uXdYICZbxFNJjRxFORUiwDJ9qDggQEiBASIAAIQEChAQI\nEBIgQEiAACEBAoQECBASIGBXSPuevvXWp9Wv2QCy5HL7syqkFT07jxzZuWcLP2UT0HC7/dkU\n0oZ2N+53nP03tlO+zwqQJdfbn00hjUm9mev4Mcd9AOAYrrc/i0I6kLsyuXgheuC4TwA04X77\nsyikT8y7ycW75pPjPgHQhPvtz6KQ9rdJvVXRy22y+lgzQMn99mdRSM7IqcnTqSOP+wDAMVxv\nfzaF9GLu3XWOU3dX7qrjPgBwDNfbn00hOY/knTJhwsl5jx73fx9ohtvtz6qQnB33XHXVPTuO\n+z8PNMvl9mdXSEBIERIgQEiAACEBAoQECBASIEBIgAAhAQKEBAgQEiBASIAAIQEChAQIEBIg\nQEiAACEBAoQECBASIEBIgAAhAQKEBAgQEiBASIAAIQEChAQIEBIgQEiAACEBAoQECBASIEBI\ngAAhAQKEBAgQEiBASIAAIQEChAQIEBIgQEiAACEBAoQECBASIEBIgAAhAQKEBAgQEiBASIAA\nIQEChAQIEBIgQEiAACEBAoQECBASIEBIgAAhAQKEBAgEFlLVhy4XEhIs429Ib55fOPLe2sRy\nltt3ISRYxteQ/tTO5EXNf6+KrwkJrYmvIV0QfbruwB3R/7bXISS0Lr6G1O8n8a+r2p5fS0ho\nXXwNKTovcfKouZaQ0Lr4GlLfHyRP55gyQkKr4mtI10buORQ/rZtkrruGkNCK+BrS5/3NOYlF\n3bXGEBJaEX8fR9o17brU6venEBJaEZ4iBAgQEiBASIBAUCG9X1zc5JyqaVMbjCIk2CWokDYf\nc68dIcFiQYVUs2WLy6X8agfL8DcSIOB3SHXbVpaXr9qeYRchwTL+hlQ1s4dJ6L9wv9s+QoJl\nfA2pcqA5tWR+WdnciQVmUJXLRkKCZXwNaUp0aWpVe2+k1GUjIcEyvobUa3J6PaGfy0ZCgmX8\nfWHfben1grYuGwkJlvE1pMLx6fW4AS4bCQmW8TWk0sjiA8nV3nlmlstGQoJlfA2perDJLy6Z\nMX3S6Dwzyi0VQoJl/H0c6eAdRTnxh5Giw5fUuu0jJFjG96cI1by3aVPFwQybCAmW4bl2mWwc\nf3K7b5d+2vyFW684td03pv4/fydyc+jOEZ27Fz8R9BgSa7/RzkRP+UPQY2SHkDJ4LHrxvy2/\n69u9tjZ34fMdzl2y/N4RXdb5PdXfs++s7vOeWXpthyl1QU/i3QOR/Am3XH6iWRj0IFkhJHcf\ntP9t/OTQuKIjx174eddfxk+OTCl0feagj35R+Nf4yYaOjwQ9iWe7c087HD8dEXkv6FGyQUju\n5g5OnlbmvHLshXf3T/yvdvZ0fsrHkVwc7Px4cnHj0GAHEfjHSPLX6ZrcHwU8SVYIyd0FM1OL\nb9117IWTf5JanPMrv+Zx97bZkVysaGf973bf6ZZaDDwt0DmyREjuvj8ntRjy62MvvLz+uYPn\n3+DXPO7+bHYnFy/luD68YIOh3VOL004OdI4sEZK7a8YkT/d1fO7YC28pSp4eKXjQv4nc/K3t\nC8nFr78e7CACV+Qkf292OpwT7CDZISR369usSpzO7t3M/QkV0ScTp3fm7/JzJhfjv5N4iO6z\nPrcGPYln70YuTpxeY14MeJKsEFIGMzv+89bqdVdGm304o6ztTW9+uak0JzT3kW3vO+IPOz96\n4uRhYbkb0YOppujxvz410lwQ9CBZIaQM6v61vzGR4X9q/tInTzPGDFru70huPpnQ1pj86/YG\nPYfCwg6xg9vW7QWgIUJImX32hss0uzd/4d8k2Ti0dVszD3nZafuT7wc9QrYICRAgJECAkAAB\nQgIECAkQICRAgJAAAUICBAgJECAkQICQAAFCAgQICRAgJECAkAABQgIECAkQICRAgJAAAUIC\nBAgJECAkQICQAAFCAgQICRAgJECAkAABQgIECAkQICRAgJAAAUICBAgJECAkQICQAAFCAgQI\nCRAgJECAkAABQgIECAkQICRAgJAAAUICBAgJECAkQICQAAFCAgQICRAgJECAkAABQgIECAkQ\nICRAgJAAAUICBAgJECAkQICQAAFCAgQICRAgJECAkAABQgIECAkQICRAgJAAAUICBAgJECAk\nQICQAAFCAgQICRAgJECAkAABQgIE/A6pbtvK8vJV2zPsIiRYxt+Qqmb2MAn9F+5320dIsIyv\nIVUONKeWzC8rmzuxwAyqctlISLCMryFNiS5NrWrvjZS6bCQkWMbXkHpNTq8n9HPZSEiwjK8h\nRW9Lrxe0ddlISLCMryEVjk+vxw1w2UhIsIyvIZVGFh9IrvbOM7NcNhISLONrSNWDTX5xyYzp\nk0bnmVFuqRASLOPv40gH7yjKiT+MFB2+pNZtHyHBMr4/RajmvU2bKg5m2ERIsAzPtQMECAkQ\nCCqk94uLm5zzQfeuDfLMXsG/AfgmqJA2m6bf5cjqlQ1+azL9FQWESlAh1WzZ4nLpWkKCXcL5\nNxIhwTLhfGEfIcEy4XxhHyHBMuF8YR8hwTLhfGEfIcEy4XxhHyHBMuF8YR8hwTLhfGEfIcEy\n4XxhHyHBMuF8YR8hwTLhfGEfIcEy4XxhHyHBMjzXDhAgJECAkAABQgIECAkQICRAgJAAAUIC\nBMIZ0gYDWGZDi2/mxz8k542NctcWPhYybWYHPUETY78d9ARN3GcWBT1CE2f9w9+7fb3R8lu5\nDyEdB3ecEfQETeW8GPQETcw6L+gJmthl3N60LQglJcJvRkgahJQJIYUQIWVESBkREiFlRkgZ\nERIhZUZIGRESIWVGSBkREiFlRkgZERIhZUZIGRESIWVGSBkREiFlRkgZEZLzu2FBT9BUh1eC\nnqCJm8YFPUETX0TeDXqEJqZOFX4zO0Oq+SToCZr6oC7oCZrY81nQEzS1LegBmqpy+xCVlrIz\nJCBkCAkQICRAgJAAAUICBAgJECAkQICQAAFCAgQICRAgJECAkAABQgIECAkQICRAgJAAAatC\neij1WQG3HLUM1vNnderyvdXxVXVpYbT3lMpgx2k0UEgOUbv6T3j4MCSHqNFAwkNkVUh3momz\n4l46ahmofzenzL2+e9u1jnNwsPnhbZOjA5Uvu/Q0UEgO0dzEELMGtN8dkkPUaCDhIbIqpPnp\nz62Z/1/4CJvj4LNOZ+x1nIpO0xznDvPPsTP+l5kZloFCcoiSNubcGpZDlJQYSHiIrAqp1FQ0\nswzSYrMifhJ/w4ai/APx5dd6BPruDY0GCskhSqg94xsHw3KIEpIDCQ+RVSFNMrtqP97VdBmk\nMR0OOQe+jK9qcooT55SYQN/kIz1QWA5Rwp1mdWgOUUJiIOUhsiqki8yvuhpz2uNHL4NUePrr\n342YUx5ynPdM8l3S5puV4RgoLIcobm/3eEIhOURxyYGUh8iqkEabkxc9Oqezuf+oZZDyC3vP\nXHZXf/O4s8lMT5yz2JSHY6CwHKK4fzLxt/0LySGKSw6kPERWhbRqWewPaecv7bodbLwMUjvz\nSOxrZadetZvMjMQ5ZebpcAwUlkMUs/+ks+InITlETsNAykNkVUgpF5v/bGYZiBNz9sVPfmT+\nXGEmJc6ZawJ98+L0QPXnBH2IYv5nom4nJIfIaRionuIQ2RjSVealZpaBGJJzKH4yzaw9mDs6\ncc5E81E4Bqo/J+hDFHNhTnX8JCSHyGkYqJ7iENkU0p77/iNxOtJsa7QMciJnhlkXP/m+2e4M\ny4v/LDhS0C8kA4XlEMUC6nhmchGOQ5QeSHmIbArpSJ9Ob8dOnjFnNF4GamPk7AOOs6HNtx1n\niVkQO+NfzM0hGSgsh8hxNpspyUU4DlF6IOUhsikk59lIxyk3XRzpvOmoZaCuM0U3/6xD29WO\nUzvKjLv50si39oVloLAcIudJc2tyEZJDlB5IeIisCsl59bwTcguuqGiyDFLd/YPadzk/8bfq\nnusLo32m7w7PQCE5RLEfQXelVuE4RI0G0h0iu0ICQoqQAAFCAgQICRAgJECAkAABQgIECAkQ\nICRAgJAAAUICBAgJECAkQICQAAFCAgQICRAgJECAkAABQgIECAkQICRAgJAAAUICBAgJECAk\nQICQAAFCAgQICRAgJECAkAABQgIECAkQICRAgJAAAUIKgZmmwXcV329R8B93+ZVDSCHwbGnM\niWZG7OtdmXdnVGmWC74LWoSQwuKbpkb0nZ4lJP8RUlikQvp0Wv/oSePin0o+0VRP7dFh2Pp9\npQUdR8Q/wP4iUzmlR9uv33f0tgnms3PaP+s46y86MVr4kw8d54L4r4hrYifVsUsPm+L0lvSV\noEZIYZEMaWdhl1mP3d633R8dZ5I55+bXH27ff+ysjctO6Hko3sPQWWvXnGseOGrb5eay827f\n4mxsX7Bwyez8Hp87r11u5j29u3FIqS2NrgQ1QgqLZEhX526Ifd2ef6bjTDFXx5bjzSWxr6Vm\nbTykibHlF+0GHLVtsvn+kdj6vsGrY1/vMfc4zqLEr3aNQkptaXQlqBFSWCRCqjtp8I64MWZP\nLKSVsbN/ZR6Lfb3PLIuH9Gx84zmm8uhtj9d/i0M1q8zMZkJKbml8JagRUlgkQvq04X7wv8Ru\n/ltjZ883L8W+PmCeiIf0dnzjJPP60ds2Jq7/6FknxM8obTak+JbGV4IaIYVFIqQKU7Q8qTp2\n848/HDTfrHEaQvoovnGaeenYbc4cc+ZDf3ztwb8TUnxL4ytBjZDCIvUTqajhjGZCiv+Icn5s\n3jx2W02HfvFf2FY0DWlfOqTGV4IaIYVF8s6Gk9onflzsdJoN6ffxy4aancdu+9BcHD9jTjqk\ni0z80rfSITW+EtqClZMAAAEtSURBVNQIKSxS99qZX8a+7uw1ttmQLogt3418vZlt+yNnxL5u\n7mOucpwyU574Ti/Hvt7YKKRGV4IaIYVFMqTP+psrH769f/SFZkM6Z+z99w2I3wV3zDZnrLnq\niZu6Pp/b9z/2LjNDf/OfzmtmyEvr5ozKT4fU6EpQI6SwSD2zYcfV/XJP+MF6p9mQKq4raHv6\nw81tc3Ze1r3L2Wucmzv12nHohx26PuU4D5/eoefULwpGNmxpdCWoEZI9JpiPgx4Bfw8h2YOQ\nQoyQ7EFIIUZI9iCkECMkQICQAAFCAgQICRAgJECAkAABQgIECAkQICRAgJAAAUICBAgJECAk\nQICQAAFCAgQICRAgJECAkAABQgIECAkQICRAgJAAAUICBAgJECAkQICQAAFCAgT+P9FRuQB/\nRTZ+AAAAAElFTkSuQmCC", - "text/plain": [ - "plot without title" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plot(data=data, Malfunction/Count ~ Temperature, ylim=c(0,1))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "At first glance, the dependence does not look very important, but let's try to\n", - "estimate the impact of temperature $t$ on the probability of O-ring malfunction." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Estimation of the temperature influence\n", - "\n", - "Suppose that each of the six O-rings is damaged with the same\n", - "probability and independently of the others and that this probability\n", - "depends only on the temperature. If $p(t)$ is this probability, the\n", - "number $D$ of malfunctioning O-rings during a flight at\n", - "temperature $t$ follows a binomial law with parameters $n=6$ and\n", - "$p=p(t)$. To link $p(t)$ to $t$, we will therefore perform a\n", - "logistic regression." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "\n", - "Call:\n", - "glm(formula = Malfunction/Count ~ Temperature, family = binomial(link = \"logit\"), \n", - " data = data, weights = Count)\n", - "\n", - "Deviance Residuals: \n", - " 2 9 10 11 14 21 23 \n", - "-0.3015 -0.2836 -0.2919 -0.3015 0.6891 0.6560 -0.2850 \n", - "\n", - "Coefficients:\n", - " Estimate Std. Error z value Pr(>|z|)\n", - "(Intercept) -1.389528 3.195752 -0.435 0.664\n", - "Temperature 0.001416 0.049773 0.028 0.977\n", - "\n", - "(Dispersion parameter for binomial family taken to be 1)\n", - "\n", - " Null deviance: 1.3347 on 6 degrees of freedom\n", - "Residual deviance: 1.3339 on 5 degrees of freedom\n", - "AIC: 18.894\n", - "\n", - "Number of Fisher Scoring iterations: 4\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "logistic_reg = glm(data=data, Malfunction/Count ~ Temperature, weights=Count, \n", - " family=binomial(link='logit'))\n", - "summary(logistic_reg)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The most likely estimator of the temperature parameter is 0.0014\n", - "and the standard error of this estimator is 0.122, in other words we\n", - "cannot distinguish any particular impact and we must take our\n", - "estimates with caution." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Estimation of the probability of O-ring malfunction\n", - "\n", - "The expected temperature on the take-off day is 31°F. Let's try to\n", - "estimate the probability of O-ring malfunction at\n", - "this temperature from the model we just built:" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0gAAANICAMAAADKOT/pAAAC/VBMVEUAAAABAQECAgIDAwME\nBAQFBQUGBgYHBwcICAgJCQkKCgoLCwsMDAwNDQ0ODg4PDw8QEBARERESEhITExMUFBQVFRUW\nFhYXFxcYGBgZGRkaGhobGxscHBwdHR0eHh4fHx8gICAhISEiIiIjIyMkJCQlJSUmJiYnJyco\nKCgpKSkqKiorKyssLCwtLS0uLi4vLy8wMDAxMTEyMjIzMzM0NDQ1NTU2NjY3Nzc4ODg5OTk6\nOjo7Ozs8PDw9PT0+Pj4/Pz9AQEBBQUFCQkJDQ0NERERFRUVGRkZHR0dISEhJSUlKSkpLS0tM\nTExNTU1OTk5PT09QUFBRUVFSUlJTU1NUVFRVVVVWVlZXV1dYWFhZWVlaWlpbW1tcXFxdXV1e\nXl5fX19gYGBhYWFiYmJjY2NkZGRlZWVmZmZnZ2doaGhpaWlqampra2tsbGxtbW1ubm5vb29w\ncHBxcXFycnJzc3N0dHR1dXV2dnZ3d3d4eHh5eXl6enp7e3t8fHx9fX1+fn5/f3+AgICBgYGC\ngoKDg4OEhISFhYWGhoaHh4eIiIiJiYmKioqLi4uMjIyNjY2Ojo6Pj4+QkJCRkZGSkpKTk5OU\nlJSVlZWWlpaXl5eYmJiZmZmampqbm5udnZ2enp6fn5+goKChoaGioqKjo6OkpKSlpaWmpqan\np6eoqKipqamqqqqrq6usrKytra2urq6vr6+wsLCxsbGysrKzs7O0tLS1tbW2tra3t7e4uLi5\nubm6urq7u7u8vLy9vb2+vr6/v7/AwMDBwcHCwsLDw8PExMTFxcXGxsbHx8fIyMjJycnKysrL\ny8vMzMzNzc3Ozs7Pz8/Q0NDR0dHS0tLT09PU1NTV1dXW1tbX19fY2NjZ2dna2trb29vc3Nzd\n3d3e3t7f39/g4ODh4eHi4uLj4+Pk5OTl5eXm5ubn5+fo6Ojp6enq6urr6+vs7Ozt7e3u7u7v\n7+/w8PDx8fHy8vLz8/P09PT19fX29vb39/f4+Pj5+fn6+vr7+/v8/Pz9/f3+/v7///8D/m+7\nAAAACXBIWXMAABJ0AAASdAHeZh94AAAgAElEQVR4nO3de3yU1YGH8ROSEAh35CYKAV231q5C\nsVWsgLihXlop1guI1YKw4gpqWrHNqhQUpVrY4loX14JXtGsthrq21ZoiXhYvhYiKghDRCoqC\n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\n2/jfsVu3+Pj6x/mHh1v7QBvftKl/tHNUeJlT61/gGRVe5zX26m/a55H+7+3Ofybc+WGWf7U7\nf0eT7xd4z7ePCE0zhQ2v6g/Y38afXP8U92fhxn/Ibvzfhg+6wo2/ym78dTzagZRvIQFZiZAA\ngaRCeru4eJ+vVIUvbKUNJiT4JamQlv+/V+0ICR5LKqQdK1ZEfJeHdvAMz5EAAdch1a0tLytb\ntK6RUYQEz7gNqWpyt/S7oL2nR75vT0jwjNOQNvQ1R42dNnPmlNE9Tb+qiIGEBM84DWl8/iN7\njmrn5JREDCQkeMZpSD3GNRyP6hUxkJDgGbe/2Dej4fiGlhEDCQmecRpS0ciG4xF9IgYSEjzj\nNKSSnFk700dbp5rSiIGEBM84Dal6gGlXPPaKSWOGFprBUakQEjzj9n2kmtn9c+3bSPkD59ZG\njSMkeMb5R4R2rKmoqKxpZBAhwTN81q4Z2T1vcOfOg+ftTh1+fHW/gj7nvtzky2dq9fGtTd5h\n9wiuyROE1HzsOrtD6aOPlrY/+/Og8rCvzP7Dvefn3d3Ey2fqT7kFI6aPP9xckvE1+YKQmo+f\ndVltz1Z3mVl3wpnhy6N3tVzdpMtnupLdbbp+as+/Z/6Y6VX5gpCaj6LZ6fOf93m5xXvpw5Ou\nadLlM13JPebF9EG7r2d6Vb4gpGajyuz5kyPLzW1/v+dr1w9r0uWjPlD8t7ho78dWTu6c4TV5\ng5CajY1mZfrgTXPLV/Z87cZTmnT5jRkuZWTBnoNTO2Z4Td4gpGZjd+cH0wfzO/+x4NP04Xcu\nbdLlM33d7lbzfvqgx9EZXpM3CKn5uPLLW+zZli9fWdP7h+FXns99tkmXz3Qln+UNCM/nmF9k\nelW+IKTmY/PRxy784IOyY4/eHJS3vPjF6lX/2m5SEy+fqZ+ZI+b95ffDc47N+Jp8QUjNyObx\nrY1pPd528NLJLYw5/N+/2H+U+X9dPlN3t7d/UGCk4r1dPxBSs1K7Zs3eDzFuffWjjC6fqY2P\nRP0H15odQgIECAkQICRAgJAAAUICBAgJECAkQICQAAFCAgQICRAgJECAkAABQgIECAkQICRA\ngJAAAUICBAgJECAkQICQAAFCAgQICRAgJECAkAABQgIECAkQICRAgJAAAUICBAgJECAkQICQ\nAAFCAgQICRAgJECAkAABQgIECAkQICRAgJAAAUICBAgJECAkQICQAAFCAgQICRAgJECAkAAB\n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", - "text/plain": [ - "plot without title" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "tempv = seq(from=30, to=90, by = .5)\n", - "rmv <- predict(logistic_reg,list(Temperature=tempv),type=\"response\")\n", - "plot(tempv,rmv,type=\"l\",ylim=c(0,1))\n", - "points(data=data, Malfunction/Count ~ Temperature)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "hideCode": false, - "hidePrompt": false, - "scrolled": true - }, - "source": [ - "As expected from the initial data, the\n", - "temperature has no significant impact on the probability of failure of the\n", - "O-rings. It will be about 0.2, as in the tests\n", - "where we had a failure of at least one joint. Let's get back\n", - "to the initial dataset to estimate the probability of failure:" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "0.0652173913043478" - ], - "text/latex": [ - "0.0652173913043478" - ], - "text/markdown": [ - "0.0652173913043478" - ], - "text/plain": [ - "[1] 0.06521739" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "data_full = read.csv(\"shuttle.csv\",header=T)\n", - "sum(data_full$Malfunction)/sum(data_full$Count)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This probability is thus about $p=0.065$. Knowing that there is\n", - "a primary and a secondary O-ring on each of the three parts of the\n", - "launcher, the probability of failure of both joints of a launcher\n", - "is $p^2 \\approx 0.00425$. The probability of failure of any one of the\n", - "launchers is $1-(1-p^2)^3 \\approx 1.2\\%$. That would really be\n", - "bad luck.... Everything is under control, so the takeoff can happen\n", - "tomorrow as planned.\n", - "\n", - "But the next day, the Challenger shuttle exploded and took away\n", - "with her the seven crew members. The public was shocked and in\n", - "the subsequent investigation, the reliability of the\n", - "O-rings was questioned. Beyond the internal communication problems\n", - "of NASA, which have a lot to do with this fiasco, the previous analysis\n", - "includes (at least) a small problem.... Can you find it?\n", - "You are free to modify this analysis and to look at this dataset\n", - "from all angles in order to to explain what's wrong." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "celltoolbar": "Hide code", - "kernelspec": { - "display_name": "R", - "language": "R", - "name": "ir" - }, - "language_info": { - "codemirror_mode": "r", - "file_extension": ".r", - "mimetype": "text/x-r-source", - "name": "R", - "pygments_lexer": "r", - "version": "3.6.1" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/module2/exo5/exo5_R_en.org b/module2/exo5/exo5_R_en.org deleted file mode 100644 index dc8a5d07f7e0aabed7bab44762fc9213f78e4acf..0000000000000000000000000000000000000000 --- a/module2/exo5/exo5_R_en.org +++ /dev/null @@ -1,201 +0,0 @@ -#+TITLE: Analysis of the risk of failure of the O-rings on the Challenger shuttle -#+AUTHOR: Arnaud Legrand -#+LANGUAGE: en - -#+HTML_HEAD: -#+HTML_HEAD: -#+HTML_HEAD: -#+HTML_HEAD: -#+HTML_HEAD: -#+HTML_HEAD: - -#+LATEX_HEADER: \usepackage[utf8]{inputenc} -#+LATEX_HEADER: \usepackage[T1]{fontenc} -#+LATEX_HEADER: \usepackage[a4paper,margin=.8in]{geometry} -#+LATEX_HEADER: \usepackage[french]{babel} - -# #+PROPERTY: header-args :session :exports both - -On January 27, 1986, the day before the takeoff of the shuttle /Challenger/, had -a three-hour teleconference was held between -Morton Thiokol (the manufacturer of one of the engines) and NASA. The -discussion focused on the consequences of the -temperature at take-off of 31°F (just below -0°C) for the success of the flight and in particular on the performance of the -O-rings used in the engines. Indeed, no test -had been performed at this temperature. - -The following study takes up some of the analyses carried out that -night with the objective of assessing the potential influence of -the temperature and pressure to which the O-rings are subjected -on their probability of malfunction. Our starting point is -the results of the experiments carried out by NASA engineers -during the six years preceding the launch of the shuttle -Challenger. - -* Loading the data -We start by loading this data: -#+begin_src R :results output :session *R* :exports both -data = read.csv("shuttle.csv",header=T) -data -#+end_src - -#+RESULTS: -#+begin_example - Date Count Temperature Pressure Malfunction -1 4/12/81 6 66 50 0 -2 11/12/81 6 70 50 1 -3 3/22/82 6 69 50 0 -4 11/11/82 6 68 50 0 -5 4/04/83 6 67 50 0 -6 6/18/82 6 72 50 0 -7 8/30/83 6 73 100 0 -8 11/28/83 6 70 100 0 -9 2/03/84 6 57 200 1 -10 4/06/84 6 63 200 1 -11 8/30/84 6 70 200 1 -12 10/05/84 6 78 200 0 -13 11/08/84 6 67 200 0 -14 1/24/85 6 53 200 2 -15 4/12/85 6 67 200 0 -16 4/29/85 6 75 200 0 -17 6/17/85 6 70 200 0 -18 7/29/85 6 81 200 0 -19 8/27/85 6 76 200 0 -20 10/03/85 6 79 200 0 -21 10/30/85 6 75 200 2 -22 11/26/85 6 76 200 0 -23 1/12/86 6 58 200 1 -#+end_example - -The data set shows us the date of each test, the number of O-rings -(there are 6 on the main launcher), the -temperature (in Fahrenheit) and pressure (in psi), and finally the -number of identified malfunctions. - -* Graphical inspection -Flights without incidents do not provide any information -on the influence of temperature or pressure on malfunction. -We thus focus on the experiments in which at least one O-ring was defective. - -#+begin_src R :results output :session *R* :exports both -data = data[data$Malfunction>0,] -data -#+end_src - -#+RESULTS: -: Date Count Temperature Pressure Malfunction -: 2 11/12/81 6 70 50 1 -: 9 2/03/84 6 57 200 1 -: 10 4/06/84 6 63 200 1 -: 11 8/30/84 6 70 200 1 -: 14 1/24/85 6 53 200 2 -: 21 10/30/85 6 75 200 2 -: 23 1/12/86 6 58 200 1 - -We have a high temperature variability but -the pressure is almost always 200, which should -simplify the analysis. - -How does the frequency of failure vary with temperature? -#+begin_src R :results output graphics :file "freq_temp.png" :exports both :width 600 :height 400 :session *R* -plot(data=data, Malfunction/Count ~ Temperature, ylim=c(0,1)) -#+end_src - -#+RESULTS: -[[file:freq_temp.png]] - -At first glance, the dependence does not look very important, but let's try to -estimate the impact of temperature $t$ on the probability of O-ring malfunction. - -* Estimation of the temperature influence - -Suppose that each of the six O-rings is damaged with the same -probability and independently of the others and that this probability -depends only on the temperature. If $p(t)$ is this probability, the -number $D$ of malfunctioning O-rings during a flight at -temperature $t$ follows a binomial law with parameters $n=6$ and -$p=p(t)$. To link $p(t)$ to $t$, we will therefore perform a -logistic regression. - -#+begin_src R :results output :session *R* :exports both -logistic_reg = glm(data=data, Malfunction/Count ~ Temperature, weights=Count, - family=binomial(link='logit')) -summary(logistic_reg) -#+end_src - -#+RESULTS: -#+begin_example - -Call: -glm(formula = Malfunction/Count ~ Temperature, family = binomial(link = "logit"), - data = data, weights = Count) - -Deviance Residuals: - 2 9 10 11 14 21 23 --0.3015 -0.2836 -0.2919 -0.3015 0.6891 0.6560 -0.2850 - -Coefficients: - Estimate Std. Error z value Pr(>|z|) -(Intercept) -1.389528 3.195752 -0.435 0.664 -Temperature 0.001416 0.049773 0.028 0.977 - -(Dispersion parameter for binomial family taken to be 1) - - Null deviance: 1.3347 on 6 degrees of freedom -Residual deviance: 1.3339 on 5 degrees of freedom -AIC: 18.894 - -Number of Fisher Scoring iterations: 4 -#+end_example - -The most likely estimator of the temperature parameter is 0.001416 -and the standard error of this estimator is 0.049, in other words we -cannot distinguish any particular impact and we must take our -estimates with caution. - -* Estimation of the probability of O-ring malfunction -The expected temperature on the take-off day is 31°F. Let's try to -estimate the probability of O-ring malfunction at -this temperature from the model we just built: - -#+begin_src R :results output graphics :file "proba_estimate.png" :exports both :width 600 :height 400 :session *R* -# shuttle=shuttle[shuttle$r!=0,] -tempv = seq(from=30, to=90, by = .5) -rmv <- predict(logistic_reg,list(Temperature=tempv),type="response") -plot(tempv,rmv,type="l",ylim=c(0,1)) -points(data=data, Malfunction/Count ~ Temperature) -#+end_src - -#+RESULTS: -[[file:proba_estimate.png]] - -As expected from the initial data, the -temperature has no significant impact on the probability of failure of the -O-rings. It will be about 0.2, as in the tests -where we had a failure of at least one joint. Let's get back to the initial dataset to estimate the probability of failure: - -#+begin_src R :results output :session *R* :exports both -data_full = read.csv("shuttle.csv",header=T) -sum(data_full$Malfunction)/sum(data_full$Count) -#+end_src - -#+RESULTS: -: [1] 0.06521739 - -This probability is thus about $p=0.065$. Knowing that there is -a primary and a secondary O-ring on each of the three parts of the -launcher, the probability of failure of both joints of a launcher -is $p^2 \approx 0.00425$. The probability of failure of any one of the -launchers is $1-(1-p^2)^3 \approx 1.2%$. That would really be -bad luck.... Everything is under control, so the takeoff can happen -tomorrow as planned. - -But the next day, the Challenger shuttle exploded and took away -with her the seven crew members. The public was shocked and in -the subsequent investigation, the reliability of the -O-rings was questioned. Beyond the internal communication problems -of NASA, which have a lot to do with this fiasco, the previous analysis -includes (at least) a small problem.... Can you find it? -You are free to modify this analysis and to look at this dataset -from all angles in order to to explain what's wrong. diff --git a/module2/exo5/exo5_en.Rmd b/module2/exo5/exo5_en.Rmd deleted file mode 100644 index f9003e3a9de8b87c66b620b3fb5157fc127a4e17..0000000000000000000000000000000000000000 --- a/module2/exo5/exo5_en.Rmd +++ /dev/null @@ -1,119 +0,0 @@ ---- -title: "Analysis of the risk of failure of the O-rings on the Challenger shuttle" -author: "Arnaud Legrand" -date: "28 juin 2018" -output: html_document ---- - -On January 27, 1986, the day before the takeoff of the shuttle _Challenger_, had -a three-hour teleconference was held between -Morton Thiokol (the manufacturer of one of the engines) and NASA. The -discussion focused on the consequences of the -temperature at take-off of 31°F (just below -0°C) for the success of the flight and in particular on the performance of the -O-rings used in the engines. Indeed, no test -had been performed at this temperature. - -The following study takes up some of the analyses carried out that -night with the objective of assessing the potential influence of -the temperature and pressure to which the O-rings are subjected -on their probability of malfunction. Our starting point is -the results of the experiments carried out by NASA engineers -during the six years preceding the launch of the shuttle -Challenger. - -# Loading the data -We start by loading this data: - -```{r} -data = read.csv("shuttle.csv",header=T) -data -``` - -The data set shows us the date of each test, the number of O-rings -(there are 6 on the main launcher), the -temperature (in Fahrenheit) and pressure (in psi), and finally the -number of identified malfunctions. - -# Graphical inspection -Flights without incidents do not provide any information -on the influence of temperature or pressure on malfunction. -We thus focus on the experiments in which at least one O-ring was defective. - -```{r} -data = data[data$Malfunction>0,] -data -``` - -We have a high temperature variability but -the pressure is almost always 200, which should -simplify the analysis. - -How does the frequency of failure vary with temperature? -```{r} -plot(data=data, Malfunction/Count ~ Temperature, ylim=c(0,1)) -``` - -At first glance, the dependence does not look very important, but let's try to -estimate the impact of temperature $t$ on the probability of O-ring malfunction. - -# Estimation of the temperature influence - -Suppose that each of the six O-rings is damaged with the same -probability and independently of the others and that this probability -depends only on the temperature. If $p(t)$ is this probability, the -number $D$ of malfunctioning O-rings during a flight at -temperature $t$ follows a binomial law with parameters $n=6$ and -$p=p(t)$. To link $p(t)$ to $t$, we will therefore perform a -logistic regression. - -```{r} -logistic_reg = glm(data=data, Malfunction/Count ~ Temperature, weights=Count, - family=binomial(link='logit')) -summary(logistic_reg) -``` - -The most likely estimator of the temperature parameter is 0.001416 -and the standard error of this estimator is 0.049, in other words we -cannot distinguish any particular impact and we must take our -estimates with caution. - -# Estimation of the probability of O-ring malfunction -The expected temperature on the take-off day is 31°F. Let's try to -estimate the probability of O-ring malfunction at -this temperature from the model we just built: - -```{r} -# shuttle=shuttle[shuttle$r!=0,] -tempv = seq(from=30, to=90, by = .5) -rmv <- predict(logistic_reg,list(Temperature=tempv),type="response") -plot(tempv,rmv,type="l",ylim=c(0,1)) -points(data=data, Malfunction/Count ~ Temperature) -``` - -As expected from the initial data, the -temperature has no significant impact on the probability of failure of the -O-rings. It will be about 0.2, as in the tests -where we had a failure of at least one joint. Let's get back to the initial dataset to estimate the probability of failure: - -```{r} -data_full = read.csv("shuttle.csv",header=T) -sum(data_full$Malfunction)/sum(data_full$Count) -``` - -This probability is thus about $p=0.065$. Knowing that there is -a primary and a secondary O-ring on each of the three parts of the -launcher, the probability of failure of both joints of a launcher -is $p^2 \approx 0.00425$. The probability of failure of any one of the -launchers is $1-(1-p^2)^3 \approx 1.2%$. That would really be -bad luck.... Everything is under control, so the takeoff can happen -tomorrow as planned. - -But the next day, the Challenger shuttle exploded and took away -with her the seven crew members. The public was shocked and in -the subsequent investigation, the reliability of the -O-rings was questioned. Beyond the internal communication problems -of NASA, which have a lot to do with this fiasco, the previous analysis -includes (at least) a small problem.... Can you find it? -You are free to modify this analysis and to look at this dataset -from all angles in order to to explain what's wrong. diff --git a/module2/exo5/exo5_en.ipynb b/module2/exo5/exo5_en.ipynb deleted file mode 100644 index 6a0919d7ba4c9594341883f6d283db9ea050de72..0000000000000000000000000000000000000000 --- a/module2/exo5/exo5_en.ipynb +++ /dev/null @@ -1,714 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Analysis of the risk of failure of the O-rings on the Challenger shuttle" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "On January 27, 1986, the day before the takeoff of the shuttle _Challenger_, had\n", - "a three-hour teleconference was held between \n", - "Morton Thiokol (the manufacturer of one of the engines) and NASA. The\n", - "discussion focused on the consequences of the\n", - "temperature at take-off of 31°F (just below\n", - "0°C) for the success of the flight and in particular on the performance of the\n", - "O-rings used in the engines. Indeed, no test\n", - "had been performed at this temperature.\n", - "\n", - "The following study takes up some of the analyses carried out that\n", - "night with the objective of assessing the potential influence of\n", - "the temperature and pressure to which the O-rings are subjected\n", - "on their probability of malfunction. Our starting point is \n", - "the results of the experiments carried out by NASA engineers\n", - "during the six years preceding the launch of the shuttle\n", - "Challenger." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Loading the data\n", - "We start by loading this data:" - ] - }, - { - "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": [ - "The data set shows us the date of each test, the number of O-rings (there are 6 on the main launcher), the temperature (in Fahrenheit) and pressure (in psi), and finally the number of identified malfunctions." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Graphical inspection\n", - "Flights without incidents do not provide any information\n", - "on the influence of temperature or pressure on malfunction.\n", - "We thus focus on the experiments in which at least one O-ring\n", - "was defective." - ] - }, - { - "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", - " \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
111/12/81670501
82/03/846572001
94/06/846632001
108/30/846702001
131/24/856532002
2010/30/856752002
221/12/866582001
\n", - "
" - ], - "text/plain": [ - " Date Count Temperature Pressure Malfunction\n", - "1 11/12/81 6 70 50 1\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", - "13 1/24/85 6 53 200 2\n", - "20 10/30/85 6 75 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", - "data" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We have a high temperature variability but\n", - "the pressure is almost always 200, which should\n", - "simplify the analysis.\n", - "\n", - "How does the frequency of failure vary with temperature?" - ] - }, - { - "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", - "data[\"Frequency\"]=data.Malfunction/data.Count\n", - "data.plot(x=\"Temperature\",y=\"Frequency\",kind=\"scatter\",ylim=[0,1])\n", - "plt.grid(True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "At first glance, the dependence does not look very important, but let's try to\n", - "estimate the impact of temperature $t$ on the probability of O-ring malfunction." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Estimation of the temperature influence\n", - "\n", - "Suppose that each of the six O-rings is damaged with the same\n", - "probability and independently of the others and that this probability\n", - "depends only on the temperature. If $p(t)$ is this probability, the\n", - "number $D$ of malfunctioning O-rings during a flight at\n", - "temperature $t$ follows a binomial law with parameters $n=6$ and\n", - "$p=p(t)$. To link $p(t)$ to $t$, we will therefore perform a\n", - "logistic regression." - ] - }, - { - "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: 7
Model: GLM Df Residuals: 5
Model Family: Binomial Df Model: 1
Link Function: logit Scale: 1.0000
Method: IRLS Log-Likelihood: -2.5250
Date: Sat, 13 Apr 2019 Deviance: 0.22231
Time: 19:12:05 Pearson chi2: 0.236
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 -1.3895 7.828 -0.178 0.859 -16.732 13.953
Temperature 0.0014 0.122 0.012 0.991 -0.238 0.240
" - ], - "text/plain": [ - "\n", - "\"\"\"\n", - " Generalized Linear Model Regression Results \n", - "==============================================================================\n", - "Dep. Variable: Frequency No. Observations: 7\n", - "Model: GLM Df Residuals: 5\n", - "Model Family: Binomial Df Model: 1\n", - "Link Function: logit Scale: 1.0000\n", - "Method: IRLS Log-Likelihood: -2.5250\n", - "Date: Sat, 13 Apr 2019 Deviance: 0.22231\n", - "Time: 19:12:05 Pearson chi2: 0.236\n", - "No. Iterations: 4 Covariance Type: nonrobust\n", - "===============================================================================\n", - " coef std err z P>|z| [0.025 0.975]\n", - "-------------------------------------------------------------------------------\n", - "Intercept -1.3895 7.828 -0.178 0.859 -16.732 13.953\n", - "Temperature 0.0014 0.122 0.012 0.991 -0.238 0.240\n", - "===============================================================================\n", - "\"\"\"" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import statsmodels.api as sm\n", - "\n", - "data[\"Success\"]=data.Count-data.Malfunction\n", - "data[\"Intercept\"]=1\n", - "\n", - "logmodel=sm.GLM(data['Frequency'], data[['Intercept','Temperature']], family=sm.families.Binomial(sm.families.links.logit)).fit()\n", - "\n", - "logmodel.summary()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The most likely estimator of the temperature parameter is 0.0014\n", - "and the standard error of this estimator is 0.122, in other words we\n", - "cannot distinguish any particular impact and we must take our\n", - "estimates with caution." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Estimation of the probability of O-ring malfunction\n", - "\n", - "The expected temperature on the take-off day is 31°F. Let's try to\n", - "estimate the probability of O-ring malfunction at\n", - "this temperature from the model we just built:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAEKCAYAAAAcgp5RAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAGyFJREFUeJzt3X2UVPWd5/H3pxuQBhEjkhkFDWSWtHF9ABRQWZ3WqGhORLPrE2vGMRNCdmeMk83Knng2E43Rc2YHd2I26zgy6jgxiUo8iiSHCahjT2Y8PoCCILAIY4g2JEGND7Q2Snd/9497u6kuqunqpvqhfnxe5/Tpurd+de/3V7fvp27fuvUrRQRmZpaumsEuwMzM+peD3swscQ56M7PEOejNzBLnoDczS5yD3swscT0GvaR7Je2U9HI390vS/5G0VdI6SdMrX6aZmfVVOUf09wEX7Of+C4Ep+c8C4M4DL8vMzCqlx6CPiF8Av9tPk4uBH0TmWeBwSUdVqkAzMzswwyqwjAnA6wXTTfm8Xxc3lLSA7KifkSNHnnLsscdWYPVDU3t7OzU16b4FknL/Uu4buH/V7pVXXnkzIsb35jGVCHqVmFdyXIWIWAwsBqivr4/NmzdXYPVDU2NjIw0NDYNdRr9JuX8p9w3cv2on6Ve9fUwlXvaagGMKpicCOyqwXDMzq4BKBP0y4Or86pvTgHcjYp/TNmZmNjh6PHUj6QGgAThSUhNwIzAcICL+FlgOfBbYCnwAfLG/ijUzs97rMegjYl4P9wfwZxWryMyqwp49e2hqamL37t2DXUoXY8eOZdOmTYNdxgEbOXIkEydOZPjw4Qe8rEq8GWtmB6GmpibGjBnDpEmTkEpdkzE4du3axZgxYwa7jAMSEbz11ls0NTUxefLkA15eutcgmVm/2r17N+PGjRtSIZ8KSYwbN65i/y056M2szxzy/aeSz62D3swscT5Hb2ZVq7a2lhNPPLFzeunSpYwbN24QKxqaHPRmVrXq6upYu3Ztl3m7du3qvN3a2sqwYY45n7oxs6T86Ec/4rLLLuOiiy7i/PPPB2DRokXMmDGDk046iRtvvLGz7a233kp9fT3nnnsu8+bN47bbbgOgoaGB1atXA/Dmm28yadIkANra2li4cGHnsu666y5g77ALl156KccddxxXXXUV2ZXnsGrVKs444wxOPvlkZs6cya5duzjzzDO7vEDNnj2bdevW9dtz4pc6Mztg3/7pBjbueK+iyzz+6MO48aJ/v982LS0tTJ06FYDJkyfz6KOPAvDMM8+wbt06jjjiCFauXMmWLVt4/vnniQjmzp3LL37xC0aPHs2DDz7ImjVraG1tZfr06Zxyyin7Xd8999zD2LFjWbVqFR9++CGzZ8/ufDFZs2YNGzZs4Oijj2b27Nk8/fTTzJw5kyuuuIKHHnqIGTNm8N5771FXV8f8+fO57777uP3223nllVf48MMPOemkkyrwrJXmoDezqlXq1A3AeeedxxFHHAHAypUrWblyJdOmTQOgubmZLVu2sGvXLj7/+c8zatQoAObOndvj+lauXMm6det4+OGHAXj33XfZsmULI0aMYObMmUycOBGAqVOnsm3bNsaOHctRRx3FjBkzADjssMMAuOyyy/jOd77DokWLuPfee7nmmmsO7InogYPezA5YT0feA2306NGdtyOCG264ga985Std2tx+++3dXsI4bNgw2tvbAbpcyx4RfP/732fOnDld2jc2NnLIIYd0TtfW1tLa2kpElFzHqFGjOO+883jsscdYsmRJ52mi/uJz9GaWtDlz5nDvvffS3NwMwPbt29m5cydnnXUWjz76KC0tLezatYuf/vSnnY+ZNGkSL7zwAkDn0XvHsu6880727NkDwCuvvML777/f7bqPO+44duzYwapVq4DsjeLW1lYA5s+fz3XXXceMGTM6//voLz6iN7OknX/++WzatInTTz8dgEMPPZQf/vCHTJ8+nSuuuIKpU6fyiU98gjPPPLPzMddffz2XX345999/P+ecc07n/Pnz57Nt2zamT59ORDB+/HiWLl3a7bpHjBjBQw89xFe/+lVaWlqoq6vjiSee4NBDD+WUU07hsMMO44tfHIBxICNiUH4+9alPRcqeeuqpwS6hX6Xcv5T7FlG5/m3cuLEiy6m09957r0+Pu/HGG2PRokUVrqZ727dvjylTpkRbW1u3bUo9x8Dq6GXe+tSNmdkA+8EPfsCsWbO49dZbB+RrD33qxswMuOmmmwZsXVdffTVXX331gK3PR/Rm1mcRJb8e2iqgks+tg97M+mTkyJG89dZbDvt+EPl49CNHjqzI8nzqxsz6ZOLEiTQ1NfHGG28Mdild7N69u2IBOZg6vmGqEhz0ZtYnw4cP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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=30, stop=90, 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": "markdown", - "metadata": { - "hideCode": false, - "hidePrompt": false, - "scrolled": true - }, - "source": [ - "As expected from the initial data, the\n", - "temperature has no significant impact on the probability of failure of the\n", - "O-rings. It will be about 0.2, as in the tests\n", - "where we had a failure of at least one joint. Let's get back\n", - "to the initial dataset to estimate the probability of failure:" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "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": [ - "This probability is thus about $p=0.065$. Knowing that there is\n", - "a primary and a secondary O-ring on each of the three parts of the\n", - "launcher, the probability of failure of both joints of a launcher\n", - "is $p^2 \\approx 0.00425$. The probability of failure of any one of the\n", - "launchers is $1-(1-p^2)^3 \\approx 1.2%$. That would really be\n", - "bad luck.... Everything is under control, so the takeoff can happen\n", - "tomorrow as planned.\n", - "\n", - "But the next day, the Challenger shuttle exploded and took away\n", - "with her the seven crew members. The public was shocked and in\n", - "the subsequent investigation, the reliability of the\n", - "O-rings was questioned. Beyond the internal communication problems\n", - "of NASA, which have a lot to do with this fiasco, the previous analysis\n", - "includes (at least) a small problem.... Can you find it?\n", - "You are free to modify this analysis and to look at this dataset\n", - "from all angles in order to to explain what's wrong." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "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.7.3" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/module2/exo5/exo5_python_en.org b/module2/exo5/exo5_python_en.org deleted file mode 100644 index 39a203bed10eed51f00f5222dee62329bf13ec72..0000000000000000000000000000000000000000 --- a/module2/exo5/exo5_python_en.org +++ /dev/null @@ -1,217 +0,0 @@ -#+TITLE: Analysis of the risk of failure of the O-rings on the Challenger shuttle -#+AUTHOR: Arnaud Legrand -#+LANGUAGE: en - -#+HTML_HEAD: -#+HTML_HEAD: -#+HTML_HEAD: -#+HTML_HEAD: -#+HTML_HEAD: -#+HTML_HEAD: - -#+LATEX_HEADER: \usepackage{a4} -#+LATEX_HEADER: \usepackage[french]{babel} - -# #+PROPERTY: header-args :session :exports both - -On January 27, 1986, the day before the takeoff of the shuttle /Challenger/, had -a three-hour teleconference was held between -Morton Thiokol (the manufacturer of one of the engines) and NASA. The -discussion focused on the consequences of the -temperature at take-off of 31°F (just below -0°C) for the success of the flight and in particular on the performance of the -O-rings used in the engines. Indeed, no test -had been performed at this temperature. - -The following study takes up some of the analyses carried out that -night with the objective of assessing the potential influence of -the temperature and pressure to which the O-rings are subjected -on their probability of malfunction. Our starting point is -the results of the experiments carried out by NASA engineers -during the six years preceding the launch of the shuttle -Challenger. - -* Loading the data -We start by loading this data: -#+begin_src python :results value :session *python* :exports both -import numpy as np -import pandas as pd -data = pd.read_csv("shuttle.csv") -data -#+end_src - -#+RESULTS: -#+begin_example - Date Count Temperature Pressure Malfunction -0 4/12/81 6 66 50 0 -1 11/12/81 6 70 50 1 -2 3/22/82 6 69 50 0 -3 11/11/82 6 68 50 0 -4 4/04/83 6 67 50 0 -5 6/18/82 6 72 50 0 -6 8/30/83 6 73 100 0 -7 11/28/83 6 70 100 0 -8 2/03/84 6 57 200 1 -9 4/06/84 6 63 200 1 -10 8/30/84 6 70 200 1 -11 10/05/84 6 78 200 0 -12 11/08/84 6 67 200 0 -13 1/24/85 6 53 200 2 -14 4/12/85 6 67 200 0 -15 4/29/85 6 75 200 0 -16 6/17/85 6 70 200 0 -17 7/29/85 6 81 200 0 -18 8/27/85 6 76 200 0 -19 10/03/85 6 79 200 0 -20 10/30/85 6 75 200 2 -21 11/26/85 6 76 200 0 -22 1/12/86 6 58 200 1 -#+end_example - -The data set shows us the date of each test, the number of O-rings -(there are 6 on the main launcher), the -temperature (in Fahrenheit) and pressure (in psi), and finally the -number of identified malfunctions. - -* Graphical inspection -Flights without incidents do not provide any information -on the influence of temperature or pressure on malfunction. -We thus focus on the experiments in which at least one O-ring was defective. - -#+begin_src python :results value :session *python* :exports both -data = data[data.Malfunction>0] -data -#+end_src - -#+RESULTS: -: Date Count Temperature Pressure Malfunction -: 1 11/12/81 6 70 50 1 -: 8 2/03/84 6 57 200 1 -: 9 4/06/84 6 63 200 1 -: 10 8/30/84 6 70 200 1 -: 13 1/24/85 6 53 200 2 -: 20 10/30/85 6 75 200 2 -: 22 1/12/86 6 58 200 1 - -We have a high temperature variability but -the pressure is almost always 200, which should -simplify the analysis. - -How does the frequency of failure vary with temperature? -#+begin_src python :results output file :var matplot_lib_filename="freq_temp_python.png" :exports both :session *python* -import matplotlib.pyplot as plt - -plt.clf() -data["Frequency"]=data.Malfunction/data.Count -data.plot(x="Temperature",y="Frequency",kind="scatter",ylim=[0,1]) -plt.grid(True) - -plt.savefig(matplot_lib_filename) -print(matplot_lib_filename) -#+end_src - -#+RESULTS: -[[file:freq_temp_python.png]] - -At first glance, the dependence does not look very important, but let's try to -estimate the impact of temperature $t$ on the probability of O-ring malfunction. - -* Estimation of the temperature influence - -Suppose that each of the six O-rings is damaged with the same -probability and independently of the others and that this probability -depends only on the temperature. If $p(t)$ is this probability, the -number $D$ of malfunctioning O-rings during a flight at -temperature $t$ follows a binomial law with parameters $n=6$ and -$p=p(t)$. To link $p(t)$ to $t$, we will therefore perform a -logistic regression. - -#+begin_src python :results value :session *python* :exports both -import statsmodels.api as sm - -data["Success"]=data.Count-data.Malfunction -data["Intercept"]=1 - - -# logit_model=sm.Logit(data["Frequency"],data[["Intercept","Temperature"]]).fit() -logmodel=sm.GLM(data['Frequency'], data[['Intercept','Temperature']], family=sm.families.Binomial(sm.families.links.logit)).fit() - -logmodel.summary() -#+end_src - -#+RESULTS: -#+begin_example - Generalized Linear Model Regression Results -============================================================================== -Dep. Variable: Frequency No. Observations: 7 -Model: GLM Df Residuals: 5 -Model Family: Binomial Df Model: 1 -Link Function: logit Scale: 1.0 -Method: IRLS Log-Likelihood: -3.6370 -Date: Fri, 20 Jul 2018 Deviance: 3.3763 -Time: 16:56:08 Pearson chi2: 0.236 -No. Iterations: 5 -=============================================================================== - coef std err z P>|z| [0.025 0.975] -------------------------------------------------------------------------------- -Intercept -1.3895 7.828 -0.178 0.859 -16.732 13.953 -Temperature 0.0014 0.122 0.012 0.991 -0.238 0.240 -=============================================================================== -#+end_example - -The most likely estimator of the temperature parameter is 0.0014 -and the standard error of this estimator is 0.122, in other words we -cannot distinguish any particular impact and we must take our -estimates with caution. - -* Estimation of the probability of O-ring malfunction -The expected temperature on the take-off day is 31°F. Let's try to -estimate the probability of O-ring malfunction at -this temperature from the model we just built: - -#+begin_src python :results output file :var matplot_lib_filename="proba_estimate_python.png" :exports both :session *python* -import matplotlib.pyplot as plt - -data_pred = pd.DataFrame({'Temperature': np.linspace(start=30, stop=90, num=121), 'Intercept': 1}) -data_pred['Frequency'] = logmodel.predict(data_pred[['Intercept','Temperature']]) -data_pred.plot(x="Temperature",y="Frequency",kind="line",ylim=[0,1]) -plt.scatter(x=data["Temperature"],y=data["Frequency"]) -plt.grid(True) - -plt.savefig(matplot_lib_filename) -print(matplot_lib_filename) -#+end_src - -#+RESULTS: -[[file:proba_estimate_python.png]] - -As expected from the initial data, the -temperature has no significant impact on the probability of failure of the -O-rings. It will be about 0.2, as in the tests -where we had a failure of at least one joint. Let's get back to the initial dataset to estimate the probability of failure: - -#+begin_src python :results output :session *python* :exports both -data = pd.read_csv("shuttle.csv") -print(np.sum(data.Malfunction)/np.sum(data.Count)) -#+end_src - -#+RESULTS: -: 0.06521739130434782 - -This probability is thus about $p=0.065$. Knowing that there is -a primary and a secondary O-ring on each of the three parts of the -launcher, the probability of failure of both joints of a launcher -is $p^2 \approx 0.00425$. The probability of failure of any one of the -launchers is $1-(1-p^2)^3 \approx 1.2%$. That would really be -bad luck.... Everything is under control, so the takeoff can happen -tomorrow as planned. - -But the next day, the Challenger shuttle exploded and took away -with her the seven crew members. The public was shocked and in -the subsequent investigation, the reliability of the -O-rings was questioned. Beyond the internal communication problems -of NASA, which have a lot to do with this fiasco, the previous analysis -includes (at least) a small problem.... Can you find it? -You are free to modify this analysis and to look at this dataset -from all angles in order to to explain what's wrong. -