Подтвердить что ты не робот

Heteroscedasticity надежные стандартные ошибки с пакетом PLM

Я пытаюсь изучить R после использования Stata, и я должен сказать, что мне это нравится. Но теперь у меня проблемы. Я собираюсь сделать несколько регрессий с данными Panel, поэтому я использую пакет 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​​p >

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
4b9b3361

Ответ 1

По умолчанию пакет 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 (но, как упоминалось в комментариях, без воспроизводимого примера и каких результатов вы ожидаете, сложнее ответить на вопрос).

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

См. также:

Ответ 2

Возможно ли, что ваш код 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) вы xt задаете свои данные в 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 с одним из модификаторов. Не забудьте проверить этот paper, который имеет хороший обзор всех механизмов, стоящих за параметрами "HC", и того, как они влияют на ковариацию дисперсии матрица.

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