ESCUELA NACIONAL DE ESTADISTICA E INFORMATICA
Stata Avanzado
Anlisis Multinivel
(Versin 1.0)
Luis Guilln Grados
[email protected]Utilice modelo multinivel siempre que sus datos estn agrupados (o
anidadas) en ms de una categora (por ejemplo, estados, pases, etc.)
Los modelos multinivel permiten:
Estudio de los efectos que varan segn la entidad (o grupos)
Estimar promedios a nivel de grupo
Algunas de las ventajas son:
El anlisis de regresin comn ignora la variacin media entre las
entidades.
La regresin individual puede tener problemas de muestra y la falta
de generalizacin
. use escuelas.dta
. bysort escuela: egen y_mean=mean(y)
-40
-20
y
0
20
40
. twoway scatter y escuela, msize(tiny) || connected y_mean escuela, connect(L)
clwidth(thick) clcolor(black) mcolor(black) msymbol(none) || , ytitle(y)
20
40
id escuela
Puntaje
y_mean
60
-20
-10
10
20
30
. statsby inter=_b[_cons] slope=_b[x1], by(escuela) saving(ols, replace): regress y x1
. sort escuela
. merge escuela using ols
. drop _merge
. gen yhat_ols= inter + slope*x1
. sort escuela x1
. separate y, by(escuela)
. separate yhat_ols, by(escuela)
. twoway connected yhat_ols1-yhat_ols65 x1 || lfit y x1, clwidth(thick) clcolor(black) legend(off) ytitle(y)
-40
-20
0
Femenino=1
20
40
Modelo con intercepto variable
. xtmixed y || escuela: , mle nolog
Mixed-effects ML regression
Group variable: escuela
La media de las
intersecciones a nivel
estatal
Log likelihood = -14851.502
Number of obs
Number of groups
=
=
4059
65
Obs per group: min =
avg =
max =
2
62.4
198
Wald chi2(0)
Prob > chi2
=
=
.
.
-----------------------------------------------------------------------------y |
Coef.
Std. Err.
z
P>|z|
[95% Conf. Interval]
-------------+---------------------------------------------------------------_cons | -.1317107
.5362734
-0.25
0.806
-1.182787
.9193659
Desviacin estndar
en el nivel escolar-----------------------------------------------------------------------------(nivel 2)
-----------------------------------------------------------------------------Random-effects Parameters |
Estimate
Std. Err.
[95% Conf. Interval]
-----------------------------+-----------------------------------------------escuela: Identity
|
sd(_cons) |
4.106565
.3999182
3.393004
4.970191
-----------------------------+-----------------------------------------------sd(Residual) |
9.207356
.1030214
9.007636
9.411505
-----------------------------------------------------------------------------LR test vs. linear regression: chibar2(01) =
498.72 Prob >= chibar2 = 0.0000
Desviacin estndar
en el nivel individual
(nivel 2)
Ho: Efectos aleatorios = 0
Modelo con intercepto variable (un nivel predictor-1)
. xtmixed y x1 || escuela: , mle nolog
Mixed-effects ML regression
Group variable: escuela
Log likelihood = -14024.799
Number of obs
Number of groups
=
=
4059
65
Obs per group: min =
avg =
max =
2
62.4
198
Wald chi2(1)
Prob > chi2
=
=
2042.57
0.0000
-----------------------------------------------------------------------------y |
Coef.
Std. Err.
z
P>|z|
[95% Conf. Interval]
-------------+---------------------------------------------------------------x1 |
.5633697
.0124654
45.19
0.000
.5389381
.5878014
_cons |
.0238706
.4002255
0.06
0.952
-.760557
.8082982
----------------------------------------------------------------------------------------------------------------------------------------------------------Random-effects Parameters |
Estimate
Std. Err.
[95% Conf. Interval]
-----------------------------+-----------------------------------------------escuela: Identity
|
sd(_cons) |
3.035269
.3052513
2.492261
3.696587
-----------------------------+-----------------------------------------------sd(Residual) |
7.521481
.0841759
7.358295
7.688285
-----------------------------------------------------------------------------LR test vs. linear regression: chibar2(01) =
403.27 Prob >= chibar2 = 0.0000
Modelo con intercepto y coeficiente variable
. xtmixed y x1 || escuela: x1, mle nolog covariance(unstructure)
Mixed-effects ML regression
Group variable: escuela
Log likelihood = -14004.613
Number of obs
Number of groups
=
=
4059
65
Obs per group: min =
avg =
max =
2
62.4
198
Wald chi2(1)
Prob > chi2
=
=
779.79
0.0000
-----------------------------------------------------------------------------y |
Coef.
Std. Err.
z
P>|z|
[95% Conf. Interval]
-------------+---------------------------------------------------------------x1 |
.556729
.0199368
27.92
0.000
.5176535
.5958044
_cons |
-.115085
.3978346
-0.29
0.772
-.8948264
.6646564
----------------------------------------------------------------------------------------------------------------------------------------------------------Random-effects Parameters |
Estimate
Std. Err.
[95% Conf. Interval]
-----------------------------+-----------------------------------------------escuela: Unstructured
|
sd(x1) |
.1205646
.0189827
.0885522
.1641498
sd(_cons) |
3.007444
.3044148
2.466258
3.667385
corr(x1,_cons) |
.4975415
.1487427
.1572768
.7322094
-----------------------------+-----------------------------------------------sd(Residual) |
7.440787
.0839482
7.278058
7.607155
-----------------------------------------------------------------------------LR test vs. linear regression:
chi2(3) =
443.64
Prob > chi2 = 0.0000
Note: LR test is conservative and provided only for reference.
Modelo con pendiente variable
. xtmixed y x1 || _all: R.x1, mle nolog
Mixed-effects ML regression
Group variable: _all
Log likelihood = -14226.433
Number of obs
Number of groups
=
=
4059
1
Obs per group: min =
avg =
max =
4059
4059.0
4059
Wald chi2(1)
Prob > chi2
=
=
2186.09
0.0000
-----------------------------------------------------------------------------y |
Coef.
Std. Err.
z
P>|z|
[95% Conf. Interval]
-------------+---------------------------------------------------------------x1 |
.5950551
.0127269
46.76
0.000
.5701108
.6199995
_cons | -.0119479
.1263914
-0.09
0.925
-.2596706
.2357747
----------------------------------------------------------------------------------------------------------------------------------------------------------Random-effects Parameters |
Estimate
Std. Err.
[95% Conf. Interval]
-----------------------------+-----------------------------------------------_all: Identity
|
sd(R.x1) |
.0006648
.1703411
5.2e-222
8.5e+214
-----------------------------+-----------------------------------------------sd(Residual) |
8.052417
.089372
7.879142
8.229502
-----------------------------------------------------------------------------LR test vs. linear regression: chibar2(01) =
0.00 Prob >= chibar2 = 1.0000
Post Estimacin
Comparando modelos utilizando prueba de likelihood-ration
Utilice la prueba de razn de verosimilitud (lrtest) para comparar que modelo es el adecuado. Esta
prueba compara la "verosimilitud" (que se muestra en la salida) de los dos modelos y las pruebas si
son significativamente diferentes.
/*Fitting random intercepts and storing results*/
quietly xtmixed y x1 || escuela:, mle nolog
estimates store ri
/*Fitting random coefficients and storing results*/
quietly xtmixed y x1 || escuela: x1, mle nolog covariance(unstructure)
estimates store rc
/*Running the likelihood-ratio test to compare*/
lrtest ri rc
Likelihood-ratio test
(Assumption: ri nested in rc)
LR chi2(2) =
Prob > chi2 =
40.37
0.0000
La hiptesis nula es que no hay ninguna diferencia significativa entre los dos
modelos. Si Prob> chi2 <0.05, entonces se puede rechazar la hiptesis nula y concluir
que existe una diferencia estadsticamente significativa entre los modelos. En el ejemplo
anterior, rechazamos la hiptesis nula y concluir que el modelo de coeficientes
aleatorios proporciona un mejor ajuste.
Modelo con intercepto y coeficiente variable: post estimacin
. xtmixed y x1 || escuela: x1, mle nolog covariance(unstructure) variance
Mixed-effects ML regression
Group variable: escuela
Log likelihood = -14004.613
Number of obs
Number of groups
=
=
4059
65
Obs per group: min =
avg =
max =
2
62.4
198
Wald chi2(1)
Prob > chi2
=
=
779.79
0.0000
-----------------------------------------------------------------------------y |
Coef.
Std. Err.
z
P>|z|
[95% Conf. Interval]
-------------+---------------------------------------------------------------x1 |
.556729
.0199368
27.92
0.000
.5176535
.5958044
_cons |
-.115085
.3978346
-0.29
0.772
-.8948264
.6646564
----------------------------------------------------------------------------------------------------------------------------------------------------------Random-effects Parameters |
Estimate
Std. Err.
[95% Conf. Interval]
-----------------------------+-----------------------------------------------escuela: Unstructured
|
var(x1) |
.0145358
.0045773
.0078415
.0269452
var(_cons) |
9.04472
1.831021
6.08243
13.44971
cov(x1,_cons) |
.1804042
.0691523
.0448682
.3159402
-----------------------------+-----------------------------------------------var(Residual) |
55.36531
1.249281
52.97012
57.86881
-----------------------------------------------------------------------------LR test vs. linear regression:
chi2(3) =
443.64
Prob > chi2 = 0.0000
Post Estimacin: estimacin de efectos aleatorios (grupo - nivel de errores)
Efectos fijos
Efectos aleatorios
Para estimar los efectos aleatorios u, utilice el comando predictwith con la opcin
reffects, esto dar las mejores predicciones lineales insesgadas (BLUPs) de los efectos
aleatorios, que bsicamente muestran la cantidad de variacin, tanto para el intercepto
y el coeficiente beta estimado (s) . Despus de ejecutar xtmixed se tiene,
. predict u*, reffects
Lo que crea dos variables:
u1
u2
BLUP r.e. para escuela: x1 ---------------/* u*/
BLUP r.e. para escuela: _cons ----------/* u*/
Post Estimacin: estimacin de efectos aleatorios (grupo - nivel de errores)
yi = -0.12 + 0.56x1
yi = -0.12 + 0.56x1 + u + u
Efectos fijos
Efectos aleatorios
Explorando algunos resultados:
. bysort escuela: generate grupo=(_n==1)
/* Crea una variable grupo con el valor de 1
para el primer registro de cada escuela
. list escuela u2 u1 if escuela<=10 & grupo
1.
74.
129.
181.
260.
295.
375.
463.
565.
599.
+---------------------------------+
| escuela
u2
u1 |
|---------------------------------|
|
1
3.749336
.1249761 |
|
2
4.702127
.1647271 |
|
3
4.797687
.0808662 |
|
4
.3502472
.1271837 |
|
5
2.462807
.0720581 |
|---------------------------------|
|
6
5.183819
.0586235 |
|
7
3.640948
-.1488728 |
|
8
-.1218853
.0068856 |
|
9
-1.767985
-.0886202 |
|
10
-3.139073
-.1360777 |
+---------------------------------+
Post estimacin: Estimando intercepto / pendiente
yi = -0.12 + 0.56x1 + 3.75 0.12 = (-0.12 + 3.75) + (0.56 + 0.12)x1
= 3.63 + 0.68x1
Calculemos intersecciones y pendientes por tipo de escuela:
. gen intercepto= _b[_cons] + u2
. gen pendiente = _b[x1] + u1
. list escuela intercepto pendiente if escuela<=10 & grupo
1.
74.
129.
181.
260.
295.
375.
463.
565.
599.
+--------------------------------+
| escuela
interce~o
pendie~e |
|--------------------------------|
|
1
3.634251
.6817051 |
|
2
4.587042
.7214561 |
|
3
4.682601
.6375952 |
|
4
.2351622
.6839126 |
|
5
2.347722
.6287871 |
|--------------------------------|
|
6
5.068734
.6153525 |
|
7
3.525863
.4078562 |
|
8
-.2369703
.5636146 |
|
9
-1.88307
.4681087 |
|
10
-3.254158
.4206513 |
+--------------------------------+
Con el origen y la pendiente se puede estimar los valores de y (yhat)
. gen yhat= intercepto+ (pendiente*x1)
O, despus de ejecutar xtmixed:
. predict yhat_fit, fitted
. list escuela yhat yhat_fit if escuela<=10 & grupo
1.
74.
129.
181.
260.
295.
375.
463.
565.
599.
+---------------------------------+
| escuela
yhat
yhat_fit |
|---------------------------------|
|
1
-12.42945
-12.42945 |
|
2
-15.39513
-15.39513 |
|
3
-7.179856
-7.179857 |
|
4
-15.88055
-15.88055 |
|
5
-5.193322
-5.193322 |
|---------------------------------|
|
6
-3.836647
-3.836646 |
|
7
-6.084859
-6.084859 |
|
8
-13.98353
-13.98353 |
|
9
-15.62206
-15.62206 |
|
10
-9.341824
-9.341824 |
+---------------------------------+
Para representar regresiones individuales, utilizamos el comando siguiente:
-10
10
20
. twoway connected yhat_fit x1 if escuela<=10, connect(L)
-20
Fitted values: xb + Zu
Post estimacin: Grfico de valores ajustados
-40
-20
0
Femenino=1
20
40
Post estimacin: Residuos
Despus de utilizar xtmixed podemos obtener los residuales escribiendo:
. predict residuos, residuals
. predict resid_std, rstandard
/* residuos/sd(residuos) */
Una revisin rpida de la normalidad en los residuos
0
-2
-4
Standardized residuals
. qnorm resid_std
-4
-2
0
Inverse Normal