Problema

Con base en los datos de ofertas de vivienda descargadas del portal Fincaraiz para apartamento de estrato 4 con área construida menor a 200 m2 (vivienda4.RDS) la inmobiliaria A&C requiere el apoyo de un cientifico de datos en la construcción de un modelo que lo oriente sobre los precios de inmuebles. Con este propósito el equipo de asesores a diseñado los siguientes pasos para obtener un modelo y así poder a futuro determinar los precios de los inmuebles a negociar.

1) Realice un análisis exploratorio de las variables precio de vivienda (millones de pesos COP) y área de la vivienda (metros cuadrados) - incluir gráficos e indicadores apropiados interpretados.

Análisis exploratorio

a. Estructura de los datos

tiposdatos<-glimpse(vivienda4)
## Rows: 1,706
## Columns: 5
## $ zona      <fct> Zona Norte, Zona Norte, Zona Norte, Zona Sur, Zona Norte, Zo…
## $ estrato   <fct> 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, …
## $ preciom   <dbl> 220, 600, 320, 290, 220, 305, 220, 162, 225, 370, 350, 155, …
## $ areaconst <dbl> 52, 160, 108, 96, 82, 117, 75, 60, 84, 117, 118, 60, 75, 76,…
## $ tipo      <fct> Apartamento, Casa, Apartamento, Apartamento, Apartamento, Ca…
Se observan cinco variables pero para el analisis solo se tomaran en cuenta la variable PRECIOM la cual es el precio de las viviendas (millones de pesos COP) y AREACONST la cual es el area construida de las viviendas (metros cuadrados)
A continuación solo se escogeran los apartamentos y se seleccionaran las dos variables de interes
vivienda4  <- filter(vivienda4, tipo =="Apartamento")
vivienda4 <- select(vivienda4 ,preciom, areaconst)

b. Procesamiento de datos faltantes

A continuación, se detallará la cantidad de datos faltantes por cada variable.
En el siguiente fragmento de código, se mostrará una tabla que despliega la cantidad de datos faltantes para cada variable, brindando una representación visual de esta evaluación.
faltantes_por_columna <- colSums(is.na(vivienda4))
knitr::kable(faltantes_por_columna, caption = "Datos faltantes por variable")
Datos faltantes por variable
x
preciom 0
areaconst 0
Ya que se observa que no existe ningun dato faltante no se deben hacer procedimientos de limpieza de datos faltantes.

c. Descripción estadistica de las variables

Inicialmente, se generó un resumen estadístico mediante el siguiente código, proporcionándo una visión panorámica de las variables en la base de datos
# Aplicar la función summary solo a las columnas seleccionadas
resumen<-summary(vivienda4)

knitr::kable(resumen, caption = "Resumen indicadores")
Resumen indicadores
preciom areaconst
Min. : 78.0 Min. : 40.00
1st Qu.:153.5 1st Qu.: 60.00
Median :185.0 Median : 70.00
Mean :202.4 Mean : 75.48
3rd Qu.:240.0 3rd Qu.: 84.00
Max. :645.0 Max. :200.00
Pero ademas de este resumen es necesario hallar medidas, de variabilidad y de tendencia central

* Medidas de variabilidad

Se implementaron las siguientes medidas, teniendo en cuenta la naturaleza de todas las variables cuantitativas en la base de datos. Esto permite calcular las medidas de variabilidad clave, como la desviación estándar y el rango intercuartil. Estas métricas no solo proporcionan información acerca de la dispersión de los datos, sino que también son fundamentales para evaluar la fiabilidad de los indicadores de tendencia central.
# Calcular la desviación estándar y el rango intercuartil para cada columna
resultados <- sapply(vivienda4, function(col) c(sd(col, na.rm = TRUE), IQR(col, na.rm = TRUE)))
# Convertir los resultados en un data frame y agregar nombres de filas
resultados_df <- data.frame(resultados)
rownames(resultados_df) <- c("DesviacionEstandar", "RangoIntercuartil")

# Mostrar los resultados
knitr::kable(resultados_df, caption = "Desviacion estandar y Rango intercuartil")
Desviacion estandar y Rango intercuartil
preciom areaconst
DesviacionEstandar 65.29049 22.56461
RangoIntercuartil 86.50000 24.00000
Para ambas variables, el RI de 86.50 y 24 respectivamente señala amplia dispersión en los precios de propiedades y en el area construida, pero es notorio que hay mas dispersion de los datos de la variable precio debido a diversas características. Respecto a la Desviación Estándar, ninguna de las dos variables tiene valores cercanos a uno, es decir no hay agrupamiento de datos en torno a la media, mientras que debido a que son desviaciones más altas sugieren mayor dispersión y posible presencia de valores atípicos, influyendo en la confiabilidad de las medidas de tendencia central.

