Differentially Private Synthetic Data with Guaranteed Utility

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) and Dwork et al. (2006) for the DP mechanisms, Papernot et al. (2017) for the PATE synthesizer, and Woo et al. (2009) for the disclosure risk evaluation framework.


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 ([email protected]), Gunjan Aggarwal, Mukul Jain

Features

  • DP-Copula synthesizer (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 (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 (dp_marginals_synth) — fast per-column DP histogram baseline.
  • PATE (dp_pate_synth) — Private Aggregation of Teacher Ensembles for discrete / mixed-type synthesis.
  • Utility evaluation (evaluate_utility) — univariate (KS, Hellinger), multivariate (correlation distance, MI), propensity-score pMSE (Woo et al., 2009), downstream TSTR performance.
  • Risk auditing — membership inference, attribute disclosure, record linkage.
  • Budget accounting (new_synth_budget, spend_synth) — basic, advanced and Rényi-DP composition.

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

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.

install.packages("DPSynth")

0.1.0 by Mukul Bijalwan, 17 days ago


https://github.com/MukulBijalwan/DPSynth


Report a bug at https://github.com/MukulBijalwan/DPSynth/issues


Browse source code at https://github.com/cran/DPSynth


Authors: Mukul Bijalwan [aut, cre] , Gunjan Aggarwal [aut] , Mukul Jain [aut]


Documentation:   PDF Manual  


MIT + file LICENSE license


Imports stats, utils, MASS

Suggests testthat, knitr, rmarkdown


See at CRAN