mlogit regression: are index variables required?

I’m using mlogit to estimate a regression model. Further, i’m using sjPlot to assess marginal effects and predicted probabilities from said model (according to package version 2.6.3 "sjPlot" explicitly supports "mlogit")

I’ve run into a problem plotting/assessing MargEff/PredProb (via sjPlot). I keep getting this error:

plot_model(ce.model, type = "pred", terms = "SIZE")
Error in contrasts<-(tmp, value = contr.funs[1 + isOF[nn]]) : ***
*** contrasts can be applied only to factors with 2 or more levels

Review of several forum posts (see below) suggests that this is likely related to NAs in dataset but, although there are “NAs” in the relevant variables in my regression model, there are in fact NAs in the indexing columns that “” creates in order to run mlogit (see attached screen shot, and other details pasted below).

So the question is: Assuming these indexed NAs are causing my error message, how can I remove them but still rely on mlogit for my regression? Are there other work arounds?

(since my question is conceptual I have not included a reprex, but i could if needed…)


... led me to troubleshoot all of the following:

  • factor levels of an explanatory variables are not differentiated, i.e., only 1 level exists (including possible “empty” levels).
  • NAs exists somewhere in dataset which knocks out a bunch of factor levels from dataset
  • Existence of exotic characters å, ä, ä in dataset.
  • other variables not used in regression, but included in dataset that may cause problems…
    (see here database - Error in contrasts when defining a linear model in R - Stack Overflow )


To use mlogit, one must first use to convert the dataframe to something that mlogit undertands. In short, it means defining index variables (e.g., which variable is the “choice” variable? How many alternatives did each individual face in the panel data? etc).

see attached screenshot. the “idx.alt” column has length=2 and a bunch of NAs. The last 3 columns are all indexes (id1, idx.chid, idx.alt) from “” command

Several posts related to "", but none seem to encounter my specific problem.

See also info here:

This topic was automatically closed 21 days after the last reply. New replies are no longer allowed.

If you have a query related to it or one of the replies, start a new topic and refer back with a link.