Universidad Nacional de Colombia Sede Medellín - Semestre 2021-1
Asignatura: Estadística II
Profesor: David Arango Londoño - davarangolon@unal.edu.co
Fecha: 5 de abril de 2021

Miembros del equipo

 

Preguntas:

Con base en los datos de ofertas de vivienda descargadas del portal Fincaraíz (datos_vivienda.xls) realizar los siguientes puntos:

Punto 1:

Realice un análisis exploratorio de las variables precio de vivienda (millones de pesos COP) y área de la vivienda (metros cuadrados) - incluir gráficos e indicadores apropiados interpretados.
Cargamos los datos:
library(readxl)
datos_vivienda <- read_excel("datos_vivienda.xlsx")
datos_vivienda
## # A tibble: 26 x 2
##    Area_contruida precio_millon
##             <dbl>         <dbl>
##  1             86           250
##  2            118           385
##  3            130           395
##  4            181           419
##  5             86           240
##  6             98           320
##  7            170           480
##  8             96           268
##  9             85           240
## 10            170           450
## # ... with 16 more rows

Se observa que la base de datos contiene información sobre el precio (en millones de pesos) de una propiedad [X], de acuerdo a el área construida (en metros cuadrados) de esta propiedad [Y]

Análisis exploratorio:
attach(datos_vivienda)
summary(datos_vivienda)
##  Area_contruida  precio_millon  
##  Min.   : 80.0   Min.   :240.0  
##  1st Qu.: 86.0   1st Qu.:251.2  
##  Median : 97.0   Median :305.0  
##  Mean   :115.7   Mean   :332.1  
##  3rd Qu.:130.0   3rd Qu.:395.0  
##  Max.   :195.0   Max.   :480.0
par(mfrow = c(1,2))
hist(Area_contruida, col = "gray")
hist( precio_millon, col = "gray")

Observamos que el promedio del área construida de las propiedades es de 115.7 m\(^2\). También observamos que el precio promedio es de 332.1 millones de pesos.

 

Punto 2:

Realice un análisis exploratorio bivariado de datos enfocado en la relación entre la variable respuesta (Y = precio) en función de la variable predictora (X = área) - incluir gráficos e indicadores apropiados interpretados.
plot(Area_contruida, precio_millon)

cor(Area_contruida, precio_millon)
## [1] 0.9190295

Al ver el gráfico de puntos entre el área construida y el precio en millones podemos observar una relación directamente proporcional y podríamos llegar a pensar que es lineal, aunque se puede llegar también a observar una ligera curvatura de los datos siguiendo un comportamiento parecido al de la función \(Y = ln(X)\).

Al calcular el coeficiente de correlación de Pearson entre las 2 variables nos arroja aproximadamente 0.92, lo cual nos confirma la fuerte relación entre las 2 variables.

 

Punto 3:

Estime el modelo de regresión lineal simple entre precio = f(área) +e. Interprete los coeficientes del modelo \(\beta_0\), \(\beta_1\) en caso de ser correcto.
mod = lm(precio_millon~Area_contruida)
summary(mod)
## 
## Call:
## lm(formula = precio_millon ~ Area_contruida)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -51.673 -25.612  -6.085  24.875  67.650 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)      86.234     22.479   3.836 0.000796 ***
## Area_contruida    2.124      0.186  11.422 3.45e-11 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 33.05 on 24 degrees of freedom
## Multiple R-squared:  0.8446, Adjusted R-squared:  0.8381 
## F-statistic: 130.5 on 1 and 24 DF,  p-value: 3.45e-11
plot(Area_contruida, precio_millon)
abline(mod, col="red")

Observamos que el modelo estimado de regresión lineal simple es: \(Precio = 86.234 + (2.124)(Área)\).

\(\beta_0= 86.234\) En este caso el coeficiente \(\beta_0\) no es interpretable ya que, al estar hablando en area construida, no tiene sentido hablar de una propiedad con área construida igual a 0. Esto se podría analizar como el precio del lote, sin embargo no se nos hace referencia a esto en la descripción de los datos, por lo que hacemos caso omiso a de ello. Además, se observa que el coeficiente es significativamente diferente de cero.

