options(repos = list(CRAN="http://cran.rstudio.com/"))
install.packages("tidyverse")
## Installing package into 'C:/Users/franc/AppData/Local/R/win-library/4.2'
## (as 'lib' is unspecified)
## package 'tidyverse' successfully unpacked and MD5 sums checked
##
## The downloaded binary packages are in
## C:\Users\franc\AppData\Local\Temp\RtmpId0OtO\downloaded_packages
library("readxl")
library(ggplot2)
data= read_excel("C:/Users/franc/OneDrive/Escritorio/Maestria_Ciencia_Datos/Metodos_Tecnicas_Simulacion/B_Talleres_Actividades/3_Modulo_3/datos_vivienda.xlsx")
str(data)
## tibble [26 × 2] (S3: tbl_df/tbl/data.frame)
## $ Area_contruida: num [1:26] 86 118 130 181 86 98 170 96 85 170 ...
## $ precio_millon : num [1:26] 250 385 395 419 240 320 480 268 240 450 ...
summary(data)
## 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
La base datos cuenta con dos variables: ‘Area_contruida’, la cual es una variable númerica, y precio_millon, la cual también es numerica. se tienen 26 observaciones.
ggplot(data,aes(x="",y=Area_contruida))+geom_boxplot()
mean(data$Area_contruida)
## [1] 115.7469
sd(data$Area_contruida)
## [1] 35.54332
Se puede ver que los datos de área constrida no tienen outliers, el promedio de áreas contruidas es de 115 m2, y la desviación estandar es de 35 m2. El 75% de las viviendas tienen menos de 130 m2, y solo wl 25% tienen un área entre 130m y 195 m2.
ggplot(data,aes(x="",y=precio_millon))+geom_boxplot()
mean(data$precio_millon)
## [1] 332.0769
sd(data$precio_millon)
## [1] 82.14423
Se puede ver que los datos de área constrida no tienen outliers, el promedio de áreas contruidas es de 332 millones, y la desviación estandar es de82 millones.El 75% de las viviendas cuestan menos de 395 millones, y solo el 25% cuestan entre 395 MM y 480 MM.
ggplot(data,aes(x=Area_contruida,y=precio_millon))+geom_point()+geom_smooth(method=lm,fill="green")
## `geom_smooth()` using formula 'y ~ x'
Se puede ver que los datos tienden a organizarse de manera lineal al cruzar las variables de area_construida contra precio_millon.
Primero se calcula la correlación de pearson para ver si existe una posible relación lineal entre las variables:
cor(data$Area_contruida,data$precio_millon)
## [1] 0.9190295
Se obtiene una correlación de perason de 0.91, lo cual muestra que si existe una relación directa (positiva) entre el área construida y el precio en millones.
A continuación, se realiza la generación del modelo de regresión lineal:
modelo=lm(precio_millon~Area_contruida,data)
summary(modelo)
##
## Call:
## lm(formula = precio_millon ~ Area_contruida, data = data)
##
## 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 modelo final es: Y= 86,2 + 2,12X
Se puede ver que la tasa de cambio (B1) de una unidad en el área llevará a un aumento de 2,1 millones en el precio, lo cual muestra que existe una relacion directa entre el área construida y el precio en millones; el intercepto con el eje x (B0) es de 86.2 millones, lo cual indica que el precio minimo de una vivienda con la menor área construida tendera a ser de 86 millones de pesos.
Ademas, se puede ver que el P-Value es de 3.4e-11, lo cual es inferior al nivel de significancia alfa (5%), por ende, se puede afirmar que el precio en millones depende en gran manera del área construida en las viviendas.
confint(object=modelo, level=0.95)
## 2.5 % 97.5 %
## (Intercept) 39.83983 132.627917
## Area_contruida 1.74017 2.507771
El intervalo de confianza del 95% para el parámetro B1 estaría en [1.7;2.5]
El R2 tiene un valor de 0.84, lo cual sugiere que el modelo de regresión lineal puede explicar la varianza del precio en millones en un 84%, por ende, se puede decir que la relación lineal entre estas dos variables es “significativa”.
Teniendo el modelo Y= 86,2 + 2,12X, para un apartamento de 110 m2, se tendria: Y=86,2 + (2,12*110)
resultadoModelo <- function(area){
resultado = 86.2+(2.12*area)
return(resultado)
}
resultado = resultadoModelo(110)
resultado
## [1] 319.4
Respuesta: El precio promedio estimado para una vivienda de 110 m2 sería de 319.8 millones de pesos, por lo cual, una vivienda ubicada en la misma zona cuyo valor sea de 200 millones estaría un 37% por debajo del precio promedio, por ende, sería una buena oferta.
par(mflow=c(2,2))
## Warning in par(mflow = c(2, 2)): "mflow" is not a graphical parameter
plot(modelo)
Al analizar el grafico de residuales vs valores ajustados, se puede ver el los residuales no tienen un comportamiento aleatorio, si no que siguen aún un patron, por lo cual se podría decir que los residuales tienen información que podría integrarse al modelo, por lo tanto se debería explorar.
Por otro lado, al analizar el comportamiento de prueba de normalidad con Q-Q plot, se puede ver que los datos no se acoplan de manera significativa a la recta Q-Q.
Cómo conclusión sobre la validación de los supuestos, se podría explorar la aplicación de una transformación a las variables iniciales.
Se procede a ajustar el modelo según una transformación de doble logaritmo (Z=LogB0 + B1LogX), obteniendo lo siguiente: Se obtiene el modelo: Z= Log(1.9)+0.8Log(X).
modeloT=lm(log(precio_millon)~log(Area_contruida),data)
summary(modeloT)
##
## Call:
## lm(formula = log(precio_millon) ~ log(Area_contruida), data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.13325 -0.07583 -0.01435 0.07501 0.16051
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.96408 0.29228 6.72 5.97e-07 ***
## log(Area_contruida) 0.80928 0.06194 13.06 2.11e-12 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.08859 on 24 degrees of freedom
## Multiple R-squared: 0.8767, Adjusted R-squared: 0.8716
## F-statistic: 170.7 on 1 and 24 DF, p-value: 2.109e-12
plot(modeloT)
Al analizar la gráfica de residuales vs los valores ajustados, se ve que
los puntos tienden a orbitar mas frente el nivel 0, y muestran un
comportamiento “más” aleatorio que en el modelo inicial.
Por otro lado, se puede ver que en el Q-Q plot los residuos se ajustan mejor a la línea Q-Q, lo cual indica que tienden a distribuirse normal.