* Medidas de tendencia central

calcular_moda <- function(vector) {
  tabla_frecuencia <- table(vector)
  moda <- as.numeric(names(tabla_frecuencia)[which.max(tabla_frecuencia)])
  return(moda)
}

resultadoss <- sapply(vivienda4, function(col) c(mean(col, na.rm = TRUE), median(col, na.rm = TRUE), calcular_moda(col)))

resultados_dff <- data.frame(resultadoss)
rownames(resultados_dff) <- c("Media", "Mediana", "Moda")

# Mostrar los resultados
knitr::kable(resultados_dff, caption = "Media, Mediana y Moda")
Media, Mediana y Moda
preciom areaconst
Media 202.4373 75.47836
Mediana 185.0000 70.00000
Moda 150.0000 60.00000
Las medidas de tendencia central para las variables exhiben cierta variabilidad. En ambos casos, la media supera a la mediana ligeramente, lo cual puede indicar la influencia de valores extremos o atípicos en el cálculo de la media, una suposición que se reafirma con los resultados previos de desviación estándar y rango intercuartil. Este patrón plantea ciertas reservas sobre la fiabilidad de la media como medida representativa en estas variables,señalando la posible influencia de valores atípicos en la media.

d. Visualizacion de la distribucion de los datos

Variable Precio
grafico_boxplot <- ggplot(vivienda4, aes(y = preciom)) +
                  geom_boxplot() +
                  theme_minimal() +
                  labs(title = "Gráfico de Boxplot", y = "Precio")

print(grafico_boxplot)

histpreciom<-hist(vivienda4$preciom, col = "green", breaks = 14, main="Histograma Variable: PRECIO", xlab="Intervalos Precio")

Cuando se examinan los resultados del análisis de histograma y boxplot para la variable “Precio”, inicialmente, la posición de la mediana ligeramente esta ubicada mas cerca al cuartil 1 en la boxplot, esto sugiere una distribución que tiende a ser simétrica o normal. Sin embargo, la presencia de valores atípicos que se encuentran por encima del tercer cuartil indica la existencia de una cola en esa dirección. Este fenómeno se refleja también en el histograma, donde se evidencia una asimetría hacia la derecha. Esta asimetría podría ser indicativa de un cierto sesgo presente en los datos.
Si se examinan los valores atípicos, se nota que algunos alcanzan hasta los 645 millones. Es fundamental destacar que esta aparente contradicción entre la definición estadística de valores atípicos y su interpretación en el mundo real es especialmente relevante en el contexto del mercado inmobiliario. En realidad, valores de esta magnitud, aunque parezcan atípicos desde una perspectiva puramente estadística, son plenamente comprensibles y posibles en el ámbito de bienes raíces. Pueden darse casos en los que una propiedad realmente valga incluso mas de 645 millones.
Por otro lado, el 50% de los precios de las viviendas se encuentra en un rango de precios que va desde 153.5 hasta 240 millones, lo cual también se refleja claramente en el histograma, donde se observan columnas notables en esa franja de precios con alta frecuencia. Además, el 75% de las viviendas tiene un valor inferior a 240 millones.
Variable Área construida
grafico_boxplot <- ggplot(vivienda4, aes(y = areaconst)) +
                  geom_boxplot() +
                  theme_minimal() +
                  labs(title = "Gráfico de Boxplot", y = "Área construida")

print(grafico_boxplot)

histarea<-hist(vivienda4$areaconst, col = "blue", breaks = 14, main="Histograma Variable: Área construida", xlab="Intervalos Área")

Igualmente, al analizar la variable de “Área Construida”, se emplean tanto el boxplot como el histograma. En este caso, se observa que la mediana no está completamente centrada en la caja, sino que presenta un ligero desplazamiento hacia el cuartil 1. Este patrón sugiere que la distribución de los datos tiende a sesgarse hacia la izquierda o hacia valores más bajos. En otras palabras, la mayoría de los datos se concentran en la parte inferior de la distribución, mientras que hay relativamente pocos datos en la parte superior. Adicionalmente, se observa la existencia de valores atípicos que alcanzan hasta los 200 metros cuadrados. Esto puede explicarse por la realidad de que algunas propiedades efectivamente presentan áreas construidas de este tamaño o incluso mayores.
Asimismo, se observa que el 50% de las viviendas se encuentra en un rango de área construida que va desde 60 hasta 84 metros cuadrados. Además, el 75% de las casas tienen áreas construidas inferiores a 84 metros cuadrados. Estos datos proporcionan una visión clara de la distribución y la variabilidad en el tamaño de las viviendas en el conjunto de datos analizado.

