Learn R Programming

VGAM (version 0.7-1)

mix2poisson: Mixture of Two Poisson Distributions

Description

Estimates the three parameters of a mixture of two Poisson distributions by maximum likelihood estimation.

Usage

mix2poisson(lphi = "logit", llambda = "loge",
            iphi = 0.5, il1 = NULL, il2 = NULL,
            qmu = c(0.2, 0.8), zero = 1)

Arguments

lphi
Link function for the parameter $\phi$. See below for more details. See Links for more choices.
llambda
Link function applied to each $\lambda$ parameter. See Links for more choices.
iphi
Initial value for $\phi$, whose value must lie between 0 and 1.
il1, il2
Optional initial value for $\lambda_1$ and $\lambda_2$. These values must be positive. The default is to compute initial values internally using the argument qmu.
qmu
Vector with two values giving the probabilities relating to the sample quantiles for obtaining initial values for $\lambda_1$ and $\lambda_2$. The two values are fed in as the probs argument into
zero
An integer specifying which linear/additive predictor is modelled as intercepts only. If given, the value must be either 1 and/or 2 and/or 3, and the default is the first one only, meaning $\phi$ is a single parameter even when there are explanator

Value

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

Warning

Numerical problems can occur. Half-stepping is not uncommon. If failure to converge occurs, try obtaining better initial values, e.g., by using iphi and qmu etc.

This function uses a quasi-Newton update for the working weight matrices (BFGS variant). It builds up approximations to the weight matrices, and currently the code is not fully tested. In particular, results based on the weight matrices (e.g., from vcov and summary) may be quite incorrect, especially when the arguments weights is used to input prior weights.

Details

The probability function can be loosely written as $$P(Y=y) = \phi \, Poisson(\lambda_1) + (1-\phi) \, Poisson(\lambda_2)$$ where $\phi$ is the probability an observation belongs to the first group, and $y=0,1,2,\ldots$. The parameter $\phi$ satisfies $0 < \phi < 1$. The mean of $Y$ is $\phi \lambda_1 + (1-\phi) \lambda_2$ and this is returned as the fitted values. By default, the three linear/additive predictors are $(logit(\phi), \log(\lambda_1), \log(\lambda_2))^T$.

See Also

rpois, mix2normal1.

Examples

Run this code
n = 3000
mu1 = exp(2.4) # also known as lambda1
mu2 = exp(3.1)
phi = 0.3
y = ifelse(runif(n) < phi, rpois(n, mu1), rpois(n, mu2))

fit = vglm(y ~ 1, mix2poisson, maxit=200) # good idea to have trace=TRUE
coef(fit, matrix=TRUE)
Coef(fit) # the estimates
c(phi, mu1, mu2) # the truth

# Plot the results
ty = table(y)
plot(names(ty), ty, type="h", main="Red=estimate, blue=truth")
abline(v=Coef(fit)[-1], lty=2, col="red")
abline(v=c(mu1, mu2), lty=2, col="blue")

Run the code above in your browser using DataLab