\(\beta_1 = 2.124\) nos indica que por cada metro cuadrado construido adicional, el precio se incrementa en aproximadamente COP $2’124,000. Además, se observa que el coeficiente es significativamente diferente de cero.

 

Punto 4:

Construir un intervalo de confianza (95%) para el coeficiente \(\beta_1\), interpretar y concluir si el coeficiente es igual a cero o no. Compare este resultado con una prueba de hipotesis t.
beta_1 = 2.124
ee_b1 = 0.186

t = qt(df = 24,p = 0.975)
Li = (beta_1 - ee_b1*t)
Ls = (beta_1 + ee_b1*t)
c(Li,Ls)
## [1] 1.740115 2.507885

Del proceso de construcción del intervalo de confianza para \(\beta_1\) podemos concluir que en dicho intervalo [1.74, 2.5] no se encuentra contenido el 0, por lo que podemos concluir que \(\beta_1\) es significativamente distinto de 0. Esto es reafirmado por la prueba de hipótesis t.

Planteamos \(H_0: \beta_1 = 0\) vs \(H_1: \beta_1 \neq 0\)

t_b1 = 11.422
t <= t_b1
## [1] TRUE

Como el valor de prueba de t es mayor que el valor t estadístico rechazamos la hipótesis nula \(H_0: \beta_1 = 0\). Por lo que concluimos que este coeficiente es distinto de 0.

 

Punto 5:

Calcule e interprete el indicador de bondad y ajuste \(R^2\).

El summary del modelo nos arroja el valor de \(R^2 = 0.84\), según este valor se puede concluir que: El modelo explica el 84% de la variabilidad del precio de una vivienda en función de su área construida.

summary(mod)
## 
## Call:
## lm(formula = precio_millon ~ Area_contruida)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -51.673 -25.612  -6.085  24.875  67.650 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)      86.234     22.479   3.836 0.000796 ***
## Area_contruida    2.124      0.186  11.422 3.45e-11 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 33.05 on 24 degrees of freedom
## Multiple R-squared:  0.8446, Adjusted R-squared:  0.8381 
## F-statistic: 130.5 on 1 and 24 DF,  p-value: 3.45e-11
R_2 = 0.8446

 

Punto 6:

Cual seria el precio promedio estimado para un apartamento de 110 metros cuadrados? Considera entonces con este resultado que un apartamento en la misma zona con 110 metros cuadrados en un precio de 200 millones seria una buena oferta? Que consideraciones adicionales se deben tener?.
predict(mod, list(Area_contruida=110))
##        1 
## 319.8706
predict(mod, list(Area_contruida=110), interval = "confidence")
##        fit      lwr      upr
## 1 319.8706 306.3133 333.4279

Con base en la predicción realizada sobre el modelo, podemos concluir que el precio de un apartamento de \(110 m^2\) es de, aproximadamente COP $319’870,600. Además, con base en el intervalo [306.3, 333.4], podemos afirmar que el precio de un apartamento de \(110 m^2\) oscila entre COP $306’313,300 y COP $333’427,900, por lo que, un apartamento de esta área por COP $200’000,000 se puede considerar como una buena oferta.

 

Punto 7:

Realice la validación de supuestos del modelo por medio de gráficos apropiados, interpretarlos y sugerir posibles soluciones si se violan algunos de ellos.
ei = mod$residuals
par(mfrow = c(2,2))
plot(mod)

Podemos observar, respecto a los supuestos del \(e_i\), lo siguiente:

  1. Media cero: Se cumple por defecto.

  2. Homogeneidad de varianza: Se observa que tiene un comportamiento no aleatorio, por lo que no se valida este supuesto.

  3. Normalidad: Se observa en la gráfica que los datos se no ajustan muy bien a la línea de normalidad en el QQPlot, por lo que podemos afirmar que no siguen una distribución normal.

  4. Independencia: Dado que estos registros no corresponden a datos en el tiempo o espacio, no se tiene un orden temporal para realizar la validación del supuesto. Se valida por la definición del tipo de datos de corte transversal.

 

Punto 8:

De ser necesario realice una transformación apropiada para mejorar el ajuste y supuestos del modelo.

Como se mencionó en el punto 2 se puede observar una relación ligeramente curvada con la forma de la función: \(Y = ln(X)\). Ahora, observamos que el modelo se puede ver como \(Y = \beta_0 +\beta_1ln(X) + \varepsilon\)

