Learn R Programming

VGAM (version 0.8-1)

logff: Logarithmic Distribution

Description

Estimating the (single) parameter of the logarithmic distribution.

Usage

logff(link = "logit", earg=list(), init.c = NULL)

Arguments

link
Parameter link function applied to the parameter $c$, which lies between 0 and 1. See Links for more choices.
earg
List. Extra argument for the link. See earg in Links for general information.
init.c
Optional initial value for the $c$ parameter. If given, it often pays to start with a larger value, e.g., 0.95. The default is to choose an initial value internally.

Value

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

Details

The logarithmic distribution is based on the logarithmic series, and is scaled to a probability function. Its probability function is $f(y) = a c^y / y$, for $y=1,2,3,\ldots$, where $0 < c < 1$, and $a = -1 / \log(1-c)$. The mean is $a c/(1-c)$ (returned as the fitted values) and variance is $a c (1-ac) /(1-c)^2$.

References

Chapter 7 of Johnson N. L., Kemp, A. W. and Kotz S. (2005) Univariate Discrete Distributions, 3rd edition, Hoboken, New Jersey: Wiley.

Evans, M., Hastings, N. and Peacock, B. (2000) Statistical Distributions, New York: Wiley-Interscience, Third edition.

See Also

rlog, log, loge, logoff.

Examples

Run this code
ldat = data.frame(y = rlog(n=1000, prob=logit(0.2, inverse=TRUE)))
fit = vglm(y ~ 1, logff, ldat, trace=TRUE, crit="c")
coef(fit, matrix=TRUE)
Coef(fit)
with(ldat,
    hist(y, prob=TRUE, breaks=seq(0.5, max(y)+0.5, by=1), border="blue"))
x = seq(1, with(ldat, max(y)), by=1)
with(ldat, lines(x, dlog(x, Coef(fit)[1]), col="red", type="h", lwd=2))


# Example: Corbet (1943) butterfly Malaya data
corbet = data.frame(nindiv = 1:24,
                    ofreq = c(118, 74, 44, 24, 29, 22, 20, 19, 20, 15, 12,
                              14, 6, 12, 6, 9, 9, 6, 10, 10, 11, 5, 3, 3))
fit = vglm(nindiv ~ 1, logff, data=corbet, weights=ofreq)
coef(fit, matrix=TRUE)
chat = Coef(fit)["c"]
pdf2 = dlog(x=with(corbet, nindiv), prob=chat)
print(with(corbet, cbind(nindiv, ofreq, fitted=pdf2*sum(ofreq))), dig=1)

Run the code above in your browser using DataLab