2) Realice un análisis exploratorio bivariado de datos, enfocado en la relación entre la variable respuesta (precio) en función de la variable predictora (area construida) - incluir gráficos e indicadores apropiados interpretados.

Se lleva a cabo un análisis bivariado detallado que involucra las dos variables el precio de la vivienda y el área construida. El propósito es explorar en profundidad la relación que existe entre estas dos variables, con el fin de obtener una comprensión más completa de cómo se influyen mutuamente.
grafico_dispersion<-ggplot(vivienda4, aes(x = vivienda4$areaconst, y = vivienda4$preciom)) +
  geom_point(color = "blue", shape = 16) +
  labs(title = "Área construida Vs Precio", x = "Área en m2", y = "Precio en millones")

# Calcular el índice de correlación
indice_correlacion <- cor(vivienda4$areaconst, vivienda4$preciom)

# Agregar el índice de correlación al gráfico
grafico_dispersion +
  geom_text(aes(label = paste("Correlación:", round(indice_correlacion, 2))),
            x = max(vivienda4$areaconst), y = max(vivienda4$preciom),
            hjust = 1, vjust = 1, color = "red")

Análisis bivariado

Al analizar el gráfico de “Precio vs. Area construida”, se pueden extraer observaciones significativas. Visualmente, se observa una tendencia lineal, lo que sugiere que a medida que aumenta el área construida, el precio tiende a aumentar. Se destaca una concentración de puntos en el rango de áreas de 50 a 100 metros cuadrados y precios de 100 a 400 millones aproximadamente. Más allá de esta concentración, los datos muestran una mayor dispersión, aunque aún siguen una tendencia lineal aproximada. Además, se identifican valores atípicos, que son puntos notables debido a su distancia con respecto a los demás. Esto es debido a que estos valores atípicos coinciden en ambas variables, lo que explica su alejamiento respecto al conjunto principal de datos.
Esta observación se respalda con el índice de correlación de 0.76 entre las variables “Precio” y “Área”, lo que indica una correlación positiva. Aunque se considera una correlación débil, pero es claro que existe una tendencia lineal que sugiere que a medida que el área construida aumenta, el precio también aumenta. Además, lo que es coherente con las expectativas en el mercado inmobiliario, donde las propiedades más grandes suelen tener precios más altos. Por ultimo es importante recordar que la correlación no implica causalidad. Es decir, no se puede concluir que un aumento en el precio de una vivienda causa directamente un aumento en su área construida ni viceversa. Pueden intervenir otros factores o variables que influyan en esta relación.

3) Estime el modelo de regresión lineal simple entre precio=f(area)+ε. Interprete los coeficientes del modelo β0, β1 en caso de ser correcto.

“Durante este paso, se aplica el modelo de regresión lineal a la base de datos. Una vez concluido el proceso de regresión, se genera un resumen que incorpora medidas fundamentales, coeficientes de regresión, estadísticas de ajuste, y una serie de resultados significativos.
Tabla de resultados 1
modelo = lm(preciom ~ areaconst, data = vivienda4)

summary(modelo)
## 
## Call:
## lm(formula = preciom ~ areaconst, data = vivienda4)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -225.404  -23.902   -4.754   25.763  209.021 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 39.04679    4.09977   9.524   <2e-16 ***
## areaconst    2.16473    0.05204  41.595   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 43.34 on 1361 degrees of freedom
## Multiple R-squared:  0.5597, Adjusted R-squared:  0.5594 
## F-statistic:  1730 on 1 and 1361 DF,  p-value: < 2.2e-16
Además, a continuación, se presenta el gráfico que ilustra la recta con los coeficientes estimados, es decir su punto de intersección y pendiente. Esta representación gráfica brinda una visualización clara de la relación lineal entre las variables analizadas.
# Crear un gráfico de dispersión de los datos y la línea de regresión
ggplot(vivienda4, aes(x = areaconst, y = preciom)) +
  geom_point() +  # Agregar los puntos de datos
  geom_smooth(method = "lm", se = FALSE, color = "blue") +  # Agregar la línea de regresión
  labs(title = "Estimación de la Recta de Regresión",
       x = "Área Construida (m^2)",
       y = "Precio (en millones)")  # Etiquetas del gráfico
