rtn function

Truncated Normal Distribution RNG

Truncated Normal Distribution RNG

Sample from Truncated Normal distributions

rtn(.mean = rep(0, 1), .sd = rep(1, length(.mean)), .low = rep(-Inf, length(.mean)), .high = rep(Inf, length(.mean)), .checks = TRUE)

Arguments

  • .mean: Length K vector with the means of the K Normal distributions prior to truncation
  • .sd: Length K vector with the standard deviations of the K Normal distributions prior to truncation
  • .low: Length K vector with the lower truncation bound of the K Normal distributions prior to truncation
  • .high: Length K vector with the upper truncation bound of the K Normal distributions prior to truncation
  • .checks: Length 1 logical vector indicating whether to perform checks (safer) or not (faster) on the input parameters

Returns

A length K vector of expectations corresponding to the Truncated Normal distributions. NAs are returned (with a warning) for invalid parameter values.

Details

The special values of -Inf and Inf are valid values in the .low and .high arguments, respectively. The implementation is from Robert (1995). The computation is written in Rcpp-based C++ code, but respects R's RNG state. The draws from this function are reproducible because it respects R's RNG state. Draws using this algorithm (whether implemented in R code or C++) will be the same if seeded correctly. However, you should not expect these draws to match those from another algorithm.

Examples

set.seed(1) rtn(0, 1, -Inf, Inf) # single draw from a single distribution ## [1] -0.6264538 set.seed(1) rtn(0, 1, -Inf, Inf) # again, because it respects the RNG state ## [1] -0.6264538 rtn(rep(0, 3), rep(1, 3), rep(-Inf, 3), rep(Inf, 3) ) # multiple draws from a single distribution ## [1] 0.1836433 -0.8356286 1.5952808 rtn(c(0, 0), c(1, 1), c(-Inf, 5), c(1, Inf) ) # multiple draws, each from a different distribution ## [1] 0.3295078 5.3917301

References

Robert, Christian P. ``Simulation of truncated normal variables''. Statistics and Computing 5.2 (1995): 121-125. http://dx.doi.org/10.1007/BF00143942

Author(s)

Jonathan Olmsted

  • Maintainer: Jonathan Olmsted
  • License: GPL (>= 2)
  • Last published: 2017-11-21