View source: R/family.normal.R
skewnormal | R Documentation |
Maximum likelihood estimation of the shape parameter of a univariate skew-normal distribution.
skewnormal(lshape = "identitylink", ishape = NULL, nsimEIM = NULL)
lshape , ishape , nsimEIM |
See |
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.
An object of class "vglmff"
(see vglmff-class
).
The object is used by modelling functions such as vglm
,
and vgam
.
It is well known that the EIM of Azzalini's skew-normal distribution is singular for skewness parameter tending to zero, and thus produces influential problems.
It is a good idea to use several different initial values to ensure that the global solution is obtained.
This family function will be modified (hopefully soon) to handle a location and scale parameter too.
Thomas W. Yee
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.
skewnorm
,
uninormal
,
foldnormal
.
sdata <- data.frame(y1 = rskewnorm(nn <- 1000, shape = 5))
fit1 <- vglm(y1 ~ 1, skewnormal, data = sdata, trace = TRUE)
coef(fit1, matrix = TRUE)
head(fitted(fit1), 1)
with(sdata, mean(y1))
## Not run: with(sdata, hist(y1, prob = TRUE))
x <- with(sdata, seq(min(y1), max(y1), len = 200))
with(sdata, lines(x, dskewnorm(x, shape = Coef(fit1)), col = "blue"))
## End(Not run)
sdata <- data.frame(x2 = runif(nn))
sdata <- transform(sdata, y2 = rskewnorm(nn, shape = 1 + 2*x2))
fit2 <- vglm(y2 ~ x2, skewnormal, data = sdata, trace = TRUE, crit = "coef")
summary(fit2)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.