Learn R Programming

LambertW (version 0.6.9-1)

gamma_Taylor: Estimate gamma by Taylor approximation

Description

Computes an initial estimate of \(\gamma\) based on the Taylor approximation of the skewness of Lambert W \(\times\) Gaussian RVs around \(\gamma = 0\). See Details for the formula.

This is the initial estimate for IGMM and gamma_GMM.

Usage

gamma_Taylor(y, skewness.y = skewness(y), skewness.x = 0, degree = 3)

Value

Scalar; estimate of \(\gamma\).

Arguments

y

a numeric vector of data values.

skewness.y

skewness of \(y\); default: empirical skewness of data y.

skewness.x

skewness for input X; default: 0 (symmetric input).

degree

degree of the Taylor approximation; in Goerg (2011) it just uses the first order approximation (\(6 \cdot \gamma\)); a much better approximation is the third order (\(6 \cdot \gamma + 8 \cdot \gamma^3\)). By default it uses the better degree = 3 approximation.

Details

The first order Taylor approximation of the theoretical skewness \(\gamma_1\) (not to be confused with the skewness parameter \(\gamma\)) of a Lambert W x Gaussian random variable around \(\gamma = 0\) equals $$ \gamma_1(\gamma) = 6 \gamma + \mathcal{O}(\gamma^3). $$

Ignoring higher order terms, using the empirical estimate on the left hand side, and solving \(\gamma\) yields a first order Taylor approximation estimate of \(\gamma\) as $$ \widehat{\gamma}_{Taylor}^{(1)} = \frac{1}{6} \widehat{\gamma}_1(\mathbf{y}), $$ where \(\widehat{\gamma}_1(\mathbf{y})\) is the empirical skewness of the data \(\mathbf{y}\).

As the Taylor approximation is only good in a neighborhood of \(\gamma = 0\), the output of gamma_Taylor is restricted to the interval \((-0.5, 0.5)\).

The solution of the third order Taylor approximation $$ \gamma_1(\gamma) = 6 \gamma + 8 \gamma^3 + \mathcal{O}(\gamma^5),$$ is also supported. See code for the solution to this third order polynomial.

See Also

IGMM to estimate all parameters jointly.

Examples

Run this code

set.seed(2)
# a little skewness
yy <- rLambertW(n = 1000, theta = list(beta = c(0, 1), gamma = 0.1), 
                distname = "normal") 
# Taylor estimate is good because true gamma = 0.1 close to 0
gamma_Taylor(yy) 

# very highly negatively skewed
yy <- rLambertW(n = 1000, theta = list(beta = c(0, 1), gamma = -0.75), 
                distname = "normal") 
# Taylor estimate is bad since gamma = -0.75 is far from 0; 
# and gamma = -0.5 is the lower bound by default.
gamma_Taylor(yy) 

Run the code above in your browser using DataLab