Multinomial Regression
Multinomial Regression Maximum Likelihood Estimator with Overdispersion
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.
 Keywords
 models, regression
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 GaussNewton optimization.
 xvar.labels
 Vector of labels for observations.
 choice.labels
 Vector of labels for outcome alternatives.
 MLEonly

If
TRUE
, then only the standard maximumlikelihood MNL model is estimatedi.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.
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.
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 GaussNewton iterations.
 error
 Exit error code.
 GNlist

List reporting final results of the GaussNewton optimization. Elements:
coefficients
, vector of coefficient parameters (same ascoeffvec
value in list returned by multinomMLE);tvec
, matrix of coefficient parameters (same ascoefficients
value in list returned by multinomMLE);formation
, inverse Hessian matrix;score
, score (or gradient element) matrix;LLvals
, list containing loglikelihood value;convflag
, TRUE/FALSE convergence flag;iters
, number of iterations done in final GaussNewton 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 doneY[!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.
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): 391410. http://sekhon.berkeley.edu/multinom.pdf
For additional documentation please visit http://sekhon.berkeley.edu/robust/.
Examples
# 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))