## `geom_smooth()` using formula = 'y ~ x'

Según la estimacion del modelo por regresion lineal se tiene la siguiente ecuacion que lo rige PRECIO = 39.04+2.16(AREA) siendo el corte = 39.04 con un error de 4.09 y la pendiente igual a 2.16 con un error de 0.052, ademas visualmente se puede ver que muchos de los valores reales no se adaptan a la recta pero aun asi, es la recta que mejor sigue la tendencia lineal de los datos segun los minimos cuadrados ordinarios.
Según los datos suministrados en la tabla anterior, se pueden inferir varias conclusiones e interpretar los coeficientes de la siguiente manera:
Al analizar los valores de t-value para ambas variables, se observa que el valor t para la intercepción es 9.52, lo que indica su significancia estadística. Sin embargo, es importante destacar que la interpretación del coeficiente, que representa el corte, carece de validez práctica, ya que no tiene sentido considerar el área de una vivienda construida como cero y asignarle un valor de precio.

El valor t para el coeficiente de “Área Construida” es 41.59, lo cual indica significancia estadística. Esto implica que el “Área Construida” tiene un efecto estadísticamente significativo en el “Precio”.La interpretación de este coeficiente, que denota la pendiente, implica que a medida que el área construida aumenta en una unidad, se espera un incremento estimado de 2.16 millones de pesos en el precio. Esta relación es proporcional, lo que significa que cada metro cuadrado adicional en el área construida se traduce en un incremento de valor de esa magnitud en el precio.

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 hipótesis t.

confint(modelo)
##                2.5 %    97.5 %
## (Intercept) 31.00423 47.089340
## areaconst    2.06264  2.266826
El intervalo de confianza al 95% para la pendiente, representada por el coeficiente β1, se encuentra en el rango de 2.06 a 2.3. La exclusión del valor cero dentro de este intervalo indica que es probable que el coeficiente β1 sea diferente de cero. Esta evidencia sugiere que la variable independiente tiene un impacto significativo en la variable dependiente.
Para fortalecer esta conclusión, se va a comparar este resultado con una prueba de hipótesis. En esta prueba, la hipótesis nula establece que el coeficiente β1 es igual a cero, lo que implicaría que la variable independiente no tiene influencia sobre la variable dependiente.
Para evaluar si el coeficiente β1 es significativamente distinto de cero, se plantea la siguiente prueba de hipótesis:
Hipótesis Nula (H0): β1 = 0
Hipótesis Alternativa (H1): β1 ≠ 0
En la tabla de resultados (1), se presenta el valor p para cada coeficiente. Respecto a el valor asociado a β1, se observa que la prueba de hipótesis con respecto a H0: β1 = 0 se rechaza. Esto se debe a que el valor p en este caso es aproximadamente cero.
Un valor p bajo indica la significancia del coeficiente. En este contexto, sugiere que la variable independiente “Área Construida” tiene un efecto significativo en la variable dependiente “Precio”,Esto sugiere que el coeficiente β1 no es igual a cero y tiene un impacto sustancial en el precio de las viviendas, y ademas se constata con el intervalo de confianza encontrado.

5) Calcule e interprete el indicador de bondad R2.

A partir de la tabla (1) se obtiene el indicador de bondad R², que presenta un valor de 0.5597. Esto indica que el modelo es capaz de explicar alrededor del 56% de la variabilidad en la variable “Precio”. El 44% restante de la variabilidad se debe a otros factores que no están considerados en este modelo. En general, el modelo es efectivo en explicar una parte significativa de la variabilidad en los precios de las viviendas, pero aún existen otros elementos no contemplados que influyen en dichos precios.

6) ¿Cuál sería 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 sería una atractiva esta oferta? ¿Qué consideraciones adicionales se deben tener?.

# Estimar el precio promedio para un apartamento de 110 metros cuadrados

predict(modelo, data.frame(areaconst=110))
##        1 
## 277.1674
El precio estimado promedio para un apartamento de 110 metros cuadrados se sitúa en aproximadamente 277 millones de pesos. En cuanto a la segunda pregunta, considero que sería una oferta atractiva, ya que el precio sería 77 millones de pesos inferior al de otro apartamento en la misma zona con la misma área construida. Sin embargo, es fundamental recordar que el modelo de regresión lineal simple proporciona una estimación y no tiene en cuenta todos los factores que pueden influir en el precio de una propiedad. Además, no garantiza una precisión del 100%. Otros factores influyentes pueden incluir la ubicación exacta del apartamento, la calidad de la construcción, la antigüedad del edificio, el estado de mantenimiento, la disponibilidad de servicios cercanos, el número de habitaciones, entre otros.

