R: Estimate delta

delta_GMM {LambertW} | R Documentation

## Estimate delta

### Description

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

    # 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

[Package LambertW version 0.6.7 Index]