Gráficos no design de descontinuidade de regressão em "Stata" ou "R"

10

Lee e Lemieux (p. 31, 2009) sugerem que o pesquisador apresente os gráficos enquanto faz a análise de projeto de descontinuidade por regressão (RDD). Eles sugerem o seguinte procedimento:

" ... por alguma largura de banda , e por algum número de caixas e para a esquerda e à direita do valor de corte, respectivamente, a idéia é construir silos ( , ], para + , onde "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.

... compare os resultados médios apenas à esquerda e à direita do ponto de corte ... "

..em todos os casos, também mostramos os valores ajustados de um modelo de regressão quártica estimado separadamente em cada lado do ponto de corte ... (p. 34 do mesmo artigo)

A minha pergunta é como é que vamos programar esse procedimento em Stataou Rpara traçar os gráficos de variável de resultado contra variável de atribuição (com intervalos de confiança) para o RDD afiada .. Um exemplo amostra Stataé mencionado aqui e aqui (substitua rd com rd_obs) e uma amostra exemplo em Restá aqui . No entanto, acho que os dois não implementaram a etapa 1. Observe que ambos têm os dados brutos junto com as linhas ajustadas nas plotagens.

Gráfico de amostra sem variável de confiança [Lee e Lemieux, 2009] insira a descrição da imagem aqui Agradecemos antecipadamente.

Métricas
fonte
Em resposta à sua bandeira, uma boa maneira de reviver sua pergunta é editá-la e oferecer uma recompensa: Isso trará uma dúvida sobre a sua pergunta e fará com que mais pessoas se interessem por ela. Se você acha que essa pergunta pode ser melhor atendida no Stack Overflow, informe-nos e podemos migrá-la para você.
chl
Gostaria que isso fosse migrado para o Stack Overflow.
Metrics
11
Infelizmente, essa pergunta é muito antiga para ser migrada para o estouro de pilha. Eu acredito que ele pertence ao Cross Validated, mas se você quiser perguntar sobre o Stack Overflow (enfatizando o aspecto de programação e fornecendo um exemplo reprodutível mínimo ), avise-me e farei o fechamento aqui.
chl
Você deve usar cmogram . Faz tudo o que você precisa.
Yan Song

Respostas:

10

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)

twowayxsseulll

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 você pode ver, as linhas no primeiro gráfico são as mesmas do segundo.

Dimitriy V. Masterov
fonte
@ Dimitry: +1 para a solução. No entanto, gostaria de ter o valor médio para cada posição (execute o exemplo de estado acima) em vez do gráfico de dispersão mostrando valores brutos. CI é ótimo.
Metrics
11
Não tenho muita certeza do que você quer dizer. Adicionei códigos mostrando como você obtém as médias suavizadas em cada caixa manualmente. Se não é isso que você procura, explique o que você tem em mente com mais detalhes. Até onde eu sei, esses gráficos geralmente mostram os dados brutos e as médias suavizadas.
Dimitriy V. Masterov 15/02
Para citar Lee e Lemieux (p. 31, 2009): "Uma maneira padrão de representar graficamente os dados é dividir a variável de atribuição (d aqui) em um número de posições, certificando-se de que existem duas posições separadas em cada lado do ponto de corte point (para evitar que as observações tratadas e não tratadas sejam misturadas no mesmo compartimento). Em seguida, o valor médio da variável de resultado pode ser calculado para cada compartimento e representado graficamente os pontos médios dos compartimentos ". Portanto, se houver 50 compartimentos, teremos apenas 25 pontos de dados à esquerda e à direita e não todos os dados brutos (por exemplo, Gráfico 6 (b) da referência: atualizado em questão)
Metrics
11
Agora está claro! Eu concordo com o kernel. Mas você tem certeza de que agora não é o grau 0? Isso corresponderia à suavização média igualmente ponderada.
Dimitriy V. Masterov 15/02
11
Acredito que corresponde a lpoly com um kernel regular e um grau 0 polinomial
Dimitriy V. Masterov
7

Aqui está um algoritmo enlatado. Calonico, Cattaneo e Titiunik propuseram recentemente um procedimento para seleção robusta de largura de banda. Eles implementaram seu trabalho teórico para Stata e R , e também vem com um comando de plotagem. Aqui está um exemplo em 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)

Isso lhe dará este gráfico: insira a descrição da imagem aqui

Durden
fonte
Olá, como adicionar CI?
Krantz