Modelos de datos de panel

¿Efectos fijos o aleatorios?
install.packages
library
head
attach
dim
table
lm
summary
factor
plm
pooling
within
between
random
pFtest
plmtest
phtest
Author

Román Salmerón Gómez

Published

May 12, 2023

En el presente post vamos a analizar un conjunto de datos de panel. El primer paso será incorporar la información a tratar, que en este caso usaremos un conjunto de datos existente en el paque ECdat que tiene información (para más detalles consultar help(Cigar)) sobre consumo de cigarros:

  # install.packages("Ecdat") # instalamos el paquete (sólo una vez)
  library(Ecdat) # cargamos el paquete
  head(Cigar) # un vistazo a los datos
  state year price  pop  pop16  cpi      ndi sales pimin
1     1   63  28.6 3383 2236.5 30.6 1558.305  93.9  26.1
2     1   64  29.8 3431 2276.7 31.0 1684.073  95.4  27.5
3     1   65  29.8 3486 2327.5 31.5 1809.842  98.5  28.9
4     1   66  31.5 3524 2369.7 32.4 1915.160  96.4  29.5
5     1   67  31.6 3533 2393.7 33.4 2023.546  95.5  29.6
6     1   68  35.6 3522 2405.2 34.8 2202.486  88.4  32.0
  attach(Cigar) # incorporamos los datos a R para referenciar cada variable por el nombre anterior
  # state = identificador del estado
  # year = año
  # price = precio del paquete de cigarros
  # pop = población
  # pop16 = población con más de 16 años
  # cpi = índice de precios del consumo (1983=100)
  # ndi = ingreso disponible per cápita
  # sales = venta de cigarrillos en paquetes per capita
  # pimin = precio mínimo en estados adyacentes por paquete de cigarrillos

Concretamente, vamos a analizar el modelo que estudia las ventas del paquete de cigarrillos (sales) en función de su precio (price), de la población con más de 16 años (pop16) y el ingreso disponible per cápita (ndi). Adviértase que se disponen de datos de panel con 46 individuos (estados) y 30 periodos (años):

  dim(table(state,year))
[1] 46 30

En primer lugar, se ignorará la estructura de datos de panel, para a continuación considerar una estructura de efectos fijos y aleatorios. Finalmente, se seleccionará (e interpretará) el modelo seleccionado.

Regresión lineal múltiple

Como se ha comentado, el primer enfoque consiste en ignorar la naturaleza de los datos (modelo agrupado o pooled) y estimarlos por Mínimos Cuadrados Ordinarios. En este caso, se considera que el término independiente es el mismo para todos los periodos y/o tiempos:

  reg.mco = lm(sales~price+pop16+ndi)
  summary(reg.mco)

Call:
lm(formula = sales ~ price + pop16 + ndi)

Residuals:
    Min      1Q  Median      3Q     Max 
-65.226 -15.217  -1.777   9.099 161.314 

Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept)  1.415e+02  1.500e+00  94.295  < 2e-16 ***
price       -9.830e-01  5.368e-02 -18.311  < 2e-16 ***
pop16       -1.212e-03  2.076e-04  -5.839 6.55e-09 ***
ndi          7.188e-03  4.793e-04  14.998  < 2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 27.26 on 1376 degrees of freedom
Multiple R-squared:  0.2279,    Adjusted R-squared:  0.2263 
F-statistic: 135.4 on 3 and 1376 DF,  p-value: < 2.2e-16

Se observa que todos los coeficientes son significativamente distintos de cero (p-valores menores que 0.05, \(2 \cdot 10^{-16}\), 0.00000000655 y \(2 \cdot 10^{-16}\), respectivamente). Puesto que las estimaciones de los coeficientes del precio del paquete de tabaco y población mayor a los 16 años son negativas, cuando estas variables aumentan disminuye la venta de los paquetes de cigarrillos (quizás esta segunda interpretación no tenga mucho sentido). Por otro lado, puesto que la estimación de los ingresos per cápita es positiva, cuando ésta variable aumenta también lo hacen las ventas de los paquetes de cigarrillos. Finalmente, puesto que el p-valor asociado al contraste de significación conjunta es menor que 0.05, \(2 \cdot 10^{-16}\), se tiene que el modelo es válido conjuntamente.

