Introducción

En esta unidad se iniciará con el concepto de correlación lineal para variables cuantitativas, luego se revisarán los conceptos y métodos de estimación de la regresión lineal simple y el modelo múltiple, la inferencia sobre el modelo, interpretación de los coeficientes y la validación de supuestos del modelo.

Para el ejercicio práctico, se trabajá con la librería stats y una primera base de datos que tiene datos simulados sobre: porcentaje de personas con enfermedad cardiaca (heart.disease), porcentaje de personas que usa la bicicleta como medio de transporte (biking) y porcentaje de personas que fuman (smoking) en una muestra de 498 ciudades independientes.

1. Correlación lineal

Cuando se quiere cuantificar la relación que tienen dos variables cuantitativas existen varios indicadores que permiten establecer si existe o no correlación y la magnitud de esta. El indice de correlación de Pearson, determina que tan relacionadas están dos variables en términos lineales, es decir, que tan alineadas es su relación respecto a una recta. Este índice se calcula a través de la covarianza, la cual mide que tan alejadas están el par de observaciones en \(x\) y \(y\) respecto a sus respectivos promedios, sin embargo, esta es una medida que arroja valores en las unidades de medida de las variables, es por esto que se realiza una estandarización a través de la desviación estándar de las variables \(x\) y \(y\). El indice se calcula de la siguiente forma:

\(r_{xy}=\frac{S_{xy}}{S_{x}S_{y}},\)

donde: \(S_{xy}\) es la covarianza entre \(x\) y \(y\), \(S_{x}\) y \(S_{y}\) es la desviación estándar de \(x\) y \(y\), respectivamente. Este indicador tiene una escala entre -1 y 1, entre más cercano a -1 o 1, indica que la relación es fuerte y está alineada exactamente sobre una recta, si es negativa la relación es inversa (recta con pendiente negativa), si es positiva (recta con pendiente positiva).

2. Regresión Lineal simple

Tenemos un par de observaciones \((x_i, y_i)\), para \(i = 1, 2, \ldots n\), donde \(n\) es el tamaño de la muestra seleccionada. El indice \(i\) se utiliza por notación, para determinar que esa variable denotada por la letra \(x\) o \(y\) toma diferentes valores de acuerdo a la variación de \(i\). A \(x_i\) la llamaremos la variable predictora o explicativa, la cual ayuda a predecir o explicar de la respuesta o variable predicha \(y_i\). En el caso del modelo simple, se tiene una sola variable explicativa, pero luego se ampliará a un modelo múltiple donde se tienen varias \(x\).

Al modelar la relación entre \(X\) and \(Y\), se utilizará una función de la siguiente forma:

\[ Y = f(X) + \epsilon. \]

donde \(f\) describe la relación funcional entre dos variables y \(\epsilon\) determina el error, dado que este es un modelo estocástico, no exacto, es decir, al ingresar un valor de \(x\) al modelo, este estima el valor \(y\) con cierta cantidad de error. La función \(f\) puede ser de cuaquier forma, en este módulo se va a restringuir a una función lineal. El modelo queda de la siguiente forma:

\[ Y = \beta_0 + \beta_1 X + \epsilon. \]

donde \(\beta_0\) es el intercepto y \(\beta_1\) es la pendiente. Teniendo en cuenta además que,

\[ \epsilon_i \sim N(0, \sigma^2). \] Es decir, que \(\epsilon_i\) son variables aleatorias normales independientes e idénticamente distribuidas con media \(0\) y varianza \(\sigma^2\). Este modelo tiene 3 parámetros a ser estimados: \(\beta_0\), \(\beta_1\), y \(\sigma^2\).

Nota: En términos de notación, tener en cuenta que las letras en mayúscula indican variables aleatorias, \(Y\), y minúscula un valor potencial para una variable aleatoria. Cómo tenemos \(n\) observaciones, vamos a tener \(n\) variables aleatorias \(Y_i\) y sus posibles valores \(y_i\).

La variable respuesta \(Y_i\) es una variable aleatoria debido al comportamiento aleatorio del error \(\epsilon_i\), cada respuesta \(Y_i\) está enlazada a un valor observable \(x_i\) y a un valor aleatorio no observable \(\epsilon_i\). Es decir, \(Y_i\) tiene una distribución condicional dependiente del valor de of \(X_i\).

