LambertW (version 0.6.4)

delta_GMM: Estimate delta

Description

This function minimizes the Euclidean distance between the sample kurtosis of the back-transformed data \(W_{\delta}(\boldsymbol z)\) and a user-specified target kurtosis as a function of \(\delta\) (see References). Only an iterative application of this function will give a good estimate of \(\delta\) (see IGMM).

Usage

delta_GMM(z, type = c("h", "hh"), kurtosis.x = 3, skewness.x = 0,
  delta.init = delta_Taylor(z), tol = .Machine$double.eps^0.25,
  not.negative = FALSE, optim.fct = c("nlm", "optimize"), lower = -1,
  upper = 3)

Arguments

z

a numeric vector of data values.

type

type of Lambert W \(\times\) F distribution: skewed "s"; heavy-tail "h"; or skewed heavy-tail "hh".

kurtosis.x

theoretical kurtosis of the input X; default: 3 (e.g., for \(X \sim\) Gaussian).

skewness.x

theoretical skewness of the input X. Only used if type = "hh"; default: 0 (e.g., for \(X \sim\) symmetric).

delta.init

starting value for optimization; default: delta_Taylor.

tol

a positive scalar; tolerance level for terminating the iterative algorithm; default: .Machine$double.eps^0.25.

not.negative

logical; if TRUE the estimate for \(\delta\) is restricted to the non-negative reals. Default: FALSE.

optim.fct

which R optimization function should be used. Either 'optimize' (only for type = 'h' and if not.negative = FALSE) or 'nlm'. Performance-wise there is no big difference.

lower, upper

lower and upper bound for optimization if optim.fct = 'optimize' and not.negative = FALSE. Default: -1 and 3 (this covers most real-world heavy-tail scenarios).

Value

A list with two elements:

delta

optimal \(\delta\) for data \(z\),

iterations

number of iterations (NA for 'optimize').

See Also

gamma_GMM for the skewed version of this function; IGMM to estimate all parameters jointly.

Examples

Run this code
# NOT RUN {
# very heavy-tailed (like a Cauchy)
y <- rLambertW(n = 1000, theta = list(beta = c(1, 2), delta = 1), 
               distname = "normal")
delta_GMM(y) # after the first iteration

# }

Run the code above in your browser using DataLab