This article sets out the notation used in the other articles, which follows Leventer (2025), Identification of Child Penalties, and maps it to the output of the package.
The data have one row per person and age, with earnings \(Y\), gender \(G \in \{f, m\}\) and age at first birth \(D\) (\(D = \infty\) for a person who never has a child). A 2x2 comparison is indexed by:
| symbol | meaning | in the package |
|---|---|---|
| \(g\) | gender, \(f\) or \(m\) | female |
| \(d\) | treatment group: first birth at age \(d\) | d |
| \(a\) | target age | a |
| \(d'\) | control group: first birth at age \(d' > a\), not yet treated at the target age | dp |
| \(d - 1\) | baseline age | pre (baseline \(d -
\text{pre}\)) |
| \(e = a - d\) | event time | event_time |
| \(d' - d\) | control offset | control_offset |
| \(D_{\max}\) | largest age at first birth used as a control group | max_control_group |
multiple_treatment_group_analysis() uses the closest
not-yet-treated group as control group, \(d' = a + 1\) (Section 1.3), so after
treatment the control offset is \(e +
1\). For \(d = 26\):
| event time \(e\) | target age \(a\) | control group \(d'\) | control offset \(d' - d\) |
|---|---|---|---|
| 0 | 26 | 27 | 1 |
| 1 | 27 | 28 | 2 |
| 2 | 28 | 29 | 3 |
\(Y_a(d')\) is earnings at age \(a\) had the first birth been at age \(d'\), and \(Y_a(\infty)\) earnings had there been no child; observed earnings are \(Y_a = Y_a(D)\). Mean observed earnings of gender \(g\) and treatment group \(k\) at age \(t\) are \(\mu(g, k, t) = \mathbb{E}[Y_t \mid G = g, D = k]\). The average potential outcome (APO) is \[ \mathrm{APO}(g, d, d', a) = \mathbb{E}\big[Y_a(d') \mid G = g,\, D = d\big], \] mean earnings at age \(a\) of gender \(g\) and treatment group \(d\), had the first birth been at age \(d'\). For a single \((d, a)\) the paper writes \(\mathrm{APO}(g, d) \equiv \mathrm{APO}(g, d, d, a)\), which equals \(\mu(g, d, a)\), and \(\mathrm{APO}(g, \infty) \equiv \mathrm{APO}(g, d, \infty, a)\), mean earnings absent children. The causal estimands are (Sections 1.3 and 4.1):
| symbol | definition | in words |
|---|---|---|
| \(\mathrm{ATE}(g)\) | \(\mathrm{APO}(g, d) - \mathrm{APO}(g, \infty)\) | effect of parenthood on earnings |
| \(\theta(g)\) | \(\mathrm{ATE}(g) / \mathrm{APO}(g, \infty)\) | effect relative to earnings absent children |
| \(\theta(f) - \theta(m)\) | gender gap in normalized effects, the target of normalized event studies | |
| \(\rho(d')\) | \(\mathrm{APO}(f, d, d', a) / \mathrm{APO}(m, d, d', a)\) | gender earnings ratio; \(\rho(d)\) realized, \(\rho(\infty)\) absent children |
| \(\rho(d) - \rho(\infty)\) | effect of parenthood on the gender earnings ratio |
In \(\mathrm{APO}(g, d, d', a)\) and \(\rho(d')\) the argument \(d'\) is a counterfactual age at first birth, as in the paper; elsewhere \(d'\) is the control group.
single_treatment_group_analysis() returns one row per
method and estimand for a cell \((d, d', a)\), and
multiple_treatment_group_analysis() stacks these rows over
cells. The columns are the cell (d, dp,
a, event_time, control_offset),
the row label (method, estimand), the estimate
and its inference (est, se, ci_l,
ci_h, t, p), and the number of
persons by gender in the treatment and control group
(n_female_treat, n_female_control,
n_male_treat, n_male_control). Gaps are female
minus male.
method |
estimand |
the estimate | causal estimand it targets |
|---|---|---|---|
DID_Female, DID_Male |
APO |
DID-imputed counterfactual earnings | \(\mathrm{APO}(g, \infty)\) |
DID_Female, DID_Male |
ATE |
DID | \(\mathrm{ATE}(g)\) |
DID_Female, DID_Male |
theta |
normalized DID | \(\theta(g)\) |
TD |
gap_ATE |
gender gap in DID | \(\mathrm{ATE}(f) - \mathrm{ATE}(m)\) |
Conventional |
gap_theta |
gender gap in normalized DID (the conventional estimator) | \(\theta(f) - \theta(m)\) |
NTD |
rho_effect |
observed minus DID-imputed gender earnings ratio (the new estimator) | \(\rho(d) - \rho(\infty)\) |
NTD |
rho_obs |
observed gender earnings ratio | \(\rho(d)\) |
NTD |
rho_cf |
gender ratio of DID-imputed counterfactual earnings | \(\rho(\infty)\) |
NTD |
share_parenthood |
parenthood’s share of the observed gender gap | \([\rho(\infty) - \rho(d)] / [1 - \rho(d)]\) |
NTD |
share_other |
the share of other factors | \([1 - \rho(\infty)] / [1 - \rho(d)]\) |
TD_E_LOGS |
rho_effect, rho_obs, rho_cf,
share_parenthood, share_other |
as NTD, with counterfactual earnings imputed
multiplicatively |
as NTD |
TD_PR |
gap_theta_pre |
gender gap in effects relative to baseline earnings, imputed multiplicatively | \(\dfrac{\mathrm{ATE}(f)}{\mathrm{APO}(f, d, \infty, d - 1)} - \dfrac{\mathrm{ATE}(m)}{\mathrm{APO}(m, d, \infty, d - 1)}\) |
The estimators, their standard errors, and the assumption under which
each row identifies its target (with the result in the paper) are in Estimation.
aggregate_estimands() returns the same labels averaged over
treatment groups (Aggregation).
A cell of simulated data, treatment group \(d = 26\) one year after the first birth (\(a = 27\), \(e = 1\)) against the control group \(d' = 28\):
library(childpen)
sim <- simulate_data(2000, 24:30)
res <- single_treatment_group_analysis(sim, d = 26, dp = 28, a = 27)
res[1, c("d", "dp", "a", "event_time", "control_offset")]
#> d dp a event_time control_offset
#> 1 26 28 27 1 2
shown <- res[res$method %in% c("DID_Female", "Conventional", "NTD"),
c("method", "estimand", "est", "se", "ci_l", "ci_h")]
shown[3:6] <- round(shown[3:6], 3)
shown
#> method estimand est se ci_l ci_h
#> 1 DID_Female APO 24627.903 592.097 23467.393 25788.413
#> 3 DID_Female ATE -8230.964 515.899 -9242.125 -7219.803
#> 5 DID_Female theta -0.334 0.015 -0.364 -0.304
#> 8 Conventional gap_theta -0.279 0.027 -0.332 -0.226
#> 9 NTD rho_effect -0.284 0.029 -0.340 -0.228
#> 12 NTD rho_obs 0.676 0.022 0.634 0.719
#> 13 NTD rho_cf 0.960 0.032 0.897 1.023
#> 14 NTD share_parenthood 0.876 0.096 0.688 1.065
#> 15 NTD share_other 0.124 0.096 -0.065 0.312