Normalidad


Continuaremos con el ejemplo de los datos de la compañía Toluca.

Linealidad y homocedasticidad

Para ello

library(latex2exp)

# Cargamos la librería con los datos
library(ALSM)

# Guardamos los datos
Datos = TolucaCompany

# Realizamos el ajuste del modelo
fit=lm(y~x, data=Datos)

# Graficamos el scatterplot inicial
par(mfrow=c(1,1)) 
par(mar=c(4, 5, 1, 1))
plot(Datos$x, Datos$y, xlab = TeX("$x$"), ylab=TeX("$y$") )
abline(fit, col="red")

Después revisamos los supuestos de linealidad y homocedasticidad utilizando las gráficas que trae por defecto R

#Gráficas 
par(mar=c(4, 5, 1, 1))
par(mfrow=c(1,2))

# Linealidad
plot(fit, 1)

# Homocedasticidad 
plot(fit, 3)

de donde no tenemos problema con la linealidad (y que en ejemplos anteriores habíamos indagado con más profundidad) ni problemas de homocedasticidad (a pesar de la curva que puede verse).

Normalidad

Recordemos que para analizar el supuesto de la normalidad tenemos dos casos

  1. Si \(n\) es grande, efectuamos:

    • Q-Q plot de la distribución normal
    • Pruebas de hipótesis que contrastan: \[ H_{0}: e_{st_{1}},\ldots,e_{st_{n}}\ \ \textrm{provienen de una normal vs} \ \ H_{a}: e_{st_{1}},\ldots,e_{st_{n}}\ \ \textrm{no provienen de una normal} \] donde se espera no rechazar \(H_{0}\).
  2. Si \(n\) es pequeña, se sugiere probar la normalidad con \(e_{st}\) , aunque también se sugiere realizar una Q-Q plot de una distribución \(t_{n-3}\) (se espera que los puntos caigan sobre la diagonal) y realizar la prueba de Kolmogorov-Smirnov que contrasta

    \[ H_{0}: e_{st_{1}},\ldots,e_{st_{n}}\ \ \textrm{provienen de una}\ \ t_{n-3}\ \ vs \ \ H_{a}: e_{st_{1}},\ldots,e_{st_{n}}\ \ \textrm{no provienen} \ \ t_{n-3} \] se espera no rechazar \(H_{0}\)

Considerando el caso para la \(n\) grande

Comencemos trabajando con el caso en que la \(n\) es grande (a pesar que la \(n\) de los datos no es tan grande)

#gráfica Q-Q plot directa de R

par(mar=c(4, 5, 1, 1))
par(mfrow=c(1,1))
plot(fit, 2)

donde podemos notar que los puntos caen sobre la diagonal, lo cual es justo lo que buscamos, teniendo así que no se encuentra evidencia en contra de la normalidad. Procedemos después a realizar las pruebas de hipótesis, donde

# Utilizamos la librería broom para calcular los errores de forma automática
library(broom)

# Guardamos los errores en columnas de nuestro dataframe de los datos 
Datosfit=augment(fit)

para después

shapiro.test(Datosfit$.std.resid)
## 
##  Shapiro-Wilk normality test
## 
## data:  Datosfit$.std.resid
## W = 0.97861, p-value = 0.8563

donde no se está rechazando \(H_{0}\), es decir, no se está encontrando evidencia en contra de la normalidad; utilizamos el paquete nortest el cual contiene muchas pruebas para analizar el supuesto de la normalidad, en el curso sólo se utilizará la lillie pues es una variante de la prueba de Kolmogorov-Smirnov

library(nortest)
nortest::lillie.test(Datosfit$.std.resid)
## 
##  Lilliefors (Kolmogorov-Smirnov) normality test
## 
## data:  Datosfit$.std.resid
## D = 0.097207, p-value = 0.7851

tampoco se está rechazando \(H_{0}\). Y finalmente

library(normtest)
normtest::jb.norm.test(Datosfit$.std.resid)
## 
##  Jarque-Bera test for normality
## 
## data:  Datosfit$.std.resid
## JB = 0.73341, p-value = 0.5975

en la cual también se está rechazando \(H_{0}\). En cualquiera de las pruebas estamos rechazando \(H_{0}\) por lo que no encontramos evidencia, en este caso, en contra de la mormalidad.

Considerando el caso para la \(n\) pequeña

Comenzamos por obtener los errores studentizados

library(MASS)
ResStudent=studres(fit)

y después graficamos la Q-Q plot

# Gráfica que trae por defecto R
qqPlot(ResStudent, dist="t", df=length(ResStudent)-3,  envelope=FALSE)

## [1] 21 10

Analizando dist="t", df=length(ResStudent)-3 tenemos que dist indica la distribución, que en nuestro caso es la \(t\), en df especificamos los grados de libertad (\(n-3\)) y en envelope nos muestra una prueba de hipótesis (que por lo general no nos interesará mirar).

Procedemos después a relizar la prueba de Kolmogorov-Smirnov

ks.test(ResStudent, "pt", length(ResStudent)-3)
## 
##  One-sample Kolmogorov-Smirnov test
## 
## data:  ResStudent
## D = 0.096752, p-value = 0.9556
## alternative hypothesis: two-sided
# pt indica la distribución. Si quisieramos hacer la prueba sobre una 
# distribución normal usaríamos pn

en la cual no se está rechazando \(H_{0}\). En conjunto con la Q-Q plot mostrada y la prueba de hipótesis anterior, podemos ver nuevamente que no se presenta evidencia en contra de la normalidad.