Taller de Regresión Lineal

Cargar Datos

El primer paso es abrir el archivo datos_vivienda1.xlsx que asumismos se encuentra en el mismo directorio de trabajo en donde estamos.

De una vez, miramos su tamaño con dim(dv) para determinar cuantas filas y columnas (variables) tenemos en los datos.

Usamos el attach(dv) para poder referirnos directamente a las variables sin tener que incluir el nombre del dataframe, que en este caso es dv.

getwd()
## [1] "/Users/jaimeareinosocastillo/Library/CloudStorage/GoogleDrive-jreinoso2@gmail.com/Mi unidad/Maestria Ciencias de Datos/Semestre 1/Estadística/Modulo 3"
library(readxl)
dv <- read_excel("datos_vivienda1.xlsx")
dim(dv)
## [1] 26  2
attach(dv)

PREGUNTA 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.

R/ Lo que hacemos es ejecutar el comando summary(dv) para obtener una resumen de la información de las variables.

summary(dv) 
##  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

Encontramos que nos han entregado 26 filas y 2 columnas: Area_contruida y precio_millon.

Observamos que la variable* Area_contruida (en metros cuadrados) tiene como valor mínimo 80 y máximo 195. También se observa que tiene como media 97.

Sobre precio_millon se observa que su valor mínimo es de 240 y máximo ese de 480, con una media de 305.

Ahora procedemos a obtener el histograma de ambas variables para conocer su distribución.

hist(Area_contruida, breaks = 10)

hist(precio_millon, breaks=10)

En ambos casos observamos según el histograma que hay mayor frecuencia de valores menores. En cambio, hay menor frecuencia de valores mayores de ambas variables. Esto se interpreta como que hay más ejemplos de viviendas de área menor y precio menor y menos muestras de viviendas de área mayor y y precio mayor.

PREGUNTA 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=area) - incluir gráficos e indicadores apropiados interpretados.

Para responder a la pregunta, un primer paso es obtener un diagrama de dispersion, colocando como x la variable Area_contruida y como y la variable precio_millon.

plot(Area_contruida, precio_millon, pch = 19, col = "blue")

El diagrama de dispersión anterior nos confirma la hipótesis y se observan tres cluster de datos. Uno de area menor con precio menor, un segundo con area media y precio medio y un último con área mayor y precio medio o superior, cada cluster con menos datos que el cluster anterior.

Se pude concluir también al observar el gráfico, que pareciera existir una tendencia mas o menos clara a que entre más área, más precio, siu ser perfecta lineal, pues la velocidad de crecimiento del area es mayor a la velocidad de crecimiento del precio.

PREGUNTA 3:

Estime el modelo de regresión lineal simple entre 𝑝𝑟𝑒𝑐𝑖𝑜 = 𝑓(𝑎𝑟𝑒𝑎) + 𝑒. Interprete los coeficientes del modelo 𝛽0, 𝛽1 en caso de ser correcto.

Como primera medida, calculamos el coeficiente de correlación de pearson para conocer qué tan cerca se encuentran a una relación lineal entre las dos variables.

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

Su resultado nos indica que efectivamente la relación entre las dos variables es lineal, pues su valor es de 0.91.

Dado lo anterior, podemos proceder a obtener el modelo de regresión lineal

model = lm(precio_millon ~ Area_contruida)
summary(model)
## 
## 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

El B1 que acompaña a Area_contruida es 2.124, lo cual nos indica que por cada unidad que aumenta el Area_contruida se aumenta en 2.124 unidades el precio por millon

El B0 nos da 86.234, lo que indica que si no hay área, el precio por millón sería 86.234, aunque en este concepto esto no tiene sentido (no se puede tener una vivienda sin área)

En cuanto a los valores p, se observa que tanto Bo como B1 aparecen como significativos pues hay tres asteriscos asociados a cada una.

La ecuación entonces nos queda:
precio_millon = 2.123 x Area_contruida + 86.234

PREGUNTA 4

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

El resultado de esta pregunta se obtiene revisando el summary del modelo que fue presentado en la pregunta anterior. Los valores de p de Bo precisamente indican que el valor actual de ese coeficiente es significativo, es decir, que al compararlo con 0, el valor de B0 = 0 no lo es.

PREGUNTA 5

Calcule e interprete el indicador de bondad y ajuste 𝑅2.

En cuanto a r2, nos referimos nuevamente al summary en donde tenemos un resultado de 0.8446 que nos indica que este modelo logra explicar un 82% de los valores del precio a partir de los valores del área.

