Quantcast
Channel: Statalist
Viewing all articles
Browse latest Browse all 73303

Marginal effects after fitting -mixlogit- for polytomous predictors

$
0
0
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?

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

Viewing all articles
Browse latest Browse all 73303

Trending Articles