Generally Altered, Inflated, Truncated and Deflated Zeta Regression
gaitdzeta.RdFits a generally altered, inflated, truncated and deflated zeta regression by MLE. The GAITD combo model having 7 types of special values is implemented. This allows mixtures of zetas on nested and/or partitioned support as well as a multinomial logit model for altered, inflated and deflated values.
Usage
gaitdzeta(a.mix = NULL, i.mix = NULL, d.mix = NULL,
a.mlm = NULL, i.mlm = NULL, d.mlm = NULL,
truncate = NULL, max.support = Inf,
zero = c("pobs", "pstr", "pdip"), eq.ap = TRUE, eq.ip = TRUE,
eq.dp = TRUE, parallel.a = FALSE,
parallel.i = FALSE, parallel.d = FALSE,
lshape.p = "loglink", lshape.a = lshape.p,
lshape.i = lshape.p, lshape.d = lshape.p,
type.fitted = c("mean", "shapes", "pobs.mlm", "pstr.mlm",
"pdip.mlm", "pobs.mix", "pstr.mix", "pdip.mix", "Pobs.mix",
"Pstr.mix", "Pdip.mix", "nonspecial",
"Numer", "Denom.p", "sum.mlm.i", "sum.mix.i", "sum.mlm.d",
"sum.mix.d", "ptrunc.p", "cdf.max.s"),
gshape.p = -expm1(-ppoints(7)), gpstr.mix = ppoints(7) / 3,
gpstr.mlm = ppoints(7) / (3 + length(i.mlm)),
imethod = 1, mux.init = c(0.75, 0.5, 0.75),
ishape.p = NULL, ishape.a = ishape.p,
ishape.i = ishape.p, ishape.d = ishape.p,
ipobs.mix = NULL, ipstr.mix = NULL, ipdip.mix = NULL,
ipobs.mlm = NULL, ipstr.mlm = NULL, ipdip.mlm = NULL,
byrow.aid = FALSE, ishrinkage = 0.95, probs.y = 0.35)Arguments
- truncate, max.support
See
gaitdpoisson. Onlymax.support = Infis allowed because some equations are intractable.- a.mix, i.mix, d.mix
See
gaitdpoisson.- a.mlm, i.mlm, d.mlm
See
gaitdpoisson.- lshape.p, lshape.a, lshape.i, lshape.d
Link functions. See
gaitdpoissonandLinksfor more choices and information. Actually, it is usually a good idea to set these arguments equal tozetaffMlinkbecause the log-mean is the first linear/additive predictor so it is like a Poisson regression.- eq.ap, eq.ip, eq.dp
Single logical each. See
gaitdpoisson- parallel.a, parallel.i, parallel.d
Single logical each. See
gaitdpoisson.- type.fitted, mux.init
See
gaitdpoisson.- imethod, ipobs.mix, ipstr.mix, ipdip.mix
See
CommonVGAMffArgumentsandgaitdpoissonfor information.- ipobs.mlm, ipstr.mlm, ipdip.mlm, byrow.aid
See
CommonVGAMffArgumentsandgaitdpoissonfor information.- gpstr.mix, gpstr.mlm
See
CommonVGAMffArgumentsandgaitdpoissonfor information.
- gshape.p, ishape.p
See
CommonVGAMffArgumentsandgaitdpoissonfor information. The former is used only if the latter is not given. Practical experience has shown that good initial values are needed, so if convergence is not obtained then try a finer grid.- ishape.a, ishape.i, ishape.d
See
CommonVGAMffArgumentsandgaitdpoissonfor information.- probs.y, ishrinkage
See
CommonVGAMffArgumentsfor information.- zero
See
gaitdpoissonandCommonVGAMffArgumentsfor information.
Details
Many details to this family function can be
found in gaitdpoisson because it
is also a 1-parameter discrete distribution.
This function currently does not handle
multiple responses. Further details are at
Gaitdzeta.
As alluded to above, when there are covariates
it is much more interpretable to model
the mean rather than the shape parameter.
Hence zetaffMlink
is recommended. (This might become the default
in the future.) So installing VGAMextra
is a good idea.
Apart from the order of the linear/additive predictors,
the following are (or should be) equivalent:
gaitdzeta() and zetaff(),
gaitdzeta(a.mix = 1) and oazeta(zero = "pobs1"),
gaitdzeta(i.mix = 1) and oizeta(zero = "pstr1"),
gaitdzeta(truncate = 1) and otzeta().
The functions
oazeta,
oizeta and
otzeta
have been placed in VGAMdata.
Value
An object of class "vglmff"
(see vglmff-class).
The object is used by modelling functions such
as vglm,
rrvglm
and vgam.
Warning
See gaitdpoisson.
Note
See gaitdpoisson.
See also
Gaitdzeta,
zetaff,
zetaffMlink,
Gaitdpois,
gaitdpoisson,
gaitdlog,
spikeplot,
goffset,
Trunc,
oazeta,
oizeta,
otzeta,
CommonVGAMffArguments,
rootogram4,
simulate.vlm.
Examples
if (FALSE) { # \dontrun{
avec <- c(5, 10) # Alter these values parametrically
ivec <- c(3, 15) # Inflate these values
tvec <- c(6, 7) # Truncate these values
set.seed(1); pobs.a <- pstr.i <- 0.1
gdata <- data.frame(x2 = runif(nn <- 1000))
gdata <- transform(gdata, shape.p = logitlink(2, inverse = TRUE))
gdata <- transform(gdata,
y1 = rgaitdzeta(nn, shape.p, a.mix = avec, pobs.mix = pobs.a,
i.mix = ivec, pstr.mix = pstr.i, truncate = tvec))
gaitdzeta(a.mix = avec, i.mix = ivec)
with(gdata, table(y1))
spikeplot(with(gdata, y1), las = 1)
fit7 <- vglm(y1 ~ 1, trace = TRUE, data = gdata, crit = "coef",
gaitdzeta(i.mix = ivec, truncate = tvec,
a.mix = avec, eq.ap = TRUE, eq.ip = TRUE))
head(fitted(fit7, type.fitted = "Pstr.mix"))
head(predict(fit7))
t(coef(fit7, matrix = TRUE)) # Easier to see with t()
summary(fit7)
spikeplot(with(gdata, y1), lwd = 2, ylim = c(0, 0.6), xlim = c(0, 20))
plotdgaitd(fit7, new.plot = FALSE, offset.x = 0.2, all.lwd = 2)
} # }