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.

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
Precio_promedio=mean(precio_millon,na.rm = TRUE)
Desviacion_precio=sd(precio_millon,na.rm = TRUE)
Mediana_precio=median(precio_millon,na.rm = TRUE)
Area_promedio=mean(Area_contruida,na.rm = TRUE)
Desviacion_Area=sd(Area_contruida,na.rm = TRUE)
Mediana_Area=median(Area_contruida,na.rm = TRUE)


Resultado=data.frame(Precio_promedio,Desviacion_precio,Mediana_precio,Area_promedio,Desviacion_Area,Mediana_Area)
Resultado
Precio_promedio Desviacion_precio Mediana_precio Area_promedio Desviacion_Area Mediana_Area
332.0769 82.14423 305 115.7469 35.54332 97
require(ggplot2)
require(ggpubr)
#Histograma para precios
par(mfrow=c(2,2))
hist(precio_millon)
abline(v=Precio_promedio, col="blue", lwd=3)
boxplot(precio_millon,xlab="Millones", main="Boxplot Precios",horizontal = TRUE)


#Histograma para Areas
hist(Area_contruida)
abline(v=Area_promedio, col="blue", lwd=3)
boxplot(Area_contruida,xlab="Metros Cuadarados", main="Boxplot Area",horizontal = TRUE)

En en analisis exploratorio inicial se encuentra que para la variable precio los datos en Millones se encuentran en el rango de [240-480], con promedio de 332 y mediana 305, desviacion estandar 82,

Para la variable Area Construida se tienen en metros cuadrados un rango de [80-195], promedio 115, mediana 97 y desviacion estandar de 35. Mediante el histograma y grafico de caja se evidencia un alto porcentaje de los datos entre 80 y 100 m2

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

#Para la exploración bivariada

require(ggplot2)
require(plotly)
Grafico1=ggplot(data=datos_vivienda,aes(y=precio_millon,x=Area_contruida))+geom_point()+geom_smooth()

ggplotly(Grafico1)
correlacion = cor(Area_contruida,precio_millon, use= "complete.obs")
correlacion
## [1] 0.9190295

De acuerdo a los graficos se observa que existe una relacion directamente proporcional entre el Area construida y el precio de la vivienda, esta correlación es del 91,9%

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.

modelo = lm(precio_millon~Area_contruida)
summary(modelo)
## 
## 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
Beta0=modelo$coefficients[1]
Beta1=modelo$coefficients[2]
data.frame(Beta0,Beta1)
Beta0 Beta1
(Intercept) 86.23387 2.12397

El modelo de regresion lineal simple encontrado tiene los siguientes parametros: Beta0 = 86,234 Beta1 = 2,124 Esto indica que si el area construida fuera cero el precio estaria en los 86,2 millones y para cada metro cuadrado construido el precio incrementa en 2,1 millones. en nuestro caso no se presentan valores de area igual a cero. Segun el valor R2 se concluye que el modelo explica el 84,4% de la relacion entre el area construida y el precio en millones

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.

error_area=0.186
Li=Beta1-(qnorm(0.975)*error_area)
Ls=Beta1+(qnorm(0.975)*error_area)

data.frame(Li,Ls)
Li Ls
Area_contruida 1.759417 2.488524
#confint(modelo, "Area_contruida", level = 0.95)

se encuentra que el Valor P para Beta 1 es de 3.45e-11 *** monstrando un nivel de significancia para el modelo El intervalo de confianza calculado para Beta1 muestra que el efecto que tiene el area sobre el precio se encuentra entre 1,76 y 2,49 Millones lo cual muestra nuevamente que el coeficiente es diferente de cero

5. Calcule e interprete el indicador de bondad y ajuste R2

R2=correlacion*correlacion
R2
## [1] 0.8446152

el valor de R2 indica que el modelo explica el 84,5% del precio del inmueble

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(modelo, list(Area_contruida=110), interval = "confidence")
##        fit      lwr      upr
## 1 319.8706 306.3133 333.4279

el resultado de la prediccion utilizando el modelo muestra que para un Area de 110 m2 el precio seria 319,9 millones, estando en un intervalo entre 306 y 333. En caso de encontrar una oferta por 200 millones para esta area, se puede considerar una excelente oferta pues el valor minimo que nos muestra el modelo es de 306 Para nuestro caso de analisis no tenemos mas criterios para considerar, en otro caso se deberian incluir otras variables adicionales que expliquen esta oferta muy por debajo del precio esperado

7. Realice la validación de supuestos del modelo por medio de graficos apropiados, interpretarlos y sugerir posibles soluciones si se violan algunos de ellos.

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

Analizando las gráficas generadas se observa respecto a los supuestos

Homogeneidad de varianza: los residuales ajustados contra los errores no tienen un comportamiento aleatorio, por lo cual el se asumio una relacion lineal de forma erronea.

Normalidad:Se observan varios datos alejados de la curva de distribución normal

para mejorar el modelo si es necesario realizar una transformación

#Validación Cruzada
precio_predict=array(NA,26)
for(i in 1:26){
  datos_training=datos_vivienda[-i,]
  datos_test=datos_vivienda[i,]
  modelo_predict=lm(precio_millon~Area_contruida,data=datos_training)
  precio_predict[i]=predict(modelo_predict,list(Area_contruida=datos_test$Area_contruida))
}
Resultado_predict=data.frame(datos_vivienda,precio_predict)
Resultado_predict
Area_contruida precio_millon precio_predict
86.00 250 270.2409
118.00 385 334.9285
130.00 395 360.8154
181.00 419 481.5030
86.00 240 270.9531
98.00 320 293.0791
170.00 480 442.3523
96.00 268 291.3199
85.00 240 268.7368
170.00 450 446.9008
87.00 240 273.1625
118.42 385 335.8531
86.00 290 267.3924
85.00 240 268.7368
96.00 272 291.1058
86.00 250 270.2409
86.00 250 270.2409
130.00 395 360.8154
134.00 385 370.1165
80.00 255 256.2502
130.00 430 359.1702
87.00 260 271.7807
130.00 385 361.2854
89.00 290 274.3083
195.00 450 516.0947
170.00 410 452.9656
MAE=mean(abs(Resultado_predict$precio_millon-Resultado_predict$precio_predict))
MAE
## [1] 30.47363
MAE/mean(Resultado_predict$precio_millon)*100
## [1] 9.176678

El modelo se equivoca en el 9,2% del valor del precio obtenido

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

se prueba un ajuste del modelo utilizando una transformación logaritmica

modelo_ajustado = lm(precio_millon~log(Area_contruida), data=datos_vivienda)
summary(modelo_ajustado)
## 
## Call:
## lm(formula = precio_millon ~ log(Area_contruida), data = datos_vivienda)
## 
## 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 ***
## log(Area_contruida)   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
par(mfrow=c(2,2))
plot(modelo_ajustado)

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

correlacion2 = cor(log(Area_contruida),precio_millon, use= "complete.obs")
R2_ajustado=correlacion2*correlacion2
data.frame(R2,R2_ajustado)
R2 R2_ajustado
0.8446152 0.8962713

con el ajuste realizado se obtuvo una mejora en el valor Rcuadrado lo cual representa una mayor explicabilidad de las variaciones del precio de las viviendas pasando de un 84% a un 89%