11.3 Regresión de efectos fijos

Considere el modelo de regresión de panel

Yit=β0+β1Xit+β2Zi+uitYit=β0+β1Xit+β2Zi+uit

donde ZiZi son heterogeneidades invariantes en el tiempo no observadas entre las entidades i=1,,ni=1,,n. El objetivo es estimar β1β1, el efecto en YiYi de un cambio en XiXi manteniendo constante ZiZi. Dejando αi=β0+β2Ziαi=β0+β2Zi se obtiene el siguiente modelo:

Yit=αi+β1Xit+uit.Yit=αi+β1Xit+uit.(11.1)

Teniendo intersecciones específicas individuales αiαi, i=1,,ni=1,,n, donde cada una de estas puede entenderse como el efecto fijo de la entidad ii, este modelo se llama modelo de efectos fijos.

La variación en αiαi, i=1,,ni=1,,n proviene de ZiZi. (11.1) se puede reescribir como un modelo de regresión que contiene n1n1 regresores ficticios y una constante:

Yit=β0+β1Xit+γ2D2i+γ3D3i++γnDni+uit.Yit=β0+β1Xit+γ2D2i+γ3D3i++γnDni+uit.(11.2)

El modelo (11.2) tiene nn intersecciones diferentes — una para cada entidad. (11.1) y (11.2) son representaciones equivalentes del modelo de efectos fijos.

El modelo de efectos fijos se puede generalizar para que contenga más de un determinante de YY que está correlacionado con XX y cambia con el tiempo. El Concepto clave 10.2 presenta el modelo de regresión de efectos fijos generalizados.

Concepto clave 10.2

El modelo de regresión de efectos fijos

El modelo de regresión de efectos fijos es

Yit=β1X1,it++βkXk,it+αi+uitYit=β1X1,it++βkXk,it+αi+uit(11.3)

con i=1,,ni=1,,n y t=1,,Tt=1,,T. Los αiαi son intersecciones específicas de entidades que capturan heterogeneidades entre entidades. Una representación equivalente de este modelo viene dada por

Yit=β0+β1X1,it++βkXk,it+γ2D2i+γ3D3i++γnDni+uitYit=β0+β1X1,it++βkXk,it+γ2D2i+γ3D3i++γnDni+uit(11.4)

donde D2i,D3i,,Dni son variables ficticias.

Estimación e inferencia

Los paquetes de software utilizan el llamado algoritmo MCO “degradado por entidad” que es computacionalmente más eficiente que estimar modelos de regresión con k+n regresores según sea necesario para los modelos (11.3) y (11.4).

Tomando promedios en ambos lados de (11.1) se obtiene:

1nni=1Yit=β11nni=1Xit+1nni=1ai+1nni=1uit¯Y=β1¯Xi+αi+¯ui.

La resta de (11.1) produce:

Yit¯Yi=β1(Xit¯Xi)+(uit¯ui)Yit=β1Xit+uit.

En este modelo, la estimación de MCO del parámetro de interés β1 es igual a la estimación obtenida usando (11.2) — sin la necesidad de estimar n1 ficticias y una intersección.

Se concluye que existen dos formas de estimar β1 en la regresión de efectos fijos:

  1. MCO del modelo de regresión ficticia como se muestra en (11.2)

  2. MCO usando los datos degradados de la entidad como en (11.5)

Siempre que se cumplan los supuestos de regresión de efectos fijos establecidos en el Concepto clave 10.3, la distribución muestral del estimador de MCO en el modelo de regresión de efectos fijos es normal en muestras grandes. La varianza de las estimaciones puede estimarse y se pueden calcular errores estándar, estadísticos t e intervalos de confianza para los coeficientes. En la siguiente sección, se ve cómo estimar un modelo de efectos fijos usando R y cómo obtener un resumen del modelo que reporta errores estándar robustos a la heterocedasticidad. Dejando de lado las complicadas fórmulas de los estimadores.

Aplicación a muertes por accidentes de tráfico

Siguiendo el Concepto clave 10.2, el modelo simple de efectos fijos para la estimación de la relación entre las tasas de accidentes de tránsito y los impuestos a la cerveza es

Tasa de fatalidadit=β1Impuesto a la cervezait+Efectos fijos estatales+uit,

una regresión de la tasa de mortalidad por accidentes de tráfico en el impuesto a la cerveza y 48 regresores binarios, uno para cada estado federal.

