Actividad 1 - Datos Rotación

Realice un análisis exploratorio de las variables precio de vivienda (millones de pesos COP) y area de la vivienda (metros cuadrados) - incluir graficos e indicadores apropiados interpretados.

## [1] "Area_contruida" "precio_millon"
##  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

En el Analisis exploratorio Univariadose presenta un dataset de 26 obs de 2 variables continuas, en el cual se muestran los datos de medidas de tendencia Central, Media, Mediana, se identifica que la Media del precio promedio de una vivienda es de 332 millones de pesos, el valor minimo es de 240 millones y el maximo es de 480 millones, y que el el minismo de Aréa construida es de 80mts2, con una media de 115.7mts2.

Graficos

Se presentan los graficos histogramas y Boxplot, en los cuales se observan que valor promedio del precio de una vivienda es de 332 millones de pesos y que el promedio por metro cuadrado es de 115mt2.

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=area) - incluir graficos e indicadores apropiados interpretados

Se evidencia que los datos se dividen en 3 grupos evidenciando que entre más metros 2 de aréa construida exista, mayor el precio por millones,

ggplot(datos, aes(x=datos$Area_contruida, y=datos$precio_millon, color= "blue3")) +
  ggtitle(substitute(italic("Figura 3. Diagrama de dispersión de X vs Y")))+
  stat_ellipse(geom="polygon", aes(color = "Blue"),
               alpha = 0.2,
               show.legend = FALSE,
               level = 0.95)+
  geom_point(show.legend=FALSE)

cor.p = cor(datos$precio_millon, datos$Area_contruida, method = "pearson")
cor.p
## [1] 0.9190295
cor.k = cor(datos$precio_millon, datos$Area_contruida, method = "kendall")
cor.k
## [1] 0.7934597
cor.s = cor(datos$precio_millon, datos$Area_contruida, method = "spearman")
cor.s
## [1] 0.9173882
library(psych)
pairs.panels(datos, main="Correlación a partir del metodo Pearson",
             method = "pearson")

En la Figura 3 Y 4, Diagrama de Dispersión se puede evidenciar una relación directamente proporcional entre el metro cuadrado y el precio por millon de pesos debido a que se aprecía de manera descriotiva que los datos presentan correlación enmcarcados en el elipse de manera ascente.

De igual manera los coeficientes de correlación propuestos (Kendall, Pearson y Spersman) nos permite evidenciar una fuerte correlación lineal entre el precio y el metro cuadrado, entendiendo que los valores se encuentran entre el rango de -1 y 1.

Punto 3.

Estime el modelo de regresión lineal simple entre precio = f(area)+e. Interprete los coeficientes del modelo β0;β1 en caso de ser correcto.

Entendiendo que existe una alta correlación entre las variables se estima un modelo de regresión lineal.

modelo.int = lm(data = datos, precio_millon ~ Area_contruida)
summary(modelo.int)
## 
## Call:
## lm(formula = precio_millon ~ Area_contruida, data = datos)
## 
## 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 0.0000000000345 ***
## ---
## 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: 0.0000000000345
modelo.int$coefficients
##    (Intercept) Area_contruida 
##       86.23387        2.12397

Este modelo Y= β0 + β1 X

Precio = 86.234 + 2.124 (Área)

Cuando el valor de Area Construida es 0 el precio de la vivienda es de 86.234 millones de pesos, Ante un aumento de 1 mt2 de la vivienda se espera que en promedio el precio de la vivienda aumente en $2.120.00. Este modelo de regresión lineal da un valor P menor a 0.05 para la prueba F, por lo tanto, hay suficiente evidencia para rechazar la hipótesis nula y considerar que B1 es diferente de cero. Por ende, sí hay modelo.

library(latticeExtra)
xyplot(datos$Area_contruida ~ datos$precio_millon,
       col=c("blue3"), lwd=2, strip = TRUE,
       xlab = "Area Construida", ylab = "Precio Millon",
       main = "Relación entre el Area y Precio",
       panel = function (x, y, ...) {
          panel.xyplot(x, y, ...)
          panel.lmline(x, y, ...)
          panel.grid()
       })

Punto 4.

confint(modelo.int,2,0.95)
##                  2.5 %   97.5 %
## Area_contruida 1.74017 2.507771
summary(modelo.int)
## 
## Call:
## lm(formula = precio_millon ~ Area_contruida, data = datos)
## 
## 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 0.0000000000345 ***
## ---
## 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: 0.0000000000345

Se puede evidenciar que, el coeficiente 1 (β1), no tiene un valor cero cuando se tiene un intérvalo de confianza del 95%, pues oscila entre 1.74 y 2.50, de la tabla anterior tenemos que el valor-P asociado a area construida es de 0.0000000000345, por lo tanto a un nivel de significancia usual de 5%, hay evidencias para rechazar H0 y se concluye que la variable area construida si aporta información para predecir la media del precio de la .

Punto 5.

Calcule e interprete el indicador de bondad y ajuste R2.

summary(modelo.int)
## 
## Call:
## lm(formula = precio_millon ~ Area_contruida, data = datos)
## 
## 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 0.0000000000345 ***
## ---
## 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: 0.0000000000345

