For -mixlogit-, if the predictor was polytomous instead of binary or continuous, when I calculate the marginal effects by simulating as described in Richard's post here, will I need to set all dummies to 0 to predict the base situation before increasing the relevant dummy by 1 for the alternate situation?
So, for example, using the code given by Arne in this post, if for some reason we needed to enter "catch rate" (q) as a categorical variable instead of continuous, is this how we would calculate the mfx?
So, for example, using the code given by Arne in this post, if for some reason we needed to enter "catch rate" (q) as a categorical variable instead of continuous, is this how we would calculate the mfx?
Code:
clear use http://www.stata-press.com/data/mus/mus15data.dta * Set up data and estimate model generate id = _n reshape long d p q, i(id) j(fishmode beach pier private charter) string *Recode catch rate as categorical xtile q_cat=q,n(5) tab q_cat, gen(qcat) gen charter = fishmode=="charter" gen pier = fishmode=="pier" gen private = fishmode=="private" gen charter_inc = charter*income gen pier_inc = pier*income gen private_inc = private*income *use "qcat" instead of continuous q global xlist qcat2 qcat3 qcat4 qcat5 charter pier private charter_inc pier_inc private_inc mixlogit d $xlist, group(id) rand(p) nrep(50) *Calculate marginal effect of catch rate dummies *qcat2 preserve *Simulate base situation for "qcat2"replace qcat2 =0 if fishmode=="private" replace qcat3 =0 if fishmode=="private" replace qcat4 =0 if fishmode=="private" replace qcat5 =0 if fishmode=="private"mixlpred pred0, nrep(50) *Simulate alternate situation for "qcat2"replace qcat2 =1 if fishmode=="private" replace qcat3 =0 if fishmode=="private" replace qcat4 =0 if fishmode=="private" replace qcat5 =0 if fishmode=="private"mixlpred pred1, nrep(50) generate dydx = pred1-pred0 sum dydx if fishmode=="beach" sum dydx if fishmode=="charter" sum dydx if fishmode=="pier" sum dydx if fishmode=="private" restore preserve *Simulate base situation for "qcat2"replace qcat2 =0 if fishmode=="charter" replace qcat3 =0 if fishmode=="charter" replace qcat4 =0 if fishmode=="charter" replace qcat5 =0 if fishmode=="charter"mixlpred pred0, nrep(50) *Simulate alternate situation for "qcat2"replace qcat2 =1 if fishmode=="charter" replace qcat3 =0 if fishmode=="charter" replace qcat4 =0 if fishmode=="charter" replace qcat5 =0 if fishmode=="charter"mixlpred pred1, nrep(50) generate dydx = pred1-pred0 sum dydx if fishmode=="beach" sum dydx if fishmode=="charter" sum dydx if fishmode=="pier" sum dydx if fishmode=="private" restore preserve *Simulate base situation for "qcat2"replace qcat2 =0 if fishmode=="pier" replace qcat3 =0 if fishmode=="pier" replace qcat4 =0 if fishmode=="pier" replace qcat5 =0 if fishmode=="pier"mixlpred pred0, nrep(50) *Simulate alternate situation for "qcat2"replace qcat2 =1 if fishmode=="pier" replace qcat3 =0 if fishmode=="pier" replace qcat4 =0 if fishmode=="pier" replace qcat5 =0 if fishmode=="pier"mixlpred pred1, nrep(50) generate dydx = pred1-pred0 sum dydx if fishmode=="beach" sum dydx if fishmode=="charter" sum dydx if fishmode=="pier" sum dydx if fishmode=="private" restore