Sin embargo, es conveniente observar las gráficas de residuos para confirmar gráficamente el nivel de ajuste. Este trabajo se hace en la pregunta 7.

PREGUNTA 6a

¿Cuál sería el precio promedio estimado para un apartamento de 110 metros cuadrados?

La forma de contestar a esta pregunta, consiste en aplicar el modelo de regresión lineal que se obtuvo antes a un nuevo conjunto de datos dependientes (Area_contruida) con el valor dado de 110 metros cuadrados.

Esto se ejecuta con el comando predict.

predict(model, newdata = list(Area_contruida=110))
##        1 
## 319.8706

El modelo nos da una respuesta de 319.87 millones de pesos para un área de 110 metros cuadrados.

Es conveniente notar que el valor de área de 110 metros cuadros se encuentra en el límite superior del primer cluster encontrado, el cual es el que más datos tiene, lo cual nos hace suponer que su predicción fue la adeucada.

PREGUNTA 6b:

Considera entonces con este resultado que un apartamento en la misma zona con 110 metros cuadrados en un precio de 200 millones sería una buena oferta.

R/ Si yo soy el comprador, y tengo la data dada, y me hacen esa oferta sería un precio muy bueno de compra. Si por el contrario, si soy el vendedor y me hacen esa oferta, esta sería muy mala pues yo estaría esperando un valor de compra cercano a los 319 millones de pesos y no de 200 millones.

PREGUNTA 6c

¿Qué consideraciones adicionales se deben tener?.

R/ Evidentemente hay más variables a considerar, como por ejemplo la ubicación del inmueble que podría hacer que el precio pudiera ser interesante para compra y/o venta. Por otro lado, la data que poseemos es poca y podría ser que tuvieramos un sesgo en ella y por tanto habría que investigar un poco más. De hecho, entre más área, menos datos tiene el modelo y eso podría implicar que el modelo “aumenta” su error en el precio a medida que se aumenta la cantidad de área pues hay menos datos disponibles. Esta última afirmación podríamos verificarla cuando observemos las gráficas de residuos.

PREGUNTA 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.

par(mfrow=c(2,2))
plot(model)

La grafica Resiuals vs Fitted no tiene la distribución esperada (una linea recta), sino que parece una parábola inversa. Esto implica que hay información en los datos que no están bien capturados con una regresión lineal simple. Esto podría implicar alguna transformación.

La curva QQ se observa un buen ajuste para una distribución normal del residual aunque en los limites de la misma se observan desviaciones.

Dado lo anterior, seguramente deberemos estudiar alguna transforamción que por la forma vista en el primer plot entre las 2 variables podria indicar una transformación exponencial (pues el comportamiento es inverso al visto en clase en donde se aplicó una logarítmica).

PREGUNTA 8

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

R/ por la forma de la grafica entre las dos variables, esta pareciera insinuar que una buena transforamción podría ser exponencial.

model2 = lm(exp(precio_millon) ~ Area_contruida)
summary(model2)
## 
## Call:
## lm(formula = exp(precio_millon) ~ Area_contruida)
## 
## Residuals:
##         Min          1Q      Median          3Q         Max 
## -5.051e+207 -1.821e+207 -1.314e+206  3.656e+206  2.512e+208 
## 
## Coefficients:
##                   Estimate  Std. Error t value Pr(>|t|)
## (Intercept)    -4.639e+207         Inf       0        1
## Area_contruida  4.970e+205         Inf       0        1
## 
## Residual standard error: Inf on 24 degrees of freedom
## Multiple R-squared:    NaN,  Adjusted R-squared:    NaN 
## F-statistic:   NaN on 1 and 24 DF,  p-value: NA
par(mfrow=c(2,2))
plot(model2)

PREGUNTA 9

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

R/ Se observa que tanto el grafico residual vs fitted es mucho mejor que el anterior al igual que el grafico de la curva Normal QQ. Esto sustenta entonces que fue correcto utilizar la transformación.

Ahora procedamos a hacer la predicción del valor esperado de una vivienda de 110 metros cuadros. Es importante notar, que como se hizo una transformación exponencial para obtener un modelo lineal, la respuesta estaría expresada en términos exponenciales y por lo tanto es necesario realizar una transformación inversa del resultado obtenido, que en este caso corresponde a una función logaritmica natural log().

log(predict(model2, newdata = list(Area_contruida=110)))
##        1 
## 476.4453

R/ Como se observa, el resultado obtenido con el nuevo modelo model2 ante la consulta del costo de una partamento de 110 metros cuadrados (+400) es más alto que el valor obtenido con el primero modelo model (aprox 200).