The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
Synthetic data generation for R with copulas, built-in quality and disclosure-risk evaluation, ggplot2 visualisation and multi-format I/O.
SynthesizerPlus learns the marginal distribution of every column and the dependence between columns (Gaussian or Student-t copula) from a real data set, and generates new records with the same statistical structure. It handles numeric, integer, categorical, ordinal, logical, date and date-time columns, missing values and their patterns, stratified models, and univariate or multivariate time series.
# development version
remotes::install_github("bogdanoancea/SynthesizerPlus", build_vignettes = TRUE)Optional packages enable extra file formats: arrow or
nanoparquet (Parquet), arrow (Feather),
hdf5r (HDF5), jsonlite (JSON/NDJSON),
readxl with writexl or openxlsx
(Excel), haven (SPSS, Stata, SAS), fst, and
data.table (fast CSV).
library(SynthesizerPlus)
fit <- fit_synthesizer(airquality, by = "Month") # learn
syn <- generate(fit, n = 1000, seed = 1) # generate
cmp <- compare_synthetic(airquality, syn, seed = 1) # evaluate
cmp
plot(cmp, type = "marginals")
plot(cmp, type = "association")
write_data(syn, "synthetic.parquet") # deliver| Area | Functions |
|---|---|
| Synthesis | fit_synthesizer(), generate(),
synthesize(), simulate() |
| Disclosure control | disclosure_risk() (replicated uniques, correct
attribution probability), dcr(), simulated
census_sim data |
| Closeness control | generate(closeness = ), perturbation(),
calibrate_closeness() |
| ML data augmentation | augment_data(), ts_windows() |
| Time series | fit_synthesizer() on ts: copula-VAR, block
and stationary bootstrap |
| Large data | generate_to_file() (chunked, CSV / Parquet / HDF5 /
…) |
| Multivariate distributions | r_mvnorm(), r_mvt(),
r_mvlnorm(), r_mvskewnorm(),
r_dirichlet(), r_mvmixture(),
r_copula() (Gaussian, t, Clayton, Gumbel, Frank),
r_mvdist(), make_corr() |
| Evaluation | compare_synthetic(), marginal_metrics(),
association_matrix(), pmse(),
discriminator_auc(), ci_overlap(),
dcr() |
| Visualisation | plot_marginals(), plot_categorical(),
plot_association(), plot_pairs(),
plot_qq(), plot_ts(), plot_acf(),
plot_dcr(), autoplot() |
| I/O | read_data(), write_data(),
supported_formats(), match_types() |
Supported file formats: CSV, TSV (optionally
.gz/.bz2/.xz), RDS, RData,
Parquet, Feather/Arrow IPC, HDF5, JSON, NDJSON, Excel, SPSS, Stata, SAS
(sas7bdat read, xpt read/write) and fst.
Runnable scripts are installed with the package:
ex <- function(f) system.file("examples", f, package = "SynthesizerPlus")
source(ex("demo.R"), echo = TRUE) # a tour of the whole package
source(ex("closeness.R"), echo = TRUE) # closeness, perturbations, calibration
source(ex("privacy.R"), echo = TRUE) # releasing confidential microdata
source(ex("augmentation.R"), echo = TRUE) # more training data for ML modelsThe idea of combining empirical quantile functions with a Gaussian
copula follows the synthesizer
package by Mark van der Loo. SynthesizerPlus is an independent
implementation.
EUPL (European Union Public Licence)
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.