Regresión con efectos fijos

Modelo con variables dummys

Si se considera que el término independiente puede ser distinto para cada individuo y/o periodo debe considerarse un enfoque de efectos fijos. Así, la estimación intra grupos (o within) puede realizarse mediante el uso de variables binarias que recojan el efecto temporal o transversal:

  reg.fijos.ind = lm(sales~price+pop16+ndi+factor(state))
  summary(reg.fijos.ind)

Call:
lm(formula = sales ~ price + pop16 + ndi + factor(state))

Residuals:
    Min      1Q  Median      3Q     Max 
-73.219  -6.578   0.669   6.925 125.097 

Coefficients:
                  Estimate Std. Error t value Pr(>|t|)    
(Intercept)      1.211e+02  3.195e+00  37.911  < 2e-16 ***
price           -4.059e-01  3.761e-02 -10.792  < 2e-16 ***
pop16            1.448e-03  6.431e-04   2.251 0.024518 *  
ndi              1.703e-03  3.494e-04   4.875 1.22e-06 ***
factor(state)3   4.616e+00  3.951e+00   1.168 0.242979    
factor(state)4   9.850e+00  3.936e+00   2.503 0.012450 *  
factor(state)5  -1.775e+01  9.969e+00  -1.780 0.075253 .  
factor(state)7   7.940e+00  4.055e+00   1.958 0.050439 .  
factor(state)8   4.378e+01  4.231e+00  10.347  < 2e-16 ***
factor(state)9   5.317e+01  4.444e+00  11.963  < 2e-16 ***
factor(state)10  1.208e+01  4.760e+00   2.537 0.011284 *  
factor(state)11  7.650e+00  3.937e+00   1.943 0.052214 .  
factor(state)13 -1.739e+00  4.132e+00  -0.421 0.673880    
factor(state)14  6.576e+00  5.197e+00   1.265 0.206021    
factor(state)15  2.794e+01  3.974e+00   7.031 3.26e-12 ***
factor(state)16  3.695e+00  3.917e+00   0.943 0.345729    
factor(state)17  3.167e+00  3.996e+00   0.792 0.428235    
factor(state)18  6.646e+01  3.922e+00  16.945  < 2e-16 ***
factor(state)19  1.600e+01  3.870e+00   4.135 3.77e-05 ***
factor(state)20  2.826e+01  4.092e+00   6.907 7.63e-12 ***
factor(state)21  9.873e+00  4.013e+00   2.460 0.014006 *  
factor(state)22  7.416e+00  4.025e+00   1.842 0.065636 .  
factor(state)23  1.400e+01  4.525e+00   3.095 0.002008 ** 
factor(state)24  5.173e-01  3.880e+00   0.133 0.893955    
factor(state)25  2.864e+00  3.920e+00   0.731 0.465125    
factor(state)26  1.911e+01  3.950e+00   4.839 1.45e-06 ***
factor(state)27  4.732e+00  4.154e+00   1.139 0.254811    
factor(state)28  8.738e-02  4.058e+00   0.022 0.982824    
factor(state)29  6.655e+01  4.254e+00  15.646  < 2e-16 ***
factor(state)30  1.255e+02  4.318e+00  29.076  < 2e-16 ***
factor(state)31  4.864e+00  4.299e+00   1.131 0.258080    
factor(state)32 -1.334e+01  4.057e+00  -3.287 0.001039 ** 
factor(state)33 -5.864e+00  7.781e+00  -0.754 0.451155    
factor(state)35 -1.423e+00  4.169e+00  -0.341 0.732837    
factor(state)36  7.595e+00  5.025e+00   1.512 0.130872    
factor(state)37  1.292e+01  3.895e+00   3.317 0.000936 ***
factor(state)39 -4.095e+00  5.492e+00  -0.746 0.456091    
factor(state)40  2.873e+01  4.155e+00   6.915 7.24e-12 ***
factor(state)41  9.014e+00  3.906e+00   2.308 0.021159 *  
factor(state)42 -2.570e+00  4.153e+00  -0.619 0.536016    
factor(state)43  8.764e+00  3.888e+00   2.254 0.024347 *  
factor(state)44 -6.763e+00  5.920e+00  -1.142 0.253500    
factor(state)45 -3.747e+01  4.055e+00  -9.240  < 2e-16 ***
factor(state)46  3.423e+01  4.222e+00   8.107 1.16e-15 ***
factor(state)47  1.750e+01  4.041e+00   4.331 1.59e-05 ***
factor(state)48 -1.191e+01  3.890e+00  -3.061 0.002253 ** 
factor(state)49  9.481e+00  3.964e+00   2.392 0.016899 *  
factor(state)50 -7.961e-01  3.895e+00  -0.204 0.838059    
factor(state)51  2.732e+01  4.290e+00   6.369 2.62e-10 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 14.98 on 1331 degrees of freedom
Multiple R-squared:  0.7744,    Adjusted R-squared:  0.7663 
F-statistic:  95.2 on 48 and 1331 DF,  p-value: < 2.2e-16
  reg.fijos.peri = lm(sales~price+pop16+ndi+factor(year))
  summary(reg.fijos.peri)

