Trabajaremos con los datos de la base de datos airquality
de R; se trata de medidas diarias de la calidad del aire y de variables climatológicas tomadas en Nueva Yory entre mayo y septiembre de 1973. En concreto, se consideran las variables
Temp
: temperatura, en Fahrenheit.Wind
: velocidad del aire en millas por hora.Se pretende establecer un modelo lineal entra ambas variales, con Temp
como variable explicativa y Wind
como variable respuesta.
Teclea en un script y ejecuta las siguientes órdenes
x = airquality$Temp
y = airquality$Wind
Comprueba que la lectura ha sido correcta con la funcióin summary(): visualiza las primeras lineas de cada vector
summary(x)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 56.00 72.00 79.00 77.88 85.00 97.00
summary(y)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.700 7.400 9.700 9.958 11.500 20.700
las variables son numéricas y no parece haber datos ausentes.
Visualiza la nube de puntos para determinar de forma visual si tiene sentido utilizar un modelo lineal.
plot(x, y)
El modelo lineal parece adecuado. Recuerda poner primero la variable independiente y depués la dependiente.
Crea el modelo de regresión lineal y comprueba si se cumplen las hipótesis necesarias.
Recuerda que para crear el modelo lineal hay que poner primero la variable dependiente y después la independiente:
lmXY = lm(y ~ x)
par(mfrow = c(1, 2))
for(i in 1:2){
plot(lmXY, which = i)
}
par(mfrow = c(1, 1))
Los gráficos sugieren normalidad y homocedasticidad en los residuos. Aún así, se aconseja hacer los correspondientes contrastes:
# contastes de normalidad
shapiro.test(lmXY$residuals)
##
## Shapiro-Wilk normality test
##
## data: lmXY$residuals
## W = 0.9856, p-value = 0.1132
El contraste de normalidad es satisfactorio y el de homocedasticidad
# ---- homocedasticityTests
# H0: homocedasticidad en poblaciones normales
library(gvlma)
gvlma(lm(y ~ x), alphalevel = 0.01)
##
## Call:
## lm(formula = y ~ x)
##
## Coefficients:
## (Intercept) x
## 23.2337 -0.1705
##
##
## ASSESSMENT OF THE LINEAR MODEL ASSUMPTIONS
## USING THE GLOBAL TEST ON 4 DEGREES-OF-FREEDOM:
## Level of Significance = 0.01
##
## Call:
## gvlma(x = lm(y ~ x), alphalevel = 0.01)
##
## Value p-value Decision
## Global Stat 5.1614845 0.27113 Assumptions acceptable.
## Skewness 3.2306304 0.07227 Assumptions acceptable.
## Kurtosis 0.0005899 0.98062 Assumptions acceptable.
## Link Function 0.0417659 0.83807 Assumptions acceptable.
## Heteroscedasticity 1.8884982 0.16937 Assumptions acceptable.
también se cumple. Recuerda que hay que fijarse en la última línea, y que en este caso el rótulo puede llevar a equívoco: H0 es “los residuos son homocedásticos” (aunque el rótulo hable de heterocedasticidad). El modelo de regresión lineal tiene sentido.
Calcula los coeficientes de la recta de regresión y sus intervalos de confianza al 95% de confianza Interprétalos
Los coeficientes de la recta son
lmXY$coefficients
## (Intercept) x
## 23.2336881 -0.1704644
Observa que la pendiente es megativa, lo que quiere decir que temperaturas altas tienen asociados vientos menos veloces.
Por otro lado, los intervalos de confianza al 95% son
########################################
# INFERENCIA SOBRE LA RECTA DE REGRESION
# intervalo confianza coeficientes recta
confint(lmXY, level = 0.95)
## 2.5 % 97.5 %
## (Intercept) 19.0600210 27.407355
## x -0.2236649 -0.117264
El intervalo de confianza para el término independiente, en general, no tiene interés, porque se haya fuera de la zona en la que hemos recogido valores (extrapolación).
El intervalo de confianza para la pendiente indica que por cada unidad (grado F) que aumenta Temp
se espera que la velocidad del viento disminuya en entre 0.12 y 0.22 millas por hora.
Calcula, para las temperaturas Temp
= 65 y con Temp
= 70 : * El valor de Wind
predicho por el modelo.
* El intervalo de confianza para la velocidad media del viento predicha (intervalo de confianza) al nivel de confianza del 95%. * El intervalo para el valor de la velocidad del viento predicha (intervalo de predicción) al nivel de confianza del 95%.
La predicción puntual es la que aparece bajo la etiqueta fit
. Las etiquetas lwr
y upr
hacen referencia a lower y upper, los extremos inferior y superior del correspondiente intervalo:
x = airquality$Temp
y = airquality$Wind
lmXY = lm(y ~ x)
# intervalo de confianza valor predicho
predict(lmXY, newdata = data.frame(x = c(65, 70)),
interval = "confidence", level = 0.95)
## fit lwr upr
## 1 12.15350 11.30402 13.00298
## 2 11.30118 10.64714 11.95521
Este es el intervalo de confianza para el valor medio predicho
# intervalo de prediccion valor predicho
predict(lmXY, newdata = data.frame(x = c(65, 70)),
interval = "prediction", level = 0.95)
## fit lwr upr
## 1 12.15350 5.887386 18.41961
## 2 11.30118 5.058555 17.54380
Y este el intervalo de confianza para el valor predicho. Observa que en este caso el intervalo es mucho mayor, ya que los valores siempre están más dispersos que su promedio.