Datos

Fuente: U.S. Department of Commerce, Bureau of the Census (1977) Statistical Abstract of the United States, and U.S. Department of Commerce, Bureau of the Census (1977) County and City Data Book.

Lista de 50 regiones de los Estados Unidos en el cual se muestra las siguientes variables en las columnas.

Para efectos de desarrollo de políticas de estado realizaremos un modelo con 3 variables predictoras para realizar predicciones sobre al expectativa de vida.

library(readxl)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggplot2)
resumen <- read_excel('Resumen-Censo-EEUU-1977.xlsx')
resumen |> select_if(is.numeric) |> pairs()

Variables seleccionadas

V. dependiente:

V. predictoras cuantitativas:

datos <- data.frame(expectativa = resumen$c2, ingreso = resumen$c4, analfabetismo = resumen$c5, graduados = resumen$c7)

1. Para un modelo de regresión lineal, obtener los residuales según fórmula usando matrices y verificar con el comando residuals.


GraficoF

modelo <- lm(expectativa ~ ., data = datos)
modelo |> coef()
##   (Intercept)       ingreso analfabetismo     graduados 
##  69.013483725  -0.000111796  -0.803898731   0.062167330

\[ \hat{Y} = 69.0135-0.0001*X_{1}-0.8039*X_{2}+0.0622*X_{3} \]

attach(datos)
X <- model.matrix(expectativa~ingreso+analfabetismo+graduados,data=datos)
y <- expectativa
H = X%*%solve(t(X)%*%X)%*%t(X)
I<- diag(50)

ei = (I-H)%*%y
ei
##            [,1]
## 1  -0.437658354
## 2  -1.938204693
## 3  -0.121951926
## 4   1.071094342
## 5   0.260854851
## 6   0.182764745
## 7   1.467319497
## 8  -1.086684040
## 9  -0.040119112
## 10 -0.932322356
## 11  2.820609768
## 12  0.100387171
## 13 -0.849034167
## 14 -0.361019727
## 15  0.797985136
## 16  0.847008049
## 17  0.394298854
## 18 -0.229711724
## 19 -1.048333079
## 20 -0.728919133
## 21  0.595606134
## 22 -0.411267015
## 23  1.370663684
## 24 -1.196643240
## 25 -0.238550189
## 26 -1.165473138
## 27  0.886309288
## 28 -3.059206585
## 29 -0.322994074
## 30  0.122495795
## 31  0.046034323
## 32 -0.066107922
## 33 -0.316698648
## 34  1.851324899
## 35 -0.347765064
## 36  0.528254186
## 37  0.389785152
## 38 -0.403004481
## 39  1.556586758
## 40 -1.148063196
## 41  0.620800953
## 42  0.291722304
## 43  1.176563760
## 44  0.634637783
## 45 -0.004111992
## 46 -0.254070800
## 47 -0.214994116
## 48 -0.589820237
## 49  1.140630505
## 50 -1.641008931

Comprobación

modelo |> residuals() -> residuales
residuales
##            1            2            3            4            5            6 
## -0.437658354 -1.938204693 -0.121951926  1.071094342  0.260854851  0.182764745 
##            7            8            9           10           11           12 
##  1.467319497 -1.086684040 -0.040119111 -0.932322356  2.820609768  0.100387171 
##           13           14           15           16           17           18 
## -0.849034167 -0.361019727  0.797985136  0.847008049  0.394298854 -0.229711724 
##           19           20           21           22           23           24 
## -1.048333079 -0.728919133  0.595606134 -0.411267015  1.370663684 -1.196643240 
##           25           26           27           28           29           30 
## -0.238550189 -1.165473138  0.886309288 -3.059206585 -0.322994074  0.122495795 
##           31           32           33           34           35           36 
##  0.046034323 -0.066107922 -0.316698648  1.851324899 -0.347765064  0.528254186 
##           37           38           39           40           41           42 
##  0.389785152 -0.403004481  1.556586758 -1.148063196  0.620800953  0.291722304 
##           43           44           45           46           47           48 
##  1.176563760  0.634637783 -0.004111992 -0.254070800 -0.214994116 -0.589820237 
##           49           50 
##  1.140630505 -1.641008931

Se verifica los valores son los mismos hallados de forma matricial y lo obtenido con el comando residuals.

2. Verificar si se distribuyen normalmente usando el histograma, el gráfico de probabilidad normal y una hipótesis

Histograma / curva de densidad

residuales |> hist(main="Histograma de los residuales",
xlab="Residuales",
ylab="Frecuencia")

Se observa que tiende a una gráfica de una distribución normal con una ligera asimetría hacía la izquierda.

Gráfico de probabilidad normal:

data.frame(residuales) |> 
ggplot(aes(sample=residuales))+
stat_qq(size = 2) +
stat_qq_line(distribution = "qnorm")+
labs(x = "Cuantil teórico",
y = "Residuales")+
theme_minimal()

Se observa que los puntos no se ajustan en su mayoría a la recta y tambien una ligera cola pesada hacía la izquierda debido a su asimetría.

Prueba de hipotesis de normalidad: Shapiro Wilk

Prueba de hipótesis:

  • H0 : Los errores se distribuyen normalmente
  • H1 : Los errores No se distribuyen normalmente

Nivel de significancia: α = 0.05

Estaditico: Test de normalidad de Shapiro Wilk

residuales |> shapiro.test()
## 
##  Shapiro-Wilk normality test
## 
## data:  residuales
## W = 0.98339, p-value = 0.7009

Decisión: Como el p-value = 0.7009 > 0.05 , No se rechaza Ho.

Conclusión: A un 95% de confianza existe evidencia estadística para afirmar que los errores se distribuyen normalmente.