De acuerdo a los valores de R-squared: 0.8446 - Adjusted R-squared: 0.8381 La regresión da un R cuadrado ajustado de 0.692, muy similar al R cuadrado (0.6923), lo que quiere decir que el modelo explica, aproximadamente, el 69.2% de las variaciones promedio en la variable dependiente. Como este valor está muy cercano a 0.7, podíamos decir que tenemos una variabilidad aceptable y no tendremos problemas.

Punto 6.

¿Cuál seria el precio promedio estimado para un apartamento de 110 metros cuadrados? Considera entonces con este resultado que un apartemento en la misma zona con 110 metros cuadrados en un precio de 200 millones seria una buena oferta?, ¿Qué consideraciones adicionales se deben tener?

predict(modelo.int,newdata = list(Area_contruida=110), interval = "confidence")
##        fit      lwr      upr
## 1 319.8706 306.3133 333.4279

Se estima que el precio del apartamento con un área de 110 metros cuadradis sea de 319 millones de pesos, con un nivel de confianza del 95%, este estaría entre el rango de 306 millones de oesis y 333 millones de pesos.

Un apartamento en la misma zona por un valor de 200 millones de pesos sí sería una muy buena oferta por que se encuentra por debajo del valor estimado, aunque hay que tener en cuenta diversos factores para que el inmueble este en ese valor como; el estado en el que se encuentra el inmueble, ¿es propiedad horizontal o es unidad residencial? y ¿qué zonas verdes tiene?, precio de administración o portería (si la tiene), parqueaderos (privado - ¿cuántos tiene?, asignado o comunitarios), estado de la via, piso del inmueble, también el número de propietarios que ha tenido el inmueble; pueden ser muchos factores que hagan que el inmueble cueste ese valor.

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.

par(mfrow=c(2,2))
plot(modelo.int)

Esta gráfica sirve para encontrar las observaciones influyentes (leverage); si no existen observaciones influyentes, no debe observarse una curva punteada roja, o en caso de verse, deben ubicarse ligeramente en las esquinas de la gráfica y, por último, no deben existir puntos en esa zona.

por ende se muestra que en la primera gráfica se observa que los errores no tienen un comportamiento aleatorio con media cero. En la Segunda grafica se aprecia un aumento de la varianza, en el tercer grafico los datos son de corte transversal, es decir que los datos no varían en el tiempo y por ultimo el grafico de normalidad muestra qu los errores en su mayoría siguen una distribución normal para algunos datos extremos se evidencia que se alejan de la línea de normalidad.

Punto 8.

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

library(MASS)

par(mfrow=c(1,2))
bc=boxcox(modelo.int)
plot(bc)

lambda=bc $ x [which.max (bc $ y)]
lambda
## [1] 1.474747

Como el valor de Lamda es 1.47, es necesario aplicar una traxformación tipo new_x_exact <- (x ^ lambda - 1) / lambda

new_x_exact = (bc$ x ^ lambda - 1) / lambda
new_x_exact
##   [1]         NaN         NaN         NaN         NaN         NaN         NaN
##   [7]         NaN         NaN         NaN         NaN         NaN         NaN
##  [13]         NaN         NaN         NaN         NaN         NaN         NaN
##  [19]         NaN         NaN         NaN         NaN         NaN         NaN
##  [25]         NaN         NaN         NaN         NaN         NaN         NaN
##  [31]         NaN         NaN         NaN         NaN         NaN         NaN
##  [37]         NaN         NaN         NaN         NaN         NaN         NaN
##  [43]         NaN         NaN         NaN         NaN         NaN         NaN
##  [49]         NaN         NaN -0.67593353 -0.66722291 -0.65501622 -0.64019662
##  [55] -0.62319964 -0.60429876 -0.58368638 -0.56150725 -0.53787540 -0.51288364
##  [61] -0.48660936 -0.45911841 -0.43046768 -0.40070695 -0.36988026 -0.33802693
##  [67] -0.30518235 -0.27137856 -0.23664478 -0.20100779 -0.16449224 -0.12712091
##  [73] -0.08891496 -0.04989411 -0.01007675  0.03051986  0.07187951  0.11398693
##  [79]  0.15682771  0.20038821  0.24465551  0.28961734  0.33526203  0.38157845
##  [85]  0.42855600  0.47618453  0.52445435  0.57335617  0.62288107  0.67302051
##  [91]  0.72376625  0.77511039  0.82704530  0.87956365  0.93265835  0.98632256
##  [97]  1.04054967  1.09533328  1.15066722  1.20654549

Con esto logramos obtener un nuemo modelo

nuevo_modelo <- lm (((bc$ x ^ lambda-1) / lambda) ~ bc$y)
nuevo_modelo
## 
## Call:
## lm(formula = ((bc$x^lambda - 1)/lambda) ~ bc$y)
## 
## Coefficients:
## (Intercept)         bc$y  
##     -18.517        1.052

Punto 9.

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

par(mfrow=c(2,2))
plot(modelo.int, col="#8B7D6B", pch=16, main="Gráfico Modelo Inicial")

par(mfrow=c(2,2))
plot(nuevo_modelo, col="#53868B", pch=16, main="Gráfico Modelo Inicial")

par(mfrow=c(1,2))
qqnorm(modelo.int$residuals)
qqnorm(nuevo_modelo$residuals)

Con la tranformación hecha se logra mejorar el coeficiente de determinación con respecto al primer modelo como se demuestra en las graficas QQ con un patrón más lineal en donde el modelo Box-Cox pes mucho mejor que el modelo de regresión original.