# How to choose the scaling matrix in ABC (without cheating!)?

I am doing a numerical experiment involving comparing Approximate Bayesian Computation (ABC) with other methods.

I am simulating data $\boldsymbol{y}$ from a model and I'm using ABC to get a sample from the posterior of the parameters $\boldsymbol{\theta}$. The summary statistics $S(\boldsymbol{y})$ are on very different scales, with covariance strongly dependent on the parameters $\boldsymbol{\Sigma}_{\boldsymbol{\theta}}$. To take this into account, in the acceptance step I use the quadratic form: $$(\boldsymbol{s_i}-\boldsymbol{s}_0)\hat{\boldsymbol{\Sigma}}_{\boldsymbol{\theta}}^{-1}(\boldsymbol{s_i}-\boldsymbol{s}_0) < \epsilon$$ where $\boldsymbol{s_i}$ is a simulated vector of stats, $\boldsymbol{s_0}$ the observed stats and $\epsilon$ the tolerance.

So far I have "cheated" and I have used $\hat{\boldsymbol{\Sigma}}_{\boldsymbol{\theta}_0}$ where $\boldsymbol{\theta}_0$ are the true parameters. I thought that the choice of the scaling matrix was secondary (of little importance as $\epsilon \rightarrow$ 0) but it turns out that in my case if I don't estimate $\hat{\boldsymbol{\Sigma}}_{\boldsymbol{\theta}}$ really close to $\boldsymbol{\theta}_0$ the algorithm is simply stuck (extremely low acceptance rate and few statistics dominating everything).

Does anybody know any practical method that can be used to choose the weighting matrix when the real parameters are unknown? Thanks

• Can you give some more details as to the actual scenario? E.g. Whether you are using rejection sampling, how many parameters, etc? – Sameer Jul 25 '13 at 18:47
• I'm using the SMC-ABC algorithm of Toni et al (2009), with a model with only 3 parameters. I have 13 statistics, some of which a highly correlated, with standard deviations ranging from $10^-2$ to $10^4$. – Matteo Fasiolo Jul 26 '13 at 7:35
• In our scaling, we always use the median absolute deviation for each summary statistic (on the diagonal) and nothing off. Unless the summaries are highly correlated, this should be good enough. – Xi'an Nov 19 '14 at 21:30

In this approach, one introduces a "calibration" step before running whatever ABC algorithm (rejection sampling, MCMC, SMC, etc.) wherein a large number of summary statistics are simulated based on draws from the prior and PLS is used to calculate a transform of the summary statistics explaining the most variance in the parameter space. The observed summary statistics are then transformed and in the ensuing ABC rejection steps the distance between transformed simulated and observed summary statistics will be used instead of the original summary statistics. In this way, you will avoid having to calculate (or invert) $\Sigma_\theta$.
1. Sample $B$ draws from $\theta' \sim P(\theta)$
2. Conduct $B$ simulations from $S \sim P(S|\theta')$
3. Estimate PLS transform of of $S$ to $S'$