Skip to contents

Density, distribution function, quantile function, and random generation for the sinh-arcsinh distribution with four parameters mu, sigma, nu, and tau.

Usage

dsinharcsinh(x, mu = 0, sigma = 1, nu = 1, tau = 1, log = FALSE, cores = NULL)

psinharcsinh(
  q,
  mu = 0,
  sigma = 1,
  nu = 1,
  tau = 1,
  lower.tail = TRUE,
  log.p = FALSE,
  cores = NULL
)

qsinharcsinh(
  p,
  mu = 0,
  sigma = 1,
  nu = 1,
  tau = 1,
  lower.tail = TRUE,
  log.p = FALSE,
  cores = NULL
)

rsinharcsinh(n, mu = 0, sigma = 1, nu = 1, tau = 1, cores = NULL)

Arguments

x

vector of (non-negative integer) quantiles.

mu, sigma, nu, tau

vector of (non-negative) parameters.

log, log.p

logical indicating whether probabilities p are given as log(p).

cores

integer. Number of cores/threads to be used (requires OMP support).

q

vector of quantiles.

lower.tail

logical indicating whether probabilities are \(P[X \le x]\) (lower tail) or \(P[X > x]\) (upper tail).

p

vector of probabilities.

n

number of random values to return.

Details

The Sinh-Arcsinh generalizes the Normal distribution by separately controlling location, scale, skewness, and tail-heaviness and can thus produce a wide range of shapes. Using nu = 1 and tau = 1 results in a normal distribution.

All functions follow the usual conventions of d/p/q/r functions in base R.

Examples

## theoretical probabilities for a Sinh-Arcsinh distribution
## with mu = 0, sigma = 1, nu = 1, tau = 1 (default) the Sinh-Arcsinh distribution
## corresponds to the standard normal distribution
x <- seq(-5, 5, by = 0.1)
p <- dsinharcsinh(x)
plot(x, p, type = "l", lwd = 2)
lines(x, dnorm(x), col = 2, lty = 2, lwd = 2)


## corresponding empirical frequencies from a simulated sample
## with mu = 5, sigma = 3, nu = 0.7, tau = 0.7
set.seed(0)
y <- rsinharcsinh(500, mu = 5, sigma = 3, nu = 1.1, tau = 0.7)
hist(y)


## the quantile function is the inverse of the distribution function
psinharcsinh(qsinharcsinh(0.7))
#> [1] 0.7
qsinharcsinh(psinharcsinh(3))
#> [1] 3

## inversion using custom parameters mu = 5, sigma = 2, nu = 0.7, tau = 1.3
psinharcsinh(qsinharcsinh(0.7, 5, 2, 0.7, 1.3), 5, 2, 0.7, 1.3)
#> [1] 0.7000014
qsinharcsinh(psinharcsinh(3,  5, 2, 0.7, 1.3),  5, 2, 0.7, 1.3)
#> [1] 3