SimJoint: Simulate Joint Distribution

Simulate multivariate correlated data given nonparametric marginals and their joint structure characterized by a Pearson or Spearman correlation matrix. The simulator engages the problem from a purely computational perspective. It assumes no statistical models such as copulas or parametric distributions, and can approximate the target correlations regardless of theoretical feasibility. The algorithm integrates and advances the Iman-Conover (1982) approach <doi:10.1080/03610918208812265> and the Ruscio-Kaczetow iteration (2008) <doi:10.1080/00273170802285693>. Package functions are carefully implemented in C++ for squeezing computing speed, suitable for large input in a manycore environment. Precision of the approximation and computing speed both substantially outperform various CRAN packages to date. Benchmarks are detailed in function examples. A simple heuristic algorithm is additionally designed to optimize the joint distribution in the post-simulation stage. The heuristic demonstrated good potential of achieving the same level of precision of approximation without the enhanced Iman-Conover-Ruscio-Kaczetow. The package contains a copy of Permuted Congruential Generator from <>.

Version: 0.3.7
Imports: Rcpp (≥ 1.0.0), RcppParallel
LinkingTo: Rcpp, RcppParallel, RcppArmadillo
Suggests: R.rsp
Published: 2020-04-14
Author: Charlie Wusuo Liu
Maintainer: Charlie Wusuo Liu <liuwusuo at>
License: GPL-3
NeedsCompilation: yes
SystemRequirements: GNU make
Materials: NEWS
CRAN checks: SimJoint results


Reference manual: SimJoint.pdf
Vignettes: SimulatedJointDistribution
Package source: SimJoint_0.3.7.tar.gz
macOS binaries: r-release (arm64): SimJoint_0.3.7.tgz, r-release (x86_64): SimJoint_0.3.7.tgz, r-oldrel: SimJoint_0.3.7.tgz
Old sources: SimJoint archive


Please use the canonical form to link to this page.