# importar DB
library(readxl)
datos_vivienda <- read_excel("C:/Users/ADMIN/Desktop/Maestria Ciencia de Datos/1. Metodos y Simulacion estadistica/Unidad 3. Modelacion Estadistica/datos_vivienda.xlsx")
head(datos_vivienda,3)
## # A tibble: 3 × 2
## Area_construida precio_millon
## <dbl> <dbl>
## 1 86 250
## 2 118 385
## 3 130 395
attach(datos_vivienda)
require(table1)
## Loading required package: table1
##
## Attaching package: 'table1'
## The following objects are masked from 'package:base':
##
## units, units<-
y <- table1::table1(~Area_construida + precio_millon)
y
| Overall (N=26) |
|
|---|---|
| Area_construida | |
| Mean (SD) | 116 (35.5) |
| Median [Min, Max] | 97.0 [80.0, 195] |
| precio_millon | |
| Mean (SD) | 332 (82.1) |
| Median [Min, Max] | 305 [240, 480] |
require(ggplot2)
## Loading required package: ggplot2
require(ggpubr)
## Loading required package: ggpubr
datos_vivienda$Area_construida_grupo=cut(datos_vivienda$Area_construida,breaks = c(79,100,120,140,160,180,200))
datos_vivienda$precio_millon_grupo=cut(datos_vivienda$precio_millon,breaks = c(200,250,300,350,400,450,500))
bp1=ggplot(datos_vivienda,aes(x=Area_construida))+geom_boxplot(fill="gray", color=1)+ggtitle("Gráfico de Cajas Area Construida")+theme_bw()
g1=ggplot(datos_vivienda,aes(x=Area_construida_grupo))+geom_bar(fill="gray", color="black")+geom_text(stat='count', aes(x=Area_construida_grupo,label=..count..), vjust=1.2, col="white")+ggtitle("Histograma Area Construida")+theme_bw()
g2=ggplot(datos_vivienda,aes(x=precio_millon_grupo))+geom_bar(fill="darkblue", color=5)+geom_text(stat='count', aes(x=precio_millon_grupo,label=..count..), vjust=1.2, col="white")+ggtitle("Histograma Precio (Millones)")+theme_bw()
bp2=ggplot(datos_vivienda,aes(x=precio_millon))+geom_boxplot(fill="darkblue", color=1)+ggtitle("Gráfico de Cajas Precio")+theme_bw()
ggarrange(bp1, g1, bp2, g2, labels = c("A.", "B.", "C.", "D."),ncol = 2, nrow = 2)
Area Construida: El promedio de area construida de predios es de 116 metros cuadrados, con una desviación estandar de 35.5 metros cuadrados, evidenciando que los m2 se desvian de la media aproximadamente en 35.5 m2, indicando que la media no es una medida certera en este caso. Es de notar que el 50% de los predios tienen áreas construidas por debajo de los 97 m2. Esto indica que la grafica es asimétrica positiva o sesgada hacia la derecha.
Precio: El promedio de los precios de los predios es de 332 millones, con una desviación estandar de 82.1 millones, indicando que el precio se desvia de la media en 82.1 millones en promedio, el 50% de los predios tienen un costo entre 240 y 305 millones y los predios mas costosos estan entre los 450 y 500 millones.
require(table1)
y <- table1::table1(~precio_millon|Area_construida_grupo, data = datos_vivienda)
y
| (79,100] (N=14) |
(100,120] (N=2) |
(120,140] (N=5) |
(160,180] (N=3) |
(180,200] (N=2) |
Overall (N=26) |
|
|---|---|---|---|---|---|---|
| precio_millon | ||||||
| Mean (SD) | 262 (24.0) | 385 (0) | 398 (18.6) | 447 (35.1) | 435 (21.9) | 332 (82.1) |
| Median [Min, Max] | 253 [240, 320] | 385 [385, 385] | 395 [385, 430] | 450 [410, 480] | 435 [419, 450] | 305 [240, 480] |
Se evidencia que de los 14 predios que cuentan con area construida en un rango entre 79 y 100 metros cuadrados tienen en promedio un precio de 262 millones con una desviación estandar de 24 millones y oscilan desde los 240 millones hasta los 320 millones. Igualmente se evidencia que de los 2 predios que se encuentran entre los 100 y 120 metros cuadrados tienen un precio de 385 millones. De los 5 predios que se encuentran entre los 120 y 140 metros cuadrados, tienen un precio promedio de 398 millones con una desviación estandar de 18.6 millones y sus precios estan en un rando entre 385 y 430 millones. Con respecto a los predios que tienen areas construidas entre los 160 y 180 metros cuadrados, tienen en promedio un precio de 447 millones con una desviación de 35.1 millones y un rango de precios entre los 410 millones y 480 millones, y finalmente, los predios que se encuentran entre 180 y 200 metros cuadrados de areas construidas, tienen en promedio un precio de 435 millones oscilando los precios en un rango enre los 419 millones y 450 millones.
X = area construida (variable independiente)
Y = precio en millones (variable dependiente)
Ecuación de la recta de regresión: Y = a + b.X
# Gráfico
require(ggplot2)
ggplot(datos_vivienda,aes(x=Area_construida,y=precio_millon))+geom_point()+theme_bw()+geom_smooth()
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
#plot(Area_construida, precio_millon, pch=16)
De acuerdo con el grafico de dispresión, donde se grafican las variables area construida (eje x) y precio (eje y), se logra percibir que la dispersion de los datos tiene una tendencia directa o creciente (relacion lineal positiva).
# Coeficiente de correlacion
cor(Area_construida,precio_millon)
## [1] 0.9190295
El resultado obtenido de coeficiente de correlación r = 0.9190295 indica que entre el área construida y el precio del predio existe una asociación lineal positiva fuerte, es decir, que entre mas sea el área del predio, mayor será el precio.
# Regresión lineal
mod=lm(precio_millon~Area_construida) # variable de respuesta en función del área construida
summary(mod)
##
## Call:
## lm(formula = precio_millon ~ Area_construida)
##
## 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
a = 86,234 para este valor de a, nos indica que en el caso hipotetico que un predio tenga 0 metros cuadrados construidos, este costaría 86 millones aproximadamente
b = 2,124 para el valor de b, nos indica que por cada m2 que incrementa el area construida, se espera un aumento en 2,124 millones en el precio del innmueble.
mod95=confint(object = mod, level = 0.95)
mod95
## 2.5 % 97.5 %
## (Intercept) 39.83983 132.627917
## Area_construida 1.74017 2.507771
summary(mod95)
## 2.5 % 97.5 %
## Min. : 1.74 Min. : 2.508
## 1st Qu.:11.27 1st Qu.: 35.038
## Median :20.79 Median : 67.568
## Mean :20.79 Mean : 67.568
## 3rd Qu.:30.31 3rd Qu.:100.098
## Max. :39.84 Max. :132.628
H0: B1 = 0
H1: B1 <> 0
alpha = 0.05
NO Se rechaza H0 si el p-valor de la prueba es > a 0.05
Se rechaza H0 si el p-valor de la prueba es <= a 0.05
Se observa que para un intervalo de confianza (95%) para el coeficiente B1, este no contiene el valor 0, permitiendo concluir que el coeficiente es relevante dentro del modelo. Comparado con el p-valor del modelo de regresion lineal que es menor al 0.05, se rechaza la hipótesis nula que el coeficiente B1 es igual a 0.
r=cor(Area_construida,precio_millon)
r^2
## [1] 0.8446152
r^2 = 0.8446152
El coeficiente de determinación para este caso nos indica que: Se encuentra que la recta de regresión propuesta presenta un ajuste BUENO en la explicación del precio de los inmuebles con respecto al area construida.
# Y = a + b.X
# Y = 86.234 + 2.124 * 110
predict(mod,list(Area_construida=110))
## 1
## 319.8706
El precio promedio estimado para un apartamento de 110 metros cuadrados es de 319,9 millones aproximadamente, así entonces, en esa misma zona encontrar un apartamento de de 200 millones sería una excelente oferta.
# Validación de Supuestos
par(mfrow=c(2,2))
plot(mod)
Residuales vs valores ajustados: Se observa completa aleatoriedad de los residuales, los datos no presentan algún comportamiento. Grafico de normalidad: se observa que los datos se encuentran cercanos a la linea de la distribución normal
r=cor(log(Area_construida),precio_millon)
print("El valor de r es:")
## [1] "El valor de r es:"
r
## [1] 0.946716
print("El valor de r^2 es:")
## [1] "El valor de r^2 es:"
r^2
## [1] 0.8962713
mod2=lm(precio_millon~log(Area_construida))
mod2
##
## Call:
## lm(formula = precio_millon ~ log(Area_construida))
##
## Coefficients:
## (Intercept) log(Area_construida)
## -948.5 271.9
summary(mod2)
##
## Call:
## lm(formula = precio_millon ~ log(Area_construida))
##
## 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_construida) 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(mod2)
Se procede a realizar el ajuste al modelo, asumiento que es un modelo logaritmico, se realiza la transformación y de linealiza el modelo con la ecuación Y = a + b.W donde W = LogX
El resultado nuevo obtenido de coeficiente de correlación r = 0.946716 del modelo logaritmico linealizado indica que entre el área construida y el precio del predio existe una asociación lineal positiva fuerte, es decir, que entre mas sea el área del predio, mayor será el precio. Con relaciòn al modelo lineal simple, la linealizada del modelo logaritmico presenta una relaciòn lineal positiva aún mas fuerte.
El coeficiente de determinación para este caso r^2 = 0.8962713 indica: Se encuentra que la recta de regresión con el modelo linealizado del modelo logaritmico continùa presentando un ajuste BUENO (mejor que el modelo de regresion lineal simple) muy cercano al ajuste a los datos del nivel excelente en la explicación del precio de los inmuebles con respecto al area construida.
Con respecto a los supuestos, se puede indicar lo siguiente:
Residuales vs valores ajustados: Se observa completa aleatoriedad de los residuales, donde los datos no presentan algún comportamiento. Grafico de normalidad: se observa que los datos se encuenttran cercanos a la linea de la distribución normal, similar al modelo no linealizado.