\[ Y_i \mid X_i \sim N(\beta_0 + \beta_1 x_i, \sigma^2) \] Cómo \(Y_i\) es una función de \(x_i\), entonces podemos escribir su media (valor esperado) como una función de \(x_i\),

\[ \text{E}[Y_i \mid X_i = x_i] = \beta_0 + \beta_1 x_i. \]

Sin embargo, su varianza se mantiene constante,

\[ \text{Var}[Y_i \mid X_i = x_i] = \sigma^2. \] En la siguiente imagen podemos ver que para un valor dado \(x\), el valor esperado de \(Y\) es \(\beta_0 + \beta_1 x\). Cada valor de \(x\), \(Y\) tienen la misma varianza \(\sigma^2\).

Modelo de regresión lineal simple

Supuestos del modelo de regresión Lineal

  • La relación entre \(Y\) y \(x\) es lineal con la forma \(\beta_0 + \beta_1 x\).
  • Los errores \(\epsilon\) son independientes.
  • Los errores \(\epsilon\) se distribuyen normal.
  • Para cada valor de \(x\), la varianza de \(Y\) es la misma, \(\sigma^2\).

Además, no se supone ninguna distribución de probabilidad sobre \(X\) dado que se asume que son fijos, no aletorios.

2.1 Métodos de estimación para los coeficientes

Los modelos de regresión lineal (RL), definen a \(Y\) como una función de \(X\), pero la pregunta que surge es cómo definimos una buena linea recta?, dado que por un conjunto de puntos \((x,y)\) pueden pasar varias rectas. La respuesta está en tratar de encontrar la recta que tenga la menor suma de errores, entendiendo el error cómo la diferencia entre los valores observados y los estimados o predichos por el modelo \((y_i - \hat{y})\), ver imagen.

Residuales en un Modelo de regresión lineal simple

Mínimos Cuadrados Ordinarios

Para determinar los valores para los \(betas\) en el modelo de regresión, existen varios métodos de estimación. En regresión lineal uno de los más usados es el de mínimos cuadrados ordinarios OLS, el cual busca estimar los parámetros tal que la suma de cuadrados de la diferencias entre las observaciones y la línea recta estimada sea mínima. Este método en RL permite obtener estimadores insesgados y de mínima varianza para los \(betas\).

dadas las observaciones \((x_i, y_i)\), para \(i = 1, 2, \ldots n\), queremos encontrar los valores de \(\beta_0\) y \(\beta_1\), es decir, \(\hat{\beta}_0\) y \(\hat{\beta}_1\) que minimicen

\[ f(\beta_0, \beta_1) = \sum_{i = 1}^{n}(y_i - (\beta_0 + \beta_1 x_i))^2 = \sum_{i = 1}^{n}(y_i - \beta_0 - \beta_1 x_i)^2. \]

Resolviendo el sistema de ecuaciones normales:

\[ \begin{aligned} n \beta_0 + \beta_1 \sum_{i = 1}^{n} x_i &= \sum_{i = 1}^{n} y_i\\ \beta_0 \sum_{i = 1}^{n} x_i + \beta_1 \sum_{i = 1}^{n} x_i^2 &= \sum_{i = 1}^{n} x_i y_i \end{aligned} \] Se obtienen las siguientes expresiones para \(\hat{\beta}_0\) y \(\hat{\beta}_1\):

\[ \begin{aligned} \hat{\beta}_1 &= \frac{\sum_{i = 1}^{n} x_i y_i - \frac{(\sum_{i = 1}^{n} x_i)(\sum_{i = 1}^{n} y_i)}{n}}{\sum_{i = 1}^{n} x_i^2 - \frac{(\sum_{i = 1}^{n} x_i)^2}{n}} = \frac{S_{xy}}{S_{xx}}\\ \hat{\beta}_0 &= \bar{y} - \hat{\beta}_1 \bar{x} \end{aligned} \]

los parámetros \(\beta_0\) y \(\beta_1\), indican el valor promedio de \(Y\) cuando \(x\) toma el valor cero y el cambio en \(Y\) por cada unidad de aumento en \(X\).

Descomposición de la varianza

En un modelo de regresión, la variación total se puede expresar en términos de la variación debida la regresión y al error, a través de la siguiente expresión:

