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_growthontraining_hourswith an intercept. - Target model: OLS of
productivity_growthontraining_hoursandskill_indexwith an intercept. Under the stated assumption (training as good as random conditional onskill_index, linear homogeneous effect), the coefficient ontraining_hoursidentifies the estimand.skill_indexis 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_indexcapturing 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_indexmeasures 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.