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.
The rust
package implements the multivariate generalized ratio-of-uniforms method of simulating random variates from a d-dimensional continuous distribution. The user specifies (the log of) a positive target function f
that is proportional to the density function of the distribution.
We use the function ru
to simulate a sample of size 1000 from a two-dimensional standard normal distribution with strong positive correlation between the components. Of course, this particular example is purely illustrative: there are better ways to simulate from a multivariate normal distribution.
rho <- 0.9
covmat <- matrix(c(1, rho, rho, 1), 2, 2)
log_dmvnorm <- function(x, mean = rep(0, d), sigma = diag(d)) {
x <- matrix(x, ncol = length(x))
d <- ncol(x)
- 0.5 * (x - mean) %*% solve(sigma) %*% t(x - mean)
}
x <- ru(logf = log_dmvnorm, sigma = covmat, d = 2, n = 1000, init = c(0, 0))
From version 1.2.0 onwards the faster function ru_rcpp
can be used. See the vignette “Rusting Faster: Simulation using Rcpp” for details.
# Create an external pointer to a C++ function to evaluate the log-density.
ptr_bvn <- create_xptr("logdnorm2")
# Pass the external pointer to `ru_rcpp`.
x <- ru_rcpp(logf = ptr_bvn, rho = rho, d = 2, n = 1000, init = c(0, 0))
To get the current released version from CRAN:
See vignette("rust-a-vignette", package = "rust")
for an overview of the package, vignette("rust-b-when-to-use-vignette", package = "rust")
for guidance on when rust
can be used and vignette("rust-c-using-rcpp-vignette", package = "rust")
for information on how to take advantage of the Rcpp package.
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.