DPSynth

License: MIT Lifecycle: stable R-CMD-check CRAN status Downloads

Differentially Private Synthetic Data with Guaranteed Utility

R package implementing differentially private (DP) synthetic data generation for tabular data, with standardized utility evaluation and empirical disclosure risk auditing.

Authors: Mukul Bijalwan (mukulbijalwan555@gmail.com), Gunjan Aggarwal, Mukul Jain

Features

Installation

# install.packages("remotes")
remotes::install_github("MukulBijalwan/DPSynth")

Quick start

library(DPSynth)

data(adult_sample)
set.seed(1)
res <- dp_synthesize(adult_sample, method = "copula",
                     epsilon = 2.0, delta = 1e-6, n_synth = 1000)
print(res)
head(res$synthetic_data)

Privacy model

A generator G is (ε, δ)-DP if for all neighbouring datasets D ~ D′:

Pr[G(D) = S] ≤ e^ε · Pr[G(D′) = S] + δ

The entire synthetic dataset is the output; DPSynth privatizes the model parameters with calibrated noise, after which sampling is post-processing and consumes no additional budget.

Note on formal guarantees

Bounds derived from the data itself (e.g., min/max clamping bounds by default in dp_gmm_synth) are not themselves differentially private. For formal end-to-end guarantees, supply public/domain bounds via the bounds argument.

License

MIT © 2026 Mukul Bijalwan