[R] mlogit and model-based recursive partitioning

Achim Zeileis Achim.Zeileis at uibk.ac.at
Tue Oct 2 08:24:06 CEST 2012


> Has anyone tried to model-based recursive partition (using mob from 
> package party; thanks Achim and colleagues) a data set based on a 
> multinomial logit model (using mlogit from package mlogit; thanks Yves)?

Interesting question: in principle, this is possible but I wouldn't know 
of anyone who has tried this.

> I attempted to do so, but there are at least two reasons why I could 
> not. First, in mob I am not quite sure that a model of class StatModel 
> exists for mlogit models.  Second, as mlogit uses the pipe character | 
> to specify the model, I wonder how this would interact with mob which 
> uses pipe to differentiate between explanatory and segmentation 
> variables.

This is one but not the only complication when trying to actually combine 
mlogit and mob. I think the building blocks would have to be:

- Set up the data plus formula handling. As you point out, that would need 
a three-part formula separating alternative-specific and subject-specific 
regressors and partitioning variables. Furthermore you would probably need 
to translate between the long format used by mlogit (subjects x 
alternatives) to the wide format because mob would want to partition the 

- A StatModel object would be required. Personally, if I wanted to do it, 
would try to set up the StatModel object on the fly (rather than predefine 
it in a package) so that the StatModel creator can depend on the 
formula/data. The formula/data processing described above can be done 
inside the StatModel object.

- Finally, the required methods for the fitted model object would have to 
be defined. In particular, the subject-specific gradients would be 
required. I think currently, mlogit just provides the overall gradient.

So, in summary: It can be done but it would likely need more than just an 
hour of coding...


> An example (not working) of what I would like to accomplish follows below.
> Thanks a lot.
> Tudor
> library(party)
> library(mlogit)
> data("Fishing", package = "mlogit")
> Fish <- mlogit.data(Fishing, varying = c(2:9), shape = "wide", choice =
> "mode")
> # FIT AN mlogit MODEL
> m1 <- mlogit(mode ~ price + catch, data=Fish)
> --
> View this message in context: http://r.789695.n4.nabble.com/mlogit-and-model-based-recursive-partitioning-tp4644743.html
> Sent from the R help mailing list archive at Nabble.com.
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

More information about the R-help mailing list