Как правильно удалить нулевые наблюдения из панельных данных в R - PullRequest
0 голосов
/ 04 мая 2020

У меня возникли некоторые проблемы при выполнении регрессий plm в базе данных моей панели. По сути, я должен вычесть год из своей базы, а также все наблюдения некоторой переменной, которые равны нулю. Я попытался сделать воспроизводимый пример, используя набор данных из пакета AER.


require (AER)
library (AER)
require(plm)
library("plm")

data("Grunfeld", package = "AER")
View(Grunfeld)
#Here I randomize some observations of the third variable (capital) as zero, to reproduce my dataset
for (i in 1:220) {
  x <- rnorm(10,0,1)
  if (mean(x) >=0) {
    Grunfeld[i,3] <- 0
  }
}
View(Grunfeld)


panel <- Grunfeld

#First Method
#This is how I was originally manipulating my data and running my regression 

panel <- Grunfeld

dd <-pdata.frame(panel, index = c('firm', 'year'))

dd <- dd[dd$year!=1935, ]

dd <- dd[dd$capital !=0, ]

ols_model_2 <- plm(log(value) ~ (capital), data=dd)
summary(ols_model_2)
#However, I couuldn't plot the variables of the datasets in graphs, because they weren't vectors. So I tried another way:

#Second Method

panel <- panel[panel$year!= 1935, ]

panel <- panel[panel$capital != 0,]

ols_model <- plm(log(value) ~ log(capital), data=panel, index = c('firm','year'))
summary(ols_model)

#But this gave extremely different results for the ols regression!

Насколько я понимаю, оба подхода должны были дать одинаковые результаты в регрессии OLS. Теперь я боюсь, что весь мой анализ неверен, потому что я делал это как первый способ. Может ли кто-нибудь объяснить мне, что происходит? Заранее спасибо!

1 Ответ

1 голос
/ 05 мая 2020

Вы управляете двумя разными моделями. Я не уверен, почему вы ожидаете, что результаты будут такими же.

Ваша первая модель:

ols_model_2 <- plm(log(value) ~ (capital), data=dd)

А вторая:

ols_model <- plm(log(value) ~ log(capital), data=panel, index = c('firm','year'))

Как вы см. из резюме моделей, обе являются «односторонним (индивидуальным) эффектом в модели». В первом вы не указываете индекс, поскольку dd - это объект pdata.frame. Во втором вы указываете индекс, потому что панель - это простой data.frame. Однако это не имеет никакого значения.

Разница в том, что в журнале используется заглавная буква или заглавная буква без журнала.

В качестве примечания, исключение 0 наблюдений часто очень проблематично c. Если вы это сделаете, обязательно попробуйте альтернативные способы борьбы с нулем и посмотрите, насколько сильно изменятся ваши результаты. Вы можете начать здесь https://stats.stackexchange.com/questions/1444/how-should-i-transform-non-negative-data-including-zeros

...