# Does workforce training raise productivity growth? (F6-conf-04, simulated data) ## Question What is the effect of one additional training hour per employee on productivity growth in the year after the programme (pp per hour)? Estimand: causal, linear, homogeneous slope of `training_hours` on `productivity_growth` under selection on observables, where the only pre-programme information is `skill_index`. ## Data and exclusions `data/firms.csv` (simulated): 1200 rows (`n_input_rows`), 4 columns, no missing values, no duplicate firms. One problem found (`data_issues`): 12 firms have negative training hours, which is physically impossible; they were excluded (see `out/exclusions.csv`), leaving 1188 firms (`n_analysed`). A sensitivity analysis that keeps them is reported below. `skill_index` is measured before the programme, so it is a legitimate (pre-treatment) control. Training hours and skill are strongly positively correlated (`corr_skill_training` = 0.68). ## Method - Baseline (required): OLS of `productivity_growth` on `training_hours` with an intercept. - Target model: OLS of `productivity_growth` on `training_hours` and `skill_index` with an intercept. Under the stated assumption (training as good as random conditional on `skill_index`, linear homogeneous effect), the coefficient on `training_hours` identifies the estimand. `skill_index` is the only available pre-treatment confounder and is measured before treatment, so it cannot be a mediator or collider. - Standard errors: HC1 heteroskedasticity-robust (`se_type`); 95% normal intervals. No randomness used (`random_seed` = null). - Specification check: added training², skill² and training×skill terms and ran a joint robust Wald test on them. - Outputs: `out/table1.csv` (one row per model), `out/figure1.png` (scatter plot with both fitted lines; the adjusted line is drawn at the mean skill_index). ## Results - Unadjusted slope: −0.132 pp/hour (`naive_estimate`), 95% CI [−0.160, −0.103] (`naive_ci_low`, `naive_ci_high`); residual RMSE 3.86 pp (`baseline_metric`). - Skill-adjusted slope: **+0.254 pp/hour** (`effect_estimate`), SE 0.0098 (`effect_se`), 95% CI [0.234, 0.273] (`effect_ci_low`, `effect_ci_high`); residual RMSE 1.98 pp (`model_metric`). Coefficient on skill_index: −4.62 pp per index unit (`skill_index_coefficient`). - Conclusion code: `positive_effect` (`conclusion`), because the whole 95% CI is above zero. - The sign reverses after adjustment. This is what omitted-variable bias predicts here: higher-skill firms received more training but had lower productivity growth, so the unadjusted slope mixes the training effect with the negative skill–growth relation. ## Uncertainty The robust 95% CI for the effect is narrow, [0.234, 0.273] pp/hour (`effect_ci_low`, `effect_ci_high`). Robust and conventional SEs were almost the same (conventional ≈ 0.00984 in an ad hoc check, versus HC1 `effect_se` = 0.00981). Including the 12 negative-hour rows changes the estimate only slightly, to 0.252 (SE 0.0095) (`sensitivity_incl_negative_effect_estimate`, `sensitivity_incl_negative_effect_se`). The nonlinear and interaction terms are jointly insignificant (p = 0.86, `spec_check_nonlinear_terms_joint_pvalue`), so the data show no evidence against the linear, homogeneous specification. The CI covers sampling uncertainty only. It does not cover uncertainty about the identifying assumption. ## Limitations and open issues - **Main threat: unobserved confounding.** The causal reading depends entirely on `skill_index` capturing all differences between firms that drive both training uptake and productivity growth (for example management quality, sector, firm size or demand shocks). None of these exist in the file, and the assumption cannot be tested with these data. A large sign reversal after adding a single control shows that the result is highly sensitive to confounding. A second unobserved confounder could move the estimate substantially in either direction. - **Measurement of the control.** If `skill_index` measures true skill with error, adjustment is incomplete. Given the positive skill–training correlation and the negative skill–growth relation, residual confounding would then bias the estimate downward (towards the naive value), so the true effect could be larger. This was not checked. - **Invalid records.** The 12 negative-hour rows point to a data-generation or recording problem. Their cause is unknown. Excluding them barely matters, but if other values are corrupted in ways that cannot be detected, the results could be affected. - **Functional form and heterogeneity.** The tests did not reject linearity or homogeneity, but the power to detect effects that vary across firms is limited. With the observed support (roughly 0 to 52 hours), extrapolating beyond that range is not justified. - **Not checked:** clustering or dependence between firms (assumed independent), influential observations beyond visual inspection, alternative estimators (for example matching or doubly robust methods), and external validity. The data are simulated, so nothing here describes real firms.