param_grid <- expand.grid(
method = c("alsd_simple","alsd_modelled"),
pi_mean = c(0.08, 0.15),
wave_size = c(100, 150),
KEEP.OUT.ATTRS = FALSE
)
run_one <- function(row) {
df <- pop
# Rescale pi_true mean to match desired pi_mean (rough approximation)
m <- mean(df$pi_true)
if (!is.na(m) && m > 0 && m < 1) {
scale <- row[["pi_mean"]] / m
df$pi_true <- pmax(pmin(df$pi_true * scale, 0.95), 0.01)
}
res <- run_alsd_simulation(
population_df = df,
strata_vars = strata,
outcome_var = outcome,
method = row[["method"]],
initial_sample_size = 200,
wave_size = row[["wave_size"]],
total_budget = 700,
optimizer = "adam",
enforce_target = TRUE
)
dplyr::mutate(res$summary,
method = row[["method"]],
pi_mean = row[["pi_mean"]],
wave_sz = row[["wave_size"]]
)
}
summaries <- do.call(dplyr::bind_rows, lapply(seq_len(nrow(param_grid)), function(i) run_one(param_grid[i, , drop = FALSE])))
#>
#> --- Wave 1 ---
#> Respondents collected: 0/700
#>
#> --- Wave 2 ---
#> Respondents collected: 79/700
#>
#> --- Wave 3 ---
#> Respondents collected: 131/700
#>
#> --- Wave 4 ---
#> Respondents collected: 182/700
#>
#> --- Wave 5 ---
#> Respondents collected: 232/700
#>
#> --- Wave 6 ---
#> Respondents collected: 267/700
#>
#> --- Wave 7 ---
#> Respondents collected: 293/700
#>
#> --- Wave 8 ---
#> Respondents collected: 320/700
#>
#> --- Wave 9 ---
#> Respondents collected: 354/700
#>
#> --- Wave 10 ---
#> Respondents collected: 375/700
#>
#> --- Wave 11 ---
#> Respondents collected: 394/700
#>
#> --- Wave 12 ---
#> Respondents collected: 410/700
#>
#> --- Wave 13 ---
#> Respondents collected: 427/700
#>
#> --- Wave 14 ---
#> Respondents collected: 452/700
#>
#> --- Wave 15 ---
#> Respondents collected: 471/700
#>
#> --- Wave 16 ---
#> Respondents collected: 487/700
#>
#> --- Wave 17 ---
#> Respondents collected: 498/700
#>
#> --- Wave 18 ---
#> Respondents collected: 515/700
#>
#> --- Wave 19 ---
#> Respondents collected: 530/700
#>
#> --- Wave 20 ---
#> Respondents collected: 546/700
#> Termination reason: Reached maximum waves
#>
#> --- Wave 1 ---
#> Respondents collected: 0/700
#>
#> --- Wave 2 ---
#> Respondents collected: 82/700
#>
#> --- Wave 3 ---
#> Respondents collected: 153/700
#>
#> --- Wave 4 ---
#> Respondents collected: 217/700
#>
#> --- Wave 5 ---
#> Respondents collected: 281/700
#>
#> --- Wave 6 ---
#> Respondents collected: 324/700
#>
#> --- Wave 7 ---
#> Respondents collected: 346/700
#>
#> --- Wave 8 ---
#> Respondents collected: 367/700
#>
#> --- Wave 9 ---
#> Respondents collected: 388/700
#>
#> --- Wave 10 ---
#> Respondents collected: 405/700
#>
#> --- Wave 11 ---
#> Respondents collected: 422/700
#>
#> --- Wave 12 ---
#> Respondents collected: 445/700
#>
#> --- Wave 13 ---
#> Respondents collected: 462/700
#>
#> --- Wave 14 ---
#> Respondents collected: 481/700
#>
#> --- Wave 15 ---
#> Respondents collected: 497/700
#>
#> --- Wave 16 ---
#> Respondents collected: 511/700
#>
#> --- Wave 17 ---
#> Respondents collected: 524/700
#>
#> --- Wave 18 ---
#> Respondents collected: 534/700
#>
#> --- Wave 19 ---
#> Respondents collected: 550/700
#>
#> --- Wave 20 ---
#> Respondents collected: 569/700
#> Termination reason: Reached maximum waves
#>
#> --- Wave 1 ---
#> Respondents collected: 0/700
#>
#> --- Wave 2 ---
#> Respondents collected: 145/700
#>
#> --- Wave 3 ---
#> Respondents collected: 229/700
#>
#> --- Wave 4 ---
#> Respondents collected: 301/700
#>
#> --- Wave 5 ---
#> Respondents collected: 360/700
#>
#> --- Wave 6 ---
#> Respondents collected: 388/700
#>
#> --- Wave 7 ---
#> Respondents collected: 423/700
#>
#> --- Wave 8 ---
#> Respondents collected: 463/700
#>
#> --- Wave 9 ---
#> Respondents collected: 496/700
#>
#> --- Wave 10 ---
#> Respondents collected: 526/700
#>
#> --- Wave 11 ---
#> Respondents collected: 550/700
#>
#> --- Wave 12 ---
#> Respondents collected: 574/700
#>
#> --- Wave 13 ---
#> Respondents collected: 595/700
#>
#> --- Wave 14 ---
#> Respondents collected: 619/700
#>
#> --- Wave 15 ---
#> Respondents collected: 638/700
#>
#> --- Wave 16 ---
#> Respondents collected: 661/700
#>
#> --- Wave 17 ---
#> Respondents collected: 676/700
#>
#> --- Wave 18 ---
#> Respondents collected: 693/700
#> Termination reason: Expended budget
#>
#> --- Wave 1 ---
#> Respondents collected: 0/700
#>
#> --- Wave 2 ---
#> Respondents collected: 149/700
#>
#> --- Wave 3 ---
#> Respondents collected: 260/700
#>
#> --- Wave 4 ---
#> Respondents collected: 360/700
#>
#> --- Wave 5 ---
#> Respondents collected: 422/700
#>
#> --- Wave 6 ---
#> Respondents collected: 468/700
#>
#> --- Wave 7 ---
#> Respondents collected: 495/700
#>
#> --- Wave 8 ---
#> Respondents collected: 524/700
#>
#> --- Wave 9 ---
#> Respondents collected: 548/700
#>
#> --- Wave 10 ---
#> Respondents collected: 576/700
#>
#> --- Wave 11 ---
#> Respondents collected: 595/700
#>
#> --- Wave 12 ---
#> Respondents collected: 608/700
#>
#> --- Wave 13 ---
#> Respondents collected: 633/700
#>
#> --- Wave 14 ---
#> Respondents collected: 653/700
#>
#> --- Wave 15 ---
#> Respondents collected: 672/700
#>
#> --- Wave 16 ---
#> Respondents collected: 686/700
#> Termination reason: Expended budget
#>
#> --- Wave 1 ---
#> Respondents collected: 0/700
#>
#> --- Wave 2 ---
#> Respondents collected: 76/700
#>
#> --- Wave 3 ---
#> Respondents collected: 152/700
#>
#> --- Wave 4 ---
#> Respondents collected: 225/700
#>
#> --- Wave 5 ---
#> Respondents collected: 273/700
#>
#> --- Wave 6 ---
#> Respondents collected: 307/700
#>
#> --- Wave 7 ---
#> Respondents collected: 344/700
#>
#> --- Wave 8 ---
#> Respondents collected: 383/700
#>
#> --- Wave 9 ---
#> Respondents collected: 411/700
#>
#> --- Wave 10 ---
#> Respondents collected: 432/700
#>
#> --- Wave 11 ---
#> Respondents collected: 457/700
#>
#> --- Wave 12 ---
#> Respondents collected: 469/700
#>
#> --- Wave 13 ---
#> Respondents collected: 482/700
#>
#> --- Wave 14 ---
#> Respondents collected: 502/700
#>
#> --- Wave 15 ---
#> Respondents collected: 524/700
#>
#> --- Wave 16 ---
#> Respondents collected: 539/700
#>
#> --- Wave 17 ---
#> Respondents collected: 559/700
#>
#> --- Wave 18 ---
#> Respondents collected: 577/700
#>
#> --- Wave 19 ---
#> Respondents collected: 588/700
#>
#> --- Wave 20 ---
#> Respondents collected: 604/700
#> Termination reason: Reached maximum waves
#>
#> --- Wave 1 ---
#> Respondents collected: 0/700
#>
#> --- Wave 2 ---
#> Respondents collected: 79/700
#>
#> --- Wave 3 ---
#> Respondents collected: 158/700
#>
#> --- Wave 4 ---
#> Respondents collected: 214/700
#>
#> --- Wave 5 ---
#> Respondents collected: 273/700
#>
#> --- Wave 6 ---
#> Respondents collected: 311/700
#>
#> --- Wave 7 ---
#> Respondents collected: 357/700
#>
#> --- Wave 8 ---
#> Respondents collected: 406/700
#>
#> --- Wave 9 ---
#> Respondents collected: 448/700
#>
#> --- Wave 10 ---
#> Respondents collected: 479/700
#>
#> --- Wave 11 ---
#> Respondents collected: 510/700
#>
#> --- Wave 12 ---
#> Respondents collected: 537/700
#>
#> --- Wave 13 ---
#> Respondents collected: 558/700
#>
#> --- Wave 14 ---
#> Respondents collected: 574/700
#>
#> --- Wave 15 ---
#> Respondents collected: 592/700
#>
#> --- Wave 16 ---
#> Respondents collected: 607/700
#>
#> --- Wave 17 ---
#> Respondents collected: 626/700
#>
#> --- Wave 18 ---
#> Respondents collected: 642/700
#>
#> --- Wave 19 ---
#> Respondents collected: 651/700
#>
#> --- Wave 20 ---
#> Respondents collected: 665/700
#> Termination reason: Reached maximum waves
#>
#> --- Wave 1 ---
#> Respondents collected: 0/700
#>
#> --- Wave 2 ---
#> Respondents collected: 129/700
#>
#> --- Wave 3 ---
#> Respondents collected: 243/700
#>
#> --- Wave 4 ---
#> Respondents collected: 334/700
#>
#> --- Wave 5 ---
#> Respondents collected: 392/700
#>
#> --- Wave 6 ---
#> Respondents collected: 447/700
#>
#> --- Wave 7 ---
#> Respondents collected: 492/700
#>
#> --- Wave 8 ---
#> Respondents collected: 531/700
#>
#> --- Wave 9 ---
#> Respondents collected: 565/700
#>
#> --- Wave 10 ---
#> Respondents collected: 596/700
#>
#> --- Wave 11 ---
#> Respondents collected: 623/700
#>
#> --- Wave 12 ---
#> Respondents collected: 642/700
#>
#> --- Wave 13 ---
#> Respondents collected: 671/700
#> Termination reason: Expended budget
#>
#> --- Wave 1 ---
#> Respondents collected: 0/700
#>
#> --- Wave 2 ---
#> Respondents collected: 144/700
#>
#> --- Wave 3 ---
#> Respondents collected: 254/700
#>
#> --- Wave 4 ---
#> Respondents collected: 340/700
#>
#> --- Wave 5 ---
#> Respondents collected: 420/700
#>
#> --- Wave 6 ---
#> Respondents collected: 476/700
#>
#> --- Wave 7 ---
#> Respondents collected: 516/700
#>
#> --- Wave 8 ---
#> Respondents collected: 551/700
#>
#> --- Wave 9 ---
#> Respondents collected: 580/700
#>
#> --- Wave 10 ---
#> Respondents collected: 619/700
#>
#> --- Wave 11 ---
#> Respondents collected: 651/700
#>
#> --- Wave 12 ---
#> Respondents collected: 686/700
#> Termination reason: Expended budget
Effective sample and deff
ggplot(summaries, aes(x = wave, y = 1/deff, color = method)) +
geom_line() +
facet_grid(pi_mean ~ wave_sz, labeller = label_both) +
labs(y = "1 / deff (proxy for effective n)", color = "Method")

Absolute error over waves
