{
  "_id": "6ad263267af56c173f1206a9",
  "Package": "SynthesizerPlus",
  "Type": "Package",
  "Title": "Synthetic Data Generation with Copulas, Evaluation and\nMulti-Format I/O",
  "Version": "0.2.9",
  "Authors@R": "person(\"Bogdan\", \"Oancea\", email = \"bogdan.oancea@gmail.com\",\nrole = c(\"aut\", \"cre\", \"cph\"))",
  "Description": "Generates synthetic versions of numeric, categorical,\nmixed-type and time-series data. Marginal distributions are\nmodelled with interpolated empirical quantile functions and\ndependence with Gaussian or Student-t copulas (Sklar, 1959).\nDiscrete and categorical variables enter the copula through the\ndistributional transform (Ruschendorf, 2009,\n<doi:10.1016/j.jspi.2009.05.030>), and their latent\ncorrelations are estimated by maximum likelihood as polychoric\n(Olsson, 1979, <doi:10.1007/BF02296207>) and polyserial\n(Olsson, Drasgow and Dorans, 1982, <doi:10.1007/BF02294164>)\ncorrelations. Missing values are modelled by missingness\nindicators inside the copula, so that missingness may depend on\nother variables. Supports stratified models, a closeness\nparameter with calibration to a target distance or\ndisclosure-risk level, chunked generation of very large data\nsets, copula vector-autoregressive and bootstrap time-series\nsynthesis, augmentation of small training sets for machine\nlearning, and random generation from multivariate distributions\nand elliptical and Archimedean copulas. Fidelity, utility and\ndisclosure risk are assessed with marginal distances,\nassociation matrices, propensity score mean-squared error\n(Snoke et al., 2018, <doi:10.1111/rssa.12358>),\nconfidence-interval overlap, correct attribution probability\nand distance to closest record, with 'ggplot2' visualisations.\nData can be read from and written to CSV, TSV, RDS, RData,\nParquet, Feather, HDF5, JSON, NDJSON, Excel, SPSS, Stata, SAS\nand fst files. The empirical-quantile and copula approach\nbuilds on ideas of the 'synthesizer' package by Mark van der\nLoo.",
  "License": "EUPL (>= 1.2)",
  "URL": "https://github.com/bogdanoancea/SynthesizerPlus",
  "BugReports": "https://github.com/bogdanoancea/SynthesizerPlus/issues",
  "VignetteBuilder": "knitr",
  "Config/testthat/edition": "3",
  "Encoding": "UTF-8",
  "LazyData": "true",
  "Language": "en-GB",
  "Config/roxygen2/version": "8.1.0",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-10-16 17:42:21 UTC",
    "User": "root"
  },
  "Author": "Bogdan Oancea [aut, cre, cph]",
  "Maintainer": "Bogdan Oancea <bogdan.oancea@gmail.com>",
  "Repository": "https://cran.r-universe.dev",
  "Date/Publication": "2026-10-16 13:30:15 UTC",
  "RemoteUrl": "https://github.com/cran/SynthesizerPlus",
  "RemoteRef": "HEAD",
  "RemoteSha": "0432dc5c4cba088a48f1784c462767381b330353",
  "_user": "cran",
  "_type": "src",
  "_file": "SynthesizerPlus_0.2.9.tar.gz",
  "_fileid": "https://r2.ropensci.org/a67fbc18342fe78b2c3368039f2d8055c8ea33bb9fa302d5f416ee2f3a1d5438",
  "_filesize": 2462189,
  "_sha256": "a67fbc18342fe78b2c3368039f2d8055c8ea33bb9fa302d5f416ee2f3a1d5438",
  "_expires": "2027-01-24T17:47:16.000Z",
  "_created": "2026-10-16T17:42:21.000Z",
  "_published": "2026-10-16T17:47:18.294Z",
  "_buildurl": "https://github.com/r-universe/cran/actions/runs/38941217159",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_jobs": [
    {
      "job": 117110909843,
      "time": 163,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "12062978891"
    },
    {
      "job": 117110909922,
      "time": 192,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12064055886"
    },
    {
      "job": 117109179256,
      "time": 243,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12062379589"
    },
    {
      "job": 117110909772,
      "time": 115,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "12062484197"
    },
    {
      "job": 117110909923,
      "time": 129,
      "config": "windows-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "12062849242"
    },
    {
      "job": 117110909632,
      "time": 171,
      "config": "windows-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "12063287838"
    }
  ],
  "_upstream": "https://github.com/cran/SynthesizerPlus",
  "_commit": {
    "id": "0432dc5c4cba088a48f1784c462767381b330353",
    "author": "Bogdan Oancea <bogdan.oancea@gmail.com>",
    "committer": "cran-robot <csardi.gabor+cran@gmail.com>",
    "message": "version 0.2.9\n",
    "time": 1792157415
  },
  "_maintainer": {
    "name": "Bogdan Oancea",
    "email": "bogdan.oancea@gmail.com",
    "login": "bogdanoancea",
    "description": "I am full Professor at the University of Bucharest.\nI have more than 25 years of programming experience using C, C++, Java, R, Python",
    "uuid": 9313914
  },
  "_distro": "resolute",
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.1.0",
      "role": "Depends"
    },
    {
      "package": "ggplot2",
      "version": ">= 3.4.0",
      "role": "Imports"
    },
    {
      "package": "stats",
      "role": "Imports"
    },
    {
      "package": "tools",
      "role": "Imports"
    },
    {
      "package": "utils",
      "role": "Imports"
    },
    {
      "package": "arrow",
      "role": "Suggests"
    },
    {
      "package": "data.table",
      "role": "Suggests"
    },
    {
      "package": "fst",
      "role": "Suggests"
    },
    {
      "package": "haven",
      "role": "Suggests"
    },
    {
      "package": "hdf5r",
      "role": "Suggests"
    },
    {
      "package": "jsonlite",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "MASS",
      "role": "Suggests"
    },
    {
      "package": "nanoparquet",
      "role": "Suggests"
    },
    {
      "package": "openxlsx",
      "role": "Suggests"
    },
    {
      "package": "readxl",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    },
    {
      "package": "rpart",
      "role": "Suggests"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    },
    {
      "package": "writexl",
      "role": "Suggests"
    }
  ],
  "_owner": "cran",
  "_selfowned": false,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2026-42",
      "n": 1
    }
  ],
  "_tags": [
    {
      "name": "0.2.9",
      "date": "2026-10-16"
    }
  ],
  "_stars": 0,
  "_contributors": [
    {
      "user": "bogdanoancea",
      "count": 1,
      "uuid": 9313914
    }
  ],
  "_userbio": {
    "uuid": 6899542,
    "type": "organization",
    "name": "cran",
    "followers": 631,
    "description": "Unofficial read-only mirror of all CRAN R packages"
  },
  "_downloads": {
    "count": 0,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/SynthesizerPlus"
  },
  "_devurl": "https://github.com/bogdanoancea/synthesizerplus",
  "_searchresults": 0,
  "_rbuild": "4.6.1",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/manual.pdf",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "extra/SynthesizerPlus.html"
  ],
  "_cranurl": false,
  "_releases": [
    {
      "version": "0.2.9",
      "date": "2026-10-16"
    }
  ],
  "_exports": [
    "association_matrix",
    "augment_data",
    "autoplot",
    "calibrate_closeness",
    "ci_overlap",
    "compare_synthetic",
    "copula_correlation",
    "dcr",
    "disclosure_risk",
    "discriminator_auc",
    "fit_synthesizer",
    "generate",
    "generate_to_file",
    "make_corr",
    "margin_categorical",
    "margin_empirical",
    "marginal_metrics",
    "match_types",
    "perturbation",
    "plot_acf",
    "plot_association",
    "plot_categorical",
    "plot_dcr",
    "plot_marginals",
    "plot_pairs",
    "plot_qq",
    "plot_ts",
    "pmse",
    "r_copula",
    "r_dirichlet",
    "r_mvdist",
    "r_mvlnorm",
    "r_mvmixture",
    "r_mvnorm",
    "r_mvskewnorm",
    "r_mvt",
    "read_data",
    "supported_formats",
    "synthesize",
    "ts_windows",
    "write_data"
  ],
  "_datasets": [
    {
      "name": "census_sim",
      "title": "Simulated census-like microdata",
      "object": "census_sim",
      "class": [
        "data.frame"
      ],
      "fields": [
        "person_id",
        "age",
        "sex",
        "region",
        "education",
        "employment",
        "household_size",
        "income"
      ],
      "rows": 5000,
      "table": true,
      "tojson": true
    }
  ],
  "_help": [
    {
      "page": "association_matrix",
      "title": "Mixed-type association matrix",
      "topics": [
        "association_matrix"
      ]
    },
    {
      "page": "augment_data",
      "title": "Augment a small training set with synthetic data",
      "topics": [
        "augment_data",
        "augment_data.data.frame",
        "augment_data.default",
        "augment_data.matrix",
        "augment_data.ts"
      ]
    },
    {
      "page": "autoplot.sp_comparison",
      "title": "Plot a comparison of real and synthetic data",
      "topics": [
        "autoplot.sp_comparison",
        "plot.sp_comparison"
      ]
    },
    {
      "page": "calibrate_closeness",
      "title": "Calibrate the closeness of synthetic to real data",
      "topics": [
        "calibrate_closeness"
      ]
    },
    {
      "page": "census_sim",
      "title": "Simulated census-like microdata",
      "topics": [
        "census_sim"
      ]
    },
    {
      "page": "ci_overlap",
      "title": "Confidence-interval overlap of regression coefficients",
      "topics": [
        "ci_overlap"
      ]
    },
    {
      "page": "compare_synthetic",
      "title": "Compare synthetic data with the real data",
      "topics": [
        "compare_synthetic"
      ]
    },
    {
      "page": "copula_correlation",
      "title": "Inspect a fitted synthesizer",
      "topics": [
        "copula_correlation",
        "summary.sp_synthesizer"
      ]
    },
    {
      "page": "dcr",
      "title": "Distance to closest record (disclosure risk)",
      "topics": [
        "dcr"
      ]
    },
    {
      "page": "disclosure_risk",
      "title": "Disclosure risk of synthetic microdata",
      "topics": [
        "disclosure_risk"
      ]
    },
    {
      "page": "discriminator_auc",
      "title": "Discriminator AUC",
      "topics": [
        "discriminator_auc"
      ]
    },
    {
      "page": "fit_synthesizer",
      "title": "Fit a synthetic-data model",
      "topics": [
        "fit_synthesizer",
        "fit_synthesizer.data.frame",
        "fit_synthesizer.default",
        "fit_synthesizer.matrix"
      ]
    },
    {
      "page": "fit_synthesizer.ts",
      "title": "Fit a synthesizer to a (multivariate) time series",
      "topics": [
        "fit_synthesizer.ts"
      ]
    },
    {
      "page": "generate",
      "title": "Generate synthetic data from a fitted model",
      "topics": [
        "generate",
        "generate.sp_synthesizer",
        "generate.sp_ts_synthesizer"
      ]
    },
    {
      "page": "generate_to_file",
      "title": "Generate a large synthetic data set directly to disk",
      "topics": [
        "generate_to_file"
      ]
    },
    {
      "page": "make_corr",
      "title": "Build a correlation matrix with a given structure",
      "topics": [
        "make_corr"
      ]
    },
    {
      "page": "margin_categorical",
      "title": "Marginal quantile functions for r_mvdist()",
      "topics": [
        "margin_categorical",
        "margin_empirical"
      ]
    },
    {
      "page": "marginal_metrics",
      "title": "Compare marginal distributions of real and synthetic data",
      "topics": [
        "marginal_metrics"
      ]
    },
    {
      "page": "match_types",
      "title": "Coerce the columns of a data frame to the classes of a template",
      "topics": [
        "match_types"
      ]
    },
    {
      "page": "mvdist",
      "title": "Multivariate random number generators",
      "topics": [
        "mvdist",
        "r_dirichlet",
        "r_mvlnorm",
        "r_mvmixture",
        "r_mvnorm",
        "r_mvskewnorm",
        "r_mvt"
      ]
    },
    {
      "page": "perturbation",
      "title": "Perturbations of the synthetic data distribution",
      "topics": [
        "perturbation"
      ]
    },
    {
      "page": "plot_association",
      "title": "Plot association matrices of real and synthetic data",
      "topics": [
        "plot_association"
      ]
    },
    {
      "page": "plot_dcr",
      "title": "Plot distances to the closest record",
      "topics": [
        "plot_dcr"
      ]
    },
    {
      "page": "plot_marginals",
      "title": "Plot marginal distributions of real and synthetic data",
      "topics": [
        "plot_categorical",
        "plot_marginals"
      ]
    },
    {
      "page": "plot_pairs",
      "title": "Scatter-plot matrix of real and/or synthetic data",
      "topics": [
        "plot_pairs"
      ]
    },
    {
      "page": "plot_qq",
      "title": "Quantile-quantile plots of synthetic against real data",
      "topics": [
        "plot_qq"
      ]
    },
    {
      "page": "plot_ts",
      "title": "Plot real and synthetic time series",
      "topics": [
        "plot_acf",
        "plot_ts"
      ]
    },
    {
      "page": "pmse",
      "title": "Propensity-score utility (pMSE)",
      "topics": [
        "pmse"
      ]
    },
    {
      "page": "r_copula",
      "title": "Sample from a copula",
      "topics": [
        "r_copula"
      ]
    },
    {
      "page": "r_mvdist",
      "title": "Generate data from a copula with arbitrary marginal distributions",
      "topics": [
        "r_mvdist"
      ]
    },
    {
      "page": "read_data",
      "title": "Read a data set from a file",
      "topics": [
        "read_data"
      ]
    },
    {
      "page": "simulate.sp_synthesizer",
      "title": "Simulate several synthetic data sets",
      "topics": [
        "simulate.sp_synthesizer",
        "simulate.sp_ts_synthesizer"
      ]
    },
    {
      "page": "supported_formats",
      "title": "Supported file formats",
      "topics": [
        "supported_formats"
      ]
    },
    {
      "page": "synthesize",
      "title": "Fit a synthesizer and generate synthetic data in one step",
      "topics": [
        "synthesize"
      ]
    },
    {
      "page": "ts_windows",
      "title": "Build a lagged-feature table from one or more time series",
      "topics": [
        "ts_windows"
      ]
    },
    {
      "page": "write_data",
      "title": "Write a data set to a file",
      "topics": [
        "write_data"
      ]
    }
  ],
  "_readme": "https://github.com/cran/SynthesizerPlus/raw/HEAD/README.md",
  "_rundeps": [
    "cli",
    "cpp11",
    "farver",
    "ggplot2",
    "glue",
    "gtable",
    "isoband",
    "labeling",
    "lifecycle",
    "R6",
    "RColorBrewer",
    "rlang",
    "S7",
    "scales",
    "vctrs",
    "viridisLite",
    "withr"
  ],
  "_vignettes": [
    {
      "source": "augmentation.Rmd",
      "filename": "augmentation.html",
      "title": "Augmenting small training sets for machine learning",
      "engine": "knitr::rmarkdown",
      "headings": [
        "What augmentation can and cannot do",
        "Tabular data: 60 observations",
        "Time series: forecasting from a short history",
        "Checklist"
      ],
      "created": "2026-10-16 13:30:15",
      "modified": "2026-10-16 13:30:15",
      "commits": 1
    },
    {
      "source": "closeness.Rmd",
      "filename": "closeness.html",
      "title": "Controlling how close synthetic data are to the real data",
      "engine": "knitr::rmarkdown",
      "headings": [
        "One knob: closeness",
        "Record level: further from real records, same distributions",
        "Distribution level: scenarios",
        "Hitting a target distance",
        "Use with augmentation"
      ],
      "created": "2026-10-16 13:30:15",
      "modified": "2026-10-16 13:30:15",
      "commits": 1
    },
    {
      "source": "evaluating-synthetic-data.Rmd",
      "filename": "evaluating-synthetic-data.html",
      "title": "Evaluating and visualising synthetic data",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Everything at once: compare_synthetic()",
        "Marginal fidelity",
        "Dependence",
        "General utility: can a classifier tell them apart?",
        "Specific utility: do analyses give the same answers?",
        "Disclosure risk: distance to closest record",
        "Plots from a comparison object",
        "References"
      ],
      "created": "2026-10-16 13:30:15",
      "modified": "2026-10-16 13:30:15",
      "commits": 1
    },
    {
      "source": "multivariate-distributions.Rmd",
      "filename": "multivariate-distributions.html",
      "title": "Generating data from multivariate distributions",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Correlation matrices",
        "Classical multivariate distributions",
        "Copulas",
        "Arbitrary margins: r_mvdist()",
        "References"
      ],
      "created": "2026-10-16 13:30:15",
      "modified": "2026-10-16 13:30:15",
      "commits": 1
    },
    {
      "source": "getting-started.Rmd",
      "filename": "getting-started.html",
      "title": "Getting started with SynthesizerPlus",
      "engine": "knitr::rmarkdown",
      "headings": [
        "The model in one paragraph",
        "Fit once, generate many times",
        "Supported column types",
        "Missing values",
        "Stratified models",
        "Controlling the dependence",
        "Heavy tails: the t copula",
        "Identifiers, model size and privacy",
        "Multiple synthetic data sets",
        "Where next"
      ],
      "created": "2026-10-16 13:30:15",
      "modified": "2026-10-16 13:30:15",
      "commits": 1
    },
    {
      "source": "file-formats.Rmd",
      "filename": "file-formats.html",
      "title": "Reading and writing data: CSV, Parquet, HDF5 and more",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Supported formats",
        "Writing and reading",
        "Parquet and Feather (Apache Arrow)",
        "HDF5",
        "JSON, NDJSON, Excel, SPSS, Stata, SAS, fst",
        "Synthesising straight from a file to a file",
        "Very large synthetic data sets"
      ],
      "created": "2026-10-16 13:30:15",
      "modified": "2026-10-16 13:30:15",
      "commits": 1
    },
    {
      "source": "regularisation.Rmd",
      "filename": "regularisation.html",
      "title": "Regularising high-variance models with synthetic data",
      "engine": "knitr::rmarkdown",
      "headings": [
        "The idea",
        "How much synthetic data?",
        "Where the gain comes from: bias and variance",
        "Seeing the variance",
        "Compared with bagging",
        "Tuning the amount of synthetic data",
        "Summary",
        "References"
      ],
      "created": "2026-10-16 13:30:15",
      "modified": "2026-10-16 13:30:15",
      "commits": 1
    },
    {
      "source": "privacy.Rmd",
      "filename": "privacy.html",
      "title": "Releasing confidential microdata as synthetic data",
      "engine": "knitr::rmarkdown",
      "headings": [
        "The confidential file",
        "Step 1: how risky would releasing the real data be?",
        "Step 2: a synthetic file",
        "Step 3: near-copies and the amount of noise",
        "Step 4: set the noise to meet a risk threshold",
        "Step 5: check the released file",
        "Targeted noise",
        "Good practice",
        "References"
      ],
      "created": "2026-10-16 13:30:15",
      "modified": "2026-10-16 13:30:15",
      "commits": 1
    },
    {
      "source": "time-series.Rmd",
      "filename": "time-series.html",
      "title": "Synthetic time series",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Copula-VAR",
        "Several series",
        "Bootstraps",
        "Practical notes",
        "References"
      ],
      "created": "2026-10-16 13:30:15",
      "modified": "2026-10-16 13:30:15",
      "commits": 1
    }
  ],
  "_score": 3.6532125137753435,
  "_indexed": true,
  "_nocasepkg": "synthesizerplus",
  "_universes": [
    "cran",
    "bogdanoancea"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.2.9",
      "date": "2026-10-16T17:44:41.000Z",
      "distro": "resolute",
      "commit": "0432dc5c4cba088a48f1784c462767381b330353",
      "fileid": "https://r2.ropensci.org/09f8a9dc76ee4df167f9a9f79c179a1afa9720ae38e2cddb4974d3483f7a2b01",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/38941217159"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "0.2.9",
      "date": "2026-10-16T17:44:44.000Z",
      "distro": "resolute",
      "commit": "0432dc5c4cba088a48f1784c462767381b330353",
      "fileid": "https://r2.ropensci.org/97401edc9ac931b9329dbb3997917c6730d71a17343f6a8f0d47ae19dec75724",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/38941217159"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.2.9",
      "date": "2026-10-16T17:44:57.000Z",
      "commit": "0432dc5c4cba088a48f1784c462767381b330353",
      "fileid": "https://r2.ropensci.org/e8ef5139d98d05021d066a3ae22e74bbc41ff095e00cec6d157801fcc30e4fe6",
      "status": "success",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/38941217159"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.2.9",
      "date": "2026-10-16T17:43:48.000Z",
      "commit": "0432dc5c4cba088a48f1784c462767381b330353",
      "fileid": "https://r2.ropensci.org/34ba861113d9aace5308b429805a3ade30ebd12f6d41a02e50248eb2216289a1",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/38941217159"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "0.2.9",
      "date": "2026-10-16T17:44:02.000Z",
      "commit": "0432dc5c4cba088a48f1784c462767381b330353",
      "fileid": "https://r2.ropensci.org/f0612ead6064b53fb2f4d4c6c9efcaea33016e1a8ff735bf1df9deeb4216d567",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/38941217159"
    }
  ]
}