Análisis Univariado
library(readxl)
datos <- read_excel("~/Maestria/Estadistica/Regresion/datos_vivienda.xlsx")
names(datos)
## [1] "Area_contruida" "precio_millon"
str(datos)
## 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 ...
attach(datos)
La base de datos corresponde a la toma de 26 propiedades donde, nos
dan a conocer el área construida y el precio por millón de cada una de
ellas
summary(datos)
## 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
# Una fila, dos columnas
par(mfrow = c(2, 2))
# Los siguientes gráficos se combinarán
hist(Area_contruida,
main = "Area_contruida Histograma")
# Box plot vertical
boxplot(Area_contruida, col = "white")
# Puntos
stripchart(Area_contruida, # Datos
method = "jitter", # Ruido aleatorio
pch = 19, # Símbolo pch
col = 4, # Color del símbolo
vertical = TRUE, # Modo vertical
add = TRUE) # Agregar encima
# Volvemos al estado original
# Los siguientes gráficos se combinarán
hist(precio_millon,
main = "precio X millón Histograma")
# Box plot vertical
boxplot(precio_millon, col = "white")
# Puntos
stripchart(precio_millon, # Datos
method = "jitter", # Ruido aleatorio
pch = 19, # Símbolo pch
col = 4, # Color del símbolo
vertical = TRUE, # Modo vertical
add = TRUE) # Agregar encima

# Volvemos al estado original
par(mfrow = c(1, 1))
summary(datos)
## 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
Con el propósito de hallar un modelo que nos permita conocer el
precio de una propiedad conociendo solo el área construida, iniciamos
creando una relación con los datos conocidos en la siguiente
grafica
library(ggplot2)
library(gganimate)
## No renderer backend detected. gganimate will default to writing frames to separate files
## Consider installing:
## - the `gifski` package for gif output
## - the `av` package for video output
## and restarting the R session
theme_set(theme_bw())
p <- ggplot(
datos,
aes(x = Area_contruida, y=precio_millon, size = precio_millon, color=factor(precio_millon))
) +
geom_point(show.legend = FALSE, alpha = 0.7) +
scale_color_viridis_d() +
scale_size(range = c(2, 12)) +
scale_y_binned() +
labs(x = "Area contruida", y = "Precio X millon")
p

Podemos Observar el coeficiente de relación de Pearson observamos
que existe Una correlación lineal, siendo de 0.91903, mientras uno
aumenta el otro también
modelo1 <- lm(precio_millon~Area_contruida)
summary(modelo1)
##
## 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
modelo1$coefficients
## (Intercept) Area_contruida
## 86.23387 2.12397
De lo anterior podemos mencionar que valor mínimo de las viviendas
estimadas se encuentra aproximadamente en los 86 millones (sin área
construida) siendo este el B0. Así mismo, tenemos el B1, que nos indica
cuanto aumenta el precio de la propiedad cada metro cuadrado siento esta
2.1 millones de pesos
Intervalo de confianza
z=qnorm(0.975)
li= round(2.12397-(z*0.186),2)
ls= round(2.124+(z*0.186),2)
data.frame(li,ls)
## li ls
## 1 1.76 2.49
Indicador de bondad y ajuste R-cuadrado
round(summary(modelo1)$r.squared,4)
## [1] 0.8446
Siendo lo anterior, me dice que el modelo logra explicar el 84.46%
del precio de las viviendas, siendo considerablemente bueno el ajuste
presentado
Predicción
predict(modelo1,list(Area_contruida=110),interval = "confidence")
## fit lwr upr
## 1 319.8706 306.3133 333.4279
Entrando a probar el modelo que anteriormente tenemos, podríamos
decir que para una vivienda de 110 metros cuadrados el área construida
debe estar alrededor de 319.8 millones de pesos, oscilando entre mas o
menos 13.5 millones hacia arriba o hacia abajo, otros factores podrían
afectar el valor del inmueble ya esto dependerá de las condiciones
físicas y ubicación
Validación
par(mfrow=c(2,2))
plot(modelo1)

De lo anterior podríamos mencionar que el grafico QQ, los errores
tienen un comportamiento normal, y los residuales no muestran
aleatoriedad, dejando la posibilidad de agregar componentes al modelo.
Por tal motivo, se podría ajustar mejor el modelo
Opción Modelo cuadratico
modeloCuadratico <- lm(precio_millon~Area_contruida + I(Area_contruida^2), data = datos)
summary(modeloCuadratico)
##
## Call:
## lm(formula = precio_millon ~ Area_contruida + I(Area_contruida^2),
## data = datos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -34.927 -14.471 -3.777 16.504 35.073
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -2.949e+02 6.648e+01 -4.435 0.00019 ***
## Area_contruida 8.488e+00 1.090e+00 7.787 6.80e-08 ***
## I(Area_contruida^2) -2.433e-02 4.142e-03 -5.874 5.49e-06 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 21.35 on 23 degrees of freedom
## Multiple R-squared: 0.9378, Adjusted R-squared: 0.9324
## F-statistic: 173.5 on 2 and 23 DF, p-value: 1.332e-14
ggplot(data=datos , aes(x=Area_contruida,
y=precio_millon
))+
geom_point()+
stat_smooth(method="lm", formula= y~x, color="tomato")+
stat_smooth(method="lm", formula= y~x + I(x^2))

modeloCuadratico$coefficients
## (Intercept) Area_contruida I(Area_contruida^2)
## -294.85414295 8.48815735 -0.02433239
par(mfrow=c(2,2))
plot(modeloCuadratico)

Conclusión
Para finalizar, podríamos mencionar, que una vez ajustado el modelo
el precio de la vivienda de 110 mts cuadrados, aumenta de 319.87
millones a 344.42 millones de pesos, dejando en evidencia que un buen
modelo puede traer mejores beneficios en este caso 24.55 millones para
poder negociar. Por tal motivo analizar las variables, comprender el
modelo, nos permitira tener mayor acierto en las decisiones