Comparison To Synthpop¶
SeqTrees is inspired by the same broad sequential synthesis idea used by Synthpop, but it makes a different design choice at the data boundary.
Synthpop¶
Synthpop1 is an R package for creating synthetic microdata. Its documentation describes variables as categorical or continuous and states that variables are synthesised one by one using sequential modelling. Replacements are drawn from conditional distributions fitted to the original data using parametric models or classification and regression trees.
Synthpop is designed to work directly with R data frames and their data types.
It includes many synthesis methods, utility/disclosure tools, and data-type
aware behavior. For example, low-cardinality numeric variables can be changed
to factors depending on settings such as minnumlevels.
SeqTrees¶
SeqTrees is deliberately narrower. It accepts pandas DataFrames and does no internal preprocessing by default. Input must contain no missing values and every variable must be one of:
- continuous: represented as
float; - discrete: represented as
intcategory codes.
SeqTrees does not accept one-hot encoding as the intended workflow. Binary
variables are simply discrete integer-coded variables with values such as 0
and 1.
Users should declare the modelling role of every variable:
model = SequentialTreeSynthesizer(
continuous_columns=["age", "bmi"],
discrete_columns=["sex_code", "income_bin", "risk_code"],
)
If both lists are omitted, SeqTrees can infer all-float columns as continuous
and all-integer columns as discrete. With preprocessor="ifcfill", SeqTrees
uses IFCTransformer.column_types_ so original categorical columns do
not generate unseen labels while original integer columns remain numeric.
Practical Difference¶
| Topic | Synthpop | SeqTrees |
|---|---|---|
| Language | R | Python |
| Input data | R data frames with type-aware behavior | pandas DataFrames |
| Categorical handling | Can use factor/categorical-aware methods | Integer codes, or opt-in IFCFill label encoding |
| Continuous handling | Parametric and tree-based numeric methods | Empirical or interpolated leaf sampling |
| Variable roles | Largely driven by data type and method settings | Explicitcontinuous_columns and discrete_columns |
| One-hot input | Not the core design point | Not intended; use one integer-coded categorical column |
| API style | R functions such assyn() |
Estimator-stylefit() / sample() |
| Backends | R modelling ecosystem | Native, scikit-learn, LightGBM |
SeqTrees is therefore closer to a Python estimator with a focused DataFrame preparation layer, while Synthpop is a broader R toolkit with more built-in data-type aware synthetic data machinery.
-
Beata Nowok, Gillian M. Raab, and Chris Dibben. Synthpop: bespoke creation of synthetic data in r. Journal of Statistical Software, 74(11):1–26, 2016. ↩