diff --git a/CHANGELOG.md b/CHANGELOG.md index 5092219c..f7d75bee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - **`target_parameter` block in BR/DR schemas (experimental; schema version bumped to 2.0)** — `BUSINESS_REPORT_SCHEMA_VERSION` and `DIAGNOSTIC_REPORT_SCHEMA_VERSION` bumped from `"1.0"` to `"2.0"` because the new `"no_scalar_by_design"` value on the `headline.status` / `headline_metric.status` enum (dCDH `trends_linear=True, L_max>=2` configuration) is a breaking change per the REPORTING.md stability policy. BusinessReport and DiagnosticReport now emit a top-level `target_parameter` block naming what the headline scalar actually represents for each of the 16 result classes. Closes BR/DR foundation gap #6 (target-parameter clarity). Fields: `name`, `definition`, `aggregation` (machine-readable dispatch tag), `headline_attribute` (raw result attribute), `reference` (citation pointer). BR's summary emits the short `name` right after the headline; DR's overall-interpretation paragraph does the same; both full reports carry a "## Target Parameter" section with the full definition. Per-estimator dispatch is sourced from REGISTRY.md and lives in the new `diff_diff/_reporting_helpers.py::describe_target_parameter`. A few branches read fit-time config (`EfficientDiDResults.pt_assumption`, `StackedDiDResults.clean_control`, `ChaisemartinDHaultfoeuilleResults.L_max` / `covariate_residuals` / `linear_trends_effects`); others emit a fixed tag (the fit-time `aggregate` kwarg on CS / Imputation / TwoStage / Wooldridge does not change the `overall_att` scalar — disambiguating horizon / group tables is tracked under gap #9). See `docs/methodology/REPORTING.md` "Target parameter" section. +### Fixed +- SyntheticDiD `variance_method="bootstrap"` now computes p-values from the analytical normal-theory formula using the bootstrap SE (matching R's `synthdid::vcov()` convention), rather than an empirical null-distribution formula that is not valid for bootstrap draws. `is_significant` and `significance_stars` are derived from `p_value` and will also change for bootstrap fits. Placebo and jackknife are unchanged. Point estimates and standard errors are unaffected. +- SyntheticDiD bootstrap SE formula applies the `sqrt((r-1)/r)` correction matching R's synthdid and the placebo SE formula. +- SyntheticDiD bootstrap now retries degenerate resamples (all-control or all-treated, or non-finite `τ_b`) until exactly `n_bootstrap` valid replicates are accumulated, matching R's `synthdid::bootstrap_sample` and Arkhangelsky et al. (2021) Algorithm 2. Previously the Python path counted attempts (with degenerate draws silently dropped), producing fewer valid replicates than requested. A bounded-attempt guard (`20 × n_bootstrap`) prevents pathological-input hangs. + ## [3.2.0] - 2026-04-19 ### Added diff --git a/TODO.md b/TODO.md index 0ac90eb9..f4022c9f 100644 --- a/TODO.md +++ b/TODO.md @@ -99,6 +99,7 @@ Deferred items from PR reviews that were not addressed before merge. | `HeterogeneousAdoptionDiD` Phase 5: `practitioner_next_steps()` integration, tutorial notebook, and `llms.txt` updates (preserving UTF-8 fingerprint). | `diff_diff/practitioner.py`, `tutorials/`, `diff_diff/guides/` | Phase 2a | Low | | `HeterogeneousAdoptionDiD` staggered-timing reduction: Phase 2a requires exactly 2 time periods and raises on `>2` periods with or without `first_treat_col`. A "last-cohort subgroup" reduction scheme (slice to max-cohort's 2-period window) could lift this in a targeted follow-up PR before full Phase 2b multi-period aggregation. | `diff_diff/had.py::_validate_had_panel` | Phase 2a | Low | | `HeterogeneousAdoptionDiD` repeated-cross-section support: paper Section 2 defines HAD on panel OR repeated cross-section, but Phase 2a is panel-only. RCS inputs (disjoint unit IDs between periods) are rejected by the balanced-panel validator with the generic "unit(s) do not appear in both periods" error. A follow-up PR will add an RCS identification path based on pre/post cell means (rather than unit-level first differences), with its own validator and a distinct `data_mode` / API surface. | `diff_diff/had.py::_validate_had_panel`, `diff_diff/had.py::_aggregate_first_difference` | Phase 2a | Medium | +| SyntheticDiD: ship paper-faithful refit bootstrap (Arkhangelsky et al. 2021 Algorithm 2, re-estimating ω and λ per draw) as an opt-in `bootstrap_weights="refit"` kwarg. Current bootstrap matches R's fixed-weight shortcut. | `synthetic_did.py::_bootstrap_se` | follow-up | Low | #### Performance @@ -124,6 +125,8 @@ Deferred items from PR reviews that were not addressed before merge. | `EDiDBootstrapResults` cross-reference is ambiguous — class is exported from both `diff_diff` and `diff_diff.efficient_did_bootstrap`, producing 3 "more than one target found" warnings. Add `:noindex:` to one source or use full-path refs | `diff_diff/efficient_did_results.py`, `docs/api/efficient_did.rst` | — | Low | | Tracked Sphinx autosummary stubs in `docs/api/_autosummary/*.rst` are stale — every sphinx build regenerates them with new attributes (e.g., `coef_var`, `survey_metadata`) that have been added to result classes. Either commit a refresh or move the directory to `.gitignore` and treat as build output. Also 6 untracked stubs exist for newer estimators (`WooldridgeDiD`, `SimulationMDEResults`, etc.) that have never been committed. | `docs/api/_autosummary/` | — | Low | | HonestDiD `test_m0_short_circuit` uses wall-clock `elapsed < 0.5s` as a proxy for "short-circuit path taken" instead of calling the full optimizer. Replace with a direct correctness signal (mock/spy the optimizer or check a state flag) so the test doesn't depend on CI timing. Not flaky today at 500ms, but load-bearing correctness on a timing proxy is brittle. | `tests/test_methodology_honest_did.py:246` | — | Low | +| SyntheticDiD: coverage Monte Carlo study — empirical 95% CI coverage for placebo / fixed-bootstrap / jackknife on representative DGPs; document in REGISTRY.md to support the fixed-weight deviation label and calibrate user expectations. | `benchmarks/`, `docs/methodology/REGISTRY.md` | follow-up | Low | +| SyntheticDiD: rename internal `placebo_effects` variable to `null_or_bootstrap_effects` (or `variance_effects`). Misleading name across the bootstrap/placebo/jackknife dispatch paths; low-risk refactor. | `synthetic_did.py`, `synthetic_did_results.py` | follow-up | Low | --- diff --git a/benchmarks/R/generate_sdid_bootstrap_parity_fixture.R b/benchmarks/R/generate_sdid_bootstrap_parity_fixture.R new file mode 100644 index 00000000..4071c01d --- /dev/null +++ b/benchmarks/R/generate_sdid_bootstrap_parity_fixture.R @@ -0,0 +1,153 @@ +#!/usr/bin/env Rscript +# Generate an R-parity fixture for SyntheticDiD bootstrap SE. +# +# The fixture pins B non-degenerate bootstrap indices and the resulting +# R-computed bootstrap SE so that the Python R-parity test can feed the +# same indices through `_bootstrap_se` and expect bit-identical SE. +# +# Usage: +# Rscript benchmarks/R/generate_sdid_bootstrap_parity_fixture.R +# +# Output: +# tests/data/sdid_bootstrap_indices_r.json + +library(synthdid) +library(jsonlite) + +# Panel data — must match TestJackknifeSERParity.Y_FLAT in +# tests/test_methodology_sdid.py (23 units × 8 periods = 184 values). +Y_flat <- c( + 12.459567808595292, 13.223481099962006, 13.658348196773856, + 13.844051055863837, 13.888854636247594, 14.997677893012806, + 14.494587375086788, 15.851128751231856, 10.527006629006900, + 11.317894498245712, 9.780141451338988, 10.635177418486473, + 11.007911133698329, 11.692547000930196, 11.532445341187122, + 10.646344091442769, 5.779122815714058, 5.265746845809725, + 4.828411925858962, 5.933107464969151, 6.926403492435262, + 7.566662873481445, 6.703831577045862, 7.090431451464497, + 6.703722507026075, 6.453676391630379, 7.301398891231049, + 7.726092498224848, 8.191225590595401, 7.669210641906834, + 8.526151391259425, 7.715169490073769, 8.005628186152748, + 7.523978158267692, 9.049143286687135, 9.434081283341134, + 9.450553333966674, 10.310163601090766, 9.867729569702721, + 9.846941461031360, 10.459939463684098, 11.887686682638062, + 11.249912950470762, 12.093459993478538, 12.226598684379407, + 11.973716581337246, 13.453499811673423, 13.287085704636093, + 10.317796666844943, 10.819165701226847, 10.824437736488752, + 9.582976251622744, 11.521962769964540, 11.495903971828724, + 12.072136575632017, 12.570433156881965, 12.435827624848123, + 13.750744970607428, 13.567397714461393, 14.218726703934166, + 14.459837938730677, 14.659912736018788, 14.077914185301429, + 14.854380461280002, 10.770274645112915, 11.275621916712160, + 12.137534572839927, 12.531125692916383, 12.678920118269170, + 12.304148175294246, 12.497145874675160, 14.103389828901550, + 10.560062989643855, 10.755394606294518, 10.518678427483797, + 11.721841324084256, 11.607272952190801, 11.924464521898100, + 12.782516039349641, 13.026729430318186, 12.546145790341205, + 13.409407032231695, 14.079787980063543, 13.128838312144593, + 13.553836458429620, 13.718363411441658, 13.854625752117343, + 14.924224028489123, 11.906891367097627, 12.128784222882244, + 11.404804355878456, 13.130649630134753, 12.173021974919472, + 12.859165585526416, 12.895280738363951, 13.345233593320895, + 10.435966548001499, 10.663839793569295, 11.030422432974012, + 11.033668451079661, 11.324277503659044, 11.045836529045589, + 11.985219205566086, 12.220060940064094, 14.722723885094736, + 15.772410109968900, 15.256969467031452, 15.568564129971197, + 16.666133193788099, 16.405462433247578, 17.202870693537243, + 17.289652559976691, 7.760317864391456, 8.460282811921017, + 9.462415007659978, 9.956467084312777, 9.726218110324272, + 10.272688229133685, 11.134101608790994, 11.592584658589104, + 7.747112683063268, 8.706521663648207, 8.170907672905205, + 8.679537720718859, 8.962718814069811, 8.861932954235140, + 9.383430460745986, 9.891050023644237, 9.728955313568255, + 9.231765881057163, 9.555677785583788, 10.420693590160205, + 9.844078095298698, 10.651913064308546, 10.196489890710358, + 11.855847076501993, 9.218785934915712, 9.133582433258733, + 10.048827580363175, 9.952567508276010, 10.385962432276619, + 11.596546220044132, 11.164945662130776, 11.016817405176500, + 10.145044557120791, 10.921420538928436, 11.642624728800259, + 10.730067509380019, 11.753738913724906, 11.868862794274008, + 12.574196556067037, 12.311524695461632, 10.800710206252880, + 12.817967597577915, 12.705627126180516, 12.497850142478354, + 12.148734571851643, 13.494742486942219, 13.714835068828613, + 13.770060323710533, 10.010857300549947, 10.787315152039971, + 11.050238955584605, 11.063282099053561, 10.834793458278272, + 17.153286194944865, 17.380010096861866, 16.984758489324143, + 6.913302966281331, 6.938279687001069, 7.537129527669741, + 7.063822443245238, 7.531238453797332, 13.853711102827464, + 13.812711128345372, 14.204067444347162, 13.694867606609098, + 12.929992273442151, 14.397345491024691, 15.116119455987304, + 15.860226513457558, 19.442026093187646, 19.855029109494353, + 20.377546194927845 +) +stopifnot(length(Y_flat) == 184L) + +N0 <- 20L # controls +N1 <- 3L # treated +T0 <- 5L # pre +T1 <- 3L # post +N <- N0 + N1 +T <- T0 + T1 + +Y <- matrix(Y_flat, nrow = N, ncol = T, byrow = TRUE) + +# Fit once to obtain the omega / lambda that the bootstrap holds fixed +tau_hat <- synthdid_estimate(Y, N0, T0) +weights <- attr(tau_hat, "weights") + +# Bootstrap loop — record indices and compute tau_b with fixed weights, +# mimicking synthdid::vcov(method="bootstrap") per the package source. +# Retry on degenerate draws (no controls or no treated) so the fixture +# contains B non-degenerate rows and Python's `_bootstrap_indices` seam +# consumes them all without skipping. +set.seed(42L) +B <- 200L + +sum_normalize <- function(v) { + s <- sum(v) + if (s > 0) v / s else rep(1 / length(v), length(v)) +} + +indices_matrix <- matrix(0L, nrow = B, ncol = N) +tau_boot <- numeric(B) +b <- 1L +while (b <= B) { + ind <- sample(seq_len(N), replace = TRUE) + n_co_b <- sum(ind <= N0) + if (n_co_b == 0L || n_co_b == N) next # degenerate — retry + weights_boot <- weights + weights_boot$omega <- sum_normalize(weights$omega[sort(ind[ind <= N0])]) + tau_boot_b <- synthdid_estimate( + Y[sort(ind), ], sum(ind <= N0), T0, + weights = weights_boot + ) + indices_matrix[b, ] <- ind + tau_boot[b] <- as.numeric(tau_boot_b) + b <- b + 1L +} + +se <- sqrt((B - 1) / B) * sd(tau_boot) + +output_path <- file.path("tests", "data", "sdid_bootstrap_indices_r.json") +dir.create(dirname(output_path), recursive = TRUE, showWarnings = FALSE) +write_json( + list( + indices = indices_matrix, + seed = 42L, + n_bootstrap = B, + se = se, + att = as.numeric(tau_hat), + metadata = list( + r_version = R.version.string, + synthdid_version = as.character(packageVersion("synthdid")), + panel_N = N, + panel_T = T, + N0 = N0, T0 = T0 + ) + ), + output_path, + pretty = TRUE, + auto_unbox = TRUE, + digits = NA # preserve full float64 precision +) +cat(sprintf("Wrote %s (B=%d, SE=%.15g)\n", output_path, B, se)) diff --git a/diff_diff/synthetic_did.py b/diff_diff/synthetic_did.py index bddaacb9..10dc4c7b 100644 --- a/diff_diff/synthetic_did.py +++ b/diff_diff/synthetic_did.py @@ -431,11 +431,7 @@ def fit( # type: ignore[override] # nonzero (near-constant Y_pre_control). Fall back to 1.0 in that # case and on non-finite std. _scale_floor = 1e-12 * max(abs(Y_shift), 1.0) - Y_scale = ( - Y_scale_raw - if np.isfinite(Y_scale_raw) and Y_scale_raw > _scale_floor - else 1.0 - ) + Y_scale = Y_scale_raw if np.isfinite(Y_scale_raw) and Y_scale_raw > _scale_floor else 1.0 Y_pre_control_n = (Y_pre_control - Y_shift) / Y_scale Y_post_control_n = (Y_post_control - Y_shift) / Y_scale Y_pre_treated_n = (Y_pre_treated - Y_shift) / Y_scale @@ -452,20 +448,14 @@ def fit( # type: ignore[override] Y_pre_control_n, len(treated_units), len(post_periods) ) zeta_omega_n = ( - self.zeta_omega / Y_scale - if self.zeta_omega is not None - else auto_zeta_omega_n + self.zeta_omega / Y_scale if self.zeta_omega is not None else auto_zeta_omega_n ) zeta_lambda_n = ( - self.zeta_lambda / Y_scale - if self.zeta_lambda is not None - else auto_zeta_lambda_n + self.zeta_lambda / Y_scale if self.zeta_lambda is not None else auto_zeta_lambda_n ) # Report the user-supplied value exactly (no roundoff from /*Y_scale # roundtrip); report auto-zeta rescaled to original Y units. - zeta_omega = ( - self.zeta_omega if self.zeta_omega is not None else auto_zeta_omega_n * Y_scale - ) + zeta_omega = self.zeta_omega if self.zeta_omega is not None else auto_zeta_omega_n * Y_scale zeta_lambda = ( self.zeta_lambda if self.zeta_lambda is not None else auto_zeta_lambda_n * Y_scale ) @@ -516,9 +506,7 @@ def fit( # type: ignore[override] # Compute SDID estimate on normalized Y, then rescale to original units. if w_treated is not None: - Y_post_treated_mean_n = np.average( - Y_post_treated_n, axis=1, weights=w_treated - ) + Y_post_treated_mean_n = np.average(Y_post_treated_n, axis=1, weights=w_treated) else: Y_post_treated_mean_n = np.mean(Y_post_treated_n, axis=1) @@ -542,9 +530,7 @@ def fit( # type: ignore[override] # original outcome scale for plotting and the poor-fit warning. synthetic_pre_trajectory = Y_pre_control @ omega_eff synthetic_post_trajectory = Y_post_control @ omega_eff - pre_fit_rmse = np.sqrt( - np.mean((Y_pre_treated_mean - synthetic_pre_trajectory) ** 2) - ) + pre_fit_rmse = np.sqrt(np.mean((Y_pre_treated_mean - synthetic_pre_trajectory) ** 2)) # Warn if pre-treatment fit is poor (Registry requirement). # Threshold: 1× SD of treated pre-treatment outcomes — a natural baseline @@ -623,14 +609,13 @@ def fit( # type: ignore[override] # Compute test statistics t_stat, p_value_analytical, conf_int = safe_inference(att, se, alpha=self.alpha) - # Empirical p-value for placebo/bootstrap (null-distribution draws). - # Jackknife pseudo-values are NOT null-distribution draws, so use - # analytical (normal) p-value instead. - if ( - inference_method != "jackknife" - and len(placebo_effects) > 0 - and np.isfinite(t_stat) - ): + # Empirical p-value is valid only for placebo (Algorithm 4): control + # permutations produce draws from the null distribution, centered on 0. + # Bootstrap draws (Algorithm 2) are resampled units centered on τ̂ + # (sampling distribution, not null), and jackknife pseudo-values are not + # null-distribution draws either. Both use the analytical p-value from + # the bootstrap/jackknife SE. + if inference_method == "placebo" and len(placebo_effects) > 0 and np.isfinite(t_stat): p_value = max( np.mean(np.abs(placebo_effects) >= np.abs(att)), 1.0 / (len(placebo_effects) + 1), @@ -877,6 +862,7 @@ def _bootstrap_se( w_treated=None, w_control=None, resolved_survey=None, + _bootstrap_indices: Optional[np.ndarray] = None, ) -> Tuple[float, np.ndarray]: """Compute bootstrap standard error matching R's synthdid bootstrap_sample. @@ -890,6 +876,11 @@ def _bootstrap_se( survey weights; they composite with SDID unit weights the same way pweights do in the weights-only path. + ``_bootstrap_indices`` is a test-only seam: when provided (shape + ``(n_bootstrap, n_total)``), the pairs-bootstrap branch uses row ``b`` + of the array instead of ``rng.choice``. Used by the R-parity test to + feed pre-computed R indices; ignored by the Rao-Wu branch. + This matches R's ``synthdid::vcov(method="bootstrap")``. """ from diff_diff.bootstrap_utils import generate_rao_wu_weights @@ -915,9 +906,24 @@ def _bootstrap_se( ): return np.nan, np.array([]) - bootstrap_estimates = [] - - for _ in range(self.n_bootstrap): + bootstrap_estimates: List[float] = [] + + # Retry-until-B-valid semantic: matches R's synthdid::bootstrap_sample + # (`while (count < replications) { ...; if !is.na(est) count = count+1 }`) + # and paper Algorithm 2 (B bootstrap replicates). A bounded attempt + # guard (20x) prevents pathological-input hangs; normal fits finish + # well inside this budget because degenerate-draw probability scales + # as (N_co/N)^N + (N_tr/N)^N, which is small for any non-trivial + # N_co/N_tr split. + max_attempts = 20 * self.n_bootstrap + attempts = 0 + # Fixture-driven path uses deterministic index iteration instead of + # retry: R's generator already encodes retry semantics into the stored + # B x N indices, so every row is pre-validated. + fixture_row = 0 + + while len(bootstrap_estimates) < self.n_bootstrap and attempts < max_attempts: + attempts += 1 if _use_rao_wu: # --- Rao-Wu rescaled bootstrap path --- # generate_rao_wu_weights returns per-unit rescaled survey @@ -929,7 +935,7 @@ def _bootstrap_se( rw_control = boot_rw[:n_control] rw_treated = boot_rw[n_control:] - # Skip if all control or all treated weights are zero + # Retry if all control or all treated weights are zero if rw_control.sum() == 0 or rw_treated.sum() == 0: continue @@ -961,21 +967,28 @@ def _bootstrap_se( time_weights, ) if np.isfinite(tau): - bootstrap_estimates.append(tau) + bootstrap_estimates.append(float(tau)) except (ValueError, LinAlgError): continue else: # --- Standard pairs bootstrap path (weights-only or no survey) --- - # Resample ALL units with replacement - boot_idx = rng.choice(n_total, size=n_total, replace=True) + # Resample ALL units with replacement (or use pre-computed + # indices from the test-only _bootstrap_indices seam). + if _bootstrap_indices is not None: + if fixture_row >= len(_bootstrap_indices): + break + boot_idx = np.asarray(_bootstrap_indices[fixture_row], dtype=np.int64) + fixture_row += 1 + else: + boot_idx = rng.choice(n_total, size=n_total, replace=True) # Identify which resampled units are control vs treated boot_is_control = boot_idx < n_control boot_control_idx = boot_idx[boot_is_control] boot_treated_idx = boot_idx[~boot_is_control] - # Skip if no control or no treated units in bootstrap sample + # Retry if no control or no treated units in bootstrap sample if len(boot_control_idx) == 0 or len(boot_treated_idx) == 0: continue @@ -1027,21 +1040,23 @@ def _bootstrap_se( time_weights, ) if np.isfinite(tau): - bootstrap_estimates.append(tau) + bootstrap_estimates.append(float(tau)) except (ValueError, LinAlgError): continue bootstrap_estimates = np.array(bootstrap_estimates) - # Check bootstrap success rate and handle failures + # Check bootstrap success rate and handle failures. + # n_successful should equal self.n_bootstrap under the retry contract; + # it only falls short if max_attempts was exhausted on pathological data. n_successful = len(bootstrap_estimates) failure_rate = 1 - (n_successful / self.n_bootstrap) if n_successful == 0: raise ValueError( - f"All {self.n_bootstrap} bootstrap iterations failed. " - f"This typically occurs when:\n" + f"Could not produce any valid bootstrap draw in {attempts} " + f"attempts (target {self.n_bootstrap}). This typically occurs when:\n" f" - Sample size is too small for reliable resampling\n" f" - Weight matrices are singular or near-singular\n" f" - Insufficient pre-treatment periods for weight estimation\n" @@ -1049,27 +1064,34 @@ def _bootstrap_se( f"Consider using variance_method='placebo' or increasing " f"the regularization parameters (zeta_omega, zeta_lambda)." ) - elif n_successful == 1: + if n_successful == 1: warnings.warn( - f"Only 1/{self.n_bootstrap} bootstrap iteration succeeded. " - f"Standard error cannot be computed reliably (requires at least 2). " - f"Returning SE=0.0. Consider using variance_method='placebo' or " - f"increasing the regularization (zeta_omega, zeta_lambda).", + f"Only 1/{self.n_bootstrap} valid bootstrap draw accumulated in " + f"{attempts} attempts. Standard error cannot be computed reliably " + f"(requires at least 2). Returning SE=0.0. Consider using " + f"variance_method='placebo' or increasing the regularization " + f"(zeta_omega, zeta_lambda).", UserWarning, stacklevel=2, ) - se = 0.0 - elif failure_rate > 0.05: + return 0.0, bootstrap_estimates + + if failure_rate > 0.05: warnings.warn( - f"Only {n_successful}/{self.n_bootstrap} bootstrap iterations succeeded " - f"({failure_rate:.1%} failure rate). Standard errors may be unreliable. " - f"This can occur with small samples or insufficient pre-treatment periods.", + f"Bootstrap attempt budget exhausted: only {n_successful}/" + f"{self.n_bootstrap} valid draws accumulated in {attempts} " + f"attempts. Standard errors may be unreliable; pathological " + f"inputs can produce this signal (e.g., extreme treated/control " + f"imbalance or singular weight matrices).", UserWarning, stacklevel=2, ) - se = float(np.std(bootstrap_estimates, ddof=1)) - else: - se = float(np.std(bootstrap_estimates, ddof=1)) + + # SE formula matches R's synthdid::vcov(method="bootstrap"): + # sqrt((r-1)/r) * sd(ddof=1), equivalent to Arkhangelsky et al. (2021) + # Algorithm 2's σ̂² = (1/r) Σ (τ_b - τ̄)². Uses n_successful for + # consistency with _placebo_variance_se. + se = float(np.sqrt((n_successful - 1) / n_successful) * np.std(bootstrap_estimates, ddof=1)) return se, bootstrap_estimates @@ -1415,12 +1437,8 @@ def _jackknife_se( jackknife_estimates[n_control + k] = np.nan mask[k] = True continue - t_pre_mean = np.average( - Y_pre_treated[:, mask], axis=1, weights=w_t_jk - ) - t_post_mean = np.average( - Y_post_treated[:, mask], axis=1, weights=w_t_jk - ) + t_pre_mean = np.average(Y_pre_treated[:, mask], axis=1, weights=w_t_jk) + t_post_mean = np.average(Y_post_treated[:, mask], axis=1, weights=w_t_jk) else: t_pre_mean = np.mean(Y_pre_treated[:, mask], axis=1) t_post_mean = np.mean(Y_post_treated[:, mask], axis=1) diff --git a/docs/methodology/REGISTRY.md b/docs/methodology/REGISTRY.md index b7aed604..0b2caecb 100644 --- a/docs/methodology/REGISTRY.md +++ b/docs/methodology/REGISTRY.md @@ -1500,7 +1500,7 @@ Convergence criterion: stop when objective decrease < min_decrease² (default mi 3. Renormalize original unit weights for resampled controls: `ω_boot = _sum_normalize(ω[boot_control_idx])` 4. Time weights λ remain **unchanged** from original estimation (fixed weights) 5. Compute SDID estimate with renormalized ω and original λ - 6. `SE = sd(bootstrap_estimates, ddof=1)` + 6. `SE = sqrt((r-1)/r) × sd(bootstrap_estimates, ddof=1)` where `r = n_successful`, matching R's `vcov.R` and the placebo formula above (equivalent to Arkhangelsky et al. (2021) Algorithm 2's `σ̂² = (1/r) Σ (τ_b − τ̄)²`) - Alternative: Jackknife variance (matching R's `synthdid::vcov(method="jackknife")`) Implements Algorithm 3 from Arkhangelsky et al. (2021): @@ -1525,7 +1525,7 @@ Convergence criterion: stop when objective decrease < min_decrease² (default mi - **Single control unit**: `compute_sdid_unit_weights` returns `[1.0]` immediately (short-circuit before Frank-Wolfe). - **Zero control units**: `compute_sdid_unit_weights` returns empty array `[]`. - **Single pre-period**: `compute_time_weights` returns `[1.0]` when `n_pre <= 1` (Frank-Wolfe on a 1-element simplex is trivial). -- **Bootstrap with 0 control or 0 treated in resample**: Skip iteration (`continue`). If ALL bootstrap iterations fail, raises `ValueError`. If only 1 succeeds, warns and returns SE=0.0. If >5% failure rate, warns about reliability. +- **Bootstrap with 0 control or 0 treated in resample (or non-finite `τ_b`)**: retry the draw. Matches R's `synthdid::bootstrap_sample` (`while (count < replications) { ...; if (!is.na(est)) count = count + 1 }`) and paper Algorithm 2 (B bootstrap replicates). A bounded attempt guard of `20 × n_bootstrap` prevents pathological-input hangs; normal fits finish far inside this budget because degenerate-draw probability scales as `(N_co / N)^N + (N_tr / N)^N`, which is small for any non-trivial split. If the budget is exhausted with 0 successful draws, raises `ValueError`. With 1 successful draw, warns and returns `SE = 0.0`. With fewer than `n_bootstrap` valid draws, warns that the attempt budget was exhausted and SE may be unreliable. - **Placebo with n_control <= n_treated**: Warns that not enough control units for placebo variance estimation, returns SE=0.0 and empty placebo effects array. The check is `n_control - n_treated < 1`. - **Note:** Power analysis functions (`simulate_power`, `simulate_mde`, `simulate_sample_size`) raise `ValueError` for placebo variance when `n_control <= n_treated`. The registry path checks pre-generation using `n_units * treatment_fraction`; the custom-DGP path checks post-generation on the realized data (first iteration only, since treatment allocation is deterministic per `n_units`/`treatment_fraction`). - **Negative weights attempted**: Frank-Wolfe operates on the simplex (non-negative, sum-to-1), so weights are always feasible by construction. The step size is clipped to [0, 1] and the move is toward a simplex vertex. @@ -1542,6 +1542,9 @@ Convergence criterion: stop when objective decrease < min_decrease² (default mi - **Jackknife with non-finite LOO estimate**: Returns NaN SE. Unlike bootstrap/placebo, jackknife is deterministic and cannot skip failed iterations; NaN propagates through `var()` (matches R behavior). - **Jackknife with survey weights**: Guards on effective positive support (omega * w_control > 0 and w_treated > 0) after composition, not raw FW counts. Returns NaN SE if fewer than 2 effective controls or 2 positive-weight treated units. Per-iteration zero-sum guards return NaN for individual LOO iterations when remaining composed weights sum to zero. - **Note:** Survey support: weights, strata, PSU, and FPC are all supported. Full-design surveys use Rao-Wu rescaled bootstrap (Phase 6); non-bootstrap variance methods (`variance_method="placebo"` or `"jackknife"`) require weights-only (strata/PSU/FPC require bootstrap). Both sides weighted per WLS regression interpretation: treated-side means are survey-weighted (Frank-Wolfe target and ATT formula); control-side synthetic weights are composed with survey weights post-optimization (ω_eff = ω * w_co, renormalized). Frank-Wolfe optimization itself is unweighted — survey importance enters after trajectory-matching. Covariate residualization uses WLS with survey weights. Placebo, jackknife, and bootstrap SE preserve survey weights on both sides. +- **Note:** P-value computation is variance-method dependent. Placebo (Algorithm 4) uses the empirical null formula `max(mean(|placebo_effects| ≥ |att|), 1/(r+1))` because permuting control indices generates draws from the null distribution (centered on 0). Bootstrap (Algorithm 2) and jackknife (Algorithm 3) use the analytical p-value from `safe_inference(att, se)` (normal-theory): bootstrap draws are centered on `τ̂` (sampling distribution of the estimator) and jackknife pseudo-values are not null draws, so the empirical null formula is invalid for both. This matches R's `synthdid::vcov()` convention, where variance is returned and inference is normal-theory from the SE. +- **Note (fixed-weight bootstrap calibration):** the `variance_method="bootstrap"` path is anti-conservative under H0 because it holds ω and λ fixed rather than re-estimating per draw (see the fixed-weight Note below). Monte Carlo on the default panel fixture (`_make_panel(att=0.0)`, n=500 seeds, B=200) returns median p-value ≈ 0.38 and empirical rejection rates of {α=0.01: 0.12, α=0.05: 0.18, α=0.10: 0.25, α=0.20: 0.34}. That's roughly 3.7× the nominal 5% rate — substantial over-rejection, consistent with the SE under-estimate from ignoring weight-estimation uncertainty. Users who need nominally-calibrated inference should prefer `variance_method="placebo"` (Algorithm 4 re-estimates both ω and λ per draw) or track the paper-faithful refit-bootstrap follow-up in TODO.md. The characterization regression test is `TestPValueSemantics::test_bootstrap_p_value_null_calibration` (slow). +- **Note (R-parity test scope):** `test_bootstrap_se_matches_r` pins R's bootstrap index matrix via a JSON fixture (`tests/data/sdid_bootstrap_indices_r.json`, regenerated by `benchmarks/R/generate_sdid_bootstrap_parity_fixture.R`) and feeds it through the Python bootstrap loop via a hidden `_bootstrap_indices` kwarg. That eliminates the cross-language RNG gap (Python's PCG64 ≠ R's Mersenne Twister) and isolates the deterministic math — per-draw SDID estimator, weight renormalization, SE aggregation — which matches at 1e-10 tolerance. The test does not verify that independently-seeded R and Python bootstraps produce equal SE at any finite B; they won't. - **Note:** Internal Y normalization. Before weight optimization, the estimator, and variance procedures, `fit()` centers Y by `mean(Y_pre_control)` and scales by `std(Y_pre_control)`; `Y_scale` falls back to `1.0` when std is non-finite or below `1e-12 * max(|mean|, 1)`. Auto-regularization and `noise_level` are computed on normalized Y; user-supplied `zeta_omega` / `zeta_lambda` are divided by `Y_scale` internally for Frank-Wolfe. τ, SE, CI, the placebo/bootstrap/jackknife effect vectors, `results_.noise_level`, and `results_.zeta_omega` / `results_.zeta_lambda` are all reported on the user's original outcome scale (user-supplied zetas are echoed back exactly to avoid float roundoff). Mathematically a no-op — τ is location-invariant and scale-equivariant, and FW weights are invariant under `(Y, ζ) → (Y/s, ζ/s)` — but prevents catastrophic cancellation in the SDID double-difference when outcomes span millions-to-billions (see synth-inference/synthdid#71 for the R-package version of this issue). Normalization constants are derived from controls' pre-period only so the reference is unaffected by treatment. `in_time_placebo()` and `sensitivity_to_zeta_omega()` reuse the exact same `Y_shift` / `Y_scale` captured on the fit snapshot: they normalize the re-sliced arrays before re-running Frank-Wolfe, pass `zeta / Y_scale` to the weight solvers, and rescale the returned `att` and `pre_fit_rmse` by `Y_scale` before reporting; unit-weight diagnostics (`max_unit_weight`, `effective_n`) are scale-invariant and reported directly. *Validation diagnostics (post-fit methods on `SyntheticDiDResults`):* @@ -1568,7 +1571,7 @@ Convergence criterion: stop when objective decrease < min_decrease² (default mi - [x] Sparsification: v[v <= max(v)/4] = 0; v = v/sum(v) - [x] Placebo SE formula: sqrt((r-1)/r) * sd(placebo_estimates) - [x] Placebo SE: re-estimates omega and lambda per replication (matching R's update.omega=TRUE, update.lambda=TRUE) -- [x] Bootstrap: fixed weights (original lambda unchanged, omega renormalized for resampled controls) +- [x] Bootstrap: fixed weights (original lambda unchanged, omega renormalized for resampled controls). This matches R's `synthdid::vcov(method="bootstrap")` but is a shortcut relative to Arkhangelsky et al. (2021) Algorithm 2 step 2, which specifies re-estimating ω̂_b and λ̂_b per draw; fixed-weight bootstrap underestimates SE relative to the paper's procedure by ignoring weight-estimation uncertainty. Use `variance_method="placebo"` (Algorithm 4) for paper-faithful inference. - [x] Jackknife SE: fixed weights, LOO all units, formula `sqrt((n-1)/n * sum((u-ubar)^2))` - [x] Jackknife: NaN SE for single treated or single nonzero-weight control - [x] Jackknife: analytical p-value (not empirical) diff --git a/docs/tutorials/18_geo_experiments.ipynb b/docs/tutorials/18_geo_experiments.ipynb index 6e3f8322..95e6a73a 100644 --- a/docs/tutorials/18_geo_experiments.ipynb +++ b/docs/tutorials/18_geo_experiments.ipynb @@ -25,7 +25,7 @@ "source": [ "Your team piloted a marketing campaign in 5 metros out of an 80-market panel last quarter. Sales data is available for all 80 markets, before and after launch. Did the campaign work, and by how much?\n", "\n", - "This is a textbook geo-experiment in the small-treated regime: you didn't roll out to half your markets \u2014 you piloted in a handful, with the intention of scaling later if it worked. The data you have is weekly conversions from all 80 markets, and leadership wants a single number with a confidence interval they can act on." + "This is a textbook geo-experiment in the small-treated regime: you didn't roll out to half your markets — you piloted in a handful, with the intention of scaling later if it worked. The data you have is weekly conversions from all 80 markets, and leadership wants a single number with a confidence interval they can act on." ] }, { @@ -33,7 +33,7 @@ "id": "t18-cell-004", "metadata": {}, "source": [ - "**Why this is hard.** Markets are heterogeneous in ways that don't show up at a glance. New York responds to different macro forces than Topeka \u2014 local economic conditions, demographic trends, competitor activity, and seasonal patterns all shape each market's underlying growth trajectory. With only 5 treated markets, you can't average those differences away the way you could with 50 or 100. And basic difference-in-differences assumes the treated and control markets are on parallel underlying trajectories, which rarely holds across cities you didn't randomly assign. Cluster-robust standard errors compound the problem: with 5 treated clusters, the small-cluster asymptotics that make cluster-SE valid simply don't kick in, and your reported standard error is unreliable." + "**Why this is hard.** Markets are heterogeneous in ways that don't show up at a glance. New York responds to different macro forces than Topeka — local economic conditions, demographic trends, competitor activity, and seasonal patterns all shape each market's underlying growth trajectory. With only 5 treated markets, you can't average those differences away the way you could with 50 or 100. And basic difference-in-differences assumes the treated and control markets are on parallel underlying trajectories, which rarely holds across cities you didn't randomly assign. Cluster-robust standard errors compound the problem: with 5 treated clusters, the small-cluster asymptotics that make cluster-SE valid simply don't kick in, and your reported standard error is unreliable." ] }, { @@ -50,9 +50,16 @@ }, { "cell_type": "code", + "execution_count": 1, "id": "t18-cell-006", - "execution_count": null, - "metadata": {}, + "metadata": { + "execution": { + "iopub.execute_input": "2026-04-22T01:35:10.031700Z", + "iopub.status.busy": "2026-04-22T01:35:10.031610Z", + "iopub.status.idle": "2026-04-22T01:35:11.884393Z", + "shell.execute_reply": "2026-04-22T01:35:11.884085Z" + } + }, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", @@ -87,18 +94,35 @@ "- **5 treated markets** (the pilot cohort; campaign launched in week 7)\n", "- **75 control markets** (the donor pool SDiD reweights to construct the synthetic control)\n", "- Outcome: weekly conversions per market (range roughly 600-2300)\n", - "- Pre-period: weeks 1-6 \u00b7 Post-period: weeks 7-12\n", + "- Pre-period: weeks 1-6 · Post-period: weeks 7-12\n", "- True treatment effect: +300 conversions per treated market per week (about 20% lift on a baseline of ~1500)\n", "\n", - "The data is generated with `generate_factor_data`, which produces a panel where markets have **interactive fixed effects** \u2014 different markets have different latent loadings on time-varying factors. In plain English: markets respond to different macro forces (local economic conditions, demographics, competitor activity), so their underlying growth trajectories aren't identical even in the absence of any campaign. This is the regime SDiD is designed for. Because the data is synthetic, the true treatment effect is known and we can verify SDiD recovers it." + "The data is generated with `generate_factor_data`, which produces a panel where markets have **interactive fixed effects** — different markets have different latent loadings on time-varying factors. In plain English: markets respond to different macro forces (local economic conditions, demographics, competitor activity), so their underlying growth trajectories aren't identical even in the absence of any campaign. This is the regime SDiD is designed for. Because the data is synthetic, the true treatment effect is known and we can verify SDiD recovers it." ] }, { "cell_type": "code", + "execution_count": 2, "id": "t18-cell-009", - "execution_count": null, - "metadata": {}, - "outputs": [], + "metadata": { + "execution": { + "iopub.execute_input": "2026-04-22T01:35:11.885866Z", + "iopub.status.busy": "2026-04-22T01:35:11.885703Z", + "iopub.status.idle": "2026-04-22T01:35:11.896385Z", + "shell.execute_reply": "2026-04-22T01:35:11.896150Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Shape: (960, 4)\n", + "Markets: 80 (5 treated, 75 control)\n", + "Weeks: 1-12 (pre: 1-6, post: 7-12)\n" + ] + } + ], "source": [ "raw = generate_factor_data(\n", " n_units=80,\n", @@ -133,20 +157,217 @@ }, { "cell_type": "code", + "execution_count": 3, "id": "t18-cell-010", - "execution_count": null, - "metadata": {}, - "outputs": [], + "metadata": { + "execution": { + "iopub.execute_input": "2026-04-22T01:35:11.897470Z", + "iopub.status.busy": "2026-04-22T01:35:11.897377Z", + "iopub.status.idle": "2026-04-22T01:35:11.902271Z", + "shell.execute_reply": "2026-04-22T01:35:11.902055Z" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
market_idweektreatedconversions
0market_000111628
1market_000211518
2market_000311613
3market_000411577
4market_000511603
\n", + "
" + ], + "text/plain": [ + " market_id week treated conversions\n", + "0 market_000 1 1 1628\n", + "1 market_000 2 1 1518\n", + "2 market_000 3 1 1613\n", + "3 market_000 4 1 1577\n", + "4 market_000 5 1 1603" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "df.head()" ] }, { "cell_type": "code", + "execution_count": 4, "id": "t18-cell-011", - "execution_count": null, - "metadata": {}, - "outputs": [], + "metadata": { + "execution": { + "iopub.execute_input": "2026-04-22T01:35:11.903302Z", + "iopub.status.busy": "2026-04-22T01:35:11.903226Z", + "iopub.status.idle": "2026-04-22T01:35:11.911482Z", + "shell.execute_reply": "2026-04-22T01:35:11.911257Z" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
week123456789101112
treated
01507.01492.01528.01509.01506.01494.01494.01506.01508.01503.01512.01495.0
11518.01592.01305.01508.01490.01576.01845.01830.01815.01898.01782.01923.0
\n", + "
" + ], + "text/plain": [ + "week 1 2 3 4 5 6 7 8 \\\n", + "treated \n", + "0 1507.0 1492.0 1528.0 1509.0 1506.0 1494.0 1494.0 1506.0 \n", + "1 1518.0 1592.0 1305.0 1508.0 1490.0 1576.0 1845.0 1830.0 \n", + "\n", + "week 9 10 11 12 \n", + "treated \n", + "0 1508.0 1503.0 1512.0 1495.0 \n", + "1 1815.0 1898.0 1782.0 1923.0 " + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Mean conversions by treatment group and week (.round(0) for cleaner display)\n", "df.groupby([\"treated\", \"week\"])[\"conversions\"].mean().round(0).unstack()" @@ -154,10 +375,28 @@ }, { "cell_type": "code", + "execution_count": 5, "id": "t18-cell-012", - "execution_count": null, - "metadata": {}, - "outputs": [], + "metadata": { + "execution": { + "iopub.execute_input": "2026-04-22T01:35:11.912471Z", + "iopub.status.busy": "2026-04-22T01:35:11.912393Z", + "iopub.status.idle": "2026-04-22T01:35:12.026053Z", + "shell.execute_reply": "2026-04-22T01:35:12.025785Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAsAAAAHWCAYAAAB5SD/0AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8ekN5oAAAACXBIWXMAAA9hAAAPYQGoP6dpAACvCElEQVR4nO3dB3hTZRcH8NNdSksHdAFl770RBARZMh0ogoAoiAv3Hp8DF+6FAxEUFBQHggKyQfbee28oLbS0paW73/N/05sm6SApSbP+v+e59GaQ3ORmnJx73vN65OXl5QkRERERkZvwtPcGEBERERGVJQbARERERORWGAATERERkVthAExEREREboUBMBERERG5FQbARERERORWGAATERERkVthAExEREREboUBMBERERG5FQbAROQU/vvvP/Hw8FB/qXRq1Kgh9913n703w+U402tT29Y///zT3ptCZFcMgIkcxNSpU9UXk7b4+/tLvXr15LHHHpMLFy6UyTa89957MmfOHHFXjvD4//33X3nzzTftug2uaN26dep5vXz5sr03xaV888036rOLyNkwACZyMG+99Zb8/PPP8tVXX0nHjh3l22+/lQ4dOkhaWppbBID25CgB8Lhx4+y6Da4aAON5ZQBsXQyAyVl523sDiMhYnz59pE2bNmr9gQcekIoVK8qnn34qf//9twwdOrTI/5Oamirly5cv0+20x306End//K4sNzdXMjMz1VEYV5Gdna0eFxHpMANM5OBuvvlm9ff48ePqL2o4AwMD5ejRo9K3b18JCgqSYcOGqcvwBff5559L48aN1Zd3ZGSkPPTQQ5KYmHjN+0HZBYK6adOm6cswtHpRHDrG6X379sk999wjoaGh0qlTJ/3/nT59urRu3VrKlSsnYWFhMmTIEDl9+rTR7Xft2lWaNGmibqNbt24SEBAgVapUkQ8//LDQtpw5c0Zuu+02FWBGRETI008/LRkZGYWud/jwYRk0aJBERUWpx1u1alV130lJSfrrXLx4UQ4cOHDNDLqtH//q1avlrrvukmrVqomfn5/ExMSox3X16lX9dXB/X3/9tX57tEVj7v7Ny8uTd955Rz0feJ7xfO/du1euJSsrS23//fffX+iy5ORkdZ/PPfec/rwJEyaobcF94DnBD7dffvnlmveTnp6unlOU+OA2o6Oj5Y477lCvaQ32xbPP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+EKtP/nkk+Lr62vV21+457zKMJ1PStefFx3sL28MaOSWX7buICU9Sx78aausP3ZJnfbx8pDP7m4h/ZtVFmdROzxQPr6ruSqBgPf+3S9NqgSX2SQdZeG/g3Eye/tZtV7B31veurWxuCNmgG38BVPckp2dbfZ1TacqLe56lnr00UfVL/JNmzbJoEGDpF69etK4cWN55plnZMOGDfrrffrppyo4Ll++vMoQ4/9duXKlUAZ03rx5Ur9+fQkICFBT3aalpcm0adOkZs2aEhERIU888YRRgFejRg15++23ZejQoeq2q1SpIl9//bXRNpp734beeecddX9BQUHywAMPyEsvvWSUUUXd42233SYff/yxREdHS8WKFVXAX9KUsDt37pRu3bqp26xQoYK0bt1atmzZIv/995/cf//9kpSUpJ5LLMjgws8//yxt2rRR/ycqKkruueceiYvT1VsB/i+uv2DBAnV7yMBPnz5dxo0bp+5Puz08RiJbwHsUi7Uh+H1k+jaj4Feb/hbn43JyLRevZMjQ7zfog98AXy/54b62ThX8am5pEiWPdNXNgpadm6cy2nHJxq9lZ4X6Zgx807zar6FdW9HZEzPANjR+/PhiL6tbt64KiDQIxooLwDBK23CwCrI2RX1pvfHGG2ZvW0JCgixcuFDeffddFVyaMgwqPT095csvv1SB7LFjx1QQ+sILL8g333yjvw62B9eZOXOmpKSkyB133CG33367up358+fL4cOHVblCp06d1F8NMs+vvPKKCvqQeUYmCoF4z549zb5vQzNmzFCPCZcju43t+eSTT9T/N7RixQoV/OLvkSNH1DYhSB4zZkyRtzts2DBp2bKlfPvtt+Ll5SU7duxQg4g6duwon3/+ubz++uty8KCuf2RgoK6GDPsTAT5+FCDwxQ8L7Md///3X6LYRoGP/owzF399fnn32WbVvli5dqi4PDg42Y48SOQaUOSDzW1SxA87DQXBc3rNRlL71FDm3M4lpMmLKJjl+MVWdDgnwkR/vaystq+kmmXBGz/asJ7vOXFa9geNTMuTRGdvk1wdvcPrZ0T5edFA/C1/H2hVlcJsYcVcMgN0Ugj4ccm/QoME1r/vUU08ZZW2RYX344YeNglAEewgOa9fW/WpGBhgZ0AsXLqgAG0EtMqgIOA0DYASpCAAB11m7dq189tln+gDYnPs2NGHCBBk9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8ff35xztDoT7xb33TWZmpqSnp+s/1zAzHJWM7xnHxX3jmHLtsF+0OK2keSbAI+9a1yDlzJkzEhMTY+/NICIiIqJrOH36tFStWrXYyxkAW/Ar5ty5cxIUFCQeHh723hyngl9j+PGAF2OFChXsvTmUj/vFcXHfOCbuF8fFfeOYku2wXxDWIutcuXLlErPOLIEwE57Ekn5J0LXhxc8PJsfD/eK4uG8cE/eL4+K+cUwVyni/BAcHX/M6LJQhIiIiIrfCAJiIiIiI3AoDYLI5Pz8/eeONN9RfchzcL46L+8Yxcb84Lu4bx+TnwPuFg+CIiIiIyK0wA0xEREREboUBMBERERG5FQbARERERORWGAATERERkVthAEw2M378eGnbtq2aPS8iIkJuu+02OXjwoL03i0y8//77anbDp556yt6b4vbOnj0rw4cPl4oVK0q5cuWkadOmsmXLFntvltvLycmR1157TWrWrKn2S+3ateXtt99WM05R2Vq1apUMGDBAzfKFz605c+YYXY598vrrr0t0dLTaVz169JDDhw/bbXvdxaoS9ktWVpa8+OKL6vOsfPny6jr33nuvml3XnhgAk82sXLlSxo4dKxs2bJAlS5aoN0GvXr0kNTXV3ptG+TZv3izfffedNGvWzN6b4vYSExPlxhtvFB8fH1mwYIHs27dPPvnkEwkNDbX3prm9Dz74QL799lv56quvZP/+/er0hx9+KBMmTLD3prkdfH80b95cvv766yIvx3758ssvZeLEibJx40YVcPXu3VvS09PLfFvdSWoJ+yUtLU22bdumfkTi719//aWSYQMHDhR7Yhs0KjPx8fEqE4zAuEuXLvbeHLd35coVadWqlXzzzTfyzjvvSIsWLeTzzz+392a5rZdeeknWrl0rq1evtvemkIn+/ftLZGSkTJkyRX/eoEGDVIZx+vTpdt02d4ZM4+zZs9XRRUA4g+zis88+K88995w6LykpSe27qVOnypAhQ+y8xe65X4pLvrRr105Onjwp1apVE3tgBpjKDD6IICwszN6bQiIqO9+vXz91iJDs759//pE2bdrIXXfdpX4otmzZUr7//nt7bxaJSMeOHWXZsmVy6NAhdXrnzp2yZs0a6dOnj703jQwcP35cYmNjjT7TgoODpX379rJ+/Xq7bhsVjgcQKIeEhIi9eNvtnsmt5ObmqhpTHOJt0qSJvTfH7c2cOVMdisKvcHIMx44dU4fZn3nmGXnllVfUvnniiSfE19dXRo4cae/NE3fPzicnJ0uDBg3Ey8tL1QS/++67MmzYMHtvGhlA8AvI+BrCae0ysr/09HRVEzx06FCpUKGC3baDATCVWbZxz549KmtC9nX69Gl58sknVV22v7+/vTeHDH4kIgP83nvvqdPIAOM9g1pGBsD29fvvv8uMGTPkl19+kcaNG8uOHTvUD3ocbue+ITIfxgINHjxYlavgB789sQSCbO6xxx6TefPmyYoVK6Rq1ar23hy3t3XrVomLi1P1v97e3mpBXTYGjmAd2S0qexi13qhRI6PzGjZsKKdOnbLbNpHO888/r7LAqCHFSPYRI0bI008/rTrdkOOIiopSfy9cuGB0Pk5rl5H9g9+TJ0+qBIw9s7/AAJhsBr/wEPyiGH758uWqhRDZX/fu3WX37t0qi6UtyDzicC7WcYiXyh7Kg0zbBKLmtHr16nbbJioYxe7pafx1ifcJsvbkOPAdg0AX9doalK6gG0SHDh3sum3uLis/+EVLuqVLl6pWj/bGEgiyadkDDhn+/fffqhewVoOFQQkYPU32gX1hWoeNVkH4QGJ9tv0go4jBViiBwBfFpk2bZNKkSWoh+0J/U9T8YrQ6SiC2b98un376qYwaNcrem+aW3WuOHDliNPANP9wxuBr7B6Up6GpTt25dFRCj9RZKVUrqSEC23S84unXnnXeqcSc4GoyjjFo8gMsxzsEu0AaNyBbw8ipq+fHHH+29aWTipptuynvyySftvRlub+7cuXlNmjTJ8/Pzy2vQoEHepEmT7L1JlJeXl5ycrN4f1apVy/P398+rVatW3quvvpqXkZFh701zOytWrCjye2XkyJHq8tzc3LzXXnstLzIyUr2Punfvnnfw4EF7b7Zb75fjx48XGw/g/9kL+wATERERkVthDTARERERuRUGwERERETkVhgAExEREZFbYQBMRERERG6FATARERERuRUGwERERETkVhgAExEREZFbYQBMRERERG6FATAREZmla9euaqpZIiJnxwCYiMjJTJw4UYKCgiQ7O1t/3pUrV8THx0cFqYb+++8/8fDwkKNHj9phS4mIHBMDYCIiJ9OtWzcV8G7ZskV/3urVqyUqKko2btwo6enp+vNXrFgh1apVk9q1a9tpa4mIHA8DYCIiJ1O/fn2Jjo5W2V0N1m+99VapWbOmbNiwweh8BMy5ubkyfvx4dXm5cuWkefPm8ueffxrd7p49e6RPnz4SGBgokZGRMmLECLl48WKx2zF//nwJDg6WGTNm2OiREhHZBgNgIiInhKAW2V0N1lH+cNNNN+nPv3r1qsoI47oIfn/66SdVPrF37155+umnZfjw4bJy5Up13cuXL8vNN98sLVu2VJnlhQsXyoULF2Tw4MFF3v8vv/wiQ4cOVcHvsGHDyuhRExFZh7eVboeIiMoQgloMSEMdMALd7du3q+A3KytLBbmwfv16ycjIUIFxo0aNZOnSpdKhQwd1Wa1atWTNmjXy3Xffqf/31VdfqeD3vffe09/HDz/8IDExMXLo0CGpV6+e/vyvv/5aXn31VZk7d676v0REzoYBMBGRE0JQm5qaKps3b5bExEQVoIaHh6uA9P7771d1wCh/QKCLeuG0tDTp2bOn0W1kZmaqoBd27typMscofzCFAXRaAIyyibi4OFm7dq20bdu2jB4tEZF1MQAmInJCderUkapVq6qgFQGwlomtXLmyytquW7dOXYayBgTAWs1ulSpVjG7Hz89P/cV1BgwYIB988EGh+0K9sQYB87Zt21R2uE2bNqrDBBGRs2EATETkxGUQyPIiAH7++ef153fp0kUWLFggmzZtkkceeUSVPyDQPXXqVLElC61atZJZs2ZJjRo1xNu7+K8GdJP45JNPVAbay8tLlU4QETkbDoIjInLiABh1vDt27DAKbLGO2l6UOOA66Bn83HPPqYFv06ZNUyUNyOJOmDBBnYaxY8dKQkKCGtiGsgpcZ9GiRaqcIicnx+h+UQ6B7DICZk6MQUTOiBlgIiInheAWA+AaNGig2pYZBsApKSn6dmnw9ttvqxphdIM4duyYhISEqKzvK6+8oi+dQF3viy++KL169VKD56pXry633HKLeHoWzpXgtpcvX67PBCMrTETkLDzy8vLy7L0RRERERERlhSUQRERERORWGAATERERkVthAExEREREboUBMBERERG5FQbARERERORWGAATERERkVthAExEREREboUBMBERERG5FQbARERERORWGAATERERkVthAExERERE4k7+D4r432b0cA46AAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "weeks = sorted(set(df[\"week\"]))\n", "treated_means = [df[(df.treated == 1) & (df.week == w)][\"conversions\"].mean() for w in weeks]\n", @@ -184,7 +423,7 @@ "id": "t18-cell-013", "metadata": {}, "source": [ - "The two lines hover around similar levels in the pre-period (weeks 1-6) but they're not on identical trajectories \u2014 small underlying differences are visible if you look closely. After week 7 the treated mean jumps above control. The challenge is that with only 5 treated markets, even small pre-period differences are hard to interpret by eye, and the bigger problem is that some of the divergence comes from underlying market heterogeneity that won't show up in the average pre-trend at all. SDiD addresses both: it constructs a counterfactual built specifically for *these* 5 treated markets (rather than averaging all 75 controls equally), and it uses time weights to make the pre-period comparison robust to baseline differences." + "The two lines hover around similar levels in the pre-period (weeks 1-6) but they're not on identical trajectories — small underlying differences are visible if you look closely. After week 7 the treated mean jumps above control. The challenge is that with only 5 treated markets, even small pre-period differences are hard to interpret by eye, and the bigger problem is that some of the divergence comes from underlying market heterogeneity that won't show up in the average pre-trend at all. SDiD addresses both: it constructs a counterfactual built specifically for *these* 5 treated markets (rather than averaging all 75 controls equally), and it uses time weights to make the pre-period comparison robust to baseline differences." ] }, { @@ -212,10 +451,28 @@ }, { "cell_type": "code", + "execution_count": 6, "id": "t18-cell-016", - "execution_count": null, - "metadata": {}, - "outputs": [], + "metadata": { + "execution": { + "iopub.execute_input": "2026-04-22T01:35:12.027139Z", + "iopub.status.busy": "2026-04-22T01:35:12.027054Z", + "iopub.status.idle": "2026-04-22T01:35:51.265252Z", + "shell.execute_reply": "2026-04-22T01:35:51.264927Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/igerber/diff-diff-sdid-bootstrap/diff_diff/utils.py:1455: UserWarning: Frank-Wolfe SC weight solver did not converge in 100 iterations (tol=1.543597599298811e-05). Results may be inaccurate.\n", + " return _sc_weight_fw_numpy(Y, zeta, intercept, init_weights, min_decrease, max_iter)\n", + "/Users/igerber/diff-diff-sdid-bootstrap/diff_diff/utils.py:1455: UserWarning: Frank-Wolfe SC weight solver did not converge in 10000 iterations (tol=1.543597599298811e-05). Results may be inaccurate.\n", + " return _sc_weight_fw_numpy(Y, zeta, intercept, init_weights, min_decrease, max_iter)\n" + ] + } + ], "source": [ "# Note: variance_method, n_bootstrap, and seed are CONSTRUCTOR kwargs.\n", "# They are not arguments to .fit().\n", @@ -232,10 +489,60 @@ }, { "cell_type": "code", + "execution_count": 7, "id": "t18-cell-017", - "execution_count": null, - "metadata": {}, - "outputs": [], + "metadata": { + "execution": { + "iopub.execute_input": "2026-04-22T01:35:51.266633Z", + "iopub.status.busy": "2026-04-22T01:35:51.266542Z", + "iopub.status.idle": "2026-04-22T01:35:51.268408Z", + "shell.execute_reply": "2026-04-22T01:35:51.268164Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "===========================================================================\n", + " Synthetic Difference-in-Differences Estimation Results \n", + "===========================================================================\n", + "\n", + "Observations: 960\n", + "Treated: 5\n", + "Control: 75\n", + "Pre-treatment periods: 6\n", + "Post-treatment periods: 6\n", + "Zeta (unit weights): 724.4726\n", + "Zeta (time weights): 0.000310\n", + "Noise level: 309.5577\n", + "Pre-treatment fit (RMSE): 33.7142\n", + "Variance method: placebo\n", + "\n", + "---------------------------------------------------------------------------\n", + "Parameter Estimate Std. Err. t-stat P>|t| \n", + "---------------------------------------------------------------------------\n", + "ATT 311.8536 7.3125 42.647 0.0099 **\n", + "---------------------------------------------------------------------------\n", + "\n", + "95% Confidence Interval: [297.5213, 326.1858]\n", + "CV (SE/|ATT|): 0.0234\n", + "\n", + "---------------------------------------------------------------------------\n", + " Top Unit Weights (Synthetic Control) \n", + "---------------------------------------------------------------------------\n", + " Unit market_006: 0.0313\n", + " Unit market_035: 0.0306\n", + " Unit market_033: 0.0286\n", + " Unit market_022: 0.0261\n", + " Unit market_044: 0.0256\n", + " (73 units with weight > 0.001)\n", + "\n", + "Signif. codes: '***' 0.001, '**' 0.01, '*' 0.05, '.' 0.1\n", + "===========================================================================\n" + ] + } + ], "source": [ "print(results.summary())" ] @@ -247,7 +554,7 @@ "source": [ "**Plain-English interpretation.** SDiD estimates that the campaign lifted weekly conversions by **about 312 per treated market** (95% CI: 298 to 326), which is roughly a **21% lift** on a baseline of ~1500 weekly conversions per market. The true treatment effect in the synthetic DGP was 300, so the point estimate is within 4% of the truth and the 95% CI comfortably covers it.\n", "\n", - "The 95% CI is constructed from `results.conf_int` (note: the field name is `conf_int`, not `ci`), and the p-value crosses below the 0.01 significance threshold. With only 5 treated markets, that the CI covers the true effect this cleanly is exactly what SDiD's localization is designed to deliver \u2014 and per Arkhangelsky et al. (2021), it's the regime where SDiD dominates basic DiD on the same data." + "The 95% CI is constructed from `results.conf_int` (note: the field name is `conf_int`, not `ci`), and the p-value crosses below the 0.01 significance threshold. With only 5 treated markets, that the CI covers the true effect this cleanly is exactly what SDiD's localization is designed to deliver — and per Arkhangelsky et al. (2021), it's the regime where SDiD dominates basic DiD on the same data." ] }, { @@ -270,10 +577,39 @@ }, { "cell_type": "code", + "execution_count": 8, "id": "t18-cell-021", - "execution_count": null, - "metadata": {}, - "outputs": [], + "metadata": { + "execution": { + "iopub.execute_input": "2026-04-22T01:35:51.269469Z", + "iopub.status.busy": "2026-04-22T01:35:51.269395Z", + "iopub.status.idle": "2026-04-22T01:35:51.273224Z", + "shell.execute_reply": "2026-04-22T01:35:51.273017Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Top 10 unit weights:\n", + " unit weight\n", + "market_006 0.031326\n", + "market_035 0.030555\n", + "market_033 0.028563\n", + "market_022 0.026090\n", + "market_044 0.025561\n", + "market_051 0.025294\n", + "market_079 0.024434\n", + "market_077 0.024176\n", + "market_011 0.020970\n", + "market_019 0.020149\n", + "\n", + "Total weight: 1.0000 (should be ~1.0)\n", + "Markets with non-trivial weight (> 0.01): 48\n" + ] + } + ], "source": [ "unit_weights = results.get_unit_weights_df()\n", "print(\"Top 10 unit weights:\")\n", @@ -284,10 +620,38 @@ }, { "cell_type": "code", + "execution_count": 9, "id": "t18-cell-022", - "execution_count": null, - "metadata": {}, - "outputs": [], + "metadata": { + "execution": { + "iopub.execute_input": "2026-04-22T01:35:51.274212Z", + "iopub.status.busy": "2026-04-22T01:35:51.274139Z", + "iopub.status.idle": "2026-04-22T01:35:51.333261Z", + "shell.execute_reply": "2026-04-22T01:35:51.332993Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA9kAAAJOCAYAAACjoMSlAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8ekN5oAAAACXBIWXMAAA9hAAAPYQGoP6dpAACJkElEQVR4nO3dCXgUVfb//9OBsAdCIjvIKoKIgDoouIsDLoPbjCAqKKMIiji4i4qKiiBuMK4jioqMG+P2HRZREBUFWVREdERBAUUWZQ2Gvfv/fK7/6l+n6YQkVuhU+v16niK9VFdX9e1u+txz7q1QJBKJGAAAAAAA+MPS/vgmAAAAAACAEGQDAAAAAOATgmwAAAAAAHxCkA0AAAAAgE8IsgEAAAAA8AlBNgAAAAAAPiHIBgAAAADAJwTZAAAAAAD4hCAbAAAAAACfEGQDAIpl+fLlFgqF7IEHHtgvz3fiiSe6BQW78847XbskU5MmTeySSy6x0u6PvKf0uEMPPdT3fQIABB9BNgAExJdffml/+9vfrHHjxlapUiVr0KCB/fnPf7ZHHnmkRJ93ypQpLnDbH77++mv3XArg94c33njDTjvtNDvggAOsQoUKVr9+fevRo4e99957Jfq8L774oo0ePdqSqaAg8ddff3WBul/tXpR2HTVqlHvuzz//PM/tkUjEatas6e774Ycf8ty3fft2q1ixol1wwQVW2vz888/u2BcuXJjsXQEA7CcE2QAQALNnz7YjjzzSvvjiC+vXr589+uijdtlll1laWpqNGTOmxIPsYcOG2f6gYEzPlSgYe+edd9ziBwVsffv2tXPPPdfWrl1r1157rT355JM2cOBA+/77761Lly7uNS/LQXZJWrJkiY0dO7ZQ7Rrv2GOPdX8/+uijPLd/9dVXtmnTJitfvrx9/PHHee6bP3++7dy5M/rYwvLzPVVQkK1jJ8gGgNRRPtk7AADYt+HDh1uNGjVcMJGZmZnnvnXr1lkqUKbZLw8++KA999xzNnjwYHvooYfylFffeuut9sILL7hgrjRQllbHrg6VoFBWubjUmaRKDQXZgwYNit6uwDo7O9vdr/suuuii6H1eQF7UINvP9xQAAJ7g/I8NACls2bJl1qZNm70CbKldu3b08gknnGDt2rVLuI2DDz7YunXrttd46qeeesqaN2/uAqM//elPLpD3aFztY4895i5rfW+JV9A2PN98840rd8/KynJBlIKl//u//4ver6D3vPPOc5dPOumk6HO9//77+Y6fVQCqUtyWLVu6bdarV89lp/V65Wfbtm02YsQIa9WqlTv+RMfTu3dv69ixY/S6stvaN+17lSpV7Oijj7bJkyfneYz2U9t69dVXXadIw4YN3T4pK7506dLoejoGPXbFihXRY9QY5thtvPzyy3bbbbe5IQF6vi1btrj7J06caEcccYRVrlzZlbgr0Fy1apXtz7HeOha9L/ReVMePKgJyc3PzHZO9r3ZNFPjqPRSfrdb1Tp062THHHJPwPu2PV/4eDoddpYA+M2qDOnXqWP/+/W3jxo15HpfoPaV2OfPMM61q1arus3XNNdfYtGnT8t1nZel1XGontZfK3T1aX8ciep28Y9drIt9995399a9/tbp167r91Hvm/PPPt82bN++zPQAApVfp6KYHABRI47DnzJljixcvLnCyJQWHKiePX09B77fffusCt/iy5ZycHBeA6Me/AgQFqQoq09PT3e0qd3333XdddjeRfW3DK/VVcKQg5Oabb3YBjILRs88+21577TU755xz7Pjjj7err77a/vnPf9ott9xirVu3do/1/sbbs2eP/eUvf7EZM2a4wOQf//iH2w/tq45fQX8iynpu2LDBZbHLlSu3z9de5eSdO3d2gaT2T9nU559/3gVi//nPf9y+xxo5cqTLOl9//fUuWNLrceGFF9rcuXOjmXLd/tNPP9nDDz/sbqtWrVqebdx9990u2NQ2duzY4S4rMFOgpqBNnQTaLw0VUICp8cuJOmBKgsasN23a1O3DZ599Zk8//bQLRu+7776E6xe1Xb2M9KxZs1xnkNcBoePUEAl1ftxxxx2udFzHrNJ/lfYrAPey/Xoveq+XnltjuDXEQq+TtuO9L+P99ttvdvLJJ9vq1avd+0nBr97fM2fOTLi+gvZTTz3Vvd/1uuj9cNNNN1nbtm3dWH8d41133WW33367XX755Xbccce5x+n9pPJ2dXqpfZWx13Opw2TSpEnu2NSBAQAIqAgAoNR75513IuXKlXNLp06dIjfeeGNk2rRpkZ07d+ZZb9OmTZFKlSpFbrrppjy3X3311ZGqVatGtm7d6q7/8MMPEf0XkJ2dHdmwYUN0vbfeesvd/t///jd628CBA91t8YqyjS5dukTatm0b2b59e/S2cDgc6dy5c+Sggw6K3jZx4kT32JkzZ+71fCeccIJbPOPGjXPrPvTQQ3utq23nZ8yYMe5xb7zxRqQwBg8e7NafNWtW9LacnJxI06ZNI02aNIns2bPH3aZ91nqtW7eO7NixY6/n+/LLL6O3nXHGGZHGjRvv9VzeNpo1axbJzc2N3q52rl27duTQQw+NbNu2LXr7pEmT3Pq333579LY77rgjYXvF02vZpk2bhPf98ssvbhvaVvx2//73v+dZ95xzznHvgVg6tosvvrhQ7ZrI5MmT3fovvPCCu7569Wp3/YMPPnCvvT4HWkcWL17s7hs+fLi7rnbS9X//+995tvn222/vdXv8e+rBBx9067z55pvR2/R6t2rVaq/91+N02/jx46O3qd3r1q0b+etf/xq9bf78+W69Z599Ns/+fP755+52vTYAgLKFcnEACADNIq5MtrKnmvxM2VFlwZQZji25VvbrrLPOspdeesll+LyM7yuvvOKyxsogx+rZs6ebsdnjZdqUhS6sfW1DWWPN1q1MnzLNmrlay/r1690xqGS2OCXPyoCrZDp23K6noFNYeaXXGRkZhZ74TdnT2PG+yjwrM6lMq8qFYyl7GjvWtziv6cUXX+xKwj0LFixwY++vvPJKV1bsOeOMM1zZe3zpekkaMGBAnus6PrWl97r6QZleZaW9sdZe9llZfL32hx12WLRk3PvrtY9K6vU50GfGe69pUZm9HptfVlrefvtt95nS58yj11vVIYloe7Fjw9Xueq8Upq29TLVK0ePL7QEAwUaQDQABoQDj9ddfdyWq8+bNsyFDhrigVeOcYwO9Pn362MqVK125rUyfPt2VFquUPN6BBx6Y57oXLMePXS3IvrahMbwK+IcOHWq1atXKs6jst7iTt2nctcaZF3WCsurVq7u/eu0KQ2N09TzxvHJn3e/3a6py7Ph9kET7oSA7fh/8kqizwo/j2xeVgWs8dWwg3aFDh2jHg4Lw2Pu84FbUaaNyfJWwx7/ftm7dWuB7Ta+jhhnEH3eLFi0Srq8x1PHr6vUozGuhNtas9iq3V2eROpw0/wHjsQEg+BiTDQAB400MpUUTfilzquydF7Dqx7omepowYYIbD6u/Gu95yimn7LWt/MYke1nwwtjXNjQJlWh8sTfxWrz8gpiSoKDUO++4svt+8+M1jc1ilxRlaDUJXCJeZjU2a+7n8RWGMtM6rZrGJyuQVmDt0eVx48bZrl27XLZbWWpvX/V+U4D973//O+F2FWz75Y++FprlXhPEvfXWW+5UYho/rrHun3zyiQvgAQDBRCYbAAJMM3SLJmqK/eF/wQUXuEmYlFF78803rVevXoWa5CuRgkqvC6NZs2bur8p9FegnWrzS7aI8lzKOOh+zAq2iBm/KNqqkXqX0hZl0Ts+TaLZ07/6Sfk2950i0H7qtOPugx/z4448JA23veYqzXb/eQ2onBauqxNCEZZo4LzbI1n6rTF6l2bGl/HpfqHxd6yd6r+U3+753vKqQiA+SY2eH9/vYNUmaJiT88MMPXfWJhk6ocwEAEFwE2QAQABpHmig7pvHCicqIVRquAFuzLKtENnbcaFF547iVUSwOZRV1mqR//etfeToDPL/88kuxnkunPtJYW80aXZRMok61pBmg//e//7m/idZV9l8l+XL66ae7yxoTHzsLtU5bppmvDznkECsqHWdRyoLVmaLXUcGXZqP2TJ061R2HxmYXlY5LHRRql1jKBD/xxBOuYkKnH/NDcd5DXuCs85hrP2Mz2Xrddbo273RZsUG2xv6r80QztMfbvXt3gfugSgsFubHzHOg0cWPHjjW/j11j2LU/8QG3xqLHtjEAIHgoFweAANDkXirh1emiVO6s0//otEWa0EwBh0rGY2n8qk7hpTJyjR0+/PDDi/3cKsUVlbIqCFFGXKfMKgqNNVUgpCBCk0gpu61x4gpcdSorTeYm7du3d9vX6aAUhOq82zqlUuy5wGPHno8fP96Na1UQrAm4FPwq86kJwjQBXH5uuOEGd1oxleuqA0Pj2lVSv2bNGpf51/b0+opOOaast07JpNdA58rWKbx0WihNvuadNqqor6naTvvuTebVvXv3fNdXFYBeE7WzzoWuygTvFF5qf53Luaj0fF27dnWP1fF6pylTgKny7Hvuuce30uqitGvs2O9GjRq594iOsX79+nnu1/7q9VemODbLrddHnUsqu164cKE7Rr1+Gqutz4NeM7V3InqcOm30+uoUXgrkVXbulaIXJyOvzLrGmKuDRBUbCrqPOuoo956/6qqr3DnENexDAbdOk6fXSR1IAIAAS/b05gCAfZs6dao7dZJOJVStWrVIhQoVIi1atIgMGjQosnbt2oSPGTVqlDtF0L333pvv6bfuv//+ve6LP3XT7t273fPUqlUrEgqFoqeHKso2ZNmyZZE+ffq4Uxylp6dHGjRoEPnLX/4S+c9//pNnvbFjx7pTWOk0TbGnTYo/3ZLoNFe33nqrO52Wtqlt/+1vf3PPVRh67q5du0aysrIi5cuXj9SrVy/Ss2fPyPvvv7/Xvmu7mZmZ7hRpHTt2dKfPSnT6rfhTMnmvU+wpnHQqtQsuuMBtT/d5p/PKbxueV155JdKhQ4dIxYoV3T5feOGFkZ9++inPOoU9hZfolGp33nmne19pmzrN29FHHx2ZMGHCXut629XpvWLpuHS7jjO/U3gV1K4F6dWrl1tXr1U8nbrNO2VaIk899VTkiCOOiFSuXDmSkZHhTiGnU9/9/PPP0XUSvae+//57d4o1PU7v+euuuy7y2muvuef65JNP9nkKNB13/OnZdFq7Qw45xL3HvPeCnkef6ebNm7v3lNrzpJNOikyfPn2frwsAoHQL6Z9kB/oAAP8pY6cspU4zFT8jNIDCGz16tPssqepCp/gCAKAgBNkAUAbpq10TPGVnZxd4XmAAeWlCtdjZ3TUmW8MvNM7722+/Teq+AQCCgTHZAFCGaEyyxtQqsNYpqnRqIACFd+6557rKD40j1/hxTYKnmeTzOyUYAADxyGQDQBmi0vCmTZu6iZY0+dfw4cOTvUtA4ErDn376afdZUvZas8ffeOON1rNnz2TvGgAgIAiyAQAAAADwCefJBgAAAADAJwTZAAAAAAD4hInPUkA4HLaff/7ZMjIyLBQKJXt3AAAAgDJHo3BzcnKsfv36lpZGLjOVEWSnAAXYjRo1SvZuAAAAAGXejz/+aA0bNkz2biCJCLJTgDLYsmLFCjfjMIJXifDLL79YrVq16BUNGNou2Gi/4KLtgo32C65Ub7stW7a4xJb32xupiyA7BXgl4tWrV3cLgvcf1vbt213bpeJ/WEFG2wUb7RdctF2w0X7BRdv9juGZSN13PwAAAAAAPiPIBgAAAADAJwTZAAAAAAD4hCAbAAAAAACfEGQDAAAAAOATgmwAAAAAAHxCkA0AAAAAgE8IsgEAAAAA8AlBNgAAAAAAPiHIBgAAAADAJwTZAAAAAAD4hCAbAAAAAACfEGQDAAAAAOATgmwAAAAAAHxCkA0AAAAAgE8IsgEAAAAA8AlBNgAAAAAAPiHIBgAAAADAJwTZAAAAAAD4hCAbAAAAAACflPdrQyj9NuWELVwunOzdQBFFwmHL2Ra29JywhegWCxTaLthov+Ci7YKN9guuZLZdxfSQVa0U2r9PCuSDIDuFjJ2Wa1t20uRBE7KwZVfabuu3b7UIxSeBQtsFG+0XXLRdsNF+wZWstqudmWYDu1chyEapQcSVQtZvDtu6XDLZQROyiFlG2FblRCxitF+Q0HbBRvsFF20XbLRfcNF2wO/oHgQAAAAAwCcE2QAAAAAA+IQgGwAAAAAAnxBkAwAAAADgE4JsAAAAAAB8QpANAAAAAIBPCLIBAAAAAPAJQTYAAAAAAD4hyAYAAAAAwCcE2QAAAAAA+IQgGwAAAACQVLt27bKrrrrKatasaVlZWTZo0CDbvXt3sdbV9UaNGln16tWtQYMGNnjwYNu5c2f0/qFDh1rbtm2tfPny7r5YO3bssBNPPNFq167tHt+qVSt76qmninQsKRNkN2nSxEaPHp3s3QAAAAAAxLnnnnvso48+sq+//tq++uormzVrlt17773FWvfKK6+0b775xrZs2WJffPGFW0aNGhW9v0WLFu76mWeeude2FXg/8sgj9vPPP7vHv/766y4o13MUVsoE2X+UejPiezn2ZeXKlXbGGWdYlSpVXE/IDTfcsFdvzPvvv2+HH364VaxY0TX2c889t9d2Vq1aZRdddJFlZ2db5cqVXa/LggUL/vAxAQAAAEBpMG7cOLvtttusXr16brn11lvtmWeeKda6rVu3tqpVq7rLkUjE0tLS7Lvvvovef/HFF9tpp53mMtXxypUrF81ySygUcsvSpUsLfSxlPsiOLQvYn/bs2eMCbD3/7Nmz7fnnn3cB9O233x5d54cffnDrnHTSSbZw4UIXxF922WU2bdq06DobN260Y445xtLT023q1Kmut+bBBx90pREAAAAAEHQbN260n376ydq3bx+9TZeVtNy8eXOx1h05cqRVq1bNJTuVyVYJeVH85S9/sUqVKtkhhxxiderUsXPOOScYQbaywzpYBZcKGrXzY8eOtd9++8369u1rGRkZLrur4NILXC+99FJr2rSpy+gefPDBNmbMmDzbvOSSS+zss8+24cOHW/369d06iTz99NOWmZlpM2bMcNcXL17sejPUENqP3r1726+//hrd5gcffOCey+vJWL58eYHH9s4777iAeMKECa7Rte27777bHnvssWjg/+STT7pjUdCs3haNK/jb3/5mDz/8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IKHtgo32Cy7aLthoPwBBR/cgAAAAAAA+IcgGAAAAAMAnBNkAAAAAAPiEIBsAAAAAAJ8QZAMAAAAA4BOCbAAAAAAAfEKQDQAAAACATwiyAQAAAADwCUE2AAAAAAA+IcgGAAAAAMAnKRNkN2nSxEaPHp3s3QAAAACAfO3atcuuuuoqq1mzpmVlZdmgQYNs9+7dRV53x44d1q9fP2vatKllZGRYq1atbNy4cXke//XXX1uXLl3c4+vWrWuXX3655ebm5lnn6aeftoMPPtiqVq3qYqq33nqrBI++bEiZIPuPOvHEE23w4MFFeszKlSvtjDPOsCpVqljt2rXthhtuyPMB+eijj+yYY46x7Oxsq1y5snvjP/zww3m28cQTT9hhhx1m1atXd0unTp1s6tSpvh0XAAAAgNLjnnvucXGCAuCvvvrKZs2aZffee2+R11XcUa9ePZs+fbpt2bLFnnvuObvuuuvsnXfeiT7+ggsucAH02rVr7csvv7QvvvjC7r777uj9Tz31lD344IP28ssv29atW23u3LnWtm3b/fAqBFuZD7J37tyZlOfds2ePC7D1/LNnz7bnn3/evbFvv/326DrqDVLP04cffmj/+9//7LbbbnOL3syehg0b2siRI+3TTz+1BQsW2Mknn2xnnXWW+xABAAAAKFuUbVZMoABZy6233mrPPPNMkddVrHHXXXdZ8+bNLRQK2dFHH20nnXSSC8o933//vV100UVWoUIFq1Wrlp155pku2PbiGcUuY8aMsQ4dOrht1KlTx5o1a7afXongSkt2dlglDcoQq0RBjTZ27Fj77bffrG/fvq6soUWLFtHMrRr60ksvdSUPyvyq10WNHuuSSy6xs88+24YPH27169d36ySisofMzEybMWOGu7548WI77bTTrFq1am4/evfubb/++mt0mx988IF7Lr25tCxfvrzAY1MPkXqUJkyYYO3bt3fbVq/QY489Fg389Wbt1auXtWnTxpVe6A3erVs31wPl6d69u51++ul20EEHWcuWLd1xaR8/+eSTP/jqAwAAAChNNm7caD/99JOLHzy6rArZzZs3F3td2b59u82bN89VyXquv/56Gz9+vG3bts3WrFljb7zxhos/ZMmSJS7D/dlnn7lYRck/lZ8rK45SnslWhveAAw5wDa6A+4orrrDzzjvPOnfu7Bq0a9euLuDV2IBwOOwa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zkyzgd2rEGQDKDFEXClk/eawrcslkx00IYuYZYRtVU7EIkb7BQltF2y0X3DRdsFG+wEIOrp3AQAAAADwCUE2AAAAAAA+IcgGAAAAAMAnBNkAAAAAAPiEIBsAAAAAAJ8QZAMAAAAA4BOCbAAAAAAAfEKQDQAAAACATwiyAQAAAADwCUE2AAAAAAA+SZkgu0mTJjZ69Ohk7wYAAACAP2jXrl121VVXWc2aNS0rK8sGDRpku3fvLvK6O3bssH79+lnTpk0tIyPDWrVqZePGjdtrG08//bQdfPDBVrVqVRdXvPXWW9H7Lr/8cndfZmZmCR4xgiRlguw/6sQTT7TBgwcX6TErV660M844w6pUqWK1a9e2G264Ic+H//XXX7c///nPVqtWLatevbp16tTJpk2blmcbI0aMsD/96U/uQ69tnH322bZkyRLfjgsAAAAImnvuucc++ugj+/rrr+2rr76yWbNm2b333lvkdfXbvF69ejZ9+nTbsmWLPffcc3bdddfZO++8E338U089ZQ8++KC9/PLLtnXrVps7d661bds2en+7du3s8ccftyOOOGI/HDmCoMwH2Tt37kzK8+7Zs8cF2Hr+2bNn2/PPP+8+tLfffnt0nQ8//NAF2VOmTLFPP/3UTjrpJOvevbt9/vnn0XU++OADGzhwoH3yySf27rvvup64rl272m+//ZaU4wIAAACSTdnm2267zQXIWm699VZ75plniryuMtN33XWXNW/e3EKhkB199NHuN7mCcu83vX6/jxkzxjp06ODWqVOnjjVr1iy6ff1W79Kli1WqVGk/HT1Ku7RkZ4dVrqEMsco39IYdO3asCyD79u3rsrctWrSwqVOnRt/kl156qSvnqFy5sivL0Bs+1iWXXOKyvcOHD7f69eu7dRJRyYdKOmbMmOGuL1682E477TSrVq2a24/evXvbr7/+Gt2mgl09lz5YWpYvX17gsan3S71lEyZMsPbt27tt33333fbYY49FA3+Vr994440uU33QQQe5HjX9/e9//xvdzttvv+2ev02bNq6XTIG6MuQKygEAAIBUs3HjRvvpp5/cb2yPLus38ubNm4u9rmzfvt3mzZtnhx12mLuuCtK1a9faZ5995srEGzZs6MrLlfUGSm0mWxneAw44wL2ZFXBfccUVdt5551nnzp3dm1lZWwW8ubm5Fg6H3Rt74sSJLoBVr9Itt9xir776ap5tKnDWB0KZ30mTJu31nKNGjbKbb77ZBcLqddq0aZOdfPLJrndqwYIFLrDVh6lHjx5ufQXXKuXWB2r16tVuadSoUYHHNWfOHFdGooDd061bN/eBVJlKIjq+nJwcN1YkP96XQUHraGyJnid2AQAAAMoClWxL7Bho77J+Sxd33UgkYpdddplLep177rnutg0bNri/KidXnLBw4UL74Ycf7Jprrimho0NZUD7ZO6DsrMo3ZMiQITZy5EgXdCugFQXSTzzxhC1atMiVbwwbNiz6WGW0FcwqyPYCYq/sQ5nqChUq7PV8N910k73wwgsuM63ssDz66KMuwI4dx6GyEgXS3377rbVs2dJtS2Or69atW6jjWrNmTZ4AW7zrui+RBx54wH0RxB5LfBCurP8xxxxjhx56aL7PrXHcsa8TAAAAUFao8tRLPilu8C6LKmGLs64C7CuvvNIl6hRQp6Wl5Xm84hTv8brcq1evEj9OBFfSg2yvFEPKlStn2dnZeSYS8ALTdevWub8qt1YArBKPbdu2udLr2PIP0eMTBdiasECl6OqFih1H8cUXX9jMmTOjH6JYy5Ytc0F2SXvxxRddYKyZCjXBWSIa76Gydm+MSH70wb/22muj15XJ3lfmHQAAAAgCDTNVdauyyhpLLbqs37s1atQo8roKsPU7WxOaqSI2dhsaespYawSuXDw9PT3PdY13jr1N170srmb0u/766924bJV66wOisdvxk5spk53Icccd58Z1x5eXK3usCce0vdjlu+++s+OPP75Yx6WMt0rOY3nX47PhOi6Vpmi/TjnllITb02kHVPquzgB9URSkYsWKbrby2AUAAAAoKxQDaA4mVYhqUUWqfk8XZ139zv7444/dUFMF5bE0D9RFF11k9913nxvfrWGmunzWWWdF11EsorHcildEl/M7nRhSQ9KD7KLQm19jtVXKofJuTYqmTHNhdezY0U2ipg+WSrM9hx9+uBsnrckMtM3YxQvYlRlXgF5YGsP95ZdfRjPwog+uAt5DDjkkettLL73kPvj6q9nI46lnTR/8N954w9577z1XIg8AAACksqFDh7rf261bt3aLhlNqriYZMGCAWwqz7ooVK9zpt1Qm3rhxY1fZqiX28ZqsWBMq63e4Mtta76GHHorerzmkFIzrjEJeJa5OG4bUlfRy8aLQJATjx493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5/EnnniiVaxY0apVqxZdfv755+j9f/vb36xevXpuGKy2c88995Tw0SNVFDmTPXXqVJs8ebIdc8wxFiRNmjSxwYMHuwUAAADA/qdA9qOPPrKvv/7aXT/ttNPs3nvvtdtvv71I6yrYVoA8ffp0a9asmTvTke5v2LChde3aNbqN++67L9/f/3fccYe1bNnSBeIrV660U0891cUMF110UYkdP1JDkTPZXk9SqlFPWFEDdH1YzzjjDHe6s9q1a9sNN9yQp6fu/fffd6dEi1/WrFkTXefDDz+07t27W/369d19b775pq/HBQAAAOwvyjbfdtttLkDWcuutt7oq2aKuW7VqVbvrrrusefPm7jfy0UcfbSeddJILygurbdu2LsAWbSMtLc2+++47n44UqazIQfbdd9/teo9yc3MtCHbu3JmU59W5wxVg6/lnz55tzz//vD333HMJe+mWLFliq1evji4KyGPHwOv0aI899th+PgIAAADAPxs3brSffvrJ2rdvH71Nl5WY2rx5c7HXle3bt9u8efPssMMO2ysbrgRhhw4dbPz48Xs97sorr3QJsQMPPNC2bt1ql1xyiU9Hi1RW5CD7wQcftGnTplmdOnVc78/hhx+eZylqdlhjK5QhVoZc2xw7dqwLLHWqMI2vaNGihStR9wLXSy+91I2ZqFy5sh188MHudGKx9ME4++yzbfjw4S77q3USefrppy0zM9NN4CaLFy92JSYaq6H96N27t/3666/RbX7wwQfuubxs8/Llyws8tnfeeceVtkyYMMF9IWjb6qBQsBwf+Cuorlu3bnRRL5pHj9OXwznnnFOk1xYAAAAoTRTEin6De7zLOTk5xV43Eom4eaMOOuggO/fcc6O3jxgxwpYtW2Zr1651Ezcr7njjjTfyPPbxxx93zzV//nzr06ePi0mA/R5kK4C97rrr7Prrr3eTBZx11ll5lqJShveAAw5wPU96419xxRV23nnnWefOne2zzz5zYyoU8CpzrpnMNc5i4sSJLoBVVviWW26xV199Nc82FTgrO/zuu+/apEmT9nrOUaNG2c033+wC4S5dutimTZvs5JNPdj1cCxYssLffftt9GHv06OHWV3DdqVMnN7mCl21u1KhRgcc1Z84c1wmhgN3TrVs327Jli3311Vd51lUQrhKYP//5z/bxxx/bH6WJIPQ8sQsAAACQTEpmSWwm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kN2kSRMbPXp0sncDAAAASbRr1y676qqrrGbNmpaVlWWDBg2y3bt3F3ndHTt2WL9+/axp06aWkZFhrVq1snHjxuV5/NChQ61t27ZWvnx5Gzx48F7b//nnn+3000+3qlWr2oEHHmhjx44toaMGsD+lTJD9R5144okJvxwLsnLlSjvjjDOsSpUqVrt2bbvhhhvyfImvXr3aLrjgAmvZsqWlpaUl3P5XX31lf/3rX10nQSgUoqMAAADgD7jnnnvso48+sq+//tr9zpo1a5bde++9RV5Xv+nq1atn06dPty1btthzzz1n1113nb3zzjvRx7do0cJGjRplZ555ZsLt9+rVy+rWrWvr1q2ziRMnut+KH3zwQQkdOYD9pcwH2Tt37kzK8+7Zs8cF2Hr+2bNn2/PPP+++fG+//fboOuoBrVWrlt12223Wrl27hNvJzc21Zs2a2ciRI92XMAAAAIpP2Wb99lKArOXWW2+1Z555psjrKvt81113WfPmzV0i5Oijj7aTTjrJBeWeiy++2E477TSrXr36XttetmyZW3fEiBFuW0cddZRdeOGFe2XDAQRPWrKzwyq7UQZXZTh16tRxZTK//fab9e3b15XeqAdw6tSp0cD10ksvdWU5lStXtoMPPtjGjBmTZ5uXXHKJnX322TZ8+HCrX7++WyeRp59+2jIzM23GjBnu+uLFi92XYLVq1dx+9O7d23799dfoNtWrqOfSl6iW5cuXF3hs6sVUr+eECROsffv2btt33323PfbYY9HAX9lpbbNPnz5Wo0aNhNv505/+ZPfff7+df/75VrFixWK8ygAAAJCNGzfaTz/95H6beXRZ1YebN28u9rqyfft2mzdvnh122GGF2pdFixa5wF2/O2O3r9sBBFvSM9nK8B5wwAHuS0kB9xVXXGHnnXeede7c2T777DPr2rWrC3iV0Q2Hw9awYUNXTqMAVlnhW265xV599dU821TgvGTJEnv33Xdt0qRJez2nynZuvvlmFwh36dLFNm3aZCeffLJ16NDBFixYYG+//batXbvWevTo4dZXINypUyc37kYl3loaNWpU4HHNmTPHjcGJ/eLs1q2bKydSuVFJUoZczxO7AAAApLqtW7e6v0q0eLzLOTk5xV43EonYZZddZgcddJCde+65hd6X2G1724/fNoDgKZ/sHVCZtMpwZMiQIa4sWkG3AlpRIP3E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x9r48eOj97do0cJGjRplZ5555n44cgBBU+aD7J07dybleffs2eMCbD3/7Nmz7fnnn3df4rfffnt0HfWk1qpVy2677TYXPCei+/71r3/ZI4884v6jGDBggJ1zzjn2+eef78ejAQAASC5lm/W7SAGylltvvdWeeeaZIq9btWrVaAIjFArZ0UcfbSeddJILyiU3N9defvllF6hnZma6ZIiC7tjnuvjii+20005zmW4AKFVBtrLD+tJSBlflPCrHUU/hb7/9Zn379nUlPOopnDp1ajRwvfTSS115T+XKle3ggw+2MWPG5NnmJZdcYmeffbYNHz7c6tev79ZJ5Omnn3ZfnDNmzHDXFy9e7L4sq1Wr5vajd+/e9uuvv0a3+cEHH7jn0pexluXLlxd4bOoNVVA8YcIEa9++vdu2So0ee+yxaOCvEnZts0+fPlajRo2E23nhhRfslltusdNPP92aNWtmV1xxhbv84IMPFuMVBwAACJ6NGzfaTz/95H5TeXRZmebNmzcXe13Zvn27zZs3zw477DB3fcmSJe63WvzjFy1aVEJHB6CsSXomWxneAw44wH25KeBWEHneeedZ586d7bPPPrOuXbu6gFe9iuFw2Bo2bGgTJ050AayywgpAX3311TzbVOCsL8h3333XJk2atNdzqrzn5ptvdoFwly5dbNOmTXbyySdbhw4dbMGCBa4ce+3atdajRw+3vgLhTp06ufE7KvHW0qhRowKPa86cOW6sjgJ2T7du3VxZksqWCkvZbpWJx1IHg9fbmt9j9DyxCwAAQFBt3brV/VWCxONdzsnJKfa6kUjELrvsMjvooIPs3HPPjT5e2W6Nt459fPxjASA//+/bI0lUJq1yHhkyZIiNHDnSBd0KaEWB9BNPPOF6D1XOM2zYsOhjldFWMKsg2wuIRV+MylRXqFBhr+e76aabXHZYmek2bdq42x599FEXYMeO61GZkQLpb7/91pUJaVsaW123bt1CHdeaNWvyBNjiXdd9haXA/KGHHrLjjz/elTWpA+H11193Wf38jBgxIs/rBAAAEGSqNBRlovU70bssqnwszroKsK+88kqXmNH4bM2P4z1eyR2N3fYCbT0+/nkAoNRmsr3SHClXrpxlZ2e7DHB8YLpu3Tr3V+XWRxxxhBvLrC/Bp556ypX/xNLjEwXYKrFWObqywF6ALV988YXNnDnTbc9b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xx9/HClXrlxk1KhRka+//jpy2223RdLT0yNffvlldJ2RI0dGatSoEXnzzTcjX3zxReTMM8+MNG3aNLJt27boOqeeemqkXbt2kU8++SQya9asSIsWLSK9evXaL8dcliSr/Ro3bhy56667IqtXr44uW7du3S/HXFaURNuNHz8+MmzYsMjYsWM14WTk888/32s7AwYMiDRq1CgyY8aMyIIFCyJHH310pHPnziV6rGVRstrvhBNOcM8V+9nbvHlziR5rWeN3223atClyyimnRF555ZXIN998E5kzZ06kY8eOkSOOOCLPdvh/L9jtx/97pfN789///nfk3XffjSxbtiyyePHiyKWXXhqpXr16ZN26ddF1+OyhLCLILuX0H8nAgQOj1/fs2ROpX79+ZMSIEQnX79GjR+SMM87Ic9tRRx0V6d+/v7scDocjdevWjdx///3R+/UfWMWKFSMvvfSSu64vSv2AnD9/fnSdqVOnRkKhUGTVqlW+H2NZloz2835sPPzwwyVwRKnD77aL9cMPPyQM0tSW+oEyceLE6G3/+9//3Lr6YYnS3X5ekP2Pf/zDl2NIVSXZdp558+a5NlyxYoW7zv97wW4/4f+9YLSdOh3VdtOnT3fX+eyhrKJcvBTbuXOnffrpp660xpOWluauz5kzJ+FjdHvs+tKtW7fo+j/88IOtWbMmzzo1atRwJUHeOvqrcp0jjzwyuo7W13PHl/ig9LWfR2VyKmvt0KGD3X///bZ7926fj7DsKom2Kww9p0ojY7ejMrsDDzywSNtJdclqP8+///1vO+CAA+zQQw+1IUOGWG5ubjGOIjXtr7bbvHmzKyfW/3XeNvh/L7jt5+H/vdLddnqOp556yv1uadeuXXQbfPZQFpVP9g4gf7/++qvt2bPH6tSpk+d2Xf/mm28SPkYBWKL1dbt3v3dbQevUrl07z/3ly5e3rKys6Doove0nV199tR1++OGuzWbPnu1+6K9evdoeeugh346vLCuJtisMrVuhQoW9fjgWdTupLlntJxdccIE1btzYjRtdtGiRG0u6ZMkSN54bpaPtNO+B2qVXr15uDKi3Df7fC277Cf/vld62mzRpkp1//vmuw1Hzybz77ruuI9LbBp89lEUE2UAZdO2110YvH3bYYS5w69+/v40YMcIqVqyY1H0DyrLLL788elmTAOkHZZcuXWzZsmXWvHnz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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# plot_synth_weights returns the Axes; in a notebook the plot displays inline\n", "plot_synth_weights(results, weight_type=\"unit\", top_n=10, min_weight=0.01)" @@ -295,10 +659,53 @@ }, { "cell_type": "code", + "execution_count": 10, "id": "t18-cell-023", - "execution_count": null, - "metadata": {}, - "outputs": [], + "metadata": { + "execution": { + "iopub.execute_input": "2026-04-22T01:35:51.334442Z", + "iopub.status.busy": "2026-04-22T01:35:51.334344Z", + "iopub.status.idle": "2026-04-22T01:35:51.379849Z", + "shell.execute_reply": "2026-04-22T01:35:51.379557Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " period weight\n", + " 1 0.374045\n", + " 2 0.099183\n", + " 3 0.001611\n", + " 4 0.113236\n", + " 5 0.143960\n", + " 6 0.267965\n", + "\n", + "Sum: 1.0000 (should be 1.0)\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA9kAAAJOCAYAAACjoMSlAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8ekN5oAAAACXBIWXMAAA9hAAAPYQGoP6dpAABN7UlEQVR4nO3dCZxd8/0//s9MEklkTwhZ7PsWS5UqFUprK2ppaVEUpUWLL2qLpQRVlNJSa0qV0m9LaS2laGhtLZVGa6uv2ENCMhGJJPf+Hu/P/3HnP5NMIpOcyZ2583w+Hie595xzz/3c+7l3Zl7ns5y6crlcTgAAAMBiq1/8QwAAAABByAYAAICCCNkAAABQECEbAAAACiJkAwAAQEGEbAAAACiIkA0AAAAFEbIBAACgIEI2AAAAFETIBmCJ+b//+79UV1eXLrzwwiXyfNtss01eWLAzzzwz10tRVl555XTQQQelzmZxPm/xuPXXX7/wMgGw5AnZADVs3Lhxae+9904rrbRS6tGjRxo2bFj6whe+kC677LI2fd4//vGPObgtCc8991x+rgjwS8Lvfve7tNNOO6VlllkmLbXUUmno0KHpq1/9avrzn//cps/7q1/9Kl1yySWpGh566KEcwhdmaW8uuOCCXK6nn3662fpyuZwGDBiQt73yyivNts2YMSN17949ff3rX0/tzZtvvpk/788880y1iwLAfHSd3wYAOra//vWvadttt00rrrhiOuyww9Lyyy+fXnvttfTYY4+lSy+9NB199NFtGrJ/+tOfLpGgHSH7rLPOyi2B0YLa1H333VfY80Qo++Y3v5nGjBmTNt5443Tcccfl9/Stt97KwXu77bZLjz76aPrsZz+b2ipk/+tf/0rHHHNMWtLWWWeddOONNzZbd/LJJ6fevXunU089dZ79n3/++VRf3z7O42+11Vb5/0ceeSTXW8X48ePTBx98kLp27ZrrbZVVVmnc9uSTT6aPP/648bELq8jP24JCdnze47O+0UYbtfnzAdB6QjZAjRo9enTq169fDgz9+/dvtm3ixImpM4iW5qJcdNFFOWBHyL344oubtdpG0IwQGoGtPYiW2HjtRQXd5ZZbLu2///7N1p1//vm5NX/u9SFagduLTTfdNPfiiJDd9MRSBOtBgwbl7bGt6euI+6G1IbvIzxsAHVf7OM0MQOFefvnltN56680TsMPgwYMbb48cOTJtuOGGLR5jrbXWSjvssMM846mvuuqqtNpqq+Uw9elPfzoH+YoYixut2GFB3YgXdIyK//znP7m7+8CBA3NQikD0+9//vnF7hN6vfOUr+Xa02leeK7o3z2+MbATQaGFfc8018zGHDBmS9txzz/x+zc9HH32UzjvvvLT22mvn19/S6znggAPSZptt1nj/v//9by5blH3ppZdOn/nMZ9If/vCHFrth33rrrfmkyPDhw3OZolX8pZdeatwvXkM89tVXX218jZVW+8oxbrnllnTaaaflIQHxfFOnTs3bb7vttvSpT30q9ezZszEUv/HGG6ktzT0mO+opyhjh9bvf/W5adtll8+fy8MMPzy3G0aL8jW98I3ffjuXEE0/MPQeaKpVKubt8fKbjPYrgH49///33PzH4xucrQnVTcX+LLbZIW265ZYvbonyVMdIL+9wtfd6iznbbbbfUq1ev/L079thj07333tvsczp3z4z4LEcdRl1Gd/eK2D9eSzj44IMbPwvx/oYXX3wx7bXXXrmHRZQzPk/77rtvmjJlygLfIwCK1T5OuQNQuBiH/be//S13MV7QhEoRDqM7+dz7Reh94YUXcnCbu9tyQ0NDDhnxB36EgAipESq7deuW10eX1j/96U/zdDFe2GNUuvNGAIqgcdJJJ+WQEmH0y1/+cvrf//3ftMcee6Stt946h7af/OQn6ZRTTsndmkPl/7nNmTMnfelLX0oPPPBADh/f+973cjmirPH6I/S3JMLh5MmTcyt2ly5dPvG9f+edd3K38enTp+fyRYvpL37xixy2fvOb3+Syz90qHK3Oxx9/fA5E8X7st99+6fHHH29sKY/1r7/+evrxj3+c10VX7abOPvvsHCjjGDNnzsy3I3xFGItgFicJolwxVCBCZIxRbukETFuKluQIgNHdOYYtxImWKEMMbYhhDeeee24eavCjH/0ofxYjeFfEZ6XyeuI9jXHUl19+eX4d8Xoqn5uWRIv02LFj84miysmJeMyhhx6aT4ycccYZOehHWSLcR3kigFd6Aizqc3/44Yfp85//fB5SEJ+1eO3x2X/wwQdb3D9C+4477pi/CzHOPz4r3//+99MGG2yQ5wGIz/UPfvCDdPrpp6dvfetb6XOf+1x+XHzW4mRFnBCLuq+8z3Ey5a677sqvLXq1ALCElAGoSffdd1+5S5cuedliiy3KJ554Yvnee+8tf/zxx832++CDD8o9evQof//732+2/rvf/W65V69e5WnTpuX7r7zySjQtlgcNGlSePHly43533HFHXn/nnXc2rjvyyCPzurm15hjbbbddeYMNNijPmDGjcV2pVCp/9rOfLa+xxhqN62677bb82AcffHCe5xs5cmReKq677rq878UXXzzPvnHs+bn00kvz4373u9+VF8YxxxyT9x87dmzjuoaGhvIqq6xSXnnllctz5szJ66LMsd8666xTnjlz5jzPN27cuMZ1u+yyS3mllVaa57kqx1h11VXL06dPb1wf9Tx48ODy+uuvX/7oo48a19911115/9NPP71x3RlnnNFifS3Ieuut1+y9bSrKeeCBBzbev/766/Pxd9hhh2bvc3wu6+rqykcccUTjutmzZ5eHDx/e7NjxPsbjb7rppmbPc88997S4fm5/+MMf8n433nhjvv/WW2/l+w8//HCul/iOxD7hX//6V942evToVj/33J+3iy66KO9z++23N66Lulh77bXn+czG42LdDTfc0LguPhPLL798ea+99mpc9+STT+b94j1t6umnn87r4/sAQHXpLg5Qo2IW8WjJjtbTf/7zn7l1NFq6omW4aZfraOHafffd080339zYRTdafH/961/nVuNoQW5qn332yV16KyqtadEKvbA+6RjRahyzdUdrXrQ0v/fee3mZNGlSfg3RLXZRujxHC3h0mW5p0rcFzYxd6Xrdp0+fhXqeaI2NFtKmY3qj5TlaH6M1NboENxUtpE3H8y7Ke3rggQfmLuEVTz31VB57/53vfCd3Ha7YZZddcrf3ubuuLwmHHHJIs/d58803z5+5WF8RPQViWEDT1x5d3uNzGp/pymchlugGH+/r/FqGK6KlN1qlK2OtK63P0cIfjx8xYkRjl/HK/5W6W5znvueee/L3Lb6DFVEX0XOkJXG8pmPD4zMRn6OF+RxUWqqjK3r0oACgeoRsgBoWIeK3v/1t7ob6xBNP5BmhI7TGOOemQS+65U6YMCF3qQ33339/7locXcnnFt16m6qE5U8aG9uaY8R45Ahfo0aNyuN3my7RtXdRJ2+Lcdcxzry1E5T17ds3/x/v3cKIcbjxPHOrdGOP7UW/p01nx276HC2VI0L23GVYEuZ+nZVguMIKK8yzvulrj5Mq0V0+xjTP/XmYNm3aJ34W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AArSNdWADxpKqdSlVO1iUIByqZQaPiqlbg2lVOcUUIenPmuPOq0t6rP2qNPaoj5rT2eo0+7d6lKvHnWpM6uJkH31vdPT1I9r4qV0enWplAb1mJEmzZiWyjpadHjqs/ao09qiPmuPOq0t6rP21HqdDu5fn47cdWkhO9WASVNKaeJ0Ldm1oC6VU+pTSm80lFM5qdOOTn3WHnVaW9Rn7VGntUV91h512jnU3ukTAAAAqBIhGwAAAAoiZAMAAEBBhGwAAAAoiJANAAAABRGyAQAAoCBCNgAAABREyAYAAICCCNkAAABQECEbAAAACiJkAwAAQEGEbAAAACiIkA0AAAAFEbIBAACgIEI2AAAAFETIBgAAgIII2QAAAFAQIRsAAAAKImQDAABAQYRsAAAAKIiQDQAAAAURsgEAAKAgQjYAAAAURMgGAACgambNmpWOOuqoNGDAgDRw4MB09NFHp9mzZ7e4b2xbYYUVUt++fdOwYcPSMccckz7++OO8bcKECal3797Nlq5du6bddtttnuNMnDgx/7/VVls1W//mm2+mnXfeOfXq1SutuOKK6eqrr+5YIfsvf/lL2nXXXdPQoUNTXV1duv3226tZHAAAAJawc845Jz3yyCPpueeeS+PHj09jx45N5557bov7fuc730n/+c9/0tSpU9M///nPvFxwwQV5W4TiadOmNS6TJ09O/fv3T/vuu+88xzn++ONbPP7Xvva1tPzyy+cQftttt6UTTjghPfzwwx0nZH/44Ydpww03TD/96U+rWQwAAACq5LrrrkunnXZaGjJkSF5OPfXUdO2117a47zrrrJNbmUO5XE719fXpxRdfbHHfaMQtlUppzz33bLb+jjvuSO+///48+7/88ss57J933nn5OTbffPO033775fJ1mJC900475bMWe+yxRzWLAQAAQBW8//776fXXX08bbbRR47q4HV2/p0yZ0uJjzj///NwVfPDgwbklO7qQtySCeoTkHj16NK6LYx533HHpkksumWf/Z599Nof85ZZbrllZYn1rGJMNAABAVUybNi3/H926Kyq3GxoaWnzMSSedlB8X3cuPOOKI3L17bq+++mq6//7706GHHtps/YknnpgOOuigtNpqq7VYlqblqJRlfuWYn66pA5k5c2ZeKqIfPgAAAB1T7969G1uYl1lmmcbboU+fPgt8bHQdj+HHEZojUDd1/fXXp4033jhvr4ix3o8++mj6xz/+kWbMmNFiWeZuPY/7n1SODt2SHX3j+/Xr17jErHIAAAB0TAMGDEjDhw9PzzzzTOO6uB1ZLzLfwsxMPveY7BiHHSF77lbsBx54IP33v//NE2+vssoqeV20hke4f+utt9KIESPy7OKVmccrZdlggw1qN2SffPLJ+UxCZXnttdeqXSQAAAAWw8EHH5xGjx6d3n777bzEzOJzB+RKd+4Izx988EGe9GzcuHF5jq8ddtih2X5/+tOf0nvvvZdnCm8qxmK/8MILOTjHBGdhjTXWyPdjfHd0Id9yyy3TKaeckqZPn56eeOKJdNNNN6VDDjmkdruLd+/ePS8AAADUhlGjRqVJkybl7t9h//33z0E3xJjrcOWVV+bLPv/qV7/Kl9+KYcQRjPfaa6901llnzTPh2d577z1PS3hcWzuWpkOPu3XrllvSK26++eYc8Jdddtl8ze64PNjIkSM7TsiOMxEvvfRS4/1XXnkln0WIFxPXOAMAAKC2devWLV/WuaVLO0e4rojLakUr9Se59dZbF/q5Ky3aFcOGDUt33313WhxVDdlPPfVU2nbbbZs134cDDzwwjRkzpoolAwAAgA4WsrfZZpvclx4AAABqQYea+AwAAADaMyEbAAAACiJkAwAAQEGEbAAAACiIkA0AAAAFEbIBAACgIEI2AAAAFETIBgAAgIII2QAAAFAQIRsAAAAKImQDAABAQYRsAAAAKIiQDQAAAAURsgEAAKAgQjYAAAAURMgGAACAggjZAAAAUBAhGwAAAAoiZAMAAEBBhGwAAAAoiJANAAAABRGyAQAAoCBCNgAAABREyAYAAICCCNkAAABQkK6pBgzqV5+69XS+oBbUpVIa1KM+paXqUtk5oA5PfdYedVpb1GftUae1RX3Wnlqv08H9a+81ddqQfdgOS6e+/XtXuxgUoFwqpcmTp6eBA3ununpf0o5OfdYedVpb1GftUae1RX3Wns5Qp9271aXOriZCdv8+9Xmh4yuVUpr1UX0a0Kc+1dfoD57ORH3WHnVaW9Rn7VGntUV91h512jmoWQAAACiIkA0AAAAFEbIBAACgIEI2AAAAFETIBgAAgIII2QAAAFAQIRsAAAAKImQDAABAQYRsAAAAKIiQDQAAAAURsgEAAKAgQjYAAAAURMgGAACAgnRNNeCDhlIqdSlVuxgUoFwqpYaPSqlbQynVOQXU4anP2qNOa4v6rD0dqU67d6tLvXrUVbsYAIWriZB99b3T09SPa+KldHp1qZQG9ZiRJs2Ylso6WnR46rP2qNPaoj5rT0ep08H969ORuy4tZAM1qSaS6aQppTRxupbsWlCXyin1KaU3GsqpnNRpR6c+a486rS3qs/aoU4Dqa7+nOAEAAKCDEbIBAACgIEI2AAAAFETIBgAAgIII2QAAAFAQIRsAAAAKImQDAABAQYRsAAAAKIiQDQAAAAURsgEAAKAgQjYAAAAURMgGAACAggjZAAAAUBAhGwAAAAoiZAMAAEBBhGwAAAAoiJANAAAABRGyAQAAoCBCNgAAABREyAYAAICCCNkAAABQECEbAAAACiJkAwAAQEGEbAAAOoRZs2alo446Kg0YMCANHDgwHX300Wn27Nnz7Ddz5sx02GGHpVVWWSX16dMnrb322um6666bZ79rrrkmrbXWWqlXr15p5ZVXTnfccUfjtkceeSR95jOfSf369UvDhg1LJ598ciqVSo3b33zzzbTzzjvnx6644orp6quvbsNXDnQkVQ/Zb7zxRtp///3ToEGDUs+ePdMGG2yQnnrqqWoXCwCAduacc87J4fe5555L48ePT2PHjk3nnnvuPPtF8B4yZEi6//7709SpU9OYMWPS//zP/6T77ruvcZ+rrroqXXTRRemWW25J06ZNS48//nj+OzTMmTMn7b777nmZPHlyevTRR/N+TYP01772tbT88suniRMnpttuuy2dcMIJ6eGHH15C7wTQnlU1ZL///vtpyy23TN26dUt33313/oEZP+zi7CQAADQVrdGnnXZaDtCxnHrqqenaa6+dZ79oXf7BD36QVltttVRXV5dbpLfddtsc0Csh+vTTT0+XXnpp2njjjfM+yy23XFp11VXz9ilTpuRwfeCBB6YuXbrkVu7tt98+jRs3Lm9/+eWX87HOO++8/Fybb7552m+//VpsLQc6n6qG7B/+8IdphRVWSNdff33abLPNcpeeL37xi/kHIgAANG2cef3119NGG23UuC5uT5gwIYfiBZkxY0Z64okn0ogRI/L9559/Pr3zzjvpH//4Rw7Qw4cPz93Lo9U7RFf0b37zmznARxf1CNXRKr7LLrvk7c8++2wO+RHMm5Yl1gNUNWT//ve/T5tuumn6yle+kgYPHpzPJBrP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n+1b92511S4CAEDNaXXI3n333dOdd96ZfvCDH6RevXrl0L3JJpvkdV/4whdSNfTvU58XOr64DPusj+rTgD71qV4o6/DUJwAAnU2rQna5XE4vvfRSGjhwYLr77rtT166tzugAAABQsxa6aemVV15JI0aMSGuvvXb+f7XVVktPPfVU25YOAAAAajFkn3DCCWn27Nnpl7/8ZZ7kbPjw4elb3/pW25YOAAAAOpCF7u/9yCOP5HC91VZb5fuf+cxnctD+8MMP89hsAAAA6OwWuiV74sSJaY011mi8P2TIkNSzZ8+8HgAAAGhFS3ZdXV2aNm1aDtYVMVtwQ0NDmjp1auO6vn37Fl9KAAAAqKWQHTOLr7nmmvOs23jjjRtvRxCfM2dO8aUEAACAWgrZDz74YNuWBAAAADpLyB45cmTblgQAAAA6y8RnAAAAwIIJ2QAAAFAQIRsAAAAKImQDAADAkp74bG4vvfRSevnll9PWW2+dr51duYRXNXzQUEqlLqWqPDfFKpdKqeGjUurWUEp1TgF1eNWuz+7d6lKvHtX5uQQAQOfU6pA9adKktM8++6Q///nPOVS/+OKLadVVV02HHHJIGjBgQLrooovSknb1vdPT1I8X+XwB7UhdKqVBPWakSTOmpbKOFh1eNetzcP/6dOSuSwvZAAAsUa1Opscee2zq2rVrmjBhQlpnnXUa10fwPu6446oSsidNKaWJ07Vk14K6VE6pTym90VBO5aROOzr1CQBAZ9PqkH3fffele++9Nw0fPrzZ+jXWWCO9+uqrRZYNAAAAOpRW99/88MMP09JLLz3P+smTJ6fu3bsXVS4AAACo/ZD9uc99Lt1www2N92NcdqlUShdccEHadtttiy4fAAAA1G538QjT2223XXrqqafSxx9/nE488cQ0fvz43JL96KOPtk0pAQAAoBZbstdff/30wgsvpK222irtvvvuufv4nnvumZ5++um02mqrtU0pAQAAoANYpOte9evXL5166qnFlwYAAAA6W8ieMWNGevbZZ9PEiRPzeOymdtttt6LKBgAAALUdsu+55570jW98I7333nvzbItJ0ObMmVNU2QAAAKC2x2QfffTR6Stf+Up66623cit200XABgAAoDNrdch+55130nHHHZeWW265tikRAAAAdJaQvffee6eHHnqobUoDAAAAnWlM9uWXX567i48dOzZtsMEGqVu3bs22f/e73y2yfAAAAFC7Ifvmm29O9913X+rRo0du0Y7JziritpANAABAZ9XqkB3Xxz7rrLPSSSedlOrrW93bHAAAAGpWq1Pyxx9/nPbZZx8BGwAAAObS6qR84IEHpl//+tetfRgAAADUvFZ3F49rYV9wwQXp3nvvTSNGjJhn4rOLL764yPIBAABA7YbscePGpY033jjf/te//tVsW9NJ0AAAAKCzaXXIfvDBB9umJAAAANDBmb0MAAAAlmRL9p577pnGjBmT+vbtm28vyG9/+9uiygYAAAC1F7L79evXON46bgMAAACLGLKvv/769IMf/CAdf/zx+TYAAACwGGOyzzrrrDRt2rSF3R0AAAA6nYUO2eVyuW1LAtBOzJo1Kx111FFpwIABaeDAgenoo49Os2fPbnHfyy+/PG266aape/fu6ctf/vI820eNGpU22GCD1LVr13TMMcc02zZz5sy0zTbbpMGDB+c5L9Zee+101VVXNW5/7LHH0g477JCWWWaZXI64/dxzz7XBKwYAoCqzi7fldbDPP//8fPy5/wgFWNLOOeec9Mgjj+RAO378+DR27Nh07rnntrjv0KFD02mnnZYOO+ywFrevvvrq6YILLki77bbbPNsieF922WXpzTffTFOnTs0TR0Yoj+cL77//fjr44IPTSy+9lN5+++202WabpR133DHNmTOn4FcMAEBVQvaaa66ZW1MWtCyKJ598Mv385z9PI0aMWKTHAxTpuuuuy8F5yJAheTn11FPTtdde2+K+ccWFaMGO1uaWHHjggWmnnXbKLdVz69KlS2Mrd4gTjbFEqA7xuH333Tf1798/LbXUUumEE05Ir732Wnr11VcLfb0AACzhic+ajssuenbxGOe93377pauvvjq3HgFUU7Qev/7662mjjTZqXBe3J0yYkKZMmdImV1j40pe+lO6///7cfTxONu6xxx4t7vfwww/nwL3iiisWXgYAAKoQsqNFJcYOFunII49Mu+yyS9p+++0/MWTHH6CxVET3SoAiVSZ4jDBbUbnd0NDQJiH7rrvuyl3Ao4t6BOmePXvOs0+E/MMPPzxddNFFjS3fAAB04O7ibTEe+5Zbbkn/+Mc/0nnnnbdQ+8d+8QduZVlhhRUKLxPQufXu3Tv/H63WFZXbffr0abPnja7jI0eOTO+880760Y9+1GxbtKxvt912eTK2b37zm21WBgAAOvDs4jGu8Hvf+1666aabUo8ePRbqMSeffHL+Y7eyxDEAihQzig8fPjw988wzjevidpzUa4tW7JZmNn/xxRebBextt9027b///umUU05p8+cHAGDxLHSfw1KplIr097//PU2cODFtsskmjeuiu+Rf/vKXfEmc6BYeLTtNxSVyYgFoSzGj9+jRo9OWW26Z78fM4oceemiL+8alvSpL/JycMWNGqq+vzxOVVUJz/GyrLLE9frZ169Yth/d33303bbXVVvn+vffem088xhwVIWYdj4C9zz77pDPOOGMJvgMAACyqqg3si66P48aNm+cP27hO7Pe///15AjbAkhKX0Zo0aVJaZ5118v2mrchHHHFE/v/KK6/M/8dcEjEpZEWMp45u3w899FC+H5f2+sUvftG4PU4ixozjY8aMycE8jvv888/nITkrr7xyuvjii9PXv/71vG+E7Zhp/JJLLslLxd13350+97nPLZH3AgCA1qkrF90PfDFss802eRbfpn9MLkhMfBbdNw+/8NU0cfq8l8eh46lL5TSsz6T0RsOgVE5td112ar8+hw2qT2cd0DsN7NOqKxXyCaK1PnohxSSY0WJPx6Y+a486rS3qs/ao0/ajkiVjGHJLl1pdHGoWAAAACtKurgNT6V4JAAAAHZGWbAAAACiIkA0AAAAFEbIBAACgIEI2AAAAFETIBgAAgIII2QAAAFAQIRsAAAAKImQDAABAQYRsAAAAKIiQDQAAAAURsgEAAKAgQjYAAAAURMgGAACAggjZAAAAUBAhGwAAAAoiZAMAAEBBhGwAAAAoiJANAAAABRGyAQAAoCBCNgAAABREyAYAAICCCNkAAABQECEbAAAACiJkAwAAQEG6phowqF996tbT+YJaUJdKaVCP+pSWqktl54A6vGrW5+D+Pj8AACx5NRGyD9th6dS3f+9qF4MClEulNHny9DRwYO9UVy8kdXTVrs/u3eqW+HMCANC51UTI7t+nPi90fKVSSrM+qk8D+tSneiG7w1OfAAB0Nv7qBQAAgIII2QAAAFAQIRsAAAAKImQDAABAQYRsAAAAKIiQDQAAAAURsgEAAKAgQjYAAAAURMgGAACAggjZAAAAUBAhGwAAAAoiZAMAAEBBhGwAAAAoSNdUAz5oKKVSl1K1i0EByqVSaviolLo1lFKdU0AdWvdudannUtUuBQAALFk1EbKvvnd6mvpxTbyUTq8uldKgHjPSpBnTUllHiw5rcP/6dOSuSwvZAAB0OjWRTCdNKaWJ07Vk14K6VE6pTym90VBO5aROAQCAjkVTIQAAABREyAYAAICCCNkAAABQECEbAAAACiJkAwAAQEGEbAAAACiIkA0AAAAFEbIBAACgIEI2AAAAFETIBgAAgIII2QAAAFAQIRsAAAAKImQDAABAQYRsAAAAKIiQDQAAAAURsgEAAKAgQjYAAAAURMgGAACAggjZAAAAUBAhGwAAAAoiZAMAAEBBhGwAAAAoiJANAAAABRGyAQAAoCBCNtCuzJo1Kx111FFpwIABaeDAgenoo49Os2fPXqR9X3755bTTTjvl7cOGDUsXXHBBs8f//e9/T1tttVXq27dvWnXVVdMNN9zQuO2FF15Ie+yxR1p++eVT//7905ZbbpkeffTRNnzlAADUgqqG7PPOOy99+tOfTn369EmDBw9OX/7yl9Pzzz9fzSIBVXbOOeekRx55JD333HNp/PjxaezYsencc89t9b5z5sxJu+22W9pkk03SxIkT05///Od0+eWXp1/96ld5+wcffJB23nnntP/++6f3338/3XzzzTmkx/Eq2yOgjxs3Lk2aNCkddNBBef/33ntvCb4bAAB0NFUN2Q8//HA68sgj02OPPZb+9Kc/5VapL37xi+nDDz+sZrGAKrruuuvSaaedloYMGZKXU089NV177bWt3jdO2MVyxhlnpG7duqW11lorHXLIIemqq67K2//617+m7t27pyOOOCJ16dIlbb755mnPPfdM11xzTd6+2WabpW9961tp2WWXzdsPO+yw/P+zzz67BN8NAAA6mq7VfPJ77rmn2f0xY8bkFu3owrn11ltXrVxAdUSL8uuvv5422mijxnVxe8KECWnKlCmpX79+C71vqVTK68rlcuP2WFcJyXG76bbKumi5bkmsb2hoSOuuu26BrxgAgFrTrsZkxx/GIcZWtmTmzJlp6tSpzRagdkybNi3/H2OgKyq3I+C2Zt9ouV555ZXT6aefnn92RHfyaPmu/NzYYostcq+Z6EIevWhivPXvfve7Fn+uRNfxfffdN51yyil5jDYAALT7kB0tSMccc0yeXGj99def7xjuaMmqLCussMISLyfQdnr37t3shFvT2zF3Q2v2jS7id9xxR3r66afzpGf77bdfOvjgg9OgQYPyPvH/nXfemcdoR3A+6aSTmm1veswddtghT5B25plnttlrBwCgNrSbkB1js//1r3+lW265Zb77nHzyyfkP3sry2muvLdEyAm0rZgEfPnx4euaZZxrXxe04oda0q/jC7rveeuul++67L09WFtuiRXvkyJGN+8dJvRibHRObxaRpb7/9drPtlYAdx7nyyitTXV1dG78DAAB0dFUdk10Rl+C566670l/+8pf8R/P8xCRFsQC1K1qTR48enQNwiNnCDz300EXaN8Zfr7baarlVO37GRHfxBx54oHF7tHLHGOvoSfPLX/4yPfTQQ3ldiG7jO+64Y1pzzTXzZGgCNgAA7b4lOyYdioAd4yDj8jqrrLJKNYsDtAOjRo3K46XXWWedvESAjrHQIWYCj2Vh9g233nprWnHFFXOr94UXXphuv/32NGLEiMbtP/nJT9Jyyy2XZxC/7bbb8s+hoUOH5m3xcymufPC///u/+Tra0T09lptuummJvh8AAHQsdeW5p9ddgr7zne/k8ZAxbjImKaqIrp49e/b8xMdHS1Pse/iFr6aJ0/u2cWlZEupSOQ3rMym90TAolZOWw45q2KD6dNYBvVP/XilfozquGlBf325Gp7AYotVfndYO9Vl71GltUZ+1R522H5UsGcMDo0GlSFWt2SuuuCK/qG222abxOrex/PrXv65msQAAAKDjjcmuYiM6AAAAFE4fBQAAACiIkA0AAAAFEbIBAACgIEI2AAAAFETIBgAAgIII2QAAAFAQIRsAAAAKImQDAABAQYRsAAAAKIiQDQAAAAURsgEAAKAgQjYAAAAURMgGAACAggjZAAAAUBAhGwAAAAoiZAMAAEBBhGwAAAAoiJANAAAABRGyAQAAoCBCNgAAABREyAYAAICCCNkAAABQECEbAAAACiJkAwAAQEG6phowqF996tbT+YJaUJdKaVCP+pSWqktl54A6rMH91R0AAJ1TTYTsw3ZYOvXt37vaxaAA5VIpTZ48PQ0c2DvV1QtqHVn3bnVRo9UuBgAALFE1EbL796nPCx1fqZTSrI/q04A+9aleyO7wSiUhGwCAzkWKAQAAgIII2QAAAFAQIRsAAAAKImQDAABAQYRsAAAAKIiQDQAAAAURsgEAAKAgQjYAAAAURMgGAACAggjZAAAAUBAhGwAAAAoiZAMAAEBBhGwAAAAoiJANAAAABemaasAHDaVU6lLKt7t3q0u9etRVu0gAAAB0QjURsq++d3qa+nHXNLh/fTpy16WFbAAAAKqiJkL2pCmlNHH6/9eSDQAAANViTDYAAAAURMgGAACAggjZAAAAUBAhGwAAAAoiZAMAAEBBhGwAAAAoiJANAAAABRGyAQAAoCBCNgAAABREyAYAAICCCNkAAABQECEbAAAACiJkAwAAQEGEbAAAACiIkA0AAAAFEbIBAACgIEI2AAAAFETIBgAAgIII2QAAAFAQIRsAAAAKImQDAABAQYRsAAAAKIiQDQAAAAURslNKs2bNSkcddVQaMGBAGjhwYDr66KPT7NmzF2nfT9p++eWXp0033TR17949ffnLX27xOa655pq01lprpV69eqWVV1453XHHHW3wqgEAAKipkH3FFVekESNGpL59++Zliy22SHffffcSL8c555yTHnnkkfTcc8+l8ePHp7Fjx6Zzzz13kfb9pO1Dhw5Np512WjrssMNaPP5VV12VLrroonTLLbekadOmpccffzxtsMEGbfCqAQAAqKmQPXz48HT++eenv//97+mpp55Kn//859Puu++ew+mSdN111+XgO2TIkLyceuqp6dprr12kfT9p+5577plbsJdZZpl5jj1nzpx0+umnp0svvTRtvPHGqa6uLi233HJp1VVXbaNXDgAAQM2E7F133TXtvPPOaY011khrrrlmGj16dOrdu3d67LHHllgZ3n///fT666+njTbaqHFd3J4wYUKaMmVKq/ZtzbFa8vzzz6d33nkn/eMf/8jdxOMkRLR4T506tbDXCwAAQCcYkx2tuNFF+sMPP8zdxlsyc+bMHDibLosrumSH/v37N66r3G5oaGjVvq05VksmT56c/7///vtzy/4zzzyTXnnllXTssccuxisEAACg04TscePG5dbrmAjsiCOOSL/73e/Suuuu2+K+5513XurXr1/jssIKKyz288dzh6YtzZXbffr0adW+rTnWgspy8skn5+7kscTtO++8czFeIQAAAJ0mZMcs2tFiGxN8ffvb304HHnhgnjSsJRE4I7RWltdee22xnz9mAY9u2VGGirgdAT6CfGv2bc2x5vde9OjRY7FfEwAAANXRNVXZUkstlVZfffV8+1Of+lR68skn88RfP//5z+fZN1q7YynawQcfnMeDb7nllvl+zAZ+6KGH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iivyH4AxRrShoaGAUtPWdfr9738/nyCp/NHo92ht1Wfwe7Tj1emUKVNS796901JLLZV22WWXdNlll6UvfOELeZvvaG3VZ/AdrQ1dq10AaI1999238XZMjDZixIi02mqr5TN+2223XVXLBqT8h0BFfD8jdK+00krp1ltvTYccckhVy8aCnX/++emWW27JP09jAh9qsz79Hu14+vTpk5555pk0bdq0HLyOO+643FNom222qXbRaIP69B2tDe2mJXuZZZZJXbp0Se+8806z9XF/+eWXb/ExsX5B+1f+b80xab/12ZL4oRTP9dJLLxVUcoqs02ock/b13scMqmuuuabvaDuv0wsvvDCHsvvuuy//QVfh92ht1WdL/B5t/3UaXZBXX331PBP1//zP/6S99947nXfeeXmb72ht1WdLfEc7pnYTsqPLxKc+9al8RqeiVCrl+1tssUWLj4n1TfcPf/rTnxr3X2WVVfKHvOk+U6dOTY8//vh8j0n7rc+WvP7663mcSly2gvZXp9U4Ju3rvY8z9S+//LLvaDuu0wsuuCCdffbZuYt/XFqmKb9Ha6s+W+L3aMf7uRuPmTlzZr7tO1pb9dkS39EOqtzOpsGP2RDHjBmTp7b/1re+lafBf/vtt/P2Aw44oHzSSSc1u+RT165dyxdeeGG+VEXMatvSJbziGHfccUf52WefzbP1uaxBx6zPhoaGfPmgv/3tb+VXXnmlfP/995c32WST8hprrFGeMWNG1V5nZ9LaOp05c2a+lEwsQ4YMyfUXt1988cWFPiYdqz7/53/+p/zQQw/l72h8p7fffvvyMsssU544cWJVXmNn09o6jd+RcfmZ3/zmN80uFxM/b5vu4/dobdSn36Mdr07PPffc8n333Vd++eWX8/7xN1L8rXT11Vc37uM7Wjv16TtaO9pVyA6XXXZZecUVV8y/JGJa/Mcee6xx28iRI/O09k3deuut5TXXXDPvH9dm/cMf/tBse1zaYNSoUeXlllsufwm222678vPPP7/EXk9nV2R9Tp8+vfzFL36xvOyyy+bwHZcQiusRCmPtt07jF0Scy5t7if0W9ph0rPrcZ599cgCP4w0bNizfj2uB0j7rNH6OtlSncZKzwu/R2qlPv0c7Xp2eeuqp5dVXX73co0eP8oABA8pbbLFFDnZN+Y7WTn36jtaOuvin2q3pAAAAUAvazZhsAAAA6OiEbAAAACiIkA0AAAAFEbIBAACgIEI2AAAAFETIBgAAgIII2QAAAFAQIRsAAAAKImQDQI156KGHUl1dXfrggw8W+jFnnnlm2mijjdq0XADQGQjZAFBFV155ZerTp0+aPXt247pp06albt26pW222abF8Pzyyy8v8Jif/exn01tvvZX69etXaFmjPMccc0yhxwSAWiNkA0AVbbvttjlUP/XUU43rxo4dm5Zffvn0+OOPpxkzZjSuf/DBB9OKK66YVltttQUec6mllsqPj0AOACxZQjYAVNFaa62VhgwZklupK+L27rvvnlZZZZX02GOPNVsfobxUKqXzzjsvb+/Zs2facMMN029+85sFdhe/+uqr0worrJCWXnrptMcee6SLL7449e/ff57y3HjjjWnllVfOreD77rtvamhoyOsPOuig9PDDD6dLL700HzuW//u//2vDdwYAOiYhGwCqLIJztFJXxO3omj1y5MjG9R999FFu2Y59I2DfcMMNuav5+PHj07HHHpv233//HIJb8uijj6Yjjjgife9730vPPPNM+sIXvpBGjx49z37RDf32229Pd911V17ieOeff37eFuF6iy22SIcddljuih5LhHYAoLmuc90HAJawCM4x1jnGZUeYfvrpp3PAnjVrVg7S4W9/+1uaOXNmDt/rrrtuuv/++3PoDauuump65JFH0s9//vP8uLlddtllaaeddkrHH398vr/mmmumv/71rzlINxUt5GPGjMljxMMBBxyQHnjggRzIo2U7uqFHS3h0RQcAWiZkA0CVRXD+8MMP05NPPpnef//9HIKXXXbZHJgPPvjgPC47uoBHmI7x29OnT8+t0U19/PHHaeONN27x+M8//3zuIt7UZpttNk/Ijm7ilYAdohv7xIkTC32tAFDrhGwAqLLVV189DR8+PHcNj5BdaY0eOnRo7pIdrc6x7fOf/3wO2eEPf/hDGjZsWLPjdO/efbHKETOaNxXjrqN1GwBYeEI2ALSTLuPRWh0h+4QTTmhcv/XWW6e77747PfHEE+nb3/527ioeYXrChAktdg2f3+Rq0Ure1Nz3F0Z0F58zZ06rHwcAnYmQDQDtJGQfeeSReRx20/Act4866qjcHTz2ie7cMbY6JjuLVuatttoqTZkyJU9u1rdv33TggQfOc+yjjz46h/WYUXzXXXdNf/7zn3Nwb+0lvqI7eUy+FrOK9+7dOw0cODDV15tDFQCa8psRANqBCNAx6Vl0HV9uueWahey4jFblUl/h7LPPTqNGjcqzjK+zzjppxx13zN3H45JeLdlyyy3zBGoRsuNyX/fcc08O6T169GhVGSPcd+nSJbemx5jxaE0HAJqrK5fL5bnWAQA1Li7F9Z///CeNHTu22kUBgJqiuzgAdAIXXnhhnpG8V69euav4L37xi/Szn/2s2sUCgJqjJRsAOoGvfvWreWK16HoelwKLcdpHHHFEtYsFADVHyAYAAICCmPgMAAAACiJkAwAAQEGEbAAAACiIkA0AAAAFEbIBAACgIEI2AAAAFETIBgAAgIII2QAAAFAQIRsAAABSMf4f3QGoTys4VpEAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Time weights: which pre-periods does SDiD lean on?\n", "time_weights = results.get_time_weights_df()\n", @@ -310,10 +717,30 @@ }, { "cell_type": "code", + "execution_count": 11, "id": "t18-cell-024", - "execution_count": null, - "metadata": {}, - "outputs": [], + "metadata": { + "execution": { + "iopub.execute_input": "2026-04-22T01:35:51.380969Z", + "iopub.status.busy": "2026-04-22T01:35:51.380878Z", + "iopub.status.idle": "2026-04-22T01:35:51.382633Z", + "shell.execute_reply": "2026-04-22T01:35:51.382397Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Pre-treatment fit RMSE: 33.71\n", + "\n", + "The library auto-computes a noise level from the data and warns if the\n", + "pre-fit RMSE exceeds the standard deviation of treated pre-period outcomes.\n", + "Our fit is well within that envelope, so the synthetic control is tracking\n", + "the treated pre-trend closely - good fit means a trustworthy post-period effect.\n" + ] + } + ], "source": [ "print(f\"Pre-treatment fit RMSE: {results.pre_treatment_fit:.2f}\")\n", "print()\n", @@ -325,10 +752,28 @@ }, { "cell_type": "code", + "execution_count": 12, "id": "t18-cell-025", - "execution_count": null, - "metadata": {}, - "outputs": [], + "metadata": { + "execution": { + "iopub.execute_input": "2026-04-22T01:35:51.383625Z", + "iopub.status.busy": "2026-04-22T01:35:51.383550Z", + "iopub.status.idle": "2026-04-22T01:35:51.437856Z", + "shell.execute_reply": "2026-04-22T01:35:51.437576Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# Treated mean vs synthetic counterfactual over time.\n", "# We construct the synthetic by re-weighting control markets with the unit\n", @@ -373,10 +818,25 @@ }, { "cell_type": "code", + "execution_count": 13, "id": "t18-cell-026", - "execution_count": null, - "metadata": {}, - "outputs": [], + "metadata": { + "execution": { + "iopub.execute_input": "2026-04-22T01:35:51.439084Z", + "iopub.status.busy": "2026-04-22T01:35:51.438979Z", + "iopub.status.idle": "2026-04-22T01:35:51.441226Z", + "shell.execute_reply": "2026-04-22T01:35:51.441007Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "All drift guards passed.\n" + ] + } + ], "source": [ "# Drift guards: tolerance-based asserts that lock the numbers quoted in the\n", "# Section 3 narrative and the Section 6 stakeholder template. nbmake will fail\n", @@ -418,10 +878,87 @@ }, { "cell_type": "code", + "execution_count": 14, "id": "t18-cell-029", - "execution_count": null, - "metadata": {}, - "outputs": [], + "metadata": { + "execution": { + "iopub.execute_input": "2026-04-22T01:35:51.442285Z", + "iopub.status.busy": "2026-04-22T01:35:51.442190Z", + "iopub.status.idle": "2026-04-22T01:35:51.925944Z", + "shell.execute_reply": "2026-04-22T01:35:51.925669Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/igerber/diff-diff-sdid-bootstrap/diff_diff/utils.py:1455: UserWarning: Frank-Wolfe SC weight solver did not converge in 100 iterations (tol=1.543597599298811e-05). Results may be inaccurate.\n", + " return _sc_weight_fw_numpy(Y, zeta, intercept, init_weights, min_decrease, max_iter)\n", + "/Users/igerber/diff-diff-sdid-bootstrap/diff_diff/utils.py:1455: UserWarning: Frank-Wolfe SC weight solver did not converge in 10000 iterations (tol=1.543597599298811e-05). Results may be inaccurate.\n", + " return _sc_weight_fw_numpy(Y, zeta, intercept, init_weights, min_decrease, max_iter)\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
MethodATTSECI_lowCI_high
0Placebo (default)311.857.31297.52326.19
1Bootstrap311.854.26303.50320.21
\n", + "
" + ], + "text/plain": [ + " Method ATT SE CI_low CI_high\n", + "0 Placebo (default) 311.85 7.31 297.52 326.19\n", + "1 Bootstrap 311.85 4.26 303.50 320.21" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Refit with bootstrap SE for comparison. Same n_bootstrap and seed.\n", "model_boot = SyntheticDiD(variance_method=\"bootstrap\", n_bootstrap=100, seed=42)\n", @@ -446,10 +983,78 @@ }, { "cell_type": "code", + "execution_count": 15, "id": "t18-cell-030", - "execution_count": null, - "metadata": {}, - "outputs": [], + "metadata": { + "execution": { + "iopub.execute_input": "2026-04-22T01:35:51.927040Z", + "iopub.status.busy": "2026-04-22T01:35:51.926952Z", + "iopub.status.idle": "2026-04-22T01:35:51.928720Z", + "shell.execute_reply": "2026-04-22T01:35:51.928495Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "============================================================\n", + "Practitioner Guidance — SyntheticDiD\n", + "Baker et al. (2025) 8-Step Workflow\n", + "============================================================\n", + "\n", + "Recommended next steps (7 remaining):\n", + "\n", + " * [HIGH] Step 1: Define target parameter\n", + " Why: State explicitly what causal effect you are estimating (ATT, ATT(g,t), weighted/unweighted) and what policy question it answers.\n", + " >>> # What is the target parameter? ATT? Weighted or unweighted?\n", + "\n", + " * [HIGH] Step 2: State identification assumptions\n", + " Why: Name the parallel trends variant you are invoking (unconditional, conditional, PT-GT-NYT, etc.), the no-anticipation assumption, and any overlap conditions.\n", + " >>> # Which PT variant? No-anticipation? Overlap?\n", + "\n", + " * [HIGH] Step 6: Check pre-treatment fit and weight concentration\n", + " Why: Synthetic DiD relies on pre-treatment fit to construct weights. Poor fit or highly concentrated unit weights suggest the synthetic control may not approximate the counterfactual well.\n", + " >>> print(f'Pre-treatment fit (RMSE): {results.pre_treatment_fit:.4f}')\n", + " >>> concentration = results.get_weight_concentration()\n", + " >>> print(f\"Effective N: {concentration['effective_n']:.1f}\")\n", + " >>> print(f\"Top-5 weight share: {concentration['top_k_share']:.2%}\")\n", + "\n", + " - [MEDIUM] Step 6: In-time placebo\n", + " Why: Re-estimate on shifted fake treatment dates in the pre-period. A credible design yields near-zero placebo ATTs — departures signal that something is being picked up pre-treatment, weakening the causal interpretation.\n", + " >>> placebo_df = results.in_time_placebo()\n", + " >>> print(placebo_df)\n", + "\n", + " - [MEDIUM] Step 6: Leave-one-out influence (jackknife)\n", + " Why: If the estimate is driven by a single unit, robustness is weak. Fit with variance_method='jackknife' and inspect which units move the ATT the most.\n", + " >>> # Requires variance_method='jackknife' AND enough support for LOO\n", + " >>> # (n_treated >= 2 and >= 2 effective-weight controls).\n", + " >>> if getattr(results, '_loo_unit_ids', None) is not None:\n", + " >>> loo_df = results.get_loo_effects_df()\n", + " >>> print(loo_df.head(10))\n", + " >>> else:\n", + " >>> print('LOO not available - re-fit with '\n", + " >>> 'variance_method=\"jackknife\" and ensure >=2 treated units '\n", + " >>> 'with positive effective support.')\n", + "\n", + " - [LOW] Step 6: Regularization sensitivity (zeta_omega)\n", + " Why: The unit-weight regularization is auto-selected from data. Show whether the ATT moves materially across a grid of values to gauge robustness to this choice.\n", + " >>> sens_df = results.sensitivity_to_zeta_omega()\n", + " >>> print(sens_df)\n", + "\n", + " * [HIGH] Step 8: Compare with staggered estimators (CS, SA)\n", + " Why: SyntheticDiD is for few treated units; compare with staggered estimators if applicable. Use TROP only if factor confounding is suspected (different use case).\n", + " >>> from diff_diff import CallawaySantAnna\n", + " >>> cs = CallawaySantAnna()\n", + " >>> cs_result = cs.fit(data, ...)\n", + " >>> print(f'SDiD ATT: {results.att:.4f}, CS ATT: {cs_result.overall_att:.4f}')\n", + "\n", + "============================================================\n", + "\n" + ] + } + ], "source": [ "# Automated diagnostic checklist following Baker et al. (2025).\n", "# practitioner_next_steps prints a formatted summary AND returns a dict;\n", @@ -462,7 +1067,7 @@ "id": "t18-cell-031", "metadata": {}, "source": [ - "**Why no parallel-trends test?** The Baker et al. workflow includes an explicit parallel-trends check (Step 3), but `practitioner_next_steps` skips it for `SyntheticDiD`. The reason isn't that SDiD has no identifying assumptions \u2014 it's that the relevant diagnostic is different. Basic DiD requires the *unweighted* control units to be on a parallel trend with the treated, an assumption that's notoriously fragile in geo-experiments where markets respond to different macro forces. SDiD instead reweights both units and time periods so the synthetic control's pre-trend matches the treated pre-trend by construction, then estimates the effect on those weighted comparisons. Identification still rests on assumptions (parallel trends in the *weighted* averages, no anticipation, design plausibility), but the empirical diagnostic shifts from \"are the raw control units parallel?\" to \"is the synthetic match tight enough?\" \u2014 which is exactly the pre-treatment fit RMSE we inspected in Section 4. This is what Arkhangelsky et al. (2021) call making the DiD strategy \"more plausible\" by automating the kind of pre-period adjustment that practitioners already do informally with covariates and period selection." + "**Why no parallel-trends test?** The Baker et al. workflow includes an explicit parallel-trends check (Step 3), but `practitioner_next_steps` skips it for `SyntheticDiD`. The reason isn't that SDiD has no identifying assumptions — it's that the relevant diagnostic is different. Basic DiD requires the *unweighted* control units to be on a parallel trend with the treated, an assumption that's notoriously fragile in geo-experiments where markets respond to different macro forces. SDiD instead reweights both units and time periods so the synthetic control's pre-trend matches the treated pre-trend by construction, then estimates the effect on those weighted comparisons. Identification still rests on assumptions (parallel trends in the *weighted* averages, no anticipation, design plausibility), but the empirical diagnostic shifts from \"are the raw control units parallel?\" to \"is the synthetic match tight enough?\" — which is exactly the pre-treatment fit RMSE we inspected in Section 4. This is what Arkhangelsky et al. (2021) call making the DiD strategy \"more plausible\" by automating the kind of pre-period adjustment that practitioners already do informally with covariates and period selection." ] }, { @@ -484,13 +1089,13 @@ ">\n", "> **Sample size and design.** 5 pilot markets, 75 control markets. 12 weeks of weekly data: 6 weeks pre-launch, 6 weeks post-launch. Outcome: weekly conversions per market. Method: Synthetic Difference-in-Differences (Arkhangelsky et al. 2021), the canonical generalization of synthetic control to multi-treated panel settings. The 75 control markets serve as the donor pool that SDiD reweights to construct a counterfactual specific to the 5 pilot markets.\n", ">\n", - "> **Validity evidence.** The synthetic control's pre-treatment fit RMSE is well below the standard deviation of treated pre-period outcomes (the library would warn otherwise), which means the weighted blend of donor markets tracks the treated pre-trend closely. The placebo standard error matches the published Arkhangelsky et al. (2021) method, and we cross-checked with bootstrap inference (Section 5) \u2014 the two methods agree. The estimate is statistically significant at the p < 0.01 level, and the 95% CI cleanly covers the true treatment effect on the synthetic data we used to demonstrate the workflow.\n", + "> **Validity evidence.** The synthetic control's pre-treatment fit RMSE is well below the standard deviation of treated pre-period outcomes (the library would warn otherwise), which means the weighted blend of donor markets tracks the treated pre-trend closely. The placebo standard error matches the published Arkhangelsky et al. (2021) method, and we cross-checked with bootstrap inference (Section 5) — the two methods agree. The estimate is statistically significant at the p < 0.01 level, and the 95% CI cleanly covers the true treatment effect on the synthetic data we used to demonstrate the workflow.\n", ">\n", "> **What \"312 conversions per market per week\" means in business terms.** Across 5 pilot markets and 6 weeks, that's roughly 9,400 incremental conversions attributable to the campaign in this small pilot. Translate to your own revenue-per-conversion to compare against the pilot's campaign spend, then use the per-market lift estimate to project what a broader rollout would deliver.\n", ">\n", "> **Practical significance caveat.** A 21% lift is large by marketing benchmarks, but whether the pilot justifies a broader rollout is a business judgment, not a statistical one. The statistics tell you the lift exists in these 5 markets; the business case tells you whether it's worth scaling, and a wider rollout will face its own market-specific surprises that 5 markets can't reveal.\n", "\n", - "Adapt this template for your own campaign by swapping in your numbers from `results.summary()`, your own market counts, your own pre-period diagnostics, and your own conversion-to-revenue translation. The pattern \u2014 **headline \u2192 sample size and design \u2192 validity evidence \u2192 business interpretation \u2192 practical significance** \u2014 is the part to keep." + "Adapt this template for your own campaign by swapping in your numbers from `results.summary()`, your own market counts, your own pre-period diagnostics, and your own conversion-to-revenue translation. The pattern — **headline → sample size and design → validity evidence → business interpretation → practical significance** — is the part to keep." ] } ], @@ -505,7 +1110,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9" + "version": "3.9.6" } }, "nbformat": 4, diff --git a/tests/data/sdid_bootstrap_indices_r.json b/tests/data/sdid_bootstrap_indices_r.json new file mode 100644 index 00000000..b8449773 --- /dev/null +++ b/tests/data/sdid_bootstrap_indices_r.json @@ -0,0 +1,216 @@ +{ + "indices": [ + [8, 3, 1, 10, 11, 15, 22, 8, 4, 4, 22, 18, 13, 5, 4, 2, 18, 3, 23, 17, 21, 18, 6], + [6, 2, 20, 3, 22, 21, 2, 23, 6, 10, 8, 5, 1, 17, 7, 4, 13, 10, 9, 12, 20, 9, 11], + [3, 16, 5, 14, 5, 22, 2, 18, 17, 18, 5, 14, 8, 23, 8, 21, 4, 4, 7, 10, 18, 13, 21], + [22, 19, 16, 22, 17, 12, 9, 21, 11, 16, 8, 23, 6, 1, 13, 14, 5, 9, 23, 16, 11, 10, 10], + [1, 19, 17, 14, 14, 15, 6, 15, 11, 5, 16, 17, 22, 17, 18, 2, 6, 22, 6, 6, 20, 15, 2], + [10, 23, 12, 9, 1, 2, 2, 11, 14, 2, 2, 10, 22, 5, 10, 17, 17, 5, 3, 14, 14, 1, 5], + [3, 22, 13, 11, 20, 17, 20, 4, 20, 11, 17, 9, 17, 13, 17, 20, 1, 17, 1, 2, 8, 16, 3], + [5, 13, 12, 1, 19, 5, 15, 6, 23, 16, 10, 7, 9, 9, 3, 18, 21, 15, 15, 20, 16, 22, 1], + [6, 11, 9, 22, 22, 22, 20, 23, 22, 13, 5, 11, 15, 21, 2, 6, 1, 14, 16, 17, 11, 18, 23], + [2, 10, 4, 20, 15, 7, 17, 5, 22, 20, 18, 9, 11, 6, 10, 9, 23, 19, 9, 11, 19, 21, 4], + [10, 22, 22, 17, 21, 12, 21, 6, 15, 9, 10, 18, 23, 7, 14, 12, 21, 19, 10, 5, 2, 3, 2], + [14, 16, 4, 21, 6, 20, 21, 20, 11, 1, 14, 1, 4, 13, 6, 22, 12, 7, 12, 5, 18, 7, 13], + [22, 2, 3, 1, 15, 20, 11, 9, 22, 10, 7, 19, 18, 12, 10, 9, 19, 15, 14, 23, 3, 22, 20], + [10, 2, 23, 17, 18, 19, 14, 17, 10, 5, 13, 18, 19, 19, 10, 16, 2, 4, 7, 1, 14, 20, 22], + [19, 12, 19, 6, 12, 10, 7, 19, 2, 6, 9, 11, 6, 5, 14, 10, 15, 1, 9, 10, 17, 12, 22], + [1, 11, 4, 3, 21, 6, 5, 10, 20, 2, 23, 4, 20, 9, 14, 14, 3, 18, 10, 1, 8, 20, 21], + [5, 6, 14, 4, 9, 8, 23, 16, 12, 10, 14, 23, 11, 23, 22, 2, 16, 14, 15, 17, 6, 23, 19], + [10, 13, 6, 1, 11, 13, 10, 13, 15, 17, 15, 8, 4, 6, 10, 20, 16, 12, 16, 19, 3, 21, 7], + [3, 10, 21, 10, 7, 19, 13, 10, 23, 14, 11, 13, 3, 10, 19, 2, 7, 20, 21, 21, 11, 11, 1], + [21, 6, 23, 10, 9, 12, 13, 18, 15, 21, 1, 11, 8, 13, 14, 2, 6, 13, 3, 13, 16, 19, 16], + [13, 13, 8, 23, 13, 6, 6, 8, 5, 23, 9, 10, 11, 23, 1, 22, 15, 4, 7, 11, 10, 8, 3], + [13, 20, 23, 16, 8, 3, 9, 16, 11, 13, 7, 18, 7, 21, 5, 20, 18, 7, 17, 3, 16, 8, 19], + [18, 10, 15, 12, 3, 20, 16, 22, 10, 2, 8, 1, 13, 7, 11, 11, 13, 5, 2, 15, 5, 14, 5], + [17, 18, 22, 17, 18, 7, 13, 2, 12, 3, 20, 8, 20, 23, 14, 1, 14, 21, 18, 2, 5, 10, 12], + [3, 18, 18, 18, 15, 1, 8, 19, 8, 20, 19, 2, 21, 20, 19, 11, 15, 18, 8, 10, 2, 22, 4], + [23, 17, 12, 23, 20, 19, 7, 9, 19, 21, 11, 11, 12, 17, 2, 20, 7, 17, 4, 13, 19, 1, 17], + [4, 2, 21, 8, 3, 13, 2, 23, 4, 9, 11, 10, 14, 1, 1, 14, 20, 21, 11, 9, 19, 5, 21], + [2, 9, 3, 12, 2, 16, 18, 22, 17, 20, 8, 8, 19, 15, 6, 3, 1, 15, 4, 9, 1, 11, 6], + [20, 14, 9, 6, 12, 22, 17, 11, 9, 18, 11, 19, 1, 11, 17, 17, 8, 11, 18, 1, 23, 6, 2], + [14, 5, 1, 23, 18, 4, 15, 7, 14, 10, 3, 7, 5, 6, 5, 21, 18, 9, 3, 3, 9, 13, 7], + [10, 17, 2, 20, 17, 12, 6, 22, 19, 10, 16, 1, 10, 7, 2, 4, 20, 8, 15, 14, 17, 5, 17], + [17, 16, 20, 6, 3, 14, 9, 12, 23, 9, 14, 3, 4, 3, 7, 1, 5, 22, 4, 8, 12, 12, 12], + [15, 9, 3, 3, 9, 7, 23, 12, 13, 17, 15, 15, 20, 3, 13, 19, 2, 22, 5, 9, 18, 1, 4], + [18, 5, 3, 10, 7, 14, 10, 23, 10, 21, 9, 7, 6, 20, 8, 5, 19, 20, 11, 17, 7, 10, 12], + [22, 4, 20, 3, 1, 16, 5, 19, 17, 11, 1, 1, 18, 3, 5, 7, 6, 16, 13, 1, 19, 18, 10], + [14, 10, 23, 2, 16, 9, 17, 2, 15, 23, 8, 3, 2, 17, 22, 3, 11, 5, 22, 1, 3, 14, 6], + [16, 10, 8, 23, 22, 9, 3, 2, 6, 2, 16, 9, 5, 17, 12, 20, 4, 6, 2, 3, 18, 17, 18], + [11, 8, 7, 21, 20, 22, 23, 1, 19, 16, 8, 20, 18, 21, 10, 10, 19, 22, 13, 23, 12, 8, 21], + [6, 22, 7, 7, 5, 1, 19, 11, 2, 18, 23, 10, 6, 21, 4, 12, 21, 6, 17, 14, 1, 11, 20], + [19, 5, 3, 13, 19, 21, 18, 20, 14, 2, 1, 22, 22, 14, 7, 15, 23, 6, 12, 20, 11, 10, 17], + [10, 19, 10, 9, 22, 8, 19, 7, 23, 16, 8, 23, 21, 16, 21, 11, 10, 20, 18, 16, 8, 21, 5], + [23, 18, 15, 2, 23, 1, 10, 22, 9, 1, 17, 13, 6, 12, 19, 1, 11, 16, 14, 19, 21, 23, 5], + [8, 21, 19, 16, 12, 15, 7, 1, 15, 8, 6, 11, 2, 1, 20, 5, 5, 11, 17, 17, 17, 23, 19], + [13, 18, 10, 3, 17, 21, 10, 1, 11, 13, 14, 13, 7, 8, 4, 14, 5, 20, 19, 23, 14, 19, 15], + [16, 3, 2, 6, 7, 10, 13, 10, 10, 3, 20, 17, 18, 17, 10, 10, 8, 23, 13, 8, 20, 5, 17], + [9, 8, 19, 13, 1, 12, 1, 6, 19, 13, 19, 5, 23, 22, 13, 14, 14, 22, 20, 12, 20, 8, 11], + [14, 2, 14, 10, 2, 21, 10, 3, 2, 10, 15, 19, 12, 18, 22, 18, 11, 9, 8, 9, 8, 3, 8], + [10, 10, 2, 11, 21, 10, 16, 20, 2, 10, 22, 14, 19, 4, 16, 15, 23, 11, 19, 10, 2, 5, 19], + [23, 11, 22, 18, 20, 11, 10, 5, 13, 21, 10, 17, 23, 3, 14, 10, 2, 22, 5, 12, 15, 6, 1], + [23, 13, 9, 14, 12, 18, 7, 16, 12, 12, 6, 19, 18, 2, 8, 21, 1, 15, 18, 14, 1, 6, 19], + [4, 21, 1, 1, 1, 15, 18, 21, 11, 1, 10, 20, 9, 5, 6, 11, 5, 19, 6, 8, 16, 17, 12], + [10, 8, 8, 21, 7, 14, 15, 15, 11, 10, 19, 18, 15, 15, 19, 13, 20, 23, 23, 3, 10, 16, 21], + [13, 18, 1, 9, 11, 5, 14, 3, 5, 11, 14, 16, 5, 8, 6, 21, 4, 5, 12, 18, 7, 13, 10], + [7, 3, 18, 21, 11, 5, 16, 13, 4, 19, 15, 8, 3, 23, 9, 23, 13, 5, 12, 4, 10, 3, 7], + [6, 17, 20, 10, 20, 12, 20, 3, 18, 3, 15, 12, 15, 3, 20, 23, 6, 10, 6, 11, 1, 10, 3], + [13, 5, 10, 16, 14, 1, 1, 11, 14, 1, 20, 3, 23, 3, 23, 17, 19, 19, 23, 22, 14, 1, 6], + [6, 14, 17, 20, 20, 8, 9, 4, 7, 4, 15, 7, 15, 16, 13, 17, 15, 1, 23, 19, 8, 16, 14], + [11, 10, 15, 18, 2, 8, 16, 23, 23, 5, 14, 7, 5, 12, 6, 21, 17, 21, 16, 23, 5, 6, 5], + [1, 22, 20, 21, 18, 21, 19, 1, 6, 11, 12, 3, 15, 14, 1, 17, 3, 1, 13, 2, 13, 11, 6], + [23, 6, 22, 7, 12, 22, 1, 19, 13, 3, 8, 22, 23, 15, 5, 11, 13, 15, 14, 19, 3, 1, 13], + [9, 17, 16, 17, 7, 12, 11, 12, 11, 5, 13, 21, 21, 21, 5, 19, 10, 15, 2, 13, 12, 4, 7], + [13, 19, 13, 16, 10, 1, 16, 9, 3, 1, 12, 7, 15, 9, 2, 14, 21, 12, 18, 12, 22, 11, 9], + [3, 9, 1, 14, 19, 12, 22, 14, 12, 20, 16, 23, 22, 4, 13, 5, 4, 20, 1, 13, 9, 9, 22], + [13, 13, 14, 9, 2, 9, 15, 12, 18, 12, 15, 16, 23, 12, 12, 8, 18, 11, 18, 13, 15, 7, 4], + [21, 21, 17, 4, 7, 23, 5, 18, 13, 12, 20, 14, 23, 6, 2, 23, 7, 14, 5, 8, 22, 18, 3], + [12, 19, 13, 16, 5, 5, 19, 8, 12, 2, 1, 19, 12, 15, 23, 1, 13, 2, 3, 1, 6, 9, 19], + [3, 1, 5, 12, 6, 6, 14, 20, 13, 19, 23, 2, 17, 15, 3, 3, 17, 4, 1, 8, 18, 17, 22], + [21, 12, 2, 18, 23, 20, 7, 6, 2, 3, 11, 6, 9, 3, 20, 23, 23, 2, 10, 12, 20, 12, 10], + [20, 4, 17, 15, 23, 12, 20, 23, 12, 2, 21, 6, 3, 12, 19, 17, 16, 14, 10, 8, 6, 15, 1], + [7, 13, 5, 17, 17, 19, 6, 6, 19, 10, 15, 17, 12, 2, 22, 2, 2, 4, 8, 5, 16, 19, 2], + [5, 19, 10, 5, 13, 3, 16, 12, 4, 4, 4, 17, 1, 18, 4, 8, 10, 10, 2, 21, 19, 3, 20], + [20, 3, 19, 18, 16, 13, 14, 15, 10, 5, 2, 14, 7, 16, 4, 23, 18, 9, 13, 1, 18, 12, 17], + [4, 12, 7, 2, 12, 7, 14, 17, 13, 8, 17, 2, 5, 4, 8, 7, 8, 15, 11, 22, 20, 11, 21], + [18, 12, 23, 19, 3, 12, 9, 7, 2, 10, 6, 20, 12, 5, 20, 17, 20, 6, 2, 3, 12, 16, 11], + [20, 9, 18, 7, 13, 10, 15, 12, 9, 14, 2, 1, 14, 22, 13, 15, 3, 19, 13, 17, 6, 6, 8], + [19, 12, 9, 23, 14, 6, 14, 2, 19, 23, 9, 8, 13, 11, 14, 6, 1, 19, 21, 8, 13, 11, 7], + [12, 9, 15, 9, 21, 11, 15, 11, 22, 21, 12, 14, 21, 9, 11, 1, 8, 11, 12, 11, 2, 3, 15], + [3, 9, 9, 20, 2, 6, 5, 17, 23, 23, 20, 9, 11, 23, 3, 21, 9, 9, 11, 2, 23, 8, 20], + [3, 17, 15, 16, 1, 3, 13, 12, 15, 21, 6, 17, 16, 3, 7, 21, 2, 7, 14, 13, 8, 18, 7], + [12, 23, 20, 10, 19, 20, 13, 15, 18, 15, 14, 15, 10, 10, 20, 21, 6, 6, 9, 6, 7, 4, 21], + [1, 3, 10, 2, 4, 21, 8, 2, 12, 12, 22, 16, 12, 15, 10, 19, 11, 7, 3, 22, 8, 7, 10], + [19, 19, 3, 23, 1, 20, 18, 3, 2, 16, 7, 1, 3, 4, 20, 5, 4, 6, 14, 14, 7, 2, 16], + [4, 17, 14, 13, 19, 5, 7, 11, 9, 21, 11, 12, 22, 4, 2, 22, 20, 16, 17, 18, 2, 3, 21], + [9, 14, 14, 2, 20, 1, 23, 12, 13, 5, 1, 8, 8, 23, 11, 3, 14, 21, 1, 23, 9, 7, 1], + [23, 23, 3, 1, 14, 1, 6, 12, 13, 5, 4, 12, 4, 23, 13, 11, 14, 22, 18, 10, 2, 21, 8], + [7, 17, 14, 3, 2, 22, 23, 3, 3, 18, 5, 22, 19, 18, 22, 10, 16, 17, 14, 21, 20, 2, 3], + [22, 22, 15, 14, 10, 3, 19, 6, 8, 1, 4, 1, 13, 2, 7, 15, 20, 5, 23, 5, 20, 1, 12], + [19, 21, 15, 11, 6, 14, 20, 10, 23, 20, 18, 9, 5, 18, 22, 3, 1, 22, 1, 9, 20, 7, 11], + [5, 21, 23, 12, 18, 20, 17, 18, 1, 23, 3, 8, 12, 10, 12, 22, 20, 15, 18, 7, 7, 2, 12], + [19, 19, 12, 23, 22, 14, 15, 12, 12, 9, 2, 21, 22, 23, 8, 17, 1, 15, 6, 5, 5, 13, 23], + [5, 14, 15, 5, 9, 19, 18, 20, 7, 11, 19, 12, 1, 9, 21, 17, 19, 18, 4, 23, 12, 19, 9], + [12, 10, 18, 23, 21, 7, 10, 6, 22, 3, 14, 9, 17, 17, 12, 4, 8, 9, 7, 5, 7, 13, 18], + [11, 16, 3, 1, 22, 14, 15, 9, 4, 7, 3, 15, 21, 7, 20, 4, 12, 9, 4, 16, 4, 7, 8], + [12, 5, 21, 14, 2, 10, 13, 21, 7, 20, 13, 9, 13, 21, 15, 6, 2, 14, 17, 20, 18, 15, 11], + [21, 11, 15, 6, 12, 22, 10, 3, 14, 17, 11, 9, 20, 21, 13, 14, 5, 6, 21, 8, 21, 9, 10], + [8, 1, 2, 13, 9, 23, 8, 23, 10, 13, 1, 13, 19, 10, 8, 16, 17, 4, 10, 9, 13, 19, 8], + [8, 18, 14, 16, 16, 16, 13, 19, 4, 21, 4, 10, 5, 12, 4, 11, 13, 21, 22, 2, 17, 14, 6], + [11, 1, 23, 10, 21, 12, 13, 23, 17, 23, 8, 21, 8, 17, 17, 20, 2, 23, 21, 23, 7, 13, 11], + [22, 16, 3, 7, 16, 11, 15, 20, 1, 18, 12, 5, 8, 20, 10, 18, 17, 17, 1, 14, 9, 19, 17], + [2, 12, 3, 16, 20, 12, 20, 19, 9, 2, 6, 18, 6, 13, 16, 19, 11, 22, 22, 8, 23, 20, 19], + [3, 23, 12, 21, 18, 21, 8, 2, 20, 23, 15, 16, 12, 13, 15, 10, 4, 5, 15, 10, 22, 23, 15], + [11, 13, 21, 22, 21, 9, 14, 8, 17, 7, 18, 20, 7, 3, 12, 6, 14, 4, 22, 21, 15, 13, 7], + [20, 7, 2, 18, 11, 20, 11, 10, 16, 7, 15, 23, 4, 12, 5, 13, 5, 20, 20, 14, 1, 10, 5], + [14, 3, 11, 11, 5, 4, 15, 16, 9, 4, 3, 1, 4, 21, 11, 19, 4, 18, 23, 3, 13, 4, 18], + [17, 23, 21, 12, 15, 19, 18, 3, 9, 20, 20, 13, 1, 1, 7, 4, 19, 22, 12, 12, 18, 9, 4], + [13, 14, 13, 14, 17, 7, 7, 7, 18, 12, 22, 2, 5, 11, 13, 4, 12, 22, 17, 10, 23, 16, 9], + [11, 11, 12, 1, 9, 4, 22, 2, 11, 8, 17, 21, 8, 15, 4, 19, 20, 17, 7, 15, 12, 5, 3], + [16, 21, 21, 20, 20, 14, 15, 11, 21, 11, 5, 11, 18, 19, 14, 7, 13, 4, 6, 16, 5, 9, 6], + [12, 17, 10, 3, 6, 2, 22, 3, 16, 15, 15, 12, 17, 2, 7, 8, 16, 10, 3, 12, 11, 5, 20], + [3, 9, 18, 12, 5, 14, 11, 3, 22, 14, 16, 19, 1, 7, 23, 20, 2, 21, 6, 5, 22, 18, 7], + [22, 14, 22, 4, 13, 21, 1, 20, 8, 19, 20, 7, 10, 9, 7, 5, 15, 9, 3, 2, 17, 21, 6], + [19, 13, 19, 16, 11, 13, 9, 5, 3, 14, 23, 11, 7, 17, 3, 18, 10, 14, 14, 14, 9, 5, 17], + [1, 15, 16, 18, 16, 7, 21, 16, 16, 8, 9, 4, 23, 17, 10, 4, 11, 3, 17, 6, 11, 11, 13], + [5, 8, 2, 5, 20, 2, 17, 16, 4, 23, 17, 21, 20, 10, 1, 17, 11, 16, 23, 14, 16, 10, 3], + [15, 7, 6, 12, 21, 20, 10, 19, 3, 10, 23, 23, 9, 1, 14, 13, 13, 19, 19, 16, 21, 22, 3], + [16, 7, 2, 7, 7, 22, 7, 20, 10, 18, 4, 11, 14, 22, 18, 15, 10, 2, 23, 1, 11, 4, 2], + [2, 23, 14, 20, 9, 15, 8, 1, 19, 9, 10, 7, 19, 22, 18, 3, 15, 4, 16, 13, 14, 20, 17], + [18, 11, 12, 2, 4, 19, 17, 4, 4, 10, 22, 14, 9, 23, 10, 11, 5, 22, 9, 1, 8, 4, 21], + [11, 5, 3, 20, 5, 8, 15, 14, 18, 13, 3, 16, 3, 20, 9, 11, 10, 8, 20, 21, 14, 8, 3], + [16, 9, 9, 16, 1, 14, 3, 7, 8, 5, 22, 4, 9, 17, 17, 5, 11, 16, 11, 17, 13, 8, 13], + [10, 14, 5, 22, 21, 21, 16, 14, 12, 9, 16, 2, 13, 20, 13, 19, 20, 22, 5, 12, 4, 1, 21], + [17, 3, 18, 4, 5, 16, 9, 19, 9, 2, 2, 20, 8, 12, 10, 4, 3, 22, 8, 14, 20, 16, 2], + [23, 15, 4, 15, 18, 15, 8, 5, 17, 12, 1, 7, 6, 20, 23, 14, 16, 21, 21, 21, 6, 14, 19], + [1, 16, 14, 17, 1, 10, 15, 20, 11, 4, 20, 10, 8, 2, 6, 1, 3, 13, 22, 1, 15, 21, 13], + [15, 20, 14, 2, 18, 4, 14, 13, 14, 16, 21, 20, 8, 13, 4, 5, 12, 17, 23, 21, 23, 4, 14], + [16, 19, 5, 4, 1, 11, 7, 16, 9, 12, 17, 21, 1, 22, 13, 6, 2, 5, 15, 4, 8, 19, 4], + [9, 7, 1, 23, 2, 13, 15, 11, 22, 18, 10, 10, 4, 5, 23, 18, 13, 20, 18, 19, 19, 20, 3], + [20, 10, 23, 14, 14, 13, 1, 11, 3, 14, 10, 11, 5, 20, 19, 17, 7, 8, 8, 16, 18, 1, 23], + [6, 22, 7, 8, 20, 16, 22, 20, 11, 16, 1, 3, 7, 16, 4, 22, 14, 11, 4, 9, 4, 13, 17], + [5, 19, 14, 20, 3, 2, 23, 16, 9, 23, 7, 20, 22, 5, 23, 22, 12, 2, 12, 18, 7, 20, 6], + [22, 20, 18, 17, 11, 16, 17, 6, 1, 11, 12, 7, 22, 3, 20, 3, 6, 16, 19, 18, 10, 2, 12], + [19, 20, 18, 11, 19, 20, 17, 5, 6, 8, 13, 22, 18, 6, 8, 4, 1, 16, 13, 5, 12, 23, 15], + [18, 18, 12, 18, 1, 19, 8, 8, 22, 10, 20, 5, 22, 14, 11, 21, 6, 21, 22, 14, 19, 22, 14], + [21, 22, 7, 4, 20, 5, 18, 22, 5, 3, 10, 17, 20, 10, 23, 19, 21, 4, 7, 21, 10, 23, 8], + [15, 4, 23, 23, 13, 14, 6, 15, 8, 8, 5, 12, 6, 13, 9, 4, 4, 10, 8, 23, 9, 18, 13], + [23, 15, 21, 19, 13, 6, 20, 19, 15, 16, 19, 8, 18, 22, 13, 20, 21, 12, 18, 18, 6, 7, 1], + [7, 18, 23, 5, 21, 5, 14, 15, 2, 8, 19, 22, 7, 11, 8, 15, 8, 9, 16, 17, 20, 5, 6], + [17, 14, 16, 1, 21, 9, 21, 7, 5, 18, 14, 23, 15, 1, 22, 4, 4, 20, 11, 14, 9, 4, 11], + [1, 22, 14, 16, 7, 7, 9, 5, 12, 21, 3, 2, 12, 10, 14, 18, 12, 14, 6, 19, 4, 15, 15], + [16, 23, 4, 10, 23, 23, 17, 13, 2, 12, 20, 23, 3, 9, 5, 10, 23, 22, 10, 12, 7, 7, 2], + [16, 1, 20, 19, 9, 10, 8, 15, 11, 17, 3, 6, 20, 5, 19, 12, 12, 18, 23, 4, 2, 14, 1], + [9, 18, 11, 17, 1, 11, 15, 2, 12, 14, 15, 1, 3, 22, 18, 5, 5, 8, 10, 10, 4, 2, 4], + [2, 9, 2, 16, 23, 19, 7, 8, 5, 18, 15, 1, 20, 12, 4, 8, 5, 13, 11, 21, 6, 11, 16], + [7, 6, 1, 20, 4, 16, 2, 15, 8, 14, 11, 23, 6, 15, 18, 18, 8, 11, 14, 4, 3, 23, 10], + [12, 21, 9, 1, 2, 3, 15, 7, 5, 21, 16, 8, 12, 12, 13, 16, 12, 6, 10, 13, 10, 19, 3], + [22, 13, 16, 7, 18, 4, 14, 8, 4, 4, 22, 5, 21, 12, 15, 23, 18, 4, 12, 22, 4, 7, 7], + [12, 5, 12, 4, 14, 14, 14, 12, 2, 6, 9, 22, 9, 4, 4, 5, 19, 4, 17, 9, 16, 1, 5], + [21, 10, 23, 23, 5, 19, 5, 18, 18, 19, 13, 16, 21, 8, 19, 15, 7, 16, 12, 9, 12, 18, 15], + [5, 20, 10, 3, 13, 18, 21, 16, 12, 2, 16, 12, 2, 5, 6, 15, 22, 12, 3, 9, 12, 21, 12], + [9, 9, 23, 22, 2, 21, 12, 2, 18, 23, 16, 14, 11, 23, 5, 2, 19, 5, 8, 3, 21, 17, 22], + [21, 2, 11, 18, 12, 23, 1, 16, 3, 19, 11, 22, 14, 6, 1, 5, 20, 14, 19, 8, 7, 12, 12], + [8, 6, 7, 13, 10, 13, 18, 3, 1, 22, 5, 13, 13, 3, 6, 4, 10, 16, 18, 12, 9, 8, 7], + [19, 12, 18, 17, 17, 4, 17, 1, 10, 1, 2, 22, 11, 3, 17, 10, 20, 16, 20, 10, 8, 11, 23], + [1, 21, 20, 16, 17, 15, 12, 21, 8, 6, 18, 5, 20, 12, 7, 14, 6, 20, 16, 21, 11, 3, 9], + [12, 23, 3, 4, 2, 3, 2, 14, 18, 19, 8, 13, 17, 16, 1, 7, 17, 5, 8, 1, 7, 2, 6], + [3, 5, 17, 17, 14, 21, 23, 12, 19, 9, 17, 22, 2, 5, 4, 22, 19, 20, 18, 2, 8, 10, 16], + [17, 21, 18, 11, 17, 19, 6, 16, 21, 4, 23, 4, 16, 7, 11, 14, 7, 11, 15, 6, 4, 15, 1], + [18, 2, 14, 11, 9, 21, 2, 6, 4, 12, 6, 22, 18, 1, 20, 22, 17, 19, 4, 9, 11, 13, 11], + [21, 6, 5, 19, 8, 5, 6, 6, 4, 16, 18, 19, 17, 15, 11, 2, 12, 2, 4, 10, 22, 15, 5], + [13, 15, 16, 8, 14, 22, 23, 15, 23, 6, 2, 1, 12, 5, 1, 19, 7, 6, 3, 6, 20, 14, 5], + [11, 2, 1, 9, 17, 16, 8, 8, 1, 13, 14, 23, 5, 8, 23, 8, 11, 1, 3, 22, 12, 11, 15], + [3, 9, 14, 1, 2, 22, 1, 8, 11, 2, 15, 18, 23, 6, 15, 5, 23, 1, 10, 9, 23, 1, 4], + [2, 3, 18, 17, 9, 14, 15, 14, 4, 15, 14, 11, 14, 18, 2, 15, 14, 17, 4, 18, 8, 4, 23], + [8, 15, 17, 22, 9, 7, 18, 5, 17, 6, 22, 10, 9, 16, 4, 6, 8, 13, 7, 10, 12, 13, 2], + [1, 23, 10, 11, 13, 15, 7, 16, 18, 15, 21, 1, 21, 11, 7, 7, 12, 4, 23, 1, 3, 2, 23], + [7, 15, 5, 1, 11, 22, 20, 16, 8, 15, 23, 7, 14, 18, 19, 19, 16, 17, 7, 5, 7, 20, 20], + [4, 7, 11, 5, 15, 10, 6, 20, 22, 17, 13, 18, 11, 17, 13, 2, 22, 9, 1, 8, 10, 11, 6], + [1, 17, 16, 4, 5, 4, 9, 1, 17, 10, 9, 17, 1, 1, 17, 19, 15, 5, 16, 15, 21, 2, 22], + [12, 2, 7, 11, 23, 5, 19, 21, 13, 17, 14, 20, 4, 12, 6, 15, 15, 10, 10, 15, 8, 1, 10], + [17, 2, 12, 19, 12, 16, 22, 21, 8, 9, 2, 15, 18, 21, 2, 22, 17, 2, 1, 11, 3, 13, 15], + [20, 6, 2, 4, 2, 18, 20, 5, 3, 16, 22, 1, 1, 8, 21, 14, 2, 18, 4, 4, 7, 6, 14], + [15, 6, 16, 5, 23, 6, 7, 20, 19, 21, 17, 7, 11, 16, 18, 6, 8, 16, 16, 23, 20, 18, 19], + [23, 19, 21, 13, 7, 17, 13, 20, 10, 8, 8, 5, 13, 18, 3, 1, 2, 23, 6, 1, 20, 9, 22], + [7, 7, 15, 7, 21, 5, 5, 10, 8, 21, 22, 17, 2, 22, 10, 23, 8, 10, 17, 2, 12, 3, 8], + [22, 8, 7, 21, 12, 22, 23, 6, 22, 7, 3, 7, 8, 16, 12, 5, 7, 16, 19, 16, 6, 21, 7], + [21, 3, 20, 20, 22, 21, 16, 17, 9, 20, 9, 4, 13, 6, 3, 16, 14, 5, 3, 10, 23, 3, 12], + [6, 12, 18, 12, 18, 14, 21, 9, 2, 17, 12, 14, 2, 3, 20, 18, 7, 20, 16, 1, 10, 10, 11], + [7, 11, 7, 9, 1, 9, 3, 13, 8, 2, 3, 13, 22, 2, 11, 16, 7, 17, 6, 3, 1, 6, 9], + [4, 16, 10, 7, 13, 6, 13, 2, 5, 5, 13, 16, 16, 3, 10, 22, 18, 4, 19, 4, 9, 11, 20], + [15, 13, 11, 11, 21, 9, 2, 17, 16, 21, 17, 16, 11, 10, 6, 10, 18, 15, 22, 9, 18, 22, 23], + [7, 19, 6, 15, 13, 15, 23, 11, 13, 9, 8, 2, 23, 11, 11, 18, 1, 8, 17, 18, 21, 3, 9], + [19, 20, 13, 16, 21, 8, 3, 3, 15, 9, 12, 17, 5, 11, 14, 12, 20, 15, 13, 21, 10, 15, 20], + [10, 20, 22, 9, 11, 19, 11, 3, 7, 14, 7, 23, 13, 5, 9, 11, 13, 5, 12, 12, 16, 15, 6], + [14, 17, 23, 20, 5, 4, 16, 4, 21, 11, 3, 13, 16, 11, 14, 17, 11, 20, 15, 9, 14, 14, 4], + [1, 5, 22, 12, 1, 18, 23, 19, 12, 3, 21, 1, 4, 10, 12, 15, 21, 3, 22, 5, 1, 8, 10], + [7, 21, 10, 14, 21, 17, 1, 10, 2, 16, 13, 13, 13, 19, 10, 1, 17, 23, 11, 17, 8, 16, 16], + [1, 3, 20, 1, 9, 16, 1, 2, 23, 4, 22, 10, 17, 18, 22, 14, 16, 15, 12, 11, 18, 10, 11], + [6, 1, 6, 19, 21, 5, 1, 10, 16, 20, 9, 6, 6, 13, 5, 11, 18, 15, 20, 15, 7, 17, 2], + [1, 8, 1, 12, 16, 17, 7, 6, 22, 4, 19, 1, 5, 5, 13, 13, 9, 8, 8, 14, 23, 9, 2], + [16, 17, 21, 15, 1, 22, 8, 2, 23, 11, 5, 10, 8, 5, 8, 18, 21, 6, 19, 12, 17, 4, 7], + [16, 22, 8, 17, 1, 22, 19, 5, 5, 2, 4, 10, 11, 13, 21, 23, 20, 11, 10, 21, 19, 13, 5], + [8, 15, 3, 19, 21, 5, 5, 5, 20, 19, 16, 2, 14, 20, 14, 9, 12, 23, 14, 10, 12, 9, 9], + [1, 3, 17, 4, 20, 11, 16, 16, 18, 22, 11, 1, 20, 4, 22, 5, 14, 14, 22, 2, 10, 2, 22], + [8, 21, 1, 5, 20, 18, 15, 21, 11, 6, 11, 11, 4, 10, 11, 3, 11, 4, 13, 4, 18, 12, 15], + [17, 20, 21, 10, 18, 15, 20, 13, 21, 2, 20, 2, 11, 14, 3, 18, 20, 20, 16, 7, 5, 21, 16], + [21, 11, 20, 12, 16, 6, 14, 19, 3, 11, 22, 21, 4, 22, 7, 5, 15, 5, 8, 6, 17, 9, 15], + [17, 23, 21, 5, 15, 11, 14, 10, 18, 8, 2, 20, 5, 19, 10, 23, 10, 1, 16, 13, 9, 12, 1], + [4, 22, 18, 6, 23, 2, 15, 15, 5, 17, 8, 16, 8, 9, 22, 6, 23, 3, 15, 16, 2, 21, 16], + [11, 2, 20, 7, 15, 7, 5, 5, 13, 1, 11, 7, 6, 8, 13, 16, 8, 8, 22, 5, 10, 11, 12], + [16, 5, 19, 20, 16, 5, 12, 17, 23, 20, 20, 14, 13, 21, 7, 5, 13, 22, 16, 4, 19, 19, 20] + ], + "seed": 42, + "n_bootstrap": 200, + "se": 0.498347838909041, + "att": 4.98084886006093, + "metadata": { + "r_version": "R version 4.5.2 (2025-10-31)", + "synthdid_version": "0.0.9", + "panel_N": 23, + "panel_T": 8, + "N0": 20, + "T0": 5 + } +} diff --git a/tests/test_methodology_sdid.py b/tests/test_methodology_sdid.py index 20b6f203..ee003e44 100644 --- a/tests/test_methodology_sdid.py +++ b/tests/test_methodology_sdid.py @@ -27,6 +27,7 @@ compute_sdid_estimator, compute_sdid_unit_weights, compute_time_weights, + safe_inference, ) @@ -871,6 +872,60 @@ def test_jackknife_se_matches_r(self, r_panel_df): ) assert abs(results.se - self.R_JACKKNIFE_SE) < 1e-10 + def test_bootstrap_se_matches_r(self, r_panel_df): + """Bootstrap SE should match R's vcov(method='bootstrap') given the + same bootstrap indices. + + Scope of parity: RNG streams differ between Python (PCG64) and R + (Mersenne Twister), so a shared integer `seed` value draws + different resamples in each language. The fixture pins R's B × N + index matrix and the test feeds it through the Python bootstrap + loop via the `_bootstrap_indices` seam, so both implementations + traverse the *same* resamples. What the 1e-10 match verifies is + the deterministic math downstream of the indices — per-draw + estimator (weight renormalization + SDID formula) and SE + aggregation (`sqrt((r-1)/r) × sd(ddof=1)`). It does NOT verify + that independently-seeded runs of the two bootstraps agree at any + finite B; that would require a shared RNG stream or a Monte- + Carlo-tolerance comparison at large B, both out of scope here. + """ + import json + import pathlib + + fixture = pathlib.Path(__file__).parent / "data" / "sdid_bootstrap_indices_r.json" + if not fixture.exists(): + pytest.skip( + f"Missing R-parity fixture {fixture}; regenerate via " + "`Rscript benchmarks/R/generate_sdid_bootstrap_parity_fixture.R`." + ) + payload = json.loads(fixture.read_text()) + # R indices are 1-based; convert to 0-based for numpy. + indices = np.asarray(payload["indices"], dtype=np.int64) - 1 + r_bootstrap_se = float(payload["se"]) + + n_bootstrap = indices.shape[0] + sdid = SyntheticDiD( + variance_method="bootstrap", + n_bootstrap=n_bootstrap, + seed=42, + ) + # Route the pinned indices through the hidden _bootstrap_indices seam + # on _bootstrap_se. Patch the bound method at the class level so the + # sdid.fit() call picks it up. + orig = SyntheticDiD._bootstrap_se + + def _patched(self, *args, **kwargs): + kwargs["_bootstrap_indices"] = indices + return orig(self, *args, **kwargs) + + with patch.object(SyntheticDiD, "_bootstrap_se", _patched): + results = sdid.fit( + r_panel_df, outcome="outcome", treatment="treated", + unit="unit", time="time", + post_periods=[5, 6, 7], + ) + assert abs(results.se - r_bootstrap_se) < 1e-10 + # ============================================================================= # Edge Cases @@ -941,7 +996,15 @@ def test_se_zero_propagation(self): assert np.isnan(results.conf_int[1]) def test_nonfinite_tau_filtered_in_bootstrap(self): - """Non-finite tau values are filtered in Python bootstrap path (matches Rust).""" + """Non-finite tau values trigger retry in Python bootstrap path. + + Under the R-matching retry-to-B contract, a non-finite estimator + result is treated like a degenerate draw: it triggers another + attempt rather than being silently dropped. The output must + accumulate exactly `n_bootstrap` finite draws, and the estimator + must have been called strictly more than `n_bootstrap` times + (the retry path fired). + """ call_count = [0] def mock_estimator(*args, **kwargs): @@ -969,10 +1032,15 @@ def mock_estimator(*args, **kwargs): unit_weights, time_weights, ) - # All retained estimates must be finite (non-finite filtered out) + # All retained estimates must be finite (non-finite never leaks). assert np.all(np.isfinite(estimates)), "Non-finite tau leaked into bootstrap estimates" - # Some estimates should have been filtered (every 3rd call returns inf) - assert len(estimates) < 20 + # Retry contract: accumulate exactly B valid draws (matches R). + assert len(estimates) == 20 + # Retry fired: estimator was called more than B times because every + # third call returned inf and triggered another attempt. + assert call_count[0] > 20, ( + f"expected retry path to fire (call_count > 20); got {call_count[0]}" + ) def test_nonfinite_tau_filtered_in_placebo(self): """Non-finite tau values are filtered in Python placebo path (matches Rust).""" @@ -2170,9 +2238,9 @@ class TestScaleEquivariance: # Hard-coded baselines captured pre-fix on a well-scaled panel. If these # drift the fix is not a true no-op on normal data and review is warranted. _BASELINE = { - "placebo": (4.603349837478791, 0.29385822261006445, 0.004975124378109453, 200), - "bootstrap": (4.603349837478791, 0.1589472532935243, 0.4869109947643979, 191), - "jackknife": (4.603349837478791, 0.19908075946622925, 2.716551077849484e-118, 23), + "placebo": (4.603349837478791, 0.29385822261006445, 0.004975124378109453, 200), + "bootstrap": (4.603349837478791, 0.16272527384941657, 4.707563471218442e-176, 200), + "jackknife": (4.603349837478791, 0.19908075946622925, 2.716551077849484e-118, 23), } # (a, b) pairs. Includes extreme scales where pre-fix SDID loses @@ -2280,9 +2348,9 @@ def test_detects_true_effect_at_extreme_scale(self, variance_method): # τ must land near the true effect (within ~3 SE); SE must be # positive, finite, and small enough that the effect is significant - # by z-statistic. For placebo/jackknife the empirical p-value is a - # proper null-distribution test; for bootstrap the empirical p is - # not a null test (draws center on τ̂), so check z directly. + # both by z-statistic and by p-value. Placebo uses the empirical null + # formula (permutations approximate the null distribution); bootstrap + # and jackknife use the analytical normal-theory p-value from the SE. assert np.isfinite(r.att) and np.isfinite(r.se) assert r.se > 0 assert abs(r.att - true_att) < max(3 * r.se, 0.1 * true_att) @@ -2291,11 +2359,130 @@ def test_detects_true_effect_at_extreme_scale(self, variance_method): f"Effect at Y~1e9 must be detectable by z-stat; att={r.att}, " f"se={r.se}, z={z} (variance_method={variance_method})" ) - if variance_method != "bootstrap": - assert r.p_value < 0.05, ( - f"Effect at Y~1e9 must reject null; p_value={r.p_value} " - f"(variance_method={variance_method})" + assert r.p_value < 0.05, ( + f"Effect at Y~1e9 must reject null; p_value={r.p_value} " + f"(variance_method={variance_method})" + ) + + +class TestPValueSemantics: + """P-value dispatch is variance-method dependent. + + Placebo (Algorithm 4) permutes control indices to generate null- + distribution draws and uses the empirical formula + ``max(mean(|draws| >= |att|), 1/(r+1))``. Bootstrap (Algorithm 2) + resamples units to approximate the sampling distribution of τ̂ — + draws are centered on τ̂, not 0 — so bootstrap uses the analytical + normal-theory p-value from the SE. Jackknife pseudo-values are not + null draws either and also use the analytical p-value. + """ + + def test_bootstrap_p_value_matches_analytical(self): + """Bootstrap p-value must equal safe_inference(att, se)[1].""" + df = _make_panel(seed=42) + with warnings.catch_warnings(): + warnings.simplefilter("ignore", UserWarning) + r = SyntheticDiD( + variance_method="bootstrap", n_bootstrap=200, seed=1 + ).fit( + df, outcome="outcome", treatment="treated", + unit="unit", time="period", + post_periods=[5, 6, 7], ) + _, expected_p, _ = safe_inference(r.att, r.se, alpha=0.05) + assert abs(r.p_value - expected_p) < 1e-12, ( + f"bootstrap p_value={r.p_value} != analytical {expected_p}" + ) + + def test_placebo_p_value_uses_empirical_formula(self): + """Placebo p-value must equal max(mean(|draws| >= |att|), 1/(r+1)).""" + df = _make_panel(seed=42) + with warnings.catch_warnings(): + warnings.simplefilter("ignore", UserWarning) + r = SyntheticDiD( + variance_method="placebo", n_bootstrap=200, seed=1 + ).fit( + df, outcome="outcome", treatment="treated", + unit="unit", time="period", + post_periods=[5, 6, 7], + ) + placebo_effects = np.asarray(r.placebo_effects) + empirical_p = float(np.mean(np.abs(placebo_effects) >= np.abs(r.att))) + expected_p = max(empirical_p, 1.0 / (len(placebo_effects) + 1)) + assert abs(r.p_value - expected_p) < 1e-12, ( + f"placebo p_value={r.p_value} != empirical {expected_p}" + ) + + def test_bootstrap_p_value_detects_large_effect(self): + """Bootstrap p-value must reject decisively when z is large. + + Regression guard: pre-fix this would return ~0.5 regardless of + effect size because the empirical null formula was applied to + draws centered on τ̂. + """ + df = _make_panel(att=5.0, seed=123) + with warnings.catch_warnings(): + warnings.simplefilter("ignore", UserWarning) + r = SyntheticDiD( + variance_method="bootstrap", n_bootstrap=200, seed=1 + ).fit( + df, outcome="outcome", treatment="treated", + unit="unit", time="period", + post_periods=[5, 6, 7], + ) + z = abs(r.att / r.se) + assert z > 6, f"setup error: z={z} too small to test rejection" + assert r.p_value < 1e-6, ( + f"bootstrap p_value={r.p_value} too large at z={z}" + ) + + @pytest.mark.slow + def test_bootstrap_p_value_null_calibration(self): + """Bootstrap p-values on null data must be spread (not clustered) + and reject within a plausible band for the fixed-weight regime. + + Semantic: this is a characterization test, not a nominal- + calibration assertion. Fixed-weight bootstrap deviates from + Arkhangelsky et al. (2021) Algorithm 2 by ignoring weight- + estimation uncertainty, which biases SE downward and over- + rejects under H0. On this DGP at n=500 seeds the empirical + rejection rate at α=0.05 runs ~0.18 (≈3.7× nominal) — see the + SyntheticDiD calibration note in REGISTRY.md. + + Assertions are wide enough to accommodate Monte Carlo noise at + n=100 seeds (rejection rate SE ≈ 0.04 under fixed-weight) and + remain valid if future calibration improves toward nominal: + + - rejection rate > α = 0.05: catches the pre-fix dispatch bug + where p clustered at ~0.5 on every seed (rejection rate → 0). + - rejection rate < 0.5: upper sanity bound — catches new + catastrophic miscalibration (e.g. SE collapsing to 0). + """ + p_values = [] + for seed in range(100): + df = _make_panel(att=0.0, seed=seed) + with warnings.catch_warnings(): + warnings.simplefilter("ignore", UserWarning) + r = SyntheticDiD( + variance_method="bootstrap", n_bootstrap=200, seed=seed, + ).fit( + df, outcome="outcome", treatment="treated", + unit="unit", time="period", + post_periods=[5, 6, 7], + ) + if np.isfinite(r.p_value): + p_values.append(r.p_value) + p_arr = np.asarray(p_values) + assert len(p_arr) >= 90, f"only {len(p_arr)}/100 fits produced finite p-values" + rejection_rate = float(np.mean(p_arr < 0.05)) + assert rejection_rate > 0.05, ( + f"rejection rate {rejection_rate:.3f} <= 0.05 — p-values likely " + "clustered (dispatch-bug regression)" + ) + assert rejection_rate < 0.5, ( + f"rejection rate {rejection_rate:.3f} >= 0.5 — catastrophic " + "miscalibration (SE → 0 regression?)" + ) class TestDiagnosticScaleParity: