Está en la página 1de 10

Práctica Tema 4

Modelo de Regresión Lineal Múltiple

Relación de ejercicios prácticos


1. La base de datos mtcars (disponible en R) contiene información sobre diferentes modelos de coche. Se
desea explicar el consumo de combustible “mpg” (en millas por galón) en función de la cilindrada en
pulgadas cúbicas (“disp”), la potencia en caballos (“hp”) y el peso del coche en miles de libras(“wt”).
a) Dibuja e interpreta los diagramas de dispersión. Calcula las covarianzas, las correlaciones, el coeficiente
de correlación múltiple y el coeficiente de correlación parcial muestral. Interpreta los resultados.
En primer lugar, definimos los datos e imprimimos los diagramas de dispersión.
datos <- mtcars[,c("mpg","disp","hp","wt")]
plot(datos)

100 200 300 400 2 3 4 5

30
mpg

20
10
300

disp
100

200
hp
50
2 3 4 5

wt

10 15 20 25 30 50 150 250

cor(datos)

## mpg disp hp wt
## mpg 1.0000000 -0.8475514 -0.7761684 -0.8676594
## disp -0.8475514 1.0000000 0.7909486 0.8879799

1
## hp -0.7761684 0.7909486 1.0000000 0.6587479
## wt -0.8676594 0.8879799 0.6587479 1.0000000
Observamos que la correlación lineal entre las variables (dos a dos) es moderada. También observamos que
hay variables que tienen una relación lineal directa y otra inversa.
El coeficiente de correlación parcial muestral.
library(ggm)

## Warning: package 'ggm' was built under R version 4.1.3


parcor(cov(datos))

## mpg disp hp wt
## mpg 1.00000000 -0.01710691 -0.4577641 -0.5587363
## disp -0.01710691 1.00000000 0.5214102 0.6514029
## hp -0.45776414 0.52141024 1.0000000 -0.3700128
## wt -0.55873632 0.65140288 -0.3700128 1.0000000
Si observamos la columna de la variable mpg (varible respuesta), observamos que la varible wt es la que
aporta mayor información lineal adicional en presencia del resto de variables en el modelo. Por el contrario, la
varible disp es la que aporta menor información lineal adicional en presencia del resto de variables del modelo.
Otros comentarios para afianzar conceptos:
El 0.52141024 de la segunda columna significa que a la variable disp la variable hp aporta información lineal
(directa) adicional sobre la variable respuesta en un nivel medio en presencia de las varianles mpg y wt. Del
mismo modo, se puede observar que a la variable disp la variable mpg apenas aporta información lineal
adicional en presencia del resto de variables en el modelo.
Con respecto al coeficiente de correlación múltiple, hay que tener en cuenta que la variable respuesta es
√ mpg.
Aunque en las diapositivas hay un código directo para calcularlo, usaremos la propiedad que r1...3 = R2
modelo1<-lm(mpg~disp+hp+wt,data=datos)
Resu_modelo1<-summary(modelo1)
Resu_modelo1$r.squared

## [1] 0.8268361
sqrt(Resu_modelo1$r.squared)

## [1] 0.9093053
Por tanto, el coeficiente de correlación múltiple sería 0.909305. Recuerda este coeficiente toma valores entre 0
y 1, por tanto, la naturaleza de su relación no se representa en los datos. Analizando este coeficiente, parece
que hay una alta relación lineal entre los datos, pero como este coeficiente aumenta cuando se introducen
nuevas variables en el modelo, es posible, que haya variables que no estén aportando información lineal
adicional. Este hecho se observó cuando analizamos el coeficiente de correlación parcial muestral.
b) ¿Cuál es la variable respuesta? ¿Cuáles son las variables regresoras? ¿Cuál sería el modelo a ajustar?
La variable respuesta es la variable consumo de combustible “mpg” (en millas por galón) (cuantitativa) y las
variables regresoras son las variables cilindrada en pulgadas cúbicas (“disp”), la potencia en caballos (“hp”) y
el peso del coche en miles de libras(“wt”). Por tanto, en nuestra regresión tendremos tres variables regresoras.
El modelo a ajustar sería:

mpg = β0 + β1 disp + β2 hp + β3 wt + 
donde  es un error aleatorio de esperanza nula y con varianza constante.

2
c) Obtenga las estimaciones puntuales de β ¿Cómo se interpretan estos coeficientes?
Resu_modelo1

##
## Call:
## lm(formula = mpg ~ disp + hp + wt, data = datos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.891 -1.640 -0.172 1.061 5.861
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 37.105505 2.110815 17.579 < 2e-16 ***
## disp -0.000937 0.010350 -0.091 0.92851
## hp -0.031157 0.011436 -2.724 0.01097 *
## wt -3.800891 1.066191 -3.565 0.00133 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.639 on 28 degrees of freedom
## Multiple R-squared: 0.8268, Adjusted R-squared: 0.8083
## F-statistic: 44.57 on 3 and 28 DF, p-value: 8.65e-11
La variable respuesta es la variable consumo de combustible “mpg” (en millas por galón) (cuantitativa) y las
variables regresoras son las variables cilindrada en pulgadas cúbicas (“disp”), la potencia en caballos (“hp”) y
el peso del coche en miles de libras(“wt”). Por tanto, en nuestra regresión tendremos tres variables regresoras.
El 37.105505 representa el consumo de combustible (en millas por galón) en un coche con cero cilindradas,
cero potencia y con peso del coche nulo. En este caso, esta interpretación no tiene sentido en la realidad,
pero puede interpretarse como un coeficiente de ajuste.
El -0.000937 indica lo que se reduce el número de millas que se podrán recorrer por galón de combustible
cuando se aumenta en una pulgada cúbica las cilindradas del coche y el resto de variables permancen
constantes.
El -0.031157 indica lo que se reduce el número de millas que se podrán recorrer por galón de combustible
cuando se aumenta en un caballo la potencia del coche y el resto de variables permancen constantes.
El -3.800891 indica lo que se reduce el número de millas que se podrán recorrer por galón de combustible
cuando se aumenta en mil libras el peso del coche y el resto de variables permancen constantes.
d) Descomponga la varianza de la variable mpg.
La variabilidad de los datos (SST) puede descomponerse en dos términos: la variabilidad de los residuos
(SSE) y la variabilidad del modelo de regresión (SSR).
Sus expresiones matemáticas son:

n
X
SST = (yi − ȳ)2 = SSE + SSR
i=1

donde
n
X
SSE = (yi − ŷi )2
i=1
n
X
SSR = (ŷi − ȳ)2
i=1

3
e) Calcula la variabilidad de los datos o suma de cuadrados total (SST), la variabilidad de los residuos o suma
de cuadrados residual (SSE) y la variabilidad de la recta o suma de cuadrados debida a la regresión (SSR).
¡Recuerda! La tabla anova en R devuelve las sumas secuenciales debida a la regresión, es por ello, que se
calcula la SSR como la suma de las sumas secuenciales.
AN_modelo1<-anova(modelo1)
AN_modelo1

## Analysis of Variance Table


##
## Response: mpg
## Df Sum Sq Mean Sq F value Pr(>F)
## disp 1 808.89 808.89 116.1536 1.797e-11 ***
## hp 1 33.67 33.67 4.8342 0.036329 *
## wt 1 88.50 88.50 12.7087 0.001331 **
## Residuals 28 194.99 6.96
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
SSR<-AN_modelo1$`Sum Sq`[1]+AN_modelo1$`Sum Sq`[2]+AN_modelo1$`Sum Sq`[3]
SSR

## [1] 931.0565
SSE<-AN_modelo1$`Sum Sq`[4]
SSE

## [1] 194.9907
SST<-SSR+SSE
SST

## [1] 1126.047
f) Analiza la bondad de ajuste.
Tenemos que analizar tres aspectos (el error residual estimado s, el R2 y el test de significación para la
regresión.)
El error residual estimado:
Resu_modelo1$sigma

## [1] 2.63893
El R2 y el Ra2
Resu_modelo1$r.squared

## [1] 0.8268361
Resu_modelo1$adj.r.squared

## [1] 0.8082829
El R2 se interpreta como: el 82,68% de la variabilidad de los datos es explicada por el modelo. El Ra2 es una
medida que nos permitirá comparar modelos con distinto número de variables, ya que “ajusta” su valor al
número de variables que tiene el modelo.
Finalmente analizamos el test de significación de la regresión, que se define como:

H0 : β1 = 0, β2 = 0, β3 = 0H1 : βj 6= 0, al menos para un j ∈ {1, 2, 3}

4
Observamos que el p-valor es 8.65e-11 <0.05=α, por tanto, hay evidencias significativas para rechazar la
hipótesis nula de que todos los coeficientes del modelo lineal sean cero.
Resu_modelo1

##
## Call:
## lm(formula = mpg ~ disp + hp + wt, data = datos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -3.891 -1.640 -0.172 1.061 5.861
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 37.105505 2.110815 17.579 < 2e-16 ***
## disp -0.000937 0.010350 -0.091 0.92851
## hp -0.031157 0.011436 -2.724 0.01097 *
## wt -3.800891 1.066191 -3.565 0.00133 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.639 on 28 degrees of freedom
## Multiple R-squared: 0.8268, Adjusted R-squared: 0.8083
## F-statistic: 44.57 on 3 and 28 DF, p-value: 8.65e-11
g) Calcula el coeficiente de determinación y el coeficiente de determinación ajustado.
Visto en el apartado anterior.
h) Calcule un intervalo de confianza al 92% para la estimación de los parámetros del modelo. Interprete los
resultados.
confint(modelo1, level=0.92)

## 4 % 96 %
## (Intercept) 33.27101546 40.93999508
## disp -0.01973827 0.01786425
## hp -0.05193072 -0.01038238
## wt -5.73772383 -1.86405734
Observamos que el cero está incluido en el intervalo de confianza de la variable disp lo que nos lleva a pensar
que probablemente esta variable regresora no sea significativa en la regresión a un nivel de confianza del 92%.
Para el resto de coeficientes se observa que el cero no está contenido en el intervalo, por tanto, es probable
que su aportación sí sea significativa. A continuación, validaremos estos resultados utilizando los contrastes
de hipótesis.
i) Analiza si los coeficientes de regresión de manera individual son significativos dados los demás regresores
del modelo.
Resu_modelo1

##
## Call:
## lm(formula = mpg ~ disp + hp + wt, data = datos)
##
## Residuals:
## Min 1Q Median 3Q Max

5
## -3.891 -1.640 -0.172 1.061 5.861
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 37.105505 2.110815 17.579 < 2e-16 ***
## disp -0.000937 0.010350 -0.091 0.92851
## hp -0.031157 0.011436 -2.724 0.01097 *
## wt -3.800891 1.066191 -3.565 0.00133 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 2.639 on 28 degrees of freedom
## Multiple R-squared: 0.8268, Adjusted R-squared: 0.8083
## F-statistic: 44.57 on 3 and 28 DF, p-value: 8.65e-11
Analizamos los siguientes contrastes:

H0 : β0 = 0, en presencia del resto de regresores del modeloH1 : β0 6= 0 en presencia del resto de regresores del modelo

Observamos que el p-valor < 2e-16, por tanto hay evidencias significativas para rechazar que el intercepto sea
cero.

H0 : β1 = 0, en presencia del resto de regresores del modeloH1 : β1 6= 0 en presencia del resto de regresores del modelo

Observamos que el p-valor = 0.92851, por tanto NO hay evidencias significativas para rechazar que el
coeficiente asociado a la variable regresora disp sea cero. Esto nos indica que esta variable puede ser eliminada
del modelo.

H0 : β2 = 0, en presencia del resto de regresores del modeloH1 : β2 6= 0 en presencia del resto de regresores del modelo

Observamos que el p-valor = 0.01097 < 0.05, por tanto hay evidencias significativas para rechazar que el
coeficiente asociado a la variable regresora hp sea cero.

H0 : β3 = 0, en presencia del resto de regresores del modeloH1 : β3 6= 0 en presencia del resto de regresores del modelo

Observamos que el p-valor = 0.00133 < 0.05, por tanto hay evidencias significativas para rechazar que el
coeficiente asociado a la variable regresora wt sea cero.
j) Calcula la suma de cuadrados de la regresión debida a la variable disp teniendo en cuenta que la variable
hp está en el modelo? SS(disp|β0 , hp)
Puesto que la tabla anova devuelve la sumas secuenciales, necesitamos generar un nuevo modelo. ¡Truco!
Para generar este modelo el orden en el que se indican las variables regresoras es fundamental. Primero debe
aparecer la variable regresora hp y en segundo lugar la variable regresora disp.
modelo_aux<-lm(mpg~hp+disp,data=datos)
anova(modelo_aux)

6
## Analysis of Variance Table
##
## Response: mpg
## Df Sum Sq Mean Sq F value Pr(>F)
## hp 1 678.37 678.37 69.394 3.498e-09 ***
## disp 1 164.18 164.18 16.795 0.0003063 ***
## Residuals 29 283.49 9.78
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Por tanto, SS(disp|β0 , hp)= 164.18
k) Analiza si la variable hp es significativa para la regresión dado que el regresor wt se encuentra en el modelo.
Puesto que la tabla anova devuelve los contrastes secuenciales, necesitamos generar un nuevo modelo. ¡Truco!
Para generar este modelo el orden en el que se indican las variables regresoras es fundamental. Primero
debe aparecer la variable regresora wt y en segundo lugar la variable regresora hp. Nota: utilizaremos la
notación del moelo original, es decir, β1 representa al coeficiente asociado a la variable disp, β2 representa al
coeficiente asociado a la variable hp y β3 representa al coeficiente asociado a la variable wt.

H0 : β2 = 0, en presencia de la variable regresora wtH1 : β2 6= 0 en presencia de la variable regresora wt

modelo_aux2<-lm(mpg~wt+hp,data=datos)
anova(modelo_aux2)

## Analysis of Variance Table


##
## Response: mpg
## Df Sum Sq Mean Sq F value Pr(>F)
## wt 1 847.73 847.73 126.041 4.488e-12 ***
## hp 1 83.27 83.27 12.381 0.001451 **
## Residuals 29 195.05 6.73
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Observamos que el p-valor asociado es 0.001451. Por tanto hay evidencias significativas para rechazar la
hipótesis nula. Es decir, podemos asumir que la variable hp es significativa para la regresión en presencia de
la variable wt.
l) Predice el consumo de combustible de un coche con una cilindrada de 150 pulgadas cúbicas, 70 caballos y
3.5 miles libras y calcula el intervalo de confianza al 93% para dicha predicción. ¿Cuál es el error máximo
que estamos cometiendo al dar esta predicción?
En primer lugar comprobamos que el valor a predecir se encuentra entre los máximos y mínimos de los valores
de las variables estudiados en el modelo. En clase de teoría vimos que para extraer conclusiones relevantes
habría que hacer una comprobación adicional que no veremos en este curso, por lo que lo siguiente no nos
asegura que estemos dentro de la región de las observaciones originales. Pero en el caso que no se verificara,
si podríamos concluir que la predicción no es fiable.
summary(datos)

## mpg disp hp wt
## Min. :10.40 Min. : 71.1 Min. : 52.0 Min. :1.513
## 1st Qu.:15.43 1st Qu.:120.8 1st Qu.: 96.5 1st Qu.:2.581
## Median :19.20 Median :196.3 Median :123.0 Median :3.325
## Mean :20.09 Mean :230.7 Mean :146.7 Mean :3.217
## 3rd Qu.:22.80 3rd Qu.:326.0 3rd Qu.:180.0 3rd Qu.:3.610

7
## Max. :33.90 Max. :472.0 Max. :335.0 Max. :5.424
En principo todas las variables se encuentra entre el máximo y el mínimo de los valores estudiados.
IC_p<-predict(modelo1, data.frame(disp=150,hp=70, wt=3.5), interval="prediction", 0.92)
IC_p

## $fit
## fit lwr upr
## 1 21.48088 15.61989 27.34187
##
## $se.fit
## [1] 1.105781
##
## $df
## [1] 28
##
## $residual.scale
## [1] 2.63893
(IC_p$fit[3]-IC_p$fit[2])/2

## [1] 5.860988
Por tanto, se predice que el consumo de combustible de un coche de esas características será de 21.48088
millas por galón con un intervalo de confianza asociado para esa preicción IC92% = [15.61989, 27.34187]
El error máximo que estamos cometiendo a ese nivel de confianza será la mitad del amplitud del intervalo, es
decir, 5.860988
m) Estima el valor medio del consumo de combustible de un coche con una cilindrada de 150 pulgadas cúbicas,
70 caballos y 3.5 miles de libras. Obtenga un intervalo de confianza con una confianza del 93% para esta
estimación. ¿Cuál es el error máximo que estamos cometiendo al dar esta estimación?
En el apartado anterior ya comprobamos que los valores se encuentran entre los mínimos y máximos estudiados.
IC_m<-predict(modelo1, data.frame(disp=150,hp=70, wt=3.5), interval="confidence", 0.93)
IC_m

## $fit
## fit lwr upr
## 1 21.48088 19.21579 23.74597
##
## $se.fit
## [1] 1.105781
##
## $df
## [1] 28
##
## $residual.scale
## [1] 2.63893
(IC_m$fit[3]-IC_m$fit[2])/2

## [1] 2.26509
Por tanto, se estima que el consumo de combustible medio de un coche de esas características será de 21.48088
millas por galón con un intervalo de confianza asociado para esa predicción IC93% = [19.21579, 23.74597]

8
El error máximo que estamos cometiendo a ese nivel de confianza será la mitad del amplitud del intervalo, es
decir, 2.26509.
2. La variable precio representa el precio del alquiler mensual, la variable área representa los metros
cuadrados del apartamento y la variable Pisci representa si el apartamento tiene acceso a piscina
comunitaria y en tal caso el tamaño de la misma.
Precio<-c(550 , 580 , 570 , 938 , 845, 660, 675 , 870, 1090, 1040, 1160, 1270 ,
922, 899 ,1076 , 770, 920, 1247 , 980, 576 ,799)
Area <- c(30, 40, 35, 60, 55, 37,42,56,75,69,80,85,63,60,74,44,56,78,63,34,50)
Pisci <- factor(x=c('Grande', 'Sin', 'Pequena', 'Pequena', 'Sin', 'Grande', 'Pequena',
'Pequena', 'Sin', 'Grande','Sin', 'Pequena', 'Sin', 'Sin', 'Sin',
'Grande','Grande','Grande','Pequena', 'Pequena', 'Pequena'),
levels=c('Sin','Pequena','Grande'))

Se desea construir un modelo lineal que explique el precio del alquiler en función del área y el tamaño de la
piscina.
a) ¿Cuál es la variable respuesta? ¿Cuáles son las variables regresoras? ¿Cuál sería el modelo a ajustar?
La variable respuesta es la variable precio (cuantitativa) y las variables regresoras son la variable área
(cuantitativa) y la variable Piscina (cualitativa) con tres niveles. Por tanto, en nuestra regresión tendremos
una variable regresora continua A y dos variables regresoras indicadoras PP, PG (número de niveles de la
variable cualitativa menos uno). Por como están definidos los datos, nuestro nivel de referencia será no tener
piscina (‘Sin’). Este siempre es el primero que aparece cuando se definen los niveles (función levels).
El modelo a ajustar sería:

y = β 0 + β1 A + β2 P P + β3 P G + 
donde  es un error aleatorio de esperanza nula y con varianza constante.
b) Obtenga las estimaciones puntuales de β ¿Cómo se interpretan estos coeficientes?
modelo<-lm(Precio~Area+Pisci)
summary(modelo)

##
## Call:
## lm(formula = Precio ~ Area + Pisci)
##
## Residuals:
## Min 1Q Median 3Q Max
## -55.246 -5.300 -2.351 8.067 28.768
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 54.7699 19.6387 2.789 0.012597 *
## Area 13.8448 0.2841 48.729 < 2e-16 ***
## PisciPequena 44.4769 10.7363 4.143 0.000681 ***
## PisciGrande 85.1873 11.5401 7.382 1.07e-06 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 19.89 on 17 degrees of freedom
## Multiple R-squared: 0.9932, Adjusted R-squared: 0.992
## F-statistic: 826.9 on 3 and 17 DF, p-value: < 2.2e-16

9
El modelo ajustado tiene la siguiente expresión:

y = 54.7699 + 13.8448A + 44.4769P P + 85.1873P G


El 54.7699 representa lo que costaría en euros un alquiler de un apartamento de cero m2 y sin piscina (lo que
no tiene sentido en la práctica), pero puede interpretarse como un gasto fijo de gestión.
El 13.8448 indica lo que se incrementa el alquiler en euros cuando se aumenta en un metro cuadrado el área
del apartamento y el resto de variables permancen constantes.
El 44.4769 representa lo que incrementa el alquiler si pasamos de no tener piscina a tener una piscina pequeña
en un apartamento con los mismos metros cuadrados.
El 85.1873 representa lo que incrementa el alquiler si pasamos de no tener piscina a tener una piscina grande
en un apartamento con los mismos metros cuadrados.
c) ¿Cuánto se espera que incremente el alquiler de un apartamento con los mismos metros cuadrados si en
lugar de tener acceso a piscina pequeña tuviera acceso a piscina grande?
modelo$coefficients[[4]]-modelo$coefficients[[3]]

## [1] 40.71044
Se espera que el alquiler se incremente en 40.71044 euros.

10

También podría gustarte