Documentos de Académico
Documentos de Profesional
Documentos de Cultura
regresión lineal
Contenido
1. Introduccion
2. Análisis de residuales
2.1. Definición de residuales
2.2. Métodos para escalar residuales
2.3. Gráficas de residuales
1. Introducción
Las principales premisas que se han hecho hasta ahora al estudiar el análisis de regresión son las
siguientes:
1. 𝑦
La relación entre la respuesta y los regresores es lineal, al menos en forma aproximada.
2. 𝜀
El término de error tiene media cero.
3. 𝜀
El término de error tiene varianza 𝜎2 constante.
4. Los errores no están correlacionados.
5. Los errores tienen distribución normal.
2. Análisis de Residuales
𝑒𝑖 = 𝑦𝑖 − 𝑦𝑖̂
Se definen los residuales de la siguiente forma:
El análisis de los residuales es una forma eficaz de descubrir diversos tipos de inadecuación del modelo.
Los residuales tienen varias propiedades importantes. Tienen media cero, y su varianza promedio
aproximada se estima con:
𝑛 𝑛
∑𝑖=1(𝑒𝑖 − 𝑒¯)2 𝑖=1∑ 𝑒2𝑖 𝑆𝑆
=
𝑛−𝑝 𝑛−𝑝 𝑛−𝑝 = 𝑅𝑒𝑠 = 𝑀 𝑆𝑅𝑒𝑠
Sin embargo, los residuales no son independientes, ya que los 𝑛 residuales sólo tienen 𝑛 − 𝑝 grados de
libertad asociados a ellos. Esta no independencia de los residuales tiene poco efecto en su aplicación para
comprobar la adecuación del modelo, siempre y cuando 𝑛 no sea pequeña en relación con la cantidad de
parámetros 𝑝.
NOTA: Una cosa son los residuales 𝑒𝑖 y otra muy diferente los errores 𝜀𝑖 , este último proviene del modelo
de regresión lineal 𝑌 = 𝑋𝛽 + 𝜀 .
Si se usa el 𝑀𝑆𝑅𝑒𝑠 𝑖 𝑒𝑖
como la varianza del -ésimo residual sólo se tendrá una aproximación. Se puede
𝑒𝑖 𝑖
mejorar el escalamiento de residuales dividiendo entre la desviación estándar exacta del -ésimo
residual. Recuerdese que el vector de los residuales se puede escribir como sigue:
𝑒 = (𝐼 − 𝐻)𝑦
𝐻 = 𝑋(𝑋 ′𝑋)−1 es la matriz sombrero. Esta matriz tiene varias propiedades utiles. Es simetrica
en donde
(𝐻 = 𝐻) . De forma parecida 𝐼 − 𝐻 es simétrica e idempotente.
′
𝑒 = (𝐼 − 𝐻)(𝑋𝛽 + 𝜀)′ = 𝑋𝛽 − 𝐻𝑋𝛽 + (𝐼 − 𝐻)𝜀
= 𝑋𝛽 − 𝑋(𝑋 𝑋) 𝑋 𝑋𝛽 + (𝐼 − 𝐻)𝜀 = (𝐼 − 𝐻)𝜀
′ −1
Por lo anterior, los residuales son la misma transformación lineal de las observaciones y y los errores 𝜀
𝑉𝑎𝑟(𝑒) = 𝑉𝑎𝑟[(𝐼 − 𝐻)𝜀] = (𝐼 − 𝐻)𝑉𝑎𝑟(𝜀)(𝐼 − 𝐻 )′ = 𝜎 2 (𝐼 − 𝐻)
porque 𝑉𝑎𝑟(𝜀) = 𝜎 2 𝐼 , e 𝐼 − 𝐻 es simétrica e idempotente. En general, la matriz 𝐼 − 𝐻 no es diagonal,
por lo que los residuales tienen distintas varianzas, y están correlacionados.
𝑖
La varianza del -ésimo residual es
𝑉𝑎𝑟(𝑒𝑖 ) = 𝜎 2 (1 − ℎ𝑖𝑖)
Las violaciones de las premisas del modelo están, con más probabilidad, en los puntos remotos, y pueden
𝑒𝑖
ser difíciles de detectar por inspección de los residuales ordinarios (o los residuales ordinarios ),𝑑𝑖
porque en general sus residuales serán menores.
Los residuales estandarizados y los estudentizados son efectivos para detectar valores atípicos. Otro
𝑦𝑖 − 𝑦(̂ 𝑖) 𝑦(̂ 𝑖)
método para hacer que los residuales sean útiles en la determinación de valores atípicos, consiste en
examinar la cantidad que se calcula partiendo de , siendo 𝑖
el valor ajustado de la -ésima
𝑖
respuesta, basado en todos las observaciones excepto esa -ésima. La lógica de este método es que si la
𝑖-ésima observación 𝑦𝑖
realmente es atípica, el modelo de regresión basado en todas las observaciones
𝑖
𝑦(̂ 𝑖)
estará demasiado influido por esta observación. Sin embargo, si se elimina la -ésima observación,
entonces no puede estar influido por esa observación, así que el residual que resulte probablemente
indique la presencia del valor atípico.
𝑖
Si se elimina la -ésima observación, se ajusta el modelo de regresión a las 𝑛−1
observaciones restantes,
𝑦𝑖
y se calcula el valor predicho de , correspondiente a la observación omitida, el error de predicción
𝑒(𝑖) = 𝑦𝑖 − 𝑦(̂ 𝑖)
correspondiente es:
𝑒(𝑖) = 1 −𝑒𝑖ℎ𝑖𝑖
𝑉𝑎𝑟[𝑒(𝑖) ] = 𝑉𝑎𝑟 [ 1 −𝑒𝑖ℎ𝑖𝑖 ] = (1 −1ℎ𝑖𝑖)2 [𝜎 2 (1 − ℎ𝑖𝑖)] = 1 −𝜎 ℎ𝑖𝑖
2
La parte (a) es el gráfico ideal, el gráfico (b) presenta distribución con colas gruesas, el gráfico (c) presenta
distribución con colas delgadas, el gráfico (d) presenta asimetría positiva y el gráfico (e) presenta asimetría
negativa.
Gráfica de residuales en función de los valores ajustados 𝑦𝑖̂
Las distribuciones en las partes (b) y (c) indican que la varianza de los errores no es constante. La figura de
embudo abierto hacia afuera en la parte (b) implica que la varianza es función creciente de y. La
distribución en doble arco en la parte (c) se presenta con frecuencia cuando y es proporción entre 0 y 1. El
método común para manejar la no constancia de la varianza es aplicar una transformación adecuada ya
sea a la variable regresora o a la de respuesta.
Gráfica de residuales en el tiempo
Para detectar la presencia de la autocorrelación suelen ser útiles las gráficas residuales. La presentación
más adecuada es la de los residuales en función del tiempo. Si hay autocorrelación positiva, los residuales
de igual signo se presentarán en grupos, que indica que no hay los suficientes cambios de signo en la
secuencia de los residuales. Por otra parte, si hay autocorrelación negativa, los residuales cambiarián de
signo con demasiada rapidez.
Para detectar la presencia de la autocorrelación se pueden aplicar diversas pruebas estadísticas. La que
desarrollaron Durwin-Watson se usa ampliamente, ya que se basa en la hipotesis de que los errores del
modelo de regresión se generan en un proceso autorregresivo de primer orden, que se observa a intervalos
de tiempo igualmente espaciados, esto es,
𝜀𝑡 = 𝜌𝜀𝑡−1 + 𝑎𝑡
Como la mayor parte de los problemas de regresión donde intervienen las series de tiempo tienen
autocorrelación positiva, las hipotesis que se suelen considerar en la prueba de Durwin-Watson son:
𝐻0 : 𝜌 = 0
𝐻1 : 𝜌 > 0
El estadístico de prueba es
𝑛
∑ (𝑒𝑡 − 𝑒𝑡−1 )2
𝑖=2
𝑑= 𝑛
∑𝑡=1 𝑒2𝑡
La distribución de 𝑑 depende de la matrix 𝑋, sin embargo, Durwin-Watson demostraron que 𝑑 está entre
dos cotas, digamos que 𝑑𝐿 y 𝑑𝑈 . EL procedimiento de decisión es el siguiente:
Si 𝑑 < 𝑑𝐿 rechazar 𝐻0 : 𝜌 = 0
Si 𝑑 > 𝑑𝑈 no rechazar 𝐻0 : 𝜌 = 0
Si 𝑑𝐿 ≤ 𝑑 ≤ 𝑑𝑈 la prueba no es concluyente
Ejemplo:
In [1]: options(warn = -1)
suppressMessages(library(MPV))
suppressMessages(library(tidyverse))
suppressMessages(library(GGally))
suppressMessages(library(qpcR))
suppressMessages(library(tseries))
suppressMessages(library(nortest))
suppressMessages(library(lmtest))
suppressMessages(library(ggpubr))
suppressMessages(library(corrplot))
suppressMessages(library(forecast))
suppressMessages(library(stargazer))
suppressMessages(library(regclass))
suppressMessages(library(mctest))
suppressMessages(library(car))
suppressMessages(library(olsrr))
options(warn = 0)
options(repr.plot.width = 9, repr.plot.height = 5)
A data.frame: 6 × 3
1 16.68 7 560
2 11.50 3 220
3 12.03 3 340
4 14.88 4 80
5 13.75 6 150
6 18.11 7 330
In [3]: ggpairs(data, lower = list(continuous = 'smooth'))
In [5]: summary(model.reg)
Call:
lm(formula = TIEMPO ~ CANTIDAD + DISTANCIA, data = data)
Residuals:
Min 1Q Median 3Q Max
-5.7880 -0.6629 0.4364 1.1566 7.4197
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 2.341231 1.096730 2.135 0.044170 *
CANTIDAD 1.615907 0.170735 9.464 3.25e-09 ***
DISTANCIA 0.014385 0.003613 3.981 0.000631 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Modelo Estimado
===============================================
Dependent variable:
---------------------------
TIEMPO
-----------------------------------------------
CANTIDAD 1.616***
(0.171)
DISTANCIA 0.014***
(0.004)
Constant 2.341**
(1.097)
-----------------------------------------------
Observations 25
R2 0.960
Adjusted R2 0.956
Residual Std. Error 3.259 (df = 22)
F Statistic 261.235*** (df = 2; 22)
===============================================
Note: *p<0.1; **p<0.05; ***p<0.01
========================
2.5 % 97.5 %
------------------------
(Intercept) 0.067 4.616
CANTIDAD 1.262 1.970
DISTANCIA 0.007 0.022
------------------------
.........10.........20.....
A data.frame: 25 × 8
In [12]: mean(tii)
sd(tii)
0.0534050722399188
1.27582672010531
In [13]: histograma <- ggplot(data = NULL,aes(x = tii,y = ..density..)) + theme_classic() +
geom_histogram(bins=20) + geom_density(col = 'red',size = 2)
cajas <- ggplot(data = NULL,aes(x = tii)) + theme_classic()+ geom_boxplot() + coord_flip
ggarrange(histograma,cajas,ncol = 2, nrow = 1)
data: tii
X-squared = 16.789, df = 2, p-value = 0.0002261
data: tii
W = 0.87013, p-value = 0.004352
data: tii
D = 0.17378, p-value = 0.3919
alternative hypothesis: two-sided
data: tii
D = 0.17582, p-value = 0.04478
In [17]: #ols_test_normality(model.reg)
ols_test_normality(tii)
-----------------------------------------------
Test Statistic pvalue
-----------------------------------------------
Shapiro-Wilk 0.8701 0.0044
Kolmogorov-Smirnov 0.1758 0.3779
Cramer-von Mises 1.8002 0.0000
Anderson-Darling 1.0164 0.0092
-----------------------------------------------
Varianza constante
In [18]: ggplot(data=data) +
theme_classic() +
geom_point(aes(y.ajustado,tii), col = 'navy', size = 3) +
geom_hline(yintercept = c(0,3,-3), col = c('black', 'red', 'red')) +
scale_y_continuous(expand=c(0.05,0.5), limits = c(-4,6)) +
labs(title = 'GRÁFICO DE VALORES AJUSTADOS VS RESIDUOS',
x = 'Valores Ajustados',
y = 'Residuos Estundentizados') +
theme(axis.title = element_text(size = 20),
plot.title = element_text(hjust = 0.5, size = 15),
text = element_text(size=10))
data: model.reg
BP = 11.988, df = 2, p-value = 0.002493
Se rechaza 𝐻0
Independencia de los errores
In [20]: ggplot(data=data) +
theme_classic() +
geom_point(aes(c(1:nrow(data)),tii), col = 'navy', size = 3) +
geom_line(aes(c(1:nrow(data)),tii),col = 'navy') +
geom_hline(yintercept = 0, col = 'black') +
scale_y_continuous(limits = c(-3.5,6)) +
labs(title = 'GRÁFICO DE VALORES AJUSTADOS VS TIEMPO',
x = 'Orden',
y = 'Residuos Estundentizados') +
theme(axis.title = element_text(size = 9),
plot.title = element_text(hjust = 0.5, size = 9),
text = element_text(size=8))
Test de Durbin-Watson
Durbin-Watson test
data: model.reg
DW = 1.1696, p-value = 0.01202
alternative hypothesis: true autocorrelation is greater than 0
Test de Breush-Godfrey
𝐻0 : Los errores son independientes
𝐻1 : Los errores están correlacionados
In [25]: bgtest(model.reg,order = 1)
data: model.reg
LM test = 3.4136, df = 1, p-value = 0.06466
No se rechaza 𝐻0
In [26]: autoplot(acf(tii,plot=FALSE))+ theme_classic() + labs(title = 'Autocorrelación de los ti
Multicolinealidad
In [20]: imcdiag(model.matrix(model.reg)[,-1],model.reg$model[1],method='VIF')
Call:
imcdiag(x = model.matrix(model.reg)[, -1], y = model.reg$model[1],
method = "VIF")
VIF detection
CANTIDAD 3.1185 0
DISTANCIA 3.1185 0
===================================
In [25]: options(repr.plot.width = 6,repr.plot.height = 5)
mc.plot(model.matrix(model.reg)[,-1],model.reg$model[1],vif=2.5)