Графики в регрессионном разрыве дизайна в «Stata» или «R»


10

Lee и Lemieux (стр. 31, 2009) предлагают исследователю представить графики при выполнении анализа разрыва непрерывности регрессии (RDD). Они предлагают следующую процедуру:

«... для некоторой полосы пропускания и для некоторого числа бинов и слева и справа от значения отсечки, соответственно, идея состоит в том, чтобы построить бины ( , ], для + , где "К 0 К 1 б к б к + 1 к = 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.

... затем сравните средние результаты только слева и справа от точки отсечения ... "

... во всех случаях мы также показываем фиксированные значения из модели квартальной регрессии, оцениваемые отдельно на каждой стороне от точки отсечения ... (стр. 34 той же статьи)

Мой вопрос, как мы программируем эту процедуру Stataили Rдля построения графиков переменного результата с переменным назначением (с доверительными интервалами) для резкого РДА .. Образец примера Stataупоминаются здесь и здесь (заменить е места с rd_obs) и образец Пример в Rэтом здесь . Тем не менее, я думаю, что оба из них не реализовали шаг 1. Обратите внимание, что оба имеют необработанные данные вместе с выровненными линиями на графиках.

Пример графика без доверительной переменной [Lee and Lemieux, 2009] введите описание изображения здесь Заранее спасибо.


В ответ на ваш флаг, хороший способ восстановить ваш вопрос - отредактировать его и предложить вознаграждение: это повысит ваш вопрос и привлечет к нему больше людей. Если вы считаете, что этот вопрос лучше подать в Stack Overflow, сообщите нам, и мы можем перенести его для вас.
chl

Я хотел бы, чтобы это было перенесено в переполнение стека.
Метрика

1
К сожалению, этот вопрос слишком старый, чтобы его можно было перенести в переполнение стека. Я считаю, что он относится к перекрестной проверке, но если вы хотите задать вопрос о переполнении стека (делая акцент на аспекте программирования и предоставляя минимальный воспроизводимый пример ), дайте мне знать, и я закрою его здесь.
ЧЛ

Вы должны использовать смограмму . Делает все что нужно.
Ян Сонг

Ответы:


10

Сильно ли это отличается от двух локальных полиномов степени 2: один для порога ниже порога, а второй для сверху с гладкой в точках ? Вот пример со 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)

В качестве альтернативы, вы можете просто сохранить сглаженные значения lpoly и стандартные ошибки как переменные вместо использования twoway. Ниже - ячейка, - сглаженное среднее, - стандартная ошибка, а и - верхний и нижний пределы 95% доверительного интервала для сглаженного результата.лет с е у л л лxsseulll

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)  

Как видите, линии на первом графике такие же, как на втором.


@Dimitry: +1 для решения. Тем не менее, я хотел бы иметь среднее значение для каждого бина (пожалуйста, запустите пример статистики выше), а не точечный график, показывающий необработанные значения. CI это здорово.
Метрика

1
Я не совсем уверен, что вы имеете в виду. Я добавил код, показывающий, как вы получаете сглаженные средства в каждой корзине вручную. Если это не то, что вы ищете, пожалуйста, объясните, что вы имеете в виду более подробно. Насколько я могу судить, эти графики обычно показывают необработанные данные и сглаженные средние.
Дмитрий Владимирович Мастеров

Процитируем Ли и Лемье (стр. 31, 2009): «Стандартный способ построения графика данных - это разделить переменную присваивания (здесь d) на несколько ячеек, убедившись, что на каждой стороне среза имеются две отдельные ячейки точка (во избежание смешивания обработанных и необработанных наблюдений в одной и той же ячейке). Затем для каждой ячейки можно вычислить среднее значение переменной результата и сопоставить ее со средними точками ячейки ". Таким образом, если имеется 50 ячеек, то у нас будет только 25 точек данных слева и справа, а не все необработанные данные (например, график 6 (b) справочника: обновлено в вопросе)
Метрики

1
Теперь понятно! Я согласен с ядром. Но вы уверены, что сейчас это не степень 0? Это будет соответствовать одинаково взвешенному среднему сглаживанию.
Дмитрий Васильевич Мастеров

1
Я считаю, что это соответствует lpoly с регулярным ядром и полиномом степени 0
Дмитрий В. Мастеров

7

Вот законсервированный алгоритм. Calonico, Cattaneo и Titiunik недавно предложили процедуру для надежного выбора полосы пропускания. Они реализовали свою теоретическую работу как для Stata, так и для R , и она также поставляется с командой сюжета. Вот пример в 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)

Это даст вам этот график: введите описание изображения здесь


Привет, как добавить CI?
Krantz
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.