Tarea - REGRESION LINEAL MULTIPLE - PARTE 2
Tarea - REGRESION LINEAL MULTIPLE - PARTE 2
Tarea - REGRESION LINEAL MULTIPLE - PARTE 2
TECNICA
ESTATAL DE
QUEVEDO
2021
REGRESION LINEAL
MULTIPLIE
2da PARTE DE LA TAREA: REGRESIÓN LINEAL
MÚLTIPLE
CON LOS DATOS “BOSTON” ENCONTRAR EL MEJOR MODELO DE
REGRESIÓN LINEAL MÚLTIPLE, TOMANDO LA VARIABLE “MEDV”
como variable de respuesta Y (variable dependiente).
Para leer los datos en “R” utilice las siguientes funciones:
# primero se deben instalar los paquetes “MASS” e “ISLR”
library(MASS)
library(ISLR)
data("Boston")
str(Boston)
medv -0.3883 0.3604 -0.4837 0.1753 -0.4273 0.6954 -0.3770 0.2499 -0.3816 -0.4685 -0.5078 0.3335
-0.7377 1.0000
library(leaps)
> regresionForward<-regsubsets(as.matrix(Boston[,-14]),Boston[,14],
nbest = 1, nvmax = NULL,method='forward')
> summary(regresionForward)
Subset selection object
13 Variables (and intercept)
Forced in Forced out
crim FALSE FALSE
zn FALSE FALSE
indus FALSE FALSE
chas FALSE FALSE
nox FALSE FALSE
rm FALSE FALSE
age FALSE FALSE
dis FALSE FALSE
rad FALSE FALSE
tax FALSE FALSE
ptratio FALSE FALSE
black FALSE FALSE
lstat FALSE FALSE
1 subsets of each size up to 13
Selection Algorithm: forward
crim zn indus chas nox rm age dis rad tax ptratio black lstat
1 ( 1 ) " " " " " " " " " " " " " " " " " " " " " " " " "*"
2 ( 1 ) " " " " " " " " " " "*" " " " " " " " " " " " " "*"
3 ( 1 ) " " " " " " " " " " "*" " " " " " " " " "*" " " "*"
4 ( 1 ) " " " " " " " " " " "*" " " "*" " " " " "*" " " "*"
5 ( 1 ) " " " " " " " " "*" "*" " " "*" " " " " "*" " " "*"
6 ( 1 ) " " " " " " "*" "*" "*" " " "*" " " " " "*" " " "*"
7 ( 1 ) " " " " " " "*" "*" "*" " " "*" " " " " "*" "*" "*"
8 ( 1 ) " " "*" " " "*" "*" "*" " " "*" " " " " "*" "*" "*"
9 ( 1 ) "*" "*" " " "*" "*" "*" " " "*" " " " " "*" "*" "*"
10 ( 1 ) "*" "*" " " "*" "*" "*" " " "*" "*" " " "*" "*" "*"
11 ( 1 ) "*" "*" " " "*" "*" "*" " " "*" "*" "*" "*" "*" "*"
12 ( 1 ) "*" "*" "*" "*" "*" "*" " " "*" "*" "*" "*" "*" "*"
13 ( 1 ) "*" "*" "*" "*" "*" "*" "*" "*" "*" "*" "*" "*" "*"
> regresionBackward<-regsubsets(as.matrix(Boston[,-14]),Boston[,14],
nbest = 1, nvmax = NULL, method='backward')
> summary(regresionBackward)
Subset selection object
13 Variables (and intercept)
Forced in Forced out
crim FALSE FALSE
zn FALSE FALSE
indus FALSE FALSE
chas FALSE FALSE
nox FALSE FALSE
rm FALSE FALSE
age FALSE FALSE
dis FALSE FALSE
rad FALSE FALSE
tax FALSE FALSE
ptratio FALSE FALSE
black FALSE FALSE
lstat FALSE FALSE
1 subsets of each size up to 13
Residuals:
Min 1Q Median 3Q Max
-15.595 -2.730 -0.518 1.777 26.199
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 3.646e+01 5.103e+00 7.144 3.28e-12 ***
crim -1.080e-01 3.286e-02 -3.287 0.001087 **
zn 4.642e-02 1.373e-02 3.382 0.000778 ***
indus 2.056e-02 6.150e-02 0.334 0.738288
chas 2.687e+00 8.616e-01 3.118 0.001925 **
nox -1.777e+01 3.820e+00 -4.651 4.25e-06 ***
rm 3.810e+00 4.179e-01 9.116 < 2e-16 ***
age 6.922e-04 1.321e-02 0.052 0.958229
dis -1.476e+00 1.995e-01 -7.398 6.01e-13 ***
rad 3.060e-01 6.635e-02 4.613 5.07e-06 ***
tax -1.233e-02 3.760e-03 -3.280 0.001112 **
ptratio -9.527e-01 1.308e-01 -7.283 1.31e-12 ***
black 9.312e-03 2.686e-03 3.467 0.000573 ***
lstat -5.248e-01 5.072e-02 -10.347 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Como el p-valor es menor a 0,05 entonces se rechaza la hipótesis de que no hay modelo
de regresión, esto quiere decir que SI es válida la ecuación de regresión planteada.
R cuadrado ajustado=73.38 %
Dicho valor es suficientemente alto, el “R cuadrado ajustado” es una medida que indica
el porcentaje de variabilidad de la variable Y (Medv) que se puede explicar según la
variabilidad de todas las variables independientes.
Step: AIC=1587.65
medv ~ crim + zn + indus + chas + nox + rm + dis + rad +
tax + ptratio + black + lstat
Call:
lm(formula = medv ~ crim + zn + chas + nox + rm + dis + rad
+ tax + ptratio + black + lstat, data = datos)
Coefficients:
(Intercept) crim zn chas nox rm dis
36.341145 -0.108413 0.045845 2.718716 -17.376023 3.801579 -1.492711
rad tax ptratio black lstat
0.299608 -0.011778 -0.946525 0.009291 -0.522553
El mejor modelo seleccionado con el método “STEP” y el criterio “AIC” contiene once
(11) variables, entonces la ecuación de regresión es la siguiente:
Y medv =36.341145−0.108413∗crim+ 0.045845∗zn+ 2.718716∗chas−17.376023∗nox +3.801579∗rm−1.4
> library(ggplot2)
> library(gridExtra)
> plot11 <- ggplot(data = datos, aes(crim, modelo$residuals)) + geom_point()
> plot21 <- ggplot(data = datos, aes(zn, modelo$residuals)) + geom_point()
> plot31 <- ggplot(data = datos, aes(chas, modelo$residuals)) + geom_point()
> plot41 <- ggplot(data = datos, aes(nox, modelo$residuals)) + geom_point()
> plot51 <- ggplot(data = datos, aes(rm, modelo$residuals)) + geom_point()
> plot61 <- ggplot(data = datos, aes(dis, modelo$residuals)) + geom_point()
> plot71 <- ggplot(data = datos, aes(rad, modelo$residuals)) + geom_point()
> plot81 <- ggplot(data = datos, aes(tax, modelo$residuals)) + geom_point()
> plot91 <- ggplot(data = datos, aes(ptratio, modelo$residuals)) +
geom_point()
> plot101 <- ggplot(data = datos, aes(black, modelo$residuals)) +
geom_point()
> plot111 <- ggplot(data = datos, aes(lstat, modelo$residuals)) +
geom_point()
> grid.arrange(plot11, plot21, plot31, plot41, plot51, plot61, plot71,
plot81, plot91, plot101, plot111)
Se analiza el comportamiento gráfico de los residuales (errores) para ver que tan
bueno es el modelo, seleccionado, se revisan los residuales de cada variable por
separado. Los residuales deben estar centrados en el cero, habrán valores mayores
que cero y valores menores que cero, sin patrones ni tendencias
# en términos estadísticos se dice que los residuales deben comportarse como “ruido
blanco”
ELABORACIÓN DEL Q-Q PLOT
Elaboración del gráfico Q-Q Plot, este gráfico es otra manera (criterio) para analizar la
calidad del modelo de regresión
> Modelo1= lm ( medv ~ lstat + rm + ptratio + dis + nox +
chas + black + zn + crim + rad + tax, data=datos)
> qqnorm(Modelo1$residuals)
> qqline(Modelo1$residuals)
> Modelo2= lm ( medv ~ lstat + rm + ptratio + dis + nox +
chas + black + zn + crim + rad + tax + indus + age,
data=datos)
> qqnorm(Modelo2$residuals)
> qqline(Modelo2$residuals)
data: Modelo1$residuals
W = 0.90131, p-value < 2.2e-16
Mediante el test aplicado para el modelo 1 el p- valor < 2.2e-16 está muy por
debajo del 0.05 lo que nos permite rechazar la hipótesis nula y se determina que no
hay normalidad en la distribución de los datos.
CONTINUA…
> Modelo2= lm ( medv ~ lstat + rm + ptratio + dis + nox +
chas + black + zn + crim + rad + tax + indus + age,
data=datos)
> shapiro.test(Modelo2$residuals)
data: Modelo2$residuals
W = 0.90138, p-value < 2.2e-16
data: Modelo3$residuals
W = 0.90131, p-value < 2.2e-16
data: Modelo4$residuals
W = 0.90138, p-value < 2.2e-16
data: Modelo5$residuals
W = 0.90131, p-value < 2.2e-16