Simplemente se puede usar la función lm() para obtener una estimación de β1.

fatal_fe_lm_mod <- lm(fatal_rate ~ beertax + state - 1, data = Fatalities)
fatal_fe_lm_mod
#> 
#> Call:
#> lm(formula = fatal_rate ~ beertax + state - 1, data = Fatalities)
#> 
#> Coefficients:
#> beertax  stateal  stateaz  statear  stateca  stateco  statect  statede  
#> -0.6559   3.4776   2.9099   2.8227   1.9682   1.9933   1.6154   2.1700  
#> statefl  statega  stateid  stateil  statein  stateia  stateks  stateky  
#>  3.2095   4.0022   2.8086   1.5160   2.0161   1.9337   2.2544   2.2601  
#> statela  stateme  statemd  statema  statemi  statemn  statems  statemo  
#>  2.6305   2.3697   1.7712   1.3679   1.9931   1.5804   3.4486   2.1814  
#> statemt  statene  statenv  statenh  statenj  statenm  stateny  statenc  
#>  3.1172   1.9555   2.8769   2.2232   1.3719   3.9040   1.2910   3.1872  
#> statend  stateoh  stateok  stateor  statepa  stateri  statesc  statesd  
#>  1.8542   1.8032   2.9326   2.3096   1.7102   1.2126   4.0348   2.4739  
#> statetn  statetx  stateut  statevt  stateva  statewa  statewv  statewi  
#>  2.6020   2.5602   2.3137   2.5116   2.1874   1.8181   2.5809   1.7184  
#> statewy  
#>  3.2491

Como se discutió en la sección anterior, también es posible estimar β1 aplicando MCO a los datos degradados; es decir, para ejecutar la regresión:

Tasa de fatalidad=β1Impuesto a la cervezait+uit.

# obtener datos degradados
Fatalities_demeaned <- with(Fatalities,
            data.frame(fatal_rate = fatal_rate - ave(fatal_rate, state),
            beertax = beertax - ave(beertax, state)))

# estimar la regresión
summary(lm(fatal_rate ~ beertax - 1, data = Fatalities_demeaned))

La función ave es conveniente para calcular promedios de grupo. Se usa para obtener promedios estatales específicos de la tasa de mortalidad y el impuesto a la cerveza.

Alternativamente, se puede usar plm() del paquete con el mismo nombre.

# instalar y cargar el paquete 'plm'
## install.packages("plm")
library(plm)

En cuanto a lm(), se tiene que especificar la fórmula de regresión y los datos que se utilizarán en la llamada de plm(). Además, se requiere pasar un vector con los nombres de cada entidad y variables de identificación de tiempo al argumento index. Para Fatalities, la variable de identificación de las entidades se denomina state y la variable de identificación de tiempo es year. Dado que el estimador de efectos fijos también se denomina estimador interno, se establece model = “within”. Finalmente, la función coeftest() permite obtener inferencias basadas en errores estándar robustos.

# estimar la regresión de efectos fijos con plm()
fatal_fe_mod <- plm(fatal_rate ~ beertax, 
                    data = Fatalities,
                    index = c("state", "year"), 
                    model = "within")

# imprimir resumen usando errores estándar robustos
coeftest(fatal_fe_mod, vcov. = vcovHC, type = "HC1")
#> 
#> t test of coefficients:
#> 
#>         Estimate Std. Error t value Pr(>|t|)  
#> beertax -0.65587    0.28880  -2.271  0.02388 *
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

El coeficiente estimado es de nuevo 0.6559. Se debe tener en cuenta que plm() utiliza el algoritmo MCO degradado por entidad y, por lo tanto, no informa coeficientes ficticios. La función de regresión estimada es

^Tasa de fatalidad=0.66(0.29)×Impuesto a la cerveza+Efectos fijos estatales.

El coeficiente de Impuesto a la cerveza es negativo y significativo. La interpretación es que la reducción estimada en las muertes por accidentes de tránsito debido a un aumento en el impuesto real a la cerveza en $1 es de 0.66 por 10000 personas, lo que sigue siendo bastante alto. Si bien la inclusión de efectos fijos estatales elimina el riesgo de sesgo debido a factores omitidos que varían entre los estados, pero no a lo largo del tiempo, se sospecha que hay otras variables omitidas que varían con el tiempo y, por lo tanto, causan un sesgo.