\[ y_i - \bar{y} = (y_i - \hat{y}_i) + (\hat{y}_i - \bar{y}). \] Aqui, \(y_i - \hat{y}_i\) mide la desviación de una observación respecto a la linea de regresión y \(\hat{y}_i - \bar{y}\) mide la desviación de la línea de regresión ajustada del promedio muestral. Al elevar al cuadrado y agregar la sumatoria a ambos lados de la ecuación anterior:

\[ \sum_{i=1}^{n}(y_i - \bar{y})^2 = \sum_{i=1}^{n}(y_i - \hat{y}_i)^2 + \sum_{i=1}^{n}(\hat{y}_i - \bar{y})^2. \]

Lo anterior, muestra que la suma de cuadrados totales \(SST\) la cual representa la variación total de los valores observados \(y\), es igual a la suma de cuadrados de la regresión \(SSReg\) más la suma de cuadrados del error \(SSE\). Estas dos última muestran la avriación explicada por los valores observados \(y\) y la variación no explicada por los valores de \(y\).

Coeficiente de determinación

El coeficiente de determinación \(R^2\) está definido como:

\[ \begin{aligned} R^2 &= \frac{\text{SSReg}}{\text{SST}} = \frac{\sum_{i=1}^{n}(\hat{y}_i - \bar{y})^2}{\sum_{i=1}^{n}(y_i - \bar{y})^2} \\[2.5ex] &= \frac{\text{SST} - \text{SSE}}{\text{SST}} = 1 - \frac{\text{SSE}}{\text{SST}} \\[2.5ex] &= 1 - \frac{\sum_{i=1}^{n}(y_i - \hat{y}_i)^2}{\sum_{i=1}^{n}(y_i - \bar{y})^2} = 1 - \frac{\sum_{i = 1}^{n}e_i^2}{\sum_{i=1}^{n}(y_i - \bar{y})^2} \end{aligned} \] este se interpreta como la proporción de varianza de \(y\) que es explicada por el modelo.

2.2 Inferencia de la regresión lineal

Para realizar inferencia sobre los parámetros del modelo \(\beta_0\) y \(\beta_1\), se deben calcular los errores estándar y estadísticos de prueba como los vistos en el curso anterior cuando se realizaban sobre el promedio, la proporción o la varianza, pero en este caso lo que queremos probar es si los betas son significativos (diferentes de cero) en el modelo. de esta forma es importante determinar el error estándar de cada coeficiente. Teniendo en cuenta que los beta´s son variables,

\[ \begin{aligned} \hat{\beta}_0 &\sim N\left( \beta_0, \sigma^2 \left(\frac{1}{n} + \frac{\bar{x}^2}{S_{xx}}\right) \right) \\ \hat{\beta}_1 &\sim N\left( \beta_1, \frac{\sigma^2}{S_{xx}} \right). \end{aligned} \]

estandarizando, se obtiene que

\[ \frac{\hat{\beta}_0 - \beta_0}{\text{SD}[\hat{\beta}_0]} \sim N(0, 1) \] \[ \frac{\hat{\beta}_1 - \beta_1}{\text{SD}[\hat{\beta}_1]} \sim N(0, 1) \] De esta forma, los errores estándar por cada coeficienten sería:

\[ \text{SE}[\hat{\beta}_0] = s_e\sqrt{\frac{1}{n} + \frac{\bar{x}^2}{S_{xx}}} \]

$$

[_1] = $$ Recordemos que el error estándar es la desviación estándar estimada en la distribución muestral de cada beta, teniendo en cuenta que provienen de una muestra aleatoria. Diviendo por el error estándar, se obtienen los siguientes resultados que permiten estimar intervalos de confianza y contrastar hipótesis:

\[ \frac{\hat{\beta}_0 - \beta_0}{\text{SE}[\hat{\beta}_0]} \sim t_{n-2} \]

\[ \frac{\hat{\beta}_1 - \beta_1}{\text{SE}[\hat{\beta}_1]} \sim t_{n-2} \]

Finalmente, para los procesos de estimación mencionados anteriormente, se utilizan las siguientes expresiones:

\[ \hat{\beta}_0 \pm t_{\alpha/2, n - 2} \cdot \text{SE}[\hat{\beta}_0] \quad \quad \quad \hat{\beta}_0 \pm t_{\alpha/2, n - 2} \cdot s_e\sqrt{\frac{1}{n}+\frac{\bar{x}^2}{S_{xx}}} \]

