## Table of Contents

- Exercice 1: Ré-exécuter n'est pas répliquer…

## Exercice 1: Ré-exécuter n'est pas répliquer…

Même si la terminologie peut varier d'un auteur ou d'une communauté à l'autre, il est important de comprendre que l'on peut distinguer différent niveau de "réplication" selon que l'on s'est contenté de vérifier que l'on pouvait ré-exécuter le code et obtenir exactement les mêmes résultats ou bien que l'on arrivait à reproduire des résultats similaires en suivant une approche similaire (éventuellement avec un autre langage, une autre méthode de calcul, etc.). À Ce sujet, vous pourrez vouloir par exemple lire https://arxiv.org/abs/1708.08205.

Le diable se cache souvent dans des endroits auxquels on ne penserait jamais et nous sommes nous-mêmes allés de surprise en surprise en préparant ce MOOC, notamment avec l'exercice du module 2 sur Challenger. C'est pourquoi nous vous proposons dans cet exercice, de refaire une partie de l'analyse des données de Challenger, comme l'ont fait Siddhartha Dallal et ses co-auteurs il y a presque 30 ans dans leur article Risk Analysis of the Space Shuttle: Pre-Challenger Prediction of Failure et publié dans le Journal of the American Statistical Association (Vol. 84, No. 408, Déc., 1989), mais dans dans un autre langage de votre choix (Python, R, Julia, SAS, …).

Nous savons d'expérience que si les estimations de pente et d'intercept sont généralement les mêmes, on peut avoir des différences lorsque l'on regarde un peu plus dans les détails les estimateurs de variance et le R2. Il peut également y avoir des surprises dans le graphique final selon les versions de bibliothèques utilisées.

L'ensemble des calculs à effectuer est décrit ici: https://app-learninglab.inria.fr/gitlab/moocrr-session1/moocrr-reproducibility-study/

Vous y trouverez notre réplication des calculs de Dallal et al. (en R), une mise en œuvre en python et une en R (très similaires à ce que vous avez pu utiliser dans le module 2). Cet exercice peut donc se faire à deux niveaux:

1. un niveau facile pour ceux qui repartiront du code dans le langage qu'ils n'auront initialement pas utilisé et se contenteront de le ré-exécuter. Pour cela, nul besoin de maîtriser la régression logistique, il suffit de bien inspecter les sorties produites et de vérifier qu'elles correspondent bien aux valeurs attendues. Pour ceux qui ré-exécuteraient le notebook Python dans l'environnement Jupyter du MOOC, n'hésitez pas à consulter les ressources de la section 4A du module 2 qui expliquent comment y importer un notebook.
2. un niveau plus difficile pour ceux qui souhaiteront le réécrire complètement (éventuellement dans un autre langage que R ou python, l'expérience peut être d'autant plus intéressante que nous n'avons pas testé ces variations). Là, si les fonctions de calcul d'une régression logistique ne sont pas présente, il y a par contre intérêt à en savoir un minimum pour pouvoir les implémenter. L'exercice en est d'autant plus instructif.

Vous pourrez alors discuter sur le forum des succès et des échecs que vous avez pu rencontrer. Pour cela:

- Vous publierez auparavant dans votre dépôt les différents notebooks en prenant bien soin d'enrichir votre document des informations (numéros de version, etc.) sur votre système et sur les bibliothèques installées.
- Vous indiquerez votre résultat (que ça soit un succès ou échec à obtenir les mêmes résultats) en remplissant le tableau dans ce même dépôt (vous avez les droits d'édition donc il vous suffit d'éditer les fichiers via l'interface GitLab). Vous vérifierez les valeurs obtenues pour
  1. les coefficients de la pente et de l'intercept
  2. les estimations d'erreur de ces coefficients
  3. le goodness of fit
  4. la figure
  5. la zone de confiance

- Pour chacun vous indiquerez si le résultat est:

  - identique
  - proche à moins de trois décimales
  - très différent
  - non fonctionnel (pas de résultat obtenu)

  Vous indiquerez également dans ce tableau:

  - Un lien vers votre espace gitlab contenant les différents notebooks
  - Le nom du système d'exploitation utilisé
  - Le langage utilisé et son numéro de version
  - Les numéros des principales bibliothèques utilisées
    - Python: numpy, pandas, matplotlib, statsmodels, …
    - R: BLAS, ggplot, dplyr si chargées

Ne vous inquiétez pas si ces consignes vous semblent peu claires sur l'instant, elles sont rappelées en haut du tableau et vous vous rendrez vite compte s'il vous manque quelque chose quand vous essaierez de remplir ce tableau.

Nous effectuerons une synthèse illustrant les principales divergences observées et nous vous l'enverrons à la fin du MOOC.