Call:
lm(formula = sales ~ price + pop16 + ndi + factor(year))

Residuals:
    Min      1Q  Median      3Q     Max 
-67.925 -14.579  -2.866   9.215 160.510 

Coefficients:
                 Estimate Std. Error t value Pr(>|t|)    
(Intercept)     1.637e+02  4.870e+00  33.621  < 2e-16 ***
price          -1.765e+00  1.138e-01 -15.511  < 2e-16 ***
pop16          -8.771e-04  2.093e-04  -4.190 2.97e-05 ***
ndi             6.523e-03  5.830e-04  11.188  < 2e-16 ***
factor(year)64 -2.963e+00  5.574e+00  -0.532 0.595096    
factor(year)65 -1.745e+00  5.575e+00  -0.313 0.754272    
factor(year)66  6.161e-01  5.582e+00   0.110 0.912126    
factor(year)67  1.112e+00  5.588e+00   0.199 0.842240    
factor(year)68  1.623e+00  5.607e+00   0.290 0.772235    
factor(year)69  1.089e+00  5.624e+00   0.194 0.846510    
factor(year)70  2.175e+00  5.674e+00   0.383 0.701598    
factor(year)71  7.244e+00  5.720e+00   1.266 0.205565    
factor(year)72  1.232e+01  5.764e+00   2.137 0.032776 *  
factor(year)73  1.146e+01  5.807e+00   1.973 0.048711 *  
factor(year)74  1.442e+01  5.860e+00   2.460 0.014000 *  
factor(year)75  1.860e+01  5.970e+00   3.116 0.001874 ** 
factor(year)76  2.497e+01  6.110e+00   4.086 4.65e-05 ***
factor(year)77  2.357e+01  6.210e+00   3.796 0.000154 ***
factor(year)78  2.847e+01  6.496e+00   4.382 1.27e-05 ***
factor(year)79  2.605e+01  6.699e+00   3.888 0.000106 ***
factor(year)80  2.795e+01  6.938e+00   4.028 5.94e-05 ***
factor(year)81  2.832e+01  7.239e+00   3.912 9.61e-05 ***
factor(year)82  3.536e+01  7.670e+00   4.610 4.41e-06 ***
factor(year)83  4.700e+01  8.428e+00   5.577 2.96e-08 ***
factor(year)84  5.550e+01  9.323e+00   5.954 3.34e-09 ***
factor(year)85  5.988e+01  9.802e+00   6.109 1.31e-09 ***
factor(year)86  6.533e+01  1.037e+01   6.297 4.09e-10 ***
factor(year)87  7.000e+01  1.099e+01   6.371 2.57e-10 ***
factor(year)88  7.621e+01  1.183e+01   6.443 1.63e-10 ***
factor(year)89  8.526e+01  1.282e+01   6.648 4.30e-11 ***
factor(year)90  9.798e+01  1.410e+01   6.950 5.66e-12 ***
factor(year)91  1.078e+02  1.492e+01   7.226 8.32e-13 ***
factor(year)92  1.352e+02  1.691e+01   7.995 2.77e-15 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 26.73 on 1347 degrees of freedom
Multiple R-squared:  0.2736,    Adjusted R-squared:  0.2563 
F-statistic: 15.85 on 32 and 1347 DF,  p-value: < 2.2e-16

