Skip to contents

Draws parameters from independent uniform priors, simulates summary statistics, and keeps the draw when the Euclidean distance to the observed summaries is at most eps (Pritchard et al. 1999). As eps tends to zero the accepted draws tend to the exact posterior and the acceptance rate tends to zero, which is the trade-off the method is built around.

Usage

morie_abcrej(sim, obs, eps, prior, n_draws = 1000L, seed = 0)

Arguments

sim

Function (theta, rng) returning summary statistics; rng is the generator environment, so a stochastic simulator stays reproducible.

obs

Observed summary statistics.

eps

Acceptance tolerance, positive.

prior

List of c(low, high) pairs, one per parameter.

n_draws

Number of prior draws.

seed

Seed for the generator shared with the Python arm.

Value

A list with samples, n_accepted, acceptance_rate, distances, posterior_mean, eps, n_draws, seed, method.

References

Pritchard, J. K. et al. (1999). Population growth of human Y chromosomes. Molecular Biology and Evolution, 16(12), 1791-1798.

Examples

prior <- list(c(-2, 2))
sim <- function(theta, rng) theta[1]
morie_abcrej(sim, obs = 0.5, eps = 0.5, prior, n_draws = 200)
#> $samples
#> $samples[[1]]
#> [1] 0.09580237
#> 
#> $samples[[2]]
#> [1] 0.2206701
#> 
#> $samples[[3]]
#> [1] 0.8328893
#> 
#> $samples[[4]]
#> [1] 0.07392874
#> 
#> $samples[[5]]
#> [1] 0.6408411
#> 
#> $samples[[6]]
#> [1] 0.3026435
#> 
#> $samples[[7]]
#> [1] 0.545936
#> 
#> $samples[[8]]
#> [1] 0.07685955
#> 
#> $samples[[9]]
#> [1] 0.4234266
#> 
#> $samples[[10]]
#> [1] 0.9979665
#> 
#> $samples[[11]]
#> [1] 0.1959303
#> 
#> $samples[[12]]
#> [1] 0.4746231
#> 
#> $samples[[13]]
#> [1] 0.3538484
#> 
#> $samples[[14]]
#> [1] 0.2898825
#> 
#> $samples[[15]]
#> [1] 0.008228678
#> 
#> $samples[[16]]
#> [1] 0.2781611
#> 
#> $samples[[17]]
#> [1] 0.02287935
#> 
#> $samples[[18]]
#> [1] 0.1851195
#> 
#> $samples[[19]]
#> [1] 0.9734549
#> 
#> $samples[[20]]
#> [1] 0.6307447
#> 
#> $samples[[21]]
#> [1] 0.3934232
#> 
#> $samples[[22]]
#> [1] 0.7691149
#> 
#> $samples[[23]]
#> [1] 0.4986873
#> 
#> $samples[[24]]
#> [1] 0.5245781
#> 
#> $samples[[25]]
#> [1] 0.3843461
#> 
#> $samples[[26]]
#> [1] 0.06925807
#> 
#> $samples[[27]]
#> [1] 0.1207822
#> 
#> $samples[[28]]
#> [1] 0.9983336
#> 
#> $samples[[29]]
#> [1] 0.9001348
#> 
#> $samples[[30]]
#> [1] 0.1223538
#> 
#> $samples[[31]]
#> [1] 0.2783322
#> 
#> $samples[[32]]
#> [1] 0.6863383
#> 
#> $samples[[33]]
#> [1] 0.8813736
#> 
#> $samples[[34]]
#> [1] 0.6905217
#> 
#> $samples[[35]]
#> [1] 0.7785967
#> 
#> $samples[[36]]
#> [1] 0.6309466
#> 
#> $samples[[37]]
#> [1] 0.7471134
#> 
#> $samples[[38]]
#> [1] 0.1843142
#> 
#> $samples[[39]]
#> [1] 0.002500744
#> 
#> $samples[[40]]
#> [1] 0.3619053
#> 
#> $samples[[41]]
#> [1] 0.9391773
#> 
#> $samples[[42]]
#> [1] 0.3774954
#> 
#> $samples[[43]]
#> [1] 0.7986797
#> 
#> 
#> $n_accepted
#> [1] 43
#> 
#> $acceptance_rate
#> [1] 0.215
#> 
#> $distances
#>  [1] 0.404197633 0.279329935 0.332889339 0.426071264 0.140841143 0.197356476
#>  [7] 0.045936029 0.423140447 0.076573422 0.497966492 0.304069738 0.025376904
#> [13] 0.146151563 0.210117536 0.491771322 0.221838921 0.477120645 0.314880496
#> [19] 0.473454892 0.130744748 0.106576823 0.269114909 0.001312736 0.024578068
#> [25] 0.115653947 0.430741929 0.379217778 0.498333614 0.400134806 0.377646185
#> [31] 0.221667816 0.186338285 0.381373572 0.190521736 0.278596691 0.130946627
#> [37] 0.247113353 0.315685771 0.497499256 0.138094700 0.439177327 0.122504573
#> [43] 0.298679702
#> 
#> $posterior_mean
#> [1] 0.4595847
#> 
#> $eps
#> [1] 0.5
#> 
#> $n_draws
#> [1] 200
#> 
#> $seed
#> [1] 0
#> 
#> $method
#> [1] "ABC rejection (Pritchard et al. 1999)"
#>