---
title: "In-class card experiment | *Expérience en classe : le jeu de cartes*"
author: "Macartan, Alyssa"
date: today
format:
  revealjs:
    embed-resources: true
execute:
  freeze: auto
---

# Introduction | *Introduction*

```{r}
library(knitr)
```

## Welcome | *Bienvenue*

::: {.columns}
::: {.column .lang-en width="50%"}

Today you will **design and run a small experiment by hand**.

You will learn about random assignment, analysis, and design evaluation — without a computer on your desk (for the physical part).

Work in **teams**. Be precise. Play fair.

:::
::: {.column .lang-fr width="50%"}

Aujourd'hui, vous allez **concevoir et mener une petite expérience à la main**.

Vous découvrirez l'assignation aléatoire, l'analyse et l'évaluation (le diagnostic) de la conception de recherche (sans ordinateur).

Vous travaillerez en **équipes**.

:::
:::


## Your materials | *Les éléments du jeu*

::: {.columns}
::: {.column .lang-en width="50%"}

Each team receives an **envelope with 20 cards**.

:::
::: {.column .lang-fr width="50%"}

Chaque équipe reçoit une **enveloppe avec 20 cartes**.

:::
:::

## Your materials | *Votre matériel* {.cards-photo-slide}

![](Images/cards.jpg){width="90%" fig-align="center"}

## What's on each card | *Sur chaque carte*

::: {.columns}
::: {.column .lang-en width="50%"}

On each card:

- One number in **black** writing on white background
- One number in **white** writing on black background
- On the **reverse**, there is an ID and there may or may not be a **symbol or text**

:::
::: {.column .lang-fr width="50%"}

Sur chaque carte :

- Une face : un nombre en **noir** sur fond blanc et un nombre en **blanc** sur fond noir
- L'autre face : on trouve un identifiant et parfois un **symbole ou du texte**

:::
:::

## The research question | *La question de recherche*

::: {.columns}
::: {.column .lang-en width="50%"}

**Question:** On average, are the **black numbers** larger, smaller, or the same as the **white numbers**?

This is your "**estimand**" — the quantity you want to learn.

:::
::: {.column .lang-fr width="50%"}

**Question :** En moyenne, les nombres **noirs** sont-ils plus grands, plus petits ou identiques aux nombres **blancs** ?

C'est votre **paramètre** — la quantité que vous souhaitez déterminer.

:::
:::

## The catch (honor code) | *Quelques règles*

::: {.columns}
::: {.column .lang-en width="50%"}

When you turn over a card, you may read **only one** number:

- the **black** number, **or**
- the **white** number — **not both**

You must decide **before** reading the card which number you will record.

You **may** look at the symbol on the back **before** choosing.

:::
::: {.column .lang-fr width="50%"}

Quand vous retournez une carte, vous ne pouvez lire **qu'un seul** nombre :

- soit le nombre **noir**
- soit le nombre **blanc** — mais **pas les deux**

Vous devez décider **avant** de retourner la carte quel nombre vous allez noter.

Vous **pouvez** regarder le symbole au dos **avant** de faire votre choix.

:::
:::

## Why this is hard | *Pourquoi c'est difficile*

::: {.columns}
::: {.column .lang-en width="50%"}

Each card can give two possible answers:

- the black number
- the white number

You never observe both on the same card.

You choose the assignment to white or black: 

$X=0$: read white or $X=1$: read black.

:::
::: {.column .lang-fr width="50%"}

