Computes the Abadie et al. (2010) / Abadie (2021) permutation p-value. For each control unit, a leave-one-out synthetic control is fitted.
Usage
mspe_ratio_pval(
fit,
mspe_threshold = 0,
max_iter = 100L,
tol = 1e-04,
use_covariates = NULL,
alternative = c("two.sided", "greater", "less")
)Arguments
- fit
A
coresynthobject fromscm_fit()withmethod = "scm".- mspe_threshold
Minimum pre-treatment MSPE for including a control unit in the two-sided test. Ignored for one-sided tests. Default: 0 (no filtering).
- max_iter
Passed to
scm_placebo_cpp()(outcomes-only fits) orscm_placebo_x_cpp()(covariate fits). Default 100L.- tol
Passed to
scm_placebo_cpp()orscm_placebo_x_cpp(). Default 1e-4.- use_covariates
Controls which predictor specification the placebo refits use. Default
NULL(recommended) mirrors the treated fit: if the fit was estimated with apredictorsspecification, each placebo unit is refit with that same specification (the Abadie et al. 2010 /Synthconvention – treated and placebo statistics are computed under one common spec); outcomes-only fits use the fast C++ outcomes-only placebo. SetTRUE/FALSEto force either path; note thatFALSEon a covariate fit compares a covariate-based treated statistic against outcomes-only placebo statistics, which breaks the exchangeability logic of the permutation test.- alternative
Direction of the alternative hypothesis:
"two.sided"(default) uses the MSPE ratio statistic;"greater"tests whether the treatment increased the outcome;"less"tests whether the treatment decreased the outcome. One-sided tests use the signed ATT as the test statistic.
Value
An object of class scm_placebo (a list) with:
p_value: Permutation p-value between 0 and 1mspe_ratio_treated: MSPE_post / MSPE_pre for the treated unit (two.sided only)mspe_ratios_all: Named numeric vector (treated first, then controls); two.sided onlyplacebo_effects: Named N_co-vector of placebo ATT estimatestreated_effect: ATT estimate for the treated unitn_placebo_used: Number of control units usedgaps: T x N_co matrix of placebo gap paths (unit minus its synthetic control over all periods), for the Abadie et al. (2010) Figure 4-7 plottreated_gap: T-vector of the treated unit's gap pathmspe_pre_treated,mspe_pre_placebo: Pre-treatment MSPEs used for the relative pruning rule inplot.scm_placebo()times,T_pre: Time axis metadata for plotting
Details
When alternative = "two.sided" (default), the test statistic is the
post/pre MSPE ratio, following Abadie et al. (2010). When
alternative = "greater" or "less", the test statistic is the signed
average post-treatment gap (ATT), giving a one-sided permutation test as
recommended by Abadie (2021) S.3.5 for improved power when the direction
of the treatment effect is known.
The placebo refits mirror the treated fit's outer optimiser and evaluation
window: a fit estimated with the multi-start outer search (v_optim = "multistart", or the "auto" default with predictors) or with a
v_window runs every placebo unit through the same configuration, keeping
the permutation statistic exchangeable across units.
See also
plot.scm_placebo() for the placebo gap and MSPE ratio plots.
