multinomRob (version 1.8-6.1)

Multinomial Regression: Multinomial Regression Maximum Likelihood Estimator with Overdispersion

Description

multinomMLE estimates the coefficients of the multinomial regression model for grouped count data by maximum likelihood, then computes a moment estimator for overdispersion and reports standard errors for the coefficients that take overdispersion into account. This function is not meant to be called directly by the user. It is called by multinomRob, which constructs the various arguments.

Usage

multinomMLE(Y, Ypos, Xarray, xvec, jacstack, itmax=100, xvar.labels, choice.labels, MLEonly=FALSE, print.level=0)

Arguments

Y
Matrix (observations by alternatives) of outcome counts. Values must be nonnegative. Missing data (NA values) are not allowed.
Ypos
Matrix indicating which elements of Y are counts to be analyzed (TRUE) and which are values to be skipped (FALSE). This allows the set of outcome alternatives to vary over observations.
Xarray
Array of regressors. dim(Xarray) = c(observations, parameters, alternatives).
xvec
Matrix (parameters by alternatives) that represents the model structure. It has a 1 for an estimated parameter, an integer greater than 1 for an estimated parameter constrained equal to another estimated parameter (all parameters constrained to be equal to one another have the same integer value in xvec) and a 0 otherwize.
jacstack
Array of regressors used to facilitate computing the gradient and the hessian matrix. dim(jacstack) = c(observations, unique parameters, alternatives).
itmax
The maximum number of iterations to be done in the Gauss-Newton optimization.
xvar.labels
Vector of labels for observations.
choice.labels
Vector of labels for outcome alternatives.
MLEonly
If TRUE, then only the standard maximum-likelihood MNL model is estimated---i.e., no overdispersion parameter is estimated.
print.level
Specify 0 for minimal printing (error messages only) or 3 to print details about the MLE computations.

Value

multinomMLE returns a list containing the following objects. The returned objects are:
coefficients
The maximum likelihood coefficient estimates in matrix format. The value 0 is used in the matrix to fill in for values that do not correspond to a regressor.
coeffvec
A vector containing the maximum likelihood coefficient estimates.
dispersion
Moment estimate of the dispersion: mean sum of squared orthogonalized residuals (adjusted for degrees of freedom lost to estimated coefficients).
se
The MLE coefficient estimate standard errors derived from the asymptotic covariance estimated using the Hessian matrix (observed information).
se.opg
The MLE coefficient estimate standard errors derived from the asymptotic covariance estimated using the outer product of the gradient (expected information) divided by the moment estimate of the dispersion. Not provided if MLEonly==TRUE.
se.hes
The MLE coefficient estimate standard errors derived from the asymptotic covariance estimated using the Hessian matrix (observed information). Same as se; included for backward compatibility.
se.sw
The MLE coefficient estimate standard errors derived from the asymptotic covariance estimated using the estimated asymptotic sandwich covariance estimate. Not provided if MLEonly==TRUE.
se.vec
se in vector form.
se.opg.vec
se.opg in vector form.
se.hes.vec
se.hes in vector form.
se.sw.vec
se.sw in vector form.
A
The outer product of the gradient (expected information) divided by the moment estimate of the dispersion.
B
The inverse of the hessian matrix (observed formation).
covmat
Sandwich estimate of the asymptotic covariance of the maximum likelihood coefficient estimates.
iters
Number of Gauss-Newton iterations.
error
Exit error code.
GNlist
List reporting final results of the Gauss-Newton optimization. Elements: coefficients, vector of coefficient parameters (same as coeffvec value in list returned by multinomMLE); tvec, matrix of coefficient parameters (same as coefficients value in list returned by multinomMLE); formation, inverse Hessian matrix; score, score (or gradient element) matrix; LLvals, list containing log-likelihood value; convflag, TRUE/FALSE convergence flag; iters, number of iterations done in final Gauss-Newton stage; posdef, TRUE if Hessian is positive definite.
sigma2
Moment estimate of the dispersion: mean sum of squared orthogonalized residuals (adjusted for degrees of freedom lost to estimated coefficients).
Y
The same Y matrix that was supplied as input, except modified by having done Y[!Ypos] <- 0.
Ypos
The same Ypos matrix that was supplied as input.
fitted.prob
The matrix of predicted probabilities for each category for each observation based on the coefficient estimates.
jacstack
The same jacstack that was supplied as an input argument.

Details

Following the generalized linear models approach, the coefficient parameters in an overdispersed multinomial regression model may be estimated using the likelihood for a standard multinomial regression model. A moment estimator may be used for the dispersion parameter, given the coefficient estimates, with little efficiency loss.

References

Walter R. Mebane, Jr. and Jasjeet Singh Sekhon. 2004. ``Robust Estimation and Outlier Detection for Overdispersed Multinomial Models of Count Data.'' American Journal of Political Science 48 (April): 391--410. http://sekhon.berkeley.edu/multinom.pdf

For additional documentation please visit http://sekhon.berkeley.edu/robust/.

Examples

Run this code
# make some multinomial data
x1 <- rnorm(50);
x2 <- rnorm(50);
p1 <- exp(x1)/(1+exp(x1)+exp(x2));
p2 <- exp(x2)/(1+exp(x1)+exp(x2));
p3 <- 1 - (p1 + p2);
y <- matrix(0, 50, 3);
for (i in 1:50) {
  y[i,] <- rmultinomial(1000, c(p1[i], p2[i], p3[i]));
}

# perturb the first 5 observations
y[1:5,c(1,2,3)] <- y[1:5,c(3,1,2)];
y1 <- y[,1];
y2 <- y[,2];
y3 <- y[,3];

# put data into a dataframe
dtf <- data.frame(x1, x2, y1, y2, y3);

#Do MLE estimation.  The following model is NOT identified if we
#try to estimate the overdispersed MNL.
dtf <- data.frame(y1=c(1,1),y2=c(2,1),y3=c(1,2),x=c(0,1))
summary(multinomRob(list(y1 ~ 0, y2 ~ x, y3 ~ x), data=dtf, MLEonly=TRUE))

Run the code above in your browser using DataCamp Workspace