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 paquetehead(Cigar) # un vistazo a los datos
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:
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, , 0.00000000655 y , 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, , 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:
No hay cambios en cuanto a la significación individual de las variables (p-valores menores que 0.05, , 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, , 0.0000297 y , 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
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:
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:
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 fijospFtest(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
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 fijosphtest(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 ), 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 ), 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 ) 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/.