Heterocedasticidad

El modelo básico de regresión lineal tiene como supuesto que la varianza del término de error es constante:

\[ Var(\mu_i)=\sigma^2 \]

Se debe tener en cuenta dicho supuesto ya que cuando se habla de estimación de parámetros en el modelo de regresión lineal, estos deben ser o mostrar una relación estable entre los predictores y la variable dependiente, por lo que los valores muestrales de la variable Y deben mostrarse igualmente dispersos ante variaciones de los regresores.

Causas de la Heterocedasticidad

Existen diversas situaciones por las cuales se produce la violación al supuesto de homocedasticidad en el modelo de regresión lineal, entre las principales se pueden nombrar las siguientes:

  • valores Dispersos Esta es la situación más frecuente por la que se presenta el problema de heterocedasticidad en el modelo de regresión. Se da porque frecuentemente las observaciones de los datos en el modelo no suelen tener un comportamiento homogéneo.

  • Omisión de Variables relevantes Si se omite una variable en la especificación, dicha variable quedará parcialmente recogida en el comportamiento de los errores aleatorios, pudiendo generar heterocedasticidad en el modelo.

  • Cambio de Estructura Un cambio de estructura en el modelo va a hacer que el modelo este mal ajustado, esto generará una varianza no constante en los términos de error del modelo estimado.

  • Forma Funcional Incorrecta Cuando se especifica un modelo de forma incorrecta respecto a su forma funcional, se puede provocar que la calidad del ajuste de la regresión sea muy baja, porque no solo tendrá errores mayores, sino también errores muy dispersos.

Comportamiento del error

La imagen muestra como se distribuye el error, a la izquierda se puede observar que la varianza no es constante (heterocedasticidad), y a la derecha se nota que sí lo es (homocedasticidad).

Consecuencias de la Heterocedasticidad

Existen diversas consecuencias por la estimación de un modelo de regresión ignorando la presencia de homocedasticidad. Las principales son las siguientes:

  • Existirá un error en el cálculo del estimador en la matriz de varianzas y covarianzas de los estimadores de mínimos cuadrados.

  • El estimador del modelo perderá eficiencia.

Detección de la Heterocedasticidad

Existen diversos métodos para detectar el problema de la heterocedasticidad, se puede recurrir a los constrastes o métodos gráficos.

Métodos Gráficos

Entre los métodos gráficos se tiene:

Gráfica del error a través de las observaciones

Un simple gráfico en donde el error del modelo recorrde las observaciones puede mostrar la distribución de las perturbaciones en el modelo, esto sirve para observar si al transcurrir las observaciones se da lugar a un aumento o disminución del error, lo que puede ser un indicativo de heterocedasticidad. En R, se deberá generar el vector de los residuos del modelo una vez estimado el mismo, luego de esto se hará un gráfico de líneas teniendo en cuenta a los residuos y a las observaciones.

library(haven)
library(stargazer)
sumaria_2015 <- read_dta("C:/Users/daffy/OneDrive/Escritorio/Curso R - ARCHIVOS/1. R BÁSICO/Sesión 9 B - Archivos y tarea/sumaria-2015.dta")
modelo=lm(gashog2d~ inghog2d+mieperho, data=sumaria_2015)
stargazer(modelo,title = "Ejemplo de detección de heteroestacidad",type = "text")

Ejemplo de detección de heteroestacidad
=================================================
                         Dependent variable:     
                    -----------------------------
                              gashog2d           
-------------------------------------------------
inghog2d                      0.440***           
                               (0.002)           
                                                 
mieperho                    1,496.610***         
                              (34.025)           
                                                 
Constant                    5,202.563***         
                              (141.344)          
                                                 
-------------------------------------------------
Observations                   32,188            
R2                              0.635            
Adjusted R2                     0.635            
Residual Std. Error    11,492.740 (df = 32185)   
F Statistic         27,981.770*** (df = 2; 32185)
=================================================
Note:                 *p<0.1; **p<0.05; ***p<0.01

Una vez especificado el modelo, se debe crear los residuos del mismo, esto se realiza con la opción residuals en el modelo.

resid = modelo$residuals

De acuerdo al número de observaciones se generará un vector columna que contenga a los números de cada observación.

obs=c(1:32188)

Luego de haber generado los dos elementos se realiza un gráfico de líneas , para ello se usará el comando plot(), y en una de las opciones del gráfico se especificará que se quiere un gráfico de líneas.

plot(obs, resid, type="l")

Nota: Lo que se puede observar del gráfico es que existe cierta tendencia al incremento en la dispersión de los residuos a lo largo de las observaciones.