7) Realice la validación de los supuestos del modelo por medio de gráficos apropiados, interpretarlos y sugerir posibles soluciones si se violan algunos de ellos. Utilice las pruebas de hipótesis para la validación de supuestos y compare los resultados con lo observado en los gráficos asociados.

El método MCO, es un método matemático que tiene solución única, sin embargo, si se desea realizar inferencia estadística como intervalos de confianza y pruebas de hipótesis sobre las estimaciones, es necesario validar los siguientes supuestos:
1) Normalidad
2) Homoscedasticidad
3) Linealidad
4) No autocorrelación
1) Normalidad
Para confirmar este supuesto, es necesario demostrar que los errores siguen una distribución normal. Una de las maneras más sencillas de hacerlo es mediante la creación de gráficos de los residuos del modelo y la posterior evaluación de su semejanza con una distribución normal.En este contexto, se empleará un histograma de residuos para realizar dicha evaluación y se implementara la prueba de normalidad de Shapiro-wilk.

Shapiro-Wilk

shapiro.test(modelo$residuals)
## 
##  Shapiro-Wilk normality test
## 
## data:  modelo$residuals
## W = 0.96486, p-value < 2.2e-16

Histograma de residuos

# Extraer los residuos del modelo
residuos <- residuals(modelo)

# Crear un gráfico de dispersión de residuos
ggplot(data.frame(Residuos = residuos), aes(x = Residuos)) +
  geom_histogram(binwidth = 2, fill = "lightblue", color = "blue") +
  labs(title = "Gráfico de Residuos",
       x = "Residuos",
       y = "Frecuencia")

Prueba shapiro-Wilks
Toma de decisión:
(p valor) > alfa & W > alfa: No rechazar H0 (normal)
(p valor) < alfa & W < alfa: Rechazar H0 (no normal)
En este caso, donde el valor de alfa representa la significancia y es igual al 5% (0.05), se realiza un análisis de la prueba de Shapiro-Wilks. se observa que el valor de “W” obtenido es 0.96486, y el valor p es extremadamente pequeño (menos de 2.2e-16). Sin embargo, en esta situación, el valor de “W” cercano a 1 puede considerarse una aproximación suficiente a la normalidad pero el valor p extremadamente pequeño (p < 2.2e-16) rechazaría la hipótesis nula.
La obtención de estos valores aparentemente contradictorios se debe a la alta sensibilidad de la prueba a pequeñas desviaciones de la normalidad, lo cual es influenciado por el gran tamaño de la muestra en este caso. Puede indicar que la distribución de los datos se asemeja a una distribución normal, considerando el contexto y el tamaño de la muestra. Por lo tanto, no se rechaza la hipótesis nula, lo que significa que no se dispone de evidencia suficiente para afirmar que los datos no siguen una distribución normal. Esto se respalda también visualmente, como se puede apreciar en el análisis gráfico del histograma de residuos anterior, el cual se caracteriza por tener una simetria considerable y tener una forma aproximada de campana.
Para evidenciar aun mas el anterior análisis se evalua la gráfica Quantile-Quantile Plot a continuación:
# Crea el QQ-Plot
qqnorm(residuos)
qqline(residuos, col = 2)  # Agrega una línea de referencia en color rojo (col = 2)

En términos generales, se puede apreciar que los datos muestran una cierta correspondencia con una distribución normal, ya que los puntos en el QQ-Plot se alinean aproximadamente en una línea recta. No obstante, también es evidente que algunos valores se desvían de esta línea, lo que podría indicar la presencia de valores atípicos o una desviación de la plena normalidad. En resumen, en cuanto a la normalidad, se puede afirmar que se cumple en su mayoría, aunque con indicios de que no se ajusta perfectamente en todos los casos.

2) Homoscedasticidad

La homocedasticidad implica que la dispersión de los errores (residuos) sea constante en todos los niveles de la variable independiente. Para evaluar la homocedasticidad se utilizaran do enfoques uno mediante un grafico de residuos vs. valores ajustados y el otro por medio de la prueba de Breusch-Pagan.
Grafico de Residuos vs. Valores ajustados
# Extraer los valores ajustados y los residuos del modelo
valores_ajustados <- fitted(modelo)

