Skip to content

mlogit and model-based recursive partitioning

3 messages · Achim Zeileis, Tudor Bodea

#
Hello:

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)? 

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.

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)
# THE DESIRED END RESULT:  SEGMENT m1 BASED ON INCOME AND/OR OTHER POSSIBLE
COVARIATES





--
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.
#
Tudor:
Interesting question: in principle, this is possible but I wouldn't know 
of anyone who has tried this.
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 
subjects.

- 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...

hth,
Z