The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
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[@]dogado.de.

Type: Package
Title: Rcpp-Based Truncated Normal Distribution RNG and Family
Version: 0.2-2
Date: 2017-11-21
Author: Jonathan Olmsted [aut, cre]
Maintainer: Jonathan Olmsted <jpolmsted@gmail.com>
Description: R-level and C++-level functionality to generate random deviates from and calculate moments of a Truncated Normal distribution using the algorithm of Robert (1995) <doi:10.1007/BF00143942>. In addition to RNG, functions for calculating moments, densities, and entropies are provided at both levels.
URL: http://github.com/olmjo/RcppTN
BugReports: http://github.com/olmjo/RcppTN/issues
License: GPL-2 | GPL-3 [expanded from: GPL (≥ 2)]
Suggests: testthat
LinkingTo: Rcpp
Imports: Rcpp
RoxygenNote: 6.0.1
NeedsCompilation: yes
Packaged: 2017-11-21 10:36:54 UTC; olmjo
Repository: CRAN
Date/Publication: 2017-11-21 11:42:30 UTC

Truncated Normal Distribution Density

Description

Calculate density of Truncated Normal distributions

Usage

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

Arguments

.x

Length K vector of the points at which to evaluate the density

.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

Logical indicating whether inputs and outputs should be checked and either stop (for bad inputs) or warn (for likely bad outputs)

Value

Length K vector with the entropies associated with each of the K Truncated Normal distributions

Author(s)

Jonathan Olmsted

Examples

lows <- c(-1, 5, -100, 4, 4, -100, 7)
highs <- c(1, 100, 10, 7, 4.1, 100, 100)
dtn(.x = rep(0, length(lows)),
    .mean = rep(0, length(lows)),
    .sd = rep(1, length(lows)),
    .high = highs
    )

Truncated Normal Distribution Entropy

Description

Calculate entropy of Truncated Normal distributions

Usage

enttn(.mean = rep(0, 1), .sd = rep(1, length(.mean)), .low = rep(-Inf,
  length(.mean)), .high = rep(Inf, length(.mean)))

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

Value

Length K vector with the entropies associated with each of the K Truncated Normal distributions

Author(s)

Jonathan Olmsted

Examples

lows <- c(-1, 5, -100, 4, 4, -100, 7)
highs <- c(1, 100, 10, 7, 4.1, 100, 100)
enttn(.mean = rep(0, length(lows)),
      .sd = rep(1, length(lows)),
      .low = lows,
      .high = highs
      )


Truncated Normal Distribution Expectation

Description

Calculate expectation of Truncated Normal distributions

Usage

etn(.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

Details

The special values of -Inf and Inf are valid values in the .low and .high arguments, respectively.

Value

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

Author(s)

Jonathan Olmsted

Examples

etn() ## 0
etn(0, 1, -Inf, Inf) ## 0
etn(0, 1, -9999, 9999) ## 0

etn(0, 1, 0, Inf) ## 0.798

etn(0, 1, Inf, -Inf) ## NA with warning

etn(c(0, 0),
    c(1, 1),
    c(-Inf, 5),
    c(1, Inf)
    ) ## multiple expectations



Truncated Normal Distribution RNG

Description

Sample from Truncated Normal distributions

Usage

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

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.

Value

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

Author(s)

Jonathan Olmsted

References

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

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

Truncated Normal Distribution Variance

Description

Calculate variance of Truncated Normal distributions

Usage

vtn(.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

Details

The special values of -Inf and Inf are valid values in the .low and .high arguments, respectively.

Value

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

Author(s)

Jonathan Olmsted

Examples

vtn() ## 1
vtn(0, 1, -Inf, Inf) ## 1
vtn(0, 1, -9999, 9999) ## 1

vtn(0, 1, 0, Inf) ## 0.36338

vtn(0, 1, Inf, -Inf) ## NA with warning

vtn(c(0, 0),
    c(1, 1),
    c(-Inf, 5),
    c(1, Inf)
    ) ## multiple variances

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.
Health stats visible at Monitor.