Libro Regresion
Libro Regresion
Libro Regresion
Libro digital
Cienfi (http://www.icesi.edu.co/centros-academicos/cienfi).
Copyright© Introducción al Modelo Clásico de Regresión para Científico de Datos en R.
Escuela de Economía
Universidad Icesi
340 pp.
1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1 Introducción 24
2.2.1 Supuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.4 Anexos 50
3.1 Introducción 58
4 Comparación de Modelos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
4.1 Introducción 96
8 Multicolinealidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
8.5.2 Solución del problema removiendo variables con alto VIF . . . . . . . . . . . . . . . 208
8.7.2 Demostración de la eficiencia del estimador MCO con variables explicativas alea-
torias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
8.7.3 Demostración del sesgo del estimador de la regresión de Ridge . . . . . . . . . . 221
9 Heteroscedasticidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
11 Autocorrelación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
2.2 Parte no estocástica del modelo lineal 2.7 con β0 = −3, β1 = 2 y β2 = 4 con ejes rotados.27
2.6 Posibles líneas que se pueden trazar para una muestra observada de y y x . . . . . . . . 36
2.7 Ejemplo de la linea trazada con el método MCO para una muestra observada para
dos variables (y y x) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.8 Ejemplo de la suma de los cuadrados de los errores que implica el método MCO . . . . 38
3.2 Histograma de los coeficientes estimados (en azul se presenta la media de los
coeficientes estimados) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
3.6 Diferencia entre la distribución estándar normal z y la t con 10 grado de libertad t10 . . 69
3.7 Diferencia entre la distribución estándar normal z y la t con 30 grado de libertad t30 . . 69
3.9 Ejemplo de la variación total para una observación de la variable dependiente (yi ) . . . 73
3.10 Ejemplo de la variación explicada por el modelo para una observación de la variable
dependiente (yi ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.1 Ventas de boletas por partido (Yi ) y presencia de una estrella en el equipo visitante (Xi ). 112
5.10 Sell-in mensual de crema dental (en unidades) e inversión en material promocional . . 123
9.4 Posibles patrones de comportamiento de los residuales que sugieren heteroscedasticidad 231
11.1 Comportamiento en el tiempo del error simulado de un proceos AR(1) con ρ = 0,8 . . 276
11.2 Error simulado para el periodo t versus el mismo error en el periodo anterior (error
simulado de un proceos AR(1) con ρ = 0,8) . . . . . . . . . . . . . . . . . . . . . . . 276
11.4 Comportamiento en el tiempo del error simulado de un proceos AR(1) con ρ = 0,8 . . 278
11.5 Error simulado para el periodo t versus el mismo error en el periodo anterior (error
simulado de un proceos AR(1) con ρ = −0,8) . . . . . . . . . . . . . . . . . . . . . 278
12.1 Diagrama del Método de retención para la evaluación cruzada de modelos . . . . . . . 316
12.2 Diagrama del Método de validación cruzada de k iteraciones para la evaluación de modelos317
12.3 Diagrama del Método de validación cruzada de k iteraciones para la evaluación de modelos318
12.4 De la muestra completa a la muestra de evaluación (Ejemplo del Método de retención) 319
3.1 Hipótesis individuales sobre los coeficientes del modelo MCO: región de rechazo y
reglas de decisión. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
4.2 Medidas de bondad de ajuste para los tres modelos estimados . . . . . . . . . . . . . . 103
6.2 Modelo seleccionado por el valor p con el algoritmo stepwise forward . . . . . . . . . 146
6.3 Modelo seleccionado por AIC con el algoritmo stepwise forward . . . . . . . . . . . . 148
6.4 Modelo seleccionado por el valor p y el AIC con el algoritmo stepwise backward . . . 151
6.6 Modelo seleccionado por el valor p y el AIC con el algoritmo combinado . . . . . . . 155
6.7 Modelos construidos hasta ahora con diferentes algoritmos y criterios . . . . . . . . . 156
7.6 Variables explicativas incluidas en cada uno de los modelos calculados . . . . . . . . . 173
7.7 Valores p de las pruebas J (H0 : modelo de la fila es mejor que el de la columna) . . . 173
10.3 Modelo seleccionado el algoritmo stepwise forward con corrección HC3 . . . . . . . . 261
10.4 Modelos seleccionados con el algoritmo stepwise backward con corrección HC3 . . . 263
10.5 Modelo seleccionado el algoritmo stepwise forward y backward con corrección HC3 . 265
10.6 Variables explicativas incluidas en cada uno de los modelos calculados (con correción HC3)266
10.7 Valores p de las pruebas J (H0 : modelo de la fila es mejor que el de la columna (con
correción HC3)) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
11.3 Prueba de Box-Pierce de los errores para los primeros 20 rezagos . . . . . . . . . . . . 298
11.4 Prueba de Ljung-Box de los errores para los primeros 20 rezagos . . . . . . . . . . . . 299
13.3 Modelo seleccionado el algoritmo stepwise forward con corrección HC3 . . . . . . . . 342
13.4 Modelos seleccionados con el algoritmo stepwise backward con corrección HC3 . . . 344
13.5 Modelo seleccionado el algoritmo stepwise forward y backward con corrección HC3 . 345
13.6 Modelos seleccionados por los diferentes algoritmos con corrección HC3 . . . . . . . 347
15.3 Medidas de bondad de ajuste para los cinco modelos estimados . . . . . . . . . . . . . 397
Los datos se han convertido en un recurso muy importante para las organizaciones, y el data analytics
se ha convertido en la forma como las organizaciones pueden monetizar ese recurso. El business
analytics es el proceso científico de transformar datos en insights con el propósito de tomar mejores
decisiones. En últimas, el business analytics empodera a la organización para el logro de su misión.
En ese proceso científico de transformar datos en conclusiones con el propósito de tomar mejores
decisiones existen diferentes actividades que van desde la recolección de datos y su almacenamiento
hasta la toma de la decisión; pasando por la extracción, limpieza y preparación de los datos, su
exploración y visualización y el modelado o experimentación o predicción o lo que sea que requiera
para responder la pregunta de negocio planteada. Estas actividades no son desarrolladas por una
sola persona. Normalmente existe un equipo con profesionales calificados que tienen diferentes
competencias y roles en este proceso. En estos equipos está como nodo central el científico de datos
quien estima y entrena modelos estadísticos y de inteligencia artificial o diseña experimentos para
resolver las preguntas de negocio planteadas.
Escanea el siguiente código o visita el siguiente enlace para ver un video sobre los tipos de
analítica.
Enlace: https://youtu.be/rhLWa-vOxyU
Antes de entrar en materia con el modelo clásico de regresión, en este capítulo estudiaremos las
diferentes tareas de la analítica, los tipos de analítica y la diferencia entre la aproximación tradicional
de las ciencias y la ciencia de datos al momento de usar el modelos de regresión.
1.1 Tareas del científico de datos 23
Resumir
Visualizar
Clusterizar (Agrupar)
Clasificar
Detectar excepciones
Asociar
Estimar regresiones
Pronosticar
Resumir implica simplificar la representación de los datos para generar información. La Visualización
facilita la comprensión y el descubrimiento de los datos por medio de gráficos. El Clustering parte de
una muestra para encontrar grupos de elementos similares. Por ejemplo, en la Figura 1.1 se presenta
un conjunto de clientes que por medio de un modelo de clustering es distribuido en dos grupos de
acuerdo con ciertas características.
Para realizar las diferentes tareas de analítica empleamos modelos o algoritmos1 . En el ejemplo de la
Figura 1.1 el modelo de clustering encuentra dos grupos: los que tienen gafas y los que no. Este tipo
de modelo no tiene una variable a explicar e implica que el modelo o algoritmo aprenda sobre la
estructura de los datos. A este tipo de algoritmos se les conoce como modelos de aprendizaje no
supervisado.
Escanea el siguiente código o visita el siguiente enlace para ver un video sobre la tarea de
clustering.
Enlace: https://youtu.be/z0LX3sBSuXg
La tarea de Clasificación tiene como finalidad predecir la categoría de un individuo. Por ejemplo,
en algunas situaciones se deseará determinar si un nuevo cliente comprará o no nuestro producto.
En este caso las categorías son compra o no compra. Otro tipo de preguntas que puede resolver
esta tarea son: ¿se irá el cliente?, ¿pagará el crédito? y ¿será el individuo un buen match para la
posición? En la Figura 1.2 se presenta una representación gráfica de esta tarea. Para esta tarea se
emplean modelos o algoritmos que se estiman2 empleando una muestra de individuos para los cuáles
se tiene información de sus características y una variable dependiente que recoge si el individuo
pertenece o no a una categoría. En este orden de ideas, los modelos que se emplean para esta tarea
son modelos que intentan entender la relación entre unas variables y una variable categórica; relación
que ya ocurrió en algún periodo. Este tipo de modelos se les conoce como algoritmos de aprendizaje
supervisado, pues al modelo se le debe “enseñar” a que categoría pertenece cada individuo.
1 Los modelos o algoritmos en algunos casos pueden ser útiles para hacer mas de una tarea, como veremos mas adelante.
2 En
el mundo de la estadística se emplea la expresión “estimar un modelo” para la construcción de un modelo a partir
de una muestra. Por otro lado, en el mundo del inteligencia artificial se emplea la expresión “entrenar un modelo”.
1.1 Tareas del científico de datos 25
Escanea el siguiente código o visita el siguiente enlace para ver un video sobre la tarea de
clasificación.
Enlace: https://youtu.be/0K7ryP0uKGo
La tarea de Detección de excepciones tiene como objetivo encontrar individuos con características
o comportamiento diferentes. Esta tarea emplea modelos de aprendizaje no supervisado. La tarea
de encontrar Asociaciones busca reglas de co-ocurrencia de productos en diferentes canastas. Es
decir, busca encontrar cuáles productos son comprados regularmente al mismo tiempo que otros
para poder sugerir composición de canastas. Estos modelos intentan encontrar la estructura de los
datos sin la necesidad de enseñarle al algoritmo cuáles son las co-ocurrencias. Estos son modelos de
aprendizaje no supervisado.
La tarea de Estimar regresiones implica encontrar relaciones entre muchas variables y una variable
26 Introducción
cuantitativa de interés. Esto puede ser tanto para entender qué variables están asociadas a un
fenómeno, como para simular el comportamiento en diferentes escenarios. En la Figura 1.3 se
presenta un ejemplo en el que se tienen las características de diferentes clientes y variables como el
gasto en publicidad (estas son las variables independientes) y el modelo de regresión determina la
relación de estas variables con el monto (en dinero) de las compras (variable dependiente). Estos
modelos son considerados modelos de aprendizaje supervisado.
Este libro se concentra en el modelo de Clásico de Regresión Múltiple que permite realizar la tarea
de Estimar regresiones y en algunos casos la tarea de Pronósticar si se emplea un componente
temporal en el modelo. Este modelo fue desarrollado por la estadística, y los economistas han
popularizado su uso para variables económicas y del mundo de los negocios dando origen a una
disciplina conocida como la econometría. En este orden de ideas, en este libro nos concentramos en
este modelo econométrico. Estas herramientas de la econometría constituyen hoy un pilar importante
de la caja de herramientas de los científicos de datos. En la sección 1.3 se discute la diferencia entre
la aproximación de la econometría a resolver problemas empleando el modelo clásico de regresión
múltiple y la ciencia de datos.
Antes de continuar es importante recordar que existen cuatro tipos de analítica: descriptiva, diag-
nóstica, predictiva y prescriptiva. (Ver Figura 1.4). Estos tipos de analítica engloban las tareas que
discutimos anteriormente. No necesariamente un tipo de analítica es mejor que otra, cada una cumple
una función diferente y responde a preguntas diferentes. Pero, es claro que a medida que pasamos de
la analítica descriptiva a la prescriptiva se genera mayor valor a las organizaciones al tiempo que se
está aumentando el grado de complejidad.
Escanea el siguiente código o visita el siguiente enlace para ver un video sobre los tipos de
analítica.
Enlace: https://youtu.be/ILoPGp6g_gI
28 Introducción
Valor
Prescriptiva
Predictiva
Diagnóstica
Descriptiva
Descriptiva
Complejidad
Fuente: Elaboración propia
La analítica descriptiva responde a la pregunta ¿qué está pasando en mi negocio? Para esto
emplea las bases de datos de la compañía, o las disponibles públicamente4 y emplea la estadística
descriptiva para explorar los datos, resumir información en reportes y visualizaciones que sean útiles
para entender qué ha pasado y qué está pasando con el negocio. Este tipo de analítica es la más
utilizada en las empresas y es la que requiere menor grado de sofisticación técnica para aplicarlas.
La analítica diagnóstica típicamente quiere responder la pregunta de por qué está pasando lo
que está pasando en el negocio. Este tipo de análisis tiene la capacidad de encontrar las causas
de los problemas, la raíz de las relaciones y es capaz de aislar los efectos de diferentes fenómenos.
El modelo de regresión que estudiaremos en este documento permite encontrar relaciones y aislar
efectos.
La analítica predictiva busca responder la pregunta: ¿qué es posible que ocurra? Para esto se
4 Para
ver una introducción rápida al tipo de datos que se emplean en el business analytics ver el video disponible en el
siguiente enlace: https://youtu.be/2OxY2UTI_Bs.
1.3 Aproximación econométrica vs los científicos de datos 29
apoya en datos históricos; es decir, con los datos que ya se tiene, se predicen comportamientos que
aún no se conocen. En otras palabras, con datos ya existentes se predicen los datos que aún no se
tienen o no han ocurrido. La predicción implica estimar los resultados de los datos no vistos. La
creación de pronósticos (forecasting en inglés) es un área de la predicción en la que se realizan
congeturas sobre el futuro, basándonos en datos de series de tiempo5 . La única diferencia entre la
predicción y los pronósticos es que en esta última se considera la dimensión temporal. La analítica
predictiva tiene como intención generar predicciones de variables cuantitativas.
El modelo de regresión múltiple puede emplearse tanto para hacer predicciones como pronósticos.
Por ejemplo, si se emplea una muestra de muchos individuos en el mismo periodo (muestra de corte
trasversal) para encontrar las variables asociadas a la cantidad de unidades que compra un cliente,
el modelo podría ser empleado para responder la pregunta ¿cuánto compraría un nuevo cliente con
determinadas características? En el Capítulo 12 se discutirá el uso del modelo de regresión múltiple
para hacer predicciones. Si el modelo de regresión múltiple es estimado con series de tiempo (se
observa uno o varios objetos de estudio periodo tras periodo), entonces podrá ser empleado para
hacer pronósticos. Por ejemplo, si se cuenta con las ventas mensuales para muchos periodos y
el modelo encuentra que variables están asociadas a estas ventas mes tras mes, el modelo podría
responder la pregunta que ocurrirá en el futuro con las ventas. Con este tipo de modelos podemos
responder preguntas como: ¿cuánto es lo más probable que venda un producto el próximo año?
Finalmente, la analítica prescriptiva busca responder la pregunta: ¿qué necesito hacer? Este tipo
de analítica hace énfasis en el uso de técnicas de optimización para identificar cuál es la mejor
alternativa para minimizar o maximizar algún objetivo así como modelos que permitan simular
situaciones. El modelo de regresión múltiple pueden hacer parte de un análisis prescriptivo como se
discutirá más adelante.
La econometría es una disciplina que unifica las matemáticas, la estadística y la teoría económica
con el objetivo de entender cuantitativamente las relaciones económicas (Frisch, 1933). Ésta ha
desarrollado unas técnicas estadísticas que le han permitido convertirse en una rama de la estadística.
Si bien las técnicas que estudiaremos en este libro no son exclusivas de la econometría, la aplicación
del modelo de regresión múltiple a problemas de los negocios y la economía se conoce se reconoce
como una aproximación econométrica. Pero hay que tener cuidado y distinguir claramente las
herramientas de la econometría y la aproximación econométrica a los problemas, pues como científico
de datos emplearemos las herramientas de la econometría pero no la aproximación econométrica
para hacer validar los modelos teóricos de la ciencia económica.
5 Una serie de tiempo es una secuencia de datos que se producen en orden sucesivo a lo largo de un periodo de tiempo.
Un ejemplo, es el precio del dólar para los últimos 100 días es una serie de tiempo. Otro ejemplo de datos de serie de
tiempo son los datos de ventas mensuales, el precio mensual del producto y el gasto en publicidad mensual para los
últimos 60 meses.
30 Introducción
Teoría
Modelo
Teórico
Modelo
Econométrico
Predicciones
(pronósticos)
Estimación
Datos
pruebas
Evaluación
de aspectos
de la
Inferencia realidad
Estadística
Para lograr su objetivo, la econometría emplea una ruta metodológica que parte de un modelo teórico;
es decir, de una formulación matemática de alguna teoría, como se muestra en la Figura 1.5.
En un siguiente paso, el econometrista estima el modelo usando métodos estadísticos que implican
supuestos explícitos e implícitos y datos reales. Si alguno de los supuestos del modelo no se
cumple, el econometrista debe corregir el modelo al especificar adecuadamente el término de error
o solucionando el problema que está generando la violación del supuesto. Esto se hace para que
la herramienta estadística (econométrica) se comporte bien y permita tener confiabilidad en los
1.3 Aproximación econométrica vs los científicos de datos 31
resultados6 .
Una vez el econometrista tiene el modelo estadístico adecuado, procede a comprobar estadística-
mente el cumplimiento o no de las restricciones planteadas por la teoría. Si el modelo estimado
refleja el comportamiento real adecuadamente, el econometrista pues emplea las estimaciones para
hacer predicciones y evaluaciones de los aspectos de la realidad relevantes; en caso contrario, el
econometrista deberá empezar el proceso nuevamente, buscando un modelo teórico que explique
adecuadamente las relaciones bajo estudio.
Sin embargo, la aproximación del científico de datos es diferente, si bien la herramienta (el modelo de
clásico de regresión múltiple ) es la misma. En la ciencia de datos no se cuenta con una teoría detrás,
pero sí con una cantidad relativamente grande de variables candidatas a ser parte del mecanismo que
realmente genera los datos que observamos (el Data Generating Process o DGP7 ). Es decir, tenemos
datos y no es de interés probar un modelo teórico. En otras palabras, el científico de datos está
interesado en encontrar patrones de comportamiento que permita responder preguntas de negocio y
no realizar ciencia en su sentido estricto. Es decir, no es tarea del científico de datos validar modelos
teóricos y no tiene como motivación del ejercicio empírico comprobar el cumplimiento o no de una
teoría que presente hipótesis. La segunda ruta metodológica que es la que adopta el científico de
datos, y menos tradicional en la econometría, implica partir de los datos para encontrar qué variable
explican la variable dependiente. En otras palabras, en esta aproximación se interpreta el modelo
econométrico como una aproximación al verdadero DGP.
6 En el Capítulo 2 discutiremos que significa que los resultados sean confiables y cuáles son los supuestos de esta
herramienta.
7 El DGP es la “fórmula” o ley de movimiento que muestra la relación que existe entre las variables explicativas y la
De acuerdo a esta segunda ruta metodológica, que se ilustra en la Figura 1.6, el modelo econométrico
usa variables aleatorias disponibles en las bases de datos para especificar una descripción de un
mecanismo que genera los datos 8 .
En la práctica, el científico de datos empleará todas las variables disponibles para explicar la variable
de interés y dejará que sean los datos quienes “hablen” para así detectar cuáles variables hacen parte
o no del DGP.
No obstante, debido a que es imposible tener variables para todas las características de la realidad9 ,
el modelo estimado por esta ruta metodológica será en todo caso una simplificación de la realidad. A
lo largo de este libro, nos concentraremos en el área punteada de la Figura 1.6.
8 Cuando el modelo teórico es el DGP y, por ello, el modelo econométrico difiere del teórico únicamente por razones
puramente aleatorias, las dos metodologías coinciden.
9 Es decir, todas las variables asociada al mecanismo que genera los datos.
Parte I
Explicar en sus propias palabras cuáles son los supuestos del Teorema de Gauss-Markov
Explicar en sus propias palabras cuáles son las propiedades de lo estimadores MCO
Estimar un modelo lineal con más de una variable explicativa empleando R .
Identificar los coeficientes estimados por R.
Transformar y crear variables en R.
Interpretar los componentes de las tablas de salida que proporciona R.
36 Modelo de regresión múltiple
2.1 Introducción
El científico de datos pocas veces se enfrenta con un problema bien definido en el que la teoría
pueda aplicarse directamente, ya sea por la disponibilidad de información para construir determinada
variable o porque el problema no se encuentra acotado. Así, típicamente el científico de datos se
encuentra enfrentado a un problema en el que la variable a explicar (variable dependiente) es clara y
existe un conjunto amplio de posibles variables explicativas. Antes de enfrentar ese problema un
poco más complicado, supongamos que contamos con un número reducido de variables explicativas.
Por ejemplo, supongamos que queremos responder la pregunta de negocio: ¿de qué dependen las
cantidades compradas de mi producto estrella Q? Y supongamos además que se cuenta con una base
de datos con las siguientes posibles variables explicativas: el precio del producto estrella px , el precio
de un producto idéntico de la competencia que puede sustituir nuestro producto psust , el precio de
un precio de un producto que acompaña (o complementa) el consumo de nuestro producto pcomp y
el nivel de actividad económica que puede ser una variable que aproxime el ingreso que tienen los
consumidores para comparar mi producto I. Así, la tarea del científico de datos será construir un
modelo que cumpla la tarea de regresión que le permita hacer analítica diagnóstica . Estas variables
disponibles podrían permitir inicialmente emplear un modelo que permita representar las cantidades
compradas en función de las variables explicativas disponibles. En otras palabras,
Naturalmente, no hay nada que permita saber a priori (antes de usar los datos) si realmente son todas
estas 4 variables importantes para explicar a Q. En el Capítulo 3 se discutirá como determinar con
los datos cuáles variables afectan y cuáles no a la variable dependiente.
Por otro lado, es importante determinar la forma de la función Qx (). Por ejemplo, la forma funcional
puede ser
1
Qx (px , pcomp , psust , I) = γ pαx 0 + + ln (ϕ psust ) + α0 I (2.2)
pcomp β +C
o
Aún más, el carácter de las relaciones funcionales expresadas en (2.2) y (2.3) es determinístico1 .
Estas dos expresiones corresponden a modelos matemáticos (exactos) y no estadísticos.
Las respuestas humanas individuales a diferentes incentivos no son exactas y por tanto no son
predecibles con total certidumbre; aunque se espera que en promedio sí lo sean.
En general, es imposible pretender que un modelo recoja todas y cada una de las variables
que afectan directamente una variable, pues precisamente un modelo económico es una
simplificación de la realidad y por tanto omite detalles de ella. Es importante anotar que en
algunas ocasiones las variables que se omiten son conocidas, pero el investigador no cuenta
con información para medir esas variables, por tanto deben ser omitidas.
La variable dependiente puede estar medida con error, pues en la práctica los agregados
económicos normalmente son estimados a partir de muestras. El error de medición en la
variable dependiente estará recogido en el término de error, pues nuestro modelo no pretenderá
explicar el error de medición sino el comportamiento promedio del agregado económico.
En algunas oportunidades las relaciones entre variables enunciadas por la teoría económica
son producto de un esfuerzo de resumir un conjunto de decisiones individuales. Así como las
decisiones individuales son diferentes de individuo a individuo, cualquier intento por estimar
estas relaciones a nivel agregado será simplemente una aproximación; por tanto la diferencia
entre esta aproximación y el valor real será atribuida al término de error.
Entonces, todo modelo econométrico poseerá una parte aleatoria y una que no lo es (parte determinís-
tica). Por ejemplo, si se considera la relación funcional expresada en la ecuación 2.1, el correspondien-
te modelo estadístico corresponderá a Q = Qx (px , pcomp , psust , I) + ε, donde Qx (px , pcomp , psust , I)
corresponde a la porción determinística del modelo y ε representa el término aleatorio de error.
En la práctica, los científicos de datos adoptan como estrategia tomar una primera aproximación a las
relaciones funcionales por medio de relaciones lineales (como en la expresión (2.3)) o linealizables.
En este libro concentraremos nuestra atención en los modelos lineales. Es decir, modelos de la
siguiente forma:
Yi = β0 + β1 X1i + β2 X2i + εi . (2.4)
En este modelo podemos distinguir varios componentes: la variable dependiente (Yi ), las variables
independientes (X1i y X2i ), los coeficientes o parámetros4 (β0 , β1 y β2 ), y el término de error (εi ).
Adicionalmente, se presenta un subíndice i que representa que dicha relación se cumple para cualquier
observación i que se realice. Típicamente i se encuentra entre 1 y n (el tamaño de la muestra); es
decir, i = 1, 2, . . . , n. Es importante anotar que normalmente cuando se emplean datos de series de
tiempo el subíndice i es cambiado por una t. En otras palabras típicamente se emplea el subíndice i
para cuando se cuenta con datos de corte trasversal, dado que i representa a los individuos que están
bajo estudio en un período determinado. Y cuando se emplean series de tiempo, el subíndice que se
emplea es t que representa el periodo (el tiempo) de la observación.
Antes de entrar en detalle, es importante aclarar qué se entiende por modelo lineal en este contexto.
Para ser más precisos, cuando nos referimos a un modelo de regresión lineal, estamos hablando de
un modelo que es lineal en sus parámetros y el término de error es aditivo. En otras palabras, los
4 Los parámetros corresponden a números (constantes) que describen la relación entre las variables independientes y la
variable dependiente. Tipicamente se expresan con letras griegas. Más adelante se ampliará esta idea.
38 Modelo de regresión múltiple
es un modelo (estadístico) lineal, pues es lineal en los parámetros β T = (β0 , β1 , β2 ); en este caso,
estos representan un intercepto y pendientes (ver Ejemplo 2.2.1), y el término de error es aditivo. Por
otro lado, un modelo como
no es un modelo lineal, pues el modelo no es lineal respecto a β1 , el cual representa una potencia.
Ahora bien, es importante resaltar que un modelo econométrico puede ser lineal en los parámetros y
tener un término aleatorio aditivo, pero no representar una línea recta, un plano o sus equivalentes en
dimensiones mayores. En estos casos, aunque no se trata de un modelo lineal desde el punto de vista
matemático, aún tenemos un modelo estadístico lineal (Ejemplo 2.1).
Supongamos la siguiente relación entre una variable dependiente (Yi ) y dos variables explicati-
vas (X1i , X2i ):
Yi = β0 + β1 X1i + β2 X2i + εi , (2.7)
donde εi es un término aleatorio de error. Entendamos primero la naturaleza de esta relación
funcional omitiendo el término aleatorio de error. En la Figura 2.1 se puede observar la función
Y = β0 + β1 X1 + β2 X2 con β0 = −3, β1 = 2 y β2 = 4.
Figura 2.1. Parte no estocástica del modelo lineal 2.7 con β0 = −3, β1 = 2 y β2 = 4
x2
x1
Figura 2.2. Parte no estocástica del modelo lineal 2.7 con β0 = −3, β1 = 2 y β2 = 4
con ejes rotados.
x2
Suponga la siguiente relación entre una variable dependiente (Yi ) y dos variables
explicativas(X1i , X2i ):
1
Yi = α1 + α2 ln (X1i ) + α3 + εi , (2.8)
X2i
donde εi es un término aleatorio de error. En este caso, tenemos que el modelo es lineal en los
parámetros α1 , α2 y α3 , además el error es aditivo; por tanto este modelo es estadísticamente
lineal.
No obstante, el modelo no representa un plano (no es lineal desde el punto de vista matemático),
como se puede observar en la Figura 2.3 (en la cual se ha omitido el término de error). Es
α2
importante anotar que en este caso α2 no es una pendiente, pues ∂∂Y X1 = X1 ; para α3 ocurre
algo similar.
x1
x2
w1
w2
Fuente: Elaboración propia
X1i
1 ∂Yi α2 ∂Yi α2
plicando a ambos lados por 100 , obtenemos ∂ X1i = 100 . Es decir ∆ %X1i = 100 . Por tanto, la
X ×100
1i
interpretación de α2 en términos de X1 es la siguiente: cuando X1 aumenta en uno por ciento,
α2
entonces Yi aumentará en 100 unidades.
Existen otros modelos especiales que no son lineales en sus parámetros, pero mediante reparametriza-
ciones7 se convierten en modelos lineales. Estos se conocen con el nombre de modelos linealizables
(o modelos intrínsecamente lineales) y también pueden ser estimados por los mismos métodos de
estimación de un modelo lineal.
7 Una reparametrización es un cambio de nombre de variables y/o parámetros del problema que mantiene la naturaleza
de la relación inalterada.
42 Modelo de regresión múltiple
Una vez se cuenta con un modelo lineal que representa la relación entre diferentes variables ex-
plicativas y la variable dependiente, se deseará conocer los valores de los parámetros del modelo.
2.2 El modelo de regresión múltiple 43
Para lograr este fin, se recopilan n observaciones de las variables explicativas y de la dependiente.
En general, un modelo lineal múltiple para el cual se cuenta con n observaciones y k − 1 variables
explicativas está dado por:
Para este tipo de modelos, los datos pueden corresponder a dos tipos de estructura. Una estructura en
al que se observan n individuos en el mismo período. A esta estructura se le conoce como datos de
corte trasversal y es equivalente a tomar una foto de los n individuos. La segunda estructura posible
es una serie de tiempo, en la que se observa un individuo (objeto de estudio) periodo tras periodo. En
este caso es común emplear el subíndice t para denotar cada periodo que va desde el primero hasta
el T . Para simplificar, en este libro siempre nos referiremos a n como el tamaño de la muestra, ya sea
que empleemos datos de series de tiempo o corte transversal. Es decir, en este libro tendremos que n
representará lo mismo que T . Existe una tercera estructura de datos que combina las dos anteriores,
muchos individuos que se siguen en el tiempo. Esta última estructura se conoce como datos de panel.
Las técnicas que se presentan en este libro solo aplican para las dos primeras estructuras de datos,
pero se pueden extrapolar fácilmente para la estimación de modelos con datos de panel.
Regresando a la notación, para simplificar y ahorrar espacio, escribiremos el modelo 2.13 de una
forma más abreviada, de tal modo que sólo describamos la observación i-ésima del modelo. Es decir:
para i = 1, 2, ..., n.
Otra forma de expresar el mismo modelo 2.14 de manera aún más abreviada es empleando matrices.
Sean:
y1 β1 1 X21 X31 · · · Xk1 ε1
y2 β2 1 X22 X32 · · · Xk2 ε2
y= β = X = ε =
.. .. .. .. .. .. .. ..
. . . . . . . .
yn n×1
βn k×1
1 X2n X3n · · · Xkn n×k
εn n×1
y X2 , X3 , ..., Xk
Variable dependiente Variables independientes
Variable explicada Variables explicativas
Variable de respuesta Variables de control
Variable predicha Variables predictoras
Regresando Regresores
Fuente: Elaboración propia
2.2.1 Supuestos
Es importante estudiar en detalle el vector de errores ε. En general, esperaremos que el error no sea
predecible y por tanto trataremos de evitar cualquier componente determinístico o comportamiento
sistemático del error. Así, asumiremos que en promedio el término de error es cero. En otras palabras,
el valor esperado de cada término de error es cero8 . Formalmente, asumiremos que:
E [ε] = 0 (2.16)
E [εi ] = 0.
Otro supuesto importante para garantizar que los errores son totalmente impredecibles es que cada
uno de los errores sea linealmente independientes de los otros. En caso de existir dependencia lineal,
habrá una forma de predecir errores futuros a partir de la historia de los errores. Por tanto, se asumirá
que
E [εi ε j ] = E [εi ] E [ε j ] = 0, (2.17)
esto equivale a:
Cov (εi , ε j ) = E [εi ε j ] − E [εi ] E [ε j ] = 0.
A este supuesto se le conoce como el supuesto de no autocorrelación entre los errores.
Finalmente, asumiremos que cada uno de los errores tiene la misma varianza, es decir se asumirá
que:
Var [εi ] = σ 2 (2.18)
para todo i = 1, 2, ..., n. Este supuesto se conoce como homoscedasticidad.
media cero,
independencia lineal entre los errores y
8 En
caso que el modelo incluya un intercepto, cualquier componente determinístico del error es capturado por el
intercepto.
2.2 El modelo de regresión múltiple 45
varianza constante.
Estos supuestos se acostumbran resumir de diferentes formas; por ejemplo, se pueden resumir los
tres supuestos expresando que los errores están linealmente independientemente distribuidos con
media cero y varianza constante, denotado por
εi ∼ l.i.d. 0, σ 2 .
ε ∼ 0, σ 2 In ,
donde
Var [ε1 ] Cov (ε1 , ε2 ) · · · Cov (ε1 , εn )
Cov (ε2 , ε1 ) Var [ε2 ] · · · Cov (ε2 , εn )
Var [ε] =
.. .. .. ..
. . . .
Cov (εn , ε1 ) Cov (εn , ε2 ) ··· Var [εn ]
σ2
0 1 0
Var [ε] =
.. =σ
2 .. = σ In
2
(2.19)
. .
0 σ2 0 1
Por otro lado, asumiremos que la información aportada por cada una de las variables explicatórias al
modelo es relevante. Es decir, no habrá ningún tipo de relación lineal entre las variables explicativas;
pues en caso que una variable de control se pudiera expresar como una combinación lineal de otras
variables explicativas, la información de la primera variable sería irrelevante pues ya está contenida
en las otras. Así, asumiremos que X2 , X3 , ..., Xk son linealmente independientes. A este supuesto
también se le conoce como el supuesto de no multicolinealidad ( o no colinealidad) de las variables
explicativas
También, asumiremos que X2 , X3 , ..., Xk son variables no estocásticas, pues se espera que el proceso
de muestreo implícito en el modelo y = Xβ + ε debe poderse repetir numerosas veces y las variables
exógenas no deben cambiar pues corresponden al diseño de nuestro “experimento”. Así, se asumirá
que X2 , X3 , ..., Xk son determinísticas9 (no aleatorias) y linealmente independientes entre sí.
Otros supuestos implícitos en nuestro modelo de regresión lineal y = Xβ + ε es que hay en efecto
una relación lineal entre y y X2 , X3 , ..., Xk . Asimismo, se supone que esta relación es estable entre
observaciones; es decir, los parámetros del vector β son constantes a lo largo de la muestra.
Finalmente, cabe mencionar que desde el punto de vista estadístico el modelo de regresión no tiene
una connotación de causalidad asociada a él. Así, para el método estadístico es igualmente válido
considerar una de las variables explicativas como variable dependiente y la variable dependiente
como una variable explicativa.
9 Elsupuesto de que las variables explicativas son determinísticas es un supuesto que se puede levantar sin muchas
implicaciones. Pero por simplicidad, emplearemos este supuesto a lo largo del libro, a menos que se exprese lo contrario.
46 Modelo de regresión múltiple
Supuestos del modelo de regresión múltiple
Consideremos un ejemplo muy sencillo como el que se presenta en la Figura 2.5 donde tenemos una
muestra de n = 7. En este caso se recopiló información para la variable dependiente y y para una
variable explicativa x. Cada punto azul representa una observación (un pareja de y y x).
10 Si el lector no se encuentra familiarizado o requiere un repaso con el lenguaje matricial y vectorial se recomienda
revisar el Apéndice de álgebra matricial que se presenta en el Capítulo 14 al final del libro. Así mismo, en el Capítulo 15
se presenta una revisión de los conceptos estadísticos necesarios para comprender este libro.
2.2 El modelo de regresión múltiple 47
x
Fuente: Elaboración propia
En este caso, suponiendo la linealidad, el modelo estadístico con el que queremos describir la
relación entre estas dos variables será:
yi = β1 + β2 xi + εi . (2.20)
Así, el objetivo del científico de datos es encontrar el vector β que está formado por el intercepto
(β1 ) y la pendiente (β2 ). En últimas encontrar el intercepto y la pendiente implica trazar una linea
recta que aproxime todos los puntos de la Figura 2.5.
Existen muchas posibles rectas que podemos trazar. En la Figura 2.6 se muestran numerosas opciones.
Cada línea corresponde a un conjunto “adivinado” (estimado) de intercepto y pendiente. La pregunta
natural es ¿cuál de esas pendientes es la adecuada?.
48 Modelo de regresión múltiple
Figura 2.6. Posibles líneas que se pueden trazar para una muestra observada de y y x
y
x
Fuente: Elaboración propia
Una manera muy común de aproximarse a encontrar el “mejor” valor para los coeficientes pobla-
cionales desconocidos (β ) es minimizar la suma de los errores que produce el modelo elevados al
cuadrado;11 este método se conoce con el nombre de Mínimos Cuadrados Ordinarios (MCO, o en
inglés OLS). Intuitivamente, el método de MCO minimiza la suma de la distancia entre cada una de
las observaciones de la variable dependiente (y) y lo que el modelo “predice” (ŷ = Xβ̂ ).
En la Figura 2.7 se presenta con lineas rojas cada una de las distancias entre el valor observado de la
variable dependiente yi y el valor que predice el modelo ŷ1 para un valor determinado de xi . En otras
palabras, la líneas rojas se presentan cada uno de los errores de modelo estimado. La linea (en negro)
se ha trazado minimizando la suma al cuadrado de cada una de estas distancias. De todas las lineas
11 Elevaral cuadrado el error tiene dos intenciones: 1) evitar que errores positivos y negativos se cancelen y 2) penalizar
errores más grandes de manera más fuerte que errores pequeños.
2.2 El modelo de regresión múltiple 49
posibles (como las presentadas en la Figura 2.6), esta linea es la única que minimiza esa suma de
errores al cuadrado.
Figura 2.7. Ejemplo de la linea trazada con el método MCO para una muestra obser-
vada para dos variables (y y x)
y
x
Fuente: Elaboración propia
Esta idea de minimizar el cuadrado del error del modelo se puede ver graficado en la Figura 2.8.
Las áreas de los cuadrados sombreadas en rojo representan cada uno de los errores del modelo
(ε̂i ) elevado al cuadrado. El tamaño del lado del cuadrado es ε̂i y por tanto el área del cuadrado
corresponde a ε̂i2 . El método MCO lo que hace es encontrar la linea que minimiza la suma de las
áreas del cuadrado; cualquier otra linea que se trace tendrá una suma de las áreas de los respectivos
cuadrados mayor a la del método MCO.
50 Modelo de regresión múltiple
Figura 2.8. Ejemplo de la suma de los cuadrados de los errores que implica el método
MCO
Es decir, minimizando el error del modelo cuadrado del modelo (la distancia entre el valor real y el
estimado por el modelo). Esto es equivalente a:
h iT h i
Min y − Xβ̂ y − Xβ̂ (2.22)
β̂
donde Xβ̂ corresponde al vector de valores estimados por el modelo para la variable dependiente; en
2.2 El modelo de regresión múltiple 51
otras palabras, el modelo estimado. Así, el estimador de MCO del vector de coeficientes β es:12
−1
β̂ = XT X XT y. (2.23)
Por otro lado, el estimador de MCO para la varianza del error σ 2 es:
n
∑ ε̂i2
i=1 ε̂ T ε̂ yT y − β̂ T XT y
s2 = σ̂ 2 = = = (2.26)
n−k n−k n−k
El estimador de MCO de β es el estimador lineal insesgado con la mínima varianza posible, por
esto, el estimador de MCO se conoce como el Mejor Estimador Lineal Insesgado (MELI).13 Este
resultado se conoce como el Teorema de Gauss-Markov (ver recuadro abajo). La propiedad de que
el estimador de MCO de β sea insesgado implica que en promedio el estimador obtendrá el valor
real β , Formalmente: h i
E β̂ = β . (2.29)
Y la segunda propiedad que tiene el estimador MCO de β se denomina eficiencia. Es decir, que tiene
la mínima varianza posible cuando se compara con todos los otros posibles estimadores lineales. En
12 En el anexo (ver sección 2.4) al final de este capítulo se presenta la derivación de ésta fórmula.
13 Una demostración de este resultado se presenta en el anexo (Ver sección 2.4) al final de este capítulo.
52 Modelo de regresión múltiple
otras palabras, estas dos propiedades implican que el estimador MCO de β es el mejor estimador
lineal disponible, pues en promedio no se equivoca y cuando éste se equivoca tiene la mínima
desviación posible.
Teorema de Gauss-Markov
2.3 Práctica en R
En todos los capítulos de este libro, encontraras ejercicios que serán resueltos paso a paso mediante
el uso de R ( R Core Team, 2018) . En este capítulo explicaremos detenidamente desde cómo cargar
los datos, hasta cómo estimar un modelo por MCO.
Para este ejercicio, nos enfrentamos a una situación en la que un gerente de mercadeo quiere
determinar cuál es el efecto de aumentar en un dólar el precio del azúcar sobre la demanda de ésta,
el principal producto de esta organización. En otras palabras, la pregunta de negocio es ¿qué efecto
tiene un aumento de un dólar sobre la demanda de azúcar. Esta pregunta de negocio claramente
implica emplear analítica diagnóstica y una tarea de estimar regresiones .
Cuando tenemos una pregunta de negocio a responder, de inmediato tenemos qué preguntarnos que
datos tenemos. En este caso tenemos a nuestra disposición una base de datos relativamente limitada.
Contamos con datos mensuales para los últimos 60 meses14 de las siguientes variables:
al canal distribuidor o minorista. El otro término asociado es el Sell-out que corresponde a las ventas que se hacen al
consumidor final despues de pasar por el canal de distribución.
2.3 Práctica en R 53
Con los datos disponibles podemos proceder a construir un primer posible modelo candidato a
describir el comportamiento de las cantidades demandadas. El modelo sería:
De esta manera dados los datos disponibles en el archivo adjunto, se desea estimar el modelo 2.30.
Y para poder responder la pregunta de negocio, será necesario concentrar nuestra atención sobre
β2 que representa el efecto de un aumento de un dolar en el precio de la organización por libra del
azúcar sobre su demanda. Noten que es importante incluir más variables que pt en el modelo de
regresión, pues como se discutió en la sección 1.3 nuestro primer objetivo es encontrar el DGP. Y
con este DGP responder las preguntas de negocio. Por otro lado, otra razón técnica para tratar de
emplear todas aquellas variables que afectan a la variable dependiente es que esto minimizará el
tamaño del error de nuestro modelo.
Recuerde que usted puede importar los datos de un archivo csv (archivo delimitado por comas)
utilizando la función read.csv() del paquete base de R. Esta función como mínimo necesita los
siguientes argumentos:
donde:
file: es el nombre del archivo y su ruta que se debe poner entre comillas.
header : es un operador lógico que le dice a la función si la primera fila del archivo csv
contiene el encabezado con el nombre de las variables. Por defecto header = TRUE se espera
que la primera fila del archivo contenga el nombre de las variables.
sep: Es el delimitador de los campos que emplea el archivo csv. Por defecto, se espera una
coma.
16 Por razones de confidencialidad, los datos han sido modificados de sus valores originales.
54 Modelo de regresión múltiple
Para asegurarse de que R haya leído sus datos correctamente, resulta importante mirar qué es lo
que efectivamente el programa guardó en el objeto que hemos denominado DatosCap1. Para ello
podemos ver las primeras filas del objeto y la clase de objeto de la siguiente manera:
head(DatosCap1)
## X Q p pcomp IA
## 1 1 529.904 8.81 8.40 1.8
## 2 2 1041.318 7.46 10.85 1.7
## 3 3 874.360 9.14 6.52 3.6
## 4 4 821.920 8.68 11.77 2.7
## 5 5 953.396 7.27 10.20 2.5
## 6 6 651.249 8.67 5.54 1.1
class(DatosCap1)
## [1] "data.frame"
Noten que el objeto DatosCap1 fue leído como un data.frame que contiene una primera columna
con un índice (esta fue denominada X), y cuatro columnas más que contienen las variables Q, p,
pcomp e IA. Procedamos a eliminar la primera columna que no serán necesarias. Y constatemos
que las variables que nos quedan en el data.frame son numéricas. Esto se puede hacer de diferentes
maneras.
head(DatosCap1)
## Q p pcomp IA
## 1 529.904 8.81 8.40 1.8
## 2 1041.318 7.46 10.85 1.7
## 3 874.360 9.14 6.52 3.6
## 4 821.920 8.68 11.77 2.7
## 5 953.396 7.27 10.20 2.5
## 6 651.249 8.67 5.54 1.1
apply(DatosCap1, 2, class)
## Q p pcomp IA
## "numeric" "numeric" "numeric" "numeric"
str(DatosCap1)
2.3 Práctica en R 55
Recordemos que se desea estimar el modelo presentado en 2.30. Antes de estimar el modelo, una
buena práctica cuando se tiene pocas variables en la base de datos es graficar las variables y su
relación con la variable dependiente. Típicamente se emplea un diagrama de dispersión, en nuestro
caso tendremos.
plot(DatosCap1$p, DatosCap1$Q, xlab = "precio (dólares por libra)",
ylab = "Cantidades de azúcar (ton)")
1200
1000
Cantidades de azúcar (ton)
800
600
400
5 6 7 8 9 10
plot(DatosCap1)
1200
Q
800
600
400
10
9
8
p
7
6
5
12
10
pcomp
8
6
4
4.0
3.0
IA
2.0
1.0
Otra opción es emplear los paquetes ggplot2 (Wickham, 2016) y GGally (Schloerke y col., 2021)
para tener una visualización más agradable como la que se presenta en las Figuras 2.9 y 2.10.
library(ggplot2)
library(GGally)
ggpairs(DatosCap1)+theme_minimal()
Q p pcomp IA
0.0020
0.0015 Corr: Corr: Corr:
Q
0.0010
−0.599*** 0.323* 0.495***
0.0005
0.0000
10
9
8 Corr: Corr:
p
7 0.028 0.097
6
5
12
10
pcomp
Corr:
8
6
0.157
4
4
3
IA
2
1
400 600 800 1000 1200 5 6 7 8 9 10 4 6 8 10 12 1 2 3 4
10
9
Cantidades de azúcar (ton)
5
400 600 800 1000 1200
precio (dólares por libra)
Fuente: Elaboración propia
58 Modelo de regresión múltiple
La figura 2.10 nos sugiere la existencia de una relación lineal por lo menos entre estas dos variables.
Procedamos a estimar el modelo.
Para estimar este modelo por el método de mínimos cuadrados ordinarios la forma más simple es
utilizando la función lm() . Esta función se utiliza para ajustar modelos lineales y hace parte del
paquete stats que a su vez hace parte del núcleo de paquetes pre instalados en R, motivo por el cual
éste ya se encuentra cargado. Los dos principales argumentos de la función lm son dos: el modelo a
estimar denominado fórmula y los datos que se emplearán. En nuestro caso:
## [1] "lm"
R1
##
## Call:
## lm(formula = Q ~ p + pcomp + IA, data = DatosCap1)
##
## Coefficients:
## (Intercept) p pcomp IA
## 1026.37 -77.62 19.27 100.46
En este caso hemos guardado en el objeto R1 los resultados de estimar 2.30. Este objeto será de
clase lm. Noten que se empleo la virgulilla (palito de la eñe) para representar el signo igual de la
expresión 2.30, también es importante anotar que no fue necesario escribir todos los parámetros
deseados, R por defecto incluye un intercepto y los correspondientes coeficientes (elementos del
vector β ) que representan pendientes. Para observar los resultados del modelo estimado se puede
emplear la función summary() de la siguiente manera:
summary(R1)
##
## Call:
## lm(formula = Q ~ p + pcomp + IA, data = DatosCap1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -196.09 -50.92 -16.91 69.17 214.16
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1026.371 76.634 13.393 < 2e-16 ***
2.3 Práctica en R 59
Otras formas de expresar la fórmula que llevarán al mismo resultado (compruébelo) son:
La última forma de expresar la fórmula con un punto implica emplear todas las variables que se
encuentran en la base de datos (diferentes a la que se seleccionó para ser la dependiente) como
variables explicativas. Dado que en nuestro caso solo tenemos las tres variables explicativas, por eso
el resultado es el mismo que en los casos anteriores.
Sin embargo, si lo que quiere es que el resultado de la estimación se muestre como la tabla que
regularmente se utiliza en la presentación de documentos y está empleando LATEX, usted puede
utilizar el paquete stargazer (Hlavac, 2018) . Una vez instalado el paquete puede utilizar la función
del mismo nombre para obtener la tabla en formato LATEX.
library(stargazer)
stargazer(R1, t.auto = TRUE, p.auto = TRUE, title = "Modelo estimado por MCO",
label = "res2.Hetero", header = FALSE, table.placement = "H",
notes.align = "l")
60 Modelo de regresión múltiple
Dependent variable:
Q
p −77.624∗∗∗
(8.195)
pcomp 19.270∗∗∗
(5.177)
IA 100.458∗∗∗
(13.606)
Constant 1,026.371∗∗∗
(76.634)
Observations 60
R2 0.734
Adjusted R2 0.719
Residual Std. Error 91.273 (df = 56)
F Statistic 51.417∗∗∗ (df = 3; 56)
Así, el resultado implica que por cada dólar por libra adicional en el precio del producto la demanda
caerá en promedio en 77.62 toneladas mes.
Para obtener la matriz de varianzas y covarianzas del intercepto y las pendientes, que son otras
cantidades que desconocíamos, se puede emplear la función función vcov() de la siguiente manera:
vcov(R1)
q
\
Var (β2 ) = Sβ̂ = 8,2 (2.37)
2
q
\
Var (β3 ) = Sβ̂ = 5,18 (2.38)
3
q
\
Var (β4 ) = Sβ̂ = 13,61 (2.39)
4
Como se discutirá en el próximo capítulo, del Cuadro 2.2 podemos concluir que el coeficiente
asociado al precio es significativo ya que el estadístico t es relativamente alto (y el valor p asociado
a este es muy pequeño). Así, este coeficiente es estadísticamente diferente de cero. Esto hace que
nuestra respuesta a la pregunta de negocio sea correcta. Pero esto se discutirá en detalle en el próximo
capítulo en el que discutiremos la inferencia a partir del modelo de regresión múltiple.
Ejercicios
2.1 Demuestre que los coeficientes de una función Cobb-Douglas como la representada en 2.10
se puede interpretar como elasticidades.
2.2 El gobierno de una pequeña República está reconsiderando la viabilidad del transporte
ferroviario, para lo cual contrata un estudio que determine un modelo que permita comprender
de una forma más precisa el comportamiento de los ingresos del sector (I medidos en millones
de dólares). Un científico de datos, plantea el siguiente modelo, dada la disponibilidad de datos
existente:
donde, CEt , CDt , LDiest , LEIt y Vt representan el consumo de electricidad medido en millones de
Kilovatios/hora, el consumo de diesel medido en millones de galones, el número de locomotoras
diesel en el país, el número de locomotoras eléctricas y el número de viajeros (medido en miles
de pasajeros) en el año t, respectivamente.
Para efectuar este estudio se cuenta con los datos disponibles en el archivo regmult.csv. Su misión
es estimar el modelo 2.40 empleando el método MCO y reportar sus resultados en una tabla.
Posteriormente, interprete cada uno de los coeficientes estimados.
62 Modelo de regresión múltiple
2.4 Anexos
Antes de encontrar las condiciones de primer orden y las de segundo orden para un mínimo, podemos
simplificar un poco el problema expresado en la ecuación 2.41. Así, tenemos que:
nh ih io
Min yT − β̂ T XT y − Xβ̂
β̂
T
Observen que yT 1×n Xn×k β̂k×1 = β̂k×1
T XT y
n×k 1×n
T XT
y además los productos β̂1×k k×n yn×1 y
yT 1×n Xn×k β̂k×1 son escalares, por tanto yT 1×n Xn×k β̂k×1 = β̂1×k
T XT
k×n yn×1 . Así, el problema 2.41
es equivalente a: n o
Min yT y − 2β̂ T XT y + β̂ T XT Xβ̂ (2.42)
β̂
La expresión 2.43 se conoce como las ecuaciones normales. Ahora, despejando β̂ , obtenemos:
Existe una relación lineal entre y y las variables en la matriz X que se puede representar por el
modelo lineal yn×1 = Xn×k βk×1 + εn×1
X2 , X3 , ..., Xk son no estocásticas y linealmente independientes (es decir X tiene rango completo
y es una matriz no estocástica)
El vector de errores ε tiene media cero, varianza constante y no autocorrelación. Es decir,
E [ε] = 0 y Var [ε] = σ 2 In
−1
Entonces el estimador de MCO, β̂ = XT X XT y, es insesgado y eficiente. En otras palabras, β̂ es
el Mejor Estimador Lineal Insesgado (MELI) para el vector de coeficientes poblacionales β .
Empleando el supuesto de que las variables explicativas son no estocásticas tenemos que,
h i −1
E β̂ = XT X XT E [y]
Y por tanto,
h i −1
E β̂ = XT X XT E [Xβ + ε]
h i −1 −1
E β̂ = XT X XT Xβ + XT X XT E [ε]
h i
E β̂ = β
Antes de continuar con la demostración del Teorema de Gauss-Markov, encontremos la varianza del
estimador de MCO. Es decir,
h i h −1 i
Var β̂ = Var XT X XT y
h i −1 −1 T
Var β̂ = XT X XT Var [y] XT X XT
h i
T
−1 T T
−1 T
Var β̂ = X X X Var [y] X X X
h i −1 −1
Var β̂ = XT X XTVar [y] X XT X
h i −1 −1
Var β̂ = XT X XTVar [Xβ + ε] X XT X
h i −1 −1
Var β̂ = XT X XTVar [ε] X XT X
h i −1 −1
Var β̂ = XT X XT σ 2 X XT X
h i −1 −1
Var β̂ = σ 2 XT X XT X XT X
h i −1
Var β̂ = σ 2 XT X
Ahora retornemos al Teorema de Gauss-Markov, para demostrarlo es necesario probar que este
estimador tiene la mínima varianza entre todos los posibles estimadores lineales insesgados de β .
h −1 i
Sin perder generalidad, consideremos otro estimador lineal cualquiera β̃ = XT X XT +C y. Si
h i
β̃ es insesgado, se debe cumplir que E β̃ = β . Es decir:
h i h −1 i
E β̃ = XT X XT +C E [y]
h i h −1 i h −1 i
E β̃ = XT X XT +C E [Xβ + ε] = XT X XT +C [Xβ + 0]
h i h −1 i
E β̃ = XT X XT Xβ +CXβ
h i
E β̃ = β +CXβ
Para que este estimador sea insesgado, tiene que cumplirse que CX = 0.
Como la condición CX = 0 para que β̃ sea insesgado tiene que cumplirse, entonces:
h i h −1 i
Var β̃ = σ 2 XT X +CCT
CCT es una matriz cuyos elementos en la diagonal principal serán positivos.19 (¿Por qué?) hAhora i
comparemos la varianza de nuestro estimador de MCO (β̂ ) con β̃ . Recuerden que Var β̂ =
−1 h i h −1 i
σ 2 XT X , adicionalmente observen que Var β̃ = σ 2 XT X +CCT no puede ser menor
−1
que σ 2 XT X , pues:
h i nh io
2 −1 T
Var β̃i = σ (XX)ii +CCii , donde Ai j corresponde al elemento en la fila i y columna
j de la matriz A, y
CCiiT es positivo.
h i nh io h i h i
Por tanto Var β̃i = σ 2 (XX)−1 ii +CC T
ii > Var β̂i = σ 2 (XX)−1 . En el mejor de los casos
ii
h i −1 −1
Var β̃ = σ X X2 T y eso sólo ocurre cuando C = 0. En este caso β̃ = XT X XT y = β̂ , es
decir la mínima varianza posible de un estimador lineal insesgado es igual a la varianza del estimador
MCO. Por tanto β̂ es MELI.
Como se discutió anteriormente, se tiene que los residuos estimados están definidos como
ε̂ = y − Xβ̂
XT ε̂ = 0 (2.44)
Para demostrar esta propiedad podemos partir de la definición de los residuos estimados. Es decir,
tenemos que: h i
XT ε̂ = XT y − Xβ̂ = XT y − XT Xβ̂
Por lo tanto,
XT ε̂ = XT y − XT y = 0
De esta propiedad se desprende un resultado muy interesante. Dado que esta propiedad implica que:
n n .n h
.
i
T
X ε̂ = ∑ X1i ε̂i ∑ X2i ε̂i .. ∑ Xki ε̂i = 00..0
i=1 i=1 i=1
Esta afirmación se puede demostrar fácilmente. Noten que en caso de tener intercepto el modelo, X
tendrá una columna de unos. Por ejemplo, X1i = 1 y se desprende que:
n
∑ ε̂i = 0. (2.45)
i=1
Este último resultado implica que la media del residuo estimado sea cero. En otras palabras:
n
∑ ε̂i
¯ˆε = i=1
= 0. (2.46)
n
Para demostrar esta propiedad, reescribamos de manera más conveniente los residuos estimados:
−1 T
ε̂ = y − Xβ̂ = y − X XT X X y
h −1 T i
ε̂ = I − X XT X X y.
−1 T
Ahora, definamos la matriz M = I − X XT X X . Es muy fácil mostrar (hágalo) que M es
idempotente y simétrica. Entonces, se tiene que los residuos estimados se pueden expresar de la
siguiente manera:
ε̂ = My = MXβ + Mε = Mε (2.48)
Es importante anotar que MXβ = 0, dado que
h −1 T i
MXβ = I − X XT X X Xβ = [Xβ − Xβ ] = 0.
E ε̂ T ε̂ = trace ε T Mε = trace Mε T ε .
Explicar en sus propias palabras porqué es necesario hacer inferencia sobre los valores
estimados
Explicar en sus propias palabras el significado de las métricas de bondad de ajuste de una
regresión múltiple
Realizar pruebas individuales y conjuntas sobre los coeficientes estimados de un modelo de
regresión empleando R.
Valorar mediante la salida de R la bondad estadística del modelo estimado.
Interpretar y calcular con R de una regresión múltiple.
70 Inferencia y análisis de regresión
3.1 Introducción
Adicionalmente, demostramos que si se supone que i) X2 , X3 , ..., Xk son fijas y linealmente indepen-
dientes, y ii) E [ε] = 0, Var [ε] = σ 2 In ; entonces el estimador de MCO es el mejor estimador lineal
insesgado.
Pero, antes de continuar es importante reconocer que la probabilidad de que el estimador de MCO
(β̂ ) para una muestra dada sea exactamente igual al valor poblacional es cero. Aunque esta última
afirmación parezca a primera vista algo contradictoria; si se reflexiona un poco tendrá más sentido.
Es imposible “adivinar” correctamente el valor real (con todos los decimales posibles) a partir de un
solo intento, cuando el verdadero valor pertenece a un conjunto infinito de valores.
Te debes estar preguntando: si eso es cierto, entonces ¿para qué empleamos estos estimadores si
dada una muestra no hay chance que el estimador sea igual al valor real? La respuesta es clara, como
se demostró en el capítulo anterior, en promedio el estimador de MCO es igual al valor poblacional
(insesgado); por tanto, si recolectamos un número lo suficientemente grande de muestras podremos
encontrar el valor promedio del estimador. Pero evidentemente en la práctica no nos podemos dar el
“lujo” de tener más de una muestra para la población en estudio.
Es ahí donde la teoría estadística llega al auxilio del científico de datos. Si bien sabemos que un
valor estimado a partir de una muestra tiene una probabilidad de cero de acertar el valor real, si
podemos aumentar la certidumbre de nuestra estimación si conocemos la dispersión y la distribución
del estimador.
Antes de continuar hagamos un ejercicio para aclarar este punto. Realicemos el siguiente experimento
de simulación. Supongamos que se cuenta con el siguiente DGP conocido:
Yi = 1 + 5X2i + εi
Ahora supongamos que un científico de datos trata de encontrar ese DGP para lo cual cuenta con
3.1 Introducción 71
observaciones para dos variables explicativas: X2i y X3i . (Esta última variable sabemos que no
afecta a Yi pero el científico de datos no lo sabe).
Uno esperaría que al correr una regresión de Yi en función de X2i y X3i y un intercepto, el coeficiente
que acompaña X2i debería ser igual a 5 y el que acompaña a X3i debería ser cero. Veamos si esto
ocurre así o no.
Generemos inicialmente una muestra de tamaño 100 (n = 100) del DGP real y además generaremos
la variable X3i . El primer paso será generar las variables explicativas. Esto lo haremos, generando
números aleatorios de una distribución uniforme entre 2 y 2. Esto lo podemos hacer con la función
runif() del paquete base de R. Esta función tiene como argumentos el número de números aleatorios
que se quiere generar ( n), el valor mínimo que puede tomar el valor aleatorio que se generará (min)
y el valor máximo (max).
# se fija una semilla
set.seed(123456)
# se crea la variable explicativa X2
X2 <- runif(n = 100, min = -2, max = 2)
Noten que estamos empleando la función set.seed() . Esta función genera una semilla aleatoria
(random seed en inglés) fija. La semilla aleatoria es un número empleado para inicializar un algoritmo
generador de números aleatorios en los computadores. Esto garantiza que siempre que se genere un
número aleatorio sea el mismo. De hecho los números aleatorios generados por los computadores no
son realmente aleatorios, pues dependen de una función determinística que simula la aleatoriedad que
podemos encontrar en al naturaleza. Por eso los números aleatorios generados por un computador se
conocen como números pseudoaleatorios.
Regresando a nuestro experimento, ahora generemos el error del modelo. Supongamos que éste fue
generado por una distribución normal con media cero y desviación estándar 3. Es decir,
εi ∼ N(0, 32 )
Los 100 errores que siguen esta distribución los podemos simular empleando la la función rnorm()
del paquete base de R. Esta función tiene como argumentos el número de números aleatorios que se
quiere generar (n), la media (mean) y la desviación estándar (sd).
# se crea el término de error
error <- rnorm(100, 0, 3)
Noten que hemos generado 100 observaciones para Yi y otras 100 para X2i . Para completar nuestro
experimento falta generar X3i . Hagamos esto y construyamos un data.frame que contenga todas las
variables.
72 Inferencia y análisis de regresión
Antes de continuar grafique los datos generados y encontrará una visualización similar a la Figura
3.1.
10
5
Y
−5
−10
−2 −1 0 1 2
X2
Fuente: Elaboración propia
Yi = β1 + β2 X2i + β3 X3i + εi
β̂1 = 1
3.1 Introducción 73
β̂2 = 5
β̂3 = 0
Estimemos el modelo.
##
## Call:
## lm(formula = Y ~ X2 + X3, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -6.9684 -2.0363 0.1182 2.1905 6.2436
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.6305 1.5523 1.05 0.296
## X2 5.0950 0.2395 21.27 <2e-16 ***
## X3 -0.1997 0.3445 -0.58 0.563
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.925 on 97 degrees of freedom
## Multiple R-squared: 0.8237,Adjusted R-squared: 0.82
## F-statistic: 226.5 on 2 and 97 DF, p-value: < 2.2e-16
Noten que los valores estimados no coinciden con los valores reales (los del DGP). De aquí nace
la afirmación que realizamos anteriormente sobre la probabilidad de cero de que con una muestra
podamos obtener un valor estimado exactamente igual al valor poblacional.
Ahora, supongamos que tenemos el lujo de repetir este ejercicio 10 mil veces y guardamos los
coeficientes estimados de cada repetición. Es decir, generaremos 10 mil muestras (empleando la
misma variable X2 implica suponer que la variable explicatoria es fija) y para cada una de las
muestras calculamos los coeficientes y los guardamos1 . Para hacer el experimento más interesante
generemos el error de cada muestra de una distribución χ 2 con 5 grados de libertad2 .
1 En
este caso emplearemos un bucle (loop) para replicar este cálculo. Una breve introducción a los Lops en R se puede
encontrar en Alonso (2021).
2 Dado que una distribución χ 2 con g grados de libertad tiene como media sus grados de libertad, le restamos a cada
valor generado aleatoriamente su media para centrar los errores y cumplir el supuesto del error.
74 Inferencia y análisis de regresión
Por otro lado, miremos por un momento los histogramas de la distribución de los coeficientes
estimados (Ver Figura 3.2).
3.1 Introducción 75
Figura 3.2. Histograma de los coeficientes estimados (en azul se presenta la media de
los coeficientes estimados)
400
200
0
−4 0 4
600
400
200
0
4.0 4.5 5.0 5.5 6.0
400
200
0
−1.0 −0.5 0.0 0.5 1.0 1.5
Ahora regresemos al caso en que se estima una sola vez el modelo. En ese caso se puede mejorar
la precisión del modelo si se realizan pruebas de hipótesis o intervalos de confianza, empleando el
resultado anterior.
Con todos los resultados de la simulación en el objeto res podemos por ejemplo encontrar la media
de los valores estimados.
76 Inferencia y análisis de regresión
round(apply(res, 2, mean), 2)
## b1 b2 b3
## 1 5 0
Noten que obtenemos que la media de las 10 mil estimaciones de cada parámetro es igual al valor
real. Es decir,
h i
E β̂ = β
En otras palabras, este es un ejemplo de la insesgadez de los coeficientes, tal como se demostró en
el capítulo anterior. Este experimento de simulación que acabamos de realizar se conoce como un
Experimento o Simulación de Monte Carlo.
En la Figura 3.3 podemos observar como las estimaciones del primer modelo (con una sola muestra)
pueden ser mejoradas si empleamos un intervalo de confianza que tenga en cuenta la distribución
muestral del estimador. Noten que los intervalos contienen los valores reales (poblacionales).
3.1 Introducción 77
Figura 3.3. Pendientes estimadas para la primera muestra y sus intevalos de confianza
X3
X2
0 2 4 6
Estimate
El teorema del límite central es uno de los resultados más poderosos y asombrosos de la
ciencia estadística. La intuición detrás de este teorema es muy sencilla; si se suman un número
suficientemente grande de variables aleatorias, entonces sin importar la distribución de las
variables aleatorias sumadas, la sumatoria seguirá una distribución normal.
Tal vez, la aplicación mas sencilla del TLC es para hacer inferencia sobre la media. Veamos
la intuición con un ejercicio mental. Supongamos que quieres conocer el peso medio de una
población de estudiantes; es decir, la media poblacional del peso de ellos. En este caso podrán
hacer un censo del peso de todos los estudiantes de la universidad y una vez pesados todos
calcular el promedio aritmético. Pero, hacer un censo es muy costoso y dispendioso; por tanto,
como aprendieron en sus cursos introductorios de estadística, se acostumbra a seleccionar
una muestra aleatoria de tamaño n y a cada uno de esos n estudiantes se les pesa (Wi para
n
∑ Wi
i=1
i = 1, 2, ..., n). A partir de esta muestra podemos calcular la media muestral, w̄ = n .
¿Cuál es la probabilidad que w̄ sea exactamente igual a la media poblacional?. Claramente
esta probabilidad es cero; pero gracias al Teorema del Límite Central, si la muestra es lo
suficientemente grande, entonces sabemos que w̄ sigue una distribución normal con una media
igual a la media poblacional y varianza igual a la varianza poblacional dividida por el tamaño
2
muestral ( σn ). Este resultado nos permite aumentar la certidumbre de nuestro pronóstico (w̄),
para que sea más exacto.
78 Inferencia y análisis de regresión
95%
σ σ
− 1.96 1.96
n µ n
Ahora, empleemos el resultado de la estadística que nos permitirá construir intervalos de confianza y
hacer pruebas de hipótesis. Si conocemos la distribución muestral de nuestro estimador de MCO
podremos mejorar la certeza en torno a nuestras estimaciones. Estudiemos pues cuál es la distribución
de nuestro estimador.
h i h i −1
Sabemos que E β̂ = β y Var β̂ = σ 2 XT X . Por tanto, ahora necesitamos conocer la distri-
bución exacta que sigue nuestro estimador de MCO, pues recuerden que una función de distribución
−1
no está caracterizada únicamente por su media y varianza. Por otro lado, β̂ = XT X XT y es una
−1
combinación lineal de variables no aleatorias y variables aleatorias. Noten que XT X corresponde
a una matriz no aleatoria, pues hemos asumido que X es una matriz no estocástica. Además, dado
que cada uno de los yi es una variable aleatoria, pues yi depende de εi ; tenemos que XT y es un vector
3.2 Pruebas individuales sobre los parámetros 79
En otras palabras, los estimadores de MCO seguirán una distribución asintóticamente normal (sigue
una distribución Multivariada Normal
−1 de orden k) con media igual al valor poblacional y matriz de
varianzas y covarianzas σ 2 XT X .
De esta manera, cualquier estimador β̂ p , para 1 ≤ p ≤ k, seguirá una distribución asintótica normal
con media igual al valor poblacional β p y varianza igual al elemento en la columna y fila p de la
matriz de varianzas y covarianzas de los estimadores de MCO. En otras palabras,
h n −1 oi
β̂ p ∼ N β p , σ 2 Elemento de la matriz XT X (3.4)
Una vez conocemos la distribución del estimador de MCO podremos hacer inferencia sobre los
parámetros poblacionales. En lo que resta de este capítulo discutiremos cómo hacer inferencia
respecto a un parámetro (pruebas individuales) y sobre un conjunto de ellos (pruebas conjuntas).
Estas colas más altas, aun manteniendo la simetría y gran masa de probabilidad cercana a la media,
se pueden capturar con una distribución t.
Por tanto, cuando no conocemos la varianza poblacional del término aleatorio de error (¡qué es
siempre!), cada uno de los estimadores de MCO seguirá una distribución t, con n − k grados de
libertad. De esta manera, tenemos que un intervalo de confianza para βk del (1 − α) 100 % de
confianza está dado por:
t1 z z t1
z t1
f(x)
f(x)
f(x)
x x x
t10 z z t10
z t10
f(x)
f(x)
f(x)
x x x
t30 z z t30
z t30
f(x)
f(x)
f(x)
x x x
Además, la distribución del estimador nos permite probar la hipótesis nula que el valor poblacional
β p es igual a cualquier constante c, es decir Ho : β p = c; versus la hipótesis alterna que β p no es
igual a la constante c, HA : β p 6= c. Para contrastar estas hipótesis, se emplea el siguiente estadístico t
de prueba:
β̂ p − c
tc = (3.7)
sβ̂ p
Este estadístico tc (o t-calculado) sigue una distribución t con n − k grados de libertad; por tanto, se
rechazará la hipótesis nula si el valor absoluto del estadístico tc es lo suficientemente grande. En
otras palabras, si |tc | > t α2 ,n−k .
Un caso muy especial es cuando c = 0, en ese caso la hipótesis nula implicará βk = 0; es decir,
la variable Xk no explica la variable dependiente. Por otro lado, la hipótesis alterna implicará que
βk 6= 0; es decir, la variable Xk sí ayuda a explicar la variable dependiente. Cuando se concluye a
partir de la muestra que βk 6= 0, entonces se dice que la variable Xk es significativa para el modelo,
alternativamente se dice que el coeficiente βk es significativo. Por esto, este tipo de pruebas se
conocen como pruebas de significancia individual.
Tipos de pruebas individuales
Las pruebas para coeficientes individuales pueden ser de una o dos colas, dependiendo de la
respectiva hipótesis nula y alterna. En el Cuadro 3.1 se presentan las correspondientes zonas
de rechazo y reglas de decisión para cada una de los tres posibles casos.
Cuadro 3.1: Hipótesis individuales sobre los coeficientes del modelo MCO: región
de rechazo y reglas de decisión.
β̂ p −c
Ho : β p ≤ c HA : β p > c tc = sβ̂ p tc > tα
tcrítico
β̂ p −c
Ho : β p ≥ c HA : β p < c tc = sβ̂ p tc < tα
− tcrítico
x
3.2 Pruebas individuales sobre los parámetros 83
Estructura de una prueba de hipótesis
Se rechaza H0 si p < α
f(x)
α valor p
x
Fuente: Elaboración propia
Empleando este criterio, la decisión de rechazar la hipótesis nula se puede tomar de la forma como
se describe en el Cuadro 3.2.
Antes de analizar qué tan bien explica nuestro modelo la variable dependiente, es necesario discutir
cómo se puede descomponer la variabilidad de la variable dependiente. Inicialmente consideremos
la variación total de la variable dependiente con respecto a su media (yi − ȳ), esta variación puede
3.3 El ajuste del modelo (Fit del modelo) 85
ser descompuesta en dos partes3 . La primera de ellas es la parte de la variación que es explicada
por el modelo; esta parte de la variación es la diferencia que existe entre lo que predice el modelo
para la observación4 i (ŷi ) y nuestra mejor predicción si no contáramos con un modelo, es decir
la media de la variable dependiente (ȳ). En otras palabras, la parte de la variación de la variable
dependiente explicada por el modelo corresponde a (ŷi − ȳ). La segunda parte de la variación de la
variable dependiente es la que no puede ser explicada por el modelo, que denominaremos el error
o residuo. Formalmente, ε̂i = (yi − ŷi ). Así, (yi − ȳ) = (ŷi − ȳ) + (yi − ŷi ). Esta descomposición se
puede visualizar de forma más intuitiva con la Figura 3.9.
y
yi
yi yi
ˆi
y
y
xi X
Fuente: Elaboración propia
La variación total se puede descomponer en: i) la parte explicada por el modelo (ŷi − ȳ) (Ver
Figura 3.10), y ii) la parte que el modelo no explica (el error) ε̂i = (yi − ŷi ) (Ver Figura 3.11).
3 Noten que partimos de la desviación de dada observación con respecto a su media y la denominamos variación total,
pues esta sería la desviación que tendría cada observación con respecto a lo esperado si usásemos el modelo más sencillo
para explicar el comportamiento de una variable. Es decir, si usamos el modelo yi = µ + εi .. este será nuestro modelo de
partida.
4 ŷ = β̂ + β̂ X + β̂ X + . . . + β̂ X para i = 1, 2, ..., n, o en forma matricial ŷ = X β̂ .
i 1 2 2i 3 3i k ki
86 Inferencia y análisis de regresión
Figura 3.10. Ejemplo de la variación explicada por el modelo para una observa-
ción de la variable dependiente (yi )
y
yi
yi yi
ˆi
y
yˆ i y
y
xi X
Fuente: Elaboración propia
y
yi
ei yi ! yˆi yi ! yi
yˆi yˆi y
y
xi X
Fuente: Elaboración propia
Si queremos conocer la variación total de la variable dependiente para toda la muestra, es buena idea
considerar la suma de todas las variaciones al cuadrado para evitar el efecto contrario, de variaciones
n
por encima y por debajo de la media. Llamaremos a ∑ (yi − ȳ)2 la Suma Total al Cuadrado (SST por
i=1
su nombre en inglés: Sum of Squares Total). Es muy fácil mostrar que en presencia de un modelo
3.3 El ajuste del modelo (Fit del modelo) 87
con intercepto:5
n n n
∑ (yi − ȳ)2 = ∑ (ŷi − ȳ)2 + ∑ (yi − ŷi )2 (3.8)
i=1 i=1 i=1
n
La parte de esta variación total al cuadrado que es explicada por el modelo será ∑ (ŷi − ȳ)2 , la
i=1
denotaremos como SSR (por su nombre en inglés: Sum of Squares of the Regression). Y la parte
que no es explicada por la regresión se denotará por SSE (por su nombre en inglés: Sum of Squares
Error). Estas sumas al cuadrado también se pueden expresar en forma matricial. Es relativamente
fácil mostrar que:
n
SST = ∑ (yi − ȳ)2 = yT y − nȳ2
i=1
n
SSR = ∑ (ŷi − ȳ)2 = β̂ T XT y − nȳ2
i=1
n
SSE = ∑ (yi − ŷi )2 = yT y − β̂ T XT y
i=1
Así tendremos que
SST = SSR + SSE
Una evidente medida de qué tan bueno es nuestro modelo es examinar qué porcentaje de la variación
total es explicada por el modelo, a esto se le conoce como el R2 . Formalmente,
SSR SSE
R2 = = 1− .
SST SST
Dado que el R2 es un porcentaje, éste estará entre cero y uno; es decir, 0 ≤ R2 ≤ 1. Si R2 = 1,
entonces toda la variación de la variable dependiente es explicada por el modelo; para el caso de dos
variables explicativas, esto implicará que todos los puntos se encuentran sobre el plano estimado
por el modelo, en caso de tener una sola variable explicativa, este R2 implicará que todos los puntos
están sobre la línea de regresión. Por otro lado, si R2 = 0 tendremos que nuestro modelo no explica
nada de la variación de la variable dependiente.
Resumiendo la descomposición de la variabilidad de la variable dependiente
5 En el Anexo 3.7 al final de este capítulo se presenta una demostración de esta afirmación.
88 Inferencia y análisis de regresión
y se pierde k grados de libertad al calcular ŷi , por tanto los grados de libertad del SSE son
n − k. Finalmente, así como SST = SSE + SSR, también se debe cumplir que los grados de
libertad del SST deben ser iguales a la suma de los grados de libertad del SSE y el SSR. Así
por diferencia, podemos encontrar que los grados de libertad del SSR son k − 1. Una forma
n
alternativa para llegar a este último resultado es advertir que para calcular SSR = ∑ (ŷi − ȳ)2
i=1
se emplean k grados de libertad en el cálculo de cada ŷi y se pierde un grado de libertad al
emplear la media ȳi , por tanto los grados de libertad del SSR son k − 1.
Finalmente, en la tabla ANOVA se reporta la Media Cuadrada (MS) de los errores y de la
regresión que corresponde a las respectivas Sumas al Cuadrado divididas por sus respectivos
grados de libertad. En especial, el MS correspondiente al error, MSE, es exactamente igual al
estimador de la varianza del error. Claramente de la tabla ANOVA, también se puede derivar
rápidamente el R2 , pues toda la información necesaria para el cálculo de este estadístico está
disponible en la tabla.
Fuente de la SS Grados de MS
Variación libertad
SSR
Regresión SSR = β̂ T XT y − nȳ2 k−1 MSR = k−1
SSE
Error SSE = yT y − β̂ T XT y n−k MSE = s2 = n−k
Total SST = yT y − nȳ2 n−1
a Estaes una alternativa a la gráfica que no funcionaría para un modelo con más de dos variables explicativas.
Aún en el caso de un modelo con una sola variable dependiente, el análisis gráfico se convierte en una situación
inmanejable.
Antes de continuar, es importante anotar algunas consideraciones para tener en cuenta sobre la
medida de bondad de ajuste brindada por el R2 . Primero, es relativamente fácil mostrar que en caso
de que el modelo estimado no contenga un intercepto, entonces SST 6= SSR + SSE (ver Anexo 3.7
al final del capítulo). Por tanto en ese caso el R2 no representará la parte de la variabilidad total de
la variable dependiente explicada por el modelo, por eso se dice que el R2 carece de interpretación
cuando el modelo estimado no posee intercepto.
Segundo, dado que el R2 es una medida del ajuste de un modelo lineal estimado a los datos, entonces
el R2 se puede emplear para escoger entre diferentes modelos lineales el que se ajuste mejor a los
datos,pero si se cumplen algunas condiciones.
Por ejemplo, supongamos que se quiere estimar la de demanda de un bien Qi , para lo cual se cuenta
con datos de su precio (pi ), el precio de un bien sustituto (psi ) y un bien complementario (pci ) y el
nivel ingreso medio de los consumidores de este bien (Ii ). Así, para estimar la demanda de este bien
se emplean los siguientes modelos:
Una vez estimados estos cuatro modelos se cuentan con su correspondiente R2 . Un “impulso natural”
es escoger como el “mejor” modelo aquel que tenga el R2 más grande. Pero tal procedimiento en
este caso es erróneo, pues al comparar el modelo 3.10 con los otros modelos nos damos cuenta que
la variable dependiente es diferente en este modelo. Así, aún si se emplee la misma muestra para
estimar los modelos, las SST no serán iguales para todos. La SST del modelo 3.10 es distinta a la de
n 2
los otros tres modelos, pues para el modelo 3.10 SST = ∑ ln (Qi ) − ln Q̄ mientras que para los
i=1
n 2
otros modelos tenemos que SST = ∑ Qi − Q̄ .
i=1
Por lo tanto, si comparamos el R2 del modelo 3.10 con el de los otros tres modelos, no estaríamos
comparando la explicación de la misma variabilidad total de la variable dependiente. Podemos
concluir que los R2 entre diferentes modelos son comparables si y solamente si la variable
dependiente es la misma en los modelos a comparar y se emplea la misma muestra en la
estimación de los modelos.
Pero, aún si comparamos modelos con la misma variable dependiente y la misma muestra, como
por ejemplo los modelos 3.9, 3.11 y 3.12, es necesario tener cuidado con esta comparación. Es
relativamente fácil mostrar que el SSR, y por tanto el R2 , es una función creciente del número de
regresores (k − 1). Por tanto, a medida que consideramos modelos con más variables explicatórias,
el R2 será más grande.
Entonces, podríamos escoger cuál modelo explica mayor proporción de la variabilidad de la variable
dependiente para los modelos 3.11 y 3.12 por medio del R2 , pues en estos dos modelos se tiene el
mismo número de variables explicativas (k) y la variable explicada es la misma. Pero, en general, el
R2 no es un buen criterio para escoger entre los modelos 3.9, 3.11 y 3.12.
Hasta aquí hemos discutido cómo comprobar hipótesis individuales en torno a cada uno de los
parámetros de un modelo de regresión. Pero, ¿qué hacer con estos resultados individuales? Suponga-
mos la siguiente situación; hemos estimado con una muestra lo suficientemente grande el siguiente
modelo:
yi = β1 + β2 X2i + β3 X3i + β4 X4i + εi
Además, suponga que hemos efectuado una serie de pruebas individuales sobre los parámetros
estimados y se ha encontrado que:
Dados estos tres resultados, parece muy razonable tratar de unir estos tres resultados (R1 ∪ R2 ∪ R3 )
y concluir que el modelo debería ser yi = β1 + β2 X2i + εi con un nivel de significancia de α. Pero
si reflexionamos un poco sobre las implicaciones de unir estos resultados, nos daremos cuenta
rápidamente lo errado de unirlos. Noten que el primer resultado R1 implica un error tipo I de tamaño
α, mientras que los resultados R2 y R3 tienen asociados un error tipo II. Ahora, si unimos estos tres
resultados, el nivel de significancia asociado a (R1 ∪ R2 ∪ R3 ) no será simplemente α.
Para evitar ser muy conservador al unir diferentes resultados individuales, se han diseñado pruebas
que tengan en cuenta estos múltiples errores. Tales pruebas se conocen como pruebas conjuntas. En
esta sección las discutiremos en detalle.
Supongamos que usted quiere determinar si todos los coeficientes asociados a pendientes son o no
iguales a cero conjuntamente; es decir, H0 : β2 = β3 = ... = βk = 0 versus la hipótesis alterna no Ho
. Como lo discutimos anteriormente, este tipo de hipótesis no se puede probar con k − 1 hipótesis
individuales. Noten que esta
hipótesis puede reescribirse de la forma R(r)×k βk×1 = C(r)×1 , donde
T T
β = β1 β2 ... βk , C = 0 0 ... 0 y
0 1 0 ... 0
0 0 1 ... 0
R(r−1)×k = .. .. .. . . .. .
. . . . .
0 0 0 ... 1
Ahora, supongamos que quiere saber si dada una estimación se cumple una restricción que tie-
ne sentido teórico. Por ejemplo, se desea emplear una función de producción Cobb-Douglas pa-
ra determinar si se presenta rendimientos constantes de escala o no. Es decir, dada la siguiente
ecuación estimada ln\ (Yi ) = β̂ + α̂1 ln (Ki ) + α̂2 ln (Li ) se quiere comprobar si α1 + α2 es igual
a uno o no. Esta hipótesis
T
también se puede escribir de la forma R(r)×k βk×1 = C(r)×1 , donde
β = β α1 α2 , R = 0 1 1 y C = [1].
En general, cualquier hipótesis nula que pueda escribirse de la forma R(r)×k βk×1 = C(r)×1 (versus la
H a : no H0 ) se puede comprobar empleando el siguiente estadístico:
T −1 −1
C − Rβ̂ R XT X RT C − Rβ̂ r
Fcalculado = (3.13)
ε̂ T ε̂ (n − k)
Este estadístico sigue una distribución F con r grados de libertad en el numerador y n − k grados de
libertad en el denominador. Por tanto se podrá rechazar la hipótesis nula, con un nivel de significancia
α si Fα,(r,(n−k)) < FCalculado .
cero), es decir una prueba global de significancia. En este caso especial el estadístico Fcalculado se
reduce a: .
β̂ T XT y − nȳ2 (k − 1) MSR
FGlobal = = (3.14)
ε̂ T ε̂ (n − k) MSE
O de manera equivalente:
R2 (k − 1)
FGlobal = (3.15)
(1 − R2 ) (n − k)
Este FGlobal sigue una distribución F con k − 1 grados de libertad en el numerador y n − k grados de
libertad en el denominador. Por tanto, se podrá rechazar la hipótesis nula a un nivel de significancia
α si Fα,((k−1),(n−k)) < FGlobal . Noten que este test se puede derivar rápidamente de la tabla ANOVA
como se muestra en el Cuadro 3.4).
Noten que la hipótesis nula de esta prueba de significancia global implica el modelo
yi = β1 + εi (3.16)
Es decir, si la hipótesis nula no es rechazada, esto implica que una mejor forma de explicar la variable
dependiente es por medio de su media (una constante).6 Por tanto, esta prueba es otra forma de
estudiar la bondad de ajuste del modelo, por eso no debe ser sorprendente la estrecha relación entre
el FGlobal y el R2 .
R2 (k − 1)
FGlobal = (3.18)
(1 − R2 ) (n − k)
En la sección anterior se discutió cómo para comprobar una hipótesis nula que involucre restricciones
lineales de la forma Rβ̂ = C podemos emplear el estadístico Fcalculado siguiente:
6 Es decir Yi = µ + εi , donde µ = β1 es la media.
92 Inferencia y análisis de regresión
T −1 T −1
C − Rβ̂ R XT X R C − Rβ̂ r
Fcalculado = (3.19)
ε̂ T ε̂ (n − k)
Una alternativa para probar hipótesis que involucren restricciones de la forma Rβ̂ = C es emplear el
estadístico de Wald (Wcalculado ), el cual está relacionado con el Fcalculado descrito con anterioridad.
Este estadístico se puede calcular con la siguiente expresión:
T −1 T −1
Wcalculado = C − Rβ̂ R S2 XT X R C − Rβ̂ (3.20)
El estadístico de Wald calculado sigue una distribución χr2 donde r representa el número de restric-
ciones lineales en la hipótesis nula. Por tanto, se podrá rechazar H0 : Rβ = C en favor de la hipótesis
alterna (no H0 ) si Wcalculado > χr2 .
Es muy fácil encontrar la relación entre el estadístico de Wald y el estadístico F. Por ejemplo,
manipulando algebraicamente (3.20) tendremos que:
T −1 T −1
C − Rβ̂ R XT X R C − Rβ̂
Wcalculado = (3.22)
S2
T −1 T −1
C − Rβ̂ R XT X R C − Rβ̂
Wcalculado = (3.23)
ε̂ T ε̂ (n − k)
Al comparar la anterior expresión con (3.19) se puede concluir que Wcalculado = r · Fcalculado . De
hecho, para comprobar cualquier hipótesis que involucre restricciones lineales de la forma Rβ̂ = C
se podrá emplear una prueba F o una prueba Wald. Sin importar el estadístico que se emplee, la
conclusión será la misma. Finalmente, esta prueba de Wald se puede calificar como una versión
abreviada de una prueba de la razón de verosimilitud (Likelihood Ratio Test).
En esta sección aplicaremos los conceptos cubiertos hasta ahora. En esta ocasión en el área financiera
de una organización se esta evaluando la inversión de algunos excedentes de tesorería en acciones
3.6 Práctica en R: Explicando los rendimientos de una acción 93
del grupo SURA. Así, en el equipo de trabajo surgió la siguiente pregunta de negocio: ¿Cómo está
relacionado el rendimiento de esta acción con el rendimiento de aquellas acciones en la que ya
tenemos inversiones? Esta pregunta nace, pues se quiere diversificar el riesgo del portafolio. Para
responder esta pregunta se cuenta con datos del rendimiento diario7 de la acción de Suramericana
de otras acciones que también se tranzan en la Bolsa de Valores de Colombia y ya están en el
portafolio de la organización. La base de datos contiene rendimientos diarios de las siguientes
acciones: GRUPOSURA, ECOPETROL, NUTRESA, EXITO, ISA, GRUPOAVAL, CONCONCRE-
TO, VALOREM y OCCIDENTE. La base de datos va desde 2012-01-02 hasta el 2019-01-14 y y
todas las variables están medidas en puntos porcentuales. La base se encuentra en el working space
RetornosDiarios.RData.
La primera tarea como siempre será cargar el working space, para lo cual se puede emplear la
función load() que se encuentra en el paquete base de R. El argumento mas importante para esta
función es el nombre del archivo y su respectiva ruta. Procedamos a cargar el working space.
load("../Data/RetornosDiarios.RData")
class(retornos.diarios)
Este objeto es de clase xts y zoo. Este tipo de clase es muy empleada cuando se trabaja con series de
tiempo; en especial la clase xts es útil cuando las series tienen una frecuencia inferior al mes, como
en este caso que tenemos datos diarios. Esta clase corresponde al paquete xts (Ryan y Ulrich, 2020) .
Carguemos la librería (de ser necesario instale el paquete) y asegurémonos que los datos quedaron
bien cargados y que cada variable se encuentre bien definida.
# install.packages('xts)
library(xts)
# chequeo de los primeros datos
head(retornos.diarios, 2)
str(retornos.diarios)
sapply(retornos.diarios, class)
Noten que este objeto de clase xts reacciona un poco diferente a los objetos de clase data.frame
a funciones como str() . Pero la mayoría de las funciones que operan sobre objetos de clase data
frame también funcionarán sobre objetos xts y zoo. En especial la función lm() no tendrá ningún
problema con este tipo de objetos. Para tener una idea de la base de datos antes de entrar a estimar el
modelo, veamos su periodicidad (función periodicity() ), las estadísticas descriptivas, un gráfico y la
correlación entre las series.
periodicity(retornos.diarios)
summary(retornos.diarios)
Todas las series de los rendimientos tienen mediana cero y son relativamente volátiles. Esto se
puede corroborar gráficamente. Grafiquemos las series empleando la función plot.xts() del paquete
xts(Ryan y Ulrich, 2020) . Al emplear la plot() sobre un objeto de clase xts automáticamente emplea
la función plot.xts().
96 Inferencia y análisis de regresión
# install.packages('xts')
plot(retornos.diarios)
20 20
10 10
0 0
−10 −10
−20 −20
Claramente las series (variables) de los rendimientos son bastante volátiles8 . Ahora procedamos a
8 Esta
es una característica común en los rendimientos de las acciones. Para una mayor discusión ver Alonso (2006a) y
Alonso y Torres (2014) .
3.6 Práctica en R: Explicando los rendimientos de una acción 97
donde GRUPOSURAt representa el rendimiento diario de la acción del Grupo Sura. De manera
análoga las otras variables representan los rendimientos de las otras acciones. En el capítulo anterior
discutimos como estimar un modelo lineal. En este caso el modelo se puede estimar y visualizar de
la siguiente manera:
##
## Call:
## lm(formula = GRUPOSURA ~ ., data = retornos.diarios)
##
## Residuals:
## Min 1Q Median 3Q Max
## -5.6534 -0.5737 -0.0133 0.6199 6.3444
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.006431 0.027001 0.238 0.812
## ECOPETROL 0.121058 0.014487 8.357 < 2e-16 ***
## NUTRESA 0.141435 0.027796 5.088 4.02e-07 ***
## EXITO 0.122278 0.018116 6.750 2.03e-11 ***
## ISA 0.188165 0.018689 10.068 < 2e-16 ***
## GRUPOAVAL 0.084403 0.020077 4.204 2.76e-05 ***
## CONCONCRET 0.021189 0.014785 1.433 0.152
## VALOREM 0.035659 0.014007 2.546 0.011 *
## OCCIDENTE 0.030972 0.026930 1.150 0.250
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.109 on 1687 degrees of freedom
## Multiple R-squared: 0.2617,Adjusted R-squared: 0.2582
## F-statistic: 74.75 on 8 and 1687 DF, p-value: < 2.2e-16
98 Inferencia y análisis de regresión
Asteriscos en la literatura, en R y el valor p
R emplea una manera particular en poner asteriscos que no concuerda con la literatura
científica (por lo menos en las ciencias sociales). En el Cuadro 3.5 se presenta la equivalencia
entre lo reportado en R y la literatura.
p< en R en literatura
0.1 . *
0.05 * **
0.01 ** ***
0.001 *** No se emplea
Fuente: Elaboración propia
Dependent variable:
GRUPOSURA
ECOPETROL 0.121∗∗∗
(0.014)
NUTRESA 0.141∗∗∗
(0.028)
EXITO 0.122∗∗∗
(0.018)
ISA 0.188∗∗∗
(0.019)
GRUPOAVAL 0.084∗∗∗
(0.020)
CONCONCRET 0.021
(0.015)
VALOREM 0.036∗∗
(0.014)
OCCIDENTE 0.031
(0.027)
Constant 0.006
(0.027)
Observations 1,696
R2 0.262
Adjusted R2 0.258
Residual Std. Error 1.109 (df = 1687)
F Statistic 74.748∗∗∗ (df = 8; 1687)
Los resultados muestran que los rendimientos de las acciones de ECOPETROL, NUTRESA, EXITO,
ISA, GRUPOAVAL y VALOREM son variables significativas para explicar el rendimiento de la
acción de GRUPOSURA. Las pruebas individuales de significancia permiten concluir que los
rendimientos de las acciones de CONCONCRETO y OCCIDENTE no tienen efecto sobre el
rendimiento de la acción de GRUPOSURA.
También podemos observar que el R2 de la regresión es 0.262. Esto quiere decir que el modelo
explica el 26.2 % de la variación del rendimiento de la acción de GRUPOSURA. Noten que si bien
parece pequeño este R2 , no lo es. Dado que los rendimientos de la acción de GRUPOSURA es tan
volátil (cambia tanto), explicar el 26.2 % de esta variación no es despreciable. En el contexto de las
100 Inferencia y análisis de regresión
Es importante tener en cuenta que en otras aplicaciones este R2 puede ser considerado como muy
bajo. Por eso es importante conocer el contexto bajo estudio para poder determinar si un R2 obtenido
es relativamente alto o bajo para el caso bajo estudio.
Por otro lado el FGlobal es 74.748. El respectivo p-valor (aproximadamente 0) implica que se puede
rechazar la hipótesis nula de que ninguna variable es importante para explicar los rendimientos de la
acción de GRUPOSURA. Es decir, al menos una de las pendientes es diferente de cero.
Para el cálculo de la tabla ANOVA podemos emplear la función anova() del paquete principal de
R. El único argumento necesario, por ahora, es el objeto clase lm que tenga los resultados de la
regresión.
anova(res1)
Noten que en este caso el SSR se presenta discriminado para cada variable.
H0 : β8 = β10 = 0
La hipótesis alterna es no H0. Esta hipótesis nace de los resultados de las pruebas individuales. Este
tipo de restricciones se puede probar tanto con la prueba de Wald como con una prueba F. Esto se
puede hacer de la siguiente manera empleando la función linearHypothesis() que se encuentra en el
paquete AER (Kleiber y Zeileis, 2008) . Esta función requiere al menos dos argumentos: El modelo
3.6 Práctica en R: Explicando los rendimientos de una acción 101
(objeto clase lm) y las restricciones. La función calcula por defecto la prueba F. Si se desea obtener
el estadístico de Wald, entonces se requiere un tercer argumento test=”Chisq”. Las siguientes lineas
de código efectúan la respectiva prueba F y de Wald:
library(AER)
# prueba F
linearHypothesis(res1, c("CONCONCRET = 0", "OCCIDENTE = 0"))
Como se esperaba, el p-valor de ambas pruebas es el mismo. En este caso, no se puede rechazar la
hipótesis nula; es decir, se puede concluir que los rendimientos de las acciones de CONCONCRETO
y OCCIDENTE no tienen efecto sobre el rendimiento de la acción de GRUPOSURA. Así el nuevo
102 Inferencia y análisis de regresión
modelo será:
GRUPOSURAt = β1 + β2 ECOPETROLt + β3 NUTRESAt
+ β4 EXITOt + β5 ISAt + β7 GRUPOAVALt
+ β9 VALOREMt + εt .
Dependent variable:
GRUPOSURA
(1) (2)
ECOPETROL 0.121∗∗∗ 0.122∗∗∗
(0.014) (0.014)
CONCONCRET 0.021
(0.015)
OCCIDENTE 0.031
(0.027)
Ahora, noten que en este segundo modelo los coeficientes que acompañan los rendimientos de las
acciones de ECOPETROL y EXITO parecen “a ojo” ser similares. Entonces probemos si realmente
son iguales o no. Es decir, la hipótesis nula será:
H0 : β2 = β4 = 0,12
Esto implica que la hipótesis nula no se puede rechazar. Es decir, se puede concluir que el efecto de
un aumento de un punto porcentual en el rendimiento de las acciones de ECOPETROL o EXITO
tiene el mismo efecto sobre la acción de GRUPOSURA. Es más dicho efecto no es estadísticamente
diferente de 0.12 puntos porcentuales.
Recordemos que la pregunta de negocio que queríamos responder es: ¿cómo está relacionado el
rendimiento de la acción de SURA con el rendimiento de aquellas acciones en la que ya tenemos
inversiones? Nuestros resultados permiten concluir que el rendimiento de la acción de SURA
tienen relación con los rendimientos de las acciones de ECOPETROL, NUTRESA, EXITO, ISA,
GRUPOAVAL y VALOREM.
104 Inferencia y análisis de regresión
Ejercicios
3.1 Replica el experimento de Monte Carlo que se realiza en la Introducción para muestras de
tamaño 20, 50 y 200. ¿Qué puedes concluir?
La expresión 3.8 implica que en presencia de un modelo lineal con intercepto, podremos descomponer
la variación total de la variable dependiente (SST ) en la parte explicada por el modelo de regresión
(SSR) y la parte no explicada por el modelo (SSE). Formalmente, la proposición a probar es que si
una de las variables explicativas es una constante (corresponde al intercepto), entonces:
ε̂ T ε̂ = yT y − 2β̂ T XT y + β̂ T XT Xβ̂
ε̂ T ε̂ = yT y − β̂ T XT Xβ̂ .
10 Nota que no es lo mismo un aumento de un uno porciento que un aumento de un punto porcentual. Ten cuidado con
esta diferencia al momento de interpretar coeficientes asociados con varibles que están medidas en puntos porcentuales.
3.7 Anexo: Demostración de la ecuación 3.8 105
Reemplazando, obtenemos
yT y = ε̂ T ε̂ + ŷT ŷ.
Restando a ambos lados nȳ2 , se obtiene:
Ahora, será necesario demostrar que SSR = ŷT ŷ − nȳ2 siempre que el modelo lineal incluya un
intercepto. Noten que:
n n n n
SSR = ∑ (ŷi − ȳ)2 = ∑ ŷ2i − 2 ∑ ŷi ȳ + ∑ ȳ2
i=1 i=1 i=1 i=1
n
SSR = ŷT ŷ − 2ȳ ∑ ŷi + nȳ2 .
i=1
Reemplazando el valor estimado de la variable dependiente, se tiene que:
n
SSR = ŷT ŷ − 2ȳ ∑ (yi − ε̂i ) + nȳ2
i=1
" #
n n
T
SSR = ŷ ŷ − 2ȳ ∑ yi − ∑ ε̂i + nȳ2
i=1 i=1
n
SSR = ŷT ŷ − 2ȳnȳ + 2ȳ ∑ ε̂i + nȳ2 .
i=1
Recordemos que si uno de los regresores es una constante, entonces ya se demostró que siempre se
n
cumplirá que ∑ ε̂i = 0. Por eso,
i=1
n
Es importante anotar que si no se garantiza que ∑ ε̂i = 0, entonces no necesariamente se puede
i=1
garantizar que la suma del SSR y el SSE sean iguales al SST . Y esto solo se puede asegurar cuando
el modelo estimado tiene un intercepto.
4 . Comparación de Modelos
Explicar en sus propias palabras la intuición detrás de las métricas R2 ajustado, el AIC y el
BIC para comparar modelos.
Emplear el R2 ajustado, el AIC y el BIC para seleccionar el mejor modelo.
Explicar en sus propias palabras la intuición detrás de las pruebas estadísticas que permitan
seleccionar entre modelos anidados y no anidados empleando R.
Realizar pruebas estadísticas que permitan seleccionar entre modelos anidados empleando R.
Realizar pruebas estadísticas que permitan seleccionar entre modelos no anidados empleando
R.
108 Comparación de Modelos
4.1 Introducción
Con frecuencia, el científico de datos se enfrenta con el problema de tener que comparar diferentes
modelos y escoger uno de ellos. En este capítulo nos concentraremos en dos tipos de aproximaciones,
que no son excluyentes, para seleccionar modelos. La primera aproximación emplea medidas de
bondad de ajuste y la segunda pruebas estadísticas. En lo que resta de este capítulo supondremos
que queremos comparar modelos cuya variable dependiente es la misma y que emplean la misma
muestra.
Pero antes de entrar en el detalle es importante anotar que al momento de comparar modelos que
expliquen por ejemplo la variable yi podemos enfrentar dos situaciones. Por ejemplo, consideremos
los siguientes modelos para explicar las unidades vendidas de un SKU de una bebida carbonizada en
el mes t (Vt ):
Noten que el modelo 4.2 es una versión restringida del modelo 4.1; pues si β4 = β5 = 0 en el modelo
4.1 entonces se obtiene el modelo restringido 4.2. Al modelo 4.2 se le denomina modelo anidado (en
el modelo 4.1) . Por otro lado, el modelo 4.3 no se encuentra anidado en los modelos 4.2 o 4.1. Es
decir, no hay forma de restringuir los modelos 4.1 o 4.2 para obtener el modelo 4.3.
En el capítulo anterior (ver 3.3) discutimos las limitaciones del R2 al comparar modelos. Concluimos
que el R2 solo permite comparar modelos si estos tienen la misma variable dependiente y el mismo
número de variables explicativas. Mostramos además cómo el R2 se infla con la inclusión de variables.
Para tener en cuenta la relación directa entre el SSR y el número de regresores (k − 1), se ha diseñado
el R2 ajustado (R̄2 ). El R̄2 penaliza la inclusión de nuevas variables explicativas al modelo, esa
penalización se da de la siguiente forma:
n−1
R̄2 = 1 − 1 − R2
n−k
n−1
n−k es el factor que penaliza el R2 al incluir más variables explicativas. n−1
n−k decrece con el aumento
de k (inclusión de variables). En otras palabras, a medida que se incrementa el número de variables
4.2 Comparación de modelos empleando medidas de bondad de ajuste 109
De esta manera, con el R̄2 se pueden comparar los modelos 3.9, 3.11 y 3.12, siempre y cuando se
emplee la misma muestra para estimar los tres modelos (el mismo n y SST ). El único problema que
se presenta con el R̄2 , es que este carece de una interpretación a diferencia del R2 .
Existen otros problemas, que se estudiarán más adelante, que pueden “inflar” el R2 como la multico-
linealidad (ver 8). De esta manera, aunque este estadístico presenta una interpretación muy clara e
intuitiva, hay que tener cuidado antes de sacar conclusiones de este estadístico y del R̄2 .
Existen otras medidas de bondad de ajuste que permiten comparar entre modelos (como el R̄2 )
pero que no tienen una interpretación como tal. Dos de estas medidas muy conocidas son el
Criterio de Información de Akaike (por su nombre en inglés: AIC) y el Criterio de Información de
Bayesiano1 (por su nombre en inglés: BIC). Tanto el AIC como el BIC son estadísticos que fueron
desarrollados en otra filosofía de estimación (Máxima Verosimilitud) y penalizan por la inclusión
de más variables explicativas como el R̄2 . Estas dos medidas adaptadas para el caso de la regresión
múltiple estimada por MCO se definen como:
SSR
AIC = n + n log (2π) + n log + 2 (k + 1)
n
SSR
BIC = n + n log (2π) + n log + log (n) (k + 1) .
n
Cuando empleamos el R̄2 para comparar modelos con la misma variable dependiente (y misma
muestra) se selecciona el modelo que lo maximice. En el caso del AIC y BIC, se prefiere el modelo
que minimice estos criterio. Por otro lado, la diferencia entre el AIC y el BIC es la forma en cómo se
penaliza la inclusión de más variables explicativas, por esto es posible que el modelo seleccionado sea
diferente para estos dos criterios. Está muy documentado que el AIC tiene siempre una probabilidad
alta de seleccionar modelos con mas regresores que el BIC. Y por el otro lado, también se sabe que
el BIC tiende a encontrar modelos relativamente pequeños en términos de variables explicativas.
Adicionalmente, es importante anotar que estas medidas de bondad de ajuste permiten comparar
modelos anidados y no anidados.
En general, para la comparación de modelos se recomienda emplear las tres medidas (o métricas) (R̄2 ,
AIC, BIC) de bondad de ajuste; pero los resultdos de cada uno de estos critrerios no necesariamente
concordarán. Por ejemplo, supongamos un caso en el que AIC recomienda un modelo con 5 variables,
1 Estecriterio se conoce también como criterio de información de Schwarz y se reconocen por las siguientes siglas que
vienen del inglés: SIC, SBC o SBIC.
110 Comparación de Modelos
el BIC recomienda 2 variables y el R̄2 sugiere 3 variables. En este caso se puede emplear los tres
modelos seleccionados y comparar entre modelos empleando inferencia como veremos en la siguiente
sección.
En el capítulo anterior discutimos la inferencia para restricciones de la forma R(r)×k βk×1 = C(r)×1 .
Discutimos como dichas restricciones se podrán probar con una prueba F o con una prueba de Wald
(ver sección 3.5).
donde r = l − p, SSER representa la suma de los cuadrados de los residuos estimados del modelo
restringido y SSEU representa la suma de los cuadrados de los residuos estimados del modelo sin
restringir.
Así, para probar la hipótesis nula que Ho : β p = β p+1 = . . . = βl = 0, para 0 < p < l ≤ k (versus la
HA : No H0 ), podemos estimar por MCO el modelo restringido, implicado por la hipótesis nula, como
el modelo sin restringir y encontrar su correspondiente SSE. A partir de estas cantidades se puede
calcular el FCalculado , el cual se compara con Fα,(r,(n−k)) . A este tipo de test se le conoce como una
prueba de modelo restringido versus modelo no restringido. Como se discutió en el capitulo anterior,
este tipo de restricciones también se pueden probar con una prueba de Wald (función waldtest() del
paquete AER (Kleiber y Zeileis, 2008) ).
H0 : y = Xβ + ε0
2 Diferentes al término constante.
4.3 Comparación de modelos empleando inferencia 111
y la hipótesis alterna es
HA : y = Zγ + ε1 .
Para comprobar este tipo de hipótesis tenemos dos opciones: la prueba J y la prueba de Cox. Estas
opciones se discuten a continuación.
Prueba J
La idea de esta prueba es bastante evidente. La prueba J considera los dos modelos en uno. Es decir
implica estimar el siguiente modelo:
y = (1 − λ ) Xβ + (λ ) Zγ + ε.
La idea de la prueba es primero estimar γ a partir de la regresión de y en Z . En un segundo paso
correr una regresión de y en X y Zγ̂. Noten que H0 es verdad si λ = 0. Por tanto, la prueba implica
el siguiente estadístico de prueba:
λ̂
.
s.e. λ̂
Esta demostrado que este estadístico sigue una distribución aproximada a la estándar normal.
Prueba de Cox
La prueba de Cox es un tipo de prueba denominada razón de máxima verosimilitud (LR). Esta prueba
implica el siguiente estadístico
c01
q= r
s2Z
4 T T
sZX b X MZ MX MZ Xb
donde 2
n s
c01 = ln 2Z
2 sZX
eTZ eZ
s2Z =
n
eTX eX
s2X =
n
bT XT MZ Xb
s2ZX = s2X + .
n
Este estadístico sigue una distribución Chi-cuadrado con grados de libertad igual al número de
parámetros en el numerador.
112 Comparación de Modelos
Para mostrar como emplear R para seleccionar modelos, emplearemos unos datos simulados para una
variable dependiente (yi ) y 10 variables explicativas X j , i donde j = 1, 2, ..., 10. Para cada variable se
simulan 150 observaciones i = 1, 2, ..., 150. Los datos están disponibles en el archivo selModel.txt.
Carguemos los datos y constatemos que quedan bien cargados.
datos <- read.table("../Data/selModel.txt", header = TRUE, sep = ",")
head(datos, 2)
## X x1 x2 x3 x4 x5 x6 x7 x8 x9 x10
## 1 1 5.925 6.512 6.883 5.157 6.420 5.833 5.356 6.626 5.730 6.108
## 2 2 4.565 3.638 4.378 5.056 3.165 4.598 4.576 4.171 4.259 4.443
## y
## 1 42.799
## 2 30.372
class(datos)
## [1] "data.frame"
str(datos)
Noten que se cargó una primera columna que corresponde al número de la observación, esto no lo
necesitaremos. Eliminemos esa variable.
datos <- datos[, -1]
head(datos, 3)
## x1 x2 x3 x4 x5 x6 x7 x8 x9 x10
4.4 Práctica en R: Escogiendo el mejor modelo 113
## 1 5.925 6.512 6.883 5.157 6.420 5.833 5.356 6.626 5.730 6.108
## 2 4.565 3.638 4.378 5.056 3.165 4.598 4.576 4.171 4.259 4.443
## 3 5.436 5.501 6.596 4.476 4.992 5.524 6.235 5.402 5.465 5.568
## y
## 1 42.799
## 2 30.372
## 3 36.338
str(datos)
Todas las variabels cargadas son numéricas. Ahora consideremos los siguientes tres modelos
El modelo 4.5 esta anidado en el modelo 4.4. El modelo 4.6 no se encuentra anidado en ninguno de
los otros modelos, ni al revés.
Procedamos a estimar los tres modelos y compararlos empleando las métricas de bondad de ajuste
primero y luego empleando pruebas de hipótesis. Pero antes estimemos los tres modelos descritos
arriba.
Dependent variable:
y
(1) (2) (3)
x1 0.953∗∗∗ 1.048∗∗∗
(0.270) (0.266)
x2 1.936∗∗∗ 2.133∗∗∗
(0.295) (0.274)
x3 1.038∗∗∗ 1.162∗∗∗
(0.290) (0.276)
x6 0.412
(0.272)
x7 0.167
(0.287)
x4 1.429∗∗∗
(0.306)
x5 1.533∗∗∗
(0.299)
x8 0.443
(0.319)
x9 0.175
(0.316)
x10 0.589∗
(0.333)
El R̄2 y los criterios de información AIC y BIC se pueden calcular fácilmente en R. Para calcular
el R̄2 debemos emplear la función summary() y extraer del objeto que crea summary el slot que
contiene a R̄2 .
R1 <- summary(res1)
attributes(R1)
## $names
## [1] "call" "terms" "residuals"
## [4] "coefficients" "aliased" "sigma"
## [7] "df" "r.squared" "adj.r.squared"
## [10] "fstatistic" "cov.unscaled"
##
## $class
## [1] "summary.lm"
R1$adj.r.squared
## [1] 0.6388607
Los criterios de información se calculan empleando las funciones AIC() y BIC() del paquete base
de R. Las dos funciones tienen como único argumento el objeto que contiene la regresión (objeto de
clase lm).
AIC(res1)
## [1] 733.9571
BIC(res1)
## [1] 755.0315
Puedes calcular estos indicadores para los otros modelos. Los resultados que se reportan en el Cuadro
4.2.
Cuadro 4.2: Medidas de bondad de ajuste para los tres modelos estimados
El R̄2 sugiere que el mejor modelo es el 1 (4.4), mientras que los dos criterios de información
sugieren que el mejor modelo es el 2 (4.5). Ahora veamos que decisión tomamos al emplear pruebas
estadísticas.
Modelos anidados
Como se mencionó anteriormente, el modelo 4.5 está anidado en el modelo4.4. Comparemos estos
dos modelos empleando la función anova() . Esta función ya la había empleado en la sección 3.6, en
ese momento solo empleamos un argumento (objeto de clase lm) para obtener la tabla ANOVA. Esta
misma función permite efectuar una prueba F de modelo restringido versus modelo no restringido si
se emplean dos argumentos: primero el modelo restringido (objeto de clase lm) y segundo el modelo
sin restringir3 (objeto de clase lm). Empleando esta función encontramos lo siguiente 4 :
anova(res2, res1)
En este caso el estadístico F es igual a 1.63 y el respectivo valor p es 0.1988. Por tanto no se puede
rechazar la hipótesis nula de que el modelo restringido (el modelo 2; es decir 4.5) es mejor que el
modelo sin restringir (modelo 1; es decir 4.4).
Modelos no anidados
Ahora comparemos el modelo 3 (4.6) con los otros dos modelos. La prueba J se calcula empleando
la función jtest() del paquete AER (Kleiber y Zeileis, 2008) . Esta función solo tiene dos argumentos,
dos objetos de clase lm que contienen los dos modelos no anidados. En este caso el orden de los
argumentos no es importante para efectuar la prueba pero si para analizar sus resultados como
veremos a continuación.
3 En caso de cometer un error y asignar como primer argumanto el modelo sin restringuir, observaras que los grados
de libertad serán negativos al igual que la suma cuadrada. Esto claramente es imposible. Nota que en todo caso el F
estadístico es el correcto así como su respectivo valor p.
4 Cuando emplees esta función hay que tener un poco de cuidado. Por defecto, esta función le asigna el nombre de
“Model 1” al primer argumento (modelo con restricción) y “Model 2” al segundo argumento (modelo sin restricción).
Claramente este es un rotulo arbitrario que es asignado por la función y nada tiene que ver que la numeración le hayas
asignado a tus modelos en el análisis, como es nuestro caso en este ejemplo.
4.4 Práctica en R: Escogiendo el mejor modelo 117
library(AER)
J.res1.3 <- jtest(res1, res3)
J.res1.3
## J test
##
## Model 1: y ~ x1 + x2 + x3 + x6 + x7
## Model 2: y ~ x4 + x5 + x8 + x9 + x10
## Estimate Std. Error t value Pr(>|t|)
## M1 + fitted(M2) 0.48221 0.103789 4.646 7.606e-06 ***
## M2 + fitted(M1) 0.81939 0.095489 8.581 1.427e-14 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
El primer tcalculado (4.65) es el que permite probar la hipótesis nula de que el modelo 4.4 (este modelo
fue el primer argumento de la función jtest()) es mejor que el modelo 4.6 (el segundo argumento
empleado en dicha función). Este resultado permite rechazar la nula (valor p de 0), lo cuál significa
que la prueba no puede concluir en favor del modelo 1. Es decir, hay suficiente evidencia para
rechazar la hipótesis nula de que el modelo 4.4 (“Model 1” en la salida de R) es mejor que el modelo
4.6 (“Model 2” en la salida ).
Por otro lado, el segundo tcalculado (8.58) es el que permite probar la hipótesis nula de que el modelo
4.6 es mejor que el modelo 4.4. En este caso también se rechaza la nula (valor p de 0 ). Es decir,
existe suficiente evidencia para rechazar la nula de que el modelo 4.6 (“Model 2” en la salida de
R) es mejor que el modelo 4.4 (“Model 1” en la salida ). Esto significa que la prueba presenta una
contradicción o dicho de otra manera, esta prueba no es concluyente para este caso.
Para el caso de la comparación del modelo 4.5 y el modelo 4.6 se obtiene un resultado similar.
## J test
##
## Model 1: y ~ x1 + x2 + x3
## Model 2: y ~ x4 + x5 + x8 + x9 + x10
## Estimate Std. Error t value Pr(>|t|)
## M1 + fitted(M2) 0.46880 0.093090 5.0360 1.391e-06 ***
## M2 + fitted(M1) 0.78589 0.090552 8.6788 8.131e-15 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
En conclusión, para esta muestra la prueba J no es concluyente al momento de comparar los modelos
no anidados.
118 Comparación de Modelos
Ahora empleemos la prueba de Cox. Esta prueba se puede calcular empleando la función coxtest()
del paquete AER (Kleiber y Zeileis, 2008) . Esta función solo tiene dos argumentos, dos objetos de
clase lm que contienen los dos modelos no anidados.
## Cox test
##
## Model 1: y ~ x1 + x2 + x3 + x6 + x7
## Model 2: y ~ x4 + x5 + x8 + x9 + x10
## Estimate Std. Error z value Pr(>|z|)
## fitted(M1) ~ M2 -20.255 4.4843 -4.5169 6.275e-06 ***
## fitted(M2) ~ M1 -44.422 4.1659 -10.6632 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## Cox test
##
## Model 1: y ~ x1 + x2 + x3
## Model 2: y ~ x4 + x5 + x8 + x9 + x10
## Estimate Std. Error z value Pr(>|z|)
## fitted(M1) ~ M2 -24.191 4.6851 -5.1634 2.425e-07 ***
## fitted(M2) ~ M1 -47.896 4.1226 -11.6180 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
De esta manera, uniendo todos los resultados encontramos que el 4.6 no es mejor que los 4.4 y
4.5. Este resultado lo obtenemos de las métricas de bondad de ajuste, pues con las pruebas Cox y
J no podemos derivar una conclusión. Y entre el modelo 4.4 y 4.5, la prueba estadística y los dos
criterios de información sugieren que el modelo 4.5 es mejor modelo. En el caso del R̄2 no existe
una diferencia muy grande entre los dos modelos. Dado que las pruebas estadísticas nos permiten
tener un 99 % de confianza de que el modelo 4.5 es mejor que el modelo 4.4, por eso es aconsejable
seleccionar como mejor modelo 4.5. Es decir, el mejor modelo será:
Ejercicios
4.1 Continuemos con el ejercicio del final del Capítulo 2. En ese caso se estimó un modelo
con todas las variables disponibles en la base de datos como posibles variables explicativas. No
obstante diferentes científicos de datos han llegado a diferentes posibles modelos para explicar
los ingresos del sector (I medidos en millones de dólares). Estos posibles modelos son:
Tu tarea es determinar cuál es el mejor modelo para explicar los ingresos del sector ferroviario e
interpretar los resultados. Emplea los mismo datos que se encuentran en el archivo regmult.csv.
Parte II
Explicar en sus propias palabras cómo se pueden emplear variables dummy en un modelo de
regresión múltiple para probar diferentes hipótesis de trabajo.
Crear variables dummy utilizando R.
Estimar modelos econométricos con variables dummy que permitan comprobar diferentes
hipótesis.
124 Variables dummy
5.1 Introducción
En los capítulos anteriores hemos discutido el uso de variables que toman valores en un dominio
continuo en los modelos de regresión lineal. Sin embargo, en algunas ocasiones será necesario
emplear variables que toman únicamente dos valores distintos. Por ejemplo, podría ser necesario
incluir en la estimación de un modelo una variable que represente si un individuo es mujer o no, si la
observación es de un país que pertenece a determinado grupo económico o no, o si una determinada
variable superó un umbral o no, o si la observación corresponde a un trimestre o no.
Un gerente de un equipo de fútbol desea saber si el número de entradas vendidas para los
partidos de local (Yi ) difiere si el equipo contrario tiene en su alineación una estrella o no. El
científico de datos que tiene a su cargo dar respuesta a esta pregunta de negocio se cuenta
con una muestra de n partidos y solamente dos variables: Yi el número de boletas vendidas
cuando el equipo es local y una variable Xi que toma el valor de uno si juega una estrella en el
equipo contrario, cero en caso contrario. Una base de datos de estas características se vería
algo similar a lo presentado en la Figura 5.1.
Figura 5.1. Ventas de boletas por partido (Yi ) y presencia de una estrella en el
equipo visitante (Xi ).
y
x
Fuente: Elaboración propia
Yi = β1 + β2 Xi + εi .
Recordemos que Xi = 1 si juega una estrella en el equipo contrario, cero en caso contrario. En
este caso la variable explicativa es una variable cualitativa y no cuantitativa como lo habíamos
visto en los capítulos anteriores.
Esta especificación del modelo nos permite modelar las ventas de boletos de diferente manera
para las dos situaciones posibles. Es como si tuviésemos dos modelos en uno. Si juega una
5.1 Introducción 125
Yi = β1 + β2 Xi + εi .
Yi = β1 + εi .
Noten que β2 representa la diferencia en las ventas (promedio) de entradas a los partidos
cuando en el equipo contrario juega una súper estrella. De esta manera, la pregunta de negocio
se puede resolver estimando el modelo planteado y comprobando inicialmente, si β2 = 0 o
no. Si se rechaza la nula de que β2 = 0 se puede proceder a constatar (por medio de pruebas
de hipótesis) que la diferencia entre la presentación de una estrella y no tenerla sí es positiva
(H0 : β2 ≤ 0). La Figura 5.2 muestra una representación gráfica de este modelo.
β2 > 0
y
β1
x
Fuente: Elaboración propia
En este capítulo vamos a discutir las variables dummy, también conocidas como variables ficticias,
variables indicador o variables dicotómicas. Este tipo de variables pueden ser muy útiles para
modelar diferentes fenómenos. Por ejemplo, las variables dummy pueden servir para:
Veamos un ejemplo de cómo las variables dummy permiten encontrar el efecto “tratamiento”. En
los mercados accionarios se ha encontrado que su comportamiento en promedio no es igual todos
126 Variables dummy
los días; es decir, los días se convierten en “tratamientos” diferentes. El efecto del día de la semana
(DOW1 por su sigla en inglés: Day Of the Week) se puede capturar creando variables dummy para
los días de la semana. En este contexto el rendimiento diario de una acción (Rt ) se puede modelar de
acuerdo al modelo CAPM 2 empleando el rendimiento de un activo libre de riesgo (RtR.F. ) y se puede
incluir el efecto DOW de la siguiente manera:
Puedes constatar que este modelo implica un rendimiento promedio para cada día de la semana
laboral diferente.
Ahora, concentrémonos en un ejemplo de cómo emplear las variables ficticias para medir el efecto
de umbral. Por ejemplo, supongamos que se desea encontrar los determinantes del salario de los
empleados de una compañía (salarioi ). Típicamente se emplearía como variables explicativas la edad
del empleado como una proxy de la experiencia y los años de educación. Pero podría encontrarse
una situación en la cual los años de educación (como una variable continua) no tiene efecto directo
sobre el salario, más bien superar unos umbrales de educación si pueden tener un efecto. En este
caso el siguiente modelo refleja este efecto de umbral:
salarioi = β1 + β2 agei + δ1 Bi + δ2 Mi + δ3 Pi + εi ,
Veamos otro ejemplo de efecto de umbral. En algunas ocasiones las ventas de un producto en el
periodo t (Vt ) pueden reaccionar de manera diferente si el precio (pt ) sube o baja. Esto se conoce
como un comportamiento asimétrico. El modelo de regresión múltiple implica que la reacción de la
variable dependiente (en esta caso Vi ) es el mismo cuando una de las variable explicativas aumenta o
disminuye. Es decir, el comportamiento es simétrico.
Vt = α1 + α2 pt + δ1 Dt pt + εi ,
donde Dt = 1 si en el periodo t el precio subió y cero en caso contrario. En este caso puedes confirmar
que el efecto de un aumento en el precio (pt ) será diferente a cuando el precio disminuye. Este tipo
de efectos también se conocen como un efecto de umbral, siendo el umbral cero. Es decir, Dt = 1 si
pt − pt−1 > 0. En otras palabras, el efecto de umbral corresponde a cuando es importante tener en
cuenta en el modelo el hecho de que una variable supera un determinado valor (umbral).
1 Ver Alonso y Berggrun (2011) para una introducción al modelo CAPM y Alonso y Gallo (2013) para una discusión
del DOW.
2 Ver Alonso y Berggrun (2011) para una introducción al modelo CAPM.
5.1 Introducción 127
Continuemos con un ejemplo de cómo emplear las variables dummy para capturar cambio estruc-
tural. Por cambio estructural se entiende un cambio en cómo se comporta el DGP a partir de un
periodo determinado. Por ejemplo, el consumo en un país en el periodo t (Ct ) puede cambiar su
comportamiento después de un periodo determinado t ∗ . El cambio (estructural) en la relación del
Ct y del ingreso disponible de los hogares en el periodo t (Y dt ) se puede modelar empleando una
variable dummy (Dt ) que toma el valor de uno antes del periodo t ∗ y cero en caso contrario. El
modelo sería el siguiente:
Ct = β1 + β2Y dt + αDt + δ Dt Y dt + εt .
Sería conveniente que corroboraras que este modelo implica un cambio tanto en la parte del consumo
que no depende del ingreso (intercepto), así como de aquella que si depende de éste (pendiente).
Finalmente, veamos un ejemplo de cómo emplear variables dicotómicas para modelar la estacionali-
dad de una serie de tiempo (para una discusión amplia sobre este tema ver Alonso y Hoyos (2021)).
En la Figura 5.3 se presenta la tasa de desempleo mensual para Colombia. En esta serie se observa
una estacionalidad marcada. La estacionalidad es el comportamiento repetitivo que se encuentra en
una serie de tiempo en el mismo periodo al interior de un año (para una discusión amplia sobre este
tema ver Alonso y Hoyos (2021)).
14
12
10
8
Time
Podemos emplear las variables dicotómicas para desestacionalizar la tasa de desempleo mensual
(T Dt ) empleando el siguiente modelo:
128 Variables dummy
En la Figura 5.4 se presenta la tasa de desempleo observada y la desestacionalizada que fue obtenida
bajo el procedimiento descrito arriba3 .
Time
En las siguientes secciones estudiaremos en detalle el efecto de incluir variables dummy. Pero antes
de continuar es importante mencionar que cuando se crean variables dummy siempre se deben crear
una menos de las opciones disponibles. Esto se hace para evitar lo que se conoce como la “trampa
de las variables dummy”.
Es decir, ustedes notarán que en el caso de los días de la semana laboral (efecto DOW) se crearon 4
variables dicotómicas y no 5. Y así para todos los ejemplos descritos anteriormente. En el Capítulo 8
3 Existen otras formas de desestacionalizar una serie, pero estas están por fuera del alcance de este libro. Para una
discusión de las técnicas de desestacionalizar, se puede consultar Alonso y Hoyos (2021).
5.2 Usos de las variables dummy 129
se explicará con mayor claridad el porqué hacemos esto4 . Por ahora es importante recordar que si
existen p posibilidades, entonces debemos crear p − 1 variables ficticias.
Para comprender mejor el uso de las variables ficticias emplearemos un ejemplo sencillo que
solo emplea una variable independiente. En esta ocasión emplearemos un modelo para explicar
las cantidades vendidas (sell-out) de pasta dental de una marca famosa del país que llamaremos
“DBLANCOS” (para mantener el anonimato de la información) por el canal tradicional (tiendas
de barrio) en el mes t (Qt ). Para lograr este objetivo, el equipo de analítica solo cuenta con una
variable continua: la inversión en material promocional que se entrega a las tiendas minoristas en el
mes t (It ). Por otro lado, el equipo de analítica al realizar su entendimiento del negocio, ha recibido
información del departamento de mercadeo sobre un posible cambio en el comportamiento de las
cantidades vendidas en meses donde se venden paquetes de pague 2 lleve 3 frente a periodos en los
que no hay ninguna promoción. Afortunadamente se cuenta con información sobre aquellos meses
en los que se han realizado promociones de pague 2 lleve 3. En este caso podemos identificar cuatro
casos posibles, a continuación veremos cada uno estos casos.
En este caso se asume que la cantidades vendidas es igual tanto en tiempos de promoción como en
tiempos sin promoción. Esto implica la siguiente relación:
Qt = β1 + β2 It + εt . (5.1)
Como podemos apreciar en la Figura 5.5, tanto la pendiente como el intercepto de la función se
mantienen inalterados en todo el período de estudio.
4 Si se incluyen variables dummy para todas las opciones, una de estas variables no trae información nueva al modelo;
en otras palabras esa variable será redundante. Esto implicará que las variables no son independientes y por tanto se
violará un supuesto del teorema de Gauss-Markov. Por ejemplo, supongamos que en un modelo se desea incluir el sexo del
individuo como una variable explicativa. Para esto se crea una variable dummy Mi que toma el valor de uno si el inviduo i
es mujer y cero en caso contrario. Adicionalmente, se crea la variable Hi que toma el valor de uno si i es hombre y cero
en caso contrario. Ahora noten que si para un determinado individuo i Mi = 1, entonces tiene que ser cierto que Hi = 0.
Adicionalmente, si Mi = 0, entonces Hi = 1. Esto implica que Hi es una variable que sobra dado que su valor lo podemos
conocer con seguridad del valor que tome Mi .
130 Variables dummy
β2
β1
It
Fuente: Elaboración propia
En este caso β2 representa cuántas unidades vendidas por cada peso adicional de ingreso y β1 las
cantidades vendidas que no dependen del ingreso. Es decir, un solo modelo para todas las situaciones.
En el segundo caso, queremos modelar que las unidades vendidas son mayores en periodos con
promoción que en tiempos sin promoción (ceteris paribus5 ). Esto se puede representar con un
incremento de las ventas sin importar el nivel de inversión (intercepto de la función) para los meses
de promoción, al tiempo que se mantiene inalterada la pendiente. Este efecto lo recoge el siguiente
modelo:
Qt = β1 + β2 It + αDt + εt , (5.2)
Como podemos apreciar, la ecuación 5.2 sugiere que en periodos de promoción (Dt = 1) el DGP
(modelo) será:
Qt = (β1 + α) + β2 It + εt
En tiempos sin promoción, la variable dummy toma el valor de 0 y por lo tanto el modelo que
describe cantidades vendidas de cremas de dientes se reduce a:
Qt = β1 + β2 It + εt .
Con promoción
misma β2
Qt
β1 β1 + α
α
Sin promoción
It
Fuente: Elaboración propia
En este caso, α representa la diferencia del intercepto entre el periodo sin promoción y con promoción.
En otras palabras, la diferencia entre las ventas que no dependen de la inversión entre los meses con
promoción y aquellos que no tienen promoción. Además, se espera que α > 0, como se representó
en la Figura 5.6. Noten que este caso genera rectas paralelas.
En este caso, supongamos que las ventas son nuevamente mayor en meses de promoción que en
aquellos sin promoción, pero a diferencia del Caso II en el que solo cambiaba el intercepto de
la función, en este caso se presenta un cambio de la pendiente (se vende más por cada unidad
monetaria adicional de inversión en los meses de promoción). Este hecho lo podemos representar
con el siguiente modelo:
Qt = β1 + β2 It + γ (Dt It ) + εt , (5.3)
donde Dt se define igual que antes; igual a uno si se trata de un periodo con promoción y cero en
caso contrario.
La ecuación 5.3 nos muestra que en meses con promoción (la variable dummy toma el valor de 1) se
presenta un cambio en la pendiente. Es decir, tenemos que en tiempos con promoción el DGP que
describe las unidades vendidas toma la siguiente forma:
Qt = β1 + (β2 + γ) It + εt .
En tiempos sin promoción (la variable dummy toma el valor de 0) el DGP viene dado por:
Qt = β1 + β2 It + εt .
β2 + γ
Con promoción
β2
Qt
Sin promoción
β1
It
Fuente: Elaboración propia
En este caso γ corresponde a la diferencia entre el efecto de una unidad más de inversión sobre
las ventas en meses con promoción y sin promoción. En este caso se espera que γ > 0, como se
representó en la Figura 5.7. Antes de pasar al siguiente caso, es importante mencionar que este
tipo de modelos se denominan con interacción entre las variables. Es de decir, la variable dummy
interactúa con la variable It .
En este último caso, la venta de cremas dentales aumenta en tiempos con promoción por las dos
posibles vías; es decir, por un aumento tanto en el intercepto como en la pendiente. Este efecto es
capturado por un modelo con la siguiente especificación:
β2 + γ
Con promoción
β2
Qt
β1 β1 + α
Sin promoción
It
Fuente: Elaboración propia
Antes de pasar a practicar en R, es importante recordar que en la práctica no podemos saber a cuál de
los cuatro casos corresponde el DGP de los datos bajo estudio. Por eso, el científico de datos se ve
en la necesidad de probar diferentes especificaciones. En los Capítulos 3 y 4 ya estudiamos métodos
estadísticos que nos permitirán escoger entre uno de los casos, para una muestra determinada.
5.3 Práctica en R
Existen múltiples formas de crear variables dummy en R. Por un lado, para mostrar diferentes formas
de hacerlos emplearemos dos ejemplos. Por otro lado, es importante mencionar que si una variable
es leída como un factor, la función lm() convierte automáticamente dicha variable en una variable
dummy6 . Esto hace que en la mayoría de los casos no sea necesario generar una variable dummy
cuando los datos son de corte transversal.
Con este ejercicio ilustraremos cómo generar variables dummy con R en una serie de tiempo.
Continuando con el ejemplo de este capítulo, las cantidades vendidas de crema dental de la marca
DBLANCOS por el canal tradicional depende de la inversión en material promocional que se entrega
a las tiendas minoristas en el mes t. Por otro lado, se considera que la relación ha cambiado a partir
del ingreso de las tiendas de descuento en los barrios, como D1 o Justo y Bueno, puesto que le han
quitado participación a las tiendas de barrio. Así la pregunta de negocio es ¿qué tanto cambió el
6 Si
se desea cambiar el grupo de referencia (el valor para el cual la dummy toma el valor de cero), se puede emplear la
función relevel() que toma como argumentos la variable del data.frame que se quiera cambiar y ref que permite escribir
el nombre del nivel del factor (entre comillas) que se quiere emplear como la referencia. Por ejemplo, de la siguiente
manera relevel(data.frame$variable, ref = “SI”).
134 Variables dummy
impacto de nuestra inversión en material promocional con la entrada de las tiendas de descuento en
los barrios?
Como se discutió en la sección anterior, la relación entre estas dos variables implica un modelo lineal
como el siguiente:
Qt = β0 + β1 It + εt , (5.6)
donde β0 representa el intercepto, β1 nos indica cómo cambian las cantidades vendidas de crema
dental cuando cambia la inversión en el material promocional en una unidad y εt un término de error
aleatorio.
Los datos para 228 meses se encuentran en el archivo cremadental.csv. Carga los datos y guárdalos
en un objeto que llamaremos datos.dummy y cuya clase sea datos.dummy.frame.
2e+06
0e+00
Mes en la muestra
5.3 Práctica en R 135
Figura 5.10. Sell-in mensual de crema dental (en unidades) e inversión en material
promocional
4e+06
Ventas mensuales
2e+06
0e+00
Así parecería que existe una relación diferente para una parte de la muestra, ahora empleando el
conocimiento del negocio sabemos que las tiendas de descuento aparecieron a partir de 2009. De
esta manera, en este caso (a diferencia de la sección anterior) la variable dummy deberá ser definida
como Dt es 1 si la observación es del año 2009 o posterior y cero en caso contrario.
Para verificar la hipótesis de que la relación ha cambiado después de 2009 se considera el siguiente
modelo
Qt = β0 + β1 ingresot + α2 Dt + β2 (Dt ingresot ) + εt . (5.7)
Asegúrate que entiendes por qué este modelo genera un cambio tanto en intercepto como en la
pendiente.
Una vez las series sean leídas en R, necesitamos crear esta variable dummy. R provee una variedad
de posibilidades para la creación de variables dummy. En este caso emplearemos una prueba lógica
sobre la variable año del data.frame datos.dummy.
# prueba lógica que crea la variable dummy
D <- datos.dummy$año >= 2009
# se convierte de clase lógica a numérica y se incluye en la
# base de datos
datos.dummy$D <- as.numeric(D)
# chequeando la creación de la variable.
head(datos.dummy, 3)
tail(datos.dummy, 3)
datos.dummy[106:115, ]
Ahora sí podemos estimar el modelo deseado (asegúrate que puedes estimarlo). Nota que la interac-
ción entre la variable dummy y la inversión se debe incluir en la fórmula incluyendo D*inversión.
##
## Call:
## lm(formula = q ~ D + inversión + D * inversión, data = datos.dummy)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1562566 -96055 74047 399299 764185
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 7.217e+04 2.882e+05 0.250 0.802
## D -2.055e+05 3.859e+05 -0.532 0.595
## inversión 5.125e+00 5.697e-01 8.996 <2e-16 ***
## D:inversión -5.209e-01 7.650e-01 -0.681 0.497
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 550100 on 224 degrees of freedom
## Multiple R-squared: 0.4794,Adjusted R-squared: 0.4724
## F-statistic: 68.75 on 3 and 224 DF, p-value: < 2.2e-16
5.3 Práctica en R 137
Estos resultados muestran que es posible rechazar la hipótesis nula de que los cambios en pendiente
e intercepto son cero simultáneamente. Es decir, podemos concluir que existe un cambio estructural
en la relación de las ventas y el ingreso de los tenderos en 2009. Puedes constatar que si se compara
el modelo con variables dummy en el intercepto y pendiente con los modelos con solo cambio en
intercepto o solo cambio en pendiente se llegará a la conclusión que el mejor modelo es el que tiene
el cambio tanto en intercepto como en pendiente7 . No obstante individualmente ni el cambio en el
intercepto ni el de la pendiente es individualmente significativo.
Ahora continuemos con nuestro análisis de los datos y nuestra tarea de encontrar un buen modelo
para explicar las ventas. El modelo que acabamos de obtener no parece el mejor. Ahora, probemos
una segunda hipótesis del departamento de mercadeo. En ese departamento se cree que para los
años 2016, 2017 y 2018 la relación es diferente dado que las tiendas de descuento ya se habían
consolidado y expandido por toda Colombia. Construyamos una dummy segunda (D2t ) que tome
el valor de uno únicamente para los años comprendidos entre 2016 y 2018, periodo donde ya las
tiendas de descuento se habían expandido en Colombia.
Olvidémonos por un momento de los resultados encontrados anteriormente y partamos del modelo
expresado en 5.6 pero con la variable dummy expresada de la nueva forma. Determine si existe o no
un cambio estructural8 . Los resultados de los tres modelos se presentan en el Cuadro 5.1.
Dependent variable:
q
(1) (2) (3)
D −205,487.400
(385,894.200)
D2 −472,231.000∗∗∗
(119,814.800)
D:inversión −0.521
(0.765)
D2:inversión −2.240∗∗∗
(0.239)
Noten que en esta última ecuación estimada, el cambio en la pendiente e intercepto sí son significati-
vos individualmente (con un nivel de confianza del 99 %). Y conjuntamente también lo son son un
nivel de significancia del 99 %, como se muestra a continuación.
## Analysis of Variance Table
##
## Model 1: q ~ inversión
## Model 2: q ~ D2 + inversión + D2 * inversión
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 226 8.0141e+13
## 2 224 3.7944e+12 2 7.6347e+13 2253.5 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Así, podemos rechazar la hipótesis nula que no existió cambio en la pendiente y el intercepto para
los últimos 3 años. La evidencia muestra que este último modelo explica mucho mejor la muestra
que tenemos al frente y por tanto debería ser el indicado para tomar decisiones.
5.3 Práctica en R 139
En algunas ocasiones será necesario crear las variables dummy en vez de dejar que la función lm() las
cree automáticamente. Por ejemplo, suponga que tenemos datos para todos los días de la semana en
la base de datos y solo queremos crear variables dummy para los cinco días laborales. Si empleamos
esta variable con la función lm(), ésta creará seis variables dummy para todos los días de la semana
(y descarta una). En ese caso podemos emplear paquetes de R para hacer esta tarea más rápidamente.
La verdad no existe un mejor paquete para crear variables dummy, solo unos funcionan mejor que
otros en diferentes circunstancias. En las siguientes subsecciones veremos dos opciones de paquetes.
El paquete dummies
El paquete dummies (Brown, 2012) es bastante flexible y permite crear variables dummy de diferentes
maneras. Veamos un par de ejemplos. Creemos un data.frame con datos de ventas, la ciudad (variable
tipo factor) y el año.
str(ventas)
Ahora podemos emplear la función dummy() de este paquete para crear variables dicotómicas para
la ciudad. Esta función puede tomar como argumentos variables que sean caracteres, o factores, no
importa, en todo caso crea las variables dummy. Otro argumento importante es el caracter que se
quiere emplear como separador para el nombre de las variables dicotómicas que se crean.
library(dummies)
dummy(ventas$ciudades)
## LibroRegresion.RnwBogotá LibroRegresion.RnwCali
## [1,] 0 1
## [2,] 0 0
## [3,] 1 0
## [4,] 0 1
## LibroRegresion.RnwMedellin
## [1,] 0
## [2,] 1
140 Variables dummy
## [3,] 0
## [4,] 0
## LibroRegresion.Rnw_Bogotá LibroRegresion.Rnw_Cali
## [1,] 0 1
## [2,] 0 0
## [3,] 1 0
## [4,] 0 1
## LibroRegresion.Rnw_Medellin
## [1,] 0
## [2,] 1
## [3,] 0
## [4,] 0
Finalmente, es importante mencionar que se debe tener cuidado, pues este paquete creará p variables
dummy si hay p posibilidades. Así al momento de emplear esta variables en un modelo de regresión
se deberá omitir alguna de las variables dummmy para solo tener p − 1 variables9 . En el Capítulo 8
se explicará la razón técnica para esto.
El paquete fastDummies
Otra opción es el paquete fastDummies (Kaplan, 2020) . Este paquete tiene la función dummy_cols()
que permite al mismo tiempo que se crea la variable dummy descartar una de ellas. Esta función
implica por lo menos los siguientes argumentos:
donde:
9 Otra
opción es emplear la p variables dummy y omitir el intercepto. Pero en la mayoría de los casos esta no es una
buena idea.
5.3 Práctica en R 141
ignore_na: Cuando ignore_na = FALSE (opción por defecto) se crea una variable dummy
cuando se encuentra un “NA” en la variable a ser transformada. Si ignore_na = TRUE enton-
ces se omite las observaciones con “NA”, no se crea una nueva variable y a esa observación
se le asigna “NA” en todas las dummies que se creen. (Esta es la opción recomendada en la
mayoría de los casos.
Empleemos esta función con un data.frame similar al anterior, pero adicionemos datos perdidos en
la variable que transformaremos.
library(fastDummies)
dummy_cols(ventas$ciudades)
Quitemos la variable dummy para la opción que más se repite y descartemos la opción de crear una
dummy para las observaciones no disponibles (“NA”).
Ejercicios
5.1 Continuemos con el ejemplo realizado en este capítulo y estudiemos en mas detalle los
posibles modelos que se podían estimar con la dummy definida como: Dt = 1 si t es del año 2009
o posterior y cero en caso contrario.
Estima un modelo sin variables dummy, con solamente cambio en la pendiente, otro con solo
cambio en el intercepto y con cambio en ambos. Ahora, decide cuál modelo es mejor: sin cambios,
con dummy solo en intercepto, solo en pendiente, o con dummy en ambos.
6 . Selección automática de modelos
Explicar en sus propias palabras las opciones que existen para seleccionar automáticamente el
mejor modelo
Seleccionar el mejor modelo de regresión dada una cantidad grande de regresores empleando
R.
144 Selección automática de modelos
6.1 Introducción
En los capítulos anteriores hemos discutido cómo seleccionar el mejor modelo. Para ejemplificar
la selección de modelos hemos empleado casos en los que se cuenta con un número relativamente
reducido de posibles variables explicativas. Pero en la práctica es común que esto no ocurra, el
científico de datos típicamente se encuentra con problemas en los que se conoce claramente la
variable que se quiere explicar1 o predecir2 (variable dependiente) y un conjunto grande de posibles
variables explicativas. Pero no sabemos cuáles variables si son importantes y cuáles no al momento
de explicar nuestra variable de interés.
En general, si hay k − 1 variables independientes potenciales (además del intercepto) que pueden
explicar o predecir a la variable dependiente, entonces hay 2(k−1) subconjuntos de variables ex-
plicativas posibles para explicar3 los cambios en la variable dependiente. Es decir, existen 2(k−1)
modelos que pueden ser candidatos a ser el mejor modelo para explicar la variable dependiente.
En la práctica desconocemos cuál de esos modelos es el correcto. Y por tanto, tendríamos que
probar todos los posibles modelos para encontrar el correcto4 . Por ejemplo si tenemos 10 posibles
variables explicativas ((k − 1) = 10) entonces los posibles modelos serán 2(k−1) = 2(10) = 1024. Si
se tienen 20 variables candidatas, el número de posibles subconjuntos es de 1,048576 × 106 (más
de un millón de posibles modelos). Si son 25 posibles variables, entonces son 3,3554432 × 107 . Es
decir, aproximadamente 33 millones y medio de posibles modelos.
Así, si se cuenta con muchas variables candidatos a ser explicativas no es viable calcular todos los
posibles modelos y compararlos. No obstante, si las variables son relativamente pocas podría ser
viable estimar todos los posibles modelo y compararlos. Recordemos que en el capítulo anterior
estudiamos cómo comparar modelos para seleccionar al mejor empleando métricas como el R2
ajustado, los criterios de información AIC o BIC (Ver Sección 4.2) y pruebas estadísticas de modelos
anidados (Ver Sección 4.3.1) y no anidados (Ver Sección 4.3.2).
En este capítulo discutiremos diferentes algoritmos para encontrar el mejor modelo (o por lo menos
el modelo para ser un buen candidato a mejor modelo) de regresión múltiple que se ajuste a unos
datos determinados cuando se cuenta con un conjunto relativamente grande de posibles variables
explicativas. Estos algoritmos emplean como base los conceptos que ya hemos estudiado en los
capítulos anteriores. Así, entraremos directamente a una aplicación para mostrar estas aproximaciones
al problema de seleccionar el mejor modelo.
predictiva. Esto se hace solamente para ahorrar tiempo y espacio. Tienes que tener en cuenta que las técnicas que
estudaremos aquí pueden ser aplicadas para encontrar el mejor modelo de regresión independeintemente si este se emplea
o no para hacer analítica diagnóstica o predictiva y aún podría ser prescriptiva.
4 Nota que cuando se cuenta con una teoría que se desea probar, este problema no existe. Es decir, en la aproximación
econométrica tradicional discutida en la sección 1.3 la teoría nos dirá cuál debería ser el modelo a probar y este problema
de seleccionar el modelo con los datos desaparece. Pero como se discutió en esa misma sección la aproximación del
científico de datos es muy diferente y por tanto este problema de la selección del mejor modelo se encuentra en el centro
del quehacer diario del científico de datos que emplea el modelo de regresión.
6.1 Introducción 145
Emplearemos unos datos simulados para una variable dependiente (yi ) y 25 posibles variables expli-
cativas x ji donde j = 1, 2, ..., 25. Para cada variable se simulan 150 observaciones i = 1, 2, ..., 150.
El modelo del que se simulan los datos incluye las variables x1 a x25 únicamente y los coeficientes
son iguales a 1 para todos los casos (nota que en la vida real no conocemos esta información). La
información se encuentra disponible en el archivo DATOSautoSel.txt.
Carguemos los datos en un objeto que llamaremos datos y verifiquemos la clase del objeto leído y
de cada una de las variables en el objeto.
# lectura de datos
datos <- read.table("../Data/DATOSautoSel.txt", header = TRUE)
# clase de las columnas
str(datos)
## x1 x2 x3 x4 x5 x6 x7 x8 x9 x10
146 Selección automática de modelos
## 1 5.925 6.512 6.883 5.157 6.420 5.833 5.356 6.626 5.730 6.108
## 2 4.565 3.638 4.378 5.056 3.165 4.598 4.576 4.171 4.259 4.443
## x11 x12 x13 x14 x15 x16 x17 x18 x19 x20
## 1 4.817 6.106 6.613 4.821 6.296 5.449 6.425 6.705 5.564 7.154
## 2 5.582 5.713 5.069 4.247 4.548 4.125 4.196 4.800 4.163 5.636
## x21 x22 x23 x24 x25 y
## 1 6.466 6.309 5.407 5.915 5.119 42.799
## 2 3.931 4.612 4.097 5.638 5.616 30.372
## [1] "data.frame"
En este caso, tenemos 25 posibles variables, entonces son 3,3554432 × 107 (aproximadamente 33.6
millones) de posibles modelos.
Este capítulo está compuesto de dos partes. La primera, emplea un número reducido de variables
((k − 1) = 10) para mostrar una aproximación que emplea “fuerza bruta”. Es decir, se evalúan
todos los posibles modelos y se comparan. En la segunda parte veremos diferentes algoritmos para
encontrar el un modelo para ser candidato a mejor modelo cuando se tiene muchas posibles variables
explicativas, y para esta sección sí emplearemos las 25 variables.
La primera aproximación que estudiaremos es viable cuando se cuenta con pocas potenciales
variables para explicar la variable dependiente (y). En este caso, se puede emplear la “fuerza bruta”
de los computadores para encontrar el mejor modelo. Es decir, se puede emplear la capacidad de
cómputo para calcular todos los posibles modelos y compararlos.
Supongamos que contamos con las 10 primeras variables ((k − 1) = 10) de nuestros datos simulados
para explicar a y. Así, en este caso se compararán 1024 modelos. No empleamos todas las variables
explicativas para ahorrar tiempo en la estimación de todos los modelos y para hacer viable este
ejercicio. Creemos un data.frame con solo las variables que son de nuestro interés.
## x1 x2 x3 x4 x5 x6 x7 x8 x9 x10
## 1 5.925 6.512 6.883 5.157 6.420 5.833 5.356 6.626 5.730 6.108
## 2 4.565 3.638 4.378 5.056 3.165 4.598 4.576 4.171 4.259 4.443
## y
6.2 Empleando “fuerza bruta” 147
## 1 42.799
## 2 30.372
Empecemos por estimar un modelo lineal con todas las variables potenciales. Como sabemos esto se
puede hacer con la función lm() del paquete básico de R. Recuerda que esta función incluirá siempre
un intercepto a menos que se le indique lo contrario, empleando en la especificación del modelo un
-1).
Estimemos un modelo con todas las posibles variables contenidas en el objeto datos2 y guardemos
los resultados de la estimación en un objeto llamado modelo.
##
## Call:
## lm(formula = y ~ ., data = datos2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -7.4754 -1.5134 0.0137 1.4273 8.0533
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 11.21741 1.40780 7.968 5.24e-13 ***
## x1 0.65111 0.26894 2.421 0.016768 *
## x2 1.72908 0.28714 6.022 1.46e-08 ***
## x3 0.94195 0.27727 3.397 0.000888 ***
## x4 0.92954 0.26551 3.501 0.000623 ***
## x5 0.94561 0.25956 3.643 0.000379 ***
## x6 0.07626 0.26472 0.288 0.773712
## x7 0.01759 0.28152 0.062 0.950278
## x8 -0.24513 0.27869 -0.880 0.380598
## x9 -0.54115 0.27812 -1.946 0.053705 .
## x10 0.22042 0.28886 0.763 0.446720
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.496 on 139 degrees of freedom
## Multiple R-squared: 0.7168,Adjusted R-squared: 0.6964
## F-statistic: 35.18 on 10 and 139 DF, p-value: < 2.2e-16
Noten que de acuerdo a los resultados, las variables de x1 a x5 son estadísticamente significativas
(nivel de confianza del 95 %)5 . Las otras variables no son significativas.
5 La variable x9 es significativa con un nivel de confianza del 90 %. Usaremos un nivel de confianza del 95 %.
148 Selección automática de modelos
Ahora podemos investigar todos los 1024 posibles modelos. Esto lo podemos hacer con la función
all.posible.modelos() del paquete olsrr(Hebbali, 2020). Esta función requiere típicamente de un
solo argumento que corresponde a un objeto de un objeto de clase lm que contenga el modelo más
grande posible. Guardemos los resultados de ejecutar esta función en el objeto mod6 .
En el objeto mod se encuentran varios estadísticos que permiten resumir las características estadísti-
cas de todos los modelos estimados. Con un gráfico podemos resumir esta información.
library(ggplot2)
plot(mod)
6 Esto puede tomar un rato, dado que se están estimando 1024 modelos.
6.2 Empleando “fuerza bruta” 149
page 1 of 2 page 2 of 2
R−Square Cp SBIC
420
638 848 968 10131023
0.7 176 386
56 200
11 390
0.6
1 150
360
0.5
100 1
0.4 330
1
50 11
0.3 11 300
56 56
0 176 386 639 851 972 10131023 176 386 638 848 968 10131023
2.5 5.0 7.5 10.0 2.5 5.0 7.5 10.0 2.5 5.0 7.5 10.0
1 800
0.5 800
1
0.4 775 1
750
11
0.3 750 11 1023
56 1013
1023 968
176 386 56 848
638 848 968 1013 176 386 638
700 725
2.5 5.0 7.5 10.0 2.5 5.0 7.5 10.0 2.5 5.0 7.5 10.0
En el eje horizontal podemos ver el números de variables empleadas en cada modelo, mientras que
en el eje vertical encontramos el valor de la métrica. El triángulo muestra el modelo que maximiza o
minimiza el valor de la métrica para cada uno de los posibles número de variables. Concentrémonos
en el R2 ajustado (se desea maximizar) y los criterios de información (se desean minimizar): AIC,
SBC (o o también conocido como BIC). Recuerda que estas tres métricas penalizan la inclusión de
más variables en el modelo.
Empleando el criterio del R2 ajustado podemos llegar a la conclusión que el mejor modelo es uno
que emplea 6 variables (x1 x2 x3 x4 x5 x9). De hecho, ese modelo corresponde al modelo número
638 de todos los estimados. Esta información se puede obtener de la siguiente manera.
mod$mindex[which.max(mod$adjr)]
## [1] 638
mod$n[which.max(mod$adjr)]
## [1] 6
mod$predictors[which.max(mod$adjr)]
mod$mindex[which.min(mod$aic)]
## [1] 638
mod$n[which.min(mod$aic)]
## [1] 6
mod$predictors[which.min(mod$aic)]
Para el caso del BIC el modelo seleccionado es diferente. Este modelo emplea 4 variables (x2 x3 x4
x5 ) y ese modelo corresponde al modelo número 176 de los 1023 estimados.
mod$mindex[which.min(mod$sbc)]
## [1] 176
mod$n[which.min(mod$sbc)]
## [1] 4
mod$predictors[which.min(mod$sbc)]
Finalmente, tenemos todos modelos candidatos a ser el mejor modelo. Estimemos los dos modelos y
guardemos los resultados en los objetos (modelo1) y (modelo2). Los resultados se reportan en el
Cuadro 6.1.
Cuadro 6.1: Modelos seleccionados por las métricas tras emplear fuerza bruta
Dependent variable:
y
Modelo 1 Modelo 2
(1) (2)
x1 0.675∗∗
(0.263)
x2 1.692∗∗∗ 1.701∗∗∗
(0.271) (0.268)
x3 0.956∗∗∗ 0.857∗∗∗
(0.265) (0.263)
x4 0.978∗∗∗ 1.034∗∗∗
(0.249) (0.245)
x5 0.952∗∗∗ 0.997∗∗∗
(0.248) (0.247)
x9 −0.537∗∗
(0.266)
Noten que en este caso los modelos están anidados y por tanto se pueden comparar fácilmente
empleando una prueba F que compare un modelo restringido con uno sin restringir (Ver 4.3.1 para
una discusión del tema). Hagamos dicha comparación.
library(AER)
# comparación de modelos anidados
152 Selección automática de modelos
anova(modelo2, modelo1)
Según los resultados, no se puede rechazar la nula de que el modelo con restricciones (el pequeño)
es mejor que el sin restringir con un 99 % de confianza. Así (con un nivel de confianza del 99 %),
podemos concluir que el mejor modelo es el que incluye las variables (x2 x3 x4 x5). En este
caso sabemos que el modelo real que generó los datos incluye las variables x1 a x5. Así, nuestra
aproximación no encontró el modelo real, pero uno relativamente cercano. Con un 95 % de confianza
se puede rechazar la nula en favor del modelo sin restringir. En este caso el modelo incluiría
todas las variables de x1 a x5 pero también incluiría x9; tampoco es el modelo exacto, pero es lo
suficientemente cercano.
En algunas ocasiones es imposible encontrar el mejor modelo estimando todas las combinaciones
(como el caso en el que se tienen 25 variables pues existen 3,3554432 × 107 posibles modelos). A
continuación discutimos varios algoritmos que facilitan la tarea.
Por ejemplo, supongamos que empleamos un criterio como el valor p de la prueba de significancia
individual de cada variable en el modelo. En el primer caso (stepwise forward regression) se parte de
un modelo sin variables. Se empieza adicionando al modelo la variable que tenga el menor valor p.
De forma gradual se incluye la siguiente variable que tenga el valor p más pequeño, se sigue de esta
manera hasta que ya no quede ninguna variable para ingresar que sea significativa7 .
7 Noten que esta aproximación tiene un problema práctico difícil de resolver. Se emplean múltiples pruebas individuales
que acumulan el error tipo I. No existe almuerzo gratis, este es el costo de emplear esta aproximación. Adicionalmente, en
presencia de heteroscedasticidad (Ver Capítulo 9) o autocorrelación (Ver Capítulo 11) estos valores p no serían válidos por
no tener en cuenta el problema y por tanto las conclusiones podrían ser erradas.
6.3 Empleando estrategias inteligentes de detección de un mejor modelo 153
En el segundo caso (stepwise backward regression), se parte del modelo con todas las variables y se
empieza a eliminar variables que tenga el valor p más alto. El proceso se repite hasta que no se puedan
eliminar variables8 . Es fácil imaginarse cómo funcionarán ambos métodos si se emplean criterios
como el R2 ajustado o criterios de información. La figura 6.1 muestra de manera esquemática estas
dos aproximaciones.
A continuación veremos un ejemplo empleando la base de datos original con 25 variables explicativas.
La función regsubsets() del paquete leaps (Lumley, 2020) permite encontrar los mejores subcon-
juntos de variables explicativas utilizando el R2 ajustado partiendo de un modelo con todos los
regresores (lo llamaremos el modelo máximo). Esta función no está diseñada para funcionar con
el valor p. La función regsubsets() calcula los mejores modelos para todos los posibles número de
variables explicativas sin calcularlos de manera exhaustiva9 .
8 Noten que esta aproximación también tiene el problema mencionado para la aproximación forward.
9 Dado que los criterios de información (AIC o BIC) solo difieren al comparar modelos con número diferentes de
variables explicativas, el resultado final de los cálculos que realice esta función no depende del criterio de información
que se emplee (Lumley, 2020). Así, esta función se puede emplear también para escoger el mejor modelo empleando
los criterios de información. En ese caso el código que se presenta más adelante deberá ser modificado para emplear
dichos criterios. Pero no es necesario modificar el código correspondiente a la función regsubsets() que se presenta a
continuación.
154 Selección automática de modelos
donde:
Empleemos esta función para nuestro caso y evaluando modelos con todas las variables.
# cargando la libreria
library(leaps)
## $names
## [1] "np" "nrbar" "d" "rbar" "thetab"
## [6] "first" "last" "vorder" "tol" "rss"
## [11] "bound" "nvmax" "ress" "ir" "nbest"
## [16] "lopt" "il" "ier" "xnames" "method"
## [21] "force.in" "force.out" "sserr" "intercept" "lindep"
## [26] "nullrss" "nn"
##
## $class
## [1] "regsubsets"
# gráficos
plot(fwd.model, scale = "adjr2", main = "R^2 ajustado")
6.3 Empleando estrategias inteligentes de detección de un mejor modelo 155
R^2 ajustado
0.71
0.71
0.71
0.71
0.71
0.71
0.71
0.71
0.71
0.71
0.71
0.71
adjr2
0.71
0.7
0.7
0.7
0.7
0.7
0.69
0.69
0.69
0.69
0.67
0.63
0.55
(Intercept)
x1
x2
x3
x4
x5
x6
x7
x8
x9
x10
x11
x12
x13
x14
x15
x16
x17
x18
x19
x20
x21
x22
x23
x24
x25
Esta visualización presenta el R2 ajustado en el eje vertical y todas las potenciales variables eva-
luadas. El gráfico solo presenta los mejores modelos, en términos del R2 ajustado, entre todos los
mejores modelos evaluados. Una fila corresponde a un modelo y un cuadrado negro implica que
la correspondiente variable es incluida en el modelo que produce ese correspondiente R2 ajustado.
Así, entre más “arriba” en el gráfico se muestre un modelo (una fila), mejor será éste de acuerdo a
esta métrica. El mejor modelo es el último que se presenta (fila superior)10 . En este caso el modelo
tiene intercepto y las variables x1 a x5, x8 a x10, x17 y de x19 a x21. Estimemos ese modelo y
10 Si se desea seleccionar el modelo empleando criterios de información, entonces la última linea de código debería ser
modificada a plot(fwd.model, scale = “bic”) para el caso de SBC y para el caso del AIC se debe emplear plot(fwd.model,
scale = “Cp”).Cp corresponde al criterio de información Cp de Mallows. La literatura ha demostrado que los resultados
obtenido con el Cp de Mallows (en orden) son los mismos que los del AIC para los modelos lineales (Boisbunon y col.,
2013). Es decir, el criterio de información Cp y el AIC son equivalentes en el orden que generan.
156 Selección automática de modelos
##
## Call:
## lm(formula = y ~ x1 + x2 + x3 + x4 + x5 + x8 + x9 + x10 + x17 +
## x19 + x20 + x21, data = datos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -5.3123 -1.5515 -0.0106 1.5859 6.5427
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 11.0686 1.3692 8.084 2.94e-13 ***
## x1 0.5791 0.2706 2.140 0.034097 *
## x2 1.6885 0.2803 6.024 1.48e-08 ***
## x3 0.8892 0.2746 3.238 0.001511 **
## x4 0.9751 0.2605 3.743 0.000267 ***
## x5 0.8822 0.2719 3.244 0.001480 **
## x8 -0.3131 0.2705 -1.158 0.249075
## x9 -0.5104 0.2787 -1.832 0.069184 .
## x10 0.4187 0.2833 1.478 0.141721
## x17 0.3070 0.2586 1.187 0.237254
## x19 0.3087 0.2894 1.067 0.287945
## x20 -0.7848 0.2850 -2.754 0.006696 **
## x21 0.3129 0.2926 1.069 0.286774
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.419 on 137 degrees of freedom
## Multiple R-squared: 0.7378,Adjusted R-squared: 0.7148
## F-statistic: 32.12 on 12 and 137 DF, p-value: < 2.2e-16
Este modelo tiene variables no significativas individualmente que pueden ser removidas automática-
mente como se discute más adelante en la sección 6.4.1 de este capítulo.
También podemos realizar una versión de regresión por pasos hacia adelante utilizando la función
función ols_step_forward_p() del paquete olsrr(Hebbali, 2020) . Esta función nos permite usar el
criterio del valor p de las pruebas de significancia individuales y criterios de información. El único
argumento de esta función es un objeto de la clase lm. Ese modelo debe incluir todas las variables
explicativas que se desean explorar; es decir el modelo máximo. En este caso esta función puede ser
empleada de la siguiente manera:
6.3 Empleando estrategias inteligentes de detección de un mejor modelo 157
library(olsrr)
max.model <- lm(y ~ ., data = datos)
fwd.model.2 <- ols_step_forward_p(max.model)
Los resultados los podemos explorar de muchas maneras, pero la más sencilla es llamando al objeto.
Esto nos mostrará cuáles son las variables que se incluyen en el mejor modelo.
fwd.model.2
##
## Selection Summary
## -------------------------------------------------------------------------
## Variable Adj.
## Step Entered R-Square R-Square C(p) AIC RMSE
## -------------------------------------------------------------------------
## 1 x2 0.5495 0.5465 69.8613 764.2277 3.0502
## 2 x5 0.6303 0.6253 33.1629 736.5927 2.7727
## 3 x4 0.6742 0.6675 14.1062 719.6128 2.6116
## 4 x3 0.6964 0.6880 5.4785 711.0365 2.5298
## 5 x20 0.7069 0.6967 2.4563 707.7667 2.4943
## 6 x1 0.7200 0.7082 -1.8043 702.9271 2.4466
## 7 x9 0.7241 0.7105 -1.7852 702.6965 2.4370
## 8 x10 0.7281 0.7127 -1.7173 702.4882 2.4277
## 9 x17 0.7315 0.7142 -1.3183 702.6336 2.4214
## -------------------------------------------------------------------------
El modelo seleccionado incluye las siguientes variables: x1 a x5, x9, x10, x17 y x20 (asegúrese que
entiende el porqué se escoge dicho modelo según el gráfico). Estimemos este modelo y guardemóslo
en el objeto modelo4.
Los resultados se reportan en el Cuadro 6.2. Este modelo también tiene variables no significativas
individualmente.
158 Selección automática de modelos
Cuadro 6.2: Modelo seleccionado por el valor p con el algoritmo stepwise forward
Dependent variable:
y
Modelo 4
x1 0.663∗∗
(0.262)
x2 1.702∗∗∗
(0.266)
x3 0.958∗∗∗
(0.264)
x4 0.994∗∗∗
(0.260)
x5 0.930∗∗∗
(0.266)
x9 −0.501∗
(0.275)
x10 0.392
(0.281)
x17 0.333
(0.252)
x20 −0.735∗∗
(0.282)
Constant 11.174∗∗∗
(1.349)
Observations 150
R2 0.731
Adjusted R2 0.714
Residual Std. Error 2.421 (df = 140)
F Statistic 42.372∗∗∗ (df = 9; 140)
El mismo paquete tiene una función que permite realizar el algoritmo empleando el criterio de infor-
mación AIC (y otros como el mismo R2 ajustado). Para el AIC la función es ols_step_forward_aic()
. El único argumento necesario es un objeto de clase lm que contenga el modelo máximo.
##
## Selection Summary
## --------------------------------------------------------------------
## Variable AIC Sum Sq RSS R-Sq Adj. R-Sq
## --------------------------------------------------------------------
## x2 764.228 1679.790 1376.927 0.54954 0.54650
## x5 736.593 1926.638 1130.079 0.63030 0.62527
## x4 719.613 2060.953 995.764 0.67424 0.66754
## x3 711.036 2128.745 927.972 0.69642 0.68804
## x20 707.767 2160.781 895.936 0.70690 0.69672
## x1 702.927 2200.715 856.001 0.71996 0.70821
## x9 702.696 2213.351 843.366 0.72409 0.71049
## x10 702.488 2225.675 831.042 0.72813 0.71270
## --------------------------------------------------------------------
El modelo seleccionado incluye las siguientes variables: x1 a x5, x9, x10 y x20. Nota que al llamar al
objeto fwd.model.3 podemos observar cuál variable fue adicionada en cada uno de los 8 pasos. En
esta oportunidad, la primera variable adicionada al modelo fue la x2 y la última x10. Los resultados
los podemos ver de manera gráfica si se emplea la función plot() sobre el objeto fwd.model.3.
En el slot denominado predictors podemos encontrar las variables que se seleccionaron en el mejor
modelo. Así podemos estimar el mejor modelo según este algoritmo y el criterio de información
AIC de la siguiente manera (esto evita tener que escribir manualmente la fórmula como lo habíamos
hecho en los casos anteriores).
## y ~ x2 + x5 + x4 + x3 + x20 + x1 + x9 + x10
Cuadro 6.3: Modelo seleccionado por AIC con el algoritmo stepwise forward
Dependent variable:
y
Modelo 5
x1 0.686∗∗∗
(0.262)
x2 1.722∗∗∗
(0.267)
x3 0.950∗∗∗
(0.264)
x4 1.051∗∗∗
(0.257)
x5 1.051∗∗∗
(0.251)
x9 −0.425
(0.269)
x10 0.407
(0.282)
x20 −0.738∗∗
(0.283)
Constant 11.348∗∗∗
(1.346)
Observations 150
R2 0.728
Adjusted R2 0.713
Residual Std. Error 2.428 (df = 141)
F Statistic 47.203∗∗∗ (df = 8; 141)
Este modelo tiene dos variables no significativas individualmente. El lector ya conoce el procedi-
miento para eliminar estas variables que no son significativas para obtener un mejor modelo11 .
11 Más adelante en la sección 6.4.1 de este capítulo se discute como remover estas variables empleando una función que
automatiza el proceso.
6.3 Empleando estrategias inteligentes de detección de un mejor modelo 161
De manera similar podemos emplear tanto el paquete leaps como el paquete olsrr para encontrar un
modelo partiendo del modelo que incluye todas las variables y quitando una variable en cada paso.
En este caso tendremos el siguiente resultado si empleamos el criterio del R2 ajustado.
R^2 ajustado
0.71
0.71
0.71
0.71
0.71
0.71
0.71
0.71
0.71
0.71
0.71
0.71
adjr2
0.71
0.7
0.7
0.7
0.7
0.7
0.69
0.69
0.69
0.69
0.67
0.63
0.55
(Intercept)
x1
x2
x3
x4
x5
x6
x7
x8
x9
x10
x11
x12
x13
x14
x15
x16
x17
x18
x19
x20
x21
x22
x23
x24
x25
El modelo tiene las variables x1 a x5, x8 a x10, x17 y de x19 a x21. Es decir, llega a la misma
162 Selección automática de modelos
De manera similar, podemos emplear la función ols_step_backward_p() del paquete olsrr para
seleccionar el mejor modelo empleando el valor p de la prueba individual para eliminar variables. El
argumento que necesita esta función es el objeto que contenga la estimación del modelo máximo.
library(olsrr)
back.model.2 <- ols_step_backward_p(max.model)
En este caso el modelo seleccionado incluye las siguientes variables: x1 a x5, x8, x9, x10, x17, x19
a x21. En el compartimiento $model del objeto que acabamos de crear quedan almacenado el mejor
modelo guardémoslo en el objeto modelo6.
Nota que este modelo también tiene variables no significativas individualmente. Ustedes deberían
emplear las técnicas que ya conocen para encontrar un mejor modelo sin variables no significativas12 .
Los resultados se reportan en el cuadro 6.4.
Nuevamente, como lo hicimos con el algoritmo forward, podemos emplear el paquete olsrr y la
función ols_step_backward_aic() para encontrar el mejor modelo de acuerdo con este algoritmo y
el criterio de información AIC.
El modelo seleccionado incluye las siguientes variables: x1 a x5, x9, x10 y X20. Nuevamente
podemos recuperar el mejor modelo con el compartimiento $model del objeto que acabamos de crear.
Guardémoslo en le objeto modelo7.
Este modelo también tiene variables no significativas individualmente, pero muchas más que los
modelos anteriores. Esto no es una característica de este algoritmo, solo es coincidencia. Los
resultados se reportan en el Cuadro 6.4.
12 Más adelante en la sección 6.4.1 de este capítulo se discute como remover estas variables empleando una función que
automatiza el proceso.
6.3 Empleando estrategias inteligentes de detección de un mejor modelo 163
Cuadro 6.4: Modelo seleccionado por el valor p y el AIC con el algoritmo stepwise
backward
Dependent variable:
response
Modelo 6 Modelo 7
(1) (2)
x1 0.579∗∗ 0.686∗∗∗
(0.271) (0.262)
x2 1.689∗∗∗ 1.722∗∗∗
(0.280) (0.267)
x3 0.889∗∗∗ 0.950∗∗∗
(0.275) (0.264)
x4 0.975∗∗∗ 1.051∗∗∗
(0.261) (0.257)
x5 0.882∗∗∗ 1.051∗∗∗
(0.272) (0.251)
x8 −0.313
(0.271)
x9 −0.510∗ −0.425
(0.279) (0.269)
x17 0.307
(0.259)
x19 0.309
(0.289)
x21 0.313
(0.293)
En este caso el modelo tiene las siguientes variables: x1, x2, x3, x4, x5, x8, x9, x10, x17, x20, x21.
El lector puede estimar el correspondiente modelo (llámelo modelo8) los resultados de este modelo
se encuentran en Cuadro 6.5. Nuevamente, el modelo incluye variables no significativas.
6.3 Empleando estrategias inteligentes de detección de un mejor modelo 165
Dependent variable:
y
Modelo 8
x1 0.652∗∗
(0.262)
x2 1.694∗∗∗
(0.280)
x3 0.903∗∗∗
(0.274)
x4 0.976∗∗∗
(0.261)
x5 0.930∗∗∗
(0.268)
x8 −0.290
(0.270)
x9 −0.475∗
(0.277)
x10 0.426
(0.283)
x17 0.363
(0.253)
x20 −0.763∗∗∗
(0.284)
x21 0.329
(0.292)
Constant 11.108∗∗∗
(1.369)
Observations 150
R2 0.736
Adjusted R2 0.714
Residual Std. Error 2.420 (df = 138)
F Statistic 34.898∗∗∗ (df = 11; 138)
Otra forma de emplear este método es usando el valor p como criterio para quitar o incluir variables.
166 Selección automática de modelos
Esto se puede hacer empleando la función ols_step_both_p() del paquete olsrr. Esta función tiene
como único argumento un objeto de la clase lm que corresponde al modelo máximo. Para este
contexto tendremos el siguiente código.
En este caso el modelo seleccionado incluye las variables x1 a x5 y x20. El lector puede constatar que
el correspondiente modelo es el reportado en el Cuadro 6.6. Estimemos este modelo y guardémolo
en el objeto modelo9.
Finalmente, empleando el criterio de AIC tendremos que el mejor modelo incluye las variables x1 a
x5, x9, x10 y x20. Este modelo se reporta en el Cuadro 6.6 y se guardó en el objeto modelo10. Este
modelo tiene dos variables no significativas.
Cuadro 6.6: Modelo seleccionado por el valor p y el AIC con el algoritmo combinado
Dependent variable:
y
Modelo 9 Modelo 10
(1) (2)
x1 0.663∗∗ 0.686∗∗∗
(0.257) (0.262)
x2 1.664∗∗∗ 1.722∗∗∗
(0.265) (0.267)
x3 0.932∗∗∗ 0.950∗∗∗
(0.258) (0.264)
x4 1.087∗∗∗ 1.051∗∗∗
(0.253) (0.257)
x5 1.056∗∗∗ 1.051∗∗∗
(0.251) (0.251)
x9 −0.425
(0.269)
x10 0.407
(0.282)
En la práctica queremos emplear un único modelo, para eso debemos comparar los modelos que
hemos encontrado, anidados o no. Pero antes es mejor comparar modelos que tengan solo variables
explicativas significativas. Es decir, modelos que no tengan variables que no son estadísticamente
importantes para explicar la variable dependiente.
168 Selección automática de modelos
Recordemos que en este ejercicio de selección automática del mejor modelo hemos construido ya
varios modelos candidatos a mejor modelo como se resume en el cuadro 6.7.
Cuadro 6.7: Modelos construidos hasta ahora con diferentes algoritmos y criterios
En la siguiente subsección veremos un método para limpiar las variables no significativas de manera
automática y en la segunda subsección compararemos los modelos.
Como se discutió anteriormente, es posible que uno de los algoritmos nos arroje un modelo candidato
a ser el “mejor” modelo que tenga variables no significativas. Es decir, los algoritmos y criterios no
garantizan que el modelo tenga todas las variables estadísticamente significativas. Para eliminar de
manera iterativa aquellas variables que no sean individualmente significativas, podemos emplear la
función remueve.no.sinifica() que crearemos a continuación. Puedes seguir cada línea de la función
para entender los trucos que se emplean.
Para ver un ejemplo, regresemos al modelo construido por medio del algoritmo forward y el criterio
del R2 ajustado (ese modelo lo guardamos en el objeto modelo3). La función que acabamos de
construir (remueve.no.sinifica()) tiene dos argumentos, el primero es un objeto de clase lm y el
segundo el nivel de significancia que indica el nivel por debajo del cual se considera que una variable
es significativa. Corramos esta función para el objeto modelo3 con un nivel de significancia del 5 %
y guardemos los resultados en un objeto que denominaremos modelo3.a.
Dependent variable:
y
Modelo 3 Modelo 3a
(1) (2)
x1 0.579∗∗
(0.271)
x2 1.689∗∗∗ 1.780∗∗∗
(0.280) (0.266)
x3 0.889∗∗∗ 0.946∗∗∗
(0.275) (0.263)
x4 0.975∗∗∗ 1.212∗∗∗
(0.261) (0.254)
x5 0.882∗∗∗ 1.156∗∗∗
(0.272) (0.253)
x8 −0.313
(0.271)
x9 −0.510∗
(0.279)
x10 0.419
(0.283)
x17 0.307
(0.259)
x19 0.309
(0.289)
x21 0.313
(0.293)
Ahora todas las variables son significativas. Realicemos el mismo procedimiento para todos los
modelos. Asegúrate que puedes obtener los modelos que se reportan en los Cuadros 6.9 y 6.10.
Dependent variable:
y
Modelo 3a Modelo 4.a Modelo 5.a Modelo 6.a
(1) (2) (3) (4)
x1 0.663∗∗ 0.663∗∗
(0.257) (0.257)
Dependent variable:
y
Modelo 7.a Modelo 8.a Modelo 9.a Modelo 10.a
(1) (2) (3) (4)
x1 0.663∗∗ 0.663∗∗ 0.663∗∗
(0.257) (0.257) (0.257)
Los resultados muestran que los modelos 3 y 6 arriban a la misma especificación: x2, x3, x4, x5 y
x20 (en el cuadro 6.7 se puede ver a qué algoritmo y criterio corresponde cada uno de esos modelos).
Los modelos 4, 5, 8, 9 y 10 implican emplear las mismas variables explicativas: x1, x2, x3, x4, x5 y
x20 (en el cuadro 6.7 se puede ver a qué algoritmo y criterio corresponde cada uno de esos modelos).
El modelo 7 emplea solamente las variables x2, x3, X4, y X5. Estos resultados nos llevan a comparar
tres modelos que están anidados.
Finalmente, es importante comparar los 3 modelos. Los tres modelos que compararemos son:
Por simplicidad y para evitar confusiones, llamemos a estos tres modelos A, B y C, respectivamente.
Así, el modelo B se encuentra anidado en el A. El modelo C está anidado en el modelo B y por tanto
también en el C.
El siguiente paso del científico de datos es escoger entre estos modelos. Para esto podemos emplear
pruebas F para modelos anidados empleando la función anova() . Ahora procedamos a comparar los
modelos A y B.
anova(modeloB, modeloA)
La prueba F permite rechazar la hipótesis nula de que el modelo B es mejor que el modelo A (con un
95 % de confianza). Es decir, el modelo A es mejor. Ahora continuemos con las comparaciones el
modelo A y C
anova(modeloC, modeloA)
Con un 99 % de confianza se puede rechazar la hipótesis nula de que el modelo C es mejor que el A.
En otras palabras, el mejor modelo es el A:
Dependent variable:
y
Mejor modelo
x1 0.663∗∗
(0.257)
x2 1.664∗∗∗
(0.265)
x3 0.932∗∗∗
(0.258)
x4 1.087∗∗∗
(0.253)
x5 1.056∗∗∗
(0.251)
x20 −0.715∗∗∗
(0.266)
Constant 11.464∗∗∗
(1.343)
Observations 150
R2 0.720
Adjusted R2 0.708
Residual Std. Error 2.447 (df = 143)
F Statistic 61.274∗∗∗ (df = 6; 143)
Para finalizar, recordemos que los datos fueron simulados de un modelo real en el que las variables
explicativas eran de x1 a x5. Las otras variables no se empleaban para simular y. Nuestra selección
automática nos lleva a encontrar un modelo muy cercano al real.
6.5 Comentarios finales 175
Existen otros métodos de selección de modelos menos tradicionales. Por ejemplo, el paquete subselect
(Orestes Cerdeira y col., 2020) cuenta con algoritmos genéticos (GA) para la selección de modelos
(ver función anneal() ). También se puede explorar la función RegBest() del paquete FactoMineR
(Lê y col., 2008) que emplea otras técnicas de inteligencia artificial para la selección de modelos.
7 . Primer caso de negocio
Emplear las herramientas estudiadas en los capítulos anteriores para responder una pregunta
de negocio que implique analítica diagnóstica
Presentar los resultados de una regresión de manera gráfica empleando R.
Determinar cuál variable tiene más efecto sobre la variable explicativa empleando R.
178 Primer caso de negocio
7.1 Introducción
En los capítulos anteriores hemos estudiado las bases del modelo clásico de regresión múltiple y
cómo encontrar el mejor modelo para hacer analítica diagnóstica o analítica predictiva. En este
capítulo pondremos todos los elementos juntos para resolver un caso de negocio que implica analítica
diagnóstica. Adicionalmente, discutiremos cómo determinar cuál es la variable que tiene más impacto
sobre la variable dependiente y cómo presentar los resultados de un modelo de regresión de manera
visual. Por otro lado, es importante aclarar que aún no verificaremos el cumplimiento de los supuestos
del modelo de regresión múltiple que se discutirán en la segunda parte de este libro. Nuestro análisis
no estará completo hasta que se haga dicho supuesto. Pero este es un buen momento para hacer un
alto en el camino y aplicar todo lo que hemos estudiado hasta el momento.
Para responder esta pregunta contamos con una base de datos con los artículos publicados en un
periodo de dos años suministrada por Fernandes y col. (2015). La base de datos se encuentra en
el archivo DatosCaso1.csv. Estos datos son reales y fueron descargados de la siguiente página
https://archive.ics.uci.edu/ml/datasets/Online+News+Popularity.
La base de datos contiene 39644 observaciones y 61 variables que se presentan en el Cuadro 7.1.
1 Por una variable accionable en la jerga de los negocios, es aquella que le permite a la organización desarrollar
estrategias y campañas que permitan el logro de un objetivo.
7.2 La pregunta de negocio 179
1 Las stop words o palabras vacías son palabras comunes de un idioma que no aportan al análisis como por ejemplo:
los, las, tendremos, etc. Para discusión introductoria al análisis de textos se puede consultar Alonso Cifuentes (2020).
2 La LDA (Latent Dirichlet Allocation) en este contexto es una variable generada por modelo estadístico que asocia
palabras recogidas en documentos y las asocia con un pequeño número de temas. Los modelos que generan los LDA
pertenece al campo del aprendizaje de máquina.
180 Primer caso de negocio
7.3 El plan
La primera tarea del científico de datos y de todo el equipo de analítica de una organización es
precisar al máximo la pregunta de negocio que se desea responder. En este caso ya la pregunta
de negocio está clara. Así mismo, de la mano de la definición de la pregunta de negocio va la
identificación de los datos disponibles y la técnica o modelo a emplear. En este caso también esto es
muy claro, contamos con una base de datos definida y limpia y la técnica a emplear es la regresión
múltiple. Ahora debemos trazar una ruta analítica para responder la pregunta de negocio.
En este caso tenemos que explicar la variable shares para lo cuál contamos con 59 potenciales
variables explicativas. Nota que la primera variable en la base de datos no es relevante (url), ésta
corresponde al enlace del artículo. Esto implica que tendremos 5,7646075 × 1017 posibles modelos.
Un número muy grade de modelos como para emplear la fuerza bruta. Esto implica la necesidad de
emplear estrategias inteligentes de detección de un mejor modelo.
Empecemos por leer los datos y eliminar la primera variable que no es relevante.
Nota que los datos quedaron bien cargados y las clases de las variables son las correctas. Tu puedes
constatar que no existen datos perdidos y que la base está lista para iniciar a trabajar.
Procedamos a encontrar los mejores modelos empleando las estrategias de regresión paso a paso
forward, backward y combinada con el AIC, con el valor p y el R2 ajustado. Empleando las 9
opciones de algoritmos que se presentan en el Cuadro 7.2 estimaremos los modelos y eliminemos
aquellas variables que no sean significativas. Los modelos que obtenemos las guardaremos con los
nombres que se presentan el Cuadro 7.2.
7.4 Detección de posibles modelos 181
Antes de iniciar este proceso, partamos de estimar los modelos lineales con todas las variables
potenciales (max.model) y sin variables (min.model).
Nota que la variable weekday_is_sunday genera el fenómeno conocido como la trampa de las
variables dummy (ver 5), pues es redundante al tener las otras 6 variables dummy para los otros
días de la semana. R detecta esto y si bien se incluye en la fórmula no se incluye en la regresión. Lo
mismo ocurre con la variable is_weekend..
Ahora procedamos a encontrar modelos candidatos para ser los mejores modelos. Empecemos con la
estrategia stepwise Forward.
Empleando lo aprendido en el Capítulo 6 podemos obtener los modelos reportados en el Cuadro 7.3
tras limpiar las variables no significativas (con un 95 % de confianza). Estas estimaciones pueden
tomar un tiempo considerable. Tienes que tener paciencia para obtener estos resultados.
182 Primer caso de negocio
Dependent variable:
shares
Modelo 1 (R2 aj) Modelo 2 (valor p) Modelo 3 (AIC)
(1) (2) (3)
timedelta 1.989∗∗∗ (0.289) 1.956∗∗∗ (0.298) 1.934∗∗∗ (0.301)
n_tokens_title 115.292∗∗∗ (28.484) 114.826∗∗∗ (28.508) 112.215∗∗∗ (28.518)
num_hrefs 32.445∗∗∗ (5.996) 32.014∗∗∗ (6.093) 28.069∗∗∗ (6.318)
num_self_hrefs −50.164∗∗∗ (16.821) −56.079∗∗∗ (17.044) −50.839∗∗∗ (17.026)
n_tokens_content 0.313∗∗ (0.148)
LDA_02 −736.567∗∗∗ (245.926) −655.120∗∗∗ (245.728)
global_rate_positive_words −9,889.320∗∗ (4,102.061) −10,560.820∗∗∗ (4,098.269)
min_positive_polarity −2,079.226∗∗ (897.810) −1,882.670∗∗ (925.530)
num_imgs 18.426∗∗ (7.588) 16.852∗∗ (7.621)
average_token_length −465.212∗∗∗ (91.107) −375.242∗∗∗ (94.275) −336.700∗∗∗ (95.554)
data_channel_is_entertainment −720.981∗∗∗ (155.162) −844.317∗∗∗ (160.579) −885.439∗∗∗ (162.484)
LDA_03 711.475∗∗∗ (252.221)
kw_min_max −0.003∗∗ (0.001) −0.003∗∗∗ (0.001) −0.003∗∗∗ (0.001)
weekday_is_saturday 584.363∗∗ (242.131) 583.713∗∗ (242.093)
kw_min_avg −0.412∗∗∗ (0.070) −0.393∗∗∗ (0.070) −0.366∗∗∗ (0.071)
kw_max_avg −0.208∗∗∗ (0.020) −0.197∗∗∗ (0.020) −0.186∗∗∗ (0.021)
kw_avg_avg 1.814∗∗∗ (0.106) 1.743∗∗∗ (0.112) 1.655∗∗∗ (0.123)
self_reference_min_shares 0.023∗∗∗ (0.003) 0.022∗∗∗ (0.003) 0.023∗∗∗ (0.003)
self_reference_max_shares 0.003∗∗ (0.002) 0.003∗∗ (0.002) 0.003∗∗ (0.002)
data_channel_is_lifestyle −519.056∗∗ (264.402)
weekday_is_monday 500.355∗∗∗ (157.046) 467.261∗∗∗ (155.696) 470.091∗∗∗ (155.693)
global_subjectivity 2,257.169∗∗∗ (674.289) 2,751.031∗∗∗ (749.067) 2,545.088∗∗∗ (751.661)
avg_negative_polarity −1,762.793∗∗∗ (513.995) −1,675.100∗∗∗ (518.389) −1,517.854∗∗∗ (520.352)
is_weekend 399.482∗∗ (174.688)
Constant −2,273.864∗∗∗ (542.108) −1,863.821∗∗∗ (563.070) −1,947.287∗∗∗ (565.875)
Observations 39,644 39,644 39,644
R2 0.022 0.023 0.023
Adjusted R2 0.022 0.022 0.022
Residual Std. Error 11,500.240 (df = 39626) 11,498.180 (df = 39622) 11,497.820 (df = 39622)
F Statistic 52.669∗∗∗ (df = 17; 39626) 43.519∗∗∗ (df = 21; 39622) 43.641∗∗∗ (df = 21; 39622)
Los resultados presentados en el Cuadro 7.3 muestran tres modelos que no se encuentran anidados.
De manera similar en el Cuadro 7.4 se presentan los resultados de emplear el algoritmo stepwise
backward y tras limpiar las variables no significativas (con un 95 % de confianza).
7.4 Detección de posibles modelos 183
Dependent variable:
shares
Modelo 4 (R2 aj) Modelo 4 (valor p) Modelo 5 (AIC)
(1) (2) (3)
timedelta 2.061∗∗∗ (0.290) 2.005∗∗∗ (0.300)
n_tokens_title 109.600∗∗∗ (28.515) 117.813∗∗∗ (28.496)
n_tokens_content 0.344∗∗ (0.143) 0.392∗∗∗ (0.144)
num_hrefs 29.114∗∗∗ (6.263) 28.770∗∗∗ (6.193)
num_self_hrefs −46.305∗∗∗ (16.876) −48.638∗∗∗ (16.926)
average_token_length −270.978∗∗∗ (77.560)
data_channel_is_lifestyle −548.165∗∗ (264.778)
data_channel_is_entertainment −806.415∗∗∗ (158.995) −820.385∗∗∗ (160.393)
kw_min_max −0.003∗∗∗ (0.001) −0.003∗∗∗ (0.001)
kw_min_avg −0.394∗∗∗ (0.071) −0.402∗∗∗ (0.070)
kw_max_avg −0.202∗∗∗ (0.021) −0.200∗∗∗ (0.021)
kw_avg_avg 1.764∗∗∗ (0.118) 1.785∗∗∗ (0.113)
self_reference_min_shares 0.023∗∗∗ (0.003) 0.026∗∗∗ (0.003)
self_reference_max_shares 0.003∗∗ (0.002)
weekday_is_monday 498.951∗∗∗ (157.051)
LDA_03 831.991∗∗∗ (248.729) 3,823.354∗∗∗ (260.552)
weekday_is_tuesday −501.242∗∗∗ (170.702)
weekday_is_wednesday −353.003∗∗ (170.514)
weekday_is_thursday −520.139∗∗∗ (171.619)
weekday_is_friday −467.728∗∗ (185.668)
LDA_02 −829.469∗∗∗ (244.930)
global_subjectivity 2,573.787∗∗∗ (762.226)
global_rate_positive_words −9,992.733∗∗ (4,561.701)
LDA_04 1,586.553∗∗∗ (266.837)
rate_positive_words −1,925.147∗∗∗ (538.102) −1,090.105∗∗∗ (394.075)
LDA_01 974.634∗∗∗ (306.466)
data_channel_is_bus −673.282∗∗∗ (256.431)
rate_negative_words −2,213.520∗∗∗ (566.001) −1,432.505∗∗∗ (509.275)
avg_negative_polarity −2,051.808∗∗∗ (493.987) −1,809.646∗∗∗ (541.052)
is_weekend 399.337∗∗ (174.717) 501.066∗∗∗ (172.564)
kw_avg_max 0.002∗∗∗ (0.0005)
LDA_00 2,285.665∗∗∗ (389.917)
max_negative_polarity −1,329.028∗∗ (631.231)
min_negative_polarity −1,000.127∗∗∗ (231.201)
self_reference_avg_sharess 0.024∗∗∗ (0.002)
Constant −2,346.261∗∗∗ (548.107) −1,580.902∗∗∗ (579.263) 1,589.555∗∗∗ (411.287)
Observations 39,644 39,644 39,644
R2 0.022 0.022 0.012
Adjusted R2 0.022 0.022 0.012
Residual Std. Error 11,500.570 (df = 39626) 11,499.790 (df = 39621) 11,556.590 (df = 39631)
F Statistic 52.534∗∗∗ (df = 17; 39626) 41.072∗∗∗ (df = 22; 39621) 41.347∗∗∗ (df = 12; 39631)
Los resultados presentados en el Cuadro 7.4 muestran también tres modelos que no se encuentran
anidados.
Y finalmente, el Cuadro 7.5 se presentan los resultados de emplear el algoritmo combinado y tras
limpiar las variables no significativas (con un 95 % de confianza).
Dependent variable:
shares
Modelo 7 (R2 aj) Modelo 8 (valor p) Modelo 9 (AIC)
(1) (2) (3)
timedelta 1.813∗∗∗ (0.296) 1.934∗∗∗ (0.301) 1.934∗∗∗ (0.301)
n_tokens_title 112.667∗∗∗ (28.518) 112.215∗∗∗ (28.518) 112.215∗∗∗ (28.518)
num_hrefs 35.948∗∗∗ (5.852) 28.069∗∗∗ (6.318) 28.069∗∗∗ (6.318)
num_self_hrefs −45.905∗∗∗ (16.816) −50.839∗∗∗ (17.026) −50.839∗∗∗ (17.026)
n_tokens_content 0.313∗∗ (0.148) 0.313∗∗ (0.148)
average_token_length −262.432∗∗∗ (77.592) −336.700∗∗∗ (95.554) −336.700∗∗∗ (95.554)
global_subjectivity 2,545.088∗∗∗ (751.661) 2,545.088∗∗∗ (751.661)
data_channel_is_entertainment −862.271∗∗∗ (161.735) −885.439∗∗∗ (162.484) −885.439∗∗∗ (162.484)
kw_min_max −0.003∗∗∗ (0.001) −0.003∗∗∗ (0.001) −0.003∗∗∗ (0.001)
weekday_is_saturday 583.713∗∗ (242.093) 583.713∗∗ (242.093)
kw_min_avg −0.368∗∗∗ (0.071) −0.366∗∗∗ (0.071) −0.366∗∗∗ (0.071)
kw_max_avg −0.185∗∗∗ (0.021) −0.186∗∗∗ (0.021) −0.186∗∗∗ (0.021)
kw_avg_avg 1.648∗∗∗ (0.122) 1.655∗∗∗ (0.123) 1.655∗∗∗ (0.123)
self_reference_min_shares 0.023∗∗∗ (0.003) 0.023∗∗∗ (0.003) 0.023∗∗∗ (0.003)
self_reference_max_shares 0.003∗∗ (0.002) 0.003∗∗ (0.002) 0.003∗∗ (0.002)
weekday_is_monday 487.990∗∗∗ (157.080) 470.091∗∗∗ (155.693) 470.091∗∗∗ (155.693)
LDA_02 −643.086∗∗∗ (235.856) −655.120∗∗∗ (245.728) −655.120∗∗∗ (245.728)
global_rate_positive_words −10,560.820∗∗∗ (4,098.269) −10,560.820∗∗∗ (4,098.269)
min_positive_polarity −1,882.670∗∗ (925.530) −1,882.670∗∗ (925.530)
LDA_03 670.391∗∗∗ (247.454) 711.475∗∗∗ (252.221) 711.475∗∗∗ (252.221)
avg_negative_polarity −2,160.921∗∗∗ (492.394) −1,517.854∗∗∗ (520.352) −1,517.854∗∗∗ (520.352)
is_weekend 414.940∗∗ (174.657)
Constant −1,815.480∗∗∗ (562.734) −1,947.287∗∗∗ (565.875) −1,947.287∗∗∗ (565.875)
Observations 39,644 39,644 39,644
R2 0.022 0.023 0.023
Adjusted R2 0.022 0.022 0.022
Residual Std. Error 11,500.330 (df = 39626) 11,497.820 (df = 39622) 11,497.820 (df = 39622)
F Statistic 52.633∗∗∗ (df = 17; 39626) 43.641∗∗∗ (df = 21; 39622) 43.641∗∗∗ (df = 21; 39622)
Los resultados presentados en el Cuadro 7.5 muestran que los modelos seleccionados por los criterios
de valor p (Modelo 8) y AIC (Modelo 9) y el algoritmo combinado son el mismo. El modelo obtenido
con este algoritmo y el criterio de R2 aj no está anidado en estos dos modelos anteriores.
En resumen, contamos con 9 modelos con las variables explicativas que se representan con una X
en el Cuadro 7.6. Los modelos 3, 8 Y 9 son los mismos. Los otros seis modelos no se encuentran
anidados. Por eso tendremos que comparar estos modelos con pruebas de modelos no anidados.
7.5 Comparación de modelos 185
Cuadro 7.6: Variables explicativas incluidas en cada uno de los modelos calculados
Forward Backward Both
modelo 1 modelo 2 modelo 3 modelo 4 modelo 5 modelo 6 modelo 7 modelo 8 modelo 9
timedelta X X X X X X X X
n_tokens_title X X X X X X X X
n_tokens_content X X X X X X
num_hrefs X X X X X X X X
num_self_hrefs X X X X X X X X
average_token_length X X X X
num_imgs average_token_length X X
data_channel_is_lifestyle X
data_channel_is_entertainment X X X X X X X X
kw_min_max X X X X X X
kw_min_avg X X X X X X X
kw_max_avg X X X X X X X X
kw_avg_avg X X X X X X X X
kw_avg_max X
self_reference_min_shares X X X X X X X X
self_reference_max_shares X X X X X X X
self_reference_avg_sharess X
data_channel_is_lifestyle X
data_channel_is_bus X
weekday_is_monday X X X X X X X
weekday_is_tuesday X
weekday_is_wednesday X
weekday_is_thursday X
weekday_is_friday X
weekday_is_saturday X X X X X
is_weekend X X X X
LDA_00 X
LDA_01 X
LDA_02 X X X X X X
LDA_03 X X X X X X X X
LDA_04 X
global_rate_positive_words X X X X X
global_subjectivity X X X X X X
min_positive_polarity X X X X
avg_negative_polarity X X X X X X X X
max_negative_polarity X
min_negative_polarity X
rate_positive_words X X
rate_negative_words X X
Empecemos compararndo todos los modelos con la prueba J. En el Cuadro 7.7 se reportan los
valores p de las pruebas J que permiten probar la hipótesis nula de que el modelo de la fila es mejor
que el de la columna.
Cuadro 7.7: Valores p de las pruebas J (H0 : modelo de la fila es mejor que el de la
columna)
modelo 2 es mejor que el 1 no se puede rechazar y lo mismo ocurre para el modelo 3 comparado
con el modelo 1. Es decir, con un 99 % de confianza, podemos concluir que los modelos 2 y 3 son
mejores que el 1. Para los otros modelos no se puede afirmar algo similar, y por tanto la prueba no es
concluyente. Al comparar el modelo 2 con el 3, se encuentra que se puede rechazar la nula de que
el modelo 2 es mejor que el tres, pero no que el modelo 3 es mejor que el 2. Es decir, el modelo 3
es mejor. La prueba no puede concluir al comparar el modelo 2 con el 4; y permite concluir que el
modelo 2 es mejor que el 5, 6 y 7.
Para el modelo 3, no se puede rechazar que este modelo sea mejor que cada uno de los otros 6
modelos, pero las hipótesis nulas opuestas si se pueden rechazar (con un 99 % de confianza). Podemos
encontrar que el modelo 4 es mejor que el 6. El modelo 5 no es mejor que los otros modelos, lo
mismo ocurre con el modelo 6. Y el modelo 7 es mejor que el 4 y el 6. Para las otras comparaciones
que no se mencionan la prueba no es concluyente. Es decir, poniendo todo junto el modelo 3 es el
mejor.
Ahora empleemos las métricas AIC y BIC y el R2 ajustado, para comparar los modelos. Los
resultados se reportan en el Cuadro 7.8 y BIC()
El R̄2 y el AIC sugieren que el mejor modelo es el 3, mientras que el BIC selecciona el 1. Poniendo
todo junto, el mejor modelo será el modelo 3 (que es igual al 8 y 9) el cuál se reporta en el Cuadro
7.9.
modelo 1 es mejor al modelo de la respectiva columna. Y esa hipótesis nula se puede rechazar en todos los casos.
7.5 Comparación de modelos 187
Dependent variable:
shares
Modelo 3
kw_avg_avg 1.655∗∗∗
(0.123)
self_reference_min_shares 0.023∗∗∗
(0.003)
kw_max_avg −0.186∗∗∗
(0.021)
kw_min_avg −0.366∗∗∗
(0.071)
timedelta 1.934∗∗∗
(0.301)
num_hrefs 28.069∗∗∗
(6.318)
n_tokens_title 112.215∗∗∗
(28.518)
data_channel_is_entertainment −885.439∗∗∗
(162.484)
LDA_03 711.475∗∗∗
(252.221)
avg_negative_polarity −1,517.854∗∗∗
(520.352)
average_token_length −336.700∗∗∗
(95.554)
global_subjectivity 2,545.088∗∗∗
(751.661)
weekday_is_monday 470.091∗∗∗
(155.693)
kw_min_max −0.003∗∗∗
(0.001)
weekday_is_saturday 583.713∗∗
(242.093)
num_self_hrefs −50.839∗∗∗
(17.026)
n_tokens_content 0.313∗∗
(0.148)
LDA_02 −655.120∗∗∗
(245.728)
global_rate_positive_words −10,560.820∗∗∗
(4,098.269)
min_positive_polarity −1,882.670∗∗
(925.530)
self_reference_max_shares 0.003∗∗
(0.002)
Constant −1,947.287∗∗∗
(565.875)
Observations 39,644
R2 0.023
Adjusted R2 0.022
Residual Std. Error 11,497.820 (df = 39622)
F Statistic 43.641 ∗∗∗ (df = 21; 39622)
En todo el proceso que desarrollemos es importante no olvidar cuál es la pregunta de negocio que
queremos responder. Nuestra pregunta de negocio inicial era ¿De qué depende el número de shares
de un artículo? Esta pregunta ya la podemos responder con el mejor modelo encontrado en este caso
las variables que explican los shares son:
De esas variables podemos denotar que aquellas que al aumentarse aumentan los shares son:
Las otras variables tienen una relación inversa con los shares.
Ahora, este listado de variables es útil, pero contar con 28 para generar sugerencias a los escritores
puede implicar una tarea ardua. Si recuerdan, la segunda pregunta de negocio derivada que teníamos
es ¿Existe alguna variable accionable que pueda ser modificada para generar una recomendación a
los escritores? En la siguiente sección discutiremos cómo identificar las variables más importantes al
momento de explicar la variable dependiente.
Una pregunta habitual cuando estamos haciendo analítica diagnóstica es ¿cuál variable es la mas
importante para explicar la variable dependiente? Existen varias formas de responder esta pregunta
que discutiremos a continuación.
Tal vez la primera respuesta que salta a la mente a la pregunta cuál variable explicativa es la más
importante es emplear los coeficientes estimados (β̂ ). Pero, ¡esta respuesta no es correcta! No se
puede ver el valor del coeficiente estimado para determinar cuál variable es la más importante,
dado que estos coeficientes estimados están en las unidades en las que se expresa tanto la variable
7.6 Identificación de la variable más importante 189
dependiente como la independiente. Así el tamaño de los coeficientes dependen de las unidades en
que esté medida la variable dependiente y cada una de las variables explicativas.
Si comparamos coeficientes estimados estaríamos comparando peras con manzanas. Para resolver
este problema se emplean los coeficientes estandarizados. Estos implican expresar los coeficientes
estimados en términos de desviaciones estándar. Es decir, el coeficiente estandarizado para la variable
explicativa j (con5 j = 2, 3, ..., k) será:
sj
β̂ j,estand = β̂ j , (7.1)
sy
donde s j y sy representan la desviación estándar muestral del regresor j y de la variable dependiente,
respectivamente.
Una vez los coeficientes se encuentran estandarizados, podremos comparar el efecto de un aumento
de una desviación estándar de cada una de las variables explicativas sobre la variable dependiente;
este efecto también medido en desviaciones estándar.
# install.packages('relaimpo')
library(relaimpo)
# cálculo de los coeficientes estandarizados al cuadrado
coef.estandarizados <- calc.relimp(modelo3, type = "betasq")
# coeficientes estandarizados
coef.estandarizados <- sqrt(coef.estandarizados$betasq)
coef.estandarizados
## kw_avg_avg self_reference_min_shares
## 0.18759294 0.03841779
## kw_max_avg kw_min_avg
## 0.09764905 0.03576353
## timedelta num_hrefs
## 0.03562264 0.02735715
## n_tokens_title data_channel_is_entertainment
## 0.02040320 0.02913085
## LDA_03 avg_negative_polarity
## 0.01806327 0.01667411
## average_token_length global_subjectivity
## 0.02445276 0.02554175
## weekday_is_monday kw_min_max
## 0.01511678 0.01413186
## weekday_is_saturday num_self_hrefs
## 0.01209565 0.01685682
## n_tokens_content LDA_02
## 0.01266509 0.01589746
## global_rate_positive_words min_positive_polarity
## 0.01583054 0.01154752
## self_reference_max_shares
## 0.01169232
## kw_avg_avg
## 0.1875929
Ahora podríamos afirmar que la variable que más afecta a los shares es la variable kw_avg_avg.
Esto lo podemos mostrar de una manera visual empleando la Figura 7.1.
7.6 Identificación de la variable más importante 191
kw_avg_avg
kw_max_avg
self_reference_min_shares
kw_min_avg
timedelta
data_channel_is_entertainment
num_hrefs
global_subjectivity
average_token_length
Variable explicativa
n_tokens_title
LDA_03
num_self_hrefs
avg_negative_polarity
LDA_02
global_rate_positive_words
weekday_is_monday
kw_min_max
n_tokens_content
weekday_is_saturday
self_reference_max_shares
min_positive_polarity
Otra forma de medir el aporte relativo de cada una de las variables explicativas es determinar la
proporción adicional de la variación de la variable dependiente que es explicada por cada una de las
variables, dado que los otros regresores ya están incluidos en el modelo. Es decir, el aumento en el
R2 que se obtiene al adicionar el respectivo regresor dado que ya están en el modelo las otras k − 2
variables explicativas .
Esta medida de importancia relativa se puede calcular con la función calc.relimp() del paquete
relaimpo que ya habíamos empleado. En este caso, debemos camiar el valor del argumento type a
“last ” .
192 Primer caso de negocio
aporte_relativo1
aporte_relativo1$last[which.max(aporte_relativo1$last)]
## kw_avg_avg
## 0.004468595
Según este método, podemos afirmar que la variable que más afecta a los shares es la variable
kw_avg_avg. Esto lo podemos mostrar de una manera visual empleando la Figura 7.2.
7.7 Generación de las recomendaciones 193
kw_avg_avg
kw_max_avg
self_reference_min_shares
timedelta
data_channel_is_entertainment
kw_min_avg
num_hrefs
n_tokens_title
Variable explicativa
average_token_length
global_subjectivity
weekday_is_monday
num_self_hrefs
avg_negative_polarity
LDA_03
LDA_02
kw_min_max
global_rate_positive_words
weekday_is_saturday
n_tokens_content
min_positive_polarity
self_reference_max_shares
Sabemos que las variables de las que dependen los shares son las siguientes 28:
194 Primer caso de negocio
De esas variables la mas importante es kw_avg_avg (independientemente del método que emplee-
mos).
Entonces, el promedio de palabras claves debe ser lo más grande posible, pues esta es la variable
mas importante al momento de explicar los shares.
Tu puedes continuar generando recomendaciones con los resultados. Por ejemplo, nota que existen
variables no accionables como timedelta sobre la cual no se puede actuar, no obstante en este caso la
mayoría de variables son accionables.
Ahora veamos cómo se pueden presentar los resultados de una manera mas amigable que emplear
cuadros. El Cuadro 7.9 puede no ser la mejor opción de presentar los resultados para la mayoría de
públicos, en especial para los tomadores de decisiones. En esos casos podríamos emplear gráficos
para mostrar los resultados. Por ejemplo, el paquete jtools (Long, 2020) permite visualizar los
resultados de un objeto lm. Veamos rápidamente como funciona este paquete.
La función plot_summs() permite visualizar rápidamente un objeto lm. Si solo usamos como
argumento un objeto lm obtendremos una visualización rápida.
library(jtools)
plot_summs(modelo3)
7.8 Generación de visualizaciones de los resultados 195
kw_avg_avg
self_reference_min_shares
kw_max_avg
kw_min_avg
timedelta
num_hrefs
n_tokens_title
data_channel_is_entertainment
LDA_03
avg_negative_polarity
average_token_length
global_subjectivity
weekday_is_monday
kw_min_max
weekday_is_saturday
num_self_hrefs
n_tokens_content
LDA_02
global_rate_positive_words
min_positive_polarity
self_reference_max_shares
Este gráfico permite ver los coeficientes y sus respectivos intervalos de confianza. El intervalo por
defecto es del 95 % y emplea los errores estándar estimados por MCO.
Un problema de este gráfico es que los coeficientes están en diferentes escalas y el estimador del
coeficiente asociado a “global_rate_positive_words” es grande (en valor absoluto) respecto a los
otros coeficientes. Algo similar ocurre con el coeficiente asociado a “global_subjectivity”. Cómo
lo discutimos en la sección 7.6.1, los coeficientes estimados (β̂ ) dependen de las unidades en que
se midan las variables explicativas (y la dependiente). Cono lo vimos, una forma de evitar esto es
graficar los coeficientes estandarizados empleando los argumentos scale y transform.response. Por
defecto estos dos argumentos son fijados en FALSE, si los pasamos a TRUE las variables explicativas
(scale) y la dependiente (transform.response) son estandarizadas. En nuestro caso podemos obtener
los coeficientes estandarizados y los correspondientes intervalos de confianza de la siguiente manera.
kw_avg_avg
self_reference_min_shares
kw_max_avg
kw_min_avg
timedelta
num_hrefs
n_tokens_title
data_channel_is_entertainment
LDA_03
avg_negative_polarity
average_token_length
global_subjectivity
weekday_is_monday
kw_min_max
weekday_is_saturday
num_self_hrefs
n_tokens_content
LDA_02
global_rate_positive_words
min_positive_polarity
self_reference_max_shares
Podemos cambiar otras opciones del gráfico. Por ejemplo, podemos incluir un intervalo de confianza
del 99 % y del 95 %.
kw_avg_avg
self_reference_min_shares
kw_max_avg
kw_min_avg
timedelta
num_hrefs
n_tokens_title
data_channel_is_entertainment
LDA_03
avg_negative_polarity
average_token_length
global_subjectivity
weekday_is_monday
kw_min_max
weekday_is_saturday
num_self_hrefs
n_tokens_content
LDA_02
global_rate_positive_words
min_positive_polarity
self_reference_max_shares
self_reference_max_shares
min_positive_polarity
global_rate_positive_words
LDA_02
n_tokens_content
num_self_hrefs
weekday_is_saturday
kw_min_max
weekday_is_monday
global_subjectivity
average_token_length
avg_negative_polarity
LDA_03
data_channel_is_entertainment
n_tokens_title
num_hrefs
timedelta
kw_min_avg
kw_max_avg
self_reference_min_shares
kw_avg_avg
−0.1 0.0 0.1 0.2
Estimate
7.8 Generación de visualizaciones de los resultados 199
kw_avg_avg
self_reference_min_shares
kw_max_avg
kw_min_avg
timedelta
num_hrefs
n_tokens_title
data_channel_is_entertainment
LDA_03
avg_negative_polarity
average_token_length Model
global_subjectivity Model 1
weekday_is_monday Model 2
kw_min_max
weekday_is_saturday
num_self_hrefs
n_tokens_content
LDA_02
global_rate_positive_words
min_positive_polarity
self_reference_max_shares
num_imgs
is_weekend
rescale.distributions = TRUE)
is_weekend
num_imgs
self_reference_max_shares
min_positive_polarity
global_rate_positive_words
LDA_02
n_tokens_content
num_self_hrefs
weekday_is_saturday
kw_min_max
Model
weekday_is_monday
global_subjectivity Model 1
average_token_length Model 2
avg_negative_polarity
LDA_03
data_channel_is_entertainment
n_tokens_title
num_hrefs
timedelta
kw_min_avg
kw_max_avg
self_reference_min_shares
kw_avg_avg
−15000 −10000 −5000 0 5000
Estimate
También podemos omitir una variable si no queremos que cree “ruido” al momento de la presenta-
ción6 .
kw_avg_avg
self_reference_min_shares
kw_max_avg
kw_min_avg
num_hrefs
n_tokens_title
data_channel_is_entertainment
LDA_03
avg_negative_polarity
average_token_length
global_subjectivity
weekday_is_monday
kw_min_max
weekday_is_saturday
num_self_hrefs
n_tokens_content
LDA_02
global_rate_positive_words
min_positive_polarity
self_reference_max_shares
En este capítulo hemos seguido el proceso paso a paso para responder una pregunta de negocio
empleando un modelo de regresión para hacer analítica diagnóstica . Adicionalmente, discutimos
cómo encontrar la variable más importante y cómo visualizar los resultados. Antes de continuar, es
importante resaltar que no se han chequeado los supuestos del modelo de regresión, y por tanto no
podemos estar seguros que el método de MCO empleado nos provee estimadores MELI.
En los siguientes capítulos estudiaremos cómo constatar si los supuestos se cumplen y en caso que
estos no se cumplan, cómo solucionar el problema. En el Capítulo 10 retomaremos este caso de
negocio y constataremos si se cumplen los supuestos del modelo.
Es importante recalcar que aún no podemos sacar conclusiones finales para tomar decisiones, pues
no estamos seguros si el modelo que estimamos es bueno (cumple los supuestos del Teorema de
Gauss-Markov). En el Capítulo 10 retomaremos esta pregunta de negocio.
Parte III
Problemas econométricos
8 . Multicolinealidad
Identificar los diferentes síntomas que presenta un modelo estimado en presencia de multicoli-
nealidad.
Efectuar con R diferentes pruebas formales, con el fin de detectar multicolinealidad en el
modelo.
Decidir si los problemas generados por la multicolinealidad se deben o no solucionar.
Solucionar, de ser necesario, el problema de multicolinealidad empleando R.
206 Multicolinealidad
8.1 Introducción
Como lo habíamos discutido en capítulos anteriores, si el modelo de regresión múltiple cumple con
los supuestos que se resumen en el recuadro abajo, entonces el Teorema de Gauss-Markov demuestra
que los estimadores MCO son MELI (Mejor Estimador Lineal Insesgado) y por lo tanto tienen la
menor varianza posible cuando se comparan con todos los estimadores lineales posibles.
Ahora veamos qué ocurre si no se cumple una parte del supuesto 2: Las X2 , X3 , ..., Xk son fijas y
linealmente independientes. En especial, que las variables explicativas (Xs) no sean linealmente
independientes entre sí. Es importante anotar que la violación de la otra parte del supuesto no tiene
grandes implicaciones sobre el resultado que los estimadores MCO sean MELI. En el Anexo al final
de este capítulo se presenta la demostración de la insesgadez y eficiencia (Ver sección 8.7) de este
estimador si la variables explicativas son estocásticas.
En este capítulo nos concentramos en la violación del supuesto de independencia lineal de las
variables explicativas. Este problema que puede presentar un conjunto de datos se conoce con el
nombre de multicolinealidad o colinealidad.
Los supuestos 1 y 2 del teorema del Gauss Markov señalan la existencia de una relación lineal entre
las variables explicativas y la dependiente, además de una relación linealmente independiente entre
las variables explicativas (X’s). La Figura 8.1 representa estos supuestos. Los círculos representan las
variables y sus intersecciones la relación entre ellas. Podemos observar que existe una relación entre
la variable explicada y las independientes1 , pero a su vez existe independencia entre estas últimas2 .
1 Esta relación se representa por el área en común entre el círculo que representa la variable explicativa y la dependiente.
2 No existe área en común entre las variables explicativas.
8.1 Introducción 207
X3
X1
Y X2
El problema de multicolinealidad aparece cuando tenemos algún tipo de relación lineal entre las
variables independientes o entre un subconjunto de ellas.
En el siguiente gráfico podemos apreciar la presencia de una relación entre las variables X2 y X3 ; es
decir, una parte de la información proporcionada por X2 está a su vez contenida en la variable X3 . En
este caso, si X2 cambia, esto provoca un cambio directo en Y (representado por β2 ) y también un
cambio indirecto; pues al cambiar X2 , X3 cambia y esto a su vez provoca el cambio en Y . La Figura
8.2 representa esta posibilidad donde el supuesto no se cumple porque existe una relación entre dos
variables.
X3
X1
Y X2
También podría darse el caso en el que todas las variables independientes o un grupo de ellas
se encuentren relacionadas. En la Figura 8.3 se presenta un ejemplo donde todas las variables
explicativas comparten la información contenida en cada una de ellas.
208 Multicolinealidad
X3
X1
Y X2
Todos los casos anteriores son ejemplos de multicolinealidad. En la siguiente sección se describen
los diferentes grados de este problema. Posteriormente se discute como detectar la existencia de este
problema y como solucionar el problema. Finalmente se presenta una aplicación en R.
En general, cuando hay cierto grado de relación lineal entre las variable independientes decimos
que existe multicolinealidad (o colinealidad). En la práctica, tendremos diferentes grados de mul-
ticolinealidad. Por ejemplo en la Figura 8.4 se presentan los cuatro posibles grados o tipos de
multicolinealidad.
8.2 Los diferentes grados de multicolinealidad 209
X1 X1
Y Y X2
X2
X3
X1 X2 X1 X2
Y Y
Partamos de un ejemplo. Supongamos que queremos explicar la relación entre el peso en kilogra-
mos de un individuo (kgi ) con las horas diarias promedio de actividad física (hai ,) y las calorías
consumidas. Veamos qué sucede si empleamos el siguiente modelo:
donde cdi y csi corresponden a las calorías consumidas por día y calorías consumidas por semana
por el individuo i, respectivamente.
Las variables cdi y csi presentan una relación lineal perfecta (y por tanto multicolinealidad perfecta)
debido a que siempre vamos a tener que 7 × cdi = csi y por lo tanto las X’s no son linealmente
independientes entre sí.
1 ha1 cd1 7cd1
kg1
1 ha2 cd2 7cd2
kg2 1 ha3 cd3 7cd3
y= X= (8.1)
.. 1 ha4 cd4 7cd4
.
kgn
1 ha5 cd5 7cd5
n×1 .. .. .. ..
. . . . n×4
Nota que la cuarta columna de la matriz X es una combinación lineal del vector columna 3 (ver la
sección 14.7 para una discusión del concepto de combinación lineal de vectores). Cuando existe
multicolinealidad perfecta, una columna es combinación lineal de otra y otras columnas.
Las consecuencias de esta relación entre dos columnas de la matriz X es que ésta no tendrá ran-
go columna completo y por tanto XT X no tendrá rango completo. Es decir, det(XT X) = 0. Así,
−1 −1
XT X no existirá y por tanto β̂ = XT X XT y no existirá3 . En este caso, si queremos eliminar
la multicolinealidad perfecta entre cdi y csi , debemos eliminar cualquiera de las dos variables. No
importa cuál se elimine, ya que ambas están aportando la misma información al modelo.
Ahora, supongamos que la economía tiene tres diferentes sectores: primario (Agricultura, minería,
ganadería, etc.), secundario (Manufacturas, etc.), terciario (Comercio, servicios, etc.) y además un
individuo solo puede recibir un salario si trabaja en uno de esos tres sectores.
1 si i ∈ Sec. Primario
D1i =
0 o.w.
1 si i ∈ Sec. Secundario
D2i =
0 o.w.
1 si i ∈ Sec. Terciario
D3i = ,
0 o.w.
Si analizamos la expresión matricial de este modelo, nos damos cuenta rápidamente del problema
que aparece. Matricialmente el modelo será:
1 E1 C1 1 0 0
1 E2 C2 0 0 1
w1
1 E3 C3 0 1 0
w2
1 0 0 1
E4 C4
y= X=
..
.
1 E5 C5 0 0 1
wn n×1 1 E6 C6 1 0 0
.. .. .. .. .. ..
. . . . . . n×6
Para todas las observaciones, tenemos que D1i + D2i + D3i = 1. Además, la columna de la constante
será igual a 1 en cada observación. Por lo anterior, concluimos que las X 0 s no son linealmente
independientes, al existir una combinación lineal de las columnas 4, 5 y 6 que es exactamente igual
a la primera columna.
Si queremos no tener multicolinealidad perfecta entre las variables dummy y el intercepto debemos
eliminar una de las dummy obteniendo el siguiente modelo:
Ahora,
D1i + D2i 6= 1 ∀i
En general cuando usamos variables dummy tenemos que tener cuidado si existen j posibi-
lidades diferentes entonces usamos j − 1 variables dummy, o j variables dummy y quitamos
el intercepto, así evitamos la multicolinealidad perfecta. Esto permite evitar la “trampa de las
variables dummy”.
En la práctica, el problema de multicolinealidad perfecta es muy raro, pero sí es común contar con
modelos con variables independientes altamente correlacionadas entre sí, sin que esta relación sea per-
fecta. Supongamos que dos o más variables
T están relacionadas (pero no de manera perfecta), en este
−1
T
caso se tendrá que el det X X = X X existe, pero tiende a cero. Por lo tanto, la matriz X X
T
−1
si existe pero en general tendrá valores muy grandes. Recuerde que XT X = |XT1X| Ad j XT X .
por tanto el R2 y el F − Global serán relativamente grandes ya que estos dependen del SSR.
Así, los síntomas más comunes de la multicolinealidad no perfecta7 se pueden resumir de la siguiente
manera:
No obstante la multicolinealidad no perfecta provoca estos síntomas, en muchos casos este problema
es ignorado por los científicos de datos. Una razón para ignorar la existencia de la multicolinealidad no
perfecta es que se privilegie un R2 alto para el problema bajo estudio. En especial, si la interpretación
de los coeficientes no es importante, pero si se desea generar buenas predicciones (se está haciendo
analítica predictiva ), entonces se podría privilegiar la existencia de este problema en vez de entrar a
solucionarlo. En todo caso, siempre es mejor saber si este problema existe o no, ya sea que se ignore
o no.
h i −1
5Var β̂ = σ 2 XT X .
6 Recordemos que tc = β̂i
.
sβ̂
i
7 Antes de continuar es importante resaltar que la multicolinealidad no perfecta no es un problema del modelo que
se estima sino de la muestra con la que se cuenta. Es decir, se puede estimar el mismo modelo, pero con una muestra
diferentes y no tener multicolinealidad. Por eso al problema de multicolinealidad se le clasifica como un problema de los
datos.
8 Esto ocurre porque la matriz XT X −1 cambiaría mucho con incluir o eliminar una fila de X.
9 Esto ocurre porque XT X −1 cambiaría mucho con incluir o eliminar una columna de X.
8.3 Pruebas para la detección de multicolinealidad 213
Por otro lado, existen algunas técnicas estadísticas que permiten lidiar con el problema de la
multicolinealidad no perfecta, como por ejemplo la “ridge regression” o el método de componentes
principales para condensar la información de las variables relacionadas en una sola. Pero en la
realidad las prácticas más empleadas por los científicos de datos para “lidiar” con la multicolinealidad
no perfecta son:
Además de chequear los síntomas, en la práctica es necesaria la utilización de pruebas más formales
con el fin de detectar la presencia de multicolinealidad no perfecta. A continuación se describen tres
de las pruebas más utilizadas para este fin11 .
10 En la sección 2.4, se presenta la demostración del teorema de Gauss-Markov. En esta demostración, es fácil notar
que las propiedades de insesgadez y mínima varianza de los estimadores MCO dependen de los supuestos asociados al
término de error y no a qué tan grande o pequeño sea el determinante de la matriz X T X.
11 Formalmente, las pruebas disponibles para detectar la multicolinealidad son mas unas métricas que sirven como
indicador de la presencia del problema. Lo que veremos a continuación no son pruebas en el sentido estricto al no
involucrar un estadístico de prueba y una comparación con un valor de una distribución o un valor p asociado a la decisión.
214 Multicolinealidad
Dado que uno de los síntomas de la multicolinealidad no perfecta es que los errores estándar de
los coeficientes estimados por el método de MCO (y por tanto su varianza) es más grande de lo
que debería ser, una forma de detectar la existencia de este problema es mirar cómo se “infla” la
varianza de un coeficiente por no ser este independiente a los demás. En otras palabras, el Factor de
Inflación de Varianza (V IF por su sigla en inglés que viene del término Variance Inflation Factor)
compara cuál hubiese sido la varianza de un coeficiente determinado si la correspondiente variable
fuera totalmente independiente a las demás con el valor realmente observado de dicha varianza. Así,
el V IF mide cuántas veces se aumentó la varianza de un coeficiente por la existencia de un posible
problema de multicolinealidad no perfecta.
Algunos autores como Hair y col. (2014) argumentan que si el V IFj excede 3.0, entonces se considera
que existe un problema de multicolinealidad. Otros autores como Sheather (2009) afirman que un
V IFj mayor a 4 es síntoma de un problema grande. No obstante una regla empírica (rule of thumb)
muy común en la práctica es considerar el problema de multicolinealidad alta si el V IFj es mayor a
10 (Ver por ejemplo Kutner, M. H.; Nachtsheim, C. J.; Neter (2004)). .
Esta prueba diseñada por Belsley y col. (1980) también es conocida con el nombre de prueba Kappa.
Esta prueba se basa en los valores propios12 de la matriz XT X. Ellos demostraron que empleando el
valor propio máximo y mínimo de esta matriz es posible detectar la multicolinealidad. La prueba se
construye de la siguiente manera:
s
λ1
κ= (8.4)
λk
donde λ1 es el valor propio más grande de XT X y λk es el valor propio más pequeño. Los autores
demostraron que si κ > 20 entonces existe un problema de multicolinealidad.
El costo de esta aproximación es que los nuevos parámetros estarán sesgados13 , pero la varianza es
más pequeña; es decir, existe un “tradeoff” entre varianza y sesgo. Como dicen los economistas,“no
hay un almuerzo gratis” pues este método implica la aparición de un nuevo parámetro l.
Cómo establecer este nuevo parámetro se convierte en la gran pregunta de este método. Antes de
continuar es importante anotar que la regresión de Ridge es un recurso de última instancia. Solo se
emplea cuando la multicolinealidad es casi perfecta.
−1
b (l) = XT X + lI XT y (8.5)
Escanea el siguiente código o visita el siguiente enlace para ver un video sobre la técnica
PCA.
13 En el Anexo de este capítulo, sección 8.7, se presenta una demostración del sesgo que presenta este estimador.
216 Multicolinealidad
Enlace: https://youtu.be/-EQFB_iiqd4
Es decir, que lo que se quiere obtener es una matriz W , de p filas con k columnas, de tal forma que
proyectada sobre la matriz X, con n filas y p columnas, permita obtener una matriz Y , con n filas y k
columnas, que contenga el máximo de información posible y un menor número de variables:
Y = XW (8.7)
Para un mayor discusión de la técnica de PCA se puede consultar Alonso (2020). Esta aproximación
implica los siguientes pasos:
Es común que los científicos de datos empleen una aproximación diferente a las dos anteriores para
solucionar el problema de la multicolinealidad. Dado que los científicos de datos típicamente se
enfrentan a tener una clara variable dependiente y un grupo grande de variables explicativas, una
aproximación natural es descartar de manera recursiva las variables del modelo que tengan un V IF
más grande de un determinado umbral (típicamente mayor a 4).
De esta manera, se arriba a un modelo con todas las variables con un V IF relativamente pequeño.
Esta solución es muy fácil de automatizar como lo discutiremos en la siguiente sección.
8.5 Práctica en R
El objetivo de este ejercicio es aplicar las tres pruebas de multicolinealidad anteriormente descritas
y de ser necesario solucionar dicho problema. En este caso el gerente del hospital de nivel tres
“SALUD PARA LOS COLOMBIANOS”, ubicada en la ciudad de Bogotá, se encuentra al frente de
una reestructuración de los salarios que recibe su equipo de trabajo con el objetivo de lograr equidad
laboral con enfoque de género. Se presume que existen brechas salariales entre hombres y mujeres14 .
Los datos se encuentran disponibles en el archivo DatosMultiColinealidad.csv.
La pregunta de negocio es si existe o no una brecha salarial entre hombres y mujeres. Uno de los
métodos más utilizados para determinar el efecto de la discriminación en la brecha salarial es la
propuesta por Oaxaca (1973), quienes sugieren una técnica para medir la diferencia que tiene sobre
el ingreso, características como el capital humano entre géneros. El modelo modelo a estimar es el
siguiente:
donde
1 si el individuo i es mujer
Di =
0 o.w.
Además, ln(ihi ) representa el logaritmo natural del ingreso por hora del individuo i, yedui y expi
denotan los años de educación y de experiencia del individuo i. Antes de analizar los datos, es claro
que la especificación de este modelo incluye dos variables que están relacionadas, pero no de manera
lineal; es decir, exp y exp2 . Como la relación es cuadrática y no lineal, no hay razón por la cual
esperar, a priori, la presencia de multicolinealidad perfecta o no perfecta.
Como siempre, el primer paso será cargar los datos y constatar que estos quedan bien cargados.
Noten que la variable exp2i no está en el data.frame leído y no es necesaria crearla para estimar el
modelo. Empleemos la función lm() del paquete básico de R para estimar el modelo descrito en 8.8.
La notación I() en la fórmula implica que R hará la operación presentada dentro del paréntesis y se
agregará como una variable explicativa. Los resultados de la estimación del modelo se reportan en el
14 Los datos y la aproximación de esta sección corresponden a Bernat (2004).
218 Multicolinealidad
Cuadro 8.1. Antes de entrar a calcular los estadísticos para determinar la presencia de multicolineali-
dad, es importante anotar que los síntomas no están presentes, pero esto no implica la ausencia de
multicolinealidad. Recuerden que antes de analizar cualquier resultado es importante estar seguros
que no existen problemas de multicolinealidad.
Dependent variable:
Lnih
Modelo original
yedu 0.131∗∗∗
(0.004)
exp 0.034∗∗∗
(0.005)
I(expˆ2) −0.0003∗∗∗
(0.0001)
sexomujer −0.117
(0.084)
exp:sexomujer −0.004
(0.008)
I(expˆ2):sexomujer 0.0001
(0.0002)
Constant 5.856∗∗∗
(0.075)
Observations 1,415
R2 0.454
Adjusted R2 0.452
Residual Std. Error 0.574 (df = 1408)
F Statistic 195.348∗∗∗ (df = 6; 1408)
V IF
Para calcular el V IF emplearemos el paquete car (Fox y Weisberg, 2019) . Este paquete tiene la
función vif() cuyo único argumento es un objeto de clase lm con el modelo estimado.
library(car)
vif(res1)
En este caso el V IF para las variables exp, exp2 , sexo y la interacción de esta última con las dos
anteriores son muy grandes. Por ejemplo, exp tiene una varianza aproximadamente 20 veces más
grande que si las variables no presentan colinealidad.
Para realizar esta prueba es necesario encontrar la matriz XT X y calcular sus valores propios. Esto
se puede hacer empleando la función model.matrix() del paquete básico de R que permite obtener
la matriz X. Esta función solo tiene como argumento un objeto de clase lm con el modelo estimado.
Los valores propios de una matriz se pueden encontrar empleando la función eigen() .
# matriz X
XTX <- model.matrix(res1)
# se calculan los valores propios
e <- eigen(t(XTX) %*% XTX)
# se muestran los valores propios
e$val
## [1] 6090.644
Este estadístico es muy grande (κ = 6090.644165). Esta prueba también coincide en la existencia de
un problema serio de multicolinealidad.
Finalmente y teniendo en cuenta los resultados de todas las pruebas efectuadas, podemos concluir
que el modelo presenta un alto grado de multicolinealidad. Esto probablemente se debe a la alta
correlación entre las variables exp y exp2 . De la definición de las variables sabemos que no existe
una relación lineal perfecta, pero nuestro hallazgo puede ser síntoma de que los valores de la variable
exp corresponden a un rango relativamente corto, para el cual la relación exponencial puede ser
aproximada por una relación lineal. Ahora bien, no estamos frente a un problema de multicolinealidad
perfecta, y por lo tanto no se está violando el segundo supuesto del teorema de Gauss Markov. Por
otro lado, el modelo teórico que se emplea para calcular las brechas salariales necesita incluir en la
especificación ambas variables por razones bien fundamentadas en Oaxaca (1973) y sería incorrecto
eliminar alguna de las dos variables.
Ahora tu puedes proceder a determinar si existe o no diferencias salariales entre las mujeres y los
hombres para esta muestra.
Ahora supongamos que si se deseara solucionar el problema de multicolinealidad. Nota que en este
caso en específico esto no parece una buena opción, pero de todas maneras procederemos a resolver
el problema solo para ejemplificar la técnica.
Creemos una función que permite eliminar de manera automática e iterativa las variables cuyos
respectivos coeficientes tengan un V IF superior a un umbral determinado (u). La función remue-
ve.VIF.grande() se presenta a continuación, sigue con detalle cada línea de la función para entender
los trucos que se emplean.
##
## Call:
## lm(formula = myForm, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.11988 -0.29420 -0.00166 0.30334 2.63580
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 5.874e+00 6.593e-02 89.090 < 2e-16 ***
## yedu 1.307e-01 3.979e-03 32.846 < 2e-16 ***
## exp 3.204e-02 3.918e-03 8.178 6.39e-16 ***
## I(exp^2) -2.616e-04 7.688e-05 -3.402 0.000687 ***
## sexomujer -1.539e-01 3.977e-02 -3.871 0.000114 ***
## I(exp^2):sexomujer -2.025e-05 4.902e-05 -0.413 0.679642
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
222 Multicolinealidad
vif(res2)
linearRidge(formula,data,lambda,scaling)
donde:
##
## Call:
## linearRidge(formula = Lnih ~ yedu + exp + I(exp^2) + sexo + sexo *
## exp + sexo * I(exp^2), data = datos)
##
##
## Coefficients:
## Estimate Scaled estimate
## (Intercept) 6.233e+00 NA
8.5 Práctica en R 223
princomp(formula,data, cor=TRUE)
donde:
formula: formula con las variables independientes númericas, no incluir la variable depen-
diente
data: data frame que contiene los datos
cor: indica si se va a calcular los PC empleando la matriz de varianzas y covarianzas o
empleando la matriz de correlaciones
summary(res.pca)
## Importance of components:
## Comp.1 Comp.2 Comp.3
## Standard deviation 634.6930542 4.026690e+00 3.775598e+00
## Proportion of Variance 0.9999244 4.024724e-05 3.538434e-05
## Cumulative Proportion 0.9999244 9.999646e-01 1.000000e+00
Ahora decidamos el número de componentes. Para esto podemos emplear un gráfico de codo (elbow
graph también conocido como scree plot). Para esto es necesario mirar la proporción de la varianza
de todos los datos explicada por cada componente principal.
Nuestro objetivo es encontrar los componentes que explican la mayor varianza. Recuerden que
queremos conservar tanta información como sea posible utilizando estos componentes. Entonces,
cuanto mayor sea la varianza explicada, mayor será la información contenida en esos componentes.
Para calcular la proporción de la varianza explicada por cada componente, simplemente dividimos la
varianza por la suma de la varianza total. Esto resulta en:
Noten que el primer componente principal explica el 99.9 % de la varianza. Aunque parece evi-
dente que debemos quedarnos con el primer componente, ¿cómo decidimos cuántos componentes
deberíamos seleccionar para la etapa de modelado cuando no es tan clara la respuesta?
par(mfrow=c(1,2))
plot(prop_varex, xlab = "Componente principal",
type = "b")
type = "b")
226 Multicolinealidad
1.00000
1.0
0.99998
0.6
0.99996
0.4
0.99994
0.2
0.0
1.0 1.5 2.0 2.5 3.0 1.0 1.5 2.0 2.5 3.0
En este tipo de gráficos se busca el “codo” (elbow). En este caso no se observa el codo, es decir
la información se resume en el primer componente. Finalmente se extraen la matriz proyectada
(valores de los componentes principales que remplazarán a las variables originales), los cuales vamos
a emplear en estimar de nuevo el modelo inicial.
head(res.pca$scores)
PCA.res <- res.pca$scores[, 1]
head(PCA.res)
Noten que en este caso es imposible interpretar el coeficiente asociado al componente principal.
Y para variar realicemos los gráficos de codo con el paquete ggplot2 (Wickham, 2016) y el paquete
gridExtra (Auguie, 2017) .
library(gridExtra)
PVEplot <- qplot(c(1:3), prop_varex2) +
geom_line() +
xlab("Componente Principal") +
ylab("PVE") +
ggtitle("Gráfico de codo") +
ylim(0, 1)
1.00 1.00
0.75 0.75
PVE
0.50 0.50
0.25 0.25
0.00 0.00
1.0 1.5 2.0 2.5 3.0 1.0 1.5 2.0 2.5 3.0
Componente Principal Componente Principal
Noten que el resultado es muy similar. Deberíamos emplear 1 componente. Los demás pasos del
procedimiento los puede realizar por su cuenta.
No obstante la multicolinealidad no perfecta provoca estos síntomas, en muchos casos este problema
es ignorado por los científicos de datos. Una razón para ignorar la existencia de la multicolinealidad no
perfecta es que se privilegie un R2 alto para el problema bajo estudio. En especial, si la interpretación
8.6 Comentarios finales 229
de los coeficientes no es importante, pero si se desea generar buenas predicciones (se está haciendo
analítica predictiva ), entonces se podría privilegiar la existencia de este problema en vez de entrar a
solucionarlo. En todo caso, siempre es mejor saber si este problema existe o no, ya sea que se ignore
o no.
Ejercicios
8.1 Un científico de datos es contratado por un fabricante de automóviles para estimar un
modelo sencillo que le permita predecir cuál debe ser la posición del asiento para un conductor
determinado, en otras palabras cuál es la distancia horizontal del punto medio de las caderas
desde una ubicación fija en el automóvil. El fabricante desea que sus carros sean cómodos y
seguros. Para elaborar la tarea se cuenta con 38 observaciones (la información se encuentra en el
archivo datosmulti.csv). Las observaciones corresponden a características del conductor como
peso, edad, su altura si emplea zapatos o no, su altura sentado, la longitud de muslo, pierna y
brazo. Para explicar cuál debe ser la distancia horizontal (Di en la base de datos Distancia_centro
) no emplearemos por ahora todas las variables disponibles. Estimemos el siguiente modelo:
Estime el modelo y determine si existe o no multicolinealidad por medio de las pruebas estudiadas
en este capítulo. Adicionalmente, corrija (de ser posible) el problema de multicolinealidad si es
que existe. Explique.
230 Multicolinealidad
8.7 Anexos
−1 T
β̂ = XT X X (Xβ + ε)
−1 T −1 T
β̂ = XT X X Xβ + XT X X ε
−1 T −1 T
β̂ = XT X X Xβ + XT X
X ε
−1 T
β̂ = β + XT X
X ε (8.10)
Ahora consideremos el valor esperado para un valor dado de X
X no aleatorio. h i h −1 T i
E β̂ |X = E β + XT X X ε |X
h i −1 T
E β̂ |X = β + XT X X E [ε |X ]
Empleando el supuesto de que los errores tienen media cero ( E [ε |X ] = 0 ) se obtiene que
h i
E β̂ |X = β
Por otro lado, recordemos la Law of iterated expectations (Ley de valor esperado iterado) que implica
E [W ] = EZ [E [W |Z ]]
donde EZ [·] es el valor esperado considerando todos los posibles valores de Z y E [W |Z ] es una
función de los valores de Z. Entonces, si X es aleatorio:
h i h h ii
E β̂ = EX E β̂ |X = EX [β ] = β
Es decir, el estimador MCO β̂ es insesgado aún si las variables explicativas son aleatorias.
β̂ = β + Aε
−1 T
donde A = XT X X .
h i h i h iT
Var β̂ |X = E β̂ − E β̂ β̂ − E β̂ |X
h i T
Var β̂ |X = E β̂ − β β̂ − β |X
T
h i
T
−1 T
Var β̂ |X = E β + X X X ε − β β̂ − β |X
h i −1 T T −1 T T
Var β̂ |X = E XT X X ε X X X ε |X
h i h −1 T T −1 i
Var β̂ |X = E XT X X εε X XT X |X
h i −1 T T −1
Var β̂ |X = XT X X E εε |X X XT X
h i −1 T 2 −1
Var β̂ |X = XT X X σ I X XT X
h i −1
Var β̂ |X = σ 2 XT X
Ahora, debemos demostrar que dicha varianza es la mínima posible. Para esto, partamos de escribir
de otra manera el estimador MCO
−1 T
β̂ = XT X X y
β̂ = Ay
Supongamos ahora que existe otro estimador lineal
β̃ = Cy
CX = I
h i
Var β̃ |X = σ 2 DDT + DAT + ADT + AAT
h i −1 −1 T T
Var β̃ |X = σ 2 DDT + DX XT X + XT X X D + AAT
CX = I
y dado que
C = D+A
h i −1 −1 T T
Var β̃ |X = σ 2 DDT + DX XT X + XT X X D + AAT
h i
Var β̃ |X = σ 2 DDT + AAT
h i −1 T T −1 T T
Var β̃ |X = σ 2 DDT + σ 2 XT X X X X X
h i −1 T −1
Var β̃ |X = σ 2 DDT + σ 2 XT X X X XT X
h i −1
Var β̃ |X = σ 2 DDT + σ 2 XT X
h i h i
Var β̃ |X = Var β̂ |X + σ 2 DDT
qT DDT q = zT z > 0
h i h i
Var β̃ |X > Var β̂ |X
Q.E.D. Por lo tanto no es posible obtener un estimador insesgado con una varianza menor, aún en
presencia de regresores aleatorios.
Explicar en sus propias palabras los efectos de la heteroscedasticidad sobre los estimadores
MCO.
Efectuar utilizando R las pruebas estadísticas necesarias para detectar la violación del supuesto
de homoscedasticidad en los residuos. En especial las pruebas de Breusch-Pagan y la prueba
de White.
Corregir el problema de heteroscedasticidad empleando estimadores consistentes para los
errores estándar en R.
236 Heteroscedasticidad
9.1 Introducción
Como lo hemos discutido en capítulos anteriores, si los supuestos del modelo de regresión se
cumplen, entonces el Teorema de Gauss-Markov demuestra que los estimadores MCO son MELI
(Mejor Estimador Lineal Insesgado). En el Capítulo 8 analizamos las consecuencias de la violación
del supuesto de independencia lineal entre variables explicativas en un modelo de regresión múltiple;
es decir la parecencia de multicolinealidad. También discutimos cómo dicho problema era un
problema de los datos y que en ocasiones no será necesario resolver el problema. En este capítulo
nos concentramos en la violación del supuesto que el término de error tiene varianza constante.
Antes de concentrarnos en la violación del supuesto, veamos un poco la intuición detrás del cum-
plimiento de este supuesto. En la Figura 9.1 se presenta una muestra de observaciones para una
variable explicativa (X1 ) y una dependiente (y) (puntos grises) en la que se cumple el supuesto de
homoscedasticidad. El supuesto de homoscedasticidad implica que la dispersión de las observaciones
(puntos) con respecto al modelo de regresión poblacional (linea de regresión) será siempre la misma
(Ver Figura 9.1). El tercer eje mide la probabilidad de que ocurra un valor de y dado el valor de
X1 . En este caso esperamos que en promedio los valores de y se encuentren cercanos a la línea de
regresión (por el supuesto de que E [ε] = 0) y el supuesto de homoscedasticidad implica que la
dispersión con respecto a la linea de regresión siempre es la misma.
9.1 Introducción 237
yi
X1,1
X1,2 X1,i
X1,3
Fuente: Elaboración propia
Por otro lado, si el supuesto no se cumple entonces las observaciones de y seguirán estando en
promedio al rededor de la linea de regresión (Ver Figura 9.2) gracias al supuesto de que E [ε] = 0).
La heteroscedasticidad provoca que la dispersión sea diferente dependiendo de la observación. En
este caso en la Figura 9.2 se simuló un problema de heteroscedasticidad que depende del valor de la
variable explicativa. La volatilidad es mayor a medida que X1 se hace mas grande1 .
yi
X1,1
X1,2
X1,3 X1,i
Fuente: Elaboración propia
una muestra de hogares (corte transversal). Supongamos que se desea emplear un modelo en que las
compras de un producto del hogar i y se cuenta con una base de datos amplia para muchos niveles
de ingresos. Las compras entre muchas cosas depende de su nivel de ingresos y otras variables que
caracterizan la condición socio demográfica del hogar. Los hogares con ingresos bajos típicamente
presentan un comportamiento de compra mucho menos variable que el consumo de los hogares con
altos ingresos. Es decir, es de esperarse que para ingresos altos el comportamiento del consumo
se disperse más con respecto a lo esperado (su media). Por otro lado, a medida que el ingreso sea
más bajo los hogares no podrán tener una dispersión muy grande con respecto a lo esperado para
su nivel de ingresos. Esto implica que las observaciones correspondientes al consumo de hogares
con ingresos bajos tendrán una varianza con respecto a su valor esperado (varianza del error) mucho
menor que aquellos hogares con ingresos altos. También existen otras razones para que se presente la
heteroscedasticidad, como por ejemplo el aprendizaje sobre los errores y mejoras en la recolección
de la información a medida que ésta se realiza.
En general, este problema econométrico es muy común en datos de corte transversal, aunque
es posible que el problema también se presente con series de tiempo; especialmente si se están
modelando rendimientos de activos o el valor de activos financieros como las acciones. Formalmente,
en presencia de este problema, la matriz de varianzas y covarianzas de los errores será:
σ12
0 ... 0
.. ..
σ22
T 0 . .
6= σ 2 I.
Var [ε] = E ε ε = Ω =
.. .. ..
. . . 0
0 0 . . . σn2
\ h i −1
Esto implica que el estimador de la matriz de varianzas y covarianzas Var β̂ = s2 XT X sea
sesgado; y por lo tanto, si usamos este último estimador en pruebas de hipótesis o intervalos
de confianza para los coeficientes estimados obtendremos conclusiones erróneas en torno a los
verdaderos β s. Esto ocurrirá en las pruebas individuales y conjuntas.
Yi = 1 + 7X2i + εi
donde εi puede ser homoscedástico y heteroscedástico. Nuestro experimento tendrá como finalidad
ver cuál es el efecto sobre los estimadores MCO y su desviación estándar (errores estándar) de la
heteroscedasticidad. Adicionalmente, crearemos una segunda variable explicativa X3i que no es
significativa y la incluiremos en nuestro análisis.
En otras palabras, generaremos una muestra aleatoria del DGP con errores homoscedásticos y otra
con errores heteroscedásticos y estimaremos los correspondientes coeficientes. Y repetiremos este
ejercicio 10 mil veces. Al final tendremos una muestra de 10000 para cada coeficiente estimado
para cada uno de los escenarios: con y sin heteroscedásticidad. Esto nos permitirá determinar si el
promedio de los coeficientes coincide o no con el valor poblacional (es insesgado) y comparar las
varianzas del estimador MCO en presencia o no de este problema.
Empecemos nuestro experimento fijando una semilla para los número aleatorios y creando los
objetos donde guardaremos los resultados de la simulaciones. Así mismo definamos los parámetros
del tamaño de la muestra y el número de repeticiones.
Ahora empleemos un loop para replicar nuestro ejercicio 100 mil veces.
for (i in 1:N) {
# creación de variable explicativa
X2 <- matrix(rnorm(n), n, 1)
# creación de variable no significativa
X3 <- matrix(rnorm(n), n, 1)
# error homoscedástico
err <- rnorm(n)
# error heteroscedástico
herr <- (X2^2) * err
240 Heteroscedasticidad
Ahora, comparemos los resultados para el caso de un error homoscedástico y uno homoscedástico
para la pendiente que acompaña a X2i . Primero veamos el promedio de los 10 mil coeficientes
estimados en los dos escenarios
round(apply(X2.estcoef, 2, mean), 3)
## X2.cf.homo X2.cf.hetero
## 6.999 6.997
Se puede observar que en ambos escenarios en promedio los coeficientes estimados están muy
cercanos al valor poblacional de 7. Ahora miremos que ocurre con la error estándar (desviación
estándar de los coeficientes estimados)
round(apply(X2.estcoef, 2, sd), 2)
## X2.cf.homo X2.cf.hetero
## 0.15 0.52
Ahora, comparemos los resultados para para la pendiente que acompaña a X3i .
round(apply(X3.estcoef, 2, mean), 2)
## X3.cf.homo X3.cf.hetero
## 0 0
round(apply(X3.estcoef, 2, sd), 2)
## X3.cf.homo X3.cf.hetero
## 0.15 0.24
Los resultados son similares para el estimador de la pendiente de la variable que no debería estar
en el modelo. Finalmente, puedes inspeccionar los histogramas de la distribución empírica de los
coeficientes estimados en los dos escenarios.
242 Heteroscedasticidad
número de veces
400 400
200 200
0 0
6.4 6.8 7.2 7.6 4 6 8 10
número de veces
400 400
200 200
0 0
−0.6 −0.3 0.0 0.3 0.6 −1.5 −1.0 −0.5 0.0 0.5 1.0 1.5
En este capítulo estudiaremos como detectar si se viola el supuesto de varianza constante del error y
de encontrar el problema cómo resolverlo.
En general, una buena práctica cuando se estiman modelos econométricos es emplear gráficos que
permitan intuir que está ocurriendo con los residuos estimados. Esto permite intuir si existen síntomas
de la presencia de heteroscedasticidad. Obviamente, los gráficos no proveen evidencia contundente
9.2 Pruebas para la detección de heteroscedasticidad 243
para concluir, pero sí proveen la intuición necesaria para iniciar las pruebas formales.
Pero, el científico de datos se puede enfrentar a la necesidad de estimar muchos modelos o tener
muchas iteraciones entre modelos y tener que automatizar el proceso. En esos escenarios el análisis
gráfico no es una opción. No obstante, para ganar un poco de la intuición del problema.
Regresando al análisis gráfico, dado que la heteroscedasticidad implica una variabilidad no constante
del error, entonces lo más adecuado será graficar el vector de errores (ε). Lastimosamente, este
vector no es observable, pero la mejor aproximación que tenemos para conocer ese vector es el error
estimado (ε̂). Así, para intuir gráficamente la presencia de heteroscedasticidad se deben visualizar
los residuos del modelo estimado. Las visualizaciones más empleadas son gráficos de dispersión de:
Estas visualizaciones de los errores estimados se emplean para explorar algún tipo de regularidad.
En la Figura 9.4 se presentan tipos de patrones que se pueden observar en los residuales estimados
que pueden sugerir presencia de heteroscedasticidad.
Figura 9.4. Posibles patrones de comportamiento de los residuales que sugieren hete-
roscedasticidad
Panel a) Panel b)
ˆt ˆt
X1 X1
Panel c) Panel d)
ˆt ˆt
X1 X1
En el panel a) de la Figura 9.4 observamos que los residuos se vuelven más grandes a medida que
la variable dependiente crece. En este caso la dispersión con respecto a la media (cero) crece a
244 Heteroscedasticidad
medida que la variable explicativa crece y esto sucede de manera exponencial. Por tanto, existe
heteroscedasticidad que podría ser del tipo σi2 = X1i σ 2 . En el panel b) el comportamiento de
la varianza es opuesto al presentado en el panel a), heteroscedasticidad que podría ser del tipo
σi2 = X11i σ 2 . En el panel c) claramente existen dos grupos de datos; los de varianza grande y los de
baja varianza. Por último en el panel d) los residuos son menores para las mediciones grandes y
pequeñas pero crecen en los valores intermedios de la misma. En los cuatro casos hay síntomas de
heteroscedasticidad.
Antes de entrar a considerar las pruebas formales, es importante aclarar que la heteroscedasticidad
implica una varianza diferente del error para al menos una observación, así existen muchas formas
de heteroscedastidad. Es decir, la heteroscedasticidad puede depender de una variable explicativa, de
una variable que no se incluye en el modelo o de cualquier función de las observaciones. Esto hace
difícil la tareas de identificar el problema con gráficos y con pruebas.
En la práctica los científicos de datos enfrentan comúnmente problemas en los que los modelos
incluyen muchas variables explicativas, así realizar un análisis gráfico puede ser un trabajo que tome
mucho tiempo y no genere mucha intuición sobre este problema. En esas situaciones, el análisis
gráfico puede ser inútil.
A continuación consideraremos dos pruebas de heteroscedasticidad, cada una diseñada para detectar
diferentes formas de heteroscedasticidad. En los dos casos la hipótesis nula de estas pruebas es la
presencia de homoscedasticidad H0 : σi2 = σ 2 ; ∀i versus la hipótesis alterna de que existe algún tipo
de heteroscedasticidad.
Esta prueba, permite la posibilidad de determinar si más de una variable causa el problema de
heteroscedasticidad.
Breusch y Pagan (1979) diseñaron una prueba que permite detectar si existe una relación entre la
varianza del error y un grupo de variables (recogidas en un vector Z). El tipo de relación de esta
prueba no está suscrita a algún tipo de relación funcional. En este caso, la prueba está diseñada
para detectar la heteroscedasticidad de la forma σi2 = f (γ + δ Zi ). Donde Zi(g×1) es un grupo de g
variables que afectan a la varianza que se organizan en forma vectorial y δ(1×g) corresponde a un
vector de constantes.
Por ejemplo, supongamos que el científico de datos cree que el problema de heteroscedasticidad
está siendo causado por las variables Wi y Vi . En ese caso tendremos que Zi(2×1) = [Wi ,Vi ]T y
δ(1×2) = [δ1 , δ2 ]. Por tanto, σi2 = f (γ + δ1Wi + δ2Vi ).
H0 : σi2 = σ 2 ; ∀i
HA : σi2 = f (γ + δ Zi )
9.2 Pruebas para la detección de heteroscedasticidad 245
Breusch y Pagan (1979) demostraron que el estadístico BP sigue una distribución Chi-cuadrado con
g grados de libertad (χg2 ), bajo el supuesto de que los errores se distribuyen normalmente. Por tanto,
se rechazará la hipótesis nula de homoscedasticidad a favor de una heteroscedasticidad de la forma
σi2 = f (γ + δ Zi ) si el estadístico BP es mayor que χg,α
2 , con un nivel de confianza del (1 − α) %.
Sin embargo, se ha documentado mucho que esta prueba no funciona bien cuando el supuesto
de normalidad no se cumple (Ver por ejemplo Koenker (1981)). Koenker (1981) propone una
modificación de la prueba BP que implica transformación de los residuos. Esta modificación se
conoce como la versión studentizada de la prueba BP.
White (1980) desarrolló una prueba más general que las anteriores, con la ventaja de no requerir
que ordenemos los datos en diferentes grupos, ni tampoco depende de que los errores se distribuyan
normalmente. Esta prueba implica las siguientes hipótesis nula y alterna:
H0 : σi2 = σ 2 ; ∀i
(9.1)
HA : No H0
White (1980) demostró que su estadístico Wa sigue una distribución Chi-cuadrado con un número
4 Noten que esto corresponde al estimador de la varianza del error del Método de Máxima Verosimilitud.
5 El último término se conoce con el nombre de término cruzado o términos de interacción. En algunas oportunidades
cuando el modelo original cuenta con muchas variables explicatorias y/o el número de observaciones no es mucho, puede
ocurrir que no existan los grados de libertad necesarios para correr la regresión auxiliar incluyendo los términos cruzados.
En esos casos, algunos autores acostumbran correr la regresión auxiliar sin los términos cruzados, si bien esto le resta
poder a la prueba. Lo recomendable es incluir los términos de interacción siempre que sea posible, dado que así tiene mas
poder la prueba White (1980).
246 Heteroscedasticidad
de grados de libertad igual al número de regresores que se emplean en la regresión auxiliar (g). Por
tanto se rechazará la hipótesis nula de no heteroscedasticidad con un nivel de confianza de (1 − α) %,
cuando el estadístico de esta prueba sea mayor que χg,α2 .
En la sección pasada se discutió cómo detectar la presencia de heteroscedasticidad; pero, ¿qué hacer
si ésta está presente en un modelo de regresión? A continuación, existen dos soluciones que se
emplean comúnmente en la estadística y econometría tradicional para solucionar el problema. La
primera solución es tratar de resolver de raíz el problema modificando la muestra. Este método se
conoce como el método de Mínimos Cuadrados Ponderados (MCP)6 que hace parte de la familia de
los Mínimos Cuadrados Generalizados (MCG). Esta aproximación implica conocer exactamente
cómo es la heteroscedasticidad; algo que típicamente es difícil para el científico de datos.
En especial, White (1980) mostró que es posible aún encontrar un estimador apropiado para la
matriz de varianzas y covarianzas de los β ’s obtenidos por MCO.8 Recordemos que en presencia de
heteroscedasticidad, la varianza de los coeficientes tiene la siguiente estructura:
h i −1 −1
Var β̂ = XT X XT ΩX XT X
White (1980) sugiere usar el siguiente estimador consistente para la matriz de varianzas y covarianzas
de los β 0 s obtenidos por MCO
h i −1 −1
Est.Var β̂ = n XT X S0 XT X
6 En los anexos (ver sección 9.5) se presenta una breve introducción a este método de solucionar el problema de
heteroscedasticidad.
7 Consistencia en estadística es la propiedad de un estimador de ser insesgado cuando la muestra es grande.
8 Recuerden que el estimador MCO del vector β sigue siendo insesgado, el problema se presenta en el estimador de la
donde:
1 n 2 T
xiT =
S0 = ∑ ε̂i xi xi 1 x1i x2i . . . xki
n i=1
Esa matriz de varianzas y covarianzas deberá ser empleada para calcular los estadísticos de las
pruebas de hipótesis tanto individuales como conjuntas. De esta manera, el problema del sesgo en
la matriz de varianzas y covarianzas es solucionado. De hecho, White (1980) demostró que ese
estimador es consistente; es decir, es sesgado en muestras pequeñas (y por tanto no funciona) pero
insesgado en muestras grandes (y por tanto funciona bien en muestras grandes). Por esta razón este
estimador (y otros similares) es conocido como estimador H.C. (heteroskedasticity consistent). Es
importante mencionar, que esto no hace que al emplear esta solución se obtengan un estimador
MELI. La varianza del estimador MCO sigue siendo más grande que por ejemplo los del estimador
GLS.
Por otro lado, Davidson, Russell and MacKinnon (1993) y Cribari-Neto (2004) propusieron modifi-
caciones a la propuesta de White (1980). Es decir, existen varios estimadores H.C. disponibles. El
estimador de White para la matriz de varianzas y covarianzas de β̂ se tiene
−1 ! −1
XT X 1 n XT X
1
n n ∑ ωi xi xTi
n i=1 n
La diferencia entre los métodos H.C. propuestos están en ωi (ponderación de los datos). Por ejemplo,
Davidson, Russell and MacKinnon (1993) sugerían nunca usar White (1980) (HC0) pues podemos
encontrar un mejor estimador. En esa misma dirección, Long y Ervin (2000) encontraron con
simulaciones de Monte Carlo que HC3 se comporta mejor en muestras pequeñas y grandes. Cribari-
Neto (2004) mostró que HC4 se comporta mejor en muestras pequeñas, especialmente si hay
observaciones influyentes.
Por otro lado, también es importante reconocer que al emplear un estimador H.C. también debemos
modificar nuestras pruebas conjuntas empleando la correspondiente matriz H.C.
9.4 Práctica en R
Continuaremos con la pregunta de negocio que discutimos en el Capítulo anterior (ver sección
8.5). Recordemos que en este caso el gerente del hospital de nivel tres “SALUD PARA LOS
COLOMBIANOS”, ubicada en la ciudad de Bogotá, tenía la siguiente pregunta de negocio: ¿existe
o no una brecha salarial entre hombres y mujeres? Los datos se encuentran disponibles en el archivo
DatosMultiColinealidad.csv9 .
donde
1 si el individuo i es mujer
Di =
0 o.w.
Además, ln(ihi ) representa el logaritmo natural del ingreso por hora del individuo i, yedui y expi
denotan los años de educación y de experiencia del individuo i.
Carga los datos y estima el modelo de nuevo guardando los resultados en un objeto res1.
Como se mencionó anteriormente, una práctica común para detectar intuitivamente problemas de
heteroscedasticidad en el término de error es emplear gráficas de dispersión de los errores estimados
(ε̂) y de las variables independientes, al igual que los errores estimados y el valor estimado de la
variable dependiente. Algunos autores también sugieren emplear gráficos de dispersión del cuadrado
de los residuos (ε̂ 2 ) y las variables explicativas. Estos gráficos son empleados para determinar la
existencia de algún patrón en la variabilidad del error. En este caso sólo graficaremos los errores
contra las variables explicatorias yedui , expi y exp2i (Pero tu puedes efectuar todos los otros gráficos).
Recuerden que es muy probable que este análisis gráfico no sea útil con las cantidades de variables
explicativas que trabajan los científicos de datos.
Extraigamos los residuales del objeto LM con la función resid() del paquete central de R. Esta función
solo requiere como argumento un objeto de clase lm. Además, guardemos los residuales en el objeto
e.
e <- resid(res1)
El correspondiente modelo estimado se reportó en el capítulo anterior (Ver Cuadro 8.1). Pero noten
que esos resultados no son interesantes hasta que estemos seguros que no existe un problema de
heteroscedasticidad. Ahora grafiquemos los residuos versus las variables explicativas del modelo.
2
1
1
0
0
e
e
−1
−1
−2
−2
−3
−3
0 5 10 15 20 25 0 10 20 30 40 50 60
datos$yedu datos$exp
2
2
1
1
0
0
e
e
−1
−1
−2
−2
−3
−3
0 1000 2000 3000 4000 0.0 0.2 0.4 0.6 0.8 1.0
En el gráfico no es posible apreciar una relación clara entre la variabilidad de los errores y los años
de educación al igual que con el sexo. Con los años de experiencia parece existir menos dispersión
a medida que los años de experiencia aumentan. Pero este fenómeno se hace evidente cuando se
grafican los residuos versus los años de experiencia al cuadrado. Se observa claramente que la
dispersión de los residuos disminuye a medida que se incrementa el cuadrado de la experiencia. Este
es un síntoma de heteroscedasticidad.
250 Heteroscedasticidad
Prueba de Breusch-Pagan
Hay muchas funciones que permiten calcular esta prueba en R. Por ejemplo, existe la función unción
bptest() del paquete lmtest (Zeileis y Hothorn, 2002) que nos da la opción de calcular la versión
studentizada de la prueba propuesta por Koenker (1981) para el caso en que los residuos no sigan
una distribución normal. Otra función con unas opciones muy útiles es ols_test_breusch_pagan()
del paquete olsrr (Hebbali, 2020) . Esta última función no permite calcular la versión studentizada
de la prueba pero permite hacer simultáneamente muchas pruebas de Breusch-Pagan y corrige los
valores p para tener en cuenta las múltiples pruebas que se pueden realizar al mismo tiempo. Las
correcciones que incluye esta función son las de Bonferroni, Sidak y Holm.
Empecemos empleando la función bptest() del paquete lmtest. Esta función tiene tres argumentos
importantes, uno de ellos indispensable
donde:
De esta manera la prueba de Breush-Pagan cuya hipótesis alterna es que todas las variables del
modelo causan el problema de heteroscedasticidad se puede calcular con el siguiente código:
library(lmtest)
bptest(res1, studentize = FALSE)
##
## Breusch-Pagan test
##
## data: res1
## BP = 49.546, df = 6, p-value = 5.798e-09
##
## Breusch-Pagan test
##
## data: res1
## BP = 2.3968, df = 1, p-value = 0.1216
En este caso la hipótesis nula de homoscedasticidad no es rechazada y por tanto se concluiría que
existe homoscedasticidad (por lo menos no existe heteroscedasticidad causada únicamente por la
variable exp), contrario a como lo intuimos de los gráficos. Noten que esto llama la atención a la
necesidad de hacer múltiples pruebas con hipótesis alternas diferentes (por lo menos para cada
variable y el total de estas).
La función ols_test_breusch_pagan() del paquete olsrr , permite probar al mismo tiempo si cada
una de las variables está causando el problema de heteroscedasticidad o todas al mismo tiempo. Esta
función requiere de cuatro argumentos.
ols_test_breusch_pagan(model,rhs,multiple,p.adju)
donde:
Por ejemplo, el siguiente código realiza pruebas de Breusch-Paga para cada una de las variables
explicativas y para todas al tiempo, y corrige los respectivos valores p con el método de Bonferroni.
library(olsrr)
ols_test_breusch_pagan(res1, rhs = TRUE, multiple = TRUE, p.adj = "bonferroni")
##
252 Heteroscedasticidad
Los resultados muestran que con un 99 % de confianza podemos rechazar la nula de homoscedastidad
para todos los casos. Es importante anotar que el estadísticos no son iguales entre la función bptest()
y ols_ test_ breusch_ pagan() dado que esta última no emplea como estadístico de prueba BP = SSR 2
sino nR2 . En todo caso los resultados son equivalentes.
Antes de concluir que existe un problema de heteroscedasticidad, es importante estar seguros que el
supuesto de normalidad de los errores que requiere esta prueba se cumple. Existen varias pruebas
de normalidad como se discute en Alonso y Montenegro (2015), todas tienen la característica de
que la hipótesis nula es la normalidad y la alterna es la no normalidad. Las pruebas mas comunes
de normalidad son Shapiro-Wilk (Shapiro y Francia, 1972), Kolmogorov-Smirnov (Kolmogorov,
1933), Cramer-von Mises (Cramér, 1928) y Anderson-Darling(Anderson y Darling, 1952). Una
forma rápida de realizar estas pruebas de normalidad es emplear la función ols_test_normality() del
paquete olsrr. La hipótesis nula de estas pruebas de normalidad es que la variable fue generada por
una distribución normal, versus la alterna que es otra distribución.
ols_test_normality(res1)
## -----------------------------------------------
## Test Statistic pvalue
## -----------------------------------------------
## Shapiro-Wilk 0.9583 0.0000
## Kolmogorov-Smirnov 0.0636 0.0000
## Cramer-von Mises 174.9537 0.0000
9.4 Práctica en R 253
En todos los casos las pruebas de normalidad permiten concluir que los residuos no siguen una
distribución normal. Por eso no son confiables de los resultados de la prueba de Breusch-Pagan
tradicional. Deberíamos entonces emplear la la versión studentizada de la prueba propuesta por
Koenker (1981) para el caso en que los residuos no sigan una distribución normal.
##
## studentized Breusch-Pagan test
##
## data: res1
## BP = 18.412, df = 6, p-value = 0.00528
Por lo tanto los resultados de esta prueba indican que existe un problema de hetereoscedasticidad.
Prueba de White
Por último, realicemos la prueba de White10 para contrastar la hipótesis nula de no heteroscedastici-
dad versus la alterna de heteroscedasticidad se puede calcular empleando la función white_lm() del
paquete skedastic (Farrar, 2020). Esta función típicamente incluye los siguientes argumentos:
donde:
mainlm: es un objeto de clase lm que contiene la regresión sobre la cual se realizará la prueba.
interactions: es un valor lógico, si es igual a TRUE se incluyen los términos de interacción; si
interactions = FALSE entonces no se incluyen los términos de interacción. Esta última es
la opción por defecto. En general es recomendable incluir los términos de interacción (esto
comúnmente no tiene mucho sentido).
library(skedastic)
White, entonces esta prueba es algebraicamente igual a la versión studentizada de Breusch-Pagan (con todas las variables
de la regresión auxiliar de White como causantes de la heteroscedasticidad). Es decir, en principio se puede emplear la
función bptest() para esta prueba. Pero en la mayoría de las esta aproximación puede ser engorrosa cuando el modelo
incluye muchas variables explicativas y por tanto los productos cruzados pueden ser muchos para incluirlos en la fórmula.
254 Heteroscedasticidad
## # A tibble: 1 x 5
## statistic p.value parameter method alternative
## <dbl> <dbl> <dbl> <chr> <chr>
## 1 37.9 0.0793 27 White's Test greater
Sumando los resultados de las pruebas anteriores, se puede concluir que existe evidencia de la pre-
sencia de heteroscedasticidad. Por tanto, es pertinente solucionar el problema para hacer inferencia.
Para este caso, tenemos que la correción HC3 se puede estimar de la siguiente manera:
library(sandwich)
# HC3 Davidson y MacKinnon (1993)
vcovHC(res1)
## I(exp^2) -1.721951e-08
## sexomujer 1.354197e-05
## exp:sexomujer -1.502262e-06
## I(exp^2):sexomujer 3.066016e-08
Ahora, como no es muy útil la matriz de varianzas y covarianzas sola, sino más bien los respectivos t
individuales y sus correspondientes valores p, podemos emplear la función coeftest() del paquete
lmtest para realizar las pruebas individuales. La función coeftest() necesita dos argumentos:
donde:
Por ejemplo, para este caso podemos ver como individualmente, los coeficientes de las variables
asociadas a la dummy de sexo no son significativos individualmente.
##
## t test of coefficients:
##
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 5.8557e+00 9.1202e-02 64.2056 < 2.2e-16 ***
## yedu 1.3064e-01 4.5379e-03 28.7882 < 2.2e-16 ***
## exp 3.3948e-02 6.8017e-03 4.9911 6.754e-07 ***
## I(exp^2) -2.9550e-04 1.3110e-04 -2.2540 0.02435 *
## sexomujer -1.1666e-01 9.8629e-02 -1.1828 0.23707
## exp:sexomujer -3.9387e-03 8.9884e-03 -0.4382 0.66131
## I(exp^2):sexomujer 5.3015e-05 1.7510e-04 0.3028 0.76211
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Dependent variable:
Lnih
MCO HC3
(1) (2)
yedu 0.131∗∗∗ 0.131∗∗∗
(0.004) (0.005)
# White (1980)
coeftest(res1, vcov = (vcovHC(res1, "HC0")))
##
9.4 Práctica en R 257
## t test of coefficients:
##
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 5.8557e+00 9.0230e-02 64.8974 < 2.2e-16 ***
## yedu 1.3064e-01 4.5104e-03 28.9636 < 2.2e-16 ***
## exp 3.3948e-02 6.6308e-03 5.1197 3.483e-07 ***
## I(exp^2) -2.9550e-04 1.2605e-04 -2.3443 0.0192 *
## sexomujer -1.1666e-01 9.7408e-02 -1.1977 0.2312
## exp:sexomujer -3.9387e-03 8.7934e-03 -0.4479 0.6543
## I(exp^2):sexomujer 5.3015e-05 1.6940e-04 0.3130 0.7544
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## t test of coefficients:
##
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 5.8557e+00 9.0454e-02 64.7367 < 2.2e-16 ***
## yedu 1.3064e-01 4.5216e-03 28.8919 < 2.2e-16 ***
## exp 3.3948e-02 6.6473e-03 5.1070 3.721e-07 ***
## I(exp^2) -2.9550e-04 1.2637e-04 -2.3385 0.0195 *
## sexomujer -1.1666e-01 9.7650e-02 -1.1947 0.2324
## exp:sexomujer -3.9387e-03 8.8152e-03 -0.4468 0.6551
## I(exp^2):sexomujer 5.3015e-05 1.6982e-04 0.3122 0.7549
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## t test of coefficients:
##
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 5.8557e+00 9.0708e-02 64.5556 < 2.2e-16 ***
## yedu 1.3064e-01 4.5241e-03 28.8759 < 2.2e-16 ***
## exp 3.3948e-02 6.7141e-03 5.0562 4.839e-07 ***
## I(exp^2) -2.9550e-04 1.2851e-04 -2.2994 0.02163 *
## sexomujer -1.1666e-01 9.8006e-02 -1.1904 0.23411
## exp:sexomujer -3.9387e-03 8.8884e-03 -0.4431 0.65774
## I(exp^2):sexomujer 5.3015e-05 1.7217e-04 0.3079 0.75819
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
258 Heteroscedasticidad
# Cribari-Neto (2004)
coeftest(res1, vcov = (vcovHC(res1, "HC4")))
##
## t test of coefficients:
##
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 5.8557e+00 9.1595e-02 63.9306 < 2.2e-16 ***
## yedu 1.3064e-01 4.5321e-03 28.8250 < 2.2e-16 ***
## exp 3.3948e-02 6.9554e-03 4.8808 1.177e-06 ***
## I(exp^2) -2.9550e-04 1.3620e-04 -2.1697 0.0302 *
## sexomujer -1.1666e-01 9.9245e-02 -1.1755 0.2400
## exp:sexomujer -3.9387e-03 9.1539e-03 -0.4303 0.6671
## I(exp^2):sexomujer 5.3015e-05 1.8070e-04 0.2934 0.7693
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
En este caso se puede observar que los resultados son robustos a la aproximación que se emplee. En
todo caso parece ser mejor emplear el HC3 de acuerdo a las simulaciones de Monte Carlo realizadas
por Long y Ervin (2000).
Ahora miremos si conjuntamente todos los coeficientes que acompañan a las dummy son cero o no
con la corrección de heteroscedasticidad. Eso lo podemos hacer de manera muy fácil dado que todas
las funciones estudiadas previamente soportan la inclusión de una matriz de varianzas y covarianzas
H.C. Por ejemplo,
library(AER)
res2 <- lm(Lnih ~ yedu + exp + I(exp^2), datos)
## Wald test
##
## Model 1: Lnih ~ yedu + exp + I(exp^2)
## Model 2: Lnih ~ yedu + exp + I(exp^2) + sexo + sexo * exp + sexo * I(exp^2)
## Res.Df Df F Pr(>F)
## 1 1411
## 2 1408 3 10.149 1.293e-06 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Los resultados muestran que se puede rechazar la hipótesis nula de que el modelo restringido es
mejor que no restringido. Es decir, al menos uno de los coeficientes asociados a la dummy de sexo
es significativo. Es decir, sí existe diferencia en como se trata a los hombres y a las mujeres.
9.5 Anexos 259
Ejercicios
9.1 Realice un experimento de Monte Carlo similar al que se realiza en la Introducción de
este Capítulo. En este caso nos interesa conocer cual es la proporción de veces que se rechaza
la hipótesis nula de las pruebas individuales para las dos pendientes con los estimadores MCO
sin heteroscedasticidad, los estimadores MCO con heteroscedasticidad y la corrección HC3 en
parecencia de heteroscedasticidad. Realice el experimento para muestras de tamaño 20, 50, 200 y
1000. ¿Qué puedes concluir?
9.5 Anexos
En presencia de heteroscedasticidad los estimadores MCO siguen siendo insesgados. Esta afir-
mación se puede demostrar fácilmente. Consideremos un modelo lineal con un término de error
heteroscedástico y no autocorrelación. Es decir,
y = Xβ + ε
−1
Donde E [εt ] = 0, Var [εt ] = σε2 y E [εi ε j ] = 0, ∀i 6= j. Ahora determinemos si β̂ = XT X XT y
sigue siendo insesgado o no. Así,
h i h −1 i −1
E β̂ = E XT X XT y = XT X XT E [y]
h i −1
E β̂ = XT X XT Xβ = I • β
h i
E β̂ = β
Continuando con el modelo considerado en el Anexo anterior, en este caso tenemos que:
2
σ1 0 . . . 0
.
0 σ22 . . . ..
T
Var [ε] = E ε ε = Ω = . .
.. .. ... 0
0 0 . . . σn 2
h i h −1 T i
Var β̂ = Var XT X X y
.
h i −1 T −1
Var β̂ = XT X X Var [ε] X XT X
h i −1 T −1
Var β̂ = XT X X ΩX XT X
Por tanto la varianza no es la mínima posible. Y por otro lado, al emplear el estimador MCO
\ h i −1
para la matriz de varianzas y covarianzas de los betas (Var β̂ = s2 XT X ) en presencia de
heteroscedasticidad se obtendrá un estimador cuyo valor esperado no es igual a la varianza real; es
decir, será insesgado.
Si conocemos la varianza de cada uno de los errores es posible utilizar el método de Mínimos
Cuadrados Ponderados (MCP) que hace parte de la familia de los Mínimos Cuadrados Generalizados
(MCG). La idea de esta solución es muy sencilla, e implica transformar los datos de la muestra de tal
forma que el problema desaparezca de la muestra. Por ejemplo, partamos del siguiente modelo:
Con un vector de errores con las siguientes características:E [εi ] = 0, E [εi ε j ] = 0, y con una varianza
de los errores conocida Var [εi ] = Wi2 σi2 . Si dividimos el modelo por Wi obtenemos:11
Note que:
εi 1 1
Var = 2 Var [εi ] = 2 Wi2 σ 2 = σ 2
Wi Wi Wi
Es decir, ahora cada observación tiene varianza constante y por lo tanto el problema de heteros-
cedasticidad ha sido resuelto, de tal manera que los estimadores MCO para el modelo 9.4 ya son
MELI.
Emplear las herramientas estudiadas en los capítulos anteriores para responder una pregunta
de negocio que implique analítica diagnóstica
Presentar los resultados de una regresión de manera gráfica empleando R con solución H.C..
Determinar cuál variable tiene mas efecto sobre la variable explicativa empleando R en
presencia de heteroscedasticidad.
264 Primer caso de negocio (actualizado)
10.1 Introducción
En el Capítulo 7 trabajamos en responder una pregunta de negocio del portal de noticias en Internet
Mashable (https://mashable.com). La pregunta de negocio del editor era: ¿De qué depende el número
de shares de un artículo? A esta pregunta venía anexa otra: ¿Existe alguna variable accionable que
pueda ser modificada para generar una recomendación a los escritores?
Responder esta pregunta de negocio implicaba realizar analítica diagnóstica y realizamos una
busqueda automática para encontrar modelos candidatos a ser el mejor modelo. Posteriormente los
comparamos empleando pruebas de Y finalmente analizamos analizamos el mejor modelo para
encontrar el mejor modelo. Este análisis lo hicimos sin tener en cuenta que podíamos estar violando
supuestos del Teorema de Gauss-Markov. En este capítulo realizaremos las modificaciones necesarias
a nuestro análisis para brindar una respuesta estadísticamente correcta a la pregunta de negocio.
Recordemos que para realizar nuestro análisis contamos con una base de datos que contenía los
artículos publicados en un periodo de dos años suministrada por Fernandes y col. (2015). La base de
datos se encuentra en el archivo DatosCaso1.csv. Estos datos son reales y fueron descargados de la
siguiente página https://archive.ics.uci.edu/ml/datasets/Online+News+Popularity. La base de datos
contiene 39644 observaciones y 61 variables que se describen en el Cuadro 7.1.
De esta manera, la base de datos con que trabajaremos corresponde a datos de corte transversal.
De inmediato debemos sospechar de un posible problema de heteroscedasticidad. A continuación
recrearemos nuevamente todos los pasos seguidos en el Capítulo 7 y se aclararán cuáles pasos deben
ser modificados en presencia de multicolinealidad y heteroscedasticidad (¡si es que encontramos que
existe alguno o ambos problemas!)
10.2 El plan
Recordemos que nuestra primera tarea fue trazar una ruta analítica para responder la pregunta de
negocio.
Ahora, con esta aproximación completa debemos ajustar nuestro plan (en negrilla se resaltan los
nuevos pasos) que será el siguiente:
Recuerda que la primera variables en la base de datos no es relevante (url), ésta corresponde al enlace
del artículo, y por tanto la debemos eliminar. Lo cual implica que tendremos 5,7646075 × 1017
posibles modelos.
Lee los datos empleando la función read.csv() , guárdalos en el objeto datos.caso1 y elimina la
primera variable que no es relevante.
El siguiente paso es encontrar los mejores modelos empleando las estrategias de regresión paso a
paso forward, backward y combinada con el AIC, con el valor p y el R2 ajustado. No obstante, en
este caso que es posible que exista heteroscedasticidad (mas adelante lo demostraremos) es mejor no
emplear el criterio del valor p, pues sabemos que este criterio depende del estadístico t, el cual a su
vez depende del estimador del error estándar. Y sabemos que en presencia de heteroscedasticidad,
estos errores estándar no son los mínimos posibles. Es decir, si existe heteroscedasticidad, los errores
estándar no son los mas pequeños posibles, y por tanto los t calculados estarán errados y por tanto
los valores p.
Por otro lado, el problema de multicolinealidad puede hacer que el R2 esté inflado y por tanto el
R2 ajustado puede también estar inflado. Pero por ahora no tenemos por que intuir este problema.
Trabajaremos con esta métrica, pero teniendo en mente que nuestro resultado podría estar afectado por
un problema de multicolinealidad cuando empleemos el R2 ajustado para seleccionar un candidato a
mejor modelo.
Esto nos deja con 6 opciones de algoritmos y criterios de selección que se presentan en el Cuadro
10.1. Mantendremos los mismos nombres de modelos que se emplearon en el Capítulo 7 para evitar
confusiones. Los modelos que obtenemos los guardaremos con los nombres que se presentan el
Cuadro 7.2.
Partamos de estimar los modelos lineales con todas las variables potenciales (max.model).
266 Primer caso de negocio (actualizado)
Ahora procedamos a encontrar modelos candidatos para se los mejores modelos. Empecemos con la
estrategia stepwise Forward.
m1 <- summary(modelo1)
##
10.3 Detección de posibles modelos 267
##
## Jarque Bera Test
##
## data: res.modelo1
## X-squared = 5856780436, df = 2, p-value < 2.2e-16
Los residuales de este modelo no siguen una distribución normal. Por eso no son confiables los
resultados de la prueba de Breusch-Pagan tradicional. Deberíamos entonces emplear la versión
studentizada de la prueba propuesta por Koenker (1981)
# se carga la librería
library(lmtest)
# prueba de Breusch-Pagan studentizada
bptest(modelo1, studentize = TRUE)
##
## studentized Breusch-Pagan test
##
## data: modelo1
## BP = 77.535, df = 29, p-value = 2.643e-06
Esto implica que no es posible hacer inferencia sobre el modelo obtenido anteriormente empleando
los estimadores MCO y por tanto eliminar las variables no significativas cómo lo hicimos en el
Capítulo 10. Corrijamos el problema empleando los estimadores HC3 (la propuesta por Davidson,
Russell and MacKinnon (1993) y sugerida por Cribari-Neto (2004)).
# se carga la librería
library(sandwich)
# HC3 Davidson y MacKinnon (1993)
coeftest(modelo1, vcov = (vcovHC(modelo1)))
268 Primer caso de negocio (actualizado)
##
## t test of coefficients:
##
## Estimate Std. Error t value
## (Intercept) -2.9618e+03 6.7808e+02 -4.3679
## timedelta 1.8912e+00 3.9325e-01 4.8092
## n_tokens_title 1.1101e+02 2.8435e+01 3.9041
## n_tokens_content 2.6766e-01 2.7823e-01 0.9620
## num_hrefs 2.8980e+01 7.2799e+00 3.9809
## num_self_hrefs -5.6136e+01 1.7265e+01 -3.2515
## num_imgs 1.3931e+01 9.7521e+00 1.4285
## average_token_length -4.6962e+02 1.1079e+02 -4.2387
## num_keywords 5.7890e+01 3.3770e+01 1.7142
## data_channel_is_lifestyle -5.3930e+02 2.1705e+02 -2.4847
## data_channel_is_entertainment -6.5722e+02 1.4188e+02 -4.6323
## kw_min_min 2.2183e+00 1.1497e+00 1.9294
## kw_max_min 1.3328e-01 7.4593e-02 1.7868
## kw_avg_min -6.7975e-01 5.7434e-01 -1.1835
## kw_min_max -2.5086e-03 6.8535e-04 -3.6603
## kw_min_avg -4.2869e-01 7.1805e-02 -5.9702
## kw_max_avg -2.4084e-01 2.3767e-02 -10.1334
## kw_avg_avg 1.9493e+00 1.3451e-01 14.4913
## self_reference_min_shares 2.2720e-02 1.3491e-02 1.6841
## self_reference_max_shares 3.4592e-03 1.9480e-03 1.7758
## weekday_is_monday 4.9749e+02 1.8912e+02 2.6305
## weekday_is_saturday 5.9379e+02 2.9796e+02 1.9928
## LDA_00 2.5922e+02 2.7314e+02 0.9490
## LDA_04 1.1381e+02 2.0600e+02 0.5525
## global_subjectivity 2.6104e+03 6.6176e+02 3.9447
## global_rate_positive_words -8.8872e+03 4.1561e+03 -2.1384
## rate_positive_words 3.2315e+02 4.2289e+02 0.7641
## avg_negative_polarity -1.5861e+03 7.8656e+02 -2.0165
## max_negative_polarity -4.0605e+02 8.1437e+02 -0.4986
## weekday_is_sunday 2.4024e+02 1.4086e+02 1.7056
## Pr(>|t|)
## (Intercept) 1.258e-05 ***
## timedelta 1.521e-06 ***
## n_tokens_title 9.472e-05 ***
## n_tokens_content 0.3360459
## num_hrefs 6.879e-05 ***
## num_self_hrefs 0.0011488 **
## num_imgs 0.1531625
## average_token_length 2.253e-05 ***
## num_keywords 0.0864956 .
## data_channel_is_lifestyle 0.0129687 *
## data_channel_is_entertainment 3.628e-06 ***
## kw_min_min 0.0536866 .
## kw_max_min 0.0739811 .
## kw_avg_min 0.2365999
10.3 Detección de posibles modelos 269
Noten que con la corrección, los resultados de la inferencia cambian si empleamos un nivel de
confianza superior al 95 %. En este caso no podemos emplear la función remueve.no.sinifica() que
habíamos empelado en el Capítulo 10. Podemos modificar esta función para que tenga en cuenta la
corrección HC3. . Creemos la función remueve.no.sinifica.HC3().
Dependent variable:
shares
MCO HC3
(1) (2)
timedelta 2.012∗∗∗ 2.012∗∗∗
(0.289) (0.313)
Ahora sigamos con el modelo 3: algoritmo Forward y criterio AIC. En este caso tenemos:
model3 <- ols_step_forward_aic(max.model)
# se extraen las variables del mejor modelo según el
# algoritmo
vars.modelo3 <- model3$predictors
# se construye la fórmula
272 Primer caso de negocio (actualizado)
##
## One-sample Kolmogorov-Smirnov test
##
## data: res.modelo3
## D = 0.76089, p-value < 2.2e-16
## alternative hypothesis: two-sided
##
## Jarque Bera Test
##
## data: res.modelo3
## X-squared = 5853868793, df = 2, p-value < 2.2e-16
##
## studentized Breusch-Pagan test
##
## data: modelo3
## BP = 79.676, df = 28, p-value = 7.458e-07
Cuadro 10.3: Modelo seleccionado el algoritmo stepwise forward con corrección HC3
Dependent variable:
shares
Modelo 1(HC3) (R2 aj) Modelo 3 (HC3) (AIC)
(1) (2)
timedelta 2.012∗∗∗ 1.950∗∗∗
(0.313) (0.316)
num_imgs 19.292∗∗
(7.855)
LDA_02 −787.203∗∗∗
(192.924)
global_rate_positive_words −10,992.610∗∗∗
(3,488.953)
min_positive_polarity −2,150.639∗∗∗
(733.476)
num_keywords 66.533∗∗
(33.090)
abs_title_sentiment_polarity 661.541∗∗
(262.492)
abs_title_subjectivity 658.216∗∗
(329.711)
is_weekend 415.816∗∗
(166.009)
De manera similar en el Cuadro 10.4 se presentan los resultados de emplear el algoritmo stepwise
backward y tras limpiar las variables no significativas con la corrección HC3 (con un 95 % de confian-
za). Previamente puedes mostrar que estos dos modelos tienen un problema de heteroscedasticidad.
Estos resultados implican que el modelo 6 está anidado en el 4 (pero no en el 1 o 3).
Cuadro 10.4: Modelos seleccionados con el algoritmo stepwise backward con correc-
ción HC3
Dependent variable:
shares
Modelo 4 (HC3) (R2 aj) Modelo 6 (HC3) (AIC)
(1) (2)
timedelta 2.012∗∗∗
(0.295)
n_tokens_title 111.215∗∗∗
(28.360)
num_hrefs 30.457∗∗∗
(7.301)
num_self_hrefs −56.059∗∗∗
(16.488)
num_imgs 17.013∗∗
(7.561)
average_token_length −252.397∗∗∗
(88.422)
data_channel_is_entertainment −826.411∗∗∗
(142.573)
kw_min_max −0.003∗∗∗
(0.001)
kw_min_avg −0.392∗∗∗
(0.074)
kw_max_avg −0.202∗∗∗
(0.024)
kw_avg_avg 1.754∗∗∗
(0.148)
self_reference_max_shares 0.009∗∗∗
(0.003)
weekday_is_monday 500.657∗∗∗
(191.424)
weekday_is_saturday 717.793∗∗
(294.231)
weekday_is_sunday 320.349∗∗
(134.332)
avg_negative_polarity −2,196.253∗∗∗
(699.360)
LDA_04 1,580.746∗∗∗
(166.055)
LDA_01 1,037.607∗∗∗
(194.758)
data_channel_is_bus −703.496∗∗
(296.249)
is_weekend 408.830∗∗
(165.954)
kw_avg_max 0.002∗∗∗
(0.0005)
LDA_00 2,321.693∗∗∗
(340.952)
min_negative_polarity −741.708∗∗∗
(218.448)
self_reference_avg_sharess 0.024∗∗∗
(0.009)
Y finalmente, el Cuadro 10.5 se presentan los resultados de emplear el algoritmo combinado y tras
limpiar las variables no significativas y la correción HC3(con un 95 % de confianza). (Recuerda
hacer las pruebas de heteroscedasticidad para cada modelo) Los modelos 7 y 9 no están anidados.
Dependent variable:
shares
Modelo 7 (HC3) (R2 aj) Modelo 9 (HC3) (AIC)
(1) (2)
timedelta 1.858∗∗∗ 1.950∗∗∗
(0.310) (0.316)
data_channel_is_lifestyle −556.753∗∗∗
(215.703)
num_keywords 66.533∗∗
(33.090)
LDA_03 749.927∗∗
(328.032)
average_token_length −336.557∗∗∗
(97.749)
global_subjectivity 2,709.752∗∗∗
(625.581)
is_weekend 427.803∗∗
(167.261)
abs_title_subjectivity 658.216∗∗
(329.711)
En resumen, contamos con 6 modelos con las variables explicativas que se representan con una X
en el Cuadro 10.6. El modelo 6 está anidado en el modelo 4 y en el 7. Puedes probar rápidamente
que el modelo 4 es mejor que el 6 y el 7 es mejor que el 4. Por otro lado, el modelo 9 y el 3 son
los mismos. Así, descartaremos el modelo 6 y el 9 del análisis. Los modelos otros modelos no se
encuentran anidados.
Cuadro 10.6: Variables explicativas incluidas en cada uno de los modelos calculados
(con correción HC3)
Forward Backward Both
modelo 1 modelo 3 modelo 4 modelo 6 modelo 7 modelo 9
timedelta X X X X X
n_tokens_title X X X X X
n_tokens_content
num_hrefs X X X X X
num_self_hrefs X X X X X
num_keywords X X
average_token_length X X X X
num_imgs X X
data_channel_is_lifestyle X X X
data_channel_is_entertainment X X X X X
kw_min_max X X X X X
kw_min_avg X X X X X
kw_max_avg X X X X X
kw_avg_avg X X X X X
self_reference_max_shares X X X X X
data_channel_is_lifestyle X X X
weekday_is_monday X X X X X
is_weekend X X
LDA_02 X X X
LDA_03 X X X
LDA_04
global_rate_positive_words X X X
global_subjectivity X X X
min_positive_polarity X X X
avg_negative_polarity X X X X X
abs_title_sentiment_polarity X X X
abs_title_subjectivity X X
De esta manera tendremos que comparar estos modelos con pruebas de modelos no anidados
empleando la prueba J con corrección HC3. La prueba de Cox no es posible implementarla con H.C..
A continuación se presenta el código ajustado de la Prueba J para la corrección H.C. empleando la
función jtest() del AER (Kleiber y Zeileis, 2008).
library(AER)
# comparación de modelos no anidados
Empecemos comparando todos los modelos con la prueba J. En el Cuadro 10.7 se reportan los
valores p de las pruebas J que permiten probar la hipótesis nula de que el modelo de la fila es mejor
que el de la columna.
Cuadro 10.7: Valores p de las pruebas J (H0 : modelo de la fila es mejor que el de la
columna (con correción HC3))
Si miramos la primera fila, con un 99 % de confianza, podemos concluir que el modelo 1 no es mejor
que los otros modelos1 . Si miramos la primera columna, podemos ver como la nula de que el modelo
3 es mejor que el 1 no se puede rechazar. Es decir, con un 99 % de confianza, podemos concluir
que los modelos 3 es mejor que el 1. Para los otros modelos no se puede afirmar algo similar, y por
tanto la prueba no es concluyente. Al comparar el modelo 3 con el 4, se encuentra que se puede
rechazar la nula de que el modelo 3 es mejor que el 4, y lo contrario es cierto. Es decir, la prueba no
es concluyente. La prueba si puede concluir en favor que el modelo 3 es mejor que el 7.
Para las otras comparaciones que no se mencionan la prueba no es concluyente. Es decir, poniendo
todo junto el modelo 3 es el mejor.
Ahora empleemos las métricas AIC y BIC. Estas medidas no se ben afectadas por la presencia de
heteroscedasticidad ni la multicolinealidad. No obstante, el R2 ajustado al depender del R2 podría
verse afectado en presencia de una multicolinealidad fuerte. Los resultados se reportan en el Cuadro
10.8 y BIC()
AIC BIC
Modelo 1 853919.997 854083.163
Modelo 3 853912.391 854109.908
Modelo 4 853925.168 854079.747
Modelo 7 853921.852 854093.606
El AIC sugieren que el mejor modelo es el 3, mientras que el BIC selecciona el 1. Poniendo todo
junto, el mejor modelo será el modelo 3 (que es igual al 9) el cuál se reporta en el Cuadro 10.9.
1 Notaque la hipótesis nula asociados a los valores p reportados en la primera final del Cuadro 10.7 corresponde a que
el modelo 1 es mejor al modelo de la respectiva columna. Y esa hipótesis nula se puede rechazar en todos los casos.
280 Primer caso de negocio (actualizado)
Dependent variable:
shares
HC3
kw_avg_avg 1.766∗∗∗
(0.140)
kw_max_avg −0.204∗∗∗
(0.024)
kw_min_avg −0.365∗∗∗
(0.076)
timedelta 1.950∗∗∗
(0.316)
num_hrefs 33.158∗∗∗
(7.453)
n_tokens_title 118.105∗∗∗
(28.905)
data_channel_is_entertainment −818.212∗∗∗
(143.022)
avg_negative_polarity −1,675.733∗∗
(701.510)
average_token_length −336.557∗∗∗
(97.749)
global_subjectivity 2,709.752∗∗∗
(625.581)
weekday_is_monday 434.380∗∗
(190.030)
kw_min_max −0.002∗∗∗
(0.001)
num_self_hrefs −62.426∗∗∗
(16.690)
LDA_02 −787.203∗∗∗
(192.924)
global_rate_positive_words −10,992.610∗∗∗
10.5 Identificación de la variable más importante 281
Antes de pasar a sacar conclusiones, procedamos a determinar si el mejor modelo tiene o no multi-
colinealidad. Nota que el V IF depende de la matriz de varianzas y covarianzas de los estimadores
MCO y en presencia de heteroscedasticidad, éstos no son confiables. Así no podemos emplearlos en
esta situación. Así que nos concentraremos en la prueba de Belsley y col. (1980) también conocida
como la prueba Kappa.
## [1] 4304419
Este estadístico es muy grande (κ = 4,3044185 × 106 ). Esta prueba sugiere la existencia de un
problema serio de multicolinealidad. Nota que los síntomas del problema de multicolinealidad no
estaban presentes. No obstante la prueba si detecta un problema serio. Solucionar este problema no
será fácil, pues no podemos emplear el V IF para eliminar variables. Así que la interpretación que
realicemos de los coeficientes puede tener problemas.
Así continuaremos con este problema, teniendo precaución con las conclusiones que saquemos.
Como lo discutimos una pregunta habitual cuando estamos haciendo analítica diagnóstica es ¿cuál
variable es la mas importante para explicar la variable dependiente? en el Capítulo 7 discutimos dos
formas de hacer esto empleando el aumento en el R2 que se obtiene al adicionar el respectivo regresor
dado que ya están en el modelo las otras k − 2 variables explicativas y con los coeficientes estandari-
zados. Nota que en este caso no es posible emplear el R2 , pues el problema de multicolinealidad
podría afectar esta métrica. Así que es mejor descartar esta aproximación.
Por otro lado, también hay que reconocer que en presencia de heteroscedasticidad los coeficientes
estandarizados como los discutimos en el Capítulo 7 se ven afectados. Es decir, al tener un error
heteroscedástico, tendremos que la variable dependiente también tiene una varianza no constate.
Y por tanto emplear sy no sería adecuado. Pero podemos emplear el estimador H.C. para tener un
estimador de la desviación estándar de la variable dependiente que no sea constante para toda la
muestra. Esto no lo podemos hacer con el paquete relaimpo (Grömping, 2006) . Pero si lo podemos
hacer con el el paquete jtools (Long, 2020) como lo veremos a continuación.
282 Primer caso de negocio (actualizado)
Ahora veamos cómo se pueden presentar los resultados de una manera mas amigable y en presencia
de heteroscedasticidad. Las visualizaciones que generamos en el Capítulo 7 emplean las estimaciones
del modelo por MCO, pero podemos modificarlas rápidamente para incluir la corrección H.C..
Seguiremos empleando el paquete jtools (Long, 2020) para visualizar los resultados del objeto lm
pero con la corrección de heteroscedasticidad. La función plot_summs() tiene el argumento robust
que permite incluir la corrección H.C. o H.A.C.. En este caso.
library(jtools)
plot_summs(modelo3, robust = "HC3", scale = TRUE, transform.response = TRUE)
kw_avg_avg
kw_max_avg
kw_min_avg
timedelta
num_hrefs
n_tokens_title
data_channel_is_entertainment
avg_negative_polarity
average_token_length
global_subjectivity
weekday_is_monday
kw_min_max
num_self_hrefs
LDA_02
global_rate_positive_words
min_positive_polarity
self_reference_max_shares
data_channel_is_lifestyle
num_keywords
abs_title_sentiment_polarity
abs_title_subjectivity
Este gráfico permite ver los coeficientes y sus respectivos intervalos de confianza con la corrección
HC3. También podemos graficar los coeficientes estandarizados teniendo en cuenta la correccion
HC3, de la siguiente manera:
10.6 Generación de visualizaciones de los resultados 283
kw_avg_avg
kw_max_avg
kw_min_avg
timedelta
num_hrefs
n_tokens_title
data_channel_is_entertainment
avg_negative_polarity
average_token_length
global_subjectivity
weekday_is_monday
kw_min_max
num_self_hrefs
LDA_02
global_rate_positive_words
min_positive_polarity
self_reference_max_shares
data_channel_is_lifestyle
num_keywords
abs_title_sentiment_polarity
abs_title_subjectivity
Ahora ya estas listos para proceder a generar las recomendaciones al editor. ¿Qué recomiendas?
En este capítulo hemos seguido el proceso paso a paso par responder una pregunta de negocio
empleando un modelo de regresión para hacer analítica diagnóstica . A diferencia de lo realizado en
el Capítulo 7, esta vez realizamos el chequeo del cumplimiento de los supuestos del Teorema de
Gauss-Markov y ahora si podemos estar seguros de sacar conclusiones con nuestro modelo.
11 . Autocorrelación
Explicar en sus propias palabras los efectos de la autocorrelación sobre los estimadores MCO.
Realizar en R diferentes tipos de análisis gráficos que revelen la posibilidad de autocorrelación
en los residuos.
Efectuar las pruebas estadísticas necesarias para detectar la violación del supuesto de no
autocorrelación en los residuos empleado R. En especial las pruebas de Rachas, Durbin
Watson, Box-Pierce y de Ljung-Box.
Corregir el problema de autocorrelación empleando estimadores consistentes para los errores
estándar en R.
286 Autocorrelación
11.1 Introducción
En los dos capítulos anteriores hemos analizado las consecuencias de violar algunos de los supuestos
del modelo de regresión. Analizamos las consecuencias de la violación del supuesto de independencia
lineal entre variables explicativas en un modelo de regresión múltiple (Capítulo 8), posteriormente
nos enfocamos en las consecuencias de un error homoscedástico (Capítulo 9).
Finalmente, y para concluir nuestra discusión de la violación de los supuestos que garantizan el
cumplimiento del Teorema de Gauss-Markov nos concentraremos en los efectos que tiene la violación
del supuesto de no autocorrelación (no existe relación entre los diferentes errores). Este supuesto
garantiza la no presencia de un patrón predecible en el comportamiento de los errores. Cuando este
supuesto es violado, lo cual ocurre comúnmente cuando trabajamos con datos de series de tiempo,
se dice que los errores presentan autocorrelación (o correlación serial); en otras palabras, están
relacionados entre sí.
Supuestos del modelo de regresión múltiple
Si existe autocorrelación entre los errores, entonces los estimadores MCO siguen siendo insesgados
pero no son eficientes1 para la demostración de estos resultados).
Veamos más en detalle qué significa la autocorrelación. Y para simplificar, estudiemos inicialmente
el caso más sencillo. Cuando existe una relación lineal “grande” entre las observaciones adyacentes,
pero esta relación (lineal) tiende a desaparecer a medida que se consideran errores más lejanos.
Formalmente tenemos:
y = Xβ + ε (11.1)
donde el término del error tiene media cero y se encuentra correlacionado con el error del periodo
anterior2 : E [εt ] = 0; εt = ρεt−1 + νt ∀t con 0 ≤ |ρ| < 1 y Var (vt ) = σv2 .
Este tipo de autocorrelación es conocido como un proceso auto-regresivo de orden uno o AR(1)
para abreviar. Si seguimos asumiendo que la varianza de los errores es constante, entonces se puede
probar fácilmente que:
σν2
σε2 =
(1 − ρ 2 )
1 Una demostración de esta afirmación se presenta en el anexo al final de capítulo en la sección 11.5
2A la observación del periodo anterior se le conoce como la variable rezagada. Es decir, Yt−1 es la variable rezagada de
Yt ; rezagada un periodo. En este orden de ideas Zt−2 está rezagada dos periodos. En general es común emplear la letra p
para representar el número de rezagos de una variable.
11.1 Introducción 287
Por otro lado, dado que el valor esperado del error es cero se puede mostrar fácilmente que:
En términos generales tenemos que en este caso de errores con un proceso AR(1) la autocorrelación
para diferentes rezagos está dada por:4
ρ (s) = ρ s σε2
Es decir, en el caso de un proceso AR(1) a medida que se alejan en el tiempo las observaciones (se
consideran más rezagos) la correlación entre los errores es menor. Esto lo podemos observar en los
ejemplos 11.1 y 11.1. El Ejemplo 11.1 muestra la situación cuando no existiese un problema de
autocorrelación, la autocorrelación para los diferentes rezagos será cero.
En la Figura 11.1 se presenta un error cuya autocorrelación es de 0.8 (ρ = 0,8). Noten que
para un periodo t los errores tienden a mantener el signo del error del periodo anterior (t − 1).
Esto se puede ver de mejor manera si se visualizan los errores del periodo t (εt ) en función
de los del perido anterior (εt−1 ) como se presnta en la Figura 11.2. Nota que se observa una
realción lineal muy fuerte entre los errores.
3 La correlación entre errores inmediatamente adyacentes también se domina la autocorrelación a un rezago. Por
ejemplo, la correlación entre ε2 y ε1 o la correlación entre ε3 y ε2 . Y en general será la correlación etre εt y εt−1 . Si se
considera la relación entre errores separados por dos periodos se denomina autocorrelación para a dos rezagos (εt y εt−2 ),
etc.
4 A la función que muestra la correlación para diferentes rezagos de un proceso se le denomina función de autocorrela-
ción.
288 Autocorrelación
t
Fuente: Elaboración propia
Figura 11.2. Error simulado para el periodo t versus el mismo error en el periodo
anterior (error simulado de un proceos AR(1) con ρ = 0,8)
εt
εt−1
Fuente: Elaboración propia
proceso AR(1) y con un ρ = 0,8) la correlación entre las observaciones se hace menos fuerte
entre mas alejados estén.
0.6
0.4
0.2
0.0
0 5 10 15 20 25
Rezago (s)
Fuente: Elaboración propia
En general, cuando un error de un modelo sigue un proceso AR(1) y 0 < ρ < 1 diremos que
el modelo tiene Autocorrelación positiva. En este caso, los errores de períodos adyacentes
tienden a tener el mismo signo y esto implicará obtener gráficos similares a los obervados en
las Figuras 11.1 y 11.2.
En la Figura 11.4 se presenta un error cuya autocorrelación es de -0.8 (ρ = −0,8). Noten que
a diferencia del ejemplo anterior, para un periodo t los errores tienden a cambiar el signo
observado en eel periodo anterior (t − 1). Esto se puede ver de mejor manera si se visualizan
los errores del periodo t (εt ) en función de los del perido anterior (εt−1 ) como se presnta en la
Figura 11.5. Nota que se observa una realción lineal muy fuerte entre los errores, pero con
pendiente negativa.
290 Autocorrelación
t
Fuente: Elaboración propia
Figura 11.5. Error simulado para el periodo t versus el mismo error en el periodo
anterior (error simulado de un proceos AR(1) con ρ = −0,8)
εt
εt−1
Fuente: Elaboración propia
Adicioanlemnte, podemos observar en la Figura 11.6 la autorrelación para estos errores para
diferenes rezagos. Este gráfico muestra como para errores autocorrelacionados con un proceso
11.1 Introducción 291
AR(1) y con un ρ = −0,8) la correlación entre las observaciones se hacee menos fuerte entre
mas alejados estén, pero la correlación tiene signo contrario.
0.0
−0.5
0 5 10 15 20 25
Rezago (s)
Fuente: Elaboración propia
En general, cuando un error de un modelo sigue un proceso AR(1) y −1 < ρ < 0 dire-
mos que el modelo tiene Autocorrelación negativa. En este caso, los errores de períodos
adyacentes tienden a tener signo contrario y esto implicará obtener gráficos similares a los
obervados en las Figuras 11.4 y 11.5.
En la Figura 11.7 se presenta un error sin autocorrelación (ρ = 0). En este caso el patrón de
los residuales es totalmente aleatorio. Al visualizar los errores del periodo t (εt ) en función
de los del periodo anterior (εt−1 ) no se observa ningún patrón (ver Figura 11.8. Nota que
tampoco existirán autocorrelaciones y por eso no las graficaremos.
292 Autocorrelación
t
Fuente: Elaboración propia
εt−1
Fuente: Elaboración propia
Regresando al problema de autocorrelación, este problema puede ser causado porque las relaciones
entre las variables pueden ser dinámicas. Es decir, todo el ajuste entre las variables no se hace
en un mismo período. La autocorrelación también se puede deber a que la información no está
disponible instantáneamente y por tanto, la variable dependiente puede depender de errores previos.
11.2 Pruebas para la detección de autocorrelación 293
Por ejemplo, la información de las utilidades no se encuentra disponible sino después de varios
períodos, y los individuos tendrán que esperar unos periodos para ajustar sus decisiones. En general,
la autocorrelación es un problema muy común en modelos que emplean series de tiempo.
Es poco probable que exista autocorrelación en datos de corte trascversal, pero de existirlo es muy
facil de eliminarlo. SImplementen podríamos reorganizar las observacioens para eliminar la relación
entre las observaciones adyacentes. Por otro lado esto es imposible en el caso de una muestra de
serie de tiempo, pues el orden de las observaciones es importante en las series de tiempo y no se
puede modificar.
La autocorrelación entre los errores puede tomar muchas formas. En general, se dirá que los
errores siguen un proceso autorregresivo de orden p (AR(p)) cuando el error depende de los p
períodos anteriores. Por ejemplo, si el término de error tiene el siguiente comportamiento εt =
ρ1 εt−1 + ρ2 εt−2 + νt (∀t), entonces se dirá que el error es auto-regresivo de orden 2 (AR(2)). Si el
comportamiento es εt = ρ1 εt−1 + ρ2 εt−2 + ρ3 εt−3 + νt , entonces los errores seguirán un proceso
AR(3). En general, si el comportamiento del error es εt = ρ1 εt−1 + ρ2 εt−2 + ρ3 εt−3 + · · · ρ p εt−p + νt
entonces el error sigue un proceso AR(p).
En el análisis tradicional el primer paso, antes de realizar pruebas estadísticas formales, es verificar
gráficamente si los residuales presentan síntomas de la presencia del problema. No obstante, así
5 En el anexo al final del capítulo (ver sección 11.5) se presenta una demostración de esta afirmación.
6 En el anexo al final del capítulo (ver sección 11.5) se presenta una demostración de esta afirmación.
294 Autocorrelación
como en el caso de los dos problemas anteriormente estudiados, es posible que el científico de datos
se enfrente a tener que estimar muchos modelos de manera automática y por tanto no tenga sentido
realizar un análisis preliminar gráfico.
Los síntomas de autocorrelación en una regresión se pueden observar en el vector de errores. Pero
dicho vector no es observable, por tanto la mejor aproximación es examinar los errores estimados.
Las gráficas más empleadas son:
1. Los errores contra el tiempo ε̂ vs t = 1, 2, ...n. Como por ejemplo las Figuras 11.1, 11.4 y 11.7.
2. Los errores contra los errores del periodo anterior ε̂t vs ε̂t−1 . Como por ejemplo las Figuras
11.2, 11.5 y 11.8.
Estos gráficos permiten identificar algún tipo de regularidad como los que se presentan en el ejemplo
11.1. Por un lado, en los dos primeros gráficos se observa el comportamiento típico de errores con un
proceso AR(1) y con autocorrelación positiva, observamos que el signo de los residuos persiste en
periodos prolongados de tiempo. Por otro lado, en el caso de presencia de autocorrelación negativa
sucede lo contrario (ver ejemplo 11.1), ya que el signo de los residuos cambia de un periodo a otro.
Si no existe autocorrelación, en estos gráficos (ver ejemplo 11.1) no podremos observar patrón claro
de comportamiento en el signo de los residuales y en su relación con valore pasados.
Así como en el caso de la heteroscedasticidad, el análisis gráfico es un análisis informal que nos
permite intuir la presencia del problema; sin embargo, para un análisis más formal existen diferentes
pruebas para identificar la autocorrelación. El científico de datos tendrá que decidir si este tipo de
análisis gráfico agrega o no valor al análisis y la presentación de resultados que esta realizando para
cada pregunta de negocio en particular.
La prueba de rachas (o Runs test en inglés), propuesta por Wald y Wolfowitz (1940), es una prueba de
independencia lineal no paramétrica cuya idea es relativamente sencilla. Si no hay autocorrelación,
entonces no deberían observarse muchos errores seguidos con el mismo signo (autocorrelación
positiva), ni tampoco muchos cambios de signo seguido (autocorrelación negativa). En otras palabras,
debe existir la cantidad adecuada de cambios de signo en una serie de datos: ni muchos, ni pocos.
Esta prueba tiene además la ventaja de no necesitar suponer una distribución de los errores. Para
probar la hipótesis nula de que los errores son totalmente aleatorios (H0 : ρ = 0) versus la alterna de
que existe algún tipo de autocorrelación en los errores, se requiere seguir los siguientes pasos a partir
de los errores estimados:
1. Cuente el número de errores con signo positivo (N+ ) y con signo (N− )
2. Cuente el número rachas (k), es decir de “seguidillas” de signo. Por ejemplo, si tenemos que
los signos de los errores son: - - - - - + + + - +++ - ++. Entonces se tendrán seis rachas (k =6).
(- - - - -)(+ + +)(-)(+++)(-)(++). Note que el número de rachas es igual al número de cambios
de signo
11.2 Pruebas para la detección de autocorrelación 295
3. Si N+ y/o N− son menores que 20, entonces se puede construir un intervalo de confianza del
95 % para el número de rachas “razonable” bajo la hipótesis nula a partir de los valores críticos
que se presentan en el anexo al final del capítulo (ver sección 11.5)
4. Si N+ y/o N− son mayores que 20, entonces se puede construir un intervalo de confianza del
(1 − α)100 % para el número de rachas “razonable” bajo la hipótesis de la siguiente manera:
h p i
E [k] ± z α2 Var [k] (11.2)
donde, el valor esperado y la varianza de k (las rachas) son:
2N+ N−
E (k) = +1 (11.3)
N+ + N−
2N+ N− (2N+ N− − N+ − N− )
Var (k) = (11.4)
(N+ + N− )2 (N+ + N− − 1)
Durbin y Watson (1951) diseñaron una prueba de autocorrelación con gran poder para detectar
errores con autocorrelación de primer orden. Esta prueba se ha convertido en la más común para
detectar este problema por ser relativamente intuitiva. Los autores definen el siguiente estadístico de
prueba a partir de los errores estimados:
n
2
∑ (ε̂t − ε̂t−1 )
t=2
DW =
ε̂ T ε̂
Naturalmente la regla que se presenta en el Cuadro 11.1 es únicamente intuitiva. Para tener una
decisión con mayor grado de certidumbre se deberá efectuar una prueba de hipótesis.
El estadístico DW nos permite contrastar tres diferentes hipótesis nulas, como se reportan en el
Cuadro 11.2.
Cuadro 11.2: Estadístico DW en casos de Autocorrelación
Durbin (1970) demostró que este estadístico de prueba sigue una distribución estándar normal
(h ∼ N (0, 1)) y por lo tanto, si se cumple que |h| > z α2 entonces es posible rechazar H0 : ρ = 0 a
11.2 Pruebas para la detección de autocorrelación 297
favor de la HA : ρ 6= 0. Finalmente,
como
podemos apreciar en la ecuación 11.5, esta prueba no es
\
válida en los casos en que n Var (α̂) ≥ 1.
Box y Pierce (1970) definen una prueba que permite determinar si las primeras s autocorrelaciones
son conjuntamente iguales a cero o no. Es decir, permite comprobar la hipótesis nula de un error no
autocorrelacionado (las correlaciones en los primeros s rezagos son cero), versus la hipótesis alterna
de la existencia de algún tipo de autocorrelación (por lo menos una autocorrelación no es cero). Para
comprobar esta hipótesis nula, Box y Pierce (1970) sugieren el estadístico Q:
s
Q = n ∑ rk2 ∼a χs2
j=1
donde s corresponden al número de rezagos que se desean considerar dentro de la prueba. Ellos
demuestran que su estadístico sigue una distribución Chi-cuadrado con s grados de libertad (χs2 ). Por
lo tanto, será posible rechazar la H0 (error no autocorrelacionado) si se cumple que Q > χs2 .
Sin embargo, la prueba de Box-Pierce sólo es válida para muestras grandes (n > 20), para resolver
este inconveniente Ljung y Box (1979) proponen una modificación del estadístico anterior para que
presente un mejor comportamiento en muestras pequeñas. El estadístico de Ljung-Box corresponde
a:
0
s r2j
Q = n (n + 2) ∑
k=1 n + j
Este estadístico funciona y posee la misma distribución que el de la prueba de Box-Pierce.
Finalmente, es importante mencionar que una práctica muy común es realizar esta prueba para un
número relativamente grande de rezagos. Es decir, hacer las correspondientes pruebas para diferentes
8 Esto explota las características observadas en las Figuras 11.3 y 11.6.
298 Autocorrelación
rezagos; por ejemplo, se calculan los correspondientes estadísticos para comprobar las siguientes
hipótesis alternas:
H0 : γ1 = 0
H0 : γ1 = γ2 = 0
..
.
H0 : γ1 = γ2 = . . . γn/3 = 0
La decisión de si los errores están o no autocorrelacionados se toma teniendo en cuenta las decisiones
de cada una de estas pruebas.
Breusch (1978) y Godfrey (1978) diseñaron una prueba que permite comprobar la hipótesis nula
de no autocorrelación versus la alterna de que el error sigue un proceso auto-regresivo de orden p.
Esta prueba también es conocida como la prueba del multiplicador de Lagrange o prueba LM (por su
sigla en inglés: Lagrange Multiplier Test).
Esta prueba se basa en una idea muy sencilla. Si existe autocorrelación en los errores, entonces estos
son explicados por sus valores pasados, pero si no hay autocorrelación entonces los valores pasados
de los errores no pueden explicar el comportamiento actual del error.
Así, para probar la hipótesis nula de no autocorrelación versus la alterna de unos errores con un
proceso AR(s), se pueden emplear los residuos estimados de la regresión bajo estudio para comprobar
si los valores pasados del error sirven o no para explicar el error del periodo t. Es decir, la prueba
LM implica los siguientes pasos:
LM = (n − s) × R2
Al igual que la prueba de Box-Pierce, cuando se emplea esta prueba normalmente se realizan
las pruebas para diferentes hipótesis nulas y se toma la decisión basándose en el conjunto de los
resultados.
9 Algunos paquetes estadísticos calculan el estadístico LM multiplicando el R2 por n y no por (n − s). Si el tamaño de
la muestra es grande, estas dos aproximaciones son equivalentes, en caso contrario es mejor multiplicar por (n − s).
11.3 Solución a la autocorrelación 299
Así como en el caso de la heteroscedasticidad (Ver Capítulo 9), existen dos formas de solucionar
la existencia de autocorrelación. La primera solución es tratar de resolver de raíz el problema
modificando la muestra. Este método se conoce como el Método de Diferencias Generalizadas
que hace parte de la familia de los Mínimos Cuadrados Generalizados (MCG). Esta aproximación
implica conocer exactamente cómo es la autocorrelación; algo que típicamente es difícil para el
científico de datos. Una breve introducción a este método se presenta en el anexo al final del capítulo
(Ver sección 11.5).
De manera similar a la solución de White (1980) para la heteroscedasticidad, Newey y West (1987)
sugieren una estimador para la matriz de varianzas y covarianzas.
T
donde w = w0 . . . wn−1 corresponde a un vector de pesos.
Este estimador se caracteriza por ser consistente; es decir, ser sesgado en muestras pequeñas, pero
esto desaparece cuando la muestra se vuelve grande. Por eso este estimador es conocido como
estimador H.A.C. (heteroskedasticity and autocorrelation consistent). De manera similar a lo que
discutido para el caso de los H.C., estos estimadores no hace que los MCO se conviertan nuevamente
en MELI. La varianza del estimador MCO sigue siendo más grande que por ejemplo los del estimador
GLS.
Por otro lado, así como en el caso de la corrección H.A.C. diversos autores han intentado mejorar la
aproximación provista por Newey-West:
Andrews (1991) sugiere: w` = z32 sin(z)
z − cos (z) , donde z = 6π 5 · ` B. Esta aproximación
es conocida como H.A.C de kernel.
Lumley and Heagerty (1999) sugieren otra forma de pesar los datos que es conocida como la
aproximaxión H.A.C de weave.
Las dos últimas aproximaciones son las más usadas en la actualidad. Pero existe poca documentación
de cuándo es mejor uno u otro caso. Esto es aún materia de investigación.
Finalmente, es importante anotar que otra forma común para solucionar el problema de autocorrela-
ción en una regresión es emplear la variable dependiente como variable explicativa, pero rezagada
unos periodos. Es decir, de encontrar autocorrelación se acostumbra incluir la variable y rezagada
yt−1 como variable explicativa11 . Esto implica probar nuevamente si existe o no autocorrelación en
los nuevos residuales. Si el problema de autocorrelación persiste, se sigue incluyendo la variable
dependiente rezagada mas periodos hasta que el problema de autocorrelación desaparezca. Esta
aproximación implica diferentes iteraciones y estar probando la autocorrelación en cada paso.
En la actualidad los científicos de datos prefieren la aproximación de emplear H.A.C para hacer
analítica diagnóstica . Si se de desea hacer analítica predictiva para hacer proyecciones es más
común emplear técnicas de series de tiempo que emplean esta lógica de incluir las autocorrelaciones
como los modelos ARIMA o ARIMAX. Estas técnicas no las cubriremos en este libro pero puedes
consultar Alonso y Hoyos (2021) para una introducción a los métodos de proyección.
11 Esto se puede hacer en R empleando la función tslm() del paquete forecast (Hyndman y Khandakar, 2008)
11.4 Práctica en R: Explicando los rendimientos de una acción (continuación)301
En el Capítulo 3 construimos un modelo para responder una pregunta de negocio que tenían en el área
financiera de una organización. La pregunta era ¿Cómo está relacionado el rendimiento de la acción
grupo SURA con el rendimiento de aquellas acciones en la que ya tenemos inversiones? Las acciones
que ya se tenían en el portafolio eran: ECOPETROL, NUTRESA, EXITO, ISA, GRUPOAVAL,
CONCONCRETO, VALOREM y OCCIDENTE. Esta pregunta nació de la necesidad de diversificar
el riesgo del portafolio. Ahora, tras unas semanas, contamos con una variable mas que puede ser
útil en el análisis la tasa de depósitos a término fijo a 90 días (DTF). Esta variable es común que se
incluya en este tipo de modelos como una variable que captura el rendimiento de un activo libre de
riesgo, poner el dinero en un CDT. Esta variable está disponible en el archivo DataCDTs.xlsx y la
adicionaremos a nuestro modelo. Entonces el modelo que estimaremos será:
Nuestra misión en esta ocasión es terminar el análisis y responder la pregunta de negocio inclu-
yendo la nueva variable, pero antes debemos estar seguros que el modelo estimado está libre de
autocorrelación.
Nuestra primera tarea es cargar los datos y consolidar todos los datos (los de los rendimientos
y los de la DT F en un solo objeto). Los datos de los rendimientos se encuentran en un archivo
RetornosDiarios.RData, así que lo podemos cargar empleando la función load().
load("../Data/RetornosDiarios.RData")
class(retornos.diarios)
El objeto retornos.diarios es de la clase xts, lo cual permite manejar fácilmente las fechas.
Los datos de la DT F la podemos cargar con la función read_excel() del paquete readxl (Wickham y
Bryan, 2019) . Esta función tiene una característica importante para este ejercicio, pues nos permite
cargar un archivo y especificarle el tipo de variable que deberá aplicar a cada columna al momento
de cargar los datos. Esto se puede hacer mediante el argumento col_types. El otro argumento que
requiere esta función es el nombre del archivo que contiene los datos y su correspondiente ruta. En
nuestro caso, la primera columna del archivo de Excel corresponde a las fechas y la segunda a los
datos como tal de la DT F. Para evitar que se pierda la información de la fecha podemos emplear el
siguiente código:
302 Autocorrelación
library(readxl)
# carga los datos
DTF <- read_excel("../Data/DataCDTs.xlsx", col_types = c("date",
"numeric"))
head(DTF, 2)
## # A tibble: 2 x 2
## `Fecha(dd/mm/aaaa)` DTF90dias
## <dttm> <dbl>
## 1 2012-01-02 00:00:00 0.0513
## 2 2012-01-03 00:00:00 0.0558
class(DTF)
Noten que el nombre de la primera columna fue modificado para hacer más fácil la manipulación de
esa variable. Por otro lado, la clase del objeto DTF no es xts. Ésta es una clase que permite manipular
fácilmente objetos de series de tiempo. Procedamos a cambiar dicha clase para hacer más fácil la
unión de las dos bases de datos.
Carguemos el paquete xts (Ryan y Ulrich, 2020) . En dicho paquete tenemos una función con el
mismo nombre del paquete ( xts()) que permite crear objetos de la clase xts. Esta función requiere
dos argumentos. El primero es el objeto que se quiere transformar y el segundo (order.by) es un
vector que contiene las fechas que se le asignará al objeto. Estas fechas deben ser de un formato
fecha. Por ahora, tenemos el objeto para ser convertido en objeto xts y nos falta el vector con las
correspondientes fechas. Esto lo podemos crear con la función as.Date() del paquete base de R.
Creemos las fechas de la variable Fecha del objeto DTF empleando la función as.Date() y luego
procedamos a crear un objeto con el nombre DTF90dias que sea de clase xts.
# Carga librería
library(xts)
# se crea objeto con fechas
DTF$Fecha <- as.Date(DTF$Fecha)
# se verifica la clase de la fecha
class(DTF$Fecha)
## [1] "Date"
11.4 Práctica en R: Explicando los rendimientos de una acción (continuación)303
Antes de unir los dos objetos podemos constatar que ambos objetos tienen la misma periodicidad y
cubran el mismo periodo. La función periodicity() del paquete xts nos muestra la periodicidad de un
objeto de serie de tiempo.
periodicity(DTF90dias)
periodicity(retornos.diarios)
Ya podemos unir los dos objetos por medio de la función la función merge() del paquete xts (es decir,
merge.xts()). Esta función permite pegar dos objetos de clase xts de diferentes maneras empleando
el argumento join. Si join= “outer”, se crea una base de datos con todas las fechas incluidas
en los dos objetos. Si en uno de los objetos no existía una fecha, entonces los valores faltantes se
remplazan por “NA”12 Si join= “inner” se construirá una nueva base de datos únicamente con
las filas (fechas) que están en común en ambos objetos. Si join= “left” el nuevo objeto tendrá
solo las fechas del primer objeto. Si el segundo objeto no tiene información para una de esas fechas,
se rellenará esa información con un “NA”. De manera similar, Si join= “right”, el nuevo objeto
tendrá las fechas del segundo objeto.
En nuestro caso, puedes constatar que los dos objetos, si bien cubren el mismo periodo, no tienen la
misma cantidad de datos. Esto ocurre porque hay unos días hábiles en los que la Bolsa de Valores no
se encuentra abierta, pero sí se recoge información para la DTF. Así, que dado que nuestro objetivo
será mas conveniente unir los objetos de tal manera que tengamos observaciones para los días en los
que la Bolsa de Valores estuvo abierta. Es decir,
Ya podemos correr el modelo y examinar los respectivos residuos13 . Esto lo podemos hacer con un
gráfico de líneas de los residuos en función del tiempo y uno de dispersión de los residuos en el
periodo actual versus los residuos rezagados14 .
13 En el Capítulo 9 vimos que podemos extraer los residuales de un objeto LM con la función resid() del paquete central
de R.
14 Recuerda que el término rezagado implica que la variable se observa en un periodo anterior. Por ejemplo, cuando
hablamos de la variable yt rezagada un periodo, nos estamos refiriendo a yt−1 . Esto se puede hacer en R empleando la
función lag.xts() del paquete xts
11.4 Práctica en R: Explicando los rendimientos de una acción (continuación)305
Errores estimados
2 4 6
errores
−2
−6
tiempo
2 4 6
errores (t−1)
−2
−6
−6 −4 −2 0 2 4 6
errores (t)
El primer gráfico muestra unos errores que alternan “mucho” su signo, esto puede ser muestra de una
autocorrelación negativa. Por otro lado, el segundo gráfico no presenta una fuerte relación negativa
entre los errores. Naturalmente, los gráficos nunca serán concluyentes, pero sí nos permiten tener
una intuición de lo que está ocurriendo con los residuos. A continuación se presentan las pruebas de
autocorrelación discutidas anteriormente.
Recordemos que todas las pruebas descritas anteriormente tienen como hipótesis nula el cumpli-
miento del supuesto (no autocorrelación) y la alterna la violación de alguna manera del supuesto.
Procedamos a efectuar dichas pruebas.
306 Autocorrelación
Para realizar la prueba de rachas, podemos emplear la función runs.test() del paquete tseries
(Trapletti y Hornik, 2019). Los argumentos más importantes de esta función son
runs.test(x,alternative)
donde:
x: objeto que contiene una variable de clase factor que muestre si el error es positivo o negativo
alternative: no es obligatorio y determina cuál es la hipótesis alterna que se desea probar.
Si alternative = “two.sided”, la alterna será que existe algún tipo de autocorrelación.
Esta es la opción por defecto, es decir si no se especifica este argumento, se efectuará esta
prueba. Si alternative = “less” la alterna es que la autocorrelación es positiva (menos
cambios de signos que los esperados) y si alternative = “greater”, la alterna es que
existe autocorrelación negativa (más cambios de signos que los esperados).
Así, nuestro primer paso para efectuar esta prueba es convertir los residuos estimados en una variable
de clase factor que muestre si el signo del residual es positivo o no para cada periodo.
# se carga la librería
library(tseries)
# prueba de rachas dos colas
runs.test(signo.error)
##
## Runs Test
##
## data: signo.error
## Standard Normal = 2.7324, p-value = 0.006288
## alternative hypothesis: two.sided
##
## Runs Test
##
## data: signo.error
## Standard Normal = 2.7324, p-value = 0.9969
## alternative hypothesis: less
##
## Runs Test
##
## data: signo.error
## Standard Normal = 2.7324, p-value = 0.003144
## alternative hypothesis: greater
Esta prueba se puede implementar empleando la función dwtest() del paquete AER (Kleiber y Zeileis,
2008) . Los argumentos más importantes de esta función son
donde:
formula: objeto de clase lm que contenga el modelo al cual se le quiere efectuar la prueba,
este argumento es obligatorio.
alternative: no es obligatorio y permite escoger cuál es la hipótesis alterna que se desea
probar. Si alternative = “two.sided”, la alterna será que existe algún tipo de autocorrelación.
Si alternative = “greater” la alterna es que la autocorrelación es positiva. Esta es la opción por
defecto, es decir si no se especifica este argumento, se efectuará esta prueba.Y si alternative =
“less”, la alterna es que existe autocorrelación negativa. Noten que este argumento funciona
algo diferente a lo descrito con la prueba de rachas, y por tanto requiere mucho cuidado al
momento de emplearlas.
308 Autocorrelación
# se carga la librería
library(AER)
# prueba de Durbin-Watson dos colas
dwtest(modelo1, alternative = "two.sided")
##
## Durbin-Watson test
##
## data: modelo1
## DW = 2.1703, p-value = 0.0004734
## alternative hypothesis: true autocorrelation is not 0
##
## Durbin-Watson test
##
## data: modelo1
## DW = 2.1703, p-value = 0.9998
## alternative hypothesis: true autocorrelation is greater than 0
##
## Durbin-Watson test
##
## data: modelo1
## DW = 2.1703, p-value = 0.0002367
## alternative hypothesis: true autocorrelation is less than 0
Estos resultados son similares a los obtenidos por la prueba de rachas. Se rechaza la nula de no
autocorrelación (valor p de 5 × 10−4 ) y también se concluye que existe autocorrelación negativa
(valor p de 2 × 10−4 )
Antes de continuar con la siguiente prueba, es importante mencionar que al no contar en este modelo
con la variable dependiente rezagada como variable explicativa, no es relevante la prueba h de Durbin.
Cuando sea necesario, esta prueba se puede efectuar empleando la función durbinH() del paquete
ecm(Bansal, 2021).
11.4 Práctica en R: Explicando los rendimientos de una acción (continuación)309
donde:
##
## Box-Pierce test
##
## data: e
## X-squared = 12.642, df = 1, p-value = 0.0003772
Así, podemos rechazar la hipótesis nula de no autocorrelación (para el primer rezago). Como se
mencionó anteriormente, es común probar esta hipótesis para los primeros rezagos, por lo menos los
primeros 20. Es decir,
H0 : γ1 = 0
H0 : γ1 = γ2 = 0
..
.
H0 : γ1 = γ2 = . . . γ20 = 0
Para realizar estas prueba podemos crear una función para construir una tabla con todas las pruebas
que se deseen. A continuacion se presenta la función tabla.Box.Pierce() .
# se crea función
tabla.Box.Pierce <- function(residuo, max.lag = 20, type = "Box-Pierce") {
# se crean objetos para guardar los resultados
BP.estadistico <- matrix(0, max.lag, 1)
BP.pval <- matrix(0, max.lag, 1)
310 Autocorrelación
Ahora podemos emplear la función para obtener los resultados que se presentan el Cuadro 11.3.
Cuadro 11.3: Prueba de Box-Pierce de los errores para los primeros 20 rezagos
Los resultados nos permiten concluir que las autocorrelaciones de los errores no son cero. Así
podemos concluir que existe autocorrelación.
Puede generar fácilmente el Cuadro 11.4 que contienen los resultados de la prueba de Ljung-Box
11.4 Práctica en R: Explicando los rendimientos de una acción (continuación)311
Cuadro 11.4: Prueba de Ljung-Box de los errores para los primeros 20 rezagos
No es sorprendente que los resultados de esta prueba sean los mismos que los obtenidos con la
prueba de Box-Pierce, pues en este caso la muestra es grande. Así, la corrección para muestras
pequeñas no era importante.
Esta prueba se puede realizar empleando la función bgtest() del paquete lmtest(Zeileis y Hothorn,
2002). Similar a las anteriores pruebas, esta función tiene dos argumentos. El primero es el objeto
de clase lm al que se le quiere hacer la prueba. El segundo argumento es el orden (order) de la
autocorrelación que se desea probar. Por defecto este argumento es igual a uno. Para probar la
hipótesis nula de no autocorrelación versus la alterna de unos errores con un proceso AR(1) podemos
emplear el siguiente código
# se carga la libreria
library(lmtest)
# prueba reusch-Godfrey para AR(1)
bgtest(modelo1, order = 1)
312 Autocorrelación
##
## Breusch-Godfrey test for serial correlation of order up
## to 1
##
## data: modelo1
## LM test = 12.818, df = 1, p-value = 0.0003434
Los resultados muestran que se puede rechazar la hipótesis nula. En otras palabras, podríamos con-
cluir que los errores pueden seguir un proceso AR(1), o lo que es equivalente, existe autocorrelación.
De manera similar a la anterior prueba, es usual realizar la prueba para diferentes ordenes del proceso
AR. En la práctica no es muy común que esta prueba se realice para muchos rezagos. A continuación
se presenta una función que permite realizar la prueba para los rezagos deseados.
# se crea función
tabla.Breusch.Godfrey <- function(modelo, max.order = 5) {
# se crean objetos para guardar los resultados
BG.estadistico <- matrix(0, max.order, 1)
BG.pval <- matrix(0, max.order, 1)
Todas las pruebas nos llegan a concluir que tenemos un problema de autocorrelación. Este problema
lo podemos solucionar empleando estimadores H.A.C. para la matriz de varianzas y covarianzas. Al
igual que lo hicimos con la heteroscedasticidad, esto se puede hacer empleando el paquete sandwich
(Zeileis, 2004) y las siguientes funciones:
Las tres funciones tienen como argumento el objeto de clase lm al que se le quiere corregir la matriz
de varianzas y covarianzas.
Por ejemplo, para obtener la matriz de varianzas y covarianzas con la corrección de Newey y West
(1987) podemos emplear la siguiente linea de código.
# se carga la libreria
library(sandwich)
# Newey - West
NeweyWest(modelo1)
Ahora, como no es muy útil la matriz de varianzas y covarianzas sola, sino más bien los respectivos
t individuales y sus correspondientes valores p, podemos emplear la función del paquete lmtest
para realizar las pruebas individuales. Esta función ya la habíamos estudiado en el Capítulo 9. Por
ejemplo:
# pruebas individuales
coeftest(modelo1, vcov = NeweyWest(modelo1))
##
## t test of coefficients:
##
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.092275 0.096184 0.9594 0.33752
## ECOPETROL 0.121392 0.017675 6.8682 9.112e-12 ***
## NUTRESA 0.141372 0.035022 4.0367 5.664e-05 ***
## EXITO 0.122549 0.027529 4.4516 9.082e-06 ***
## ISA 0.188444 0.026541 7.1002 1.829e-12 ***
## GRUPOAVAL 0.084369 0.017205 4.9036 1.032e-06 ***
## CONCONCRET 0.021385 0.014473 1.4775 0.13973
## VALOREM 0.035525 0.014830 2.3955 0.01671 *
## OCCIDENTE 0.030765 0.030927 0.9948 0.31999
## DTF90dias -1.695802 1.775884 -0.9549 0.33976
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Para este caso podemos ver como individualmente, los coeficientes asociados a los rendimientos de
CONCONCRETO, OCCIDENTE y la DTF a 90 días no son significativos individualmente.
11.4 Práctica en R: Explicando los rendimientos de una acción (continuación)315
Ahora hagamos lo mismo para las correcciones de Andrews (1991) y Lumley y Heagerty (1999).
##
## t test of coefficients:
##
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.092275 0.121312 0.7606 0.44698
## ECOPETROL 0.121392 0.018125 6.6975 2.879e-11 ***
## NUTRESA 0.141372 0.035605 3.9705 7.472e-05 ***
## EXITO 0.122549 0.027337 4.4829 7.860e-06 ***
## ISA 0.188444 0.024900 7.5679 6.204e-14 ***
## GRUPOAVAL 0.084369 0.019500 4.3266 1.603e-05 ***
## CONCONCRET 0.021385 0.016233 1.3174 0.18790
## VALOREM 0.035525 0.015976 2.2236 0.02631 *
## OCCIDENTE 0.030765 0.035191 0.8742 0.38212
## DTF90dias -1.695802 2.268825 -0.7474 0.45490
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## t test of coefficients:
##
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.092275 0.133149 0.6930 0.48839
## ECOPETROL 0.121392 0.016945 7.1639 1.167e-12 ***
## NUTRESA 0.141372 0.033778 4.1853 2.995e-05 ***
## EXITO 0.122549 0.024031 5.0997 3.786e-07 ***
## ISA 0.188444 0.023324 8.0795 1.227e-15 ***
## GRUPOAVAL 0.084369 0.018810 4.4853 7.774e-06 ***
## CONCONCRET 0.021385 0.015415 1.3872 0.16556
## VALOREM 0.035525 0.016485 2.1550 0.03131 *
## OCCIDENTE 0.030765 0.036069 0.8529 0.39381
## DTF90dias -1.695802 2.488200 -0.6815 0.49562
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Las tres correcciones coinciden en concluir que las siguientes variables no son significativas: CON-
CONCRETO, OCCIDENTE y la DTF a 90 días.
Ahora miremos si conjuntamente todos los coeficientes que acompañan a dichas variables son no
significativos. Estimemos el correspondiente modelo anidado y comparemos los modelos
316 Autocorrelación
## Wald test
##
## Model 1: GRUPOSURA ~ ECOPETROL + NUTRESA + EXITO + ISA + GRUPOAVAL + VALOREM
## Model 2: GRUPOSURA ~ ECOPETROL + NUTRESA + EXITO + ISA + GRUPOAVAL + CONCONCRET +
## VALOREM + OCCIDENTE + DTF90dias
## Res.Df Df F Pr(>F)
## 1 1689
## 2 1686 3 1.3719 0.2496
## Wald test
##
## Model 1: GRUPOSURA ~ ECOPETROL + NUTRESA + EXITO + ISA + GRUPOAVAL + VALOREM
## Model 2: GRUPOSURA ~ ECOPETROL + NUTRESA + EXITO + ISA + GRUPOAVAL + CONCONCRET +
## VALOREM + OCCIDENTE + DTF90dias
## Res.Df Df F Pr(>F)
## 1 1689
## 2 1686 3 0.9793 0.4016
## Wald test
##
## Model 1: GRUPOSURA ~ ECOPETROL + NUTRESA + EXITO + ISA + GRUPOAVAL + VALOREM
## Model 2: GRUPOSURA ~ ECOPETROL + NUTRESA + EXITO + ISA + GRUPOAVAL + CONCONCRET +
## VALOREM + OCCIDENTE + DTF90dias
## Res.Df Df F Pr(>F)
## 1 1689
## 2 1686 3 1.055 0.3672
Los resultados muestran, con todas las correcciones que las tres variables son conjuntamente no
significativas. En otras palabras el modelo restringido es mejor que el sin restringir. Así, podemos
afirmar que la DTF a 90 días, los rendimientos de CONCONCRETO y OCCIDENTE no afectan el
rendimiento de la acción de Suramericana. Los resultados finales se presentan en el Cuadro 11.6.
11.4 Práctica en R: Explicando los rendimientos de una acción (continuación)317
Dependent variable:
GRUPOSURA
MCO NW Kenel
(1) (2) (3)
ECOPETROL 0.121∗∗∗ 0.121∗∗∗ 0.121∗∗∗
(0.014) (0.018) (0.018)
Ejercicios
11.1 Diseñe un experimento de Monte Carlo similar al que se realizó en el Capítulo 9 en la
Introducción. Suponga que existe una autocorrelación en el error que sigue un proceso AR(1)
con ρ = 0,7.
11.2 Ahora continuando con el mismo DGP diseñe un experimento de Monte Carlo que nos
permita estudiar cuál es la proporción de veces que se rechaza la hipótesis nula de las pruebas
individuales para las dos pendientes con los estimadores MCO sin autocorrelación, los estimadores
MCO con autocorrelación y la corrección NeweyWest en parecencia de autocorrelación. Realice
el experimento para una muestra de tamaño 500, 100, 50 y 20. ¿Qué puedes concluir?
11.3 Un científico de datos es contratado por el área de gestión humana de una de las principales
empresas que venden automóviles del fabricante WMB en todo el mundo. El interés del gerente
del área es entender si la cantidad de vendedores depende de las unidades fabricadas (en miles).
Para esto cuenta con datos mensuales de 5 años que se encuentran en el archivo autoEmployee.txt.
Estime el modelo y reporte sus resultados en una tabla. Efectúe el análisis gráfico de los errores
estimados. ¿Qué tipo de problema puede intuir a partir de este análisis? Explique.
Adicionalmente, realice las pruebas que considere necesarias para determinar la existencia o no
de un problema de autocorrelación en el modelo. De ser necesario corrija el problema y saque
sus conclusiones.
11.5 Anexos
En presencia de autocorrelación los estimadores MCO siguen siendo insesgados. Esta afirmación se
puede demostrar fácilmente. Sin perder generalidad consideremos un modelo lineal con un término
de error homoscedástico y con autocorrelación de orden uno. Es decir,
y = Xβ + ε
−1
Donde E [εt ] = 0, Var [εt ] = σε2 y εt = ρεt−1 + νt , ∀t. Ahora determinemos si β̂ = XT X XT y
sigue siendo insesgado o no. Así,
h i h −1 i −1
E β̂ = E XT X XT y = XT X XT E [y]
h i −1 −1 −1
E β̂ = XT X XT E [Xβ + ε] = XT X XT Xβ + XT X XT E [ε]
h i −1
E β̂ = XT X XT Xβ = I • β
h i
E β̂ = β
11.5 Anexos 319
Continuando con el modelo considerado en el Apéndice anterior (error con una autocorrelación de
orden uno), en este caso tenemos que:
ρ2 · · · ρ n−1
1 ρ
ρ 1 ρ · · · ρ n−2
Var [ε] = E ε ε = Ω = σε2 ρ2 · · · ρ n−3
T ρ 1
(11.6)
.. .. .. .. ..
. . . . .
ρ n−1 ρ n−2 ρ n−3 ρ 1
h i h −1 T i
Var β̂ = Var XT X X y (11.7)
h i −1 T −1
Var β̂ = XT X X Var [y] X XT X (11.8)
h i −1 T −1
Var β̂ = XT X X Var [ε] X XT X (11.9)
h i −1 T −1
Var β̂ = XT X X ΩX XT X (11.10)
Por tanto la varianza no es la mínima posible. Y por otro lado, al emplear el estimador MCO
\ h i −1
para la matriz de varianzas y covarianzas de los betas (Var β̂ = s2 XT X ) en presencia de
autocorrelación se obtendrá un estimador cuyo valor esperado no es igual a la varianza real; es decir,
será insesgado.
320 Autocorrelación
Es decir, partiendo del modelo 11.5 con errores AR(1), se le puede restar el mismo modelo 11.5
rezagado un período y multiplicado por la correlación. De tal manera que se obtiene:
Yt − ρYt−1 =β1 (1 − ρ) + β2 (X2t − ρX2t−1 ) + β3 (X3t − ρX3t−1 ) + . . .
+βk (Xkt − ρXkt−1 ) + εt − ρεt−1
Reparametrizando tenemos:
Yt∗ = β1 (1 − ρ) + β2 X2t∗ + β3 X3t∗ + . . . + βk Xkt∗ + νt
donde
Yt∗ = Yt − ρYt−1 , X2t∗ = X2t − ρX2t−1 y X∗3t = X3t − ρX3t−1 (11.11)
Sin embargo, en la la práctica es imposible que conozcamos la naturaleza del problema de autocorre-
lación con certeza y mucho menos el valor de ρ. Durbin, 1960 plantea la solución a este problema,
322 Autocorrelación
método que tomó el nombre de Método de Durbin. El método de Durbin, 1960 permite implementar
el método de diferencias generalizadas al estimar en un primer paso el valor de ρ. Por eso se le
conoce como un método de de Mínimos Cuadrados Factibles . Este método implica los siguientes
tres pasos:
Una vez se estima el modelo con el método de Durbin, a los nuevos residuales se les debe hacer las
prebas para asegurarnos que le problema fue solucionado. Si la autocorrelación en los residuales no
es de orden uno, es muy probable que esta soluci´çon no funcione. En la práctica es aconsejable para
los científicos de datos emplear una solución H.A.C. dados los grandes volúmenes de observaciones
que se emplean esta solución provee errores estándar insesgados (robustos) y se garantiza una
solución aceptable al problema.
Parte IV
12.1 Introducción
Los modelos de regresión múltiple pueden emplearse para hacer analítica predictiva. La analítica
predictiva busca responder la pregunta: ¿qué es posible que ocurra? Con datos ya existentes se estima
un modelo que permita predecir datos que aún no se tienen o no han ocurrido. Es importante resaltar
que la creación de predicciones no necesariamente implica predecir lo que ocurrirá en el futuro. De
hecho, la creación de pronósticos (forecasting en inglés) es un área de la predicción en la que se
realizan predicciones sobre el futuro, basándonos en datos de series de tiempo. La única diferencia
entre la predicción y los pronósticos es que en esta última se considera la dimensión temporal. La
analítica predictiva tiene como intención generar predicciones de variables cuantitativas.
El modelo de regresión múltiple puede emplearse tanto para hacer predicciones como pronósticos.
Para la creación de pronósticos es necesario la estimación de un modelo empleando datos de serie
de tiempo. Cuando empleamos muestras de corte trasversal, podemos realizar predicciones pero no
pronósticos.
Por ejemplo, si se emplea una muestra de muchos individuos en el mismo periodo (muestra de corte
trasversal) para encontrar las variables asociadas a la cantidad de unidades que compra un cliente,
el modelo podría ser empleado para responder la pregunta ¿cuánto compraría un nuevo cliente con
determinadas características?
Si el modelo de regresión múltiple se estima con una serie de tiempo (se observa un objeto de estudio
periodo tras periodo), éste podrá ser empleado para hacer pronósticos. Por ejemplo, si se cuenta con
las ventas mensuales para muchos periodos y el modelo encuentra que variables están asociadas a
estas ventas mes tras mes, el modelo podría responder la pregunta que ocurrirá en el futuro con las
ventas. Con este tipo de modelos podemos responder preguntas como: ¿cuánto es lo más probable
que venda un producto el próximo año?
Para responder dicha pregunta, hemos empleado herramientas como pruebas de hipótesis de modelos
anidados y no anidados, el R2 , el R2 ajustado, SBC y AIC. Cómo lo vimos, no existe una única
forma de determinar la bondad de ajuste de un modelo a una determinada muestra. No obstante las
herramientas estudiadas si tiene en común que tienen como objetivo medir que tan bien se ajusta el
12.2 Estrategias para la validación cruzada de modelos 327
Emplear estas herramientas nos llevan a encontrar modelos que explican lo mejor posible la muestra
bajo estudio, pero no necesariamente nuevas muestras que aparezcan. Es decir, es posible que tenga-
mos un modelo muy bueno para explicar la muestra (analítica diagnóstica) pero no necesariamente
para hacer analítica predictiva. Esto se conoce como el problema de overfitting (sobreajuste).
Cuando los científicos de datos están interesados en responder una pregunta de negocio que involucra
emplear analítica predictiva, será necesario evaluar el poder predictivo del modelo. En esta tarea,
queremos evitar el overfitting porque podemos estar dando demasiado poder predictivo a peculiarida-
des específicas de la muestra que se empleó para estimar el modelo. Pero al mismo tiempo, queremos
evitar tener un modelo con bajo ajuste a la muestra (underfitting (infraajuste)) porque estaríamos
ignorando patrones en la muestra útiles para determinar el comportamiento de un nuevo individuo.
De esta manera, necesitaremos otras herramientas para responder la pregunta ¿qué tan bueno es el
modelo para predecir? Al proceso de encontrar un modelo que responda esta pregunta empleando
parte de la muestra original, se le conoce como validadción cruzada del modelo (cross-validation
en inglés). En general, para realizar la valoración del poder predictivo de varios modelos candidatos
empleando la muestra disponible será necesario contar con:
1. una muestra de evaluación que sea diferente a la muestra de estimación o también conocida
como la muestra de entrenamiento y
2. una métrica que permita determinar que tan cerca se encuentran las predicciones del valor
realmente observado en la muestra de evaluación.
Este capítulo discutiremos estos elementos y cómo realizar la validación de modelos empleando
diferentes aproximaciones.
Para evitar overfitting (sobreajuste) una buena práctica es emplear muestras diferentes para estimar
y evaluar la capacidad predictiva de este. En general, cualquier técnica de validación cruzada de
modelos implicará dividir la muestra en una muestra de evaluación que sea diferente a la muestra de
estimación o también conocida como la muestra de entrenamiento . A esta práctica se le conoce como
validación cruzada o en inglés cross-validation1 . En las siguientes tres subsecciones se discuten las
técnicas de validación cruzada más empleadas.
1 Noten que esta técnica solo tiene sentido en datos de corte transversal, donde el orden de los datos no es importante.
Para muestras de series de tiempo el orden es importante y seleccionar una muestra de manera aleatoria estaría negando una
de las características mas importantes en las series de tiempo. Es por esto que cuando realizamos pronósticos emplearemos
otras técnicas para validar los modelos. Para mayor detalle ver Alonso y Hoyos (2021)
328 Predicciones con datos de corte transversal.
La técnica de validación cruzada mas sencilla implica seleccionar aleatoriamente unas observaciones
de la muestra para hacer la estimación (muestra de estimación o muestra de entrenamiento) y otra
para evaluar el comportamiento del modelo para predecir (muestra de evaluación). Esta técnica es
conocida como el método de retención o holdout method.
En este caso, una parte relativamente pequeña de la muestra es seleccionada al azar2 como muestra de
evaluación y la muestra restante es la de evaluación. Es común que se emplee el 80 % de la muestra
para la estimación y el 20 % restante para realizar la evaluación. En la Figura 12.1 se presenta un
diagrama de esta aproximación. Con la muestra de evaluación se comparan los diferentes modelos de
regresión candidatos a ser el mejor modelo para predecir las observaciones. La comparación implica
calcular diferentes métricas que discutiremos en la siguiente sección de este capítulo.
Una desventaja de esta aproximación es que la selección del mejor modelo para predecir podría estar
determinada por el azar,pues la muestra seleccionada para la evaluación es totalmente aleatoria. Así,
si se replicara el ejercicio con otra muestra, el mejor modelo seleccionado podría ser diferente.
Figura 12.1. Diagrama del Método de retención para la evaluación cruzada de modelos
Antes de continuar con otras aproximaciones de validación cruzada de modelos, definamos unos
términos importantes en esta literatura. El error del modelo en la muestra de estimación se conoce
como el error de entrenamiento. El error del modelo en la muestra de evaluación se conoce como
el Error de prueba.
Otro método de valoración cruzada comúnmente empleando es el denominado LOOCC (por la sigla
en inglés del término Leave one out Cross-validation). En este método, a diferencia del método
2 por muestreo aleatorio sin reposición.
12.2 Estrategias para la validación cruzada de modelos 329
de retención, no se emplea una única muestra de evaluación elegida al azar. Este método implica
realizar la estimación y la valoración del modelo en diferentes muestras.
En este caso, se fija una observación en la muestra de evaluación y se estima el modelo con el resto
de observaciones (n − 1). Este proceso se repite hasta que todas las observaciones de la muestra
han sido empleadas en una muestra de evaluación. En la Figura 12.2 se presenta un diagrama de
esta aproximación. Los modelos candidatos se comparan empleando el promedio de las métricas
deseadas para evaluar las predicciones para cada una de las n muestras de evaluación.
A priori el método LOOCV parecería ser el ideal al emplear todas las observaciones como muestra
de evaluación. Esto claramente quitaría el problema de la aleatoriedad que genera el método de
retención al momento de seleccionar el mejor modelo para predecir. No obstante, este método puede
ser costoso computacionalmente pues requiere estimar el modelo n veces.
A parte del costo computacional del método LOOCV, puede existir potencialmente otro problema
con esa aproximación. El LOOCV puede generar una mayor variación en el error de predicción
si algunas observaciones son atípicas. Para evitar este problema, lo ideal sería utilizar una buena
proporción de observaciones como muestra de prueba para evitar el peso de las observaciones
330 Predicciones con datos de corte transversal.
atípicas.
Fuen-
te: Elaboración propia
En la siguiente sección discutiremos las métricas para valorar la precisión de las predicciones.
Independientemente del método empleado para generar la muestra o muestras de evaluación, ne-
cesitaremos métricas que permitan evaluar que tan cerca está cada predicción (ŷi ) del valor real
12.3 Métricas para medir la precisión de las predicciones 331
observado (yi ) para las ne observaciones que conforman la muestra de evaluación. Las predicciones
del modelo se puede construir fácilmente para los valores determinados de las variables explicativas
para la i-esima observación de la muestra de evaluación de la siguiente manera:
ŷi = xi T β̂ , (12.1)
donde xi T corresponde al vector de valores que toman las variables explicativas para el individuo i
en la muestra de evaluación. Es decir,
Las dos métricas más empleadas para evaluar el comportamiento de las predicciones son:
332 Predicciones con datos de corte transversal.
1 ne
MAE = ∑ |ŷi − yi |
ne t=1
La RMSE y el MAE intenta que los errores negativos y positivos no se cancelen al ser sumados. El
MAE emplea el valor absoluto de los errores de prueba para eliminar los signos, mientras que la
RMSE eleva los errores de prueba al cuadrado3 . Esto implica que la RMSE al elevar al cuadrado
penalice mas errores de prueba grandes que errores de prueba pequeños, mientras que el MAE
pondera igual a todos los errores de prueba. Estas dos métricas tienen en común que una menor
métrica es deseable.
Cada métrica pone énfasis en un aspecto diferente y por eso es una buena práctica emplear la
mayor cantidad de métricas posibles para la selección del modelo que se comporta mejor fuera de la
muestra de estimación. La selección de la o las métricas adecuadas para la evaluación de los modelos
dependerá de la pregunta de negocio y de lo que es deseable para cada organización. En las siguiente
sección se presenta un ejemplo práctico.
Para mostrar como responder a la pregunta cuál modelo tiene un mejor poder predictivo, emplearemos
los mismos datos del Capítulo 6. En dicho capítulo empleamos una muestra de 150 observaciones que
contenía una variable dependiente (yi ) y 25 posibles variables explicativas X j , i donde j = 1, 2, ..., 25.
Los datos se encuentran disponibles en el archivo DATOSautoSel.txt.
En Capítulo 6 (sección 6.4.2 ) evaluamos 3 posibles modelos teniendo en cuenta que nuestra tarea era
encontrar el mejor modelo para explicar la variable yi . Ahora en este caso supongamos que queremos
encontrar un modelo para hacer analítica predictiva y no diagnóstica. Es decir, ahora queremos
comparar los tres modelos candidatos con la óptica de encontrar el mejor modelo predictivo.
Recordemos que estos tres modelos tenían todas sus variables significativas individual y conjun-
tamente (Ver 12.1). Además podrás constatar que los supuestos del teorema de Gauss-Markov se
cumplen en los tres casos.
Dependent variable:
y
Modelo A Modelo B ModeloC
(1) (2) (3)
x1 0.663∗∗
(0.257)
Para realizar la validación cruzada podemos emplear diferentes paquetes, pero tal vez de los mas
empleados es el paquete caret(Kuhn, 2020) . Ahora procedamos a realizar la validación cruzada de
estos tres modelos con cada uno de los tres métodos estudiados.
334 Predicciones con datos de corte transversal.
Para seleccionar aleatoriamente las observaciones que harán parte de la muestra de estimación
(entrenamiento) y la de evaluación se puede emplear la función createDataPartition(). Esta función
típicamente incluye los siguientes argumentos que serán útiles para este caso:
donde:
En nuestro caso,
# se carga el paquete
library(caret)
# se fija una semilla para los números aleatorios
set.seed(123)
# muestra de estimación
est.index <- createDataPartition(y = datos$y, p = 0.8, list = FALSE)
head(est.index, 3)
## Resample1
## [1,] 2
## [2,] 6
## [3,] 7
Esto genera el objeto est.index de clase list que contiene las filas seleccionadas al azar para
conformar la muestra de estimación. Entonces, podemos proceder a crear las muestras de estimación
y evaluación.
# muestra de estimación
datos.est <- datos[est.index, ]
# muestra de evaluación
datos.eval <- datos[-est.index, ]
Ahora tendremos que reestimar los modelos con la muestra de entrenamiento (muestra de estimación).
12.4 Validación cruzada en R 335
Ahora, procedamos a generar las predicciones con la función predict() de R4 . Esta función realiza
la operación que se presenta en la ecuación (12.1). Es decir, encuentra los valores estimados para
la variable dependiente (ŷi ) (predicciones) dado unos coeficientes estimados para un modelo. Los
argumentos necesarios, para este caso, en esta función son el modelo y los nuevos datos para los
cuales se hará la predicción.
# predicciones para el modelo A para la muestra de evaluación
pred.A <- predict(modeloA.ret, datos.eval)
head(pred.A, 2)
## 1 3
## 39.38654 36.63466
Ahora calculemos la RMSE y el MAE para cada uno de los tres modelos. Esto lo podemos hacer
con las funciones RMSE() y MAE() del paquete caret . Las dos funciones emplean como primer
argumento las predicciones y como segundo argumento los valores observados. En nuestro caso
podemos encontrar estas métricas con el siguiente código.
# Cálculo del RMSE
RMSE.modeloA <- RMSE(pred.A, datos.eval$y)
RMSE.modeloB <- RMSE(pred.B, datos.eval$y)
RMSE.modeloC <- RMSE(pred.C, datos.eval$y)
Ahora podemos comparar los resultados. En el Cuadro 12.2 se presenta un resumen de estos
resultados. El modelo que minimiza la RMSE es Modelo C y el que minimiza el MAE es Modelo A.
Veamos si estos resultados se mantienen con los otros métodos de validación cruzada.
4 Paraser mas preciso se empleará la función predict.lm() . La función predict() es una función genérica para
predicciones que de acuerdo con la clase de objeto que se emplee como argumento redirecciona a la función respectiva.
Como empleamos objetos de clase lm la función predict() redirecciona a la función predict.lm().
336 Predicciones con datos de corte transversal.
RMSE MAE
Modelo A 2.09 1.62
Modelo B 2.18 1.72
Modelo C 2.05 1.64
El método LOOCV puede ser implementado fácilmente empleando el paquete caret. En este caso
debemos emplear dos funciones. La primera es función trainControl() . Esta función establece el
método (method) que se empleará para la validación cruzada. Definamos el método a LOOCV de la
siguiente manera.
Ahora podemos emplear la función principal para hacer la valoración: train() . Para emplear cualquier
método recursivo de valoración cruzada, esta función necesita los siguientes argumentos:
donde:
Para implementar el método LOOCV para el primer método se puede emplear el siguiente código
# resultados
LOOCV.modeloA
## Linear Regression
##
## 150 samples
## 6 predictor
##
12.4 Validación cruzada en R 337
## No pre-processing
## Resampling: Leave-One-Out Cross-Validation
## Summary of sample sizes: 149, 149, 149, 149, 149, 149, ...
## Resampling results:
##
## RMSE Rsquared MAE
## 2.505238 0.6922227 1.99463
##
## Tuning parameter 'intercept' was held constant at a value of TRUE
RMSE MAE
Modelo A 2.51 1.99
Modelo B 2.55 2.04
Modelo C 2.57 2.02
Ahora realice la misma valoración para los otros dos modelos. Los resultados se presentan en el
Cuadro 12.3. Nuevamente, el modelo que minimiza la RMSE y MAE es Modelo A. Cómo se discutió
anteriormente este resultado no necesariamente debe coincidir entre el método de retención y el
LOOCV.
El método de k iteraciones puede ser implementado de manera similar al método a LOOCV. Lo único
que debemos modificar es la definición de la función trainControl() . Empleemos 5 iteraciones
(k = 5).
# resultados
fold.5.modeloA
## Linear Regression
##
## 150 samples
## 6 predictor
##
338 Predicciones con datos de corte transversal.
## No pre-processing
## Resampling: Cross-Validated (5 fold)
## Summary of sample sizes: 119, 121, 120, 120, 120
## Resampling results:
##
## RMSE Rsquared MAE
## 2.494089 0.7040192 1.974375
##
## Tuning parameter 'intercept' was held constant at a value of TRUE
RMSE MAE
Modelo A 2.49 1.97
Modelo B 2.59 2.10
Modelo C 2.56 2.02
Ahora realice la misma valoración para los otros dos modelos. Los resultados se presentan en el
Cuadro 12.4. Nuevamente, el modelo que minimiza la RMSE y MAE es Modelo A. Esto implica
que con los tres métodos de validación cruzada podemos concluir que el mejor modelo para hacer
predicciones es el Modelo A.
En este caso esta conclusión coincide con el mejor modelo detectado cuando estábamos interesados
encontrar el mejor modelo para entender que ocurría con la muestra (analítica diagnóstica). Este
resultado no es común y por esto debemos realizar el análisis presentado si se desea realizar analítica
predictiva.
En este capítulo hemos discutido cómo seleccionar entre modelos candidatos cuando el objetivo es
realizar analítica predictiva. Una vez seleccionado el mejor modelo para realizar las predicciones
podemos proceder a realizar predicciones con dicho modelo, empleando la muestra completa para
estimar el modelo y aplicar los coeficientes estimados al nuevo individuo para el cuál se quiere
predecir el valor de la variable explicativa.
Antes de finalizar es importante anotar que emplear la expresión (12.1) producirá un estimador pun-
tual para el valor esperado de la variable dependiente. En algunas situaciones podría ser interesante
producir un intervalo de confianza para la predicción porque de esta manera estaremos generando
una región con una certidumbre del (1 − α) × 100 %.
Para construir un intervalo de confianza para la predicción para un nuevo individuo5 será necesario
suponer una distribución para los errores del modelo. Si se supone una distribución normal, entonces
5 Técnicamentehay que hacer una distinción entre un intervalo de confianza para la predicción individual y un intervalo
para el valor esperado (valor promedio). Si bien en ambos casos el centro del intervalo de confianza es el mismo los
12.5 Intervalo de confianza para la predicción 339
donde s2 es la varianza estimada del error y t α2 ,n−k es el valor de la distribución t con n − k grados de
libertad6 y
Para construir el intervalo de confianza para la predicción individual se puede realizar en R con la
función predict() de la base de R. Esta función realiza la operación que se presenta en la ecuación
(12.6). El único argumento adicional que se debe tener en cuenta al discutido en las secciones
anteriores es interval que permite establecer el cálculo del intervalo de confianza. Y para que se
calcule el intervalo de confianza para la predicción bajo el supuesto de errores con una distribución
normal, este argumento debe ser interval = “prediction”. Por defecto la función calcula un
intervalo de confianza del 95 %, si se desea modificar el nivel de confianza, se puede emplear el
argumento level.
Por ejemplo, supongamos que empleamos el Modelo A con todos los datos disponibles y queremos
hacer una predicción para un individuo que tenga los siguientes valores para las variables explicativas:
x1 p = 4, x2 p = 3, x3 p = 5, x4 p = 2, x5 p = 4 y x20 p = 1. Esto se puede realizar de la siguiente manera.
# nuevos datos
nuevos.datos <- data.frame(x1 = 4, x2 = 3, x3 = 5, x4 = 2, x5 = 4,
x20 = 1)
prediccion
intervalos tienen amplitudes diferentes. En general es mucho mas fácil estimar en promedio cuál sería el valor de la
variable dependiente si aparecen muchos individuos con unos valores determinados para las variables explicativas que
predecir el valor de la variable dependiente para un solo individuo con unos valores determinados para las variables
explicativas. En el caso del intervalo de confianza para el valor esperado, se puede invocar el Teorema del Límite Central y
por tanto no se requiere ningún supuesto. En la introducción del Capítulo 3 se presentó una discusión del Teorema del
Límite Central. Caso muy diferente para el intervalo de confianza de una predicción individual en la cuál es necesaria
suponer la distribución del término de error.
6 En la sección 3.2 se discutió cómo si un estimador sigue una distribución normal y se tiene que estimar la varianza
2
(σ ) del error, entonces se tendrá que emplear una distribución t con n − k grados de libertad.
340 Predicciones con datos de corte transversal.
En este caso lo pronóstico para el individuo cuyas las variables explicativas son x1 p = 4, x2 p = 3,
x3 p = 5, x4 p = 2, x5 p = 4 y x20 p = 1 es de 29.45. El limite inferior del intervalo del 95 % de
confianza es 24.22 y el limite superior es 34.68. Si el modelo tiene problemas heteroscedasticidad7 y
dicho problema se resolvió con una matriz de varianzas y covarianzas H.C., entonces la predicción
debería tener en cuenta dicha corrección. Esto se puede realizar con la función Predcit() del paquete
car(Fox y Weisberg, 2019). Esta función tiene argumentos similares a la función predcit.lm() del
paquete central de R. Una gran diferencia de la función Predcit() es el argumento vcov. que permite
especificar la corrección H.C. que se desea emplear. Por ejemplo, mantengamos el mismo ejemplo
anterior y supongamos que existe un problema de heteroscedasticidad que se soluciona con HC3.
Si el supuesto de normalidad de los errores no se cumple, una opción es simular la distribución de los
errores empleando el método de bootstrapping. En el apéndice se describe el método de bootrapping y
el código que se puede emplear. Recuerden que ya habíamos discutido como comprobar el supuesto
de normalidad de los residuales en la sección 9.4 cuatro pruebas de normalidad: Shapiro-Wilk
(Shapiro y Francia, 1972), Kolmogorov-Smirnov (Kolmogorov, 1933), Cramer-von Mises (Cramér,
1928) y Anderson-Darling(Anderson y Darling, 1952).
Las técnicas de validación cruzada que hemos estudiado en este capítulo permiten evaluar el
desempeño predictivo de diferentes modelos candidatos a ser el mejor modelo predictivo. Los
modelos candidatos fueron construidos con los algoritmos de selección automática estudiados en el
Capítulo 6.
Una práctica diferente para seleccionar modelos para hacer analítica predictiva es seleccionar el
mejor modelo empleando directamente la validación cruzada. Es decir, empleando los métodos
de LOOCV o k iteraciones para comparar los posibles modelos empleando el comportamiento
predictivo y no el ajuste del modelo a la muestra como lo hicimos en el Capítulo 6. Esto se puede
realizar empleando la librería caret , si te interesa podrás encontrar en la documentación del paquete
información de cómo desarrollar esta tarea.
7 Elproblema de autocorrelación no se considera, pues los datos para esta tarea de predicción (y no de proyección)
deberán ser de corte transversal y no una serie de tiempo.
12.7 Anexo: Método de Bootstraping para construcción de intervalos de
confianza para las predicciones 341
Para terminar es importante recordar que en la práctica, la validación cruzada de k iteraciones se
recomienda generalmente sobre los otros dos métodos estudiados en este capítulo. La razón de
preferir este método es que presenta un equilibrio entre la variabilidad que puede aparecer por los
datos atípicos (método LOOCV), el sesgo fruto de emplear sólo una muestra de evaluación (método
de retención) y el tiempo de ejecución computacional.
Existen diferentes métodos para la construcción de intervalos de confianza para las predicciones
empleando bootstrapping, tal vez el mas sencillo es el propuesto por Davison y Hinkley, 1997
(sección 6.3.3).
Ahora el problema es encontrar los percentiles 5 y 95 del error de predicción. Reescribamos el error
de predicción de la siguiente manera:
La estrategia consistirá en muestrear (a esto se le denomina bootstrap) muchas veces de e p,i y luego
calcular los percentiles de la manera habitual. Así, por ejemplo podemos sacar 10 mil muestras
de e p,i , y luego estimemos los percentiles 5 y 95. Esto en otras palabras será encontrar el error de
predicción simulado tal que 500 de ellos sean menores que el para encontrar el percentil 5. Y para el
percentil 95 la observación simulada tal que 9500 sean menores que ella.
Para muestrear x p,i T β − β̂ , podemos hacer un bootstrap de los errores. Así, en cada réplica
bootstrap (cada muestra), se extrae n veces con reemplazo de los residuales estandarizados ( residuales
divididos por la varianza) para obtener ε ∗ (vector de errores simulados para todas las observaciones
342 Predicciones con datos de corte transversal.
Ahora queda faltando como encontrar ε p,i . Dado los supuestos sobre el error del Teorema de Gauss-
Markov, la manera natural de muestrear ε p,i es utilizar los residuos que tenemos de la regresión
(ε̂1∗ , ε̂2∗ , . . . ε̂n∗ ) en cada iteración. Los residuos tienen varianzas diferentes y, por lo general, demasiado
pequeñas, por lo que querremos muestrear de los residuos corregidos por la varianza.
Para construir una función que realice este algoritmo construiremos dos funciones auxiliares. La
primera realiza el paso 2 que corresponde a la estimación de los residuales ajustados por la varianza
sobre un objeto de clase lm. Para esto construiremos la función errores.ajustados.varianza().
8 El leverage de una observación i corresponde al elemento i-esimo de la diagonal de la matriz H que está definida
−1 T
como H = X XT X X . Es decir, hi = [H]i,i
9 R debe ser un número relativamente grande como 10 mil
12.7 Anexo: Método de Bootstraping para construcción de intervalos de
confianza para las predicciones 343
s.resid <- s.resid - mean(s.resid)
return(s.resid)
}
La segunda función auxiliar realizará los pasos 3 a 9 del algoritmo empleando un objeto de clase lm
(modelo), un vector de residuales ajustados por la varianza (s) y unos nuevos datos para la predicción
(nuevos.datos). A esta nueva función la llamaremos ic.boot.predic.iteration().
# crea y de bootstrap
y.star <- fitted(modelo) + ep.star
# coeficientes de bootstrap
x <- model.frame(modelo)[, -1]
bs.data <- cbind(y.star, x)
bs.modelo <- lm(y.star ~ ., bs.data)
Ahora construyamos la función ic.boot.predic() que ponga todo junto, replicando los pasos 3 a 9 R
veces.
# paso 2
s <- errores.ajustados.varianza(modelo)
Apliquemos esta función al ejemplo que trabajamos en este capítulo y comparemos el resultado con
la aproximación tradicional con el supuesto de normalidad.
set.seed(123445)
ic.boot.predic(modeloA, nuevos.datos, R = 10000, alpha = 0.05)
prediccion
Emplear las herramientas estudiadas en los capítulos anteriores para responder una pregunta
de negocio que implique analítica diagnóstica
Presentar los resultados de una regresión de manera gráfica empleando R con solución H.A.C..
Determinar cuál variable tiene mas efecto sobre la variable explicativa empleando R en
presencia de heteroscedasticidad.
346 Segundo caso de negocio
13.1 Introducción
En los capítulos anteriores hemos estudiado las bases del modelo clásico de regresión múltiple,
cómo encontrar el mejor modelo para hacer analítica diagnóstica o analítica predictiva. . En este
capítulo pondremos todos los elementos juntos para resolver un caso de negocio que implica analítica
predictiva.
Una empresa de consultoría en seguridad en los Estados Unidos quiere contar con un modelo que le
permita, al visitar a un alcalde de cualquier ciudad, poder tener un estimado de la tasa de crímenes
violentos por cada 100000 habitantes y como esta puede cambiar cuando se “intervengan” algunas
variables. Es decir, esta empresa quiere tener una “fórmula” que le permita determinar cuál sería la
tasa de crímenes violentos por cada 100000 habitantes bajo diferentes escenarios. La empresa quiere
ofrecer una nueva linea de servicios que le permita asesorar a los alcaldes en que variables intervenir
para disminuir la tasa de crímenes violentos.
Para realizar esta tarea, contamos con una base de datos con información sociodemográfica y datos de
crimen del FBI para diferentes comunidades de Estados Unidos, los datos se encuentran en el archivo
DatosCaso2.csv. Los datos los datos son reales y fueron suministrada por Redmond y Baveja (2002)
y tomados de la siguiente página https://archive.ics.uci.edu/ml/datasets/Communities+and+Crime.
- decimal)
17. pctWSocSec: porcentaje de hogares con ingresos de la seguridad social en 1989 (numérico -
decimal)
18. pctWPubAsst: porcentaje de hogares con ingresos de la asistencia pública en 1989 (numérico -
decimal)
19. pctWRetire: porcentaje de hogares con ingresos por jubilación en 1989 (numérico - decimal)
20. medFamInc: renta familiar mediana (difiere de la renta de los hogares no familiares) (numérico
- decimal)
21. perCapInc: renta per cápita (numérico - decimal)
22. whitePerCap: renta per cápita de los caucásicos (numérico - decimal)
23. blackPerCap: renta per cápita de los afroamericanos (numérico - decimal)
24. IndianPerCap: renta per cápita de los nativos americanos (numérico - decimal)
25. AsianPerCap: renta per cápita de las personas de origen asiático (numérico - decimal)
26. OtherPerCap: renta per cápita de las personas con “otra” herencia (numérico - decimal)
27. HispPerCap: renta per cápita de las personas de origen hispano (numérico - decimal)
28. NumUnderPov: número de personas por debajo del nivel de pobreza (numérico - decimal)
29. PctPopUnderPov: porcentaje de personas bajo el nivel de pobreza (numérico - decimal)
30. PctLess9thGrade: porcentaje de personas de 25 años o más con menos de 9º grado de educación
(numérico - decimal)
31. PctNotHSGrad: porcentaje de personas de 25 años o más que no tienen estudios secundarios
(numérico - decimal)
32. PctBSorMore: porcentaje de personas de 25 años o más con una licenciatura o educación
superior (numérico - decimal)
33. PctUnemployed: porcentaje de personas de 16 años o más, que forman parte de la población
activa y están desempleadas (numérico - decimal)
34. PctEmploy: porcentaje de personas de 16 años o más que están empleadas (numérico - decimal)
35. PctEmplManu: porcentaje de personas de 16 años o más que trabajan en la industria manufac-
turera (numérico - decimal)
36. PctEmplProfServ: porcentaje de personas de 16 años o más que trabajan en servicios profesio-
nales (numérico - decimal)
37. PctOccupManu: porcentaje de personas de 16 años o más que trabajan en la industria manu-
facturera (numérico - decimal)
38. PctOccupMgmtProf: porcentaje de personas de 16 años o más empleadas en ocupaciones de
gestión o profesionales (numérico - decimal)
39. MalePctDivorce: porcentaje de hombres divorciados (numérico - decimal)
40. MalePctNevMarr: porcentaje de hombres que nunca se han casado (numérico - decimal)
41. FemalePctDiv: porcentaje de mujeres divorciadas (numérico - decimal)
42. TotalPctDiv: porcentaje de población divorciada (numérico - decimal)
43. PersPerFam: número medio de personas por familia (numérico - decimal)
44. PctFam2Par: porcentaje de familias (con hijos) encabezadas por dos padres (numérico -
decimal)
45. PctKids2Par: porcentaje de niños en viviendas familiares con dos padres (numérico - decimal)
46. PctYoungKids2Par: porcentaje de niños de 4 años o menos en hogares con dos padres (numé-
348 Segundo caso de negocio
rico - decimal)
47. PctTeen2Par: porcentaje de niños de 12 a 17 años en hogares con dos padres (numérico -
decimal)
48. PctWorkMomYoungKids: porcentaje de madres de niños de 6 años o menos que trabajan
(numérico - decimal)
49. PctWorkMom: porcentaje de madres de niños menores de 18 años que trabajan (numérico -
decimal)
50. NumIlleg: número de niños nacidos de madres nunca casadas (numérico - decimal)
51. PctIlleg: porcentaje de hijos nacidos de personas nunca casadas (numérico - decimal)
52. NumImmig: número total de personas que se sabe que han nacido en el extranjero (numérico -
decimal)
53. PctImmigRecent: porcentaje de inmigrantes que han inmigrado en los últimos 3 años (numérico
- decimal)
54. PctImmigRec5: porcentaje de inmigrantes que han inmigrado en los últimos 5 años (numérico
- decimal)
55. PctImmigRec8: porcentaje de inmigrantes que han inmigrado en los últimos 8 años (numérico
- decimal)
56. PctImmigRec10: porcentaje de inmigrantes que han inmigrado en los últimos 10 años (numé-
rico - decimal)
57. PctRecentImmig: porcentaje de la población que ha inmigrado en los últimos 3 años (numérico
- decimal)
58. PctRecImmig5: porcentaje de población que ha inmigrado en los últimos 5 años (numérico -
decimal)
59. PctRecImmig8: porcentaje de población que ha inmigrado en los últimos 8 años (numérico -
decimal)
60. PctRecImmig10: porcentaje de población que ha inmigrado en los últimos 10 años (numérico
- decimal)
61. PctSpeakEnglOnly: porcentaje de personas que sólo hablan inglés (numérico - decimal)
62. PctNotSpeakEnglWell: porcentaje de personas que no hablan bien el inglés (numérico -
decimal)
63. PctLargHouseFam: porcentaje de hogares familiares que son grandes (6 o más) (numérico -
decimal)
64. PctLargHouseOccup: porcentaje de hogares ocupados que son grandes (6 o más personas)
(numérico - decimal)
65. PersPerOccupHous: media de personas por hogar (numérico - decimal)
66. PersPerOwnOccHous: media de personas por hogar ocupado por el propietario (numérico -
decimal)
67. PersPerRentOccHous: media de personas por hogar de alquiler (numérico - decimal)
68. PctPersOwnOccup: porcentaje de personas en hogares ocupados por el propietario (numérico -
decimal)
69. PctPersDenseHous: porcentaje de personas en viviendas densas (más de 1 persona por habita-
ción) (numérico - decimal)
70. PctHousLess3BR: porcentaje de viviendas con menos de 3 dormitorios (numérico - decimal)
13.2 La pregunta de negocio 349
(numérico - decimal)
100. LemasPctOfficDrugUn: porcentaje de agentes asignados a unidades de drogas (numérico -
decimal)
101. ViolentCrimesPerPop: número total de delitos violentos por cada 100000 habitantes (numérico
- decimal) (Variable dependiente) Traducido con la versión gratuita del Traductor de DeepL.
Responder esta pregunta de negocio implicaba realizar analítica predicitiva al tener que encontrar
una “formula” que pueda que le permita determinar cuál sería la tasa de crímenes violentos por cada
100000 habitantes para diferentes valores de las variables explicativas (escenarios).
13.3 El plan
Recordemos que nuestra primera tarea siempre es trazar una ruta analítica para responder la pregunta
de negocio. Para este momento, ya debes estar intuyendo que es muy probable que exista un problema
de heteroscedasticidad dado que la base de datos con que trabajaremos corresponde a datos de corte
transversal. Esto implicará que nuestra ruta tendrá los siguientes pasos:
Lee los datos empleando la función read.csv() , guárdalos en el objeto datos.caso2 y elimina la
primera variable que no es relevante (se carga una variable “X” con el número de la observación.
Esto puede cambiar de computador a computador.)
El siguiente paso es encontrar los mejores modelos empleando las estrategias de regresión paso
a paso forward, backward y combinada con el AIC, con el valor p y el R2 ajustado. Como lo
discutimos en el Capítulo 10, dado que es posible que exista heteroscedasticidad (mas adelante lo
demostraremos) es mejor no emplear el criterio del valor p.
13.4 Detección de posibles modelos 351
Partamos de estimar los modelos lineales con todas las variables potenciales (max.model).
Ahora procedamos a encontrar modelos candidatos para se los mejores modelos. Empecemos con la
estrategia stepwise Forward.
##
## One-sample Kolmogorov-Smirnov test
##
## data: res.modelo1.C2
## D = 0.38847, p-value < 2.2e-16
## alternative hypothesis: two-sided
352 Segundo caso de negocio
##
## Jarque Bera Test
##
## data: res.modelo1.C2
## X-squared = 1185.3, df = 2, p-value < 2.2e-16
Los residuales de este modelo no siguen una distribución normal. Por eso no son confiables los
resultados de la prueba de Breusch-Pagan tradicional. Deberíamos entonces emplear la versión
studentizada de la prueba propuesta por Koenker (1981)
# se carga la librería
library(lmtest)
# prueba de Breusch-Pagan studentizada
bptest(modelo1.C2, studentize = TRUE)
##
## studentized Breusch-Pagan test
##
## data: modelo1.C2
## BP = 307.37, df = 65, p-value < 2.2e-16
Por tanto eliminar las variables no significativas podemos emplear la función construída en el
Capítulo10: remueve.no.sinifica.HC3() .
Dependent variable:
ViolentCrimesPerPop
MCO HC3
(1) (2)
racepctblack 0.196∗∗∗ (0.030) 0.196∗∗∗ (0.036)
agePct12t29 −0.263∗∗∗ (0.067) −0.263∗∗∗ (0.077)
pctUrban 0.040∗∗∗ (0.009) 0.040∗∗∗ (0.009)
pctWWage −0.261∗∗∗ (0.060) −0.261∗∗∗ (0.056)
pctWFarmSelf 0.050∗∗∗ (0.019) 0.050∗∗∗ (0.017)
pctWInvInc −0.156∗∗∗ (0.057) −0.156∗∗∗ (0.054)
pctWRetire −0.063∗∗ (0.031) −0.063∗∗ (0.028)
medFamInc 0.185∗∗ (0.090) 0.185∗∗ (0.085)
whitePerCap −0.190∗∗∗ (0.070) −0.190∗∗∗ (0.071)
indianPerCap −0.036∗ (0.019) −0.036∗∗ (0.016)
OtherPerCap 0.050∗∗∗ (0.017) 0.050∗∗∗ (0.017)
PctPopUnderPov −0.095∗∗ (0.043) −0.095∗∗ (0.045)
PctEmploy 0.203∗∗∗ (0.059) 0.203∗∗∗ (0.058)
MalePctNevMarr 0.226∗∗∗ (0.054) 0.226∗∗∗ (0.061)
FemalePctDiv −0.286∗∗ (0.112) −0.286∗∗∗ (0.108)
TotalPctDiv 0.336∗∗∗ (0.114) 0.336∗∗∗ (0.109)
PctKids2Par −0.330∗∗∗ (0.071) −0.330∗∗∗ (0.083)
PctWorkMom −0.129∗∗∗ (0.027) −0.129∗∗∗ (0.028)
PctIlleg 0.137∗∗∗ (0.041) 0.137∗∗∗ (0.052)
NumImmig −0.174∗∗∗ (0.059) −0.174∗∗ (0.069)
PctNotSpeakEnglWell −0.153∗∗∗ (0.048) −0.153∗∗∗ (0.053)
PctLargHouseFam −0.097∗ (0.051) −0.097∗∗ (0.039)
PersPerOccupHous 0.270∗∗∗ (0.087) 0.270∗∗∗ (0.075)
PersPerRentOccHous −0.219∗∗∗ (0.070) −0.219∗∗∗ (0.054)
PctPersOwnOccup −0.634∗∗∗ (0.206) −0.634∗∗∗ (0.196)
PctPersDenseHous 0.280∗∗∗ (0.059) 0.280∗∗∗ (0.067)
HousVacant 0.175∗∗∗ (0.033) 0.175∗∗∗ (0.041)
PctHousOccup −0.056∗∗ (0.023) −0.056∗∗ (0.023)
PctHousOwnOcc 0.574∗∗∗ (0.203) 0.574∗∗∗ (0.189)
PctVacMore6Mos −0.046∗∗ (0.022) −0.046∗∗ (0.020)
OwnOccLowQuart −0.435∗∗∗ (0.159) −0.435∗∗∗ (0.149)
OwnOccMedVal 0.323∗∗ (0.154) 0.323∗∗ (0.146)
RentLowQ −0.227∗∗∗ (0.054) −0.227∗∗∗ (0.043)
MedRent 0.267∗∗∗ (0.068) 0.267∗∗∗ (0.053)
MedOwnCostPctIncNoMtg −0.100∗∗∗ (0.021) −0.100∗∗∗ (0.021)
NumStreet 0.202∗∗∗ (0.043) 0.202∗∗∗ (0.063)
PctForeignBorn 0.136∗∗∗ (0.041) 0.136∗∗∗ (0.044)
Constant 0.645∗∗∗ (0.093) 0.645∗∗∗ (0.107)
Observations 1,993 1,993
R2 0.685 0.685
Adjusted R2 0.679 0.679
Residual Std. Error (df = 1955) 0.132 0.132
Ahora sigamos con el modelo 2: algoritmo Forward y criterio AIC. Tu puedes encontrar que
este modelo también tiene heteroscedasticidad (¿Hazlo!). Ahora realicemos la corrección HC3 y
eliminemos las variables no significativas. El resultado se reporta en el Cuadro 13.3
354 Segundo caso de negocio
Cuadro 13.3: Modelo seleccionado el algoritmo stepwise forward con corrección HC3
Dependent variable:
ViolentCrimesPerPop
Modelo 1 (HC3) (R2 aj) Modelo 2 (HC3) (AIC)
(1) (2)
racepctblack 0.196∗∗∗ (0.036) 0.220∗∗∗ (0.033)
agePct12t29 −0.263∗∗∗ (0.077) −0.199∗∗∗ (0.067)
pctUrban 0.040∗∗∗ (0.009) 0.047∗∗∗ (0.009)
pctWWage −0.261∗∗∗ (0.056) −0.186∗∗∗ (0.047)
pctWFarmSelf 0.050∗∗∗ (0.017) 0.038∗∗ (0.017)
pctWInvInc −0.156∗∗∗ (0.054) −0.156∗∗∗ (0.055)
pctWRetire −0.063∗∗ (0.028) −0.079∗∗∗ (0.028)
medFamInc 0.185∗∗ (0.085)
whitePerCap −0.190∗∗∗ (0.071) −0.137∗∗∗ (0.048)
indianPerCap −0.036∗∗ (0.016) −0.036∗∗ (0.016)
PctBSorMore 0.099∗∗∗ (0.035)
OtherPerCap 0.050∗∗∗ (0.017) 0.051∗∗∗ (0.017)
PctPopUnderPov −0.095∗∗ (0.045) −0.170∗∗∗ (0.048)
PctEmploy 0.203∗∗∗ (0.058) 0.155∗∗∗ (0.054)
MalePctNevMarr 0.226∗∗∗ (0.061) 0.134∗∗ (0.056)
FemalePctDiv −0.286∗∗∗ (0.108)
TotalPctDiv 0.336∗∗∗ (0.109) −0.267∗∗ (0.108)
MedRentPctHousInc 0.061∗∗ (0.024)
PctKids2Par −0.330∗∗∗ (0.083) −0.356∗∗∗ (0.081)
PctWorkMom −0.129∗∗∗ (0.028) −0.144∗∗∗ (0.026)
PctIlleg 0.137∗∗∗ (0.052) 0.134∗∗∗ (0.050)
NumImmig −0.174∗∗ (0.069)
PctNotSpeakEnglWell −0.153∗∗∗ (0.053)
PctLargHouseFam −0.097∗∗ (0.039)
PersPerOccupHous 0.270∗∗∗ (0.075)
PersPerRentOccHous −0.219∗∗∗ (0.054)
PctPersOwnOccup −0.634∗∗∗ (0.196)
PctPersDenseHous 0.280∗∗∗ (0.067) 0.202∗∗∗ (0.028)
HousVacant 0.175∗∗∗ (0.041) 0.278∗∗∗ (0.063)
PctHousOccup −0.056∗∗ (0.023)
PctHousOwnOcc 0.574∗∗∗ (0.189)
PctVacMore6Mos −0.046∗∗ (0.020)
OwnOccLowQuart −0.435∗∗∗ (0.149)
OwnOccMedVal 0.323∗∗ (0.146)
RentLowQ −0.227∗∗∗ (0.043) −0.218∗∗∗ (0.040)
MedRent 0.267∗∗∗ (0.053) 0.221∗∗∗ (0.048)
MedOwnCostPctIncNoMtg −0.100∗∗∗ (0.021) −0.105∗∗∗ (0.020)
NumStreet 0.202∗∗∗ (0.063) 0.178∗∗∗ (0.057)
PctForeignBorn 0.136∗∗∗ (0.044)
numbUrban −0.201∗∗ (0.082)
MalePctDivorce 0.347∗∗∗ (0.097)
Constant 0.645∗∗∗ (0.107) 0.583∗∗∗ (0.092)
Observations 1,993 1,993
R2 0.685 0.680
Adjusted R2 0.679 0.676
Residual Std. Error 0.132 (df = 1955) 0.133 (df = 1965)
De manera similar en el Cuadro 13.4 se presentan los resultados de emplear el algoritmo stepwise
backward y tras limpiar las variables no significativas con la corrección HC3 (con un 95 % de confian-
za). Previamente puedes mostrar que estos dos modelos tienen un problema de heteroscedasticidad.
356 Segundo caso de negocio
Cuadro 13.4: Modelos seleccionados con el algoritmo stepwise backward con correc-
ción HC3
Dependent variable:
ViolentCrimesPerPop
Modelo 3 (HC3) (R2 aj) Modelo 4 (HC3) (AIC)
(1) (2)
racepctblack 0.181∗∗∗ (0.036)
agePct12t29 −0.224∗∗∗ (0.075)
pctUrban 0.040∗∗∗ (0.009)
pctWWage −0.262∗∗∗ (0.057)
pctWFarmSelf 0.050∗∗∗ (0.017)
pctWInvInc −0.167∗∗∗ (0.057)
pctWRetire −0.075∗∗∗ (0.028)
whitePerCap −0.108∗∗ (0.052)
indianPerCap −0.033∗∗ (0.016)
OtherPerCap 0.049∗∗∗ (0.017)
PctPopUnderPov −0.137∗∗∗ (0.047)
PctEmploy 0.162∗∗∗ (0.057)
PctOccupMgmtProf 0.100∗∗ (0.039)
MalePctDivorce 0.320∗∗∗ (0.096)
MalePctNevMarr 0.203∗∗∗ (0.059)
TotalPctDiv −0.241∗∗ (0.111)
PctKids2Par −0.358∗∗∗ (0.083)
PctWorkMom −0.124∗∗∗ (0.028)
PctIlleg 0.138∗∗∗ (0.052)
NumImmig −0.171∗∗ (0.067)
PctNotSpeakEnglWell −0.135∗∗ (0.053)
PctLargHouseOccup −0.140∗∗∗ (0.044)
PersPerOccupHous 0.358∗∗∗ (0.073)
PersPerRentOccHous −0.222∗∗∗ (0.053)
PctPersOwnOccup −0.592∗∗∗ (0.199)
PctPersDenseHous 0.268∗∗∗ (0.067)
HousVacant 0.161∗∗∗ (0.040)
PctHousOccup −0.050∗∗ (0.023)
PctHousOwnOcc 0.547∗∗∗ (0.191)
PctVacMore6Mos −0.044∗∗ (0.020)
OwnOccLowQuart −0.089∗∗ (0.037)
RentLowQ −0.219∗∗∗ (0.042)
MedRent 0.270∗∗∗ (0.054)
MedOwnCostPctIncNoMtg −0.094∗∗∗ (0.021)
NumStreet 0.204∗∗∗ (0.062)
PctForeignBorn 0.130∗∗∗ (0.044)
PctFam2Par −0.580∗∗∗ (0.043)
racePctAsian −0.072∗∗∗ (0.022)
PctSameState85 −0.050∗∗ (0.024)
agePct12t21 −0.102∗∗∗ (0.026)
MedYrHousBuilt 0.070∗∗∗ (0.018)
racePctWhite −0.300∗∗∗ (0.031)
numbUrban 0.242∗∗∗ (0.036)
PersPerFam 0.104∗∗∗ (0.032)
blackPerCap −0.047∗∗ (0.019)
PctSameCity85 0.073∗∗ (0.029)
RentHighQ 0.078∗∗∗ (0.018)
PctWorkMomYoungKids −0.078∗∗∗ (0.020)
PctHousLess3BR 0.062∗∗ (0.030)
Constant 0.636∗∗∗ (0.105) 0.748∗∗∗ (0.046)
Observations 1,993 1,993
R2 0.685 0.633
Adjusted R2 0.679 0.631
Residual Std. Error 0.132 (df = 1956) 0.142 (df = 1979)
Y finalmente, el Cuadro 13.5 se presentan los resultados de emplear el algoritmo combinado y tras
limpiar las variables no significativas y la correción HC3(con un 95 % de confianza). (Recuerda
hacer las pruebas de heteroscedasticidad para cada modelo)
Dependent variable:
ViolentCrimesPerPop
Modelo 5 (HC3) (R2 aj) Modelo 6 (HC3) (AIC)
(1) (2)
racepctblack 0.173∗∗∗(0.033) 0.193∗∗∗ (0.031)
agePct12t29 −0.202∗∗∗ (0.075) −0.204∗∗∗ (0.068)
pctUrban 0.041∗∗∗ (0.009) 0.038∗∗∗ (0.009)
pctWWage −0.247∗∗∗ (0.054) −0.261∗∗∗ (0.053)
pctWFarmSelf 0.047∗∗∗ (0.017) 0.045∗∗∗ (0.017)
pctWInvInc −0.141∗∗∗ (0.048) −0.181∗∗∗ (0.051)
pctWRetire −0.068∗∗ (0.027) −0.085∗∗∗ (0.027)
indianPerCap −0.032∗∗ (0.016) −0.034∗∗ (0.016)
TotalPctDiv −0.320∗∗∗ (0.104)
PctVacMore6Mos −0.039∗∗ (0.019)
OtherPerCap 0.047∗∗∗ (0.017) 0.052∗∗∗ (0.017)
PctPopUnderPov −0.109∗∗ (0.045) −0.099∗∗ (0.044)
PctEmploy 0.141∗∗ (0.055) 0.144∗∗∗ (0.055)
MalePctDivorce 0.118∗∗∗ (0.044) 0.373∗∗∗ (0.091)
MalePctNevMarr 0.213∗∗∗ (0.060) 0.194∗∗∗ (0.057)
PctKids2Par −0.290∗∗∗ (0.079) −0.376∗∗∗ (0.082)
PctWorkMom −0.111∗∗∗ (0.025) −0.121∗∗∗ (0.024)
PctIlleg 0.152∗∗∗ (0.052) 0.159∗∗∗ (0.051)
NumImmig −0.160∗∗ (0.067)
PctNotSpeakEnglWell −0.150∗∗∗ (0.052)
PctLargHouseFam −0.107∗∗∗ (0.039) −0.145∗∗∗ (0.039)
PctLess9thGrade −0.092∗∗∗ (0.029)
PersPerOccupHous 0.342∗∗∗ (0.069) 0.151∗∗∗ (0.050)
PersPerRentOccHous −0.242∗∗∗ (0.053)
PctPersOwnOccup −0.611∗∗∗ (0.197)
NumIlleg −0.179∗∗ (0.073)
PctPersDenseHous 0.262∗∗∗ (0.066) 0.265∗∗∗ (0.042)
HousVacant 0.155∗∗∗ (0.040) 0.225∗∗∗ (0.047)
PctHousOccup −0.049∗∗ (0.022)
PctHousOwnOcc 0.552∗∗∗ (0.190)
OwnOccLowQuart −0.121∗∗∗ (0.033)
RentLowQ −0.215∗∗∗ (0.042) −0.222∗∗∗ (0.041)
MedRent 0.280∗∗∗ (0.053) 0.202∗∗∗ (0.045)
MedOwnCostPctIncNoMtg −0.102∗∗∗ (0.020) −0.078∗∗∗ (0.020)
NumStreet 0.205∗∗∗ (0.062) 0.177∗∗∗ (0.055)
PctForeignBorn 0.140∗∗∗ (0.043)
Constant 0.531∗∗∗ (0.095) 0.631∗∗∗ (0.103)
Observations 1,993 1,993
R2 0.683 0.680
Adjusted R2 0.677 0.676
Residual Std. Error 0.132 (df = 1960) 0.133 (df = 1964)
En resumen, contamos con 6 modelos. Todos los modelos se encuentran anidados en el modelo 1 y
cada modelo es diferente. En el Cuadro 13.6 se presentan los 6 modelos.
13.5 Selección del mejor modelo para predecir 359
Cuadro 13.6: Modelos seleccionados por los diferentes algoritmos con corrección HC3
Dependent variable:
ViolentCrimesPerPop
Modelo 1 Modelo 2 Modelo 3 Modelo 4 Modelo 5 Modelo 6
(1) (2) (3) (4) (5) (6)
racepctblack 0.196∗∗∗ 0.220∗∗∗ 0.181∗∗∗ 0.173∗∗∗ 0.193∗∗∗
(0.036) (0.033) (0.036) (0.033) (0.031)
medFamInc 0.185∗∗
(0.085)
PctBSorMore 0.099∗∗∗
(0.035)
PctOccupMgmtProf 0.100∗∗
(0.039)
FemalePctDiv −0.286∗∗∗
(0.108)
MedRentPctHousInc 0.061∗∗
(0.024)
PctLargHouseOccup −0.140∗∗∗
(0.044)
PctLess9thGrade −0.092∗∗∗
(0.029)
Ahora comparemos el comportamiento de los modelos para predecir fuera de muestra. Emplearemos
el método de k iteraciones para hacer la validación cruzada. Empleemos, el paquete caret (Kuhn,
2020) y las funciones trainControl() y train() (tal como lo discutimos en el Capítulo 12) . Además
empleemos 5 iteraciones (k = 5).
Resumamos los resultados usando el RMSE y el MAE de cada modelo como se presenta en el
Cuadro 13.7.
RMSE MAE
Modelo 1 0.1332 0.09348
Modelo 2 0.1337 0.09333
Modelo 3 0.1333 0.09350
Modelo 4 0.1419 0.09954
Modelo 5 0.1339 0.09378
Modelo 6 0.1340 0.09378
Aunque las métricas no varían mucho entre modelos, de acuerdo con la RMSE el mejor modelo
es el 1 y de acuerdo al MAE el mejor modelo es el 3. Noten que en este caso puede tener sentido
penalizar errores de predicción grandes y favorecer los errores pequeños. Así, emplearemos el
criterio del RMSe que sugiere el modelo 1. Este modelo se construyó a partir del algoritmo Forward
y empleando el criterio de R2 ajustado.
Ahora, antes de pasar a emplear el modelo, procedamos a determinar si el mejor modelo tiene
o no multicolinealidad. Nota que el V IF depende de la matriz de varianzas y covarianzas de los
estimadores MCO y en presencia de heteroscedasticidad, éstos no son confiables. Así no podemos
emplearlos en esta situación. Así que nos concentraremos en la prueba de Belsley y col. (1980)
también conocida como la prueba Kappa.
13.6 Predicciones (escenarios) 361
## [1] 270.928
Este estadístico es muy grande (κ = 270.9280298). Esta prueba sugiere la existencia de un problema
serio de multicolinealidad. Solucionar este problema no será necesario, pues la multicolinealidad
alta nos está ayudando a mejorar el R2 del modelo y cómo nuestro objetivo es hacer predicciones, no
será necesario solucionar el problema.
El modelo construido nos permite generar los escenarios que estaba buscando la empresa consultora.
Recuerda que la pregunta de negocio implicaba tener una “fórmula” que le permita determinar cuál
sería la tasa de crímenes violentos por cada 100000 habitantes bajo diferentes escenarios.
Por ejemplo, supongamos que queremos tener un escenario en el que todas las variables se encuentran
en sus medias.
set.seed(123445)
ic_boot_predic(modelo1.C2, data.temp, R = 1000, alpha = 0.05)
Ahora la empresa de consultoría puede jugar con este modelo mostrando diferentes escenarios. Por
ejemplo, supongamos que visitamos el municipio de la fila 120 de la base de datos. Esta municipio
tiene las siguientes características (x120 )
362 Segundo caso de negocio
modelo1.C2$model[120, ]
Y la tasa de crímenes violentos por cada 100000 habitantes de ese municipio es de:
datos.caso2[120, 101]
## [1] 0.68
Ahora, se le podría proponer al alcalde una política pública para aumentar el porcentaje de personas
de 16 años o más que están empleadas (variable PctEmploy) en 5 punto porcentuales de tal manera
que pase de 59 % a 64 % . Entonces en es ese caso se esperaría que la tasa de crímenes violentos por
cada 100000 habitantes de ese municipio cambiaría a:
# se extraen los datos para el municipio 10
data.escenario <- modelo1.C2$model[120, ]
# se modifica los datos del municipio 10 para ajustarse al
# escenario
data.escenario["PctEmploy"] <- data.escenario["PctEmploy"] +
0.05
# predicicón
Nota que esto implicaría que el intervalo de confianza de la predicción sigue conteniendo el valor
original de la tasa de crímenes violentos por cada 100000 habitantes, por tanto ese escenario no
cambiaría la tasa esperada. Ahora los consultores pueden jugar con esta fórmula para proponer
diferentes escenarios a cada alcalde para disminuir la tasa de crímenes violentos o si es del caso
saber cuáles municipios no tiene sentido visitar, pues no se puede hacer mucho para disminuir dicha
tasa. De aquí en adelante, la imaginación es le límite.
@
Parte V
Explicar en sus propias palabras los conceptos de: matriz, suma y multiplicación de matrices,
matriz identidad, transpuesta de una matriz e inversa de una matriz
Calcula en R la suma y multiplicación de matrices, la matriz identidad, la transpuesta de una
matriz y la inversa de una matriz
368 Elementos de álgebra matricial
14.1 Introducción
Este libro supone el conocimiento básico de álgebra matricial que le permiten al científico de datos
trabajar con grandes volúmenes de datos organizados en forma matricial. Este Apéndice presenta
dichos elementos necesarios para seguir algunas demostraciones y operaciones descritas en el libro.
Este Apéndice no pretende ser un tratado autocontenido de álgebra matricial, sino por el contrario
un breve resumen que permitirá al lector ya familiarizado con el álgebra matricial recordar los
concepto1 .
El concepto de matrices es una noción que inicialmente desarrollado en el siglo XVII, asociado a la
manipulación de gráficos y soluciones de ecuaciones lineales simultáneas. Hoy en día la aplicación
de las matrices y sus operaciones están ligadas a áreas tan diversas como la física, gráficos de
computador, la economía, los métodos estadísticos, la teoría de juegos, redes, criptología y la ciencia
de datos.
Una matriz es una forma eficiente de ordenar información en columnas y filas. Por ejemplo, conside-
remos una base de datos que contiene información de ventas, costos y utilidades mensuales para
dos empresas (empresa 1 y 2) en millones de dólares. La información de un mes se puede ordenar
fácilmente en una matriz de la siguiente forma:
Empresa Ventas Costos Utilidades
M = Empresa1 4 2 2 (14.1)
Empresa2 2 1,5 0,5
Generalmente, se omiten los nombres que toman cada una de las columnas y filas de las matrices; es
decir, (14.1) se puede reescribir como
4 2 2
M=
2 1,5 0,5
El tamaño de una matriz está determinado por el número de filas y de columnas; así, se dice que la
matriz M es una matriz de dimensiones 2 × 3 (2 filas por 3 columnas). Una forma rápida de escribir
esto es M2×3 . En general una matriz puede tener n filas y m columnas, y se representa así:
a11 . . . a1m
An×m = ... . . . .. = [a ]
. i j i=1,...,n; j=1,...,m
an1 . . . anm
En el caso de las matrices, se dice que A = B si y solamente si todos los elementos de la matriz A
son iguales a los de B, es decir ai j = bi j para todo i y j, donde i = 1, . . . , n y j = 1, . . . , m.
Antes de definir algunas matrices especiales que serán útiles, es importante definir el concepto de
diagonal principal de una matriz. La diagonal principal de una matriz cuadrada A, es el conjunto
de elementos cuya posición corresponden a la misma fila y columna. En otras palabras, son los
elementos que se encuentran formando una “diagonal” entre la esquina superior izquierda y la
esquina inferior derecha de la matriz. Por ejemplo, sea la matriz
1 2 4
C = 6 3 5
11 10 8
. La diagonal principal de la matriz C está dada por el conjunto 1, 3, 8.
an1 . . . ann
Entonces, la diagonal principal está dada por el conjunto de elementos {aii }i=1,...,n .
Por otro lado, una matriz triangular superior (inferior) es una matriz cuadrada con todos los elementos
por debajo (encima) de la diagonal principal iguales a cero. Por ejemplo, la siguiente matriz:
1 2 4
0 3 5
0 0 8
es una matriz triangular superior.
Si una matriz es al mismo tiempo una matriz triangular superior y triangular inferior, entonces se
conoce como una matriz diagonal. En otras palabras, una matriz diagonal es una matriz cuyos
elementos por fuera de la diagonal principal son cero. Es decir, A es una matriz diagonal si tiene la
siguiente forma
a11 0 0
0 ... 0
0 0 ann
.
Una matriz diagonal se puede escribir de forma corta de la siguiente manera A = diag (a11 , a22 , . . . , ann ).
370 Elementos de álgebra matricial
Sean dos matrices A y B, cada una de dimensiones n × m. Es decir, las dos matrices tienen el mismo
número de filas y columnas, cuando ocurre esto se le denomina a las dos matrices conformes para
la suma. La suma de estas dos matrices corresponde a una matriz con dimensiones n × m, cuyos
elementos son iguales a la suma de los elementos correspondientes de las matrices A y B . En otras
palabras,
a11 . . . a1m b11 . . . b1m
A + B = ... . . . .. + .. . . ..
. . . .
an1 . . . anm bn1 . . . bnm
a11 + b11 . . . a1m + b1m
=
.. .. ..
. . .
an1 + bn1 . . . anm bnm
= [ai j + bi j ]i=1,...,n; j=1,...,m
Si las matrices a sumar no tienen las mismas dimensiones, entonces la operación no se puede efectuar
y se dice que las matrices no cumplen la condición de conformidad.
Suponga que contamos con 3 matrices que corresponden a la información para los tres
primeros meses del año de las ventas, costos y utilidades mensuales (columnas) para dos
empresas (filas).
600 250 350 650 330 250 580 270 350
E= F= M=
550 180 400 600 270 400 6250 350 410
Encuentre el valor de las ventas, costos y utilidades para el primer trimestre.
Respuesta: Las ventas, costos y utilidades trimestrales para las dos empresas son:
1830 850 950
E +F +M =
1775 800 1210
.
La suma de matrices posee varias propiedades similares a las de la suma de escalares. A continuación
se exponen estas propiedades:
Propiedad Conmutativa: A + B = B + A
Propiedad Asociativa: A + B +C = (A + B) +C = A + (B +C)
Antes de avanzar un poco más, note que si se suma dos veces la matriz A, se obtiene:
14.3 Adición, multiplicación por un escalar y multiplicación de matrices 371
a11 . . . a1n a11 . . . a1n
.. . . .. + .. . . ..
A+A = . . . . . .
an1 . . . ann an1 . . . ann
2a11 . . . 2a1n a11 . . . a1n
.. .. .. = 2 .. .. .
= . . . . . ..
2an1 . . . 2ann an1 . . . ann
= 2 · [ai j ]i=1,...,n; j=1,...,n = 2 · A
Es decir, el resultado de sumar dos veces la matriz A es igual a cada uno de los elementos de la
matriz A multiplicado por dos. Así es fácil mostrar que en general:
λ a11 . . . λ a1n
λ · A = ... .. ..
. .
λ an1 . . . λ ann
donde λ es un escalar.
14.2 Continuación
E − F + 2M = E + (−1)F + 2M
Por lo tanto,
600 250 350 −650 −330 −250 2 · 580 2 · 270 2 · 350
E − F + 2M = + +
550 180 400 −600 −270 −400 2 · 6250 2 · 350 2 · 410
Y por lo tanto
1110 460 800
E − F + 2M =
1200 610 820
donde ci j = ∑m
l=1 ail · bil . La Figura 14.1 ilustra el uso de esta fórmula.
372 Elementos de álgebra matricial
B : p filas m B columnas
b 11 b 12 ... b 1mB
b 21 b 22 ... b 2mB
12
b
.. .. .. ..
×
. . . .
21
+
a
22
b
×
22
b p1 b p2 ... b pmB
a
+
..
.+
p2
b
×
2p
a
a 11 a 12 ... a 1p c 11 c 12 ... c 1q
a 21 a 22 ... a 2p c 21 c 22 ... c 2mB
.. .. .. .. .. .. .. ..
. . . . . . . .
anA 1 anA 2 ... anA p cnA 1 cnA 2 ... c n A mB
La multiplicación de matrices presenta varias propiedades, pero antes es importante recalcar que la
propiedad conmutativa de la multiplicación para los escalares no se cumple para las matrices (aún si
este producto cumple la condición de conformidad). Es decir, A · B 6= B · A en caso de que ambos
productos estén definidos. Por esto, es importante tener en cuenta el orden en que se multiplican las
matrices, y hablaremos de pre-multiplica o post-multiplicar por una matriz, cuando se multiplica
una matriz por la izquierda o por la derecha, respectivamente.
Las siguientes son las propiedades que se cumplen para la multiplicación de matrices:
14.3 Adición, multiplicación por un escalar y multiplicación de matrices 373
tendremos que
16 0
A · A = A2 = .
0 36
h i
En general, si A es una matriz diagonal de orden n, tendremos que Aα = aαi j . Es decir,
i=1,...,n; j=1,...,n
cuando se eleva una matriz diagonal a la α, el resultado es una matriz diagonal, cuyos elementos
en la diagonal principal son iguales a los correspondientes elementos de la diagonal principal de la
matriz original elevados cada uno a la α.
Es importante anotar que las matrices, así como los escalares, pueden ser sumadas, restadas o
multiplicadas (siempre y cuando el producto esté definido). Pero la división para las matrices no es
posible.
En el caso de las matrices esto es diferente. Debe ser claro que aunque los productos AB−1 y B−1 A
estén definidos3 , estos dos productos usualmente son diferentes. De manera que, la expresión AB no
puede emplearse porque es ambigua. Es decir, no es claro si esta expresión se refiere a AB−1 o B−1 A.
Y peor aún, es posible que alguno de estos productos no exista. Así, cuando manipulamos matrices,
es mejor evitar el uso de la expresión AB (matriz A dividida por la matriz B) (Chiang, 1996).
La matriz identidad es una matriz diagonal especial, cuyos elementos de la diagonal principal son
iguales a uno. Es decir, la matriz identidad es una matriz con unos en la diagonal principal y ceros
en las otras posiciones. La matriz identidad se denota por In , donde n corresponde al número de
columnas y filas de la matriz (orden de la matriz). Formalmente,
1 0
In = . . . (14.4)
0 1
Un caso especial se produce cuando Ak×g · Ig = Ig , donde tiene que ser cierto que Ak×g = Ig . ¿Por
qué? (asegurese que puede encontrar el por qué de esta afirmación)
Otra matriz importante es la matriz de ceros, cuyos elementos son iguales a cero y se denota por 0n×m .
Esta matriz no necesariamente debe ser cuadrada y tiene la siguiente propiedad: An×m + 0n×m =
0n×m + An×m = A. Es decir, 0n×m es el módulo de la suma (simpre que la suma sea comnformable).
La transpuesta de una matriz cualquiera A es una matriz cuyas filas corresponden a las columnas de
la matriz original; o lo que es lo mismo, es una matriz cuyas columnas corresponden a las filas de la
matriz A. La transpuesta de una matriz A se denota por AT o A0 .
3 B−1 denota la inversa de la matriz B en caso de que exista. Este concepto será repasado más adelante.
14.6 Matriz idempotente y matrices ortogonales 375
Cuando AT = A, se dice que A es una matriz simétrica. En otras palabras, una matriz simétrica es
una matriz cuya transpuesta es igual a ella misma. Por ejemplo, la siguiente matiz es simétrica:
1 2 4
D = 6 3 5 .
4 5 8
Dado que
1 2 4
DT = 6 3 5 = D.
4 5 8
Generalmente, por convención, las matrices simétricas son escritas omitiendo los elementos por
debajo de la diagonal principal. Para nuestro ejemplo tendremos que la matriz D se puede reescribir
de la siguiente forma
1 2 4
D = 3 5 .
8
Cuando se emplea esta notación se da por entendido que se trata de una matriz simétrica.
6 0 1
Respuesta: A partir de estos vectores y escalares podemos encontrar las siguientes combina-
ciones lineales:
2 4 5 3
3 6 10 2
c1 = αv + β w + γz = 2
5 + 1 1 + (−1) 0 = 11
6 0 1 11
2 4 5 5
3 6 10 5
c2 = β v + αw + γz = 1
5 + 2 1 + (−1) 0 = 7
6 0 1 5
2 4 5 11
3 6 10 19
c3 = β v + γw + αz = 1
5 + (−1) 1 + 2 0 = −3
6 0 1 −5
2 4 5 12
3 6 10 23
c4 = γv + β w + αz = (−1)
5 + 1 1 + 2 0 = −4
6 0 1 −4
Ahora tenemos todos los elementos para definir el concepto de dependencia lineal. Un conjunto de
vectores será linealmente dependiente si al menos uno de los vectores puede expresarse como una
combinación lineal de los otros. Así, por ejemplo, el conjunto de vectores c, v1 , v2 , . . . , vk (definidos
anteriormente), será dependiente linealmente, pues por definición el vector c es una combinación
lineal de los demás vectores (c = ∑Ki=1 αi vi ).
14.8 La Traza y el rango de una matriz 377
son α1 = α2 = =α
˙ k = 0. En otras palabras, ningún vector del conjunto se puede expresar como
combinación lineal de otro u otros vectores que pertenecen al mismo conjunto.
La traza de una matriz cuadrada A es la suma de los elementos de la diagonal principal y se denota
por tr(A). Es decir:
n
tr(An×n ) = ∑ aii . (14.7)
i=1
Una de las principales propiedades de la traza es: tr(A · B ·C) = tr(C · B · A) = tr(B ·C · A) =.
Por otro lado, el rango de una matriz A es el número de filas o columnas linealmente independientes
y se denota por ran(A). Si se trata de una matriz no simétrica de dimensiones n × m, entonces
tendremos que ran(A) ≤ mı́n(n, m)4 .
Si el rango de una matriz A es igual al número de sus columnas, entonces se dice que la matriz A
tiene rango columna completo. En caso de que el rango de la matriz A sea igual al número de filas,
se dice que la matriz A tiene rango fila completo. Para el caso de una matriz cuadrada, si el rango de
la matriz es igual al número de filas y por tanto al número de columnas, se dice que la matriz tiene
rango completo.
4 Siendo un poco más rigurosos se debería hablar del rango columna (número de columnas linealmente independientes)
y del rango fila (número de filas linealmente independientes). Pero es fácil demostrar que el rango columna y el rango fila
de una matriz es el mismo; por tanto, podemos hablar sin riesgo a ambigüedades del rango de una matriz.
378 Elementos de álgebra matricial
El determinante de una matriz cuadrada A, representado por det(A) o |A|, es un escalar asociado de
manera unívoca con esta matriz. Para una matriz 2 × 2, el determinante está dado por
a11 a12
det(A) = |A| = = a11 a22 − a21 a12 (14.8)
a21 a22
. Para una matriz de un orden superior, el cálculo del determinante es un poco más complejo.
Antes de entrar en el detalle del cálculo, definamos dos conceptos importantes. La matriz menor,
asociada al elemento ai j de una matriz cuadrada A de orden n, denotada por Mi j , es la matriz cuadrada
de orden n − 1 obtenida al eliminar la i-ésima fila y la j-ésima columna de A. (Ver Figura 14.2). El
menor del elemento ai j es el determinante de la matriz menor Mi j ; es decir, Mi j . Y el cofactor del
elemento ai j , expresado por Ci j , corresponde a Ci j = (−1)i+ j Mi j .
an1 · · · an j · · · ann
Nota: La matriz menor asociada al elemento ai j de la matriz A, se forma eliminando la i-ésima fila y la j-ésima columna (columna y fila
sombreadas en rojo).
Ahora bien, el determinante de una matriz de orden n puede ser calculado, a partir de cualquier
columna o fila, de la siguiente manera:
Note que esto implicará el cálculo de dos determinantes de orden 3. Esta operación se puede
simplificar aún más si “creamos” más ceros en la segunda fila de la matriz D. Por ejemplo, si
multiplicamos la columna 3 por -2 y sumamos este producto a la columna 1 tendremos que:
2 −1 3 5 −4 −1 3 5
−4 −1 5
2 0 1 0 0 0 1 0 = 1 · (−1)2+3 0
|D| =
6
= 1 4 .
1 3 4 0
1 3 4
−3 3 8
−7 3 −2 8 −3 3 −2 8
Los valores propios (eigen values en inglés), también conocidos como raíces características de una
matriz cuadrada An son los escalares λ que satisfacen
|A − λ In| = 0. (14.9)
Es decir, para encontrar los valores propios se debe resolver la anterior ecuación.
Los valores propios son importantes porque en muchos casos facilitan ciertos cálculos. En especial
tenemos los siguientes resultados:
det(An ) = ∏ni=1 λi .
El rango de cualquier matriz A es igual al número de valores propios diferentes de cero.
5 1 1 0
2 4 − λ 0 1 = 0.
5−λ 1
= 0.
2 4−λ
(5 − λ )(4 − λ ) − 2(1) = 0.
λ 2 − 9λ + 18 = 0.
Las dos soluciones son λ1 = 6 ó λ2 = 3. Así, los valores propios de la matriz D son 6 y 3. Por
tanto, ran(D) = 2 y det(D) = 6 · 3 = 18.
La matriz inversa de la matriz cuadrada An es una matriz cuadrada de igual orden tal que
B · An = In . (14.10)
14.11 La Matriz inversa 381
Y se denota como A−1 , es decir B = A−1 . Además, si se post-multiplica la matriz An por su inversa,
también se obtendrá la matriz identidad. En otras palabras, la matriz inversa además cumple que
An A−1
n = In .
Pero, ¿cómo encontrar la matriz inversa de una matriz An ? Primero es importante recordar que no
todas las matrices cuadradas poseen inversa. De hecho, sólo aquellas matrices cuyas columnas y
filas son linealmente independientes entre sí tendrán inversa. En otras palabras, una matriz singular
(det(A) = 0) no tendrá matriz inversa.
Existen diferentes métodos para encontrar la matriz inversa de una matriz no singular, pero aquí sólo
repasaremos dos métodos. El primer método será emplear la transpuesta de la matriz de cofactores
conocida como la matriz adjunta (Ad j(A)). La matriz inversa de una matriz An está dada por la
siguiente fórmula
1
A−1
n = Ad j(An ). (14.11)
|An|
a22 a23 a a13 a a13
+ a − 12 + 12
32 a33 a32 a33 a22 a23
a11 a12 a13
a21
a23 a11 a13 a11 a13
adj a12 a22 − a31
a23 = + −
a33 a31 a33 a21 a23
a31 a32 a33
a21 a22 a a12 a a12
+ − 11 + 11
a31 a32 a21 a22 a21 a22
a11 . . . a1n 1 0
.. . . . ..
. .. . = [ An | In ] . (14.12)
.
an1 . . . ann 0 1
Posteriormente, por medio de operaciones de filas podemos reducir la matriz A a la matriz identidad.
Así tendremos que:
1 0 d11 . . . d1n
.. . .. .
. .. . .. = [ In | An ] . (14.13)
0 1 dn1 . . . dnn
Al final de las transformaciones, obtendremos la inversa de la matriz original a la derecha.
Ahora necesitamos manipular esta matriz de tal forma que a la izquierda tengamos la matriz
inversa. Para esto, intercambiemos la primera fila con la segunda.
1 4 0 1
.
2 9 1 0
Por tanto,
−1 −4 9
D = .
1 −2
14.12 Elementos de cálculo matricial 383
Un resultado especial, que es muy útil, es la inversa de una matriz diagonal. Ésta es una de las
inversas más fáciles de calcular. En general tenemos que:
−1 1
a11 0 a11 0
.. =
..
(14.14)
. .
1
0 ann 0 ann
Consideremos la siguiente función cuyo dominio es en los reales (RX) y su rango pertenece a
Rn : y = f (x1 , x2 , . . . , xn ) = f (x). El vector de derivadas parciales de f (x) es conocido como el
gradiente o vector gradiente y está definido de la siguiente manera:
∂ y/∂ x1 f1
∂ f (x) ∂ y/∂ x2 f2
g = g (x) = = . = . . (14.15)
∂x .
. . .
∂ y/∂ xn fn
El elemento i-ésimo del gradiente se interpreta como la pendiente de f (x) con respecto al plano
formado por xi y y; en otras palabras, es el cambio en f (x) dado un cambio en xi teniendo los otros
elementos del vector x constantes.
La segunda derivada de f (x) está dada por una matriz denominada la matriz Hessiana que es
calculada de la siguiente manera:
2
∂ y/∂ x1 ∂ x1 ∂ 2 y/∂ x1 ∂ x2 . . . ∂ 2 y/∂ x1 ∂ xn
∂ 2 y/∂ x2 ∂ x1 ∂ 2 y/∂ x2 ∂ x2 . . . ∂ 2 y/∂ x2 ∂ xn
H =
.. .. .. ..
. . . .
(14.16)
2 2 2
∂ y/∂ xn ∂ x1 ∂ y/∂ xn ∂ x2 . . . ∂ y/∂ xn ∂ xn
∂ 2y
= [ fi j ] =
∂ x∂ xT
La matriz Hessiana es cuadrada y simétrica, gracias al Teorema de Young.
Algunas derivadas especiales útiles para la construcción de modelos de regresión múltiple son:
384 Elementos de álgebra matricial
∂ (xT a)
∂x = a, donde a es un vector columna
∂ (xT Ax)
= A + AT x, donde A es cualquier matriz cuadrada
∂x
∂ (xT Ax)
∂x = 2Ax, donde A es una matriz cuadrada simétrica.
Ahora si consideramos funciones cuyo rango está en los Rn , tenemos los siguientes resultados que
son de gran utilidad:
∂ (Ax) T
∂ x = A , donde A es cualquier matriz tal que el producto Ax está definido.
T
∂ (x Ax)
∂x = xT x, donde A es cualquier matriz cuadrada.
ln(A) −1 T
∂ A = (A ) , donde A es cualquier matriz cuadrada no-singular.
Antes de finalizar, es importante resaltar varios resultados importantes que serán empleados en este
libro. Los datos de una muestra se organizarán en un vector columna yn×1 que contendrá los datos
de las n observaciones para la variable dependiente
y1
y2
yn×1 = . (14.17)
..
yn
Y una matriz Xn×k que contiene las variables explicativas y una columna de unos para el intercepto
1 X21 X31 . . . Xk1
1 X22 X32 . . . Xk2
Xn×k = . (14.18)
.. .. .. ..
.. . . . .
1 Xn2 X3n . . . Xkn
Noten que en este contexto hemos cambiado un poco la notación de las filas y las columnas. El
primer número corresponde al número de la variable y el segundo a la observación i (fila). Es decir,
X32 corresponde a la segunda observación de la variable X2 .
Adicionalmente,
n
yT y = ∑ y2i . (14.20)
i=1
Como se mencionó al inicio de esta capítulo, una de las aplicaciones de las matrices es
la criptología; es decir, el proceso de cifrar mensajes. A continuación veremos una breve
aplicación de las matrices a la codificación de mensajes.
Considere una matriz fija A invertible (no singular). Entonces, podemos convertir el mensaje
que se desea codificar en una matriz B , tal que A × B satisfaga la condición de conformidad.
Así, se puede enviar el mensaje generado por el producto A × B. El receptor del mensaje
necesita conocer solamente A−1 para decodificar el mensaje. Esto gracias a que A−1 AB = B.
Para entender cómo funciona esto, consideremos la siguiente matriz
−1 5 −1
A = −2 11 7 .
1 −5 2
La correspondiente inversa es
57 −5 46
A−1 = 11 −1 9 .
−1 0 −1
Ahora supongamos que queremos transmitir el mensaje “Estamos en Cali”. Para esto necesi-
tamos crear una equivalencia entre las letras y un número. Por ejemplo supongamos que se
crea la siguiente equivalencia: e = 3, s = 4, t = 5, a = 1, m = 6, o = 8, n = 7, c = −1, l = 9,
i0 − 2 y para los espacios en blanco usaremos el cero.
Esto se puede expresar de la siguiente manera (note que el receptor del mensaje también debe
conocer la codificación adecuada de las letras). Así, podemos crear la siguiente matriz
3 4 5 1 6
B = 8 4 0 3 7 .
0 −1 1 9 −2
Entonces tenemos que
37 17 −6 5 31
AB = 82 29 −3 94 51 .
−37 −18 7 4 −33
386 Elementos de álgebra matricial
Por tanto, el mensaje encriptado a enviar sería: 37,17,37, 17 , -6 , 5, 31, 82, . . . . El receptor
puede saber cuántas filas tendrá la matriz que le es enviada al conocer A. Y podrá fácilmente
reconstruir la matriz AB. De tal forma que pre-multiplicando por A−1 el mensaje recibido se
obtendrá el mensaje deseado.
Ejercicio: Encripte el mensaje “Tengo que repasar álgebra matricial”
R Core Team (2018) es un lenguaje de programación que emplea vectorización. Es decir, la forma
natural de hacer cálculos en R es emplear vectores y matrices y no escalares. Esto hace el lenguaje
matricial sea un lenguaje natural al momento de emplear R.
2 −1 3
5
2 0 1 0
D=
6
.
1 3 4
−7 3 −2 8
Es se puede hacer con la función matrix() del paquete base de R. Esta función requiere los siguientes
argumentos:
donde:
class(D)
Por otro lado, una matriz identidad puede ser construida rápidamente con la función diag() . Para
crear una matriz identidad de orden n el único atributo que requiere la función es el tamaño de la
matriz identidad (n). Es decir,
diag(4)
La misma función diag() permite extraer los valores de la diagonal principal de una matriz, si el
argumento de esta es una función.
diag(D)
## [1] 2 0 3 8
sum(diag(D))
## [1] 13
Por otro lado, si queremos sumar matrices, esto se puede hacer rápidamente empleando el operados
“+”. Por ejemplo, supongamos que queremos sumarle a la matriz D la siguiente matriz
3 3 7 51
4 9 1 3
E =
5 10 3 12 .
8 21 −2 4
D + E
Para la multiplicación de matrices se debe tener un poco de cuidado. El operador “*” realiza una
multiplicación elemento por elemento, no realiza la multiplicación de las matrices. Por otro lado el
operador “ %* %” si realiza la multiplicación de matrices. Es decir,
# multiplicación de matrices
D %*% E
El determinante de una matriz, y sus valores propios se pueden calcular empleando las funciones
det() y eigen() , repectivamente. Por ejemplo
# determinante
det(D)
## [1] -43
14.14 Empleando R para hacer operaciones matriciales 389
# valores propios
eigen(D)
## eigen() decomposition
## $values
## [1] 6.851893+5.934594i 6.851893-5.934594i -1.156348+0.000000i
## [4] 0.452562+0.000000i
##
## $vectors
## [,1] [,2] [,3]
## [1,] 0.0919841-0.4433032i 0.0919841+0.4433032i -0.47221621+0i
## [2,] -0.0983345-0.1285593i -0.0983345+0.1285593i 0.07723466+0i
## [3,] -0.0947980-0.5778436i -0.0947980+0.5778436i 0.85512230+0i
## [4,] 0.6526363+0.0000000i 0.6526363+0.0000000i -0.19953074+0i
## [,4]
## [1,] -0.2400156+0i
## [2,] 0.5743704+0i
## [3,] 0.7399695+0i
## [4,] -0.2548258+0i
eigen(D)$values
# chequeo
round(solve(D) %*% D, 3)
Explicar en sus propias palabras la diferencia entre una variable aleatoria y una no aleatoria.
Explicar en sus propias palabras los conceptos de: valor esperado, varianza y covarianza
392 Elementos de Estadística
15.1 Introducción
Este libro supone el conocimiento básico de estadística que le permiten al científico de datos trabajar
con grandes volúmenes de datos y modelos estadísticos. Este Apéndice presenta unos conceptos
básicos de estadística necesarios para seguir algunas demostraciones y operaciones descritas en el
libro. Este Apéndice no pretende ser un tratado autocontenido de estadística, sino por el contrario un
breve resumen que permitirá al lector ya familiarizado con los conceptos recordar los concepto.
Así, la estadística es una ciencia que emplea conjuntos de datos para obtener a partir de ellos inferen-
cias (proyección, adivinanza) sobre una población (valor real). De manera que el problema estadístico
consiste en encontrar la mejor predicción para un valor real desconocido para el investigador, a partir
de datos recolectados (muestra) de una población.
En este capítulo repasaremos los conceptos básicos de estadística y probabilidad que son las bases
para este libro.
Una variable se define como una magnitud que puede tener un valor cualquiera de los comprendidos
en un conjunto. En otras palabras, es una “letra” que puede tomar uno o diferentes valores. Por
ejemplo, si la variable x cumple la condición de que 3x = 2, entonces la variable necesariamente
tomará el valor de 23 (x = 23 ). Otro ejemplo, si la variable cumple la condición x2 = 1, entonces x
puede tomar los valores de 1 o −1.
Ahora, consideremos la definición de una variable aleatoria, también conocida como variable
estocástica. Una variable aleatoria es una “letra” que toma diferentes valores, cada uno con una
probabilidad previamente definida. Por ejemplo, tiremos una moneda justa1 al aire, y sea X la
variable aleatoria que toma el valor de uno si la cara superior de la moneda es sello, en caso contrario
la variable toma el valor de cero. Es decir
1 si sello
X= .
0 si cara
Entonces, en este caso, diremos que la variable aleatoria X tiene dos posibles realizaciones. Ahora
bien, si la moneda es una moneda normal, existirá igual probabilidad que la variable aleatoria tome
el valor de uno o cero. En otras palabras, tendremos que la probabilidad de que la variable aleatoria
sea igual a uno es 0.5, al igual que la probabilidad que la variable aleatoria sea cero. Esto se puede
abreviar de la siguiente forma: P(X = 1) = 0,5 y P(X = 0) = 0,5.
1 Por una moneda justa, se entiende una moneda que tiene una probabilidad igual de obtener cualquiera de las dos caras.
15.3 Distribución de probabilidad 393
Si el conjunto de valores que toma la variable aleatoria es un conjunto finito o infinito contable,
entonces la variable estocástica se denomina una variable aleatoria discreta. Por otro lado, si las
posibles realizaciones de la variable aleatoria son un conjunto de realizaciones infinitamente divisible
y, por tanto, imposible de contar, entonces la variable estocástica se conoce como una variable
aleatoria continua. En general, si las posibles realizaciones toman valores discretos entonces estamos
hablando de una variable estocástica discreta; por el contrario, si los posibles valores son parte de un
rango continuo de valores, entonces estamos hablando de una variable estocástica continua.
Un vector aleatorio es un vector cuyos elementos son variables aleatorias ya sean continuas o
discretas, es decir,
X1
X2
X = . , (15.1)
..
Xn
donde Xi para i = 1, 2, . . . , n representan diferentes variables aleatorias. Análogamente, una matriz
aleatoria es una matriz cuyos elementos son variables aleatorias.
Es importante anotar que los científicos de datos interpretan la mayoría de los aspectos de la realidad
como resultados de un proceso estocástico. En la práctica observamos un único valor de una variable
como las ventas mensuales o los rendimientos de un activo. Los valores observados en la realidad para
esas variables aleatorias (muestra), se interpretan como las realizaciones de una variable aleatoria
después de que los “dados” de la economía o el negocio ya han sido tirados. Es decir, lo que observa
el científico de datos es la realización de un evento aleatorio.
Una distribución de probabilidad de una variable aleatoria discreta, también conocida como la
función de densidad discreta, f (x), es una lista de las probabilidades asociadas a las diferentes
realizaciones x que puede tomar una variable aleatoria discreta X. Para una variable aleatoria discreta
tenemos que
f (x) = P(X = x) (15.2)
0 ≤ f (x) ≤ 1
∑∀i f (xi )
Dado que en el caso de una variable aleatoria continua, ésta puede tomar cualquier valor dentro
de un número infinito de valores, será imposible asignar una probabilidad para cada uno de los
valores que puede tomar la variable aleatoria continua. Por tanto, en el caso de variables aleatorias
continuas es necesario un enfoque diferente al seguido con las variables aleatorias discretas. En este
caso definiremos una función que nos permita conocer la probabilidad de ocurrencia de un intervalo
(conjunto continuo de puntos) y no un punto como lo hicimos para las variables aleatorias discretas.
394 Elementos de Estadística
Una distribución de probabilidad de una variable aleatoria continua, también conocida como la
función de densidad continua, f (x) , es una función asociada a la variable aleatoria continua X, tal
que
Z b
f (x)dx = P(a ≤ x ≤ b) (15.3)
a
donde debe cumplir que:
f (x) ≥ 0
R∞
−∞ f (x)dx = 1
Eventualmente, las distribuciones de probabilidad se pueden describir con sus momentos2 . El primer
momento de una distribución se conoce como el valor esperado o esperanza matemática.
El valor esperado de una variable aleatoria corresponde a su media poblacional y se interpreta como
el valor promedio que se espera de la variable aleatoria cuando se obtiene cualquier muestra de ésta.
El valor esperado de una variable aleatoria discreta denotado por E[X] se define como
El valor esperado de una variable aleatoria continua, también denotado por E[X] se define como:
Z ∞
E[X] = x f (x)dx (15.5)
−∞
Como se mencionó anteriormente, E[x] se conoce como el primer momento de una variable aleatoria
y también se denota como µx . Es decir, la media poblacional de X. El i-ésimo momento (alrededor
del origen) de una variable aleatoria X está definido por µi0 = E[X i ].
2 Los momentos de una distribución son representados por parámetros poblacionales que se representarán de aquí en
adelante con letras griegas. Los momentos de una distribución describen las características de la distribución poblacional
de la variable aleatoria.
15.5 Independencia (estadística) lineal 395
Es importante notar que independencia estadística entre dos variables no implica que no exista
relación alguna entre las variables, como se verá más adelante, independencia estadística sólo
implica que no existe una relación lineal entre las dos variables.
y para una variable estocástica continua la varianza será calculada de la siguiente manera:
Z ∞
Var [X] = (x − µ)2 f (x)dx.
−∞
Un ejemplo de cómo la desviación estándar puede ser empleada para describir la dispersión de una
distribución está dado por la desigualdad de Chebychev; para cualquier variable aleatoria y para
cualquier constante se tiene que:
1
P (µ − kσ ≤ x ≤ µ + kσ ) ≥ 1 − (15.8)
k2
este resultado permite en la práctica agilizar el cálculo de la varianza de cualquier variable aleatoria.
Var [aX + b] = a2Var [X], donde a y b son constantes y X es una variable aleatoria.
Var [aX + bY ] = a2Var [X] + b2Var [Y ] + 2abCov [X,Y ] donde a y b son constantes y X y Y
son variables aleatorias, respectivamente.(en la próxima sección repasaremos el concepto de
covarianza (Cov [X,Y ])).
La varianza de una variable aleatoria también es conocida como el segundo momento alrededor de la
media. En general, el i-ésimo momento alrededor de la media de una variable aleatoria se define
como:
h i
µi = E (x − µ)i (15.10)
µ3
A= (15.11)
σ3
En la Figura 15.1 se presentan los posibles casos extremos para interpretar el coeficiente de asimetría.
En general, cuando ambas colas de la distribución tienen igual longitud, diremos que la distribución
es simétrica o no posee asimetría. Por otro lado, si la cola izquierda (derecha) es más “corta” (larga)
que la derecha, entonces la distribución se dirá que la distribución tiene asimetría positiva (negativa)
(Ver Figura 15.1). En algunos casos la asimetría positiva también se conoce como asimetría a la
derecha, mientras que la asimetría negativa se denomina asimetría a la izquierda.
15.6 Varianza y momentos alrededor de la media de una variable aleatoria 397
Asimetría negativa
Asimetría positiva Sin asimetría
f(x)
x
Fuente: Elaboración propia
Otro estadístico comúnmente empleado para describir que tan “aplanada” o “picuda” es una distribu-
ción, es el coeficiente de curtosis que se define como:
µ4
C= (15.12)
σ4
Para efectos de comparación, se emplea como distribución referente la distribución normal. Una
distribución que es relativamente más picuda que una distribución normal se le denomina leptocúrtica.
Contrariamente, aquella distribución más plana que la distribución normal se le denomina platicúrtica
(Ver Figura 15.2).
398 Elementos de Estadística
Leptocúrtica
f(x)
Platicúrtica
x
Fuente: Elaboración propia
Ahora consideremos la covarianza entre dos variables aleatorias X y Y denotada por Cov [X,Y ] ó
σx,y y definida como
Cov [X,Y ] = E [(X − E [X]) (Y − E [Y ])] (15.13)
Al igual que lo que ocurre con la varianza de una variable aleatoria, el cálculo directo de una
covarianza es muy engorroso. Afortunadamente, es fácil mostrar que
La expresión 15.14 ayuda a entender la utilidad de la covarianza entre dos variables aleatorias. Noten
15.7 Covarianza y Correlación entre dos variables aleatorias 399
que en caso de que las variables estocásticas X y Y sean independientes, se tendrá por definición que
E[XY ] = E[X]E[Y ]. Y por tanto,Cov [X,Y ] = 0.
De esta manera, la covarianza entre dos variables aleatorias será cero si no existe relación lineal (hay
independencia) entre ellas; y será diferente de cero si no hay independencia estadística entre ellas.
Por otro lado, en el caso de que al mismo tiempo que una realización de la variable aleatoria X está
por encima de su media, la realización de la variable estocástica Y también está por encima de su
media, entonces la covarianza de estas dos variables será positiva. Si cuando la realización de una
variable aleatoria está por encima de su media la realización de la otra variable está por debajo de la
media, entonces la covarianza será negativa.
Como se mencionó anteriormente, la covarianza entre dos variables estocásticas mide la relación
lineal entre las variables, pero ésta depende de las unidades en que están medidas X y Y . Para tener
una medida del grado de dependencia lineal entre dos variables aleatorias, que no dependa de las
unidades, se emplea el coeficiente de correlación.
La correlación entre dos variables aleatorias, denotado por ρ, está definida por:
Cov [X,Y ]
ρ=p p (15.15)
Var [X] Var [Y ]
Es muy fácil mostrar que −1 ≤ ρ ≤ 1. La correlación entre dos variables aleatorias tiene una
interpretación muy sencilla; por ejemplo, una correlación de 1/-1 entre las variables aleatorias X y Y
implica una relación lineal positiva/negativa y perfecta entre ellas. Mientras que una correlación de
cero implica que no existe relación lineal entre las variables. En la Figura 15.3
400 Elementos de Estadística
y
x x x
Correlación muy alta(ρ = 0.9) Correlación moderada(ρ = −0.65) No hay correlación(ρ = 0)
y
x x x
Fuente: Elaboración propia
Como se mencionó anteriormente, un vector aleatorio es un vector cuyos elementos son todos
variables aleatorias. Así, el valor esperado de un vector aleatorio corresponde a un vector cuyos
elementos son los valores esperados de los correspondientes elementos del vector estocástico. En
otras palabras, sea X un vector aleatorio, entonces:
X1 E [X1 ] µ1
X2 E [X2 ] µ2
E [X] = E . = . = . = µn×1 . (15.16)
.. .. ..
Xn E [Xn ] µn
15.8 Esperanza y Varianza de vectores aleatorios. 401
Es muy fácil extender esta idea para encontrar el valor esperado de una matriz aleatoria. Sea Xn×m
una matriz aleatoria de dimensiones n × m, entonces
E [X11 ] E [X12 ] . . . E [X1m ]
E [X21 ] E [X22 ] . . . E [X2m ]
E [Xn×m ] = . (15.17)
. .. .. ..
. . . .
E [Xn1 ] E [Xn2 ] . . . E [Xnm ]
Análogamente al caso de una variable aleatoria, la varianza de un vector aleatorio Xn×1 se define
como: h i
Var [Xn×1 ] = E (Xn×1 − µ) (Xn×1 − µ)T = E Xn×1 XTn×1 − µ µ T .
(15.18)
En este caso tenemos que
E [(X1 − µ1 ) (X1 − µ1 )] E [(X1 − µ1 ) (X2 − µ2 )] . . . E [(X1 − µ1 ) (Xn − µn )]
E [(X2 − µ2 ) (X1 − µ1 )] E [(X2 − µ2 ) (X2 − µ2 )] . . . E [(X2 − µ2 ) (Xn − µn )]
Var [Xn×1 ] =
.. .. .. ..
. . . .
E [(Xn − µn ) (X1 − µ1 )] E [(Xn − µn ) (X2 − µ2 )] . . . E [(Xn − µn ) (Xn − µn )] .
(15.19)
La la matriz de varianzas de un vector aleatorio Xn×1 , conocida como la matriz de covarianzas o la
matriz de varianzas y covarianzas, está dada por:
Var [X1 ] Cov [X1 , X2 ] . . . Cov [X1 , Xn ]
Cov [X2 , X1 ] Var [X2 ] . . . Cov [X2 Xn ]
Var [Xn×1 ] = (15.20)
.. .. .. ..
. . . .
Cov [Xn , X1 ] Cov [Xn , X2 ] . . . Var [Xn ] .
Dividiendo cada uno de los σi j por las respectivas σi y σ j obtendremos la matriz de correlaciones:
12 ρ12 . . . ρ1n
ρ21 1 . . . ρ2n
.. . (15.22)
.. .. ..
. . . .
ρn1 ρn2 . . . 1
Antes de continuar, consideremos las siguientes propiedades. Sean a un vector de constantes, A una
matriz de constantes y Xn×1 un vector aleatorio, entonces:
402 Elementos de Estadística
E aT X =
aT µ
Var aT X = aT Var [X] a = aT Σa
E [AX] = Aµ
Var [AX] = AΣaAT
E [tr(Xn×n )] = tr (E [Xn×n ])
Intuitivamente, un estimador se puede entender como una “fórmula” que permite pronosticar un
valor poblacional (parámetro) desconocido a partir de una muestra. Por ejemplo, supongamos que
deseamos conocer la media de una población. Regularmente no conocemos este valor y por tanto se
recolectan observaciones de parte de la población total (muestra), y a partir de estas observaciones
evaluamos una fórmula para conocer nuestro pronóstico del valor poblacional real.
Así, un estimador θ̂ para pronosticar un parámetro θ a partir de una muestra aleatoria de tamaño n
se define como:
θ̂ = h (X1 , X2 , . . . , Xn ) (15.23)
donde h (·) es una función cualquiera y X1 , X2 , . . . , Xn corresponden a cada uno de los puntos
muestrales (elementos de la muestra). Los estimadores son variables aleatorias, pues son función de
variables aleatorias.
Claramente cualquier función de los puntos muestrales por definición es un estimador. Pero, ¿cómo
escoger cuál función de la muestra es un buen estimador para el parámetro deseado? Existen varias
propiedades deseadas en los estimadores que discutiremos a continuación.
Una propiedad muy deseable es que el valor esperado de la distribución del estimador esté lo más
cercano o coincida con el valor población del parámetro. De esta forma, cada vez que se analice
información nueva se estará seguro que
en promedio el estimador estará correcto. En general, diremos
que un estimador es insesgado si E θ̂ = θ . Así definiremos el sesgo de un estimador como:
Sesgo θ̂ = E θ̂ − θ . (15.24)
La insesgadez es una propiedad deseable en un estimador, pero la ausencia de sesgo no dice nada
sobre la dispersión que tiene el estimador alrededor de su media. En general, se preferirá un estimador
que tenga una menor dispersión alrededor de la media (varianza) a uno con mayor dispersión. Un
estimador θ̂1 es considerado un estimador insesgado más eficiente que si
Var θ̂1 < Var θ̂2 (15.25)
15.9 Estimadores puntuales y sus propiedades deseadas 403
Ahora consideremos el caso en que estamos comparando un estimador sesgado con una varianza
relativamente pequeña con un estimador insesgado con una varianza relativamente grande. La
pregunta es: ¿cuál de los dos estimadores deberá ser preferido? Un criterio para escoger un estimador
entre otros, es considerar el estimador con el Mínimo Error Medio al Cuadrado, denotado MSE por
su nombre en inglés (Mean Square Error), éste se define como:
2
MSE θ̂ = E θ̂ − θ (15.26)
2.1 Partiendo de 2.10, y sin perder generalidad encontremos la derivada con respecto X2 .
∂Yi
= α2 α0 X1iα1 X2iα2 −1 X3iα3 εi
∂ X2i
Ahora, reconciendo que
Yi = α0 X1iα1 X2iα2 X3iα3 εi
podemos reexpresar la deribada de la siguiente manera:
∂Yi Yi
= α2 .
∂ X2i X2i
Ahora multiplicando a ambos lados por X2i y dividiendo a ambos lados por Yi obtenemos:
∂Yi
Yi
∂ X2i
= α2 .
X2i
∂Yi
Es fácil reconocer que el cambio porcentual de Yi (∆ %Yi ) corresponde a Yi 1̇00. Así, tenemos que:
∆ %Yi
= α2 .
∆ %X2i
406 Elementos de Estadística
Es decir, α2 representa el cambio porcentual en Yi dado un cambio del 1 % en X2i . Esto representa la
elasticidad.
Los datos han sido leídos correctamente, pero los nombres de las variables no parecen los correctos.
De esta manera, podemos proceder a estimar el modelo. Los resultados se reportan en el Cuadro
15.1.
15.9 Estimadores puntuales y sus propiedades deseadas 407
Dependent variable:
I
CE 85.760∗∗∗
(8.391)
CD 40.905
(77.222)
Ldies −55.183∗∗
(20.472)
LEI −148.368∗∗∗
(23.928)
V 0.001
(0.001)
Constant 95,755.200∗∗∗
(22,438.880)
Observations 34
R2 1.000
Adjusted R2 1.000
Residual Std. Error 969.562 (df = 28)
F Statistic 20,032.750∗∗∗ (df = 5; 28)
Intercepto: Si todas las otras variables del modelo fuesen cero, entonces el sector tendría
egresos de 9,57552 × 104 millones de dólares. Noten que este es un ejemplo en el que el
intercepto no tiene sentido.
Por cada millón adicional Kilovatios/hora de consumo de electricidad el ingreso del sector
aumentará en 85.76 millones de dólares.
Como se discutirá en el siguiente capítulo, el consumo de diesel no tiene efecto sobre el
ingreso del sector (no es significativo).
Por cada locomotora diesel adicional el ingreso del sector caerá en 55.18 millones de dólares.
Por cada locomotora eléctrica adicional el ingreso del sector caerá en 148.37 millones de
dólares.
408 Elementos de Estadística
4.1 El primer paso es cargar los datos y hacer las modificasciones que ya habíamos efectuado.
De esta manera, podemos proceder a estimar los modelos. Los resultados se reportan en el Cuadro
15.2.
Dependent variable:
I
(1) (2) (3) (4) (5)
CE 85.760∗∗∗ 101.624∗∗∗ 121.950∗∗∗ 87.625∗∗∗
(8.391) (6.799) (8.456) (7.763)
V 0.001 0.0001
(0.001) (0.002)
Observations 34 34 34 34 34
R2 1.000 0.998 1.000 0.999 1.000
Adjusted R2 1.000 0.998 1.000 0.999 1.000
Residual Std. Error 969.562 (df = 28) 2,543.147 (df = 31) 1,144.403 (df = 31) 1,581.001 (df = 30) 959.363 (df = 29)
F Statistic 20,032.750∗∗∗ (df = 5; 28) 7,265.827∗∗∗ (df = 2; 31) 35,942.490∗∗∗ (df = 2; 31) 12,550.250∗∗∗ (df = 3; 30) 25,576.090∗∗∗ (df = 4; 29)
Ahora calculemos las métricas de bondad de ajuste. Estas se resumen en el Cuadro 15.3.
15.9 Estimadores puntuales y sus propiedades deseadas 409
Cuadro 15.3: Medidas de bondad de ajuste para los cinco modelos estimados
Dado que todos los modelos están anidados, procedamos a compararlos empleando pruebas de
hipótesis. Puedes realizar todas las comparaciones posibles. En todos los casos podemos encontrar
que el mejor modelo es el modelo 4.11.
anova(R5, R1)
5.1 Tras estimar los modelos se obtienen los resultados reportados en el Cuadro 15.4.
410 Elementos de Estadística
Dependent variable:
q
(1) (2) (3)
D −205,487.400 −463,504.900∗∗∗
(385,894.200) (72,900.210)
D:inversión −0.521
(0.765)
Dinversión −0.921∗∗∗
(0.144)
Es importante anotar que se requiere de un truco para estimar el modelo solo con interacción y
sin interrcepto. Para esto es necesario crear la variable de interacción aparte, pues la función lm()
automáticamente se incluye el elemento de interacción, incluye el cambio en el intercepto. Por eso
este modelo se estimó de la siguiente manera:
Es decir, el modelo con solo cambio en el intercepto o solo cambio en pendiente es mejor que el
modelo sin ningún cambio. Al igual que lo es el que tiene el cambio en ambos. No obstante el
modelo con cambio tanto en intercepto como en pendiente muestra coeficientes individualmente no
significativos para los parámetros asociados con las variables dummy. Esto hace que esta decisión no
sea fácil, pero claramente el modelo con cambio en pendiente e intercepto es mejor que los otros
tres.
412 Elementos de Estadística
Dependent variable:
Distancia_centro
Edad 0.526
(0.420)
Peso 0.004
(0.316)
Altura.desde.el.pie.descalzo −3.349
(9.159)
Altura_desde_zapato −0.865
(9.119)
Constant 530.369∗∗∗
(139.055)
Observations 38
R2 0.656
Adjusted R2 0.615
Residual Std. Error 37.030 (df = 33)
F Statistic 15.751∗∗∗ (df = 4; 33)
vif(R1)
## Edad Peso
## 1.126843 3.458461
## Altura.desde.el.pie.descalzo Altura_desde_zapato
## 282.611282 278.854402
# matriz X
XTX <- model.matrix(R1)
# se calculan los valores propios
e <- eigen(t(XTX) %*% XTX)
# se muestran los valores propios
e$val
414 Elementos de Estadística
## [1] 6724.666
Claramente las dos pruebas muestran un problema de multicolinealidad. En este caso la mejor opción
para corregir el problema es eliminar variables con V IF grande. En este caso.
R2 <- remueve.VIF.grande(R1, 4)
summary(R2)
##
## Call:
## lm(formula = myForm, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -91.029 -25.249 0.294 25.200 54.717
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 532.877125 137.104715 3.887 0.000448 ***
## Edad 0.557597 0.406456 1.372 0.179094
## Peso -0.008688 0.310512 -0.028 0.977842
## Altura_desde_zapato -4.178042 0.996501 -4.193 0.000186 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 36.55 on 34 degrees of freedom
## Multiple R-squared: 0.6549,Adjusted R-squared: 0.6244
## F-statistic: 21.5 on 3 and 34 DF, p-value: 5.46e-08
vif(R2)
Nota que para un análisis de los resultados, sería necesario eliminar las variables que no son
significativas.
9.1 El siguiente código permite realizar el experimento de Monte Carlo para una muestra de 20.
for (i in 1:N) {
# creación de variable explicativa
X2 <- matrix(rnorm(n), n, 1)
# creación de variable no significativa
X3 <- matrix(rnorm(n), n, 1)
# error homoscedástico
err <- rnorm(n)
# error heteroscedástico
herr <- (X2^2) * err
# variable explicativa sin heteroscedasticidad
y1 <- 1 + X2 * 7 + err
# variable explicativa con heteroscedasticidad
y2 <- 1 + X2 * 7 + herr
# estimación del modelo con homoscedasticidad
res.homo <- summary(lm(y1 ~ X2 + X3))
Ahora podemos replicar este resultado para los diferentes tamaños de muestra. ¿Qué concluyes?
set.seed(123)
# creamos un objeto nulo para guardar los coeficientes de x
x.estcoef <- NULL
# creamos un objeto nulo para guardar los coeficientes de z
z.estcoef <- NULL
15.9 Estimadores puntuales y sus propiedades deseadas 417
n = 50
N = 10000
for (i in 1:N) {
# Una variable explicativa
x <- matrix(rnorm(n), n, 1)
# Una variable explicativa no significativa
z <- matrix(rnorm(n), n, 1)
# error no.autocorrelacionado
err <- arima.sim(model = list(order = c(0, 0, 0)), n = n)
# error autocorrelacionado
Auto.err <- arima.sim(model = list(ar = 0.7), n = n)
Ahora, comparemos los resultados para el caso de un error no autocorrelacionado y uno si autocorre-
lacionado para la pendiente que acompaña a xi .
round(apply(x.estcoef, 2, mean), 2)
## x.cf.no.auto x.cf.auto
## 7 7
round(apply(x.estcoef, 2, sd), 2)
## x.cf.no.auto x.cf.auto
## 0.14 0.20
418 Elementos de Estadística
round(apply(z.estcoef, 2, mean), 2)
## z.cf.no.auto z.cf.auto
## 0 0
round(apply(z.estcoef, 2, sd), 2)
## z.cf.no.auto z.cf.auto
## 0.15 0.20
Los resultados son similares al caso de la variable que no debería estar en el modelo.
Por otro lado, miremos por un momento los histogramas de la distribución de los coeficientes
estimados.
1000
500
Frequency
Frequency
600
300
200
100
0
0
6.0 6.5 7.0 7.5 8.0 6.0 6.5 7.0 7.5 8.0
x.estcoef[, 1] x.estcoef[, 2]
Frequency
300
100
0
−1.0 −0.5 0.0 0.5 1.0 −1.0 −0.5 0.0 0.5 1.0
z.estcoef[, 1] z.estcoef[, 2]
11.2 Miremos lo que ocurre con la prueba de hipótesis individuales. Es decir, miremos que propor-
ción de veces se rechaza la hipótesis nula de que cada una de las pendientes es igual cero con y sin
autocorrelación. Y finalmente el efecto de emplear una corrección H.A.C para el caso de errores con
autocorrelación.
Usemos el mismo experimento del ejercicio anterior para ver esto, pero usemos una muestra de 500.
(tu podras reproducir este ejercicio para otros tamaños de muestra).
set.seed(123)
n = 500
N = 10000
# creamos un objeto nulo para guardar si se rechaza h0 o no
# para el coeficiente de z
420 Elementos de Estadística
library(sandwich)
library(AER)
library(lmtest)
for (i in 1:N) {
# Una variable explicativa
x <- matrix(rnorm(n), n, 1)
# Una variable explicativa no significativa
z <- matrix(rnorm(n), n, 1)
# error no.autocorrelacionado
err <- arima.sim(model = list(order = c(0, 0, 0)), n = n)
# error autocorrelacionado
Auto.err <- arima.sim(model = list(ar = 0.7), n = n)
# variable explicativa sin auto
y1 <- 1 + x * 7 + err
# variable explicativa con auto
y2 <- 1 + x * 7 + Auto.err
modelo.no.auto <- lm(y1 ~ x + z)
res.no.auto <- summary(modelo.no.auto)
x.rechaza[i, 1] <- res.no.auto$coefficients[2, 4] < 0.01
z.rechaza[i, 1] <- res.no.auto$coefficients[3, 4] < 0.01
str(x.rechaza)
apply(x.rechaza, 2, mean)
Los resultado muestran que independiente del método que se emplee en todos los casos se rechaza la
hipótesis nula correctamente.
str(z.rechaza)
apply(z.rechaza, 2, mean)
Ahora, noten que sin autocorrelación y empleando MCO, la proporción de veces que se rechaza
incorrectamente la nula de no significancia es aproximadamente 1 %. El nivel de significancia
seleccionado.
Noten que esto muestra que la solución de HCA mejora la inferencia en presencia de autcorrelación.
Ahora podemos replicar este resultado para los diferentes tamaños de muestra. ¿Qué concluyes?
11.3
Bibliografía
Alonso, J. C. & Gallo, B. E. (2013). The Day-of-the-Week Effect: The CIVETS Stock Markets Case.
Journal of Applied Business and Economics, 15(3), 102-116.
Alonso, J. C. & Hoyos, C. C. (2021). Introducción a los pronósticos con modelos estadístico de
series de tiempo para científico de datos (en R) (Universidad Icesi). Universidad Icesi.
Brown, C. (2012). dummies: Create dummy/indicator variables flexibly and efficiently [R package
version 1.5.6]. https://CRAN.R-project.org/package=dummies
Kaplan, J. (2020). fastDummies: Fast Creation of Dummy (Binary) Columns and Rows from Categori-
cal Variables [R package version 1.6.3]. https://CRAN.R-project.org/package=fastDummies
Hebbali, A. (2020). olsrr: Tools for Building OLS Regression Models [R package version 0.5.3].
https://CRAN.R-project.org/package=olsrr
Lumley, T. (2020). leaps: Regression Subset Selection [R package version 3.1]. https://CRAN.R-
project.org/package=leaps
Boisbunon, A., Canu, S., Fourdrinier, D., Strawderman, W. & Wells, M. T. (2013). AIC, Cp and
estimators of loss for elliptically symmetric distributions. arXiv preprint arXiv:1308.2766.
Orestes Cerdeira, J., Duarte Silva, P., Cadima, J. & Minhoto, M. (2020). subselect: Selecting Variable
Subsets [R package version 0.15.2]. https://CRAN.R-project.org/package=subselect
Lê, S., Josse, J. & Husson, F. (2008). FactoMineR: A Package for Multivariate Analysis. Journal of
Statistical Software, 25(1), 1-18. https://doi.org/10.18637/jss.v025.i01
Fernandes, K., Vinagre, P. & Cortez, P. A proactive intelligent decision support system for predicting
the popularity of online news. En: Portuguese Conference on Artificial Intelligence. Springer.
2015, 535-546.
Alonso Cifuentes, J. C. (2020). Una introducción a la construcción de WordClouds (para economis-
tas) en R. Economics Lecture Notes, (9), 1-28. https://www.researchgate.net/publication/
341829699{\_}Una{\_}introduccion{\_}a{\_}la{\_}construccion{\_}de{\_}Word{\_
}Clouds{\ _ }para{\ _ }economistas{\ _ }en{\ _ }R ? {\ _ }iepl{\ % }5BgeneralViewId{\ %
}5D=PwwN9ec12trGshLXbTmdGhXQLqIJ1urkKSpa{\&}{\_}iepl{\%}5Bcontexts{\%
}5D{\%}5B0{\%}5D=searchReact{\&}{\_}iepl{\%}5BviewId{\%}5D=TVBJNIFXsU0gc
Grömping, U. (2006). Relative Importance for Linear Regression in R: The Package relaimpo.
Journal of Statistical Software, 17(1), 1-27.
Long, J. A. (2020). jtools: Analysis and Presentation of Social Scientific Data [R package version
2.1.0]. https://cran.r-project.org/package=jtools
Hair, J. F. J., Black, W. C., Babin, B. J. & Anderson, R. E. (2014). Multivariate Data Analysis
(7.a ed.). Pearson.
Sheather, S. (2009). A modern approach to regression with R. Springer Science & Business Media.
Kutner, M. H.; Nachtsheim, C. J.; Neter, J. (2004). Applied Linear Regression Models (4 th).
McGraw-Hill Irwin.
Belsley, D. A., Kuh, E. & Welsch, R. E. (1980). Regression Diagnostics: Identifying Influential Data
and Sources of Collinearity. John Wiley & Sons, Inc. https://doi.org/10.1002/0471725153
Cule, E. & De Iorio, M. (2012). A semi-automatic method to guide the choice of ridge parameter in
ridge regression. arXiv preprint arXiv:1205.0686, 1-32. http://arxiv.org/abs/1205.0686
Alonso, J. C. (2020). Herramientas del Business Analitycs en R : Análisis de Componentes Principa-
les para resumir variables. Economics Lecture Notes, (10), 1-32. https://www.researchgate.
BIBLIOGRAFÍA 425
net/publication/341829708{\_}Herramientas{\_}del{\_}Business{\_}Analitycs{\_}en{\_
}R{\_}Analisis{\_}de{\_}Componentes{\_}Principales{\_}para{\_}resumir{\_}variables
Bernat, L. F. (2004). Diferencias Salariales por Género en las siete principales áreas metropolitanas
Colombianas. ¿Evidencia de Discriminación? Investigaciones sobre género y desarrollo en
Colombia, (1).
Oaxaca, R. (1973). Male-Female Wage Differentials in Urban Labor Markets. International Econo-
mic Review, 14(3), 693-709.
Fox, J. & Weisberg, S. (2019). An R Companion to Applied Regression (Third). Sage. https : / /
socialsciences.mcmaster.ca/jfox/Books/Companion/
Cule, E., Moritz, S. & Frankowski, D. (2021). ridge: Ridge Regression with Automatic Selection of
the Penalty Parameter [R package version 2.9]. https://CRAN.R-project.org/package=ridge
Auguie, B. (2017). gridExtra: Miscellaneous Functions for “Grid” Graphics [R package version
2.3]. https://CRAN.R-project.org/package=gridExtra
Breusch, T. S. & Pagan, A. R. (1979). A Simple Test for Heteroscedasticity and Random Coefficient
Variation. Econometrica, 47(5), 1287-94.
Koenker, R. (1981). A note on studentizing a test for heteroscedasticity. Journal of Econometrics,
17(1), 107-112.
White, H. (1980). A Heteroskedasticity-Consistent Covariance Matrix Estimator and a Direct Test
for Heteroskedasticity. Econometrica, 48(4), 817-38.
Davidson, Russell and MacKinnon, J. (1993). Estimation and inference in econometrics. Oxford
University Press.
Cribari-Neto, F. (2004). Asymptotic inference under heteroskedasticity of unknown form. Compu-
tational Statistics & Data Analysis, 45(2), 215-233.
Long, J. & Ervin, L. (2000). Using Heteroscedasticity Consistent Standard Errors in the Linear
Regression Model. The American Statistician, 54(3), 217-224. http://amstat.tandfonline.
com/doi/abs/10.1080/00031305.2000.10474549
Zeileis, A. & Hothorn, T. (2002). Diagnostic Checking in Regression Relationships. R News, 2(3),
7-10. https://CRAN.R-project.org/doc/Rnews/
Alonso, J. C. & Montenegro, S. (2015). Estudio de Monte Carlo para comparar 8 pruebas de
normalidad sobre residuos de mínimos cuadrados ordinarios en presencia de procesos
autorregresivos de primer orden. Estudios Gerenciales, 31(In press), 253-265. https://doi.
org/10.1016/j.estger.2014.12.003
Shapiro, S. S. & Francia, R. S. (1972). An approximate analysis of variance test for normality.
Journal of the American Statistical Association, 67(337), 215-216. http://amstat.tandfonline.
com/doi/abs/10.1080/01621459.1972.10481232
Kolmogorov, A. N. (1933). Sulla determinazione empirica di una legge di distribuzione. G. Ist.
Attuari, 89-91.
Cramér, H. (1928). On the composition of elementary errors: First paper: Mathematical deductions.
Scandinavian Actuarial Journal, 1, 13-74.
Anderson, T. & Darling, D. (1952). Asymptotic theory of certain “goodness of fit” criteria based on
stochastic processes. The annals of mathematical statistics, 23, 193-212. http://www.jstor.
org/stable/2236446
426 BIBLIOGRAFÍA
Waldman, D. M. (1983). A note on algebraic equivalence of White’s test and a variation of the
Godfrey/Breusch-Pagan test for heteroscedasticity. Economics Letters, 13(2-3), 197-200.
Farrar, T. J. (2020). skedastic: Heteroskedasticity Diagnostics for Linear Regression Models [R
Package Version 1.0.0]. Bellville, South Africa. https://github.com/tjfarrar/skedastic
Zeileis, A. (2004). Econometric Computing with HC and HAC Covariance Matrix Estimators.
Journal of Statistical Software, 11(10), 1-17. https://doi.org/10.18637/jss.v011.i10
Jarque, C. & Bera, A. (1987). A test for normality of observations and regression residuals. Interna-
tional Statistical Review, 55(2), 163-172. http://www.jstor.org/stable/1403192
Trapletti, A. & Hornik, K. (2019). tseries: Time Series Analysis and Computational Finance [R
package version 0.10-47.]. https://CRAN.R-project.org/package=tseries
Wald, A. & Wolfowitz, J. (1940). On a Test Whether Two Samples are from the Same Population.
The Annals of Mathematical Statistics, 11(2), 147-162.
Durbin, J. & Watson, G. S. (1951). Testing for Serial Correlation in Least Squares Regression. II.
Biometrika, 38(1-2), 159-178.
Durbin, J. (1970). Testing for Serial Correlation in Least-Squares Regression When Some of the
Regressors are Lagged Dependent Variables. Econometrica, 38(3), 410-21.
Box, G. E. P. & Pierce, D. A. (1970). Distribution of Residual Autocorrelations in Autoregressive-
Integrated Moving Average Time Series Models. Journal of the American Statistical Asso-
ciation, 65(332), 1509-1526.
Ljung, G. M. & Box, G. E. P. (1979). The Likelihood Function of Stationary Autoregressive-Moving
Average Models. Biometrika, 66(2), 265-270.
Breusch, T. S. (1978). Testing for Autocorrelation in Dynamic Linear Models. Australian Economic
Papers, 17(31), 334-55.
Godfrey, L. G. (1978). Testing against General Autoregressive and Moving Average Error Models
When the Regressors Include Lagged Dependent Variables. Econometrica, 46(6), 1293-1301.
Newey, W. K. & West, K. D. (1987). A Simple , Positive Semi-Definite , Heteroskedasticity and
Autocorrelation Consistent Covariance Matrix. Econometrica, 55(3), 703-708.
Hyndman, R. J. & Khandakar, Y. (2008). Automatic time series forecasting: the forecast package for
R. Journal of Statistical Software, 26(3), 1-22. http://www.jstatsoft.org/article/view/v027i03
Wickham, H. & Bryan, J. (2019). readxl: Read Excel Files [R package version 1.3.1]. https :
//CRAN.R-project.org/package=readxl
Bansal, G. (2021). ecm: Build Error Correction Models [R package version 6.3.0]. https://CRAN.R-
project.org/package=ecm
Andrews, D. (1991). Heteroskedasticity and autocorrelation consistent covariant matrix estimation.
Econometrica, 59(3), 817-858.
Lumley, T. & Heagerty, P. (1999). Weighted empirical adaptive variance estimators for correlated
data regression. Journal of the Royal Statistical Society: Series B (Statistical Methodology),
61(2), 459-477.
Durbin, J. & Watson, G. S. (1950). Testing for Serial Correlation in Least Squares Regression. I.
Biometrika, 37(3-4), 409-428.
Durbin, J. & Watson, G. S. (1971). Testing for serial correlation in least squares regression.III.
Biometrika, 58(1), 1-19.
BIBLIOGRAFÍA 427
Swed, F. S. & Eisenhart, C. (1943). Tables for Testing Randomness of Grouping in a Sequence of
Alternatives. The Annals of Mathematical Statistics, 14(1), 66-87.
Durbin, J. (1960). Estimation of Parameters in Time-Series Regression Models. Journal of the Royal
Statistical Society, 22(1), 139-153.
Kuhn, M. (2020). caret: Classification and Regression Training [R package version 6.0-86]. https:
//CRAN.R-project.org/package=caret
Davison, A. C. & Hinkley, D. V. (1997). Bootstrap methods and their application. Cambridge
university press.
Redmond, M. & Baveja, A. (2002). A data-driven software tool for enabling cooperative information
sharing among police departments. European Journal of Operational Research, 141(3),
660-678.
Alonso, J. C. (2006b). Apuntes de álgebra matricial para un curso introductorio de econometría.
Apuntes de economía; No. 11-2006.
Chiang, A. (1996). Métodos fundamentales de economía.
Alonso, J. C. (2007). APUNTES DE ESTADÍSTICA PARA UN CURSO INTRODUCTORIO DE
ECONOMETRÍA. Apuntes de Economía, (12).
Amemiya, T. (1994). Introduction to statistics and econometrics. Harvard University Press.
Índice alfabético
Analítica plot_summs(), 40
descriptiva, 16 read.csv(), 26
diagnóstica, 16, 24, 34, 46
predictiva, 16, 24 LDA, 25
prescriptiva, 17
Modelo
Aporte relativo, 37
econométrico, 18
Aprendizaje
Métricas de bondad de ajuste, 32
no supervisado, 12, 13
supervisado, 12, 14 Palabra vacía, 25
Business analytics, 10 Paquete
jtools, 40
Coeficientes relaimpo, 35
estandarizados, 34 Predicción, 17
Comparación de modelos Pronóstico, 17
no anidados, 30, 31 Prueba
Criterio de Información J, 31
Bayesiano, 32
de Akaike, 32 Regresión
stepwise backward, 26, 28
Data Generating Process (DGP), 19 stepwise forward, 26, 27
stepwise forward y backward, 26, 29
Econometría, 15, 17 Ruta analítica, 26
detección de excepciones, 13
encontrar asociaciones, 13
estimar regresiones, 13
pronosticar, 14
resumir, 11
visualización, 11
Tareas en la analítica, 11
Trampa de las variables dummy, 27
Variable
accionable, 24, 34, 40
más importante, 34
no accionable, 40