Para el primer caso se observa que:

  • No hay cambios en cuanto a la significación individual de las variables (p-valores menores que 0.05, \(2 \cdot 10^{-16}\), 0.024518 y 0.00000122, respectivamente), aunque sí en los signos estimados: la población mayor a 16 años pasa a influir positivamente, lo cual tiene más sentido que antes.
  • Para interpretar los coeficientes se ha de tener en cuenta que se analiza el efecto de las variables independientes sobre la dependiente cuando las primeras aumentan una unidad controlando las diferencias del individuo.
  • Puesto que se toma como referencia el primer estado, todos los coeficientes de las variables binarias creadas se han de interpretar con respecto a éste. Si el coeficiente es (significativamente) negativo se tiene que la venta de cigarrillos del correspondiente estado es inferior que en el primer estado. Si es positivo, la venta de cigarrillos es mayor que en el primer estado.
  • Las ventas de paquetes de cigarrillos es inferior en los estados 32, 45 y 48 con respecto al estado base, mayores al primer estado en los estados 4, 8, 9, 10, 15, 18, 19, 20, 21, 23, 16, 29, 30, 37, 40, 41, 43, 46, 47, 49 y 51 e iguales al primer estado en el resto.
  • La productividad del primer estado es recogida por el término independiente.

En el segundo:

  • No hay cambios en cuanto a la significación individual (p-valores menores que 0.05, \(2 \cdot 10^{-16}\), 0.0000297 y \(2 \cdot 10^{-16}\), respectivamente) de las variables ni en cuanto al signo estimado.
  • En este caso el año 1963 es el periodo de referencia. Se tiene que las ventas de paquetes de cigarrillos en los años 1964 a 1971 no es significativamente distinta de la del año 1963. En los años 1972 a 1992 es superior (coeficientes positivos significativamente distintos de cero).
  • Para interpretar los coeficientes se ha de tener en cuenta que se analiza el efecto de las variables independientes sobre la dependiente cuando las primeras aumentan una unidad controlando las diferencias del periodo.
  • Las ventas de paquetes de cigarrillos del año base lo recoge la constante.
  • Las ventas de paquetes de cigarrillos del año 1979, suponiendo que las variables explicativas son constantes, se recogería considerando la constante y el coeficiente correspondiente, es decir, 163.7 + 26.05 = 189.75. Esto se puede conseguir directamente quitando el término independiente del modelo (ver este documento).

Modelo en desviaciones con respecto a la media

Otra opción disponible es usar el paquete plm:

  # install.packages("plm") # instalamos el paquete (s?lo una vez)
  library(plm) # instalarlo previamente
  reg.fijos.within = plm(sales~price+pop16+ndi, index=c("state", "year"), model="within", data=Cigar)
  summary(reg.fijos.within)
Oneway (individual) effect Within Model

Call:
plm(formula = sales ~ price + pop16 + ndi, data = Cigar, model = "within", 
    index = c("state", "year"))

Balanced Panel: n = 46, T = 30, N = 1380

Residuals:
     Min.   1st Qu.    Median   3rd Qu.      Max. 
-73.21910  -6.57806   0.66903   6.92530 125.09704 

Coefficients:
         Estimate  Std. Error  t-value  Pr(>|t|)    
price -0.40585663  0.03760645 -10.7922 < 2.2e-16 ***
pop16  0.00144787  0.00064307   2.2515   0.02452 *  
ndi    0.00170341  0.00034943   4.8748  1.22e-06 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Total Sum of Squares:    412530
Residual Sum of Squares: 298760
R-Squared:      0.27578
Adj. R-Squared: 0.24967
F-statistic: 168.949 on 3 and 1331 DF, p-value: < 2.22e-16

