One-Inflated Logarithmic Distribution
Density, distribution function, quantile function and random generation
for the one-inflated
logarithmic distribution with parameter pstr1
.
doilog(x, shape, pstr1 = 0, log = FALSE) poilog(q, shape, pstr1 = 0) qoilog(p, shape, pstr1 = 0) roilog(n, shape, pstr1 = 0)
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.
doilog
gives the density,
poilog
gives the distribution function,
qoilog
gives the quantile function, and
roilog
generates random deviates.
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.
T. W. Yee
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 = paste("OILogff(", shape, ", pstr1 = ", pstr1, ") (blue) vs", " Logff(", shape, ") (orange)", sep = ""), names.arg = as.character(x)) deflat.limit <- -dlog(1, shape) / plog(1, shape, lower.tail = FALSE) newpstr1 <- round(deflat.limit, 3) + 0.001 # Inside but near the boundary barplot(rbind(doilog(x, shape, pstr1 = newpstr1), dlog(x, shape)), beside = TRUE, col = c("blue","orange"), main = paste("ODLogff(", shape, ", pstr1 = ", newpstr1, ") (blue) vs", " Logff(", shape, ") (orange)", sep = ""), names.arg = as.character(x)) ## End(Not run)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.