Differentially private (DP) synthetic data generation for
tabular data. Provides DP Gaussian mixture models, DP Gaussian copulas,
DP histogram marginals and a Private Aggregation of Teacher Ensembles
(PATE) synthesizer for mixed-type data, together with a standardized
utility evaluation framework (univariate fidelity, propensity score
MSE, multivariate dependence, downstream task performance), empirical
disclosure risk auditing (membership inference, attribute disclosure,
record linkage) and privacy budget accounting (basic, advanced and
Renyi DP composition). The implementation follows Dwork and Roth
(2014)
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 ([email protected]), 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