En este caso:

  • Los resultados coinciden con las obtenidas usando variables binarias por individuo.
  • Los coeficientes estimados indican cómo varía la variable dependiente sobre el periodo, en media por individuo, cuando las independientes aumentan una unidad.
  • El término independiente no aparece ya que el modelo estimado es el de desviaciones con respecto a la media. De hecho, elimina todas las variables constantes en cada individuo. Esta es una cuestión que se ha de valorar, ya que si se elimina una variable importante no debería usarse esta metodología aunque los datos (correspondientes contrastes) indiquen lo contrario.

Mediante fixef se obtienen los efectos fijos correspondientes a cada individuo:

fixef(reg.fijos.within) # efectos individuales de cada individuo
     1      3      4      5      7      8      9     10     11     13     14 
121.13 125.74 130.98 103.38 129.07 164.91 174.30 133.20 128.78 119.39 127.70 
    15     16     17     18     19     20     21     22     23     24     25 
149.07 124.82 124.29 187.59 137.13 149.39 131.00 128.54 135.13 121.64 123.99 
    26     27     28     29     30     31     32     33     35     36     37 
140.24 125.86 121.21 187.68 246.66 125.99 107.79 115.26 119.70 128.72 134.05 
    39     40     41     42     43     44     45     46     47     48     49 
117.03 149.86 130.14 118.56 129.89 114.36  83.66 155.36 138.63 109.22 130.61 
    50     51 
120.33 148.45 

Modelo between

También se puede considerar el modelo between. Los modelos entre grupos o between analizan la variabilidad entre unidades de sección cruzada, por tanto, usan las medias de los datos temporales de cada individuo:

  reg.fijos.between = plm(sales~price+pop16+ndi, index=c("state", "year"), model="between", data=Cigar)
  summary(reg.fijos.between)
Oneway (individual) effect Between Model

Call:
plm(formula = sales ~ price + pop16 + ndi, data = Cigar, model = "between", 
    index = c("state", "year"))

Balanced Panel: n = 46, T = 30, N = 1380
Observations used in estimation: 46

Residuals:
    Min.  1st Qu.   Median  3rd Qu.     Max. 
-42.7787 -13.1402  -2.7263  10.5227  78.5190 

Coefficients:
               Estimate  Std. Error t-value  Pr(>|t|)    
(Intercept)  2.1095e+02  4.4543e+01  4.7358 2.498e-05 ***
price       -2.7525e+00  7.0002e-01 -3.9320 0.0003094 ***
pop16       -1.3950e-03  9.3714e-04 -1.4886 0.1440754    
ndi          1.4192e-02  3.2069e-03  4.4255 6.708e-05 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Total Sum of Squares:    30398
Residual Sum of Squares: 18621
R-Squared:      0.38741
Adj. R-Squared: 0.34366
F-statistic: 8.85397 on 3 and 42 DF, p-value: 0.00011498

En la práctica, se utilizan poco porque los modelos con efectos aleatorios son superiores y el estimador between ignora la información temporal existente dentro de los individuos.

Regresión con efectos aleatorios

Si se considera que el término independiente es una variable aleatoria, debe considerarse un enfoque de efectos aleatorios:

  reg.aleatorios = plm(sales~price+pop16+ndi, index=c("state", "year"), model="random", data=Cigar)
  summary(reg.aleatorios)
