The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
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[@]metanet.ch.

Migrating from synthpop

Why switch?

synthpop excels at disclosure-controlled individual-level microdata but lacks joint distribution modeling via copulas. rsdv uses a Gaussian copula to preserve inter-column correlations.

Side-by-side comparison

synthpop workflow

library(synthpop)
synth <- syn(adult_income[, c("age", "occupation", "income")])
synthetic_data <- synth$syn

rsdv workflow

library(rsdv)

set.seed(42)

meta  <- metadata(adult_income) |>
  set_column_type("age",        "numerical") |>
  set_column_type("occupation", "categorical") |>
  set_column_type("income",     "categorical")

syn   <- gaussian_copula_synthesizer(meta)
syn   <- fit(syn, adult_income)
synthetic_data <- sample(syn, n = nrow(adult_income))

Key differences

Feature synthpop rsdv
Correlation modeling CART-based sequential Gaussian copula over all column types
Column constraints Limited Equality, inequality, fixed combos, custom
Conditional sampling Via predictor order sample_conditions() on categorical values
Quality metrics Built-in utility measures KS, TVD, correlation & contingency similarity, ML efficacy
Diagnostics None Validity report (ranges, categories, key uniqueness)
Privacy metrics None NNDR, attribute disclosure risk
Python interop No API-compatible with SDV

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.