First CRAN release. The method is unchanged from 0.1.0 and follows the published paper (Jamme, 2027, doi:10.1007/978-3-032-37883-5_9). This release focuses on robustness and documentation. The API may still evolve until 1.0.0.
pm_plot_risk_max() gains x_axis = "n" and overlays the frontier found by
pm_suggest_n() (mark_frontier).pm_calib_dominance() now passes level to the CI loss metric (it was
always computed at 95%).sigma_nu, n, beta or rho is no longer
affected by floating-point representation of seq() grids.purrr and dplyr are no longer a dependency.First working version of the package. The API is still unstable: function names and arguments may change without deprecation until version 1.0.0.
pm_params() gathers every choice in a single object: the policy, organised
by disclosure scenario (dominance, prule, diff), and the three mechanism
parameters (sigma_nu, sigma_eps, n), filled in as calibration proceeds.pm_calib_diff() returns the theoretical grid of sigma_eps values meeting a
given (beta, tau) couple, with the loss floor they imply.plot() on that grid draws the risk-utility frontier.pm_commit_diff() records the decision and sets sigma_eps.pm_calib_dominance() returns, over a grid of dominance levels rho, the
scenario-I risk and the information loss for each candidate (sigma_nu, n).summary() reduces that grid to the worst-case risk and the loss range of
every parameter combination.pm_suggest_n() solves for the largest n meeting the risk ceiling — the
calibration rule of step 2 — with an optional safety margin.pm_commit_dominance() records sigma_nu and n, and reports the resulting
trade-off.pm_plot_risk_profile(), pm_plot_risk_max() and pm_plot_tradeoff()
reproduce the calibration figures of the paper. The first two accept any
scenario; the third is specific to the risk metric selected.pm_plot_impact() superposes the empirical and theoretical losses depending
on rho.pm_perturb() applies Y' = Y (1 + rho^n nu + eps) to an aggregated table
and returns it with rho, the derived keys and the perturbed total, plus a
pm_meta attribute recording the full configuration.pm_draws() derives the two Gaussian draws from a cell key by SHA-512 hashing
and quantile inversion, so that perturbations are reproducible over time.assess_loss_expectation() and assess_loss_ci() give the a-priori
information loss conditional on dominance.assess_risk_I() and assess_risk_II() give the a-priori risk measures for
the external and internal inference scenarios.assess_risk_diff() gives an a-priori upper bound of the risk measure for
the differencing scenario.assess_utility_empirical() and assess_risk_empirical() measure what was
actually achieved on the perturbed table, alongside the theoretical values
predicted for the same cells.