Bookmark and Share

Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

st: Computing predicted probabilities in multi-level model (xtmelogit)

From   "Michael.Stuetzer" <>
Subject   st: Computing predicted probabilities in multi-level model (xtmelogit)
Date   Fri, 22 Oct 2010 10:52:15 +0200

Dear Colleagues,

I want to visualize a moderation effect in a multi-level model and would like to ask whether or not the code (adapted from below is suitable to produce the predicted probabilities to do this. To be more precise: I have data at two levels. The dependent variable is at level 1 and binary. Some predictors are at level 1 (Zopport Zknowent Zownmge) and one is from level 2 (Zbipwachstum_l1t5). I'm interested in the cross-level interaction between Zownmge and Zbipwachstum_l1t5 (int_knowent_bipwachstum5). In order to compute predicted probabilities I followed the recommendations to hold the other variables at their respective mean.

However, I have a couple of questions.
1. In the code below, I use the mean of the level 2 variable over the entire dataset. However, for different regions (this is the level 2) I have different number of observations at the level 1, which has an impact on the mean. Wouldn't it be more correct to use the mean of the level 2 variable accross the (lets say) 300 regions?

2. From my experience with the prvalue command, I also hold the interaction term at the respective mean when computing the predicted probabilities. Is this also correct in multi-level modeling?

3. In this first step I compute the predicted probabilities at the mean of Zbipwachstum_l1t5, thereafter at mean + sd, and mean - sd. Do I also have to alter the level of the interaction term int_knowent_bipwachstum5 or does this interaction term is always held constant at the mean?

Thanks a lot

quietly summarize Zopport
global opport=r(mean)
quietly summarize Zknowent
global knowent=r(mean)
quietly summarize Zbipwachstum_l1t5
global bipwachstum_l1t5=r(mean)-r(sd)
quietly summarize int_ownmge_bipwachstum5
global int_ownmge_bipwachstum=r(mean)

xtmelogit latent Zownmge Zknowent Zopport Zbipwachstum_l1t5 int_ownmge_bipwachstum5 || kreis:,

/* get vector of logistic coefficients */
matrix b = e(b)
matrix list b

/* keep only the elements of b that are of interest */
matrix b = b[1,2..7]
matrix list b

/* predict random effects */
predict b1, reffects

/* create vector of random effects */
quietly tab b1, matrow(b1)
matrix list b1

/*  bring vectors b and b1 into Mata */
b  = st_matrix("b")
b1 = st_matrix("b1")

/* bring the global macro variables into Mata */
knowent    =  strtoreal(st_global("knowent"))
opport    =  strtoreal(st_global("opport"))
bipwachstum_l1t5=  strtoreal(st_global("bipwachstum_l1t5"))
int_ownmge_bipwachstum = strtoreal(st_global("int_ownmge_bipwachstum"))

/* loop to compute probabilities for knowent and not knowent */
for (ownmge=0; ownmge<=1; ownmge++) {
x=(ownmge \ knowent \ opport \ bipwachstum_l1t1 \ int_ownmge_bipwachstum \ 1)
 xb = b*x
 xbr = xb:+b1
 expxbr = exp(xbr)
 p = expxbr:/(1:+expxbr)



Dipl.-Vw. Michael Stützer
Thüringer Gründer Studie/
Lehrstuhl für Mikroökonomik
Friedrich-Schiller-Universität Jena
Carl-Zeiß-Str. 3
D-07743 Jena

Tel.: +49 03641 943207
Fax.: +49 03641 943202

*   For searches and help try:

© Copyright 1996–2017 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index