Gráfico del error al cuadrado y de la variable endógena

Esta representación de los valores cuadráticos del término de error y de la variable endógena puede revelar la existencia de un patrón sistemático en la varianza de la perturbación . En este tipo de gráfico se tendrá una idea preliminar de la existencia de heterocedasticidad en el modelo . En R se deberá generar en base a los residuos del modelo, el cuadrado de los mismos.

cuadres=resid^2 #Se debe considerar que los residuos ya fueron generados de forma anterior.

Luego de eso se procede a realizar el gráfico de dispersión entre el cuadrado de los residuos y los valores observados de la variable dependiente en el modelo.

plot(cuadres, sumaria_2015$gashog2d)

Nota: En el gráfico se puede observar la existencia de cierto patrón, aunque muy disperso, por lo que no dice mucho acerca de la existencia de la heterocedasticidad en el modelo de regresión.

Contrastes de la Heterocedasticidad

Existen diversos contrastes o pruebas que permiten saber en base a una prueba de hipótesis si hay o no hay heterocedasticidad.

Test de Breusch-Pagan

El test de Breusch-Pagan (1979) es una prueba muy popular para evaluar la haterocedasticidad en el modelo de regresión. Este método analiza si la varianza de los residuos de un modelo de regresión depende de los valores de las variables independientes. El test viene dado por la siguiente prueba:

\[ H_o: Homocedasticidad \\ H_1: Heterocedasticidad \]

Suponiendo que se tiene el siguiente modelo:

\[ y=\beta_0+\beta_1X+\mu_i \]

Se debe estimar los residuos \(\widehat{\mu_i}\), de acuerdo a lo estimado se debe estimar el siguiente modelo de regresión:

\[ \widehat{\mu_i}^2=y_0+y_1+v_i \]

significancia global F confirma que las variables independientes son significativas, entonces se puede rechazar la hipótesis nula de homocedasticidad. En R, existe un comando que permite evaluar de forma directa la heterocedasticidad en el modelo, la función bptest(), que está en el paquete lmtest.

library(lmtest)
Loading required package: zoo

Attaching package: 'zoo'
The following objects are masked from 'package:base':

    as.Date, as.Date.numeric
bptest(modelo)

    studentized Breusch-Pagan test

data:  modelo
BP = 6799.3, df = 2, p-value < 2.2e-16

Nota: Los resultados del test indican que la hipótesis nula se rechaza, por lo tanto se entiende que el modelo presenta heterocedasticidad.

Test de White

Esta es otra prueba de heterocedasticidad. Donde la Hipótesis a evaluarse viene dada por:

\[ H_o: Homocedasticidad \\ H_1: Heterocedasticidad \]

Partiendo del siguiente modelo:

\[ y=\beta_0+\beta_1x_1+\beta_2x_2+\mu_i \]

Para elaborar la prueba de White se siguen los siguientes pasos:

1.- Se debe estimar el modelo y calcular en base a este los errores del mismo.

2.- Se debe efectuar una regresión auxiliar, con los errores estimados como variable dependiente, de la siguiente forma:

\[ \widehat{\mu_i}=\alpha_0+\alpha_1x_1+\alpha_2x_2+\alpha_3x_1^2+\alpha_4x_2^2+\alpha_5x_1x_2+v_i \]

3.- En base a ello, se tendrá el R-cuadrado de la regresión y construir el estadístico de prueba.

\[ n*R_{aux}^2\text{~}X_{5.g.l}^2 \]

Los grados de libertad de esta prueba van a depender del número de parámetros de la regresión auxiliar. La regla de desición está dada por lo siguiente:

  • Si \(n*R_{aux}^2\text{>}X_{k.g.l}^2\) se rechaza la \(H_0\).

  • Si \(n*R_{aux}^2\text{<}X_{k.g.l}^2\) se acepta la \(H_0\)

Para realizar la prueba de White en R, se tienen que seguir los pasos generando y estimando el modelo, ya que no existe una función que de forma directa realice el test de White en este programa.

Constraste de Goldfeld-Quandt

Esta prueba sirve para ver si hay o no heterocedasticidad. Viene dada por la siguiente hhipótesis:

\[ H_o: Homocedasticidad \\ H_1: Heterocedasticidad \]

Suponiendo que se tiene el siguiente modelo:

\[ y=\beta_0+\beta_1X+\mu_i \]

