11 votos

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

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:

"...por un poco de ancho de banda $h$ y para un cierto número de contenedores $K_0$ y $K_1$ a la izquierda y a la derecha del valor de corte, respectivamente, la idea es construir bins ( $b_k$ , $b_{k+1}$ ], para $k = 1, . . . ,K = K_0$ + $K_1$ , donde $b_k = c(K_0k+1) \cdot h.$ "

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

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

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

Mi pregunta es cómo programar ese procedimiento en Stata o R para trazar los gráficos de la variable de resultado frente a la variable de asignación (con intervalos de confianza) para el RDD agudo. Un ejemplo en Stata se menciona aquí y aquí (sustituir rd por rd_obs) y un ejemplo en R es aquí . Sin embargo, creo que ambos no implementaron el paso 1. Tenga en cuenta, que ambos tienen los datos en bruto junto con las líneas ajustadas en los gráficos.

Gráfico de muestra sin variable de confianza [Lee y Lemieux,2009] enter image description here Gracias de antemano.

0 votos

En respuesta a tu bandera, una buena manera de revivir tu pregunta es editarla y ofrecer una recompensa: Esto dará un empujón a tu pregunta y hará que más gente se interese por ella. Si crees que esta pregunta podría estar mejor en Stack Overflow, háznoslo saber y podremos migrarla por ti.

0 votos

Me gustaría que esto fuera migrado a Stack Overflow.

1 votos

Lamentablemente, esta pregunta es demasiado antigua para ser migrada a Stack Overflow. Creo que pertenece a Cross Validated pero si quieres preguntar en Stack Overflow (poniendo énfasis en el aspecto de la programación y proporcionando un mínimo ejemplo reproducible ), hágamelo saber y lo cerraré aquí.

10voto

Neal Puntos 316

¿Es esto muy diferente de hacer dos polinomios locales de grado 2, uno para por debajo del umbral y otro para por encima con suave en $K_i$ ¿puntos? He aquí un ejemplo con Stata:

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)

También puede guardar los valores suavizados por lpoly y los errores estándar como variables en lugar de utilizar twoway . Abajo $x$ es la papelera, $s$ es la media suavizada, $se$ es el error estándar, y $ul$ y $ll$ son los límites superior e inferior del intervalo de confianza del 95% para el resultado suavizado.

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 del primer gráfico son las mismas que las del segundo.

0 votos

@Dimitry: +1 por la solución. Sin embargo, me gustaría tener el valor medio para cada bin (por favor, ejecute el ejemplo de stata anterior) en lugar de la gráfica de dispersión que muestra los valores en bruto. CI es genial.

1 votos

No estoy muy seguro de lo que quiere decir. He añadido un código que muestra cómo se obtienen las medias suavizadas en cada bin a mano. Si no es eso lo que buscas, por favor explica lo que tienes en mente con más detalle. Por lo que sé, estos gráficos suelen mostrar los datos brutos y las medias suavizadas.

0 votos

Citando a Lee y Lemieux (p. 31, 2009) "Una forma estándar de graficar los datos es dividir la variable de asignación (d en este caso) en una serie de intervalos, asegurándose de que haya dos intervalos separados a cada lado del punto de corte (para evitar que las observaciones tratadas y no tratadas se mezclen en el mismo intervalo). A continuación, el valor medio de la variable de resultado puede calcularse para cada intervalo y graficarse contra los puntos medios de los intervalos". Por lo tanto, si hay 50 contenedores, sólo tendremos 25 puntos de datos a la izquierda y a la derecha y no todos los datos brutos (por ejemplo, el gráfico 6(b) de la referencia: actualizado en cuestión)

8voto

damien Puntos 1378

Aquí hay un algoritmo enlatado. Calonico, Cattaneo y Titiunik han propuesto recientemente un procedimiento para la selección robusta del ancho de banda. Aplicaron su trabajo teórico tanto para Stata como para 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: enter image description here

0 votos

Hola, ¿cómo se añade el CI?

2 votos

@Krantz sólo tiene que utilizar rdplot(y,x, ci=95)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X