# Crear un gráfico de dispersión de valores ajustados vs. residuos
ggplot(data.frame(ValoresAjustados = valores_ajustados, Residuos = residuos), aes(x = ValoresAjustados, y = Residuos)) +
  geom_point() +
  geom_hline(yintercept = 0, linetype = "dashed", color = "red") +
  labs(title = "Gráfico de Valores Ajustados vs. Residuos",
       x = "Valores Ajustados",
       y = "Residuos")

lmtest::bptest(modelo)
## 
##  studentized Breusch-Pagan test
## 
## data:  modelo
## BP = 292.99, df = 1, p-value < 2.2e-16
Observando el gráfico de dispersión, es evidente que existen ciertos indicios de variabilidad en la distribución de los puntos. Aunque algunos puntos parecen concentrarse en áreas específicas, hay también una dispersión apreciable.
Sin embargo, para una evaluación más precisa, se realiza la prueba Breusch-Pagan y se observa que el valor de p asociado a esta prueba es menor que 0.05, lo que lleva al rechazo de la hipótesis nula. En esta prueba, la hipótesis nula sostiene que no hay heterocedasticidad en el modelo.
Dado que se rechazó la hipótesis nula, esto sugiere que existe evidencia estadística de la presencia de heterocedasticidad en el modelo. En otras palabras, la variabilidad de los errores no es constante, es decir que este supuesto no se cumple en su mayoria.

3) Linealidad

Para evaluar la linealidad, recordemos el gráfico de dispersión anterior que mostraba la relación entre el precio y el área construida. En este gráfico, se observa una tendencia que sugiere una relación lineal entre las dos variables. Esta observación se respalda un poco por el índice de correlación entre las dos variables, que indicó una correlación positiva.
Sin embargo, para un análisis más detallado de la linealidad, se pueden referir al análisis bivariado que se realizó entre estas dos variables. En ese análisis, se observa que la relación es aproximadamente lineal, aunque no perfecta. Algunos puntos se desvían de la tendencia lineal, pero en general, se mantiene una relación lineal en la mayoría de los datos.

4) No autocorrelación

No se esta trabajando con series temporales ni con datos que cambian con el tiempo. La base de datos se compone de observaciones independientes de apartamentos, y solo se tienen dos variables principales: precio y área construida. Por lo tanto, no se espera encontrar autocorrelación en este contexto.

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

Dado que algunos supuestos no se cumplen plenamente o no ofrecen evidencia suficiente de su cumplimiento, es fundamental considerar la posibilidad de aplicar transformaciones adecuadas.Se deben realizar estas transformaciones para mejorar tanto el ajuste del modelo como la validación de los supuestos.
A continuacion se aplicaran las siguentes transformaciones:
Lin - Lin (modelo inicial)
Lin - Log
Log - Lin
Log - Log
De esta manera, se generan un total de tres modelos distintos, cada uno con una transformacion diferente. A continuación, se extraen los datos más relevantes de estos modelos incluyendo el modelo inicial, con el propósito de evaluar si se cumplen o no los supuestos. Esta evaluación se llevará a cabo mediante la evaluación de una tabla informativa, los valores para pruebas como shapiro wilks, Breusch_Pagan y la representación gráfica de los resultados, lo que proporcionará una visión completa y detallada de la conformidad con los supuestos del análisis.
modelo1=lm(preciom ~ areaconst, data=vivienda4)           # Lin - Lin
modelo2=lm(preciom ~ log(areaconst), data=vivienda4)      # Lin - Log
modelo3=lm(log(preciom) ~ areaconst, data=vivienda4)      # Log - Lin
modelo4=lm(log(preciom) ~ log(areaconst), data=vivienda4) # Log - Log

print("Tabla 2")
## [1] "Tabla 2"
library(stargazer)
stargazer(modelo1, modelo2, modelo3, modelo4, type="text", df=FALSE)
## 
## =======================================================================
##                                     Dependent variable:                
##                     ---------------------------------------------------
##                              preciom                log(preciom)       
##                         (1)          (2)          (3)          (4)     
## -----------------------------------------------------------------------
## areaconst             2.165***                  0.009***               
##                       (0.052)                   (0.0002)               
##                                                                        
## log(areaconst)                    195.419***                 0.882***  
##                                    (4.445)                   (0.020)   
##                                                                        
## Constant             39.047***   -635.532***    4.551***     1.484***  
##                       (4.100)      (19.092)     (0.019)      (0.087)   
##                                                                        
## -----------------------------------------------------------------------
## Observations           1,363        1,363        1,363        1,363    
## R2                     0.560        0.587        0.520        0.582    
## Adjusted R2            0.559        0.587        0.519        0.582    
## Residual Std. Error    43.339       41.982       0.205        0.191    
## F Statistic         1,730.157*** 1,933.199*** 1,473.424*** 1,894.288***
## =======================================================================
## Note:                                       *p<0.1; **p<0.05; ***p<0.01
print("Modelo 1")
## [1] "Modelo 1"
par(mfrow = c(1, 2))
plot(modelo1)