Por esto, decidimos realizar una transformación de la forma \(X^* = ln(X)\), por lo que nuestro modelo transformado queda de la forma \(Y = \beta_0 +\beta_1X^* + \varepsilon\)

lnx = log(Area_contruida)
plot(lnx, precio_millon)

Vemos que en la transformación del modelo se observa una relación mucho más lineal que anteriormente.

mod_t = lm(precio_millon~lnx)
summary(mod_t)
## 
## Call:
## lm(formula = precio_millon ~ lnx)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -45.837 -20.153  -1.878  20.145  55.145 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  -948.53      89.09  -10.65 1.42e-10 ***
## lnx           271.88      18.88   14.40 2.63e-13 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 27 on 24 degrees of freedom
## Multiple R-squared:  0.8963, Adjusted R-squared:  0.8919 
## F-statistic: 207.4 on 1 and 24 DF,  p-value: 2.63e-13
plot(lnx, precio_millon)
abline(mod_t, col="blue")

Ahora, el modelo transformado es: \(Y = -948.53 + 271.88X\), que nos indica que: Por un aumento unitario en el \(ln(Área‏‏construida)\), el precio aumenta en promedio COP $27’188.000

 

Punto 9:

De ser necesario compare el ajuste y supuestos del modelo inicial y el transformado.

Observamos que ahora, el ajuste \(R^2 = 0.89\) del modelo transformado aumentó con respecto al del modelo original. Este ajuste nos dice que: El modelo transformado explica el 89% de la variabilidad del precio de una vivienda en función del logaritmo natural de su área construida.

Ahora, realicemos la prueba de supuestos de nuevo para el modelo transformado:

ei_t = mod_t$residuals
par(mfrow = c(2,2))
plot(mod_t)

Podemos observar, respecto a los supuestos del \(e_i\), lo siguiente:

  1. Media cero: Se cumple por defecto.

  2. Homogeneidad de varianza: Se observa ahora, que el modelo transformado tiene un comportamiento bastante más aleatorio, por lo que afirmamos que este supuesto se cumple este supuesto gráficamente.

  3. Normalidad: Se observa en la gráfica que los datos ahora se ajustan mucho mejor a la línea de normalidad en el QQPlot, por lo que podemos afirmar que este supuesto también se cumple gráficamente

  4. Independencia: Dado que estos registros no corresponden a datos en el tiempo o espacio, no se tiene un orden temporal para realizar la validación del supuesto. Se valida por la definición del tipo de datos de corte transversal.

 

Punto 10:

Realizar una función en R la cual permita ingresar el valor de X, Y,(1−α)% en una regresión lineal simple y retorne el intervalo de confianza para \(\beta_1\) dado un nivel de confianza de entrada (1 − α)%
IC_Beta1 = function(X,Y,alfa,decimal){
  mod = lm(Y~X)
  beta_1 = mod$coefficients[2]
  ee_b1 = coef(summary(mod))[,2][2]
  t = qt(df = length(X)-2 ,p = alfa + (1-alfa)/2)
  Li = round((beta_1 - ee_b1*t), decimal)
  Ls = round((beta_1 + ee_b1*t), decimal)
  intervalo = paste("El intervalo de confianza al", alfa*100, "% para β1 es: [", Li, ",", Ls, "]")
  return(intervalo)
}

Nota: Adicionalmente añadimos un cuarto parámetro que indica cuantos decimales se quieren en los límites del intervalo.

Ejemplos:

Verificando esta función con los datos utilizados en los puntos anteriores comprobamos que está correctamente definida y arroja los valores hallados en el punto 4:

IC_Beta1(datos_vivienda$Area_contruida, datos_vivienda$precio_millon, 0.95, 2)
## [1] "El intervalo de confianza al 95 % para ß1 es: [ 1.74 , 2.51 ]"

También podemos realizar la prueba con una base de datos diferente. Por ejemplo, probemos la función con la base de datos de ventas usada en la clase 7 del curso:

library(readxl)
ventas <- read_excel("ventas.xlsx")
IC_Beta1(ventas$clientes, ventas$ventas, 0.90, 3)
## [1] "El intervalo de confianza al 90 % para ß1 es: [ 0.186 , 0.335 ]"