Se pretende predecir el valor de la vivienda en función de la cantidad de habitaciones por vivienda
library(readxl)
datos <- read_excel("base de datos.xlsx")
Como se trata de regresión lineal simple, entonces vamos escoger solo
dos variables:
Variable independiente X: Promedio de habitaciones por
vivienda
Variable dependiente Y: Valor mediano de las casas ocupadas
por el dueño en unidades de $1000s
X<-datos$rm
Y<-datos$medv
data<-data.frame(X,Y)
head(data)
## X Y
## 1 6.575 24.0
## 2 6.421 21.6
## 3 7.185 34.7
## 4 6.998 33.4
## 5 7.147 36.2
## 6 6.430 28.7
Empleando la función lm() se genera un modelo de regresión lineal por mínimos cuadrados en el que la variable respuesta es medv (Y) y el predictor lstat (X). La sintaxis de la función lm requiere indicar primero la ecuación que se desea estimar, indicando primero la variable dependiente y después del signo s las variables independientes, en este caso al ser una regresión simple, solo se indica una variable, finalmente se debe indicar en la opción data el nombre del objeto donde tomará los datos en este caso el objeto que llamamos data :
modelo <- lm(Y ~ X, data=data)
modelo$coefficients
## (Intercept) X
## -34.670621 9.102109
De donde: \(\hat{\beta}_0=-34.67\) y
\(\hat{\beta}_1=9.10\).Con estos datos,
podemos decir que la ecuación de regresión estimada es:
\[y = -34.67+9.10x\].
coefci(modelo, level=.95)
## 2.5 % 97.5 %
## (Intercept) -39.876641 -29.464601
## X 8.278855 9.925363
La interpretación de este intervalo de confianza es: Dado el coeficiente de confianza de 95%, en 95 de cada 100 casos, los intervalos como 8.28 ≤ β1 ≤ 9.93 contendrán al verdadero valor de β1.
library(broom)
resultado<-modelo %>%
tidy()
names(resultado)<-c("Variable", "beta", "Error_estandar","t","p_value")
resultado
## # A tibble: 2 × 5
## Variable beta Error_estandar t p_value
## <chr> <dbl> <dbl> <dbl> <dbl>
## 1 (Intercept) -34.7 2.65 -13.1 6.95e-34
## 2 X 9.10 0.419 21.7 2.49e-74
\(H_0\): \(\beta_1\) \(=\) 0 (El promedio de
habitaciones por vivienda no influye en el valor mediano de las casas
ocupadas por el dueño.)
\(H_a\): \(\beta_1\) \(\neq\) 0 (El promedio de
habitaciones por vivienda influye en el valor mediano de las casas
ocupadas por el dueño.)
modelo %>% aov() %>% summary()
## Df Sum Sq Mean Sq F value Pr(>F)
## X 1 20654 20654 471.8 <2e-16 ***
## Residuals 504 22062 44
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
El punto crítico para esta prueba es \(F_{0.95,1,504}=3.86\) y dado que \(F_{cal} = 471.8 > F_{0.95,1,504}=3.86\) se rechaza la \(H_0\) , por lo tanto; al nivel de 0.05 de significancia, existe suficiente evidencia estadística para indicar que el promedio de habitaciones por vivienda influye en el valor mediano de las casas ocupadas por el dueño ocupadas por el dueño.
\(p − valor\) < 0.05, se rechaza la Ho
summary(modelo)$sigma**2 # Varianza de la regresión
## [1] 43.77357
summary(modelo)$sigma # desviación estandar de regresión o error estándar de regresión
## [1] 6.61616
Limite inferior:
LI.var = sum(modelo$residuals**2)/qchisq(0.95,df=504)
LI.var
## [1] 39.58462
Limite superior:
LS.var = sum(modelo$residuals**2)/qchisq(0.05,df=504)
LS.var
## [1] 48.70828
summary(modelo)$r.squared
## [1] 0.4835255
predConf<-predict(modelo,interval="confidence",level=0.95)
ICMeanY<-cbind(X, Y,predConf)
head(ICMeanY)
## X Y fit lwr upr
## 1 6.575 24.0 25.17575 24.55039 25.80110
## 2 6.421 21.6 23.77402 23.18536 24.36269
## 3 7.185 34.7 30.72803 29.78817 31.66790
## 4 6.998 33.4 29.02594 28.20203 29.84984
## 5 7.147 36.2 30.38215 29.46676 31.29755
## 6 6.430 28.7 23.85594 23.26582 24.44606
Para \(x_0 = 6.575\) se obtiene un intervalo de confianza de \(24.6 \leq \mu Y/X_o \leq25.80\) esto es, si el procentaje de promedio de habitaciones por vivienda es de 6.575% se estima que en promedio el valor mediano de las casas ocupadas por el dueño se encuentre entre 24.6 y 25.80
S<-data
head(S)
## X Y
## 1 6.575 24.0
## 2 6.421 21.6
## 3 7.185 34.7
## 4 6.998 33.4
## 5 7.147 36.2
## 6 6.430 28.7
predY<-predict(modelo,S,interval="prediction",level=0.95)
IPY<-cbind(X, Y,predY)
head(IPY)
## X Y fit lwr upr
## 1 6.575 24.0 25.17575 12.16206 38.18943
## 2 6.421 21.6 23.77402 10.76205 36.78599
## 3 7.185 34.7 30.72803 17.69545 43.76062
## 4 6.998 33.4 29.02594 16.00120 42.05067
## 5 7.147 36.2 30.38215 17.35131 43.41299
## 6 6.430 28.7 23.85594 10.84390 36.86798
Tambien para un valor específico de xo se puede hacer la predicción; por ejemplo para xo = 8.5
xo<-data.frame(X=8.5)
predY<-predict(modelo,xo,interval="prediction",level=0.95)
cbind(xo, predY)
## X fit lwr upr
## 1 8.5 42.69731 29.55862 55.83599
Para \(x_o\) = 10.5 se obtiene el intervalo de confianza \(29.6 \leq \mu Y/X_o \ 55.84.\) si el procentaje de promedio de habitaciones por vivienda es de 8.5%, se estima que el valor mediano de las casas ocupadas por el dueño se encuentre entre 29.6 y 55.84.