Oneway (individual) effect Random Effect Model 
   (Swamy-Arora's transformation)

Call:
plm(formula = sales ~ price + pop16 + ndi, data = Cigar, model = "random", 
    index = c("state", "year"))

Balanced Panel: n = 46, T = 30, N = 1380

Effects:
                 var std.dev share
idiosyncratic 224.46   14.98  0.34
individual    435.88   20.88  0.66
theta: 0.8701

Residuals:
     Min.   1st Qu.    Median   3rd Qu.      Max. 
-65.42697  -7.38381   0.32931   6.13313 130.77317 

Coefficients:
               Estimate  Std. Error  z-value  Pr(>|z|)    
(Intercept)  1.3641e+02  3.4938e+00  39.0426 < 2.2e-16 ***
price       -4.2424e-01  3.7665e-02 -11.2636 < 2.2e-16 ***
pop16        6.0417e-04  5.2371e-04   1.1536    0.2487    
ndi          1.9473e-03  3.4727e-04   5.6075 2.052e-08 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Total Sum of Squares:    427920
Residual Sum of Squares: 313470
R-Squared:      0.26745
Adj. R-Squared: 0.26585
Chisq: 502.367 on 3 DF, p-value: < 2.22e-16

De la información ofrecida cabe destacar:

  • El valor estimado de theta: si es próximo a 0 efectos aleatorios se asemeja más a los resultados obtenidos por el modelo agrupado mientras si lo está a 1 a los de efectos fijos. En este caso es 0.8686.
  • Para interpretar los coeficientes se ha de tener en cuenta que se analiza el efecto de las variables independientes sobre la dependiente cuando las primeras aumentan una unidad controlando las diferencias del individuo y periodo (algo complicado).

Selección de modelos

Para elegir cuál de los tres enfoques anteriores es el más idóneo se disponen de los siguientes contrastes:

  # H0: modelo agrupado (MCO) vs H1: efectos fijos
  pFtest(reg.fijos.within, reg.mco) 

    F test for individual effects

data:  sales ~ price + pop16 + ndi
F = 71.659, df1 = 45, df2 = 1331, p-value < 2.2e-16
alternative hypothesis: significant effects
  # H0: modelo agrupado (MCO) vs H1: efectos aleatorios
  reg.mco.plm = plm(sales~price+pop16+ndi, index=c("state", "year"), model="pooling", data=Cigar)
  plmtest(reg.mco.plm, type=c("bp")) 

    Lagrange Multiplier Test - (Breusch-Pagan)

data:  sales ~ price + pop16 + ndi
chisq = 8226.4, df = 1, p-value < 2.2e-16
alternative hypothesis: significant effects
  # H0: efectos aleatorios vs H1: efectos fijos
  phtest(reg.fijos.within, reg.aleatorios) 

    Hausman Test

data:  sales ~ price + pop16 + ndi
chisq = 49.942, df = 3, p-value = 8.222e-11
alternative hypothesis: one model is inconsistent

Teniendo en cuenta que:

  • Mediante pFtest se realiza el contraste con hipótesis nula el modelo agrupado es mejor que el de efectos fijos. En este caso se rechaza dicha hipótesis (p-valor menor que 0.05 ya que es menor que \(2 \cdot 10^{-16}\)), luego los efectos fijos son preferibles.
  • Mediante plmtest se realiza el contraste con hipótesis nula el modelo agrupado es mejor que el de efectos aleatorios. En este caso se rechaza dicha hipótesis (p-valor menor que 0.05 ya que es menor que \(2 \cdot 10^{-16}\)), luego los efectos aleatorios son preferibles.
  • Mediante phtest se realiza el contraste de Hausman con hipótesis nula el modelo de efectos aleatorios es mejor que el de efectos fijos. En este caso se rechaza dicha hipótesis (p-valor=0.000000005492<0.05), luego los efectos fijos son preferibles.

Se tiene que el enfoque idóneo es el de efectos fijos. En tal caso:

  • El precio influye negativamente en la ventas de cigarrillos, es decir, conforme aumenta el precio del paquete de cigarrillos disminuyen las vaentas.
  • La población con más de 16 años y el ingreso disponible per cápita influyen positivamente en las ventas de cigarrillos, es decir, conforme aumentan estas variables también aumentan las ventas de los paquetes de cigarrillos.
  • El modelo es válido conjuntamente, ya que el p-valor (menor que \(2.22 \cdot 10^{-16}\)) asociado al contraste de significación conjunta es menor que 0.05.

Nota final

Un enlace interesante sobre datos de panel puede ser el siguiente https://acbstats.wordpress.com/2017/02/08/regresion-residuos-y-baloncesto-tris/.