Gráficos en el diseño de regresión discontinua en "Stata" o "R"

10

Lee y Lemieux (p. 31, 2009) sugieren al investigador que presente los gráficos mientras realiza el análisis de diseño de regresión discontinua (RDD). Sugieren el siguiente procedimiento:

"... para algo de ancho de banda , y para cierto número de bins y a la izquierda y a la derecha del valor de corte, respectivamente, la idea es construir bins ( , ], para + , donde "K 0 K 1 b k b k + 1 k = 1 , . . . , K = K 0 K 1 b k = c - ( K 0 - k + 1 ) h .hK0K1bkbk+1k=1,...,K=K0K1bk=c(K0k+1)h.

c=cutoff point or threshold value of assignment variable
h=bandwidth or window width.

... luego compare los resultados medios justo a la izquierda y derecha del punto de corte ... "

... en todos los casos, también mostramos los valores ajustados de un modelo de regresión cuártica estimado por separado en cada lado del punto de corte ... (p. 34 del mismo documento)

Mi pregunta es cómo programamos ese procedimiento en Statao Rpara trazar los gráficos de la variable de resultado contra la variable de asignación (con intervalos de confianza) para el RDD agudo. AquíStata se menciona un ejemplo de muestra aquí y aquí (reemplace rd con rd_obs) y una muestra ejemplo en Restá aquí . Sin embargo, creo que ambos no implementaron el paso 1. Tenga en cuenta que ambos tienen los datos sin procesar junto con las líneas ajustadas en los gráficos.

Gráfico de muestra sin variable de confianza [Lee y Lemieux, 2009] ingrese la descripción de la imagen aquí Gracias de antemano.

Métrica
fuente
En respuesta a su bandera, una buena manera de revivir su pregunta es editarla y ofrecer una recompensa: esto aumentará su pregunta y hará que más personas se interesen en ella. Si cree que esta pregunta podría resolverse mejor en Stack Overflow, infórmenos y podemos migrarla por usted.
chl
Me gustaría que esto se migre a Stack Overflow.
Métricas
1
Lamentablemente, esta pregunta es demasiado antigua para migrarla a Stack Overflow. Creo que pertenece a Cross Validated, pero si desea preguntar sobre Stack Overflow (poniendo énfasis en el aspecto de programación y proporcionando un ejemplo reproducible mínimo ), hágamelo saber y lo cerraré aquí.
chl
Deberías usar cmogram . Hace todo lo que necesitas.
Yan Song

Respuestas:

10

¿Es esto muy diferente de hacer dos polinomios locales de grado 2, uno para debajo del umbral y otro para arriba con suavizado en los puntos ? Aquí hay un ejemplo con Stata:Ki

use votex // the election-spending data that comes with rd

tw 
(scatter lne d, mcolor(gs10) msize(tiny)) 
(lpolyci lne d if d<0, bw(0.05) deg(2) n(100) fcolor(none)) 
(lpolyci lne d if d>=0, bw(0.05) deg(2) n(100) fcolor(none)), xline(0)  legend(off)

Alternativamente, puede guardar los valores suavizados de lpoly y los errores estándar como variables en lugar de usarlos twoway. Debajo de está el bin, es la media suavizada, es el error estándar y y son los límites superior e inferior del intervalo de confianza del 95% para el resultado suavizado.xs e u l l lsseulll

lpoly lne d if d<0, bw(0.05) deg(2) n(100) gen(x0 s0) ci se(se0)
lpoly lne d if d>=0, bw(0.05) deg(2) n(100) gen(x1 s1) ci se(se1)

/* Get the 95% CIs */
forvalues v=0/1 {
    gen ul`v' = s`v' + 1.95*se`v' 
    gen ll`v' = s`v' - 1.95*se`v' 
};

tw 
(line ul0 ll0 s0 x0, lcolor(blue blue blue) lpattern(dash dash solid)) 
(line ul1 ll1 s1 x1, lcolor(red red red) lpattern(dash dash solid)), legend(off)  

Como puede ver, las líneas en la primera gráfica son las mismas que en la segunda.

Dimitriy V. Masterov
fuente
@Dimitry: +1 para la solución. Sin embargo, me gustaría tener el valor medio para cada bin (ejecute el ejemplo de estado anterior) en lugar del diagrama de dispersión que muestra los valores brutos. CI es genial.
Métricas
1
No estoy muy seguro de lo que quieres decir. Agregué un código que muestra cómo se obtienen los medios suavizados en cada contenedor a mano. Si eso no es lo que está buscando, explique con más detalle lo que tiene en mente. Por lo que puedo decir, estos gráficos generalmente muestran los datos sin procesar y los medios suavizados.
Dimitriy V. Masterov
Para citar a Lee y Lemieux (p. 31, 2009): "Una forma estándar de graficar los datos es dividir la variable de asignación (d aquí) en un número de contenedores, asegurándose de que haya dos contenedores separados en cada lado del corte punto (para evitar tener observaciones tratadas y no tratadas mezcladas en el mismo contenedor). Luego, el valor promedio de la variable de resultado puede calcularse para cada contenedor y graficarse contra los puntos medios de los contenedores ". Por lo tanto, si hay 50 contenedores, solo tendremos 25 puntos de datos a la izquierda y a la derecha y no todos los datos sin procesar (por ejemplo, Gráfico 6 (b) de la referencia: actualizado en cuestión)
Métricas
1
¡Ahora está claro! Estoy de acuerdo con el núcleo. ¿Pero estás seguro de que ahora no es de grado 0? Eso correspondería al alisamiento medio igualmente ponderado.
Dimitriy V. Masterov
1
Creo que corresponde a lpoly con un núcleo regular y un polinomio de grado 0
Dimitriy V. Masterov
7

Aquí hay un algoritmo enlatado. Calonico, Cattaneo y Titiunik propusieron recientemente un procedimiento para una selección robusta de ancho de banda. Implementaron su trabajo teórico para Stata y R , y también viene con un comando de trazado. Aquí hay un ejemplo en R:

# install.packages("rdrobust")
library(rdrobust)
set.seed(26950) # from random.org
x<-runif(1000,-1,1)
y<-5+3*x+2*(x>=0)+rnorm(1000)
rdplot(y,x)

Eso te dará este gráfico: ingrese la descripción de la imagen aquí

Durden
fuente
Hola, como agregar CI?
Krantz