-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathCapitulo_08.Rmd
1451 lines (764 loc) · 78.3 KB
/
Capitulo_08.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# Uso de paquetes para aplicar modelos avanzados {#Usodepaquetesparaaplicarmodelosavanzados}
```{r, eval=knitr::opts_knit$get("rmarkdown.pandoc.to") == "html", results='asis', echo=FALSE}
cat('<hr style="background-color:#03193b;height:2px">')
```
Palabras clave:
- Cadena Markov Monte Carlo
- Muestra emparejada
- Muestra de Monte Carlo de la cadena Markov
- Llamada de rol
- Partido titular
En los primeros siete capítulos de este libro, hemos tratado a R como un programa de software estadístico tradicional y hemos revisado cómo puede realizar la gestión de datos, informar estadísticas simples y estimar una variedad de modelos de regresión. En el resto de este libro, sin embargo, nos centraremos en la flexibilidad adicional que ofrece R , tanto en términos de capacidad de programación que está disponible para el usuario como en el suministro de herramientas aplicadas adicionales a través de paquetes . En este capítulo, nos enfocamos en cómo cargar lotes adicionales de código de paquetes escritos por el usuario puede agregar funcionalidad que muchos programas de software no permitirán. Aunque hemos utilizado paquetes para una variedad de propósitos en los siete capítulos anteriores (incluidos car , gmodels, y lattice , por nombrar algunos), aquí destacaremos los paquetes que habilitan métodos únicos. Si bien el sitio web de CRAN enumera numerosos paquetes que los usuarios pueden instalar en un momento dado, nos centraremos en cuatro paquetes particulares para ilustrar los tipos de funcionalidad que se pueden agregar.
El primer paquete que discutiremos, lme4 , permite a los usuarios estimar modelos multinivel, ofreciendo así una extensión a los modelos de regresión discutidos en los Capítulos. 6 y 7 (Bates et al. 2014). Los otros tres fueron desarrollados específicamente por científicos políticos para abordar los problemas de análisis de datos que encontraron en su investigación: MCMCpack permite a los usuarios estimar una variedad de modelos en un marco bayesiano utilizando la cadena de Markov Monte Carlo (MCMC) (Martin et al. 2011). cem permite al usuario realizar un emparejamiento exacto aproximado, un método para la inferencia causal con datos de campo (Iacus et al. 2009, 2011). Por último, wnominate permite al usuario escalar los datos de elección, como los datos de la lista legislativa, para estimar los puntos ideales ideológicos de los legisladores o encuestados (Poole y Rosenthal 1997; Poole y col. 2011). Las siguientes cuatro secciones considerarán cada paquete por separado, por lo que cada sección presentará su ejemplo de datos a su vez. Estas secciones están diseñadas para ofrecer una breve descripción de los tipos de capacidades que ofrecen los paquetes R , aunque algunos lectores pueden no estar familiarizados con los antecedentes de algunos de estos métodos. Se anima al lector interesado a consultar algunos de los recursos citados para aprender más sobre la teoría detrás de estos métodos.
8.1 Modelos multinivel con lme4
Habiendo discutido los modelos lineales en el Cap. 6 y varios ejemplos de modelos lineales generalizados en el Cap. 7 , pasamos ahora a una extensión de este tipo de modelos: modelos multinivel. Los modelos multinivel, o modelos jerárquicos, son apropiados siempre que los datos de interés tengan una estructura anidada o longitudinal. Una estructura anidada ocurre cuando se puede pensar que las observaciones están dentro o como parte de una unidad de nivel superior: un ejemplo de política común es estudiar los resultados del aprendizaje de los estudiantes, pero los estudiantes están anidados dentro de las aulas. En tal caso, el investigador debería tener en cuenta el hecho de que los estudiantes de la muestra no son independientes entre sí, pero es probable que sean similares si se encuentran en la misma clase. De manera similar, siempre que un investigador estudia individuos que han repetido observaciones a lo largo del tiempo, es razonable pensar que las observaciones referenciadas en el tiempo están integradas dentro de las observaciones del individuo. Por ejemplo,1986) datos introducidos por primera vez en el Cap. 4 , los ingresos de los participantes en su estudio se observan en 1974, 1975 y 1978. Algunos análisis de políticas pueden optar por considerar las tres observaciones temporales para cada individuo como anidadas dentro del caso de cada individuo. 1 Se pueden encontrar explicaciones más completas de los modelos multinivel en Scott et al. ( 2013) y Gelman y Hill (2007). Continuamos ampliando dos de nuestros ejemplos anteriores para ilustrar un modelo lineal multinivel y un modelo logit multinivel.
8.1.1 Regresión lineal multinivel
En este ejemplo, volvemos a nuestro ejemplo del Cap. 6 sobre el número de horas que los docentes dedican a la docencia en el aula. Originalmente, ajustamos un modelo lineal utilizando mínimos cuadrados ordinarios (MCO) como nuestro estimador. Sin embargo, Berkman y Plutzer ( 2010) señalan que es probable que los profesores del mismo estado compartan características similares. Estas características podrían ser similitudes en la capacitación, en la cultura local o en la ley estatal. Para dar cuenta de estas similitudes no observadas, podemos pensar en los maestros como anidados dentro de los estados. Por esta razón, agregaremos un efecto aleatorio para cada estado. Los efectos aleatorios explican la correlación intraclase o la correlación de errores entre observaciones dentro del mismo grupo. En presencia de correlación intraclase, las estimaciones de MCO son ineficientes porque los términos de perturbación no son independientes, por lo que un modelo de efectos aleatorios da cuenta de este problema.
Primero, recargamos los datos de la Encuesta Nacional de Maestros de Biología de Escuelas Secundarias de la siguiente manera: 2
rm (lista = ls ())
biblioteca (extranjera)
evolución <-read.dta ("BPchap7.dta")
evolución $ mujer [evolución $ mujer == 9] <- NA
evolución <-subconjunto (evolución,! is.na (mujer))
Recuerde que teníamos un puñado de observaciones de mujeres que debían ser recodificadas como perdidas. Como antes, subconjuntamos nuestros datos para omitir estas observaciones faltantes.
Para adaptarse a un modelo multinivel, en realidad hay algunos comandos disponibles. Vamos a optar por usar un comando del lme4 ( l Inear m ixed correo biblioteca fecto). 3 En nuestro primer uso, instalaremos el paquete y luego, en cada uso, cargaremos la biblioteca:
install.packages ("lme4")
biblioteca (lme4)
Una vez que hemos cargado la biblioteca, nos ajustamos nuestro modelo lineal multinivel mediante el LMER ( l inear m ixed e FECTOS r egression) comando:
hours.ml <-lmer (hrs_allev ~ fase1 + senior_c + ph_senior + notest_p +
ph_notest_p + female + biocred3 + degr3 + evol_course + certificado +
idsci_trans + confiado + (1 | st_fip), datos = evolución)
La sintaxis del comando lmer es casi idéntica al código que usamos al ajustar un modelo con OLS usando lm . De hecho, el único atributo que agregamos es el término adicional (1 | st_fip) en el lado derecho del modelo. Esto agrega una intersección aleatoria por estado. En cualquier ocasión en la que queramos incluir un efecto aleatorio, colocamos entre paréntesis el término para el que se incluye el efecto seguido de una barra vertical y la variable que identifica las unidades de nivel superior. Entonces, en este caso, queríamos una intersección aleatoria (de ahí el uso de 1 ), y queríamos que estos fueran asignados por estado (de ahí el uso de st_fip ).
Obtenemos nuestros resultados escribiendo:
resumen (horas.ml)
En nuestra salida de resultados, R imprime la correlación entre todos los efectos fijos o parámetros de regresión estimados. Esta parte de la impresión se omite a continuación:
Ajuste de modelo lineal mixto de REML ['lmerMod']
Fórmula:
hrs_allev ~ fase1 + senior_c + ph_senior + notest_p + ph_notest
_p +
female + biocred3 + degr3 + evol_course + certificada + idsci_
trans +
seguro + (1 | st_fip)
Datos: evolución
Criterio REML en la convergencia: 5940
Residuos escalados:
Mín. 1T Mediana 3T Máx.
-2,3478 -0,7142 -0,1754 0,5566 3,8846
Efectos aleatorios:
Grupos Nombre Varianza Desv. Estándar
st_fip (Intercepción) 3.089 1.758
Residual 67.873 8.239
Número de obs: 841, grupos: st_fip, 49
Efectos fijos:
Estimar Std. Valor t de error
(Intercepción) 10.5676 1.2138 8.706
fase1 0,7577 0,4431 1,710
senior_c -0.5291 0.3098 -1.708
ph_senior -0.5273 0.2699 -1.953
notest_p 0.1134 0.7490 0.151
ph_notest_p -0.5274 0.6598 -0.799
mujer -0,9702 0,6032 -1,608
biocred3 0.5157 0.5044 1.022
grados3 -0,4434 0,3887 -1,141
evol_course 2.3894 0.6270 3.811
certificado -0,5335 0,7188 -0,742
idsci_trans 1.7277 1.1161 1.548
seguro 2.6739 0.4468 5.984
La salida primero imprime una variedad de estadísticas de ajuste: AIC, BIC, log-verosimilitud, desviación y desviación de máxima verosimilitud restringida. En segundo lugar, imprime la varianza y la desviación estándar de los efectos aleatorios. En este caso, la varianza para el término st_fip es la varianza de nuestros efectos aleatorios a nivel de estado. La varianza residual corresponde a la varianza del error de regresión que normalmente calcularíamos para nuestros residuos. Por último, los efectos fijos que se informan son sinónimos de coeficientes de regresión lineal que normalmente nos interesan, aunque ahora nuestras estimaciones han tenido en cuenta la correlación intraclase entre profesores dentro del mismo estado. Cuadro 8.1compara nuestras estimaciones OLS y multinivel una al lado de la otra. Como puede verse, el modelo multinivel ahora divide la varianza inexplicable en dos componentes (nivel estatal e individual), y las estimaciones de coeficientes han cambiado algo.
Cuadro 8.1
Dos modelos de horas de clase dedicadas a la enseñanza de la evolución por profesores de biología de secundaria
OLS
Multi nivel
Parámetro
Estimar
Std. error
Pr (> | z |)
Estimar
Std. error
Pr (> | z |)
Interceptar
10.2313
1.1905
0,0000
10.5675
1.2138
0,0000
Índice de estándares 2007
0,6285
0.3331
0.0596
0,7576
0.4431
0.0873
Antigüedad (centrada)
−0,5813
0.3130
0.0636
−0,5291
0.3098
0.0876
Estándares × antigüedad
−0,5112
0.2717
0.0603
−0,5273
0.2699
0.0508
Cree que no hay prueba
0.4852
0,7222
0.5019
0,1135
0,7490
0.8795
Estándares × cree que no hay prueba
−0,5362
0,6233
0.3899
−0,5273
0,6598
0.4241
La maestra es mujer
−1,3546
0,6016
0.0246
−0,9703
0,6032
0.1077
Créditos obtenidos en biología (0-2)
0.5559
0.5072
0.2734
0.5157
0.5044
0.3067
Grados en ciencias (0-2)
−0.4003
0.3922
0.3077
−0,4434
0.3887
0.2540
Clase de evolución completada
2.5108
0,6300
0,0001
2.3894
0,6270
0,0001
Tiene certificación normal
−0,4446
0,7212
0.5377
−0,5335
0,7188
0.4580
Se identifica como científico
1.8549
1.1255
0.0997
1.7277
1.1161
0.1216
Experiencia autoevaluada (−1 a +2)
2.6262
0.4501
0,0000
2.6738
0,4468
0,0000
Varianza a nivel de estado
-
3.0892
Varianza a nivel individual
69.5046
67,8732
Notas : N = 841. Datos de Berkman y Plutzer (2010)
8.1.2 Regresión logística multinivel
Si bien es algo más complejo, la lógica del modelado multinivel también se puede aplicar al estudiar variables dependientes limitadas. Hay dos enfoques amplios para extender los GLM a un marco multinivel: modelos marginales, que tienen una interpretación de población promediada, y modelos lineales mixtos generalizados (GLMM), que tienen una interpretación a nivel individual (Laird y Fitzmaurice 2013, págs. 149-156). Si bien se anima a los lectores a leer más sobre los tipos de modelos disponibles, su estimación y su interpretación, por ahora nos centramos en el proceso de estimación de un GLMM.
En este ejemplo, volvemos a nuestro ejemplo de Sect. 7.1.1 del último capítulo, sobre si un encuestado informó haber votado por el partido en el poder en función de la distancia ideológica del partido. Como Singh ( 2014a) observa, los votantes que hagan su elección en el mismo país-año se enfrentarán a muchas características de la elección que son exclusivas de esa elección. Por lo tanto, es probable que exista una correlación intraclase entre los votantes dentro de la misma elección. Además, el efecto de la ideología en sí puede ser más fuerte en algunas elecciones que en otras: los métodos multinivel, incluidos los GLMM, nos permiten evaluar si existe variación en el efecto de un predictor entre grupos, que es una característica que usaremos.
Volviendo a los detalles del código, si la biblioteca lme4 no está cargada, la necesitamos nuevamente. Además, si los datos de no se cargan, entonces necesitamos cargar la biblioteca externa y el conjunto de datos en sí. Todo esto se logra de la siguiente manera: 4
biblioteca (lme4)
biblioteca (extranjera)
votando <-read.dta ("SinghJTP.dta")
Basándonos en el modelo de la tabla 7.1 , primero simplemente agregamos una intersección aleatoria a nuestro modelo. La sintaxis para estimar el modelo e imprimir los resultados es:
inc.linear.ml <-glmer (votadainc ~ distanciainc + (1 | cntryyear),
familia = binomio (enlace = "logit"), datos = votación)
resumen (incluido lineal.ml)
Tenga en cuenta que ahora usamos la glmer comando ( g eneralized l inear m ixed e FECTOS r egression). Al usar la opción de familia , podemos usar cualquiera de las funciones de enlace comunes disponibles para el comando glm . Un vistazo al resultado muestra que, además de los efectos fijos tradicionales que reflejan los coeficientes de regresión logística, también se nos presenta la varianza de la intersección aleatoria para el país y el año de la elección:
Ajuste de modelo lineal mixto generalizado por Laplace
aproximación
Fórmula: voteinc ~ distanciainc + (1 | cntryyear)
Datos: votación
Desviación de logLik de AIC BIC
41998.96 42024.62 -20996.48 41992.96
Efectos aleatorios:
Grupos Nombre Varianza Desv. Estándar
cntryyear (intersección) 0.20663 0.45457
Número de obs: 38211, grupos: cntryyear, 30
Efectos fijos:
Estimar Std. Error z valor Pr (> | z |)
(Intercepción) 0.161788717 0.085578393 1.89053 0.058687.
distanciainc -0.501250136 0.008875997 -56.47254 <2e-16 ***
---
Signif. códigos: 0 *** 0,001 ** 0,01 * 0,05. 0,1 1
Correlación de efectos fijos:
(Intr.)
distanciainc -0.185
Para replicar un modelo más acorde con Singh (2014a), ahora ajustamos un modelo que incluye una intersección aleatoria y un coeficiente aleatorio de distancia ideológica, ambos condicionados por el país y el año de la elección. La sintaxis para estimar este modelo e imprimir el resultado es:
inc.linear.ml.2 <-glmer (votadainc ~ distanciainc +
(distanciainc | cntryyear), family = binomial (link = "logit"),
datos = votación)
resumen (incluido lineal.ml.2)
Observe que ahora hemos condicionado la variable distanciainc por cntryyear . Esto agrega un coeficiente aleatorio para la distancia ideológica. Además, de forma predeterminada, agregar este efecto aleatorio también agrega una intersección aleatoria. Nuestro resultado en este caso es:
Ajuste de modelo lineal mixto generalizado por Laplace
aproximación
Fórmula: voteinc ~ distanciainc + (distanciainc |
cntryyear)
Datos: votación
Desviación de logLik de AIC BIC
41074 41117-20532 41064
Efectos aleatorios:
Grupos Nombre Varianza Desv. Estándar Corr
cntryyear (intersección) 0,616658 0,78528
distanciainc 0.098081 0.31318 -0.808
Número de obs: 38211, grupos: cntryyear, 30
Efectos fijos:
Estimar Std. Error z valor Pr (> | z |)
(Intercepción) 0.26223 0.14531 1.805 0.0711.
distanciainc -0.53061 0.05816 -9.124 <2e-16 ***
---
Signif. códigos: 0 *** 0,001 ** 0,01 * 0,05. 0,1 1
Correlación de efectos fijos:
(Intr.)
distanciainc -0.808
Bajo efectos aleatorios, primero vemos la varianza para la intersección aleatoria con referencia a la elección y luego la varianza para el coeficiente con referencia a la elección para la distancia ideológica. Los efectos fijos de los coeficientes de regresión logística también se presentan de la forma habitual. El AIC indica que esta versión del modelo se ajusta mejor que el modelo con solo una intersección aleatoria o el modelo de la Tabla 7.1 que no incluyó efectos aleatorios, ya que el puntaje de 41,074 es menor que el AIC de cualquiera de esos modelos. En resumen, esta discusión debería ofrecer una idea de los tipos de modelos jerárquicos que R puede estimar usando lme4 (Bates et al. 2014).
8.2 Métodos bayesianos con MCMCpack
El paquete MCMCpack permite a los usuarios realizar inferencias bayesianas en una variedad de modelos de regresión y modelos de medición comunes. El paquete incluso tiene un comando, MCMCmetrop1R , que construirá una muestra de MCMC a partir de una distribución definida por el usuario utilizando un algoritmo de Metropolis. Se anima a los lectores que deseen aprender más sobre los métodos bayesianos a consultar recursos como: Carlin y Louis (2009), Gelman et al. (2004), Branquias (2008) y Robert (2001).
Como una simple ilustración de cómo funciona el paquete, nos enfocamos en esta sección en algunos de los modelos de regresión comunes que están programados en el paquete. Esto es poderoso para el usuario de R, ya que los investigadores que prefieren informar modelos bayesianos pueden hacerlo fácilmente si la especificación de su modelo se ajusta a una estructura común. Al ilustrar estas técnicas, revisaremos una vez más el modelo lineal de horas de evolución de Berkman y Plutzer (2010) y el modelo de regresión logística del apoyo del partido en el poder de Singh (2014a).
8.2.1 Regresión lineal bayesiana
Para estimar nuestro modelo de regresión lineal bayesiano, debemos volver a cargar los datos de la Encuesta Nacional de Maestros de Biología de Escuelas Secundarias, si aún no están cargados:
rm (lista = ls ())
biblioteca (extranjera)
evolución <-read.dta ("BPchap7.dta")
evolución $ mujer [evolución $ mujer == 9] <- NA
evolución <-subconjunto (evolución,! is.na (mujer))
Con los datos cargados, debemos instalar MCMCpack si este es el primer uso del paquete en la computadora. Una vez instalado el programa, debemos cargar la biblioteca:
install.packages ("MCMCpack")
biblioteca (MCMCpack)
Ahora podemos usar MCMC para ajustar nuestro modelo de iones de regresión lineal bayesiana con el comando MCMCregress :
mcmc.horas <-MCMCregress (hrs_allev ~ fase1 + senior_c + ph_senior +
notest_p + ph_notest_p + female + biocred3 + degr3 +
evol_course + certificado + idsci_trans + seguro, datos = evolución)
Esté preparado para que la estimación con MCMC generalmente toma más tiempo computacionalmente, aunque los modelos simples como este generalmente terminan con bastante rapidez. Además, debido a que MCMC es una técnica basada en simulación, es normal que los resúmenes de los resultados difieran ligeramente entre las repeticiones. Con este fin, si encuentra diferencias entre sus resultados y los impresos aquí después de usar el mismo código, no debe preocuparse a menos que los resultados sean marcadamente diferentes.
Si bien el código anterior se basa en los valores predeterminados del comando MCMCregress , algunas de las opciones de este comando son esenciales para resaltar: Una característica central de los métodos bayesianos es que el usuario debe especificar las prioridades para todos los parámetros que se estiman. Los valores predeterminados para MCMCregress son valores previos conjugados vagos para los coeficientes y la varianza de las perturbaciones. Sin embargo, el usuario tiene la opción de especificar sus propios antecedentes sobre estas cantidades. 5 Se anima a los usuarios a que revisen estas opciones y otros recursos sobre cómo establecer antecedentes (Carlin y Louis 2009; Gelman y col. 2004; Branquia 2008; Robert 2001). Los usuarios también tienen la opción de cambiar el número de iteraciones en la muestra de MCMC con la opción mcmc y el período de quemado (es decir, el número de iteraciones iniciales que se descartan) con la opción de quemado . Los usuarios siempre deben evaluar la convergencia del modelo después de estimar un modelo con MCMC (que se discutirá en breve) y considerar si el quemado o el número de iteraciones deben cambiarse si hay evidencia de no convergencia.
Después de estimar el modelo, escribiendo resumen (mcmc.hours) ofrecerá un resumen rápido de la muestra posterior :
Iteraciones = 1001: 11000
Intervalo de dilución = 1
Número de cadenas = 1
Tamaño de muestra por cadena = 10000
1. Media empírica y desviación estándar de cada
variable, más el error estándar de la media:
Media SD Naive SE Serie temporal SE
(Intercepción) 10,2353 1,1922 0,011922 0,011922
fase1 0,6346 0,3382 0,003382 0,003382
senior_c -0.5894 0.3203 0.003203 0.003266
ph_senior -0,5121 0,2713 0,002713 0,002713
notest_p 0,4828 0,7214 0,007214 0,007214
ph_notest_p -0.5483 0.6182 0.006182 0.006182
mujer -1,3613 0,5997 0,005997 0,006354
biocred3 0,5612 0,5100 0,005100 0,005100
grados3 -0,4071 0,3973 0,003973 0,003973
evol_course 2,5014 0,6299 0,006299 0,005870
certificado -0,4525 0,7194 0,007194 0,007194
idsci_trans 1.8658 1.1230 0.011230 0.010938
seguro 2.6302 0.4523 0.004523 0.004590
sigma2 70,6874 3,5029 0,035029 0,035619
2. Cuantiles para cada variable:
2,5% 25% 50% 75% 97,5%
(Intercepción) 7.92359 9.438567 10.2273 11.03072 12.59214
fase1 -0.02787 0.405026 0.6384 0.86569 1.30085
senior_c -1.22527 -0.808038 -0.5885 -0.37351 0.04247
ph_senior -1.04393 -0.694228 -0.5105 -0.32981 0.03152
notest_p -0.92717 -0.006441 0.4863 0.97734 1.88868
ph_notest_p -1.75051 -0.972112 -0.5462 -0.13138 0.63228
femenino -2.52310 -1.771210 -1.3595 -0.96109 -0.18044
biocred3 -0,42823 0,212168 0,5558 0,90768 1,55887
grados3 -1.19563 -0.671725 -0.4048 -0.14536 0.38277
evol_course 1.26171 2.073478 2.5064 2.92601 3.73503
certificado -1.84830 -0.942671 -0.4477 0.03113 0.95064
idsci_trans -0.33203 1.107771 1.8667 2.63507 4.09024
confiado 1.73568 2.324713 2.6338 2.94032 3.48944
sigma2 64.12749 68.277726 70.5889 72.95921 77.84095
Dado que MCMC produce una muestra de valores de parámetros simulados, toda la información reportada se basa en estadísticas descriptivas simples de la salida simulada (que son 10,000 conjuntos de parámetros, en este caso). La parte 1 del resumen anterior muestra la media de la muestra para cada parámetro, la desviación estándar de la muestra de cada parámetro y dos versiones del error estándar de la media. La parte 2 del resumen muestra los percentiles de la muestra de cada parámetro. La Tabla 8.2 muestra un formato común para presentar los resultados de un modelo como este: informar la media y la desviación estándar de la distribución posterior marginal de cada parámetro y un intervalo de credibilidad del 95% basado en los percentiles. 6
Cuadro 8.2
Modelo lineal de horas de clase dedicadas a la evolución de la enseñanza por profesores de biología de secundaria (estimaciones de MCMC)
Vaticinador
Significar
Std. Dev.
[95% Cred. En t.]
Interceptar
10.2353
1.1922
[7,9236:
12.5921]
Índice de estándares 2007
0,6346
0.3382
[−0,0279:
1.3008]
Antigüedad (centrada)
−0,5894
0.3203
[−1,2253:
0.0425]
Estándares × antigüedad
−0,5121
0.2713
[−1.0439:
0.0315]
Cree que no hay prueba
0.4828
0,7214
[−0,9272:
1.8887]
Estándares × cree que no hay prueba
−0,5483
0,6182
[−1,7505:
0.6323]
La maestra es mujer
−1,3613
0.5997
[−2,5231:
−0,1804]
Créditos obtenidos en biología (0-2)
0.5612
0.5100
[−0,4282:
1.5589]
Grados en ciencias (0-2)
−0,4071
0.3973
[−1,1956:
0.3828]
Clase de evolución completada
2.5014
0,6299
[1.2617:
3.7350]
Tiene certificación normal
−0,4525
0,7194
[−1,8483:
0.9506]
Se identifica como científico
1.8658
1.1230
[−0,3320:
4.0902]
Experiencia autoevaluada (- 1 a + 2)
2.6302
0.4523
[1.7357:
3.4894]
Varianza de error de regresión
70.6874
3.5029
[64,1275:
77.8410]
Notas : N = 841. Datos de Berkman y Plutzer (2010)
Cuando un usuario carga MCMCpack en R , también se cargará la biblioteca de coda . 7 coda es particularmente útil porque permite al usuario evaluar la convergencia de los modelos estimados con MCMC y reportar cantidades adicionales de interés. Como se mencionó anteriormente, cada vez que un investigador estima un modelo utilizando MCMC, debe evaluar si existe alguna evidencia de no convergencia. En el caso de que las cadenas de Markov no hayan convergido, el modelo debe ser muestreado para más iteraciones. MCMCregress estima el modelo utilizando una sola cadena. Por lo tanto, para nuestro modelo del número de horas de evolución que se enseñan en las aulas de secundaria, podemos evaluar la convergencia utilizando Geweke convergencia ‘sdiag nostic, que simplemente pregunta si los medios de la primera y última parte de la cadena son los mismos. Para calcular este diagnóstico, escribimos:
geweke.diag (mcmc.horas, frac1 = 0.1, frac2 = 0.5)
Aquí hemos especificado que queremos comparar la media del primer 10% de la cadena ( frac1 = 0.1 ) con la media del último 50% de la cadena ( frac2 = 0.5 ). La salida resultante presenta una relación z para esta prueba de diferencia de medias para cada parámetro:
Fracción en la 1ra ventana = 0.1
Fracción en la segunda ventana = 0.5 (Intercepción) fase1 senior_c ph_senior notest_p
-1,34891 -1,29015 -1,10934 -0,16417 0,95397
ph_notest_p hembra biocred3 degr3 evol_course
1,13720 -0,57006 0,52718 1,25779 0,62082
certificado idsci_trans seguro sigma2
1,51121 -0,87436 -0,54549 -0,06741
En este caso, ninguna de las estadísticas de prueba supera ningún umbral de significancia común para una estadística de prueba distribuida normalmente, por lo que no encontramos evidencia de no convergencia. Con base en esto, podemos estar contentos con nuestra muestra original de MCMC de 10,000.
Una cosa más que podemos desear hacer con nuestra salida de MCMC es trazar la función de densidad estimada general de nuestras distribuciones posteriores marginales. Podemos graficar estos uno a la vez utilizando la función densplot , aunque el analista deberá hacer referencia al parámetro de interés según su orden numérico de aparición en la tabla de resumen. Por ejemplo, si quisiéramos graficar el coeficiente para el indicador de si un docente completó una clase de evolución ( evol_course ), esa es la estimación del décimo parámetro reportado en la tabla. De manera similar, si quisiéramos informar la gráfica de densidad para el coeficiente de la experiencia autoevaluada del maestro ( confianza), que es el decimotercer parámetro informado en la tabla resumen. Por lo tanto, podríamos trazar cada uno de estos escribiendo:
densplot (mcmc.horas [, 10])
densplot (mcmc.horas [, 13])
Las gráficas de densidad resultantes se presentan en la Fig. 8.1 . Como muestran las figuras, ambas distribuciones posteriores marginales tienen una distribución normal aproximada y la moda se encuentra cerca de la media y la mediana informadas en nuestro resultado resumido.
Abrir imagen en nueva ventanaFigura 8.1
Figura 8.1
Gráficos de densidad de distribución marginal posterior de coeficientes para determinar si el maestro completó una clase de evolución y la pericia autoevaluada del maestro. Basado en una muestra de MCMC de 10,000 iteraciones (quemado de 1000 iteraciones). ( a ) Clase de evolución completa; ( b ) Experiencia autoevaluada
8.2.2 Regresión logística bayesiana
Como una ilustración adicional de que MCMCpack estima una variedad de modelos, ilustramos la regresión logística bayesiana, utilizando Singh (2014a) datos sobre la votación de los partidos en el poder por última vez. Si no tiene estos datos o la biblioteca cargada, asegúrese de hacerlo:
biblioteca (MCMCpack)
biblioteca (extranjera)
votando <-read.dta ("SinghJTP.dta")
Para estimar el modelo logit bayesiano usando MCMC , escribimos :
inc.linear.mcmc <-MCMClogit (votadainc ~ distanciainc, datos = votando)
Al igual que con el comando MCMCregress , hemos optado por utilizar los valores predeterminados en este caso, pero se recomienda a los usuarios que consideren establecer sus propios valores previos para satisfacer sus necesidades. De hecho, este es un caso en el que necesitaremos aumentar el número de iteraciones en nuestro modelo. Podemos verificar la convergencia de nuestro modelo usando el diagnóstico de Geweke:
geweke.diag (incluido linear.mcmc, frac1 = 0.1, frac2 = 0.5)
Nuestro resultado en este caso muestra una diferencia significativa entre las medias al principio y al final de la cadena para cada parámetro:
Fracción en la 1ra ventana = 0.1
Fracción en la segunda ventana = 0.5
(Intercepción) distanciainc
2.680 -1.717
El valor absoluto de ambas razones z excede 1.645, por lo que podemos decir que la media es significativamente diferente para cada parámetro al nivel de confianza del 90%, lo cual es evidencia de no convergencia.
Como respuesta, podemos duplicar nuestro período de quemado y el número de iteraciones a 2,000 y 20,000, respectivamente. El código es:
inc.linear.mcmc.v2 <-MCMClogit (votadoinc ~ distanciainc,
datos = votación, quemado = 2000, mcmc = 20000)
Ahora podemos verificar la convergencia de esta nueva muestra escribiendo:
geweke.diag (incluido linear.mcmc.v2, frac1 = 0.1, frac2 = 0.5)
Nuestra salida ahora muestra relaciones z no significativas para cada parámetro, lo que indica que ya no hay evidencia de no convergencia:
Fracción en la 1ra ventana = 0.1
Fracción en la segunda ventana = 0.5
(Intercepción) distanciainc
-1,0975 0,2128
Continuando con esta muestra de 20.000, entonces, si escribimos
resumen (inc.linear.mcmc.v2) en la consola, el resultado es:
Iteraciones = 2001: 22000
Intervalo de dilución = 1
Número de cadenas = 1
Tamaño de muestra por cadena = 20000
1. Media empírica y desviación estándar de cada
variable, más el error estándar de la media:
Media SD Naive SE Serie temporal SE
(Intercepción) 0.1940 0.01846 1.305e-04 0.0003857
distanciainc -0.4946 0.00829 5.862e-05 0.0001715
2. Cuantiles para cada variable:
2,5% 25% 50% 75% 97,5%
(Intercepción) 0,1573 0,1817 0,1944 0,2063 0,2298
distanciainc -0.5105 -0.5003 -0.4946 -0.4890 -0.4783
Estos resultados son similares a los que informamos en el último capítulo en la tabla 7.1 , aunque ahora tenemos la oportunidad de interpretar los hallazgos como bayesianos. Al igual que con la regresión lineal bayesiana, si quisiéramos informar las gráficas de densidad de cada parámetro, podríamos aplicar el comando densplot como antes. En general, esta breve ilustración debería mostrar a los investigadores lo fácil que es usar métodos bayesianos en R con MCMCpack . Se recomienda a los lectores que deseen utilizar métodos bayesianos más avanzados que consulten el manual de referencia de MCMCpack y Martin et al. ( 2011).
8.3 Inferencia causal con cem
Una innovación destacada en la metodología política ha sido el desarrollo de varios métodos nuevos de emparejamiento. En resumen, el emparejamiento es una técnica diseñada para seleccionar un subconjunto de datos de campo para realizar una comparación justa de las personas que reciben un tratamiento para controlar a las personas que no recibieron el tratamiento. Con el emparejamiento, algunas observaciones se descartan para que las observaciones de control y tratamiento restantes sean similares en todas las covariables que se sabe que dan forma al resultado de interés. En ausencia de datos experimentales, los métodos de emparejamiento sirven para permitir al investigador aislar cómo la variable de tratamiento afecta las respuestas (ver Rubin 2006 para un tratamiento completo de la inferencia causal con emparejamiento).
Los científicos políticos han desarrollado varios métodos nuevos de emparejamiento (Imai y van Dyk 2004; Sekhon y Grieve 2012). Como ilustración de uno de ellos, y de cómo se implementa la técnica novedosa en R , recurrimos al método desarrollado por Iacus et al. (2009, 2011, 2012), C oarsened E xact M atching (CEM). En resumen, CEM procede recodificando temporalmente cada covariable en una variable ordenada que agrupa valores similares de la covariable. Luego, los datos se clasifican en estratos en función de sus perfiles de las variables aproximadas, y cualquier observación en un estrato que no contiene al menos un tratamiento y una unidad de control se desecha. La muestra resultante debe mostrar mucho más equilibrio en las variables de control entre las observaciones tratadas y de control. En R , esta técnica se implementa con el comando cem dentro del paquete cem .
8.3.1 Desequilibrio de covariables, implementación de CEM y ATT
Como datos de nuestro ejemplo, volvemos a LaLonde (1986) estudio de la Demostración Nacional de Trabajo Apoyado que examinamos anteriormente en los Capítulos. 4 y 5. Nuestra variable de tratamiento ( tratado ) indica si la persona recibió el tratamiento de la Demostración Nacional de Trabajo Apoyado, es decir, la persona fue colocada en un trabajo del sector privado durante un año con fondos públicos que cubren los costos laborales. Nos gustaría conocer el efecto causal de este tratamiento sobre los ingresos del individuo en 1978, una vez finalizado el tratamiento ( re78 ). En la Secta. 5.1.1 Hicimos una prueba ingenua de esta hipótesis simplemente usando una prueba de diferencia de medias entre los individuos tratados y el grupo de control sin controlar ninguna de las otras variables que probablemente afecten el ingreso anual. En nuestra prueba ingenua, encontramos que los ingresos eran más altos para el grupo tratado, pero ahora podemos preguntar cuál es el efecto estimado cuando contabilizamos otras covariables importantes.
Como se señaló en capítulos anteriores, los datos de LaLonde ya están incluidos en el paquete cem , por lo que podemos cargar estos datos fácilmente si ya hemos cargado la biblioteca cem . Las siguientes líneas de código limpian, instalan cem (en caso de que aún no lo haya hecho), abren cem y cargan los datos de LaLonde (llamados LL ): 8
rm (lista = ls ())
install.packages ("cem")
biblioteca (cem)
datos (LL)
Una tarea importante cuando se utilizan métodos de emparejamiento es evaluar el grado en que los datos están equilibrados o el grado en que los casos tratados tienen una distribución similar de valores de covariables en relación con el grupo de control. Podemos evaluar el grado en que nuestros grupos de tratamiento y control tienen distribuciones diferentes con el comando de desequilibrio . En el siguiente código, primero aumentamos la penalización por la notación científica (una opción si prefiere la notación decimal). Luego, creamos un vector que nombra las variables para las que no queremos evaluar el equilibrio: la variable de tratamiento ( tratada ) y el resultado de interés ( re78). Todas las demás variables del conjunto de datos son covariables que creemos que pueden dar forma a los ingresos en 1978, por lo que nos gustaría tener un equilibrio sobre ellas. En la última línea, en realidad llamamos al comando de desequilibrio .
opciones (scipen = 8)
todrop <- c ("tratado", "re78")
desequilibrio (grupo = LL $ tratado, datos = LL, drop = todrop)
Dentro del comando de desequilibrio , el argumento de grupo es nuestra variable de tratamiento que define los dos grupos para los que queremos comparar las distribuciones de covariables. El argumento de datos nombra el conjunto de datos que estamos usando y la opción de descartar nos permite omitir ciertas variables del conjunto de datos al evaluar el equilibrio de covariables. Nuestro resultado de este comando es el siguiente:
Medida de desequilibrio multivariante: L1 = 0,735
Porcentaje de apoyo común local: LCS = 12,4%
Medidas de desequilibrio univariante:
tipo de estadística L1 min 25%
edad 0.179203803 (diff) 4.705882e-03 0 1
educación 0.192236086 (diff) 9.811844e-02 1 0
negro 0.001346801 (diff) 1.346801e-03 0 0
casado 0.010703110 (diff) 1.070311e-02 0 0
nodegree -0.083477916 (diff) 8.347792e-02 0-1
re74 -101.486184085 (diff) 5.551115e-17 0 0
re75 39.415450601 (diff) 5.551115e-17 0 0
hispano -0.018665082 (diff) 1.866508e-02 0 0
u74 -0.020099030 (diferencia) 2.009903e-02 0 0
u75 -0.045086156 (diferencia) 4.508616e-02 0 0
50% 75% máximo
edad 0.00000 -1.0000 -6.0000
educación 1,00000 1,0000 2,0000
negro 0,00000 0,0000 0,0000
casado 0,00000 0,0000 0,0000
grado de nodo 0,00000 0,0000 0,0000
re74 69.73096 584.9160 -2139.0195
re75 294.18457 660.6865 490.3945
hispano 0,00000 0,0000 0,0000
u74 0,00000 0,0000 0,0000
u75 0,00000 0,0000 0,0000
La primera línea de nuestros informes de salida L1, que es una medida del desequilibrio multivariado creado por Iacus et al. (2011). En ese artículo se encuentra disponible una explicación más completa, pero en general esta estadística varía de 0 a 1, y los valores más bajos indican un mejor equilibrio. Cuándo L1= 0 las dos distribuciones se superponen perfectamente, y cuando L1= 1las dos distribuciones no se superponen en absoluto. Volviendo a la tabla, cada fila muestra varias estadísticas de saldo para una covariable individual. Para todas estas estadísticas, los valores más cercanos a cero son mejores. La columna etiquetada como estadístico muestra la diferencia de medias entre las variables, y la columna etiquetada como L1 calcula Lj1, que es la misma medida que L1pero solo calculado para la covariable individual. Las columnas restantes muestran diferencias de cuantiles entre los dos grupos (por ejemplo, la diferencia en los mínimos respectivos de los dos grupos, la diferencia entre los percentiles 25 respectivos de los grupos, etc.).
A continuación, vamos a utilizar realmente el CEM de comandos para realizar C oarsened E xact M atching en nuestros datos. Dentro del comando cem , enumeramos nuestra variable de tratamiento con el argumento de tratamiento , nuestro conjunto de datos con el argumento de datos y cualquier variable que no queramos que coincida con el argumento de caída . La caída argumento debe incluir siempre nuestra variable de resultado, si está en el mismo conjunto de datos, así como los índices de datos o variables irrelevantes. Podríamos usar un vector para enumerar todas las variables que queremos que se ignoren, como hicimos antes con el comando de desequilibrio , pero en este caso, solo el resultadore78 debe omitirse . Escribimos:
cem.match.1 <- cem (tratamiento = "tratado", datos = LL, gota = "re78")
cem.match.1
Nuestro resultado inmediato de esto es simplemente el siguiente:
G0 G1
Todos 425297
Emparejado 222163
Inigualable 203134
Esto nos dice que nuestros datos originales tenían 425 observaciones de control y 297 observaciones tratadas. El CEM incluyó 222 del control y 163 de las observaciones tratadas en la muestra emparejada, y el resto se eliminó. Para ser claros: todas las observaciones todavía están contenidas en el conjunto de datos LL original , pero ahora el objeto cem.match.1 detalla qué observaciones coinciden o no.
Dado que CEM procede agrupando valores similares de covariables en estratos, una característica importante de esto es cómo establecemos los intervalos ordenados de cada predictor en el engrosamiento. El comando cem tiene valores predeterminados razonables si el usuario no establece estos intervalos, pero es importante registrar cuáles son los intervalos. Para ver cuáles fueron nuestros intervalos para los valores de nuestros predictores, podríamos escribir: cem.match.1 $ breaks . Esto nos daría el siguiente resultado:
$ edad
[1] 17,0 20,8 24,6 28,4 32,2 36,0 39,8 43,6 47,4 51,2 55,0
$ educación
[1] 3,0 4,3 5,6 6,9 8,2 9,5 10,8 12,1 13,4 14,7 16,0
$ negro
[1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
$ casado
[1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
$ nodegree
[1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
$ re74
[1] 0.000 3957.068 7914.136 11871.204 15828.272 19785.340
[7] 23742.408 27699.476 31656.544 35613.612 39570.680
$ re75