library(knitr)
library(ggplot2)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(kableExtra)
## 
## Attaching package: 'kableExtra'
## The following object is masked from 'package:dplyr':
## 
##     group_rows
library(readxl)
datos_vivienda <- read_excel("C:/Users/HP/Desktop/datos_vivienda.xlsx")

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

Análisis de dos variables Precio Vivienda y área de la vivienda

summary(datos_vivienda)
##  Area_construida 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,3))

hist(datos_vivienda$Area_construida, breaks = 12, main = "Area construida (m2)", xlab = "Area construida (m2)", col = "blue")

boxplot(datos_vivienda$Area_construida, horizontal = TRUE, main = "Area construida (m2)", xlab = "Area construida (m2)", col = "gray")
stripchart(datos_vivienda$Area_construida, method = "jitter", pch = 19, add = TRUE, col = "red")

qqnorm(datos_vivienda$Area_construida, xlab = "Precio millones $", ylab = "Precio millones $", las=1,main="")
qqline(datos_vivienda$Area_construida, col="blue")

hist(datos_vivienda$precio_millon, breaks = 9, main = "Precio millones $", xlab = "Precio millones $", col = "blue")

boxplot(datos_vivienda$precio_millon, horizontal = TRUE, main = "Precio millones $", xlab = "Precio millones $", col = "gray")
stripchart(datos_vivienda$precio_millon, method = "jitter", pch = 19, add = TRUE, col = "red")

qqnorm(datos_vivienda$precio_millon, xlab = "Precio millones $", ylab = "Precio millones $", las=1,main="")
qqline(datos_vivienda$precio_millon, col="blue")

Una vez realizado el analisis de las variables precio millón y área construida de la base de datos de vivienda, se realiza estadística descriptiva de la información, determinando la media, la mediana, varianza, etc, evidenciando que el precio promedio de las viviendas es de 332.1 millones de pesos con un rango de valores entre 240 y 480 millones de pesos, así mismo se identificó que el área construida promedio es de 115.7 m2 y varía entre 80 y 195 m2.

Realizando un diagrama de cajas para conocer la distribución de los datos evidenciamos en la variable precio millones un sesgo de los valores hacia los mínimos ubicados en la derecha, y mediante el método jitter se logra ver la dispersión de los datos. En un gráfico Q-Q se puede evidenciar de entrada que los datos para los dos variables, no tienen un comportamiento característico de la distribución normal.

PUNTO 2 . Analísis Bivariado

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.

par(mfrow=c(2,2))

graf=ggplot(datos_vivienda,aes(y=precio_millon,x=Area_construida)) + geom_point(colour = "blue", size = 3) + geom_smooth(fill = "red")
graf
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'

plot(datos_vivienda$Area_construida, datos_vivienda$precio_millon, main = "Analisis Bi-variable", xlab = "precio millón $", ylab = "Area construida m2", pch=10, col="red")

cor(datos_vivienda$Area_construida, datos_vivienda$precio_millon)
## [1] 0.9190295

Se realiza un análisis de las dos variables de la base datos, evidenciando con el coeficiente de correlación de 0.9190295 que existe una relación lineal, así mismo, revisando la dispersión de los puntos en el gráfico que muestra la tendencia se corrobora la correlación entre precio millón y área construida.

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.

mod1 <- lm(precio_millon ~ Area_construida, data = datos_vivienda)
summary(mod1)
## 
## Call:
## lm(formula = precio_millon ~ Area_construida, data = datos_vivienda)
## 
## 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_construida    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
ggplot (datos_vivienda, aes(x=datos_vivienda$Area_construida, y=datos_vivienda$precio_millon)) +  geom_point() + geom_smooth(method='lm', formula=y~x, se=FALSE, col='dodgerblue1') + theme_light()

Precio=β0+β1AreaConstruida

β0 = 86.234 = Este indicador nos muestra el precio de vivienda, incluso cuando el área de un inmueble sea 0, se cobraría 86.23 millones

β1 = 2.124 = este indicador nos muestra un gradiente de variación en el precio del inmueble por cada m2, es decir, se espera un incremento de 2.124 millones por cada unidad de área de la vivienda.

4 PUNTO

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.

ic=confint(mod1)
  ic %>%
   kbl(booktabs = T,) %>%
   kable_classic_2(full_width = F)
2.5 % 97.5 %
(Intercept) 39.839830 132.627917
Area_construida 1.740169 2.507772