print("Modelo 2")
## [1] "Modelo 2"
par(mfrow = c(1, 2))
plot(modelo2)

print("Modelo 3")
## [1] "Modelo 3"
par(mfrow = c(1, 2))
plot(modelo3)

print("Modelo 4")
## [1] "Modelo 4"
par(mfrow = c(1, 2))
plot(modelo4)

Resultados pruebas shapiro-wilk y Breusch_Pagan

# Crear una función para realizar las pruebas
realizar_pruebas <- function(modelo) {
  # Prueba de Shapiro-Wilk
  shapiro_test <- shapiro.test(residuals(modelo))
  
  # Prueba de Breusch-Pagan
  bp_test <- bptest(modelo)
  
  
  # Devolver los resultados de las pruebas
  resultados <- list(
    Shapiro_Wilk = shapiro_test,
    Breusch_Pagan = bp_test
  )
  return(resultados)
}

# Aplicar la función a los cuatro modelos
resultados_modelo1 <- realizar_pruebas(modelo1)
resultados_modelo2 <- realizar_pruebas(modelo2)
resultados_modelo3 <- realizar_pruebas(modelo3)
resultados_modelo4 <- realizar_pruebas(modelo4)

# Visualizar los resultados para cada modelo
resultados_modelo1
## $Shapiro_Wilk
## 
##  Shapiro-Wilk normality test
## 
## data:  residuals(modelo)
## W = 0.96486, p-value < 2.2e-16
## 
## 
## $Breusch_Pagan
## 
##  studentized Breusch-Pagan test
## 
## data:  modelo
## BP = 292.99, df = 1, p-value < 2.2e-16
resultados_modelo2
## $Shapiro_Wilk
## 
##  Shapiro-Wilk normality test
## 
## data:  residuals(modelo)
## W = 0.95826, p-value < 2.2e-16
## 
## 
## $Breusch_Pagan
## 
##  studentized Breusch-Pagan test
## 
## data:  modelo
## BP = 214.66, df = 1, p-value < 2.2e-16
resultados_modelo3
## $Shapiro_Wilk
## 
##  Shapiro-Wilk normality test
## 
## data:  residuals(modelo)
## W = 0.99051, p-value = 1.035e-07
## 
## 
## $Breusch_Pagan
## 
##  studentized Breusch-Pagan test
## 
## data:  modelo
## BP = 150.38, df = 1, p-value < 2.2e-16
resultados_modelo4
## $Shapiro_Wilk
## 
##  Shapiro-Wilk normality test
## 
## data:  residuals(modelo)
## W = 0.98958, p-value = 2.857e-08
## 
## 
## $Breusch_Pagan
## 
##  studentized Breusch-Pagan test
## 
## data:  modelo
## BP = 92.877, df = 1, p-value < 2.2e-16

9,10 y 11) De ser necesario compare el ajuste y supuestos del modelo inicial y el transformado.Estime varios modelos y compare los resultados obtenidos. En el mejor de los modelos, ¿se cumplen los supuestos sobre los errores?. Con los resultados obtenidos construya un informe para los directivos de la inmobiliaria, indicando el modelo apropiado y sus principales características. A este informe se deben añadir los anexos como evidencia de la realización de los pasos anteriores.

