| Oilog {VGAMdata} | R Documentation |
One-Inflated Logarithmic Distribution
Description
Density, distribution function, quantile function and random
generation for the one-inflated logarithmic distribution with
parameter pstr1.
Usage
doilog(x, shape, pstr1 = 0, log = FALSE)
poilog(q, shape, pstr1 = 0)
qoilog(p, shape, pstr1 = 0)
roilog(n, shape, pstr1 = 0)
Arguments
x, q, p, n |
Same as |
shape |
Vector of parameters that lie in |
pstr1 |
Probability of a structural one
(i.e., ignoring the logarithmic distribution),
called |
log |
Same as |
Details
The probability function of Y is 1 with probability
\phi, and Logarithmic(prob) with
probability 1-\phi. Thus
P(Y=1) =\phi + (1-\phi) P(W=1)
where W is distributed as a
Logarithmic(shape) random variable.
The VGAM family function oilog estimates
\phi by MLE.
Value
doilog gives the density,
poilog gives the distribution function,
qoilog gives the quantile function, and
roilog generates random deviates.
Note
The argument pstr1 is recycled to the required length,
and usually has values which lie in the interval [0,1].
These functions actually allow for the zero-deflated
logarithmic distribution. Here, pstr1 is also permitted
to lie in the
interval [-dlog(1, shape) / (1 - dlog(1, shape)), 0].
The resulting probability of a unit count is less than
the nominal logarithmic value, and the use of pstr1 to
stand for the probability of a structural 1 loses its
meaning.
When pstr1 equals
-dlog(1, shape) / (1 - dlog(1, shape))
this corresponds to the 1-truncated logarithmic distribution.
Author(s)
T. W. Yee
See Also
Gaitdlog,
oilog,
rlog,
logff,
Otlog.
Examples
shape <- 0.5; pstr1 <- 0.3; x <- (-1):7
(ii <- doilog(x, shape, pstr1 = pstr1))
max(abs(poilog(1:200, shape) -
cumsum(shape^(1:200) / (-(1:200) * log1p(-shape))))) # Should be 0
## Not run: x <- 0:10
par(mfrow = c(2, 1)) # One-Inflated logarithmic
barplot(rbind(doilog(x, shape, pstr1 = pstr1), dlog(x, shape)),
beside = TRUE, col = c("blue", "orange"),
main = paste0("OILogff(", shape, ", pstr1 = ", pstr1,
") (blue) vs Logff(", shape, ") (orange)"),
names.arg = as.character(x))
deflat.limit <- -dlog(1, shape) / plog(1, shape, lower.tail = FALSE)
newpstr1 <- round(deflat.limit, 3) + 0.001 # Near the boundary
barplot(rbind(doilog(x, shape, pstr1 = newpstr1),
dlog(x, shape)),
beside = TRUE, col = c("blue","orange"),
main = paste0("ODLogff(", shape, ", pstr1 = ", newpstr1,
") (blue) vs Logff(", shape, ") (orange)"),
names.arg = as.character(x))
## End(Not run)