Donde se cree que la heterocedasticidad es ocasionada por la variable explicativa \(X_i\). Los pasos a seguir para contrastar la hipótesis de la existencia del problema en el modelo son los siguientes:

  1. Ordenar la muestra en función de \(x_i\), a partir del valor más bajo de \(x_i\).

  2. Eliminar \(C\) observaciones centrales, de tal manera que las \(n-c\) observaciones restantes queden divididas en dos grupos.

  3. Al interior de cada observación realizar un MCO y capturar la suma de cuadrados de los residuos en cada una de las submuestras ( \(SCR_1 \ \text{y} \ SCR_2\). \(SCR_1\) epresenta los valores más bajos de \(x_i \ \text{y} \ SCR_2\) representa a los valores más grandes de \(x_i\). representa a los valores más grandes de \((n-c-2k)/2\) grados de libertad. Se capturará el estadístico \(\lambda\) como:

\[ \lambda=\frac{SCR_2/gl_2}{SCR_1/gl_1} \\ \lambda\text{ ~ }F[(gl_1,gl_2);\alpha] \]

Donde la regla de desición será la siguiente:

  • Si \(\lambda\) > F entonces se rechazara \(H_0\).
  • Si \(\lambda\) < F entonces se acepta \(H_0\).

Para realizar el contraste de Goldfeld-Quandt en R se debe hacer uso de la función gqtest(), del paquete lmtest.

library(lmtest)
gqtest(modelo, order.by = ~ gashog2d, data=sumaria_2015)

    Goldfeld-Quandt test

data:  modelo
GQ = 15.109, df1 = 16091, df2 = 16091, p-value < 2.2e-16
alternative hypothesis: variance increases from segment 1 to 2

Nota: Los resultados muestran que se está realizando una prueba de Goldfeld-Quandt para la variable gashog2d. Los resultados muestran que la hipótesis nula es rechazada y la alternativa que afirma la heterocedasticidad es generada por la variable gashog2d se afirma.

Solución a la Heterocedasticidad

Mínimos Cuadrados Generalizados

Suponiendo el modelo:

\[ y=\beta_0+\beta_1x_1+\mu_i \]

Si se conocen las varianzas heterocedásticas \(\sigma^2\) para transformar el modelo (ponderarlo) y de esa manera disminuir la dispersión se divide a cada uno de los elementos del modelo entre \(\sigma_i\) el modelo quedaría así:

\[ \frac{y}{\sigma_i}=\beta_0(\frac{1}{\sigma_i})+\beta_2(\frac{x_1}{\sigma_i})+\frac{\mu_i}{\sigma_i} \]

La varianza se hace homoscedástica. De esta manera los estimadores de Mínimos Cuadrados Generalizados son los mejores estimadores lineales insesgados.

Autocorrelación

Al igual que los modelos de regresión con datos de corte transversal, donde se encuentra heteroscedasticidad en los términos de error, se puede encontrar autocorrelación (o correlación serial) en las regresiones con datos de series de tiempo. En este problema las perturbaciones están relacionadas entre sí, aquí, en este blogsito, se explicará el problema de autocorrelación, sus causas, sus consecuencias y los métodos de detección de la autocorrelación haciendo uso de R.

La autocorrelación es definida como la correlación que se encontrará en las perturbaciones de un modelo de regresión, esto implica una violación del supuesto del modelo de regresión lineal que dice que debe existir independencia entre los términos del error. Este problema es presentado frecuentemente en los modelos de series de tiempo. El supuesto de no correlación es denotado simbólicamente de la siguiente manera:

\[ cov(\mu_i,\mu_j|x_i,x_j) = E(\mu_i,\mu_j)=0 \\ i \neq j \]

Causas de la Correlación

Existen diversas causas para la autocorrelación, las principales son:

Inercia

Esta causa se da debido a la incercia en diversos procesos para las variables. Por ejemplo, si la economía está atravesando por la etapa del auge en el crecimiento económico generalmente las variables definidas en el tiempo como, por ejemplo, el PBI, tienden a crecer en un período y así sucesivamente.

Sesgo de Especificación

  • Caso de las variables excluidas Cuando un modelo no considera todas las variables explicativas importantes, generará el problema de autocorrelación, pues las variables no explicadas conforman un patrón de comportamiento en la variable de error.

  • Caso de la forma funcional correcta Cualquier error de la forma funcional de la variable explicativa del modelo de regresión ocasiona autocorrelación.

Rezagos

En aquellos modelos donde la variable endógena aparece como una variable explicativa sesgada en el tiempo se observará el problema de autocorrelación. A dichos modelos se les conoce como autoregresivos.

Manipulación de datos

Con frecuencia se manipula o se transforma la información estadística original, quitándole su comportamiento regular. Así por ejemplo cuando queremos obtener información trimestral de una variable, sumamos tres meses consecutivos y obtenemos su promedio, de esa manera se podría generar autocorrelación serial.

Transformación de datos

Si se considera el siguiente modelo:

\[ y_t=\beta_0+\beta_1x_t+...+\mu_t... (1) \\ t_{t-1}=\beta_0+\beta_1x_{t-1}+\mu_{t-1} ...(2) \\ (1) - (2) \\ y_t-y_{t-1} = \beta_1\vartriangle x_t + v_t \]

Esto generará autocorrelación en el término de error vt.

Consecuencias de la Autocorrelación

En un modelo de regresión definido en el tiempo, como se desconoce a la variable \(\mu_t\), se supondrá que se genera de la siguiente forma:

\[ \mu_t=p\mu_{t-1}+e_t=AR(1) \]

Donde:

  • \(p\) es el coeficiente de autocorrelación o autocovarianza.

\[ -1\leq p \leq 1 \]

Generalmente las variables que se encuentran en la economía presentan autocorrelación serial. Ante la presencia de autocorrelación, las variables estimadas por MCO si bien siguen siendo insesgados ya no presentán varianza mínima y por lo tanto serán ineficientes.

Detección de la Autocorrelación

Considerando el siguiente modelo del PIB, una regresión de series de tiempo se definirá de la siguiente manera:

library(haven)
gnp96 <- read_dta("C:/Users/daffy/OneDrive/Escritorio/Curso R - ARCHIVOS/1. R BÁSICO/Sesión 10 B - Archivos y tarea/gnp96.dta")
serie =ts(gnp96, start=c(1967,1), end=c(2002,2), frequency=4)

Para hacer regresiones con datos de series temporales, se debe usar la librería dynlm, y la función del mismo nombre; en primer lugar, se debería descargar dicho paquete, y luego activarlo en la librería. Se estima un modelo donde la variable dependiente es el producto nacional bruto y el término independiente es el rezago de primer orden de la misma variable.

library("dynlm")
reg1=dynlm(gnp96 ~  L(gnp96), data = gnp96) 
stargazer(reg1,title = "Ejemplo de detección de autocorrelación",type = "text")

Ejemplo de detección de autocorrelación
======================================================================================
                                           Dependent variable:                        
                    ------------------------------------------------------------------
                                                  gnp96                               
--------------------------------------------------------------------------------------
L(gnp96)                                         1.000***                             
                                                 (0.000)                              
                                                                                      
Constant                                         0.000***                             
                                                 (0.000)                              
                                                                                      
--------------------------------------------------------------------------------------
Observations                                       142                                
R2                                                1.000                               
Adjusted R2                                       1.000                               
Residual Std. Error                          0.000 (df = 140)                         
F Statistic         6,595,829,308,732,597,360,606,888,822,800,006.000*** (df = 1; 140)
======================================================================================
Note:                                                      *p<0.1; **p<0.05; ***p<0.01

A partir del modelo estimado, existen diversos métodos para detectar autocorrelación, los principales son los siguientes:

Estadístico de Durbin Watson

El estadístico está definido por:

\[ d=\frac{\sum(\widehat{\mu}_t-\widehat{\mu}_{t-1})}{\sum{\mu_t^2}} \]

Se pretende conocer el peso de la asociación entre observaciones sucesivas de la variable de error en la variación desigual. Para realizar el cálculo estadístico de forma manual, se debe seguir los siguientes pasos:

  • Efectuar la regresión por MCO y obtener los residuos. El modelo debe incluir el término de intercepción.

  • Calcular el estadístico a partir de la fórmula (R lo calcula de forma directa).

  • Para un tamaño de muestra dado y un número de variables explicativas dado, se determina los valores críticos de \(d_l\) y \(d_u\).

La regla para la desición tiene la siguiente forma:

El problema con la prueba de Durbin Watson es que cae en la zona de indecisión, cuando sucede esto se realiza la prueba de Durbin Watson modificada, con el nivel de significancia \(\alpha\).

Suponiendo el modelo:

\[ \mu_t=p\mu_{t-1}+e_t \\ H_o: p = 0 \\ H_1: p>0 \]

Si el valor del \(d\) calculado es menos que \(d_U\), se rechaza la hipótesis nula, por lo tanto, existirá autocorrelación positiva automáticamente significativa.

\[ H_o: p=0 \\ H_1: p<0 \]

Si el valor \(4-dcalc\) es menor a \(d_u\), se rechaza la hipótesis nula, y se entenderá que hay autocorrelación negativa.

Durbin Watson en R

Para poder estimar el estadístico Durbin Watson se hace uso de la función dwtest() de la libreríá lmtest, esto arrojará los resultados para el Test de Durbin Watson de forma directa:

dwtest(reg1)

    Durbin-Watson test

data:  reg1
DW = 2.1421, p-value = 0.7785
alternative hypothesis: true autocorrelation is greater than 0

Estos resultados , basados en el modelo estimado , entiende que la hipótesis nula es aceptada , por lo tanto , no hay autocorrelación.

Contraste de Ljung-Box

Es una prueba estadística que consiste en saber si cualquiera de un grupo de autocorrelaciones de una serie de tiempo son diferentes de cero. El estadístico de contraste viene dado por lo siguiente:

\[ Q=n(n+2)\sum_{k=1}^h\frac{\widehat{p}k^2}{n-k} \]

Donde \(n\) es el tamaño regular de la muestra, \(\widehat{p}_k\) es la autocorrelación de la muestra en el rezagos k y h esl número de rezagos que se están probando. La prueba de Ljung-Box se pude definir de la siguiente manera:

  • \(H_0:\) Los datos se distribuye de forma independiente (es decir, las correlaciones en la población de la que se toma la muestra 0, de modo que cualquier correlación observada en los datos es el resultados e la aleatoriedad del proceso de muestreo).

  • \(H_1:\) Los datos no se distribuyen de forma independiente.

Para rechazar la hipótesis nula se debe cumplir que:

\[ Q>X_h^2 \]

Contraste de Ljung-Box en R

Para hacer el contraste de Ljung-Boxen R se debe hacer uso de la función Box-test() donde se deberá especificar que se quiere hacer el contraste de Ljung-Box. La aplicación es la siguiente:

Box.test(residuals(reg1), type="Ljung-Box")

    Box-Ljung test

data:  residuals(reg1)
X-squared = 0.74319, df = 1, p-value = 0.3886

Estos resultados nos dicen que la hipotesis nula es aceptada y por lo tanto no hay evidencia de autocorrelación.

Contraste de Breusch-Godfrey

Esta prueba se presenta como otra alternativa para evaluar la existencia de autocorrelación en una regresión lineal , a su vez, esta prueba permite:

  • Regresiones no estocásticas.
  • Esquemas autoregresivos de orden mayor.
  • Promedios móviles simples o de orden superior de los términos de error de ruido blanco.

El procedimiento es el siguiente, sea el modelo:

\[ y_t=\beta_0+\beta_1x_t+\mu_t \]

Suponga que el término de error \(\mu_t\) sigue un esquema autoregresivo \(p\), con \(AR(P)\).

\[ \mu_t=p_1\mu_{t-1}+p_2\mu_{t-2}+...+p_p\mu_{t-p}+e \]

\(e_t\) el término de error. La hipótesis nula es la siguiente:

\[ H_o: p_1=p_2=...=p_p=0 \]

Esto nos dice que esta hipótesis afirma que no existe autocorrelación serial de ningún orden. Para realizar este contraste de forma manual se debe hacer lo siguiente:

  • Estimar el modelo original por MCO y calcular los residuos estimados \(\widehat{\mu}_t\).
  • Se realiza la regresión \(\widehat{\mu}_t\) sobre \(x_t\) (si hay más de una variable , se incuye también).

\[ \widehat{\mu}_t=\alpha_1+\alpha_2x_t+\widehat{p}_1\mu_{t-1}+\widehat{p}_2\mu_{t-2}+...+\widehat{p}_p\mu_{t-p}+e_t \]

De esta regresión calcular R-cuadrado , si el tamaño de la muestra es grande se puede mostrar que:

\[ (n-p)R^2\text{ ~ }X_p^2 \]

Si \((n-p)R^2\) es mayor que \(X_p^2\) se rechaza la hipótesis nula cuyo caso por lo menos un \(p\) es significativamente diferente de cero, es decir, existe autocorrelación.

Contraste de Breusch -Godfrey en R

Para realizar el contraste en R, se debe hacer uso de la función bgtest, por defecto, se usa n orden \(p=1\), así, se obtendrá lo siguiente:

bgtest(reg1)

    Breusch-Godfrey test for serial correlation of order up to 1

data:  reg1
LM test = 0.72771, df = 1, p-value = 0.3936

La prueba acepta la hipótesis nula, por lo que se entenderá de que no existe autocorrelación serial en el modelo estimado.