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
dp_copula_synth) — DP histogram marginals +
Gaussian-copula dependence with noisy rank correlations projected to the
positive-definite cone. Handles mixed numeric/categorical data.dp_gmm_synth) — Gaussian
mixture models fit via EM on perturbed sufficient statistics (noisy
counts, means, variances), DP k-means++ initialization through the
exponential mechanism.dp_marginals_synth) —
fast per-column DP histogram baseline.dp_pate_synth) — Private
Aggregation of Teacher Ensembles for discrete / mixed-type
synthesis.evaluate_utility)
— univariate (KS, Hellinger), multivariate (correlation distance, MI),
propensity-score pMSE (Woo et al., 2009), downstream TSTR
performance.new_synth_budget,
spend_synth) — basic, advanced and Rényi-DP
composition.# install.packages("remotes")
remotes::install_github("MukulBijalwan/DPSynth")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)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.
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.
MIT © 2026 Mukul Bijalwan