Гетероскедастичность устойчивых стандартных ошибок с пакетом PLM - PullRequest
12 голосов
/ 14 декабря 2010

Я пытаюсь выучить R после использования Stata и должен сказать, что мне это нравится.Но сейчас у меня возникли проблемы.Я собираюсь сделать несколько многократных регрессий с Panel Data, поэтому я использую пакет plm.

Теперь я хочу получить те же результаты с plm в R, что и при использовании функции lmи Stata, когда я выполняю устойчивую регрессию с гетероскедастичностью и фиксированную сущность.

Допустим, у меня есть набор данных панели с переменными Y, ENTITY, TIME, V1.

Я получаю те же стандартные ошибки в R с этим кодом

lm.model<-lm(Y ~ V1 + factor(ENTITY), data=data)
coeftest(lm.model, vcov.=vcovHC(lm.model, type="HC1))

, что и при выполнении этой регрессии в Stata

xi: reg Y V1 i.ENTITY, robust

Но когда я выполняю эту регрессию с plmпакет Я получаю другие стандартные ошибки

plm.model<-plm(Y ~ V1 , index=C("ENTITY","YEAR"), model="within", effect="individual", data=data)
coeftest(plm.model, vcov.=vcovHC(plm.model, type="HC1))
  • Я пропустил установку некоторых параметров?
  • Использует ли модель plm какой-либо другой вид оценки, и если да, то как?
  • Могу ли я каким-то образом иметь те же стандартные ошибки с plm, что и в Stata с , robust

Ответы [ 2 ]

6 голосов
/ 14 августа 2014

По умолчанию пакет plm не использует точную такую ​​же коррекцию малых выборок для данных панели, как Stata. Однако в версии 1.5 plm (в CRAN) у вас есть опция, которая будет эмулировать действия Stata.

plm.model<-plm(Y ~ V1 , index=C("ENTITY","YEAR"), model="within", 
    effect="individual", data=data)
coeftest(plm.model, vcov.=function(x) vcovHC(x, type="sss"))

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

Подробнее об этом и некоторых тестах надежных SE R и Stata см. Стандартные ошибки Fama-MacBeth и Cluster-Robust (по фирме и времени) в R .

Смотри также:

3 голосов
/ 11 декабря 2012

Возможно ли, что ваш код Stata отличается от того, что вы делаете с plm?

plm Параметр «в пределах» с «отдельными» эффектами означает модель формы:

yit = a + Xit*B + eit + ci

Что делает plm, так это унижает коэффициенты, так что ci выпадает из уравнения.

yit_bar = Xit_bar*B + eit_bar

Так, что суффикс "bar" означает, что для каждой переменной было вычтено среднее значение.Среднее значение рассчитывается с течением времени, и поэтому эффект для человека.Вы также можете иметь фиксированный временной эффект, который был бы общим для всех людей, и в этом случае эффект был бы также во времени (хотя в данном случае это не имеет значения).

Я не уверен, что такое "xi""Команда делает в STATA, но я думаю, что это расширяет право взаимодействия?Тогда мне кажется, что вы пытаетесь использовать фиктивную переменную для ENTITY, как было выделено @ richardh.

Для соответствия ваших кодов Stata и plm вы должны использовать одну и ту же модель.

У вас есть два варианта: (1) вы xtset свои данные в stata и используете опцию xtreg с модификатором fe или (2) вы используете plm с опцией объединения и один фиктивный элемент на ENTITY.

Соответствие Stata для R:

xtset entity year
xtreg y v1, fe robust 

Соответствие plm для Stata:

plm(Y ~ V1 + as.factor(ENTITY) , index=C("ENTITY","YEAR"), model="pooling", effect="individual", data=data)

Затем используйте vcovHC с одним из модификаторов.Обязательно проверьте эту бумагу , в которой есть хороший обзор всех механизмов, стоящих за опциями "HC", и того, как они влияют на ковариационную матрицу дисперсии.

Надеюсь, это поможет.

...