Run a Targeted Sensitivity Study for FDA-SelectBoost
Source:R/validation.R
run_selectboost_sensitivity_study.RdRepeats the FDA benchmark over a grid of simulation settings and a grid of
FDA-aware SelectBoost settings. This is intended to answer the specific
benchmark question of when selectboost_fda() improves on plain
SelectBoost.
Usage
run_selectboost_sensitivity_study(
n_rep = 10L,
simulate_grid = expand.grid(scenario = c("localized_dense", "confounded_blocks"),
confounding_strength = c(0.4, 0.9), active_region_scale = c(1, 0.7),
local_correlation = c(0, 2), stringsAsFactors = FALSE),
selectboost_grid = expand.grid(association_method = c("correlation", "neighborhood",
"hybrid", "interval"), bandwidth = c(NA, 4, 8), stringsAsFactors = FALSE),
simulate_args = list(),
benchmark_args = list(),
seed = NULL,
keep_results = FALSE
)Arguments
- n_rep
Number of replications per setting combination.
- simulate_grid
Data frame of simulation-setting combinations. Columns are merged into
simulate_argsand can includescenario,confounding_strength,active_region_scale, andlocal_correlation.- selectboost_grid
Data frame of
selectboost_fda()setting combinations. Columns are merged intobenchmark_args$selectboost_argsand can includeassociation_method,bandwidth,width, orstep.- simulate_args
Named list forwarded to
simulate_fda_scenario().- benchmark_args
Named list forwarded to
benchmark_selection_methods(). When omitted, the study compares FDA-awareSelectBoost, plainSelectBoost, and grouped stability selection.- seed
Optional seed used to derive deterministic per-replication and per-setting seeds.
- keep_results
Should the individual benchmark objects be returned?
Examples
grid <- data.frame(
scenario = "confounded_blocks",
confounding_strength = 0.9,
active_region_scale = 0.7,
local_correlation = 2,
stringsAsFactors = FALSE
)
methods <- data.frame(
association_method = c("correlation", "hybrid"),
bandwidth = c(NA, 4),
stringsAsFactors = FALSE
)
study <- run_selectboost_sensitivity_study(
n_rep = 1,
simulate_grid = grid,
selectboost_grid = methods,
simulate_args = list(n = 24, grid_length = 16),
benchmark_args = list(
methods = c("selectboost", "plain_selectboost"),
levels = "feature",
selectboost_args = list(B = 3, steps.seq = 0.5, c0lim = FALSE),
plain_selectboost_args = list(B = 3, steps.seq = 0.5, c0lim = FALSE)
),
seed = 1
)
summarise_benchmark_advantage(
study,
target = "selectboost",
reference = "plain_selectboost",
level = "feature"
)
#> scenario
#> confounded_blocks.grid.gaussian.hybrid.4.0.9.0.7.2.feature.selectboost.plain_selectboost.f1 confounded_blocks
#> representation
#> confounded_blocks.grid.gaussian.hybrid.4.0.9.0.7.2.feature.selectboost.plain_selectboost.f1 grid
#> family
#> confounded_blocks.grid.gaussian.hybrid.4.0.9.0.7.2.feature.selectboost.plain_selectboost.f1 gaussian
#> association_method
#> confounded_blocks.grid.gaussian.hybrid.4.0.9.0.7.2.feature.selectboost.plain_selectboost.f1 hybrid
#> bandwidth
#> confounded_blocks.grid.gaussian.hybrid.4.0.9.0.7.2.feature.selectboost.plain_selectboost.f1 4
#> confounding_strength
#> confounded_blocks.grid.gaussian.hybrid.4.0.9.0.7.2.feature.selectboost.plain_selectboost.f1 0.9
#> active_region_scale
#> confounded_blocks.grid.gaussian.hybrid.4.0.9.0.7.2.feature.selectboost.plain_selectboost.f1 0.7
#> local_correlation
#> confounded_blocks.grid.gaussian.hybrid.4.0.9.0.7.2.feature.selectboost.plain_selectboost.f1 2
#> level
#> confounded_blocks.grid.gaussian.hybrid.4.0.9.0.7.2.feature.selectboost.plain_selectboost.f1 feature
#> target
#> confounded_blocks.grid.gaussian.hybrid.4.0.9.0.7.2.feature.selectboost.plain_selectboost.f1 selectboost
#> reference
#> confounded_blocks.grid.gaussian.hybrid.4.0.9.0.7.2.feature.selectboost.plain_selectboost.f1 plain_selectboost
#> metric
#> confounded_blocks.grid.gaussian.hybrid.4.0.9.0.7.2.feature.selectboost.plain_selectboost.f1 f1
#> n_rep
#> confounded_blocks.grid.gaussian.hybrid.4.0.9.0.7.2.feature.selectboost.plain_selectboost.f1 1
#> target_value_mean
#> confounded_blocks.grid.gaussian.hybrid.4.0.9.0.7.2.feature.selectboost.plain_selectboost.f1 0.4117647
#> reference_value_mean
#> confounded_blocks.grid.gaussian.hybrid.4.0.9.0.7.2.feature.selectboost.plain_selectboost.f1 0.4
#> delta_mean
#> confounded_blocks.grid.gaussian.hybrid.4.0.9.0.7.2.feature.selectboost.plain_selectboost.f1 0.01176471
#> delta_sd
#> confounded_blocks.grid.gaussian.hybrid.4.0.9.0.7.2.feature.selectboost.plain_selectboost.f1 0
#> win_rate
#> confounded_blocks.grid.gaussian.hybrid.4.0.9.0.7.2.feature.selectboost.plain_selectboost.f1 1