IPW (variable selection: SCAD / lasso / MCP)

Inverse probability weighting with a penalised propensity score. The selection formula includes a redundant covariate x3 (which the DGP does not use for selection); each penalty should learn to drop it.

nonprobsvy version: 0.3.0  |  R: 4.6.0  |  run: 2026-05-24 07:54:24  |  commit: 4b2ba9a

script penalty var_method rep_type num_boot alpha n_reps bias rmse mc_se mean_se coverage ci_width
ipw_scad SCAD analytic NA NA 0.05 500 -0.101 0.176 0.006 0.106 0.726 0.414
ipw_scad lasso analytic NA NA 0.05 500 -0.009 0.123 0.006 0.108 0.908 0.423
ipw_scad MCP analytic NA NA 0.05 500 -0.022 0.126 0.006 0.107 0.886 0.421
ipw_scad_boot SCAD bootstrap subbootstrap 50 0.05 100 -0.109 0.190 0.016 0.110 0.690 0.432
ipw_scad_boot lasso bootstrap subbootstrap 50 0.05 100 -0.018 0.118 0.012 0.114 0.950 0.445
ipw_scad_boot MCP bootstrap subbootstrap 50 0.05 100 -0.027 0.121 0.012 0.113 0.930 0.443

Notes

  • DGP: default with selection formula ~ x1 + x2 + x3. True selection uses only x1 and x2, so x3 is the noise variable.
  • Each replicate runs cross-validation inside control_sel(penalty = ...), which makes this script slower per replicate than the unpenalised IPW variants.
  • Coverage differences across SCAD, lasso, and MCP largely come from how aggressively each penalty zeros out the noise coefficient.