Learning Days practice sessions | Sessions pratiques Learning Days
2026-06-12
Before Activity 1, set up a dedicated folder on your computer, for example:
learningdays_exercises/
Inside it, create one empty R script, for example:
my_exercises.R
You will build this file as you go — these slides are your only workbook (no separate handout).
Avant l’activité 1, créez un dossier dédié sur votre ordinateur, par exemple :
learningdays_exercises/
À l’intérieur, créez un script R vide, par exemple :
mes_exercices.R
Vous construirez ce fichier au fur et à mesure — ces slides sont votre seul support (pas de fichier séparé).
Download data_for_analysis.csv and save it inside the same folder as your .R file (not in a subfolder):
Download data_for_analysis.csv
Your folder should look like:
learningdays_exercises/
my_exercises.R
data_for_analysis.csv
In RStudio: File → New Project → Existing Directory and select this folder so getwd() points here.
Téléchargez data_for_analysis.csv et enregistrez-le dans le même dossier que votre fichier .R (pas dans un sous-dossier) :
Télécharger data_for_analysis.csv
Votre dossier doit ressembler à :
learningdays_exercises/
mes_exercices.R
data_for_analysis.csv
Dans RStudio : File → New Project → Existing Directory et sélectionnez ce dossier pour que getwd() pointe ici.
For each slide with R code:
.R fileAdd comments in your script for answers to questions (# Answer: ...).
Do not skip ahead — work through Activities 1 → 5 in order.
Pour chaque slide avec du code R :
.RAjoutez des commentaires dans votre script pour les réponses (# Réponse : ...).
Ne sautez pas d’étapes — faites les activités 1 → 5 dans l’ordre.
Before starting Activity 1, confirm:
Then run the check below — you should see the CSV in the list.
Avant de commencer l’activité 1, vérifiez :
Puis exécutez le contrôle ci-dessous — vous devez voir le CSV dans la liste.
Five activities — all instructions and code are on these slides:
estimatr and analyze as you randomizeCinq activités — toutes les instructions et le code sont sur ces slides :
estimatr et analysez comme vous randomisezLearning Days participant data from the in-class experiment. Variables include participant id, Gender, country, assigned treatment, and outcomes.
Your job: inspect the data and identify which columns are treatment and outcome before you analyze.
Données des participants aux Learning Days (expérience en classe). Variables : identifiant, Gender, pays, treatment assigné, et résultats.
Votre tâche : inspectez les données et identifiez les colonnes de traitement et de résultat avant d’analyser.
Goals: load data, inspect variables, get comfortable with RStudio.
Copy each code block below into your .R file as you go.
Objectifs : charger les données, inspecter les variables, se familiariser avec RStudio.
Copiez chaque bloc de code ci-dessous dans votre fichier .R au fur et à mesure.
Confirm the CSV is in your project folder. Run dir() — do you see data_for_analysis.csv?
If not, ask an instructor.
Vérifiez que le CSV est dans votre dossier de projet. Exécutez dir() — voyez-vous data_for_analysis.csv ?
Sinon, demandez de l’aide à un instructeur.
Read the data into object experiment_data. Check the Environment pane — does it appear?
Lisez les données dans l’objet experiment_data. Regardez l’onglet Environment — apparaît-il ?
Open the data viewer (click experiment_data in Environment).
Question: What are the variable names? Which might be treatment? Which might be outcomes?
Ouvrez le data viewer (cliquez sur experiment_data dans Environment).
Question : Quels sont les noms de variables ? Lesquels pourraient être le traitement ? Les résultats ?
Context: Instructors randomized treatment in the class experiment. Now you randomize — simple, complete, and blocked assignment — using the same participant data.
Contexte : Les instructeurs ont randomisé le traitement lors de l’expérience en classe. Maintenant vous randomisez — assignation simple, complète et par blocs — avec les mêmes données.
Set a seed so your randomization is reproducible. Use rbinom() to assign 0/1 with probability 0.5.
Fixez une graine (set.seed) pour reproduire la randomisation. Utilisez rbinom() pour assigner 0/1 avec probabilité 0,5.
Inspect treatment_simple. Count treated vs control with table(). Expect about half treated (not necessarily exact).
Inspectez treatment_simple. Comptez traitement vs contrôle avec table(). Attendez-vous à environ la moitié en traitement (pas forcément exact).
randomizr Commands Refresherrandomizr Commands Refresher
randomizr
[1] 0 0 1 0
[1] 0 0 1 1
[1] 1 1 0 1 0 0 1 0 1 0 1 0
[1] 3 2 1
Build a vector with exactly \(m\) treated and \(N - m\) control, then shuffle with sample().
Construisez un vecteur avec exactement \(m\) traités et \(N - m\) contrôles, puis mélangez avec sample().
Use table(). Treated and control counts should match exactly what you put in vec.
Utilisez table(). Les effectifs doivent correspondre exactement à ce que vous avez mis dans vec.
Load randomizr and try complete_ra(). Then check with table() as before.
Chargez randomizr et essayez complete_ra(). Vérifiez avec table() comme avant.
Use Gender as the block variable. block_ra() randomizes within each block.
Utilisez Gender comme variable de bloc. block_ra() randomise à l’intérieur de chaque bloc.
Use HomeCountry as the cluster variable. cluster_ra() randomizes by cluster.
Utilisez HomeCountry comme variable de cluster. block_ra() randomise par cluster (grappe).
Context: Treatment was randomized; outcomes were measured. Estimate the average treatment effect by hand (difference in means) — a first step toward hypothesis testing.
Contexte : Le traitement a été randomisé ; les résultats ont été mesurés. Estimez l’effet moyen du traitement à la main (différence de moyennes) — première étape vers les tests d’hypothèse.
From the data viewer, write down:
D’après le data viewer, notez :
Use mean(..., na.rm = TRUE) to drop missing values (NA).
Replace the placeholder below with your outcome variable.
Utilisez mean(..., na.rm = TRUE) pour exclure les valeurs manquantes (NA).
Remplacez l’espace réservé par votre variable de résultat.
Compute the mean outcome in treatment and control using subsets in [ ].
Then subtract: \(\bar{Y}_{\text{treat}} - \bar{Y}_{\text{control}}\) = estimated ATE.
Calculez la moyenne du résultat en traitement et en contrôle avec des sous-ensembles [ ].
Puis soustrayez : \(\bar{Y}_{\text{traitement}} - \bar{Y}_{\text{contrôle}}\) = ATE estimé.
Compare your ATE to the scale of the outcome variable. Is the difference large or small?
Record your answer as a comment in your .R file (# Answer: ...).
Comparez votre ATE à l’échelle de la variable de résultat. La différence est-elle grande ou petite ?
Notez votre réponse en commentaire dans votre fichier .R (# Réponse : ...).
Context: Sample size is a key design choice. Power = probability of detecting an effect if one exists.
This activity uses the EGAP Power Calculator (web app — no R code to copy). Record answers as comments in your .R file.
Contexte : La taille d’échantillon est un choix de conception clé. Puissance = probabilité de détecter un effet s’il existe.
Cette activité utilise le calculateur de puissance EGAP (application web — pas de code R à copier). Notez les réponses en commentaires dans votre fichier .R.
Open the calculator:
Key inputs: significance level (0.05), expected effect size, SD of outcome, power target (80%), max N for the graph.
Ouvrez le calculateur :
Entrées clés : niveau de significativité (0,05), taille d’effet attendue, écart-type du résultat, cible de puissance (80 %), N max pour le graphique.
Context: Different answer strategies give different answers. The right estimator depends on how you randomized (complete vs blocked).
Contexte : Différentes stratégies d’analyse donnent des réponses différentes. Le bon estimateur dépend de la façon dont vous avez randomisé (complète vs par blocs).
If you used complete randomization, analyze with difference_in_means() without blocks.
Replace outcome and treatment variable names. Compare to your Activity 3 hand calculation.
Si vous avez utilisé une randomisation complète, analysez avec difference_in_means() sans blocs.
Remplacez les noms de variables. Comparez avec votre calcul manuel de l’activité 3.
If assignment was blocked on Gender, add blocks = Gender.
Compare Estimate and Std. Error to the complete-randomization model. They should differ — which matches your design?
Si l’assignation était stratifiée par Gender, ajoutez blocks = Gender.
Comparez Estimate et Std. Error au modèle sans blocs. Ils diffèrent — lequel correspond à votre design ?
Analyze as you randomize. Choose the estimator that matches your data strategy.
Analysez comme vous randomisez. Choisissez l’estimateur qui correspond à votre stratégie de données.
.R file — it is your complete record of the session.data_for_analysis.csv in your exercise folder..R — c’est votre trace complète de la session.data_for_analysis.csv dans votre dossier d’exercices.