\[ \hat{\beta}_1 \pm t_{\alpha/2, n - 2} \cdot \text{SE}[\hat{\beta}_1] \quad \quad \quad \hat{\beta}_1 \pm t_{\alpha/2, n - 2} \cdot \frac{s_e}{\sqrt{S_{xx}}} \] donde \(t_{\alpha/2, n - 2}\) es el valor crítico tal que \(P(t_{n-2} > t_{\alpha/2, n - 2}) = \alpha/2\).

3. Regresión lineal múltiple

Ampliando los conceptos revisados para la regresión simple, el modelo múltiple tiene en cuenta más de una variable explicativa o covariable, quedando de la siguiente forma:

\[ Y_i = \beta_0 + \beta_1 x_{i1} + \beta_2 x_{i2} +....+\beta_j x_{ij} + \epsilon_i, \qquad i = 1, 2, \ldots, n \]

donde \(\epsilon_i \sim N(0, \sigma^2)\). El objetivo ahora es obtener la distribución del vector \(\hat{\beta}\)

\[ \hat{\beta} = \begin{bmatrix} \hat{\beta}_0 \\ \hat{\beta}_1 \\ \hat{\beta}_2 \\ \vdots \\ \hat{\beta}_{p-1} \end{bmatrix} \] Teniendo en cuenta lo mencionado en el modelo simple, \(\hat{\beta}\) es una variable aleatoria, ahora sería un vector aleatorio. Cada uno de los \(\hat{\beta}_j\) sigue una distribución normal,

\[ \hat{\beta}_j \sim N\left(\beta_j, \sigma^2 C_{jj} \right). \] donde \[C = \left(X^\top X\right)^{-1}\]. Con base en esto la distribución de probabilidad para los beta´s sería entonces:

\[ \frac{\hat{\beta}_j - \beta_j}{s_e \sqrt{C_{jj}}} \sim t_{n-p}. \]

Teniendo en cuenta esto, se pueden calcular intervalos de confianza para cada beta y probar hipótesis respecto a su efecto en el modelo de regresión de la siguiente forma:

\[ H_0: \beta_j = 0 \quad \text{vs} \quad H_1: \beta_j \neq 0 \]

4. Aplicación del modelo de Regresión Lineal

Ahora revisaremos los conceptos mencionados anteriormente a través de una ejercicio aplicado. Para revisar cómo se estima el modelo en \(R\), se inciará cargando las siguientes librerías:

library(ggplot2)
library(dplyr)
library(stats)

Se exporta la base de datos que está en .csv, cómo ya se mencionó esta contiene datos sobre: porcentaje de personas con enfermedad cardiaca (heart.disease), porcentaje de personas que usa la bicicleta como medio de transporte (biking) y porcentaje de personas que fuman (smoking) en una muestra de 498 ciudades independientes.

Inicalmente se realizará un análisis exploratorio descriptivo de las variables en la base de datos.

summary(base_heart)
##        id            biking          smoking        heart.disease    
##  Min.   :  1.0   Min.   : 1.119   Min.   : 0.5259   Min.   : 0.5519  
##  1st Qu.:125.2   1st Qu.:20.205   1st Qu.: 8.2798   1st Qu.: 6.5137  
##  Median :249.5   Median :35.824   Median :15.8146   Median :10.3853  
##  Mean   :249.5   Mean   :37.788   Mean   :15.4350   Mean   :10.1745  
##  3rd Qu.:373.8   3rd Qu.:57.853   3rd Qu.:22.5689   3rd Qu.:13.7240  
##  Max.   :498.0   Max.   :74.907   Max.   :29.9467   Max.   :20.4535

Para observar la distribución de la variable respuesta: porcentaje de personas con enfermedad cardiaca, se realizará un histograma:

hist(base_heart$heart.disease, main="Histograma % personas con enfermedad cardíaca")

Para estimar la correlación entre las variables, utilizaremos la función \(cor\), la cual permite calcular la correlación de pearson u otros métodos como kendall o spearmanm, estos últimos cuando no se cumple la normalidad.

Se prueba primero la normalidad de \(y\) a través de la prueba de Shapiro-Wilk.

shapiro.test(base_heart$heart.disease)
## 
##  Shapiro-Wilk normality test
## 
## data:  base_heart$heart.disease
## W = 0.98047, p-value = 3.158e-06

Debido a que no se cumple, se calcula la correlación usando un método no paramétrico como kendall.

