При запуске панели регрессии отсутствуют фиктивные переменные. Как отобразить фиктивные переменные? - PullRequest
0 голосов
/ 28 мая 2019

Я пытаюсь сделать регрессию данных панели с фиксированным эффектом оценки.Пример данных можно увидеть ниже:

structure(list(DOILN = c(4.3207, 4.1675, 4.0718, 3.8239, 3.6247, 
2.044, 1.3759, 1.4596, 1.486, 4.3136), ROSLN = c(-2.0178, -2.2647, 
-4.0632, -3.9933, -3.441, -3.6077, -2.8291, -2.6271, -2.4051, 
-1.7239), IRATE = c(-0.0295, -0.1228, 0.00288, 0.03388, -0.0295, 
0.00288, 0.03849, 0.03388, 0.07165, 0.04809), GDPGROW = c(0.11731, 
0.07891, 0.05072, 0.05745, 0.11731, 0.05072, 0.02142, 0.05745, 
0.06645, -0.01765), ISOCode = structure(c(4L, 4L, 4L, 4L, 4L, 
4L, 4L, 4L, 4L, 3L), .Label = c("BRA", "CHN", "IND", "RUS"), class = "factor"), 
    ISOCodeBRA = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0), ISOCodeRUS = c(1, 
    1, 1, 1, 1, 1, 1, 1, 1, 0), ISOCodeIND = c(0, 0, 0, 0, 0, 
    0, 0, 0, 0, 1), ISOCodeCHN = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0)), .Names = c("DOILN", "ROSLN", "IRATE", "GDPGROW", "ISOCode", 
"ISOCodeBRA", "ISOCodeRUS", "ISOCodeIND", "ISOCodeCHN"), row.names = c("120453-2010", 
"120453-2011", "120453-2012", "120453-2014", "133431-2010", "133431-2012", 
"133431-2013", "133431-2014", "133431-2015", "200448-2009"), class = c("pdata.frame", 
"data.frame"), index = structure(list(GCKey = structure(c(1L, 
1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 3L), .Label = c("120453", "133431", 
"200448"), class = "factor"), FiscalY = structure(c(2L, 3L, 4L, 
6L, 2L, 4L, 5L, 6L, 7L, 1L), .Label = c("2009", "2010", "2011", 
"2012", "2013", "2014", "2015"), class = "factor")), .Names = c("GCKey", 
"FiscalY"), row.names = c(915L, 647L, 35L, 41L, 83L, 68L, 220L, 
330L, 497L, 1219L), class = c("pindex", "data.frame")))

Однако, когда я ввел фиктивные переменные для стран (ISOCode), они отсутствуют в сводке.Кроме того, я все еще получил N фиктивных переменных вместо N-1.

Я использовал model.matrix для создания фиктивных переменных.Сначала я сделал это, чтобы создать фиктивную переменную и включить ее в мой фрейм данных

dBRICna <-cbind(dBRICna, model.matrix(~ -1+ISOCode, data = dBRICna))

, затем я создаю фрейм данных панели на основе моего исходного фрейма данных.Панель регрессии выглядит следующим образом:

fix.cdum <-Plm(ROSLN~DOILN+GDPGROW+IRATE+ISOCodeBRA+ISOCodeRUS+ISOCodeIND+ISOCodeCHN, 
data = pbric,model = "within")

Результирующая регрессия выглядит следующим образом:

Oneway (individual) effect Within Model

Call:
plm(formula = ROSLN ~ DOILN + IRATE + GDPGROW + ISOCodeBRA + 
    ISOCodeCHN + ISOCodeIND + ISOCodeRUS, data = pbric, model = "within")

Unbalanced Panel: n = 308, T = 1-7, N = 1574

Residuals:
      Min.    1st Qu.     Median    3rd Qu.       Max. 
-6.4169648 -0.1066602  0.0075008  0.1344821  2.7955477 

Coefficients:
         Estimate Std. Error t-value Pr(>|t|)  
DOILN    0.031935   0.055124  0.5793  0.56247  
IRATE   -1.194691   0.486961 -2.4534  0.01429 *
GDPGROW -0.041300   0.767433 -0.0538  0.95709  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Total Sum of Squares:    240.19
Residual Sum of Squares: 238.52
R-Squared:      0.006922
Adj. R-Squared: -0.23683
F-statistic: 2.93449 on 3 and 1263 DF, p-value: 0.032416

Как видно, фиктивные переменные не отображаются в результате регрессии.Был бы очень благодарен, если бы кто-нибудь мог посоветовать мне по этому вопросу!

1 Ответ

0 голосов
/ 31 мая 2019

Во-первых, я бы посоветовал не создавать фиктивные переменные самостоятельно. Пусть R сделает это за вас во время оценки модели, используя коэффициент для переменной, из которой вы хотите получить фиктивные переменные: просто используйте factor(ISOCode) в формуле. Ручной способ подвержен ошибкам.

Затем используйте model.matrix после оценки модели, чтобы посмотреть на данные после внутреннего преобразования, присущего модели с фиксированными эффектами:

mod <-plm(ROSLN ~ DOILN + GDPGROW + IRATE + factor(ISOCode), 
                         data = dat, model = "within")
model.matrix(mod)

    DOILN    GDPGROW     IRATE factor(ISOCode)RUS
   0.224725  0.0412125 -0.000615                  0
   0.071525  0.0028125 -0.093915                  0
  -0.024175 -0.0253775  0.031765                  0
  -0.272075 -0.0186475  0.062765                  0
   1.626660  0.0546400 -0.052980                  0
   0.045960 -0.0119500 -0.020600                  0
  -0.622140 -0.0412500  0.015010                  0
  -0.538440 -0.0052200  0.010400                  0
  -0.512040  0.0037800  0.048170                  0
   0.000000  0.0000000  0.000000                  0

Появляются две проблемы: один ряд - все нули, поскольку для человека было только одно наблюдение. Этот ряд будет опущен при оценке модели. Столбец для кодов ISO содержит все нули и также будет удален.

Вот почему сводка модели выглядит так.

...