vonmises {VGAM} | R Documentation |
von Mises Distribution Family Function
Description
Estimates the location and scale parameters of the von Mises distribution by maximum likelihood estimation.
Usage
vonmises(llocation = extlogitlink(min = 0, max = 2*pi),
lscale = "loglink", ilocation = NULL, iscale = NULL,
imethod = 1, zero = NULL)
Arguments
llocation , lscale |
Parameter link functions applied to the
location |
ilocation |
Initial value for the location |
iscale |
Initial value for the scale |
imethod |
An integer with value |
zero |
An integer-valued vector specifying which
linear/additive predictors are modelled as intercepts only.
The default is none of them.
If used, one can choose one value from the set {1,2}.
See |
Details
The (two-parameter) von Mises is the most commonly used distribution in practice for circular data. It has a density that can be written as
where ,
is the scale parameter,
is the location parameter, and
is the modified Bessel
function of order 0 evaluated at
.
The mean of
(which is the fitted value) is
and the circular variance is
where
is the modified Bessel
function of order 1.
By default,
and
for this family function.
Value
An object of class "vglmff"
(see vglmff-class
).
The object is used by modelling functions
such as vglm
,
rrvglm
and vgam
.
Warning
Numerically, the von Mises can be difficult to fit because of a
log-likelihood having multiple maximums.
The user is therefore encouraged to try different starting values,
i.e., make use of ilocation
and iscale
.
Note
The response and the fitted values are scaled so that
.
The linear/additive predictors are left alone.
Fisher scoring is used.
Author(s)
T. W. Yee
References
Forbes, C., Evans, M., Hastings, N. and Peacock, B. (2011). Statistical Distributions, Hoboken, NJ, USA: John Wiley and Sons, Fourth edition.
See Also
CircStats and circular currently have a lot more R functions for circular data than the VGAM package.
Examples
vdata <- data.frame(x2 = runif(nn <- 1000))
vdata <- transform(vdata,
y = rnorm(nn, 2+x2, exp(0.2))) # Bad data!!
fit <- vglm(y ~ x2, vonmises(zero = 2), vdata, trace = TRUE)
coef(fit, matrix = TRUE)
Coef(fit)
with(vdata, range(y)) # Original data
range(depvar(fit)) # Processed data is in [0,2*pi)