Stability-Mechanism: Stability Mechanism

Description Arguments Details Value References Examples

Description

Differentially private evaluation of input function 'fun' with sensitivity 'sens' on input data 'x' using the stability mechanism. In general, the stability mechanism is one which takes advantage of 'stable' functions, i.e. ones where the function output is constant in some neighborhood around the input database. In this library, the stability mechanism is implemented to be used specifically for the histogram statistic, and should not be used for any other function except by users who are confident in their understanding of the mechanism. See references for more information on the general stability mechanism.

Arguments

fun

function of input x to add Laplace noise to.

x

input that function fun will be evaluated on.

sens

sensitivity of fun. Sensitivity is defined in above citation.

...

any additional (optional) parameters

Details

For a histogram generated by the Stability mechanism, empty buckets will be removed and any buckets with a count below an accuracy threshold will also be removed. Removing these buckets based on low counts is what creates the added guarantee of privacy.

The accuracy threshold for removing bins with low counts is calculated by: 1 + (2 * ln(2 / δ) / ε).

Value

result of post-processing on input function "fun" evaluated on database "x", assuming sensitivity of fun is "sens".

References

S. Vadhan The Complexity of Differential Privacy, Section 3.3 Releasing Stable Values p.23-24. March 2017.

Also discussed in:

A. Smith, A. Thakurta Differentially Private Model Selection via Stability Arguments and the Robustness of the Lasso. 2013.

C. Dwork, J. Lei Differential Privacy and Robust Statistics. November 2008.

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# the function in `statistic-histogram.R` that creates a histogram from input data
histogram_function <- fun.hist 

# the data frame that holds the data we want to analyze, in this case the data is called "PUMS5extract10000"
data <- data(PUMS5extract10000) 

# the variable for which we want a histogram
variable <- "age"

# the sensitivity for the histogram, the default sensitivity for histograms is 2 
sens <- 2 

# the post-processing function to use to format the histogram release correctly
post_processing_function <- dpHistogram$postProcess 

stability_histogram <- mechanismStability$evaluate(histogram_function, data[, variable], sens, post_processing_function)

IQSS/PSI-Library documentation built on Feb. 15, 2020, 9:03 p.m.