Learn R Programming

VGAM (version 0.8-1)

skewnormal1: Univariate Skew-Normal Distribution Family Function

Description

Maximum likelihood estimation of the shape parameter of a univariate skew-normal distribution.

Usage

skewnormal1(lshape = "identity", earg = list(), ishape = NULL, nsimEIM=NULL)

Arguments

lshape
Link function applied to the shape parameter. See Links for more choices.
earg
List. Extra argument for the link. See earg in Links for general information.
ishape
Optional inital value for the shape parameter. The default is to choose one internally. See the note below.

Value

  • An object of class "vglmff" (see vglmff-class). The object is used by modelling functions such as vglm, and vgam.

Details

The univariate skew-normal distribution has a density function that can be written $$f(y) = 2 \, \phi(y) \, \Phi(\alpha y)$$ where $\alpha$ is the shape parameter. Here, $\phi$ is the standard normal density and $\Phi$ its cumulative distribution function. When $\alpha=0$ the result is a standard normal distribution. When $\alpha=1$ it models the distribution of the maximum of two independent standard normal variates. When the absolute value of the shape parameter increases the skewness of the distribution increases. The limit as the shape parameter tends to positive infinity results in the folded normal distribution or half-normal distribution. When the shape parameter changes its sign, the density is reflected about $y=0$.

The mean of the distribution is $\mu=\alpha \sqrt{2/(\pi (1+\alpha^2))}$ and these are returned as the fitted values. The variance of the distribution is $1-\mu^2$. The Newton-Raphson algorithm is used unless the nsimEIM argument is used.

References

Azzalini, A. A. (1985) A class of distributions which include the normal. Scandinavian Journal of Statistics, 12, 171--178.

Azzalini, A. and Capitanio, A. (1999) Statistical applications of the multivariate skew-normal distribution. Journal of the Royal Statistical Society, Series B, Methodological, 61, 579--602.

See Also

snorm, normal1, fnormal1.

Examples

Run this code
sdata = data.frame(y = rsnorm(nn <- 1000, shape=5))
fit = vglm(y ~ 1, skewnormal1, sdata, trace=TRUE)
coef(fit, matrix=TRUE)
head(fitted(fit), 1)
with(sdata, mean(y))
with(sdata, hist(y, prob=TRUE))
x = with(sdata, seq(min(y), max(y), len=200))
with(sdata, lines(x, dsnorm(x, shape=Coef(fit)), col="blue"))

sdata = data.frame(x = runif(nn))
sdata = transform(sdata, y = rsnorm(nn, shape=1 + 2*x))
fit = vglm(y ~ x, skewnormal1, sdata, trace=TRUE, crit="coef")
summary(fit)

Run the code above in your browser using DataLab