Feb 24, 2026 - Analysis Wk.1: CDFs

Published

February 24, 2026

Abstract

CDFs that compare outcomes between arms

Note

Discussed on March 3, 2026. Meeting notes available here.

Code
```{python}
#| label: df-subseting
phone_survey_panel = panel_df[(panel_df["period"] > 0) & (panel_df["period"] < 6) & (panel_df["treatment"] != 0)].copy()
balanced_only_ph = phone_survey_panel[phone_survey_panel["treatment_balanced"].isin([1, 2, 3])].copy() 
risky_only = phone_survey_panel[phone_survey_panel["treatment"].isin([3, 4, 5])].copy()
```

Main Results

Note

All outcomes shown below are residualized on baseline values of the outcome. See appendix for non-residualized CDFs.

Aggergated CDFs across Periods 1-5

Food Purchases

Code
```{python}
make_cdf(phone_survey_panel, "food_purchase_total_99_resid", "arm", None)
```

Code
```{python}
make_cdf(balanced_only_ph, "food_purchase_total_99_resid", "arm_split", None)
```

Code
```{python}
make_cdf(risky_only, "food_purchase_total_99_resid", "arm_split", None)
```

Food Insecurity Index

Code
```{python}
make_cdf(phone_survey_panel, "fi_index_resid", "arm", None)
```

Code
```{python}
make_cdf(balanced_only_ph, "fi_index_resid", "arm_split", None)
```

Code
```{python}
make_cdf(risky_only, "fi_index_resid", "arm_split", None)
```

PHQ-2

Code
```{python}
make_cdf(phone_survey_panel, "phq2_z_resid", "arm", None)
```

Code
```{python}
make_cdf(balanced_only_ph, "phq2_z_resid", "arm_split", None)
```

Code
```{python}
make_cdf(risky_only, "phq2_z_resid", "arm_split", None)
```

GAD-2

Code
```{python}
make_cdf(phone_survey_panel, "gad2_z_resid", "arm", None)
```

Code
```{python}
make_cdf(balanced_only_ph, "gad2_z_resid", "arm_split", None)
```

Code
```{python}
make_cdf(risky_only, "gad2_z_resid", "arm_split", None)
```

Split Periods

Food Purchases

Code
```{python}
make_cdf(phone_survey_panel, "food_purchase_total_99_resid", "arm", "period")
```

Code
```{python}
make_cdf(balanced_only_ph, "food_purchase_total_99_resid", "arm_split", "period")
```

Code
```{python}
make_cdf(risky_only, "food_purchase_total_99_resid", "arm_split", "period")
```

Food Insecurity Index

Code
```{python}
make_cdf(phone_survey_panel, "fi_index_resid", "arm", "period")
```

Code
```{python}
make_cdf(balanced_only_ph, "fi_index_resid", "arm_split", "period")
```

Code
```{python}
make_cdf(risky_only, "fi_index_resid", "arm_split", "period")
```

PHQ-2

Code
```{python}
make_cdf(phone_survey_panel, "phq2_z_resid", "arm", "period")
```

Code
```{python}
make_cdf(balanced_only_ph, "phq2_z_resid", "arm_split", "period")
```

Code
```{python}
make_cdf(risky_only, "phq2_z_resid", "arm_split", "period")
```

GAD-2

Code
```{python}
make_cdf(phone_survey_panel, "gad2_z_resid", "arm", "period")
```

Code
```{python}
make_cdf(balanced_only_ph, "gad2_z_resid", "arm_split", "period")
```

Code
```{python}
make_cdf(risky_only, "gad2_z_resid", "arm_split", "period")
```

Appendix

Non-Residualized CDFs

Food Purchases

Code
```{python}
make_cdf(phone_survey_panel, "food_purchase_total_99", "arm", None)
```

Code
```{python}
make_cdf(balanced_only_ph, "food_purchase_total_99", "arm_split", None)
```

Code
```{python}
make_cdf(risky_only, "food_purchase_total_99", "arm_split", None)
```

Food Insecurity Index

Code
```{python}
make_cdf(phone_survey_panel, "fi_index", "arm", None)
```

Code
```{python}
make_cdf(balanced_only_ph, "fi_index", "arm_split", None)
```

Code
```{python}
make_cdf(risky_only, "fi_index", "arm_split", None)
```

PHQ-2

Code
```{python}
make_cdf(phone_survey_panel, "phq2_z", "arm", None)
```

Code
```{python}
make_cdf(balanced_only_ph, "phq2_z", "arm_split", None)
```

Code
```{python}
make_cdf(risky_only, "phq2_z", "arm_split", None)
```

GAD-2

Code
```{python}
make_cdf(phone_survey_panel, "gad2_z", "arm", None)
```

Code
```{python}
make_cdf(balanced_only_ph, "gad2_z", "arm_split", None)
```

Code
```{python}
make_cdf(risky_only, "gad2_z", "arm_split", None)
```