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))
как при выполнении этой регрессии в Statap >
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
Ответы
Ответ 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", и того, как они влияют на ковариацию дисперсии матрица.
Надеюсь, что это поможет.