Learn R Programming

VGAM (version 0.8-4.1)

leipnik: Leipnik Distribution Family Function

Description

Estimates the two parameters of a (transformed) Leipnik distribution by maximum likelihood estimation.

Usage

leipnik(lmu = "logit", llambda = "loge", emu=list(),
        elambda=list(), imu = NULL, ilambda = NULL)

Arguments

lmu, llambda
Link function for the $\mu$ and $\lambda$ parameters. See Links for more choices.
imu, ilambda
Numeric. Optional initial values for $\mu$ and $\lambda$.
emu, elambda
List. Extra argument for each of the links. See earg in Links for general information.

Value

Warning

If llambda="identity" then it is possible that the lambda estimate becomes less than $-1$, i.e., out of bounds. One way to stop this is to choose llambda="loge", however, lambda is then constrained to be positive.

Details

The (transformed) Leipnik distribution has density function $$f(y;\mu,\lambda) = \frac{ { y(1-y) }^{-\frac12}}{ \mbox{Beta}( \frac{\lambda+1}{2}, \frac12 )} \left[ 1 + \frac{(y-\mu)^2 }{y(1-y)} \right]^{ -\frac{\lambda}{2}}$$ where $0 < y < 1$ and $\lambda > -1$. The mean is $\mu$ (returned as the fitted values) and the variance is $1/\lambda$.

Jorgensen (1997) calls the above the transformed Leipnik distribution, and if $y = (x+1)/2$ and $\mu = (\theta+1)/2$, then the distribution of $X$ as a function of $x$ and $\theta$ is known as the the (untransformed) Leipnik distribution. Here, both $x$ and $\theta$ are in $(-1,1)$.

References

Jorgensen, B. (1997) The Theory of Dispersion Models. London: Chapman & Hall

Johnson, N. L. and Kotz, S. and Balakrishnan, N. (1995) Continuous Univariate Distributions, 2nd edition, Volume 2, New York: Wiley. (pages 612--617).

See Also

mccullagh89.

Examples

Run this code
ldat = data.frame(y = rnorm(n=2000, mean=0.5, sd=0.1)) # Not good data
fit = vglm(y ~ 1, leipnik(ilambda=1), ldat, tr=TRUE, checkwz=FALSE)
fit = vglm(y ~ 1, leipnik(ilambda=1,llam=logoff, elam=list(offset=1)),
           ldat, trace=TRUE, cri="coef")
head(fitted(fit))
with(ldat, mean(y))
summary(fit)
coef(fit, matrix=TRUE)
Coef(fit)

sum(weights(fit))  # sum of the prior weights
sum(weights(fit, type="w")) # sum of the working weights

Run the code above in your browser using DataLab