# cardioid: Cardioid Distribution Family Function In VGAM: Vector Generalized Linear and Additive Models

## Description

Estimates the two parameters of the cardioid distribution by maximum likelihood estimation.

## Usage

 ```1 2 3``` ```cardioid(lmu = extlogitlink(min = 0, max = 2*pi), lrho = extlogitlink(min = -0.5, max = 0.5), imu = NULL, irho = 0.3, nsimEIM = 100, zero = NULL) ```

## Arguments

 `lmu, lrho` Parameter link functions applied to the mu and rho parameters, respectively. See `Links` for more choices. `imu, irho` Initial values. A `NULL` means an initial value is chosen internally. See `CommonVGAMffArguments` for more information. `nsimEIM, zero` See `CommonVGAMffArguments` for more information.

## Details

The two-parameter cardioid distribution has a density that can be written as

f(y;mu,rho) = (1 + 2*rho*cos(y-mu)) / (2*pi)

where 0 < y < 2*pi, 0 < mu < 2*pi, and -0.5 < rho < 0.5 is the concentration parameter. The default link functions enforce the range constraints of the parameters.

For positive ρ the distribution is unimodal and symmetric about mu. The mean of Y (which make up the fitted values) is pi + (rho/pi) ((2*pi-mu)*sin(2*pi-mu) + cos(2*pi-mu) - mu*sin(mu) - cos(mu)).

## Value

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

## Warning

Numerically, this distribution 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 `imu` and `irho`.

## Note

Fisher scoring using simulation is used.

T. W. Yee

## References

Jammalamadaka, S. R. and SenGupta, A. (2001). Topics in Circular Statistics, Singapore: World Scientific.

`rcard`, `extlogitlink`, `vonmises`.
 ```1 2 3 4 5 6 7 8 9``` ```## Not run: cdata <- data.frame(y = rcard(n = 1000, mu = 4, rho = 0.45)) fit <- vglm(y ~ 1, cardioid, data = cdata, trace = TRUE) coef(fit, matrix=TRUE) Coef(fit) c(with(cdata, mean(y)), head(fitted(fit), 1)) summary(fit) ## End(Not run) ```