Para llevar a cabo la comparación del modelo inicial con los modelos transformados, se identificará el mejor modelo entre los tres modelos transformados y el modelo inicial. A grandes rasgos, según la Tabla 2, para el Modelo 3 y el Modelo 4, se obtuvieron las mejores estimaciones de los coeficientes. Según el Modelo 3, al hallar la pendiente, se obtuvo un error de 0.0002 y un error de 0.019 para el corte. Para el Modelo 4, el error de la pendiente fue de 0.020 y el error del corte fue de 0.087. Evidentemente, según estos valores de error, el mejor modelo parece ser el Modelo 3.
No obstante, se continua confirmándo al evaluar otros indicadores. El coeficiente de determinación R2 es de 0.52 para el Modelo 3 y de 0.58 para el Modelo 4. En cuanto al Residual Std. Error, es de 0.205 para el Modelo 3 y de 0.191 para el Modelo 4. Un valor menor en el Residual Std. Error indica un mejor ajuste del modelo a los datos. Basándose en estos valores, el Modelo 4 parece ser ligeramente mejor que el Modelo 3, ya que tiene un Residual Std. Error menor.
Además, al evaluar las gráficas de Residual vs Fitted y Q-Q Residuals, se tiene en cuenta los supuestos de homocedasticidad y linealidad. En cuanto a estas dos gráficas, los Modelos 3 y 4 también parecen ser los mejores. Se observa claramente cómo mejora la linealidad en la gráfica Q-Q Residuals y cómo los puntos se ajustan a la recta. Con respecto a la homocedasticidad, al evaluar la gráfica Residual vs Fitted, se observa que la dispersión de los errores no es demasiado constante para ninguno de los modelos, ligeramente son mejores el 3 y 4.
Además de esto, al considerar los valores de las pruebas de Shapiro-Wilk y Breusch-Pagan para evaluar los supuestos de normalidad de los errores y homocedasticidad, notamos lo siguiente:
Supuesto de Normalidad de los Errores (Shapiro-Wilk): El p-valor en todos los casos es muy pequeño (todos son < 2.2e-16), lo que sugiere que los residuos no siguen una distribución normal. Esto podría indicar una violación del supuesto de normalidad de los errores. Sin embargo, es notable que los valores de W son muy cercanos a uno para el Modelo 3, indicando una buena aproximación a la normalidad, y el valor de p es el mayor de todos para este modelo.
Supuesto de Homocedasticidad (Breusch-Pagan): El p-valor en todos los casos es muy pequeño (todos son < 2.2e-16), lo que sugiere que hay evidencia significativa de heterocedasticidad en los residuos. Esto podría indicar una violación del supuesto de homocedasticidad.
Basándonos en los resultados, los modelos más prometedores son el Modelo 3 y el Modelo 4. Sin embargo, considerando la variedad de indicadores positivos, el Modelo 4 es la mejor opcion. Ambos modelos transformados superan al Modelo inicial (Modelo 1) en términos de cumplimiento de los supuestos y calidad del ajuste. Sus características más destacadas incluyen una minimización del error en los coeficientes, una relación lineal notable, una aproximación a la normalidad en la distribución de los errores y una homocedasticidad relativamente buena.
En resumen, el Modelo 4 se destaca como el más sólido y adecuado para representar la relación entre las variables, superando tanto al Modelo 1 como al Modelo 3 y 2 en términos de cumplimiento de supuestos y precisión en la estimación de los coeficientes.
En última instancia, se puede decir que los supuestos de regresión lineal no se cumplen de manera perfecta en los modelos analizados. Esto se debe a que existen ciertas variabilidades que sugieren que el modelo no se comporta de manera estrictamente lineal. Uno de los supuestos clave de la regresión lineal es la homocedasticidad, que implica que la varianza de los errores (residuos) es constante en todos los niveles de las variables independientes. Sin embargo, en estos modelos, se observa cierta variabilidad en la dispersión de los errores, lo que sugiere que la homocedasticidad no se cumple de manera perfecta.

Conclusiones

1) El análisis de regresión lineal simple realizado para predecir el precio de los apartamentos en función de su área construida revela que, a pesar de no cumplir plenamente con todos los supuestos de la regresión lineal, el Modelo Log - Log se presenta como la opción más adecuada entre los modelos evaluados. Este modelo logra una aproximación satisfactoria a la normalidad de los errores y mejora significativamente la linealidad y homocedasticidad en comparación con el modelo inicial. Sin embargo, es fundamental tener en cuenta que las estimaciones de precios se basan únicamente en el área construida y que otros factores pueden influir en los precios de las viviendas en la zona.
2) El análisis de regresión proporciona una valiosa herramienta para comprender y predecir las relaciones entre variables, pero también subraya la complejidad de los fenómenos del mundo real. En el contexto inmobiliario, la determinación de los precios de las viviendas es influenciada por una amplia gama de factores que no pueden ser capturados completamente por un modelo de regresión simple. Por lo tanto, aunque el Modelo Log - Log mejora el ajuste del modelo, es importante reconocer sus limitaciones y considerar que la verdadera variabilidad de los precios puede deberse a factores que no se han tenido en cuenta en este análisis, como la ubicación exacta, la calidad de la construcción, la antigüedad del edificio y otros elementos.