Learn R Programming

LambertW (version 0.6.4)

beta-utils: Utilities for parameter vector beta of the input distribution

Description

The parameter \(\boldsymbol \beta\) specifies the input distribution \(X \sim F_X(x \mid \boldsymbol \beta)\).

beta2tau converts \(\boldsymbol \beta\) to the transformation vector \(\tau = (\mu_x, \sigma_x, \gamma = 0, \alpha = 1, \delta = 0)\), which defines the Lambert W\(\times\) F random variable mapping from \(X\) to \(Y\) (see tau-utils). Parameters \(\mu_x\) and \(\sigma_x\) of \(X\) in general depend on \(\boldsymbol \beta\) (and may not even exist for use.mean.variance = TRUE; in this case beta2tau will throw an error).

check_beta checks if \(\boldsymbol \beta\) defines a valid distribution, e.g., for normal distribution 'sigma' must be positive.

estimate_beta estimates \(\boldsymbol \beta\) for a given \(F_X\) using MLE or methods of moments. Closed form solutions are used if they exist; otherwise the MLE is obtained numerically using fitdistr.

get_beta_names returns (typical) names for each component of \(\boldsymbol \beta\).

Depending on the distribution \(\boldsymbol \beta\) has different length and names: e.g., for a "normal" distribution beta is of length \(2\) ("mu", "sigma"); for an "exp"onential distribution beta is a scalar (rate "lambda").

Usage

beta2tau(beta, distname, use.mean.variance = TRUE)

check_beta(beta, distname)

estimate_beta(x, distname)

get_beta_names(distname)

Arguments

beta

numeric; vector \(\boldsymbol \beta\) of the input distribution; specifications as they are for the R implementation of this distribution. For example, if distname = "exp", then beta = 2 means that the rate of the exponential distribution equals \(2\); if distname = "normal" then beta = c(1,2) means that the mean and standard deviation are 1 and 2, respectively.

distname

character; name of input distribution; see get_distnames.

use.mean.variance

logical; if TRUE it uses mean and variance implied by \(\boldsymbol \beta\) to do the transformation (Goerg 2011). If FALSE, it uses the alternative definition from Goerg (2016) with location and scale parameter.

x

a numeric vector of real values (the input data).

Value

beta2tau returns a numeric vector, which is \(\tau = \tau(\boldsymbol \beta)\) implied by beta and distname.

check_beta throws an error if \(\boldsymbol \beta\) is not appropriate for the given distribution; e.g., if it has too many values or if they are not within proper bounds (e.g., beta['sigma'] of a "normal" distribution must be positive).

estimate_beta returns a named vector with estimates for \(\boldsymbol \beta\) given x.

get_beta_names returns a vector of characters.

Details

estimate_beta does not do any data transformation as part of the Lambert W\(\times\) F input/output framework. For an initial estimate of \(\theta\) for Lambert W\(\times\) F distributions see get_initial_theta and get_initial_tau.

A quick initial estimate of \(\theta\) is obtained by first finding the (approximate) input \(\widehat{\boldsymbol x}_{\widehat{\theta}}\) by IGMM, and then getting the MLE of \(\boldsymbol \beta\) for this input data \(\widehat{\boldsymbol x}_{\widehat{\theta}} \sim F_X(x \mid \boldsymbol \beta)\) (usually using fitdistr).

See Also

tau-utils, theta-utils

Examples

Run this code
# NOT RUN {
# By default: delta = gamma = 0 and alpha = 1
beta2tau(c(1, 1), distname = "normal") 
# }
# NOT RUN {
  beta2tau(c(1, 4, 1), distname = "t")
# }
# NOT RUN {
beta2tau(c(1, 4, 1), distname = "t", use.mean.variance = FALSE)
beta2tau(c(1, 4, 3), distname = "t") # no problem


# }
# NOT RUN {
check_beta(beta = c(1, 1, -1), distname = "normal")
# }
# NOT RUN {

set.seed(124)
xx <- rnorm(100)^2
estimate_beta(xx, "exp")
estimate_beta(xx, "chisq")

# }

Run the code above in your browser using DataLab