cor(base_heart$heart.disease, base_heart$biking, method = c("kendall"))
## [1] -0.7745186
# en método se puede seleccionar: pearson, kendall o spearman.
cor(base_heart, method = c("kendall"))
##                        id      biking    smoking heart.disease
## id             1.00000000  0.03806776 0.03713041   -0.03435068
## biking         0.03806776  1.00000000 0.00698973   -0.77451860
## smoking        0.03713041  0.00698973 1.00000000    0.19845175
## heart.disease -0.03435068 -0.77451860 0.19845175    1.00000000

También se pueden construir métodos gráficos para observar la relación entre variables de la base de datos.

#install.packages("PerformanceAnalytics")
library("PerformanceAnalytics")
chart.Correlation(base_heart, histogram=TRUE, pch=19)

Los asteriscos es el gráfico anterior muestran la significancia de la correlación a través de valores p que están asociados con los simbolos: p-values(0, 0.001, 0.01, 0.05, 0.1, 1) <=> simbolos(“”, “”, “”, “.”, ” “).

También se pueden realizar correlogramas usando la librería \(corrplot\).

#install.packages("corrplot")
library(corrplot)
## corrplot 0.92 loaded
cor=cor(base_heart, method = c("kendall"))
corrplot(cor, type = "upper", order = "hclust", 
         tl.col = "black", tl.srt = 45)

Aunque a través de la función chart.correlation se puede observar gráficamente la relación entre variables, también se puede hacer uso de la función \(plot\)

par(mfrow=c(1,2))  #permite tener una ventana con una fila y dos columnas para los gráficos.
plot(heart.disease ~ biking, data=base_heart)
plot(heart.disease ~ smoking, data=base_heart)

Para la estimación del modelo lineal se usa la función \(lm\). Ajustaremos el siguiente modelo múltiple: Heart_disease = \(\beta_0\) + \(\beta_1\) biking + \(\beta_2\) smoking

modelo<-lm(heart.disease ~ biking + smoking, data = base_heart)
summary(modelo)
## 
## Call:
## lm(formula = heart.disease ~ biking + smoking, data = base_heart)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.1789 -0.4463  0.0362  0.4422  1.9331 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 14.984658   0.080137  186.99   <2e-16 ***
## biking      -0.200133   0.001366 -146.53   <2e-16 ***
## smoking      0.178334   0.003539   50.39   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.654 on 495 degrees of freedom
## Multiple R-squared:  0.9796, Adjusted R-squared:  0.9795 
## F-statistic: 1.19e+04 on 2 and 495 DF,  p-value: < 2.2e-16

La salida anterior muestra un análisis descriptivo de los residuales del modelo, los coeficientes beta´s, el error estándar, la prueba t para cada coediciente y los valores p. Además la estimación de la prueba de bondad y ajuste del modelo \(R^2\) y la prueba F que plantea como hipótesis nula que todos los beta´s son iguales a cero.

Vamos a iniciar la interpretación con el intercepto \(\beta_0\), este nos indica el valor promedio de \(y\) cuando las variables explicativas tomar el valor de 0, es decir, sería que el valor esperado del porcentaje de personas con enfermedad cardíaca es 14.98 cuando el porcentaje de quienes usan bicileta es cero y de los que fuman igual. En el caso de \(\beta_1\), este nos indica que por cada unidad de aumento en el porcentaje de personas que usan la bicicleta, el porcentaje de personas con enfermedad cardíaca disminuye en 0.20, finalmente para \(\beta_2\), este indica que por por cada unidad de aumento en el porcentaje de personas que fuman en una ciudad, el porcentaje de personas con enfermedad cardíaca aumenta en 0.18.

En cuanto a la significancia estadística, el valor p representado a través de la columna de probabilidad \(Pr(>|t|)\), debido a que son valores muy pequeños, indica que se rechaza la hipótesis nula \(H_0: \beta_j = 0\), por lo tanto, podemos decir que las covariables: porcentaje de personas que usan bicileta y porcentaje de personas que fuma es significativo en el modelo.

Además, podemos decir que el porcentaje de variabilidad explicado de \(y\) explicado por el modelo es 97.9% dado el \(R^{2}\).

la estimación de intervalos de confianza para los coeficientes se obtienen de la siguiente forma:

confint(modelo, level = 0.95)
##                  2.5 %     97.5 %
## (Intercept) 14.8272075 15.1421084
## biking      -0.2028166 -0.1974495
## smoking      0.1713800  0.1852878