Se genera un intervalo de confianza del 95% y se evidencia relación positiva entre las variables, dado que los valores de los interceptos son positivos, así mismo, se puede afirmar con un 95% , que el coeficiente b1 al tomar valores entre 1,74 y 2,5 millones por cada m2 de área construida, y que al no estar el 0 en el intervalo de confianza, muestra una significancia estadística. Se rechaza la hipótesis nula.

5 PUNTO

  1. Calcule e interprete el indicador de bondad y ajuste R2
summary(mod1)
## 
## Call:
## lm(formula = precio_millon ~ Area_construida, data = datos_vivienda)
## 
## 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_construida    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 Cuadrado 0.8446152
R Cuadrado ajustado 0.8381408

El indicador de bondad y ajuste para la relación del modelo de regresión lineal es de 84,46%, es decir que este tipo de modelo muestra la variabilidad dependiente entre las variables. El modelo arroja dos coeficientes que permiten establecer este modelo como uno bueno para realizar predicciones.

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

p=predict(mod1, list(Area_construida= 110))
E=matrix(p[1])
colnames(E)<- c("Media")
rownames(E)<- c("Precio estimado en millones")

E %>%
   kbl(booktabs = T,) %>%
   kable_classic_2(full_width = F)
Media
Precio estimado en millones 319.8706

El precio promedio estimado para una vivienda de 110 metros cuadrados es de 319.87 millones de pesos, por lo cual un apartamento en la misma zona con 110 metros cuadrados en un precio de 20 millones seria una muy buena oferta, debido a que este valor está muy por debajo de la media de apartamentos de 110 m2.

7 PUNTO

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

Validación de supuestos:

  • Validación de errores aleatorios:la gráfica RESIDUALVS FITTED, muestra los datos residuales, se puede evidenciar que existe un comportamiento asociado dada la curva tipo modular, por lo que el criterio de aleatoriedad no se cumpliria.

  • Normalidad : se observa en el gráfico Q-Q valores a favor de un comportamiento carácteristico de la distribución normal, ajustados a la recta, los valores residuales del modelo tienen criterios de normalidad.

  • Varianza: Se evidencia en el gráfico de SCALE-LOCATION datos con variabilidad que no es constante, sigue un comportamiento con pendiente, debido a lo anterior la varianza no es óptima y no se cumple el croterio de valores constante.

  • Independencia: Al no cumplirse los criterios de varianza y aleatoriedad, se concluye que no hay indepependencia en los valores residuales

Es necesario una vez realizada la validación de supuestos, en el cual el modelo arroja 3 que cumplen, aletoriedad, varianza e independencia, se procede a ajustar el modelo con un polinomio grado 4 Analisis de cada una de las variables

PUNTO 8

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

datos2=lm(precio_millon ~ poly(Area_construida, 4), data = datos_vivienda)
summary(datos2)
## 
## Call:
## lm(formula = precio_millon ~ poly(Area_construida, 4), data = datos_vivienda)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -28.716 -16.250  -5.113  15.511  41.284 
## 
## Coefficients:
##                           Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                332.077      4.226  78.582  < 2e-16 ***
## poly(Area_construida, 4)1  377.465     21.548  17.518 5.21e-14 ***
## poly(Area_construida, 4)2 -125.411     21.548  -5.820 8.90e-06 ***
## poly(Area_construida, 4)3    5.747     21.548   0.267    0.792    
## poly(Area_construida, 4)4   26.474     21.548   1.229    0.233    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 21.55 on 21 degrees of freedom
## Multiple R-squared:  0.9422, Adjusted R-squared:  0.9312 
## F-statistic: 85.58 on 4 and 21 DF,  p-value: 1.09e-12
par(mfrow=c(2,2))
plot(datos2)

R Cuadrado 0.9422002
R Cuadrado ajustado 0.9311907

El ajuste del modelo con función polinomial evidencia que los valores de r2 se ajustan a un 94.22% tanto el R2 como R Ajustado evidencian buenos resultados, el cual se corrobora mediante análisis gráfico y se validan que existe aleatoriedad en el modelo, se evidencia una distribución normal de los datos, variabilidad constante.

PUNTO 9

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

Se realizó el análisis del modelo de regresión simple vs el modelo polinomial evidenciando un ajuste importante del r2, pasando de un 0.84 a un 0.94, es decir que que el modelo de regresión fue mejorado y los supuestos cumplen con los criterios de aleatoriedad, independencia, varianza y normalidad, presentando así una variación importante entre los dos modelos