Commit ae0ca8b0 authored by Arnaud Legrand's avatar Arnaud Legrand

Module4/exercices

parent ca46083a
all: resources.html all: resources.html exo1.html exo2.html exo3.html
NLINES=10000000 NLINES=10000000
......
# -*- mode: org -*-
#+TITLE:
#+AUTHOR: Arnaud Legrand
#+DATE: June, 2018
#+STARTUP: overview indent
#+OPTIONS: num:nil toc:t
#+PROPERTY: header-args :eval never-export
* 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 R^2. 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 [[https://www.fun-mooc.fr/courses/course-v1:inria+41016+session01bis/courseware/66bc811404b8481da5f794de54681c5e/f8608bfb261b4c289b35b2cd19d5baf3/][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 [[https://app-learninglab.inria.fr/gitlab/moocrr-session1/moocrr-reproducibility-study/blob/master/results.org][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 [[https://app-learninglab.inria.fr/gitlab/moocrr-session1/moocrr-reproducibility-study/blob/master/results.org][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.
# -*- mode: org -*-
#+TITLE:
#+AUTHOR: Arnaud Legrand
#+DATE: June, 2018
#+STARTUP: overview indent
#+OPTIONS: num:nil toc:t
#+PROPERTY: header-args :eval never-export
* Exercice 2: L'importance de l'environnement
Dans cet exercice, nous vous proposons de reprendre l'exercice
précédent mais en mettant à jour l'environnement de calcul. En effet,
nous avons rencontré des surprises en préparant ce MOOC puisqu'il nous
est arrivé d'avoir des résultats différents entre nos machines et
l'environnement jupyter que nous avions mis en place pour le MOOC. Ça
sera peut-être également votre cas!
1. Pour ceux qui ont suivi le parcours jupyter, recréer
l'environnement du MOOC sur votre propre machine en suivant les
instructions données
[[https://www.fun-mooc.fr/courses/course-v1:inria+41016+session01bis/courseware/66bc811404b8481da5f794de54681c5e/f8608bfb261b4c289b35b2cd19d5baf3/][dans les ressources de la section 4A du module 2]].
2. Vérifier si vous obtenez bien les même résultats que ceux
attendus.
3. Mettre à jour (vers le haut ou vers la bas) cet environnement et
vérifier si vous obtenez les mêmes résultats
Comme précédemment, vous mettrez à jour le [[https://app-learninglab.inria.fr/gitlab/moocrr-session1/moocrr-reproducibility-study/blob/master/results.org][tableau]] et vous discuterez
sur le forum des succès et des échec que vous aurez rencontrés.
# -*- mode: org -*-
#+TITLE:
#+AUTHOR: Arnaud Legrand
#+DATE: June, 2018
#+STARTUP: overview indent
#+OPTIONS: num:nil toc:t
#+PROPERTY: header-args :eval never-export
* Exercice 3: Répliquer un papier de Rescience
Rescience (http://rescience.github.io/) est un journal de sciences
computationnelles entièrement ouvert dont l'objectif est d'encourager
la réplication de travaux déjà publiés en s'assurant que l'ensemble du
code et des données soit disponible. Pour chacun des articles publiés
dans Rescience, nous avons la garantie qu'au moins trois chercheurs
indépendants ont réussi à suivre les indications, à ré-exécuter le
code et à ré-obtenir les mêmes résultats que ceux décrits par les
auteurs. Cela ne veut pas dire que cela soit parfaitement automatique
pour autant et il peut être intéressant de voir comment ils ont
procédé.
Nous vous proposons donc de choisir l'un de ces articles (celui avec
lequel vous avez le plus d'affinité) et d'essayer de réexécuter les
codes et les calculs décrits dans l'article. N'hésitez pas à indiquer
vos difficultés éventuelles sur le forum où nous répondrons à vos questions.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment