This vignette sketches an official-statistics workflow: combining multiple DP tabulations under a single budget, applying post-processing constraints, and comparing composition rules.
budget <- new_privacy_budget(epsilon = 4.0, delta = 1e-6, composition = "rdp")
if (can_spend(budget, 1.5)) {
budget <- spend(budget, 1.5, "mean income by region table")
}
if (can_spend(budget, 1.5)) {
budget <- spend(budget, 1.5, "education histogram")
}
budget
#>
#> Privacy Budget (composition: rdp )
#> total epsilon: 4.000
#> spent epsilon: 0.000
#> accumulated rho: 0.0000
#> remaining: 4.000DP histograms can contain negative noisy counts; truncating at zero and normalizing are pure post-processing steps that preserve DP:
data(example_microdata)
h <- dp_histogram(example_microdata$age, epsilon = 1.0,
breaks = seq(10, 90, by = 10), normalize = TRUE)
h$estimate # already non-negative by construction
#> [10,20] (20,30] (30,40] (40,50] (50,60] (60,70] (70,80]
#> 0.03190307 0.12534167 0.28326799 0.33126897 0.16600733 0.05101880 0.01119218
#> (80,90]
#> 0.00000000For a fixed workflow of small releases, RDP is typically much tighter than basic composition:
The privacy loss random variable of a Laplace release is exponential; its tail probabilities quantify the chance of large losses:
Need a high-speed mirror for your open-source project?
Contact our mirror admin team at info@clientvps.com.
This archive is provided as a free public service to the community.
Proudly supported by infrastructure from VPSPulse , RxServers , BuyNumber , UnitVPS , OffshoreName and secure payment technology by ArionPay.