Documentos de Académico
Documentos de Profesional
Documentos de Cultura
TEMA
REGRESIÓN LINEAL MÚLTIPLE
MATERIA
PAQUETES ESTADÍSTICOS
INTEGRANTES
CEDEÑO PRADO BETHZAIDA
RODRÍGUEZ SAMPEDRO MARTHA ALEXANDRA
DOCENTE
ING. CARLOS ROA.
DIAGRAMAS
> plot(Boston$medv,Boston$crim, col ="blue")#diagrama de dispersión de: Y vs.
X1
80
60
Boston$crim
40
20
0
10 20 30 40 50
Boston$medv
> plot(Boston$medv,Boston$zn, col ="blue")
100
80
60
Boston$zn
40
20
0
10 20 30 40 50
Boston$medv
15
10
5
0
10 20 30 40 50
Boston$medv
0.6
0.4
0.2
0.0
10 20 30 40 50
Boston$medv
> plot(Boston$medv,Boston$nox, col ="blue")
0.8
0.7
B oston$nox
0.6
0.5
0.4
10 20 30 40 50
Boston$medv
6
5
4
10 20 30 40 50
Boston$medv
60
40
20
0
10 20 30 40 50
Boston$medv
> plot(Boston$medv,Boston$dis, col ="blue")
12
10
B oston$dis
8
6
4
2
10 20 30 40 50
Boston$medv
15
10
5
10 20 30 40 50
Boston$medv
50 0
40 0
30 0
20 0
10 20 30 40 50
Boston$medv
> plot(Boston$medv,Boston$ptratio, col ="blue")
22
20
Boston$ptratio
18
16
14
10 20 30 40 50
Boston$medv
200
100
0
10 20 30 40 50
Boston$medv
20
10
10 20 30 40 50
Boston$medv
b. APLIQUE LOS MÉTODOS “FORWARD”, “BACKWARD” Y “STEP” Y COMPARE LOS
RESULTADOS PARA EL MEJOR SUBCONJUNTO DE MODELOS DE REGRESIÓN
SEGÚN LA CANTIDAD DE VARIABLES.
Utilice los criterios de “R2 cuadrado ajustado”, “Suma de Residuales
Cuadráticos” y “AIC” para comparar los posibles modelos de
regresión y proceder a seleccionar el mejor modelo.
#instalar el paquete LEAPS desde el menú de [R]
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
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 ) "*" "*" "*" "*" "*" "*" "*" "*" "*" "*" "*" "*" "*"
MEJOR Modelo de Regresión con 5 variables: Y = β0 + β 1∗lstat + β 2∗rm+ β 3∗ptratio + β 4∗¿dis + β 5∗nox
> 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
Selection Algorithm: backward
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 ) "*" "*" "*" "*" "*" "*" "*" "*" "*" "*" "*" "*" "*"
MEJOR Modelo de Regresión con 5 variables: Y = β0 + β 1∗lstat + β 2∗rm+ β 3∗ptratio + β 4∗¿dis + β 5∗nox
MEJOR Modelo de Regresión con 6 variables: Y = β0 + β 1∗lstat + β 2∗rm+ β 3∗ptratio + β 4∗¿dis + β 5∗nox+ β 6∗¿
# para poder obtener el valor del R-cuadrado ajustado usamos “$adjr2” en la función “summary”
> summary(regresionBackward)$adjr2
[1] 0.5432418 0.6371245 0.6767036 0.6878351 0.7051702 0.7119672
0.7147861 0.7195336
[9] 0.7243416 0.7299149 0.7348058 0.7343282 0.7337897
0.7343282 es el R CUADRADO AJUSTADO para el modelo de regresión con 11 variables independientes
73. 48 %
=1 . 0006 este valor lo multiplico al 100% y da resultado: 0.06 %
73. 43 %
El valor obtenido con 12 variables es ligeramente mayor al del modelo con 11 variables. Por lo tanto, al agregar la
variable 12 no hubo una mejora significativa en el modelo de regresión.
# para poder obtener el valor del “suma de residuales cuadráticos”usamos “$rss” en la función “summary””
> summary(regresionBackward)$rss
[1] 19472.38 15439.31 13727.99 13228.91 12469.34 12157.51 12014.40
11790.70 11565.25
[10] 11308.58 11081.36 11078.85 11078.78
Decisión: nos quedamos con el mejor modelo que es de 13 variables:
> modelo <- lm ( medv ~ crim + zn + indus + chas + nox + rm + age + dis
+ rad + tax + ptratio + black + lstat,data=datos)
> summary(modelo)
Call:
lm(formula = medv ~ crim + zn + indus + chas + nox + rm + age + dis +
rad + tax + ptratio + black + lstat, data = datos)
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
R cuadrado ajustado=73,38 %
# Dicho valor es suficiente alto, el “R cuadrado ajustado” es una medida que indica el
porcentaje de variabilidad de la variable Y que se puede explicar según la
variabilidad de todas las variables independientes.
# el método STEP utiliza el criterio del “AIC” para quitar y/o agregar variables a la ecuación de regresión
Step: AIC=1587.65
medv ~ crim + zn + indus + chas + nox + rm + dis + rad + tax +
ptratio + black + lstat
Step: AIC=1585.76
medv ~ crim + zn + 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
36.341145 -0.108413 0.045845 2.718716 -17.376023 3.801579
dis rad tax ptratio black lstat
-1.492711 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 =36,34114−0.522553∗lstat +3.801579∗rm−0.946525∗ptratio −1.492711∗¿ dis
−17.376023∗nox+ 0.009291∗¿+0.299608∗rad−0.108413∗crim−0.011778∗tax + 0.045845∗zn+ 2.718716∗chas
# El resultado usando el criterio “AIC” coincide con el resultado del criterio “R cuadrado
ajustado”, el modelo de regresión es:
> 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)
d) ELABORAR EL DIAGRAMA QQPLOT PARA CADA ECUACIÓN DE REGRESIÓN
SELECCIONADA EN EL APARTADO (b)
GRAFICOS QQ - PLOT
> Modelo1= lm ( medv ~ lstat + rm + ptratio + dis + nox + chas + black + zn + crim +
rad + tax, data=datos)
> qqnorm(Modelo1$residuals)
10
0
> Modelo2=
lm ( medv ~
-10
-3 -2 -1 0 1 2 3
Theoretical Quantiles
lstat + rm + ptratio + dis + nox + chas + black + zn + crim + rad + tax + indus + age,
data=datos)
> qqnorm(Modelo2$residuals)
10
0
-10
-3 -2 -1 0 1 2 3
Theoretical Quantiles
> Modelo3= lm ( medv ~ lstat + rm + ptratio + dis + nox + chas + black + zn + crim +
rad + tax, data=datos)
> qqnorm(Modelo3$residuals)
10
0
-10
-3 -2 -1 0 1 2 3
Theoretical Quantiles
> Modelo4= lm ( medv ~ lstat + rm + ptratio + dis + nox + chas + black + zn + crim +
rad + tax + indus + age, data=datos)
> qqnorm(Modelo4$residuals)
10
0
-10
-3 -2 -1 0 1 2 3
Theoretical Quantiles
> Modelo5= lm ( medv ~ crim + zn + chas + nox + rm + dis + rad + tax + ptratio + black
+ lstat, data=datos)
> qqnorm(Modelo5$residuals)
10
0
-10
-3 -2 -1 0 1 2 3
Theoretical Quantiles
e) INVESTIGAR Y APLICAR UN CRITERIO ADICIONAL DE ANÁLISIS [VALIDACIÓN] DEL
MODELO DE REGRESIÓN LINEAL USANDO LOS VALORES RESIDUALES. ES COMÚN EN LA
ESTADÍSTICA ENCONTRAR ALGÚN “TEST” O “ESTADÍSTICO” QUE SE UTILICE PARA
COMPRAR LA CALIDAD DE LOS MODELOS DE REGRESIÓN LINEAL UTILIZANDO LOS
RESIDUALES.
El “test” o “estadístico” seleccionado debe ser aplicado a cada una de las ecuaciones
de regresión seleccionadas en el apartado (b) y luego usando dicho valor comparan los
cincos modelos de regresión lineal múltiple. Debe usar una redacción breve de los
resultados obtenidos según el “test” aplicado.
MODELOS RESIDUALES
> Modelo1= lm ( medv ~ lstat + rm + ptratio + dis + nox + chas + black + zn + crim +
rad + tax, data=datos)
> shapiro.test(Modelo1$residuals)
data: Modelo1$residuals
Mediante el test aplicado para el modelo 4 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.
Análisis:
> 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
> Modelo3= lm ( medv ~ lstat + rm + ptratio + dis + nox + chas + black + zn + crim +
rad + tax, data=datos)
> shapiro.test(Modelo3$residuals)
Shapiro-Wilk normality test
data: Modelo3$residuals
> Modelo4= lm ( medv ~ lstat + rm + ptratio + dis + nox + chas + black + zn + crim +
rad + tax + indus + age, data=datos)
> shapiro.test(Modelo4$residuals)
data: Modelo4$residuals
> Modelo5= lm ( medv ~ crim + zn + chas + nox + rm + dis + rad + tax + ptratio + black
+ lstat, data=datos)
> shapiro.test(Modelo5$residuals)
data: Modelo5$residuals