Zero-inflated count benchmark: zero fraction sweep
Tree: ape::rtree(300) ·
Traits: 3 zero-inflated count per scenario ·
Zero fraction: 0.2 – 0.8 ·
Methods: mean · LP + BM baseline · pigauto ·
Replicates: 5 ·
Missingness: 25% MCAR ·
Commit 794537121b ·
Report generated 2026-05-30 12:04 ·
Total wall: 93.8 min
Bottom line. At 20% zero inflation, the baseline achieves RMSE 38.167 and pigauto achieves 39.402. With few structural zeros the count component dominates and BM on the log1p-z scale performs well.
At 80% zero inflation, RMSE rises to 35.991 (baseline) vs 36.040 (pigauto), and zero-class accuracy is 56.4% vs 52.4%. Heavy zero inflation creates a two-component mixture that challenges all methods; read the GNN contribution from the RMSE and zero-accuracy columns together.
Primary sweep: performance by zero fraction (25% missingness)
Average across 3 traits and 5 replicates. ★ marks the best method per scenario.
Zero fraction
RMSE (lower is better)
Zero accuracy (higher is better)
Mean
Baseline
pigauto
Mean
Baseline
pigauto
20% zeros
58.059
38.167 ★
39.402
1.000 ★
0.937
0.936
40% zeros
34.494
25.787 ★
26.301
1.000 ★
0.829
0.828
60% zeros
57.595
44.472 ★
45.200
1.000 ★
0.812
0.803
80% zeros
41.886
35.991 ★
36.040
1.000 ★
0.564
0.524
Secondary sweep: non-zero mean (zero frac = 0.5)
How the mean of non-zero counts affects imputation quality at fixed 50% zero inflation.
What the benchmark shows
Zero-inflated counts are a two-component mixture. The data has structural zeros (drawn from a zero-generating process) and positive counts (drawn from a count process). Imputation must handle both components.
Low zero inflation behaves like regular counts. At 20% zeros the count component dominates, and the log1p-z BM baseline captures most of the variation. The GNN gate stays near zero.
High zero inflation is challenging for all methods. At 80% zeros, distinguishing structural zeros from missing data becomes difficult. In this run, RMSE and zero-class accuracy do not move in lockstep, so both columns are needed to interpret the result.
Zero-class accuracy is a key secondary metric. Overall RMSE may be misleading when most true values are zero. Tracking whether each cell correctly identifies as zero or non-zero gives a clearer picture of structural accuracy.
Reproducibility
Driver: script/bench_zi_count.R. Tree: ape::rtree(300). Traits: simulate_zi_count_traits(). Training: 500 epochs with early stopping. To reproduce: Rscript script/bench_zi_count.R, then Rscript script/make_bench_zi_count_html.R.