Hello,
I am estimating a three-level random intercept logit model using xtmelogit (meqrlogit). Ideally I would like to obtain the marginal effects as we do with the command margins. I have read that margins only takes into account the fixed part and not the random effects. I would like to obtain a similar result as using margins but including random effects.
In this sense, I have tried the code below but find that the following error message comes up: "data have changed since estimation". I have done a small test-run on a simple logit model to test whether the code was ok, this is I am able to obtain the same results obtaining the margins myself as I do using the command 'margins' and it seems work ok.
I believe the error might come from the stochastic nature of the random effects. I am not certain whether it makes sense to aim at obtaining the margins with the random effects in in this manner or if it has to be done in another fashion. I found a close post in Stata FAQ http://www.ats.ucla.edu/stat/stata/f...logit_prob.htm
My dependent variable is participation on a treatment and say the independent variable is the categorical variable employment (Self-Employed, Employed, Retired, Students, Other Non-active).
On a second question related to this one, once I estimate successfully the predictions with the random effects, what would be the appropriate way of contrasting whether the margins estimated are significantly different from each other in a similar way as what we can do with margins, contrast?
Thanks in advance,
I am estimating a three-level random intercept logit model using xtmelogit (meqrlogit). Ideally I would like to obtain the marginal effects as we do with the command margins. I have read that margins only takes into account the fixed part and not the random effects. I would like to obtain a similar result as using margins but including random effects.
In this sense, I have tried the code below but find that the following error message comes up: "data have changed since estimation". I have done a small test-run on a simple logit model to test whether the code was ok, this is I am able to obtain the same results obtaining the margins myself as I do using the command 'margins' and it seems work ok.
I believe the error might come from the stochastic nature of the random effects. I am not certain whether it makes sense to aim at obtaining the margins with the random effects in in this manner or if it has to be done in another fashion. I found a close post in Stata FAQ http://www.ats.ucla.edu/stat/stata/f...logit_prob.htm
My dependent variable is participation on a treatment and say the independent variable is the categorical variable employment (Self-Employed, Employed, Retired, Students, Other Non-active).
On a second question related to this one, once I estimate successfully the predictions with the random effects, what would be the appropriate way of contrasting whether the margins estimated are significantly different from each other in a similar way as what we can do with margins, contrast?
Thanks in advance,
Code:
** PART 1: Simple example: Use Logit (no random effects)
logit part i.employment
margins employment
* Replicate the result of "margins employment"
clonevar emp=employment
logit particip i.emp
forval i=1/5{
replace emp=`i'
predict adjpred`i'
}
sum adjpred*
*Replicates the result of "margins, dydx(employment)"
gen meemp2=adjpred2-adjpred1
gen meemp3=adjpred3-adjpred1
gen meemp4=adjpred4-adjpred1
gen meemp5=adjpred5-adjpred1
sum meemp2 meemp3 meemp4 meemp5
** PART 2: Using the model my three-level model with random intercept at the country and regional level.
xtmelogit particip i.empl || countries: || coren:, cov(unstructured)variance intpoints(5)
margins i.empl
clonevar emply=empl
xtmelogit particip i.emply || countries: || coren:, cov(unstructured)variance intpoints(5)
* After this point we get the error message: "data have changed since estimation"
forval i=1/5{
xtmelogit
replace emply=`i'
predict adjpred`i'
}
* Obtain the same result as margins, dydx(employment)
gen meempl2=adjpred2-adjpred1
gen meempl3=adjpred3-adjpred1
gen meempl4=adjpred4-adjpred1
gen meempl5=adjpred5-adjpred1
sum adjpred* meempl2 meempl3 meempl4 meempl5