Chaque carte a deux nombres possibles (``résultats potentiels") :

- le nombre noir
- le nombre blanc

Vous n'observez jamais les deux sur la même carte.

Vous choisissez l'assignation au blanc ou au noir :

$X=0$ : lire le nombre en blanc ou $X=1$ : lire le nombre en noir.

:::
:::

# Step 1 | *Étape 1*

## Step 1 — First experiment | *Étape 1 — Première expérience*

::: {.columns}
::: {.column .lang-en width="50%"}

1. Place all cards **face down**.
2. Choose your **assignment strategy**: for each card, will you read black or white? (Any method is allowed — but write it down.)
3. Turn cards over and record the number you chose to read.
4. Enter results in a spreadsheet (one row per card).

:::
::: {.column .lang-fr width="50%"}

1. Placez toutes les cartes **face cachée**.
2. Choisissez votre **stratégie d'assignation** : pour chaque carte, lirez-vous le noir ou le blanc ? (Toutes les méthodes sont autorisées — mais notez-la.)
3. Retournez les cartes et notez le nombre que vous avez choisi de lire.
4. Saisissez les résultats dans un tableau Excel (une ligne par carte).

:::
:::

## Data you record | *Données à enregistrer* {.compact-table}

::: {.columns}
::: {.column .lang-en width="50%"}

| Column | Meaning |
|:--|:--|
| ID | Card identifier |
| $X$ | Color read: white = 0, black = 1 |
| $Y$ | Number you observed |
| (later) | Extra columns for symbols or notes |

:::
::: {.column .lang-fr width="50%"}

| Colonne | Signification |
|:--|:--|
| ID | Identifiant de la carte |
| $X$ | Couleur lue : blanc = 0, noir = 1 |
| $Y$ | Nombre observé |
| (plus tard) | Colonnes supplémentaires pour symboles ou notes |

:::
:::

## Example data | *Exemple de données* {.compact-table}

::: {.columns}
::: {.column .lang-en width="50%"}

First three rows of your spreadsheet:

:::
::: {.column .lang-fr width="50%"}

Les trois premières lignes de votre feuille :

:::
:::

```{r, echo = FALSE}
data.frame(
  ID = 1:3,
  X = c(0, 0, 1),
  Y = c(9, 2, 3)
) |>
  knitr::kable()
```

## Step 1 — First experiment | *Étape 1 — Première expérience*

::: {.columns}
::: {.column .lang-en width="50%"}

   - Estimate of the average difference (black minus white)
   - Tell us what you conclude about whether the black or white numbers are bigger
   - Record how certain you are: Very certain, somewhat certain, very uncertain
   - [Option: record $p$-values if you calculate these]


:::
::: {.column .lang-fr width="50%"}

   - Calculez une estimation de la différence moyenne (noir moins blanc)
   - Indiquez quelle conclusion vous tirez concernant la question initiale : les nombres noirs et les nombres blancs sont-ils différents en moyenne ?
   - Indiquez votre degré de certitude : très sûr, assez sûr, pas du tout sûr
   - [Option : enregistrer les $p$-valeurs si vous les calculez]

:::
:::

## Step 1 — Summary: 3 tasks | *Étape 1 — Résumé : 3 tâches* {.smaller}

::: {.columns}
::: {.column .lang-en width="50%"}

1. Assign black or white
2. Data collection in spreadsheet: 20 rows
3. Analysis
   - Average of white and black
   - Which is bigger?
   - Certainty?
   - [Optional: $p$-value]

:::
::: {.column .lang-fr width="50%"}

1. Assigner noir ou blanc
2. Collecte des données dans une feuille Excel (20 lignes)
3. Analyse
   - La moyenne des nombres en noir et celle des nombres en blanc
   - Laquelle est plus grande ?
   - Certitude ?
   - [Si vous voulez… $p$-valeur]

:::
:::

# Step 2 | *Étape 2*

## Step 2 — Redesign and repeat | *Étape 2 — Reconcevoir et répéter*

::: {.columns}
::: {.column .lang-en width="50%"}

You completed one round. Now run **10 more**.

Before you start, write a short **pre-analysis plan** (your design):

- Will you change **how** you assign $X$?
- Will you change **how** you analyze the data?

:::
::: {.column .lang-fr width="50%"}

Vous avez terminé un tour. Maintenant, refaites l'expérience **10 fois**.

Avant de commencer, rédigez un court **plan de pré-analyse** (votre conception de recherche) :

- Allez-vous changer **comment** vous assignez $X$ ?
- Allez-vous changer **comment** vous analysez les données ?

:::
:::

## Step 2 — Redesign and repeat | *Étape 2 — Reconcevoir et répéter*

::: {.columns}
::: {.column .lang-en width="50%"}

Then repeat Steps 1–5 ten times.

Plot histograms of your **estimates** across the 10 runs.

[Optional: plot estimates of **standard errors**, and **$p$-values**.]

:::
::: {.column .lang-fr width="50%"}

Puis répétez les étapes 1–5 dix fois.

Tracez des histogrammes de vos **estimations** sur les 10 répétitions.

[Option : tracez des histogrammes des **erreurs-types** et des **$p$-valeurs**.]

:::
:::

## Step 2 — Redesign and repeat | *Étape 2 — Reconcevoir et répéter*

```{r, echo = FALSE}
data.frame(
  ID = 1:3,
  X_1 = c(0, 0, 1),
  Y_1 = c(9, 2, 3),
  X_2 = c(1, 1, 1),
  Y_2 = c(7, 1, 3),
  X_3 = "",
  Y_3 = ""
) |>
  knitr::kable()

data.frame(
  trial = 1:3,
  black_average = c(5, 2, 3),
  white_average = c(1, 6, 3),
  black_bigger = c(1, 0, 0),
  certain = c(1, 1, 1)
) |>
  knitr::kable()
```


# Step 3 | *Étape 3*

## Step 3 — Reveal and diagnose | *Étape 3 — Révéler et diagnostiquer* {.smaller}

::: {.columns}
::: {.column .lang-en width="50%"}

Now turn **all** cards over and read **both** numbers on every card.

1. Calculate the **true** average difference (black minus white).
2. Using your 10 runs, assess:
   - **Bias** — did estimates center on the truth?
   - **Power** — how often did you reject “no difference” when there is one?
3. Explore correlations (white vs black numbers; numbers vs symbols).

:::
::: {.column .lang-fr width="50%"}

Retournez maintenant **toutes** les cartes et lisez **les deux** nombres sur chaque carte.

1. Calculez la **vraie** différence moyenne (noir moins blanc).
2. À partir de vos 10 répétitions, évaluez :
   - **Biais** — les estimations centrent-elles sur la vérité ?
   - **Puissance** — à quelle fréquence rejettez-vous « aucune différence » quand il y en a une ?
3. Explorez les corrélations (blanc vs noir ; nombres vs symboles).

:::
:::

# Deliverables | *Livrables*

## What to submit | *Ce qu'il faut rendre*

::: {.columns}
::: {.column .lang-en width="50%"}

E-mail a short team report with:

a. Team members' names  
b. Pre-analysis plan (one paragraph: assignment; one paragraph: analysis)  
c. Histograms from Step 2  
d. Diagnosis from Step 3  

:::
::: {.column .lang-fr width="50%"}

Envoyez par e-mail un rapport d'équipe avec :

a. Noms des membres de l'équipe  
b. Plan de pré-analyse (un paragraphe : assignation ; un paragraphe : analyse)  
c. Histogrammes de l'étape 2  
d. Diagnostic de l'étape 3  

:::
:::

# In-class discussion | *Discussion en classe*

## Discussion 1 — Design choices | *Discussion 1 — Choix dans la conception de recherche*

::: {.columns}
::: {.column .lang-en width="50%"}

- What assignment rule did you use for $X$? Why?
- Did you use the symbol on the back when choosing? Should you?
- Could your rule create **bias** even if you analyze correctly?

:::
::: {.column .lang-fr width="50%"}

- Quelle règle d'assignation avez-vous utilisée pour $X$ ? Pourquoi ?
- Avez-vous utilisé le symbole au dos pour choisir ? Devriez-vous ?
- Votre règle pourrait-elle créer un **biais** même avec une bonne analyse ?

:::
:::

## Discussion 2 — What you learned from repeating | *Discussion 2 — Ce que la répétition vous a appris*

::: {.columns}
::: {.column .lang-en width="50%"}

- How much did your estimate vary across the 10 runs?
- Did standard errors and $p$-values behave as you expected?
- What would you change in a **second generation** design?

:::
::: {.column .lang-fr width="50%"}

- Dans quelle mesure vos estimations ont-elles varié au cours des 10 essais ?
- Les erreurs-types et $p$-valeurs se sont-elles comportées comme prévu ?
- Que changeriez-vous dans une conception de recherchde de **deuxième génération** ?

:::
:::

## Discussion 3 — Truth and diagnosis | *Discussion 3 — Vérité et diagnostic*

::: {.columns}
::: {.column .lang-en width="50%"}

- Were your designs **unbiased**? **Powerful**? **Well calibrated**?
- When would **blocking** or **adjusting for symbols** help?
- How is this card game like a real field experiment? What is different?

:::
::: {.column .lang-fr width="50%"}

- Vos conceptions étaient-elles **non biaisées** ? **Puissantes** ? **Bien calibrées** ?
- Quand la **randomisation par bloc** ou **l'ajustement sur les symboles** aiderait-il ?
- En quoi ce jeu de cartes ressemble-t-il à une vraie expérience de terrain ? Qu'est-ce qui diffère ?

:::
:::

## Discussion 4 — Big picture | *Discussion 4 — Vue d'ensemble*

::: {.columns}
::: {.column .lang-en width="50%"}

- What is the difference between **design** (how you assign $X$) and **analysis** (how you estimate)?
- Why is a **pre-analysis plan** useful before repeating a study?
- What did this exercise teach you about **randomization**?

:::
::: {.column .lang-fr width="50%"}

- Quelle est la différence entre **conception de recherche** (assigner $X$) et **une analyse** (estimer) ?
- Pourquoi un **plan de pré-analyse** est-il utile avant de répéter une étude ?
- Qu'est-ce que cet exercice vous a appris sur la **randomisation** ?

:::
:::



## What was going on? | *Ce qui se passait ?* {.card-groups-slide}

::: {.columns}
::: {.column .lang-en width="50%"}

In all groups, $Y_0$ were the numbers 1–20.

|   | $\tau$ | Uncertainty | Clue | Symbols |
|:--|--:|:-----|:-----------------|:------------------|
| A | 0 | Low | $Y_1$ negatively correlated with $Y_0$ | Irrelevant |
| B | 0 | High | $Y_1$ positively correlated with $Y_0$ | Irrelevant |
| C | 5 | Low | $Y_1$ negatively correlated with $Y_0$ | Use as control / blocks |
| D | 5 | High | $Y_1$ positively correlated with $Y_0$ | Use as control / blocks |
| E | 5 | Medium | $Y_1$ has no variance | Irrelevant — choose lots of $Y_0$ |
| F | 5 | Medium | Heterogeneous by prompt | Block with more $Y_0$ in no-prompt group |

:::
::: {.column .lang-fr width="50%"}

Dans tous les groupes, $Y_0$ étaient les nombres 1 à 20.

|   | $\tau$ | Incertitude | Indice | Symboles |
|:--|--:|:-----|:-----------------|:------------------|
| A | 0 | Faible | $Y_1$ négativement corrélé à $Y_0$ | Sans importance |
| B | 0 | Élevée | $Y_1$ positivement corrélé à $Y_0$ | Sans importance |
| C | 5 | Faible | $Y_1$ négativement corrélé à $Y_0$ | Utiliser comme contrôle / blocs |
| D | 5 | Élevée | $Y_1$ positivement corrélé à $Y_0$ | Utiliser comme contrôle / blocs |
| E | 5 | Moyenne | $Y_1$ sans variance | Sans importance — choisir beaucoup de $Y_0$ |
| F | 5 | Moyenne | Hétérogénéité selon l'invite | Bloquer avec plus de $Y_0$ dans le groupe sans invite |

:::
:::


```{r, include = FALSE}
library(tidyverse)
library(DeclareDesign)

cardgame_rds <- "saved/cardgame_simulation.rds"
if (!file.exists(cardgame_rds)) {
  stop(
    "Missing ", cardgame_rds,
    ". Run ensure_cardgame_simulation() or make_everything() first.",
    call. = FALSE
  )
}
diagnosis_1 <- read_rds(cardgame_rds)
diag_tbl <- diagnosis_1 |>
  reshape_diagnosis() |>
  select(Inquiry, Bias, Power, Coverage)
```

## Results | *Résultats* {.smaller}

::: {.columns}
::: {.column .lang-en width="50%"}

Distribution of estimates, standard errors, and $p$-values across estimators.

:::
::: {.column .lang-fr width="50%"}

Distribution des estimations, erreurs-types et $p$-valeurs par estimateur.

:::
:::

```{r, echo = FALSE, fig.height = 4.5, fig.width = 8}
diagnosis_1$simulations_df |>
  select(estimator, estimate) |>
  pivot_longer(-estimator, names_to = "stat", values_to = "val") |>
  ggplot(aes(val)) +
  geom_histogram(bins = 20) +
  facet_wrap(estimator ~ stat, scales = "free_x") +
  theme_bw() +
  geom_vline(aes(xintercept = 0, color = "red")) +
  geom_vline(aes(xintercept = 5, color = "red"))
```

<!-- ## Diagnosis of one design | *Diagnostic d'une conception* {.compact-table .smaller} -->

<!-- ::: {.columns} -->
<!-- ::: {.column .lang-en width="50%"} -->

<!-- Simulation diagnosis for one card-game design. -->

<!-- ```{r, echo = FALSE} -->
<!-- diag_tbl |> knitr::kable() -->
<!-- ``` -->

<!-- ::: -->
<!-- ::: {.column .lang-fr width="50%"} -->

<!-- Diagnostic par simulation pour une conception du jeu de cartes. -->

<!-- ```{r, echo = FALSE} -->
<!-- diag_tbl |> -->
<!--   rename( -->
<!--     Question = Inquiry, -->
<!--     Biais = Bias, -->
<!--     Puissance = Power, -->
<!--     Couverture = Coverage -->
<!--   ) |> -->
<!--   knitr::kable() -->
<!-- ``` -->

<!-- ::: -->
<!-- ::: -->