Si buscamos predecir valores de \(y\) para valores específicos de las \(x´s\), se crean primero los valores de x y se utiliza la función predict. Por ejemplo, nos interesa conocer el valor predicho del porcentaje de personas con enfermedad cardíaca para una ciudad donde el porcentaje de biking sea 0.50 y el de smoking 0.60, asi mismo, para una ciudad con 0.70 y 0.80, en cada covariable.

new_data = data.frame(biking = c(0.50, 0.70), smoking = c(0.60, 0.80)) # se deben tener en cuenta los mismos nombres de las variables en el dataframe.
new_data
##   biking smoking
## 1    0.5     0.6
## 2    0.7     0.8

luego se hace la predicción para estos nuevos datos:

predict(modelo, newdata = new_data, interval = "confidence", level = 0.95)
##        fit      lwr      upr
## 1 14.99159 14.83778 15.14541
## 2 14.98723 14.83468 15.13979

Para otros criterios de bondad de ajuste del modelo, se pueden usar el criterio akaike (AIC) o el criterio de información bayesiano (BIC), los cuales castigan por la cantidad de variables explicativas en el modelo buscando cumplir con el principio de parsimonia, donde lo que se busca es que el modelo explique \(y\) pero que sea sencillo. Dado que el \(R^{2}\) tiende a aumentar de acuerdo a las covariables ingresadas, en algunos casos es mejor estas dos métricas:

AIC(modelo)
## [1] 995.3534
BIC(modelo)
## [1] 1012.196

5. Validación de supuestos

Para este modelo de regresión lineal se deben validar los supuestos respecto a los residuales como la normalidad, homocedasticidad de la varianza e independencia.

El siguiente gráfico nos muestra diferentes plots que ayudan con la validación de supuestos. El primero Residuals vs Fitted se utiliza para revisar los supuestos de linealidad y varianza constante, lo que se espera es que para cualquier valor ajustado (eje x) los residuales se encuentren alrededor de cero. El Q-Q plot es otro método visual que nos permite evaluar la normalidad de los errores, lo que se espera es que los puntos estén sobre la linea recta.

En el caso del gráfico Scale location, este también permite evaluar la homocedasticidad, lo que se espera es no encontrar ninguna tendencia en el comportamineto de los valores ajustado versus los residuales estandarizados. Por último, el gráfico de Residuales vs Leverage permite determinar si existen observaciones que pueden influir en las estimaciones del modelo, a través de la distancia de Cook, esta es una medida de la distancia cuadrática entre, el estimador por mínimos cuadrados basado en las n observaciones y el estimador obtenido eliminando la i-ésima observación. En este gráfico se identifican aquellos puntos (observaciones) que estén muy alejados de cero, se identifican y revisan para determinar que está pasando con estos datos.

par(mfrow=c(2,2))
plot(modelo)

El gráfico anterior permite evaluar la tendencia de residuales, la normalidad (QQ plot) y posibles valores atípicos.

Para determinar homocedasticidad de la varianza, se puede aplicar la prueba analítica Breush-Pagan (Hipótesis nula: residuales distribuidos con igual varianza).

library(lmtest)
lmtest::bptest(modelo)
## 
##  studentized Breusch-Pagan test
## 
## data:  modelo
## BP = 5.7775, df = 2, p-value = 0.05564

Esta prueba plantea que los residuales se distribuyen con la misma varianza, es decir, hay homocedasticidad, debido a que el valor p es mayor por ejemplo a 0.05 (significancia) vamos a decir que no se rechaza la hipótesis nula y se cumple, sin embargo, se debe tener cuidado dado que es un valor cercano al limite establecido por el error.

Para la normalidad de los residuales, primero calculamos los residuales del modelo usando la función resid, luego se aplica la prueba de shapiro que plantea como hipótesis nula la normalidad. En este caso, se observa que teniendo en cuenta el valor p no se rechaza la hipótesis nula que plantea noramilidad en los errores.

residuales=resid(modelo)
ks.test(residuales, 'pnorm')
## 
##  Asymptotic one-sample Kolmogorov-Smirnov test
## 
## data:  residuales
## D = 0.11967, p-value = 1.278e-06
## alternative hypothesis: two-sided
shapiro.test(residuales)
## 
##  Shapiro-Wilk normality test
## 
## data:  residuales
## W = 0.997, p-value = 0.4935