Grafici nel disegno di discontinuità di regressione in "Stata" o "R"


10

Lee e Lemieux (p. 31, 2009) suggeriscono al ricercatore di presentare i grafici mentre eseguono l'analisi del disegno di discontinuità di regressione (RDD). Suggeriscono la seguente procedura:

" ... per qualche banda , e per alcuni numero di contenitori e a sinistra ea destra del valore di taglio, rispettivamente, l'idea è di costruire cassoni ( , ], per + , dove b_k = c− (K_0 − k + 1) \ cdot h. "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.

... quindi confronta i risultati medi solo a sinistra e a destra del punto di interruzione ... "

... in tutti i casi, mostriamo anche i valori adattati da un modello di regressione quartica stimati separatamente su ciascun lato del punto di taglio ... (p. 34 dello stesso documento)

La mia domanda è come programmare tale procedura in Statao Rper tracciare i grafici della variabile di risultato rispetto alla variabile di assegnazione (con intervalli di confidenza) per il RDD nitido. Un esempio di esempio Stataè menzionato qui e qui (sostituisci rd con rd_obs) e un campione esempio in Rè qui . Tuttavia, penso che entrambi non abbiano implementato il passaggio 1. Si noti che entrambi hanno i dati grezzi insieme alle linee adattate nei grafici.

Grafico di esempio senza variabile di confidenza [Lee e Lemieux, 2009] inserisci qui la descrizione dell'immagine Grazie in anticipo.


In risposta alla tua bandiera, un buon modo per ravvivare la tua domanda è di modificarla e offrire una taglia: questo salterà la tua domanda e attirerà più persone interessate. Se ritieni che questa domanda potrebbe essere meglio servita su Stack Overflow, faccelo sapere e possiamo migrarlo per te.
chl

Vorrei che questo venisse migrato su Stack Overflow.
Metriche

1
Sfortunatamente, questa domanda è troppo vecchia per essere migrata in Stack Overflow. Credo che appartenga a Cross Validated ma se vuoi chiedere su Stack Overflow (ponendo l'accento sull'aspetto di programmazione e fornendo un esempio riproducibile minimo ), fammi sapere e lo chiuderò qui.
chl

Dovresti usare cmogram . Fa tutto il necessario.
Yan Song

Risposte:


10

È molto diverso dal fare due polinomi locali di grado 2, uno per sotto la soglia e uno per sopra con liscio ai punti ? Ecco un esempio 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)

In alternativa, puoi semplicemente salvare i valori lpoly smoothed e gli errori standard come variabili invece di utilizzare twoway. Sotto è il cestino, è la media lisciata, è l'errore standard e e sono i limiti superiore e inferiore dell'intervallo di confidenza al 95% per il risultato livellato.s s e u l l lxsseulll

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)  

Come puoi vedere, le linee nel primo grafico sono le stesse del secondo.


@Dimitry: +1 per la soluzione. Tuttavia, vorrei avere il valore medio per ogni bin (esegui l'esempio sopra riportato) anziché il grafico a dispersione che mostra i valori non elaborati. CI è fantastico.
Metriche,

1
Non sono del tutto sicuro di cosa intendi. Ho aggiunto un codice che mostra a mano come ottenere i mezzi levigati in ogni cestino. Se non è quello che stai cercando, ti preghiamo di spiegare cosa hai in mente in modo più dettagliato. Per quanto ne so, questi grafici di solito mostrano i dati grezzi e i mezzi uniformi.
Dimitriy V. Masterov,

Per citare Lee e Lemieux (p. 31, 2009): "Un modo standard di rappresentare graficamente i dati è quello di dividere la variabile di assegnazione (d qui) in un numero di bin, assicurandosi che ci siano due bin separati su ciascun lato del cutoff punto (per evitare che le osservazioni trattate e non trattate si mescolino insieme nello stesso contenitore). Quindi, il valore medio della variabile di risultato può essere calcolato per ciascun contenitore e rappresentato graficamente rispetto ai punti medi dei contenitori ". Quindi, se ci sono 50 bin, avremo solo 25 punti dati a sinistra e a destra e non tutti i dati non elaborati (ad esempio, Grafico 6 (b) del riferimento: aggiornato in questione)
Metriche,

1
Adesso è chiaro! Sono d'accordo sul kernel. Ma sei sicuro che ora non sia di grado 0? Ciò corrisponderebbe a un livellamento medio equamente ponderato.
Dimitriy V. Masterov,

1
Credo che corrisponda a lpoly con un kernel normale e un polinomio di grado 0
Dimitriy V. Masterov

7

Ecco un algoritmo predefinito. Calonico, Cattaneo e Titiunik hanno recentemente proposto una procedura per una solida selezione della larghezza di banda. Hanno implementato il loro lavoro teorico sia per Stata che per R , e viene fornito anche con un comando trama. Ecco un esempio in 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)

Questo ti darà questo grafico: inserisci qui la descrizione dell'immagine


Ciao, come aggiungere CI?
Krantz,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.