a. Pregunta 1

Un estudiante de Maestría en Economía que estoy asesorando ha desarrollado un modelo econométrico que permite a los inversionistas y comerciantes de diamantes entender la relación entre las características de los diamantes y su precio de mercado y predecir el precio futuro de los diamantes basándose en estas características. Como parte de la evaluación del modelo, el estudiante registró los precios predichos por su modelo y los precios reales de un conjunto de “diamonds”, obteniendo los siguientes resultados.

library(ggplot2)
library(plotly)
## 
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout
data(diamonds)

g <- ggplot(diamonds, aes(x = cut, y = price, fill = cut)) +
geom_boxplot() +
labs(x = "Corte", y = "Precio", fill = "Corte") +
theme_bw()

ggplotly(g)
  • The Economist publicó un artículo que estudiaba el precio de más de 5,000 diamantes, obteniendo un precio medio de $6,000. Evalúe las predicciones de precios de los diamantes por parte del modelo econométrico del estudiante respecto al reporte de The Economist

*Aqui se agrego codigo para generar datos random en las preddicones porque el dataset no lo contiene.

set.seed(42)  
n = nrow(diamonds)  
predicciones = runif(n, min = 4000, max = 8000) 

datos= data.frame(predicciones = predicciones, precio_medio_referencia = rep(6000, n))

datos$error_absoluto = abs(datos$predicciones - datos$precio_medio_referencia)

mae = mean(datos$error_absoluto)

mse = mean(datos$error_absoluto^2)

rmse = sqrt(mse)

ssr = sum((datos$predicciones - mean(datos$precio_medio_referencia))^2)  
sst = sum((datos$precio_medio_referencia - mean(datos$precio_medio_referencia))^2)  
r_cuadrado = 1 - (ssr / sst)

print(mae)
## [1] 1006.621
print(mse)
## [1] 1349950
print(rmse)
## [1] 1161.874
print(r_cuadrado)
## [1] -Inf
summary(datos)
##   predicciones  precio_medio_referencia error_absoluto     
##  Min.   :4000   Min.   :6000            Min.   :   0.0603  
##  1st Qu.:4989   1st Qu.:6000            1st Qu.: 500.8373  
##  Median :6005   Median :6000            Median :1010.9901  
##  Mean   :6003   Mean   :6000            Mean   :1006.6213  
##  3rd Qu.:7011   3rd Qu.:6000            3rd Qu.:1510.1357  
##  Max.   :8000   Max.   :6000            Max.   :1999.9699
  • Concluya sobre los resultados obtenidos

El error absoluto medio más bajo indicaría una menor discrepancia promedio entre las predicciones y los precios reales, mientras que un error cuaratico medio y raíz cuadrada del error cuadrático Medio más bajos indicarían una menor varianza en los errores de predicción.

Referencias

Pregunta realizada por ChatGPT a base de la Pregunta 1 de PEP2 - Estadística Computacional-2022

b. Pregunta 2

El dataset de Boston Housing es un conjunto de datos ampliamente utilizado en el campo de la estadística y el aprendizaje automático. Este dataset proporciona información sobre los precios de vivienda en diferentes suburbios de Boston en la década de 1970.En especifico se analiza la relación entre el número medio de habitaciones por vivienda (RM) y el valor mediano de las viviendas ocupadas por sus propietarios (MEDV) en la ciudad de Boston.

Para su facilidad, estos datos han sido organizados y tabulados en el dataset Boston del paquete MASS. Pueden ser graficados de la siguiente manera.

library(MASS)
## 
## Attaching package: 'MASS'
## The following object is masked from 'package:plotly':
## 
##     select
library(ggplot2)
library(plotly)

data("Boston")

grafico = ggplot(Boston, aes(x = rm, y = medv)) + 
geom_point(aes(rm, medv), color = "darkblue", alpha = 0.4) +
theme_bw() + xlab("Número medio de habitaciones por vivienda") + ylab("Valor mediano de las viviendas ($1000's)") + 
ggtitle("Valor mediano de las viviendas y Número medio de habitaciones por vivienda") +
theme(plot.title = element_text(hjust = 0.5))

ggplotly(grafico)
  • Proponga un modelo de regresión lineal que relacione el número medio de habitaciones por vivienda con el valor mediano de las viviendas ocupadas por sus propietarios (variable dependiente).
data(Boston)

head(Boston)
##      crim zn indus chas   nox    rm  age    dis rad tax ptratio  black lstat
## 1 0.00632 18  2.31    0 0.538 6.575 65.2 4.0900   1 296    15.3 396.90  4.98
## 2 0.02731  0  7.07    0 0.469 6.421 78.9 4.9671   2 242    17.8 396.90  9.14
## 3 0.02729  0  7.07    0 0.469 7.185 61.1 4.9671   2 242    17.8 392.83  4.03
## 4 0.03237  0  2.18    0 0.458 6.998 45.8 6.0622   3 222    18.7 394.63  2.94
## 5 0.06905  0  2.18    0 0.458 7.147 54.2 6.0622   3 222    18.7 396.90  5.33
## 6 0.02985  0  2.18    0 0.458 6.430 58.7 6.0622   3 222    18.7 394.12  5.21
##   medv
## 1 24.0
## 2 21.6
## 3 34.7
## 4 33.4
## 5 36.2
## 6 28.7
modelo_lineal = lm(medv ~ rm, data = Boston)

summary(modelo_lineal)
## 
## Call:
## lm(formula = medv ~ rm, data = Boston)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -23.346  -2.547   0.090   2.986  39.433 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  -34.671      2.650  -13.08   <2e-16 ***
## rm             9.102      0.419   21.72   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 6.616 on 504 degrees of freedom
## Multiple R-squared:  0.4835, Adjusted R-squared:  0.4825 
## F-statistic: 471.8 on 1 and 504 DF,  p-value: < 2.2e-16
ggplot(Boston, aes(x = rm, y = medv)) +
geom_point() +
geom_smooth(method = "lm", col = "red") +
labs(title = "Regresión lineal simple: MEDV ~ RM", 
 x = "Número medio de habitaciones por vivienda (RM)",
 y = "Valor medio de las viviendas ocupadas por sus propietarios (MEDV)",
 caption = "Línea de regresión lineal representada en rojo")
## `geom_smooth()` using formula = 'y ~ x'

  • Proponga un nuevo modelo de regresión que se ajuste en mayor medida a los datos. Podría considerar la inclusión de otras variables del conjunto de datos, como la tasa de criminalidad per cápita por ciudad (CRIM) o la proporción de unidades residenciales construidas antes de 1940 (AGE). Compruebe cuantitativamente la mejora en el ajuste.
modelo = lm(medv ~ rm, data = Boston)
modelo_mult = lm(medv ~ rm + crim + age, data = Boston)
summary(modelo)
## 
## Call:
## lm(formula = medv ~ rm, data = Boston)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -23.346  -2.547   0.090   2.986  39.433 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  -34.671      2.650  -13.08   <2e-16 ***
## rm             9.102      0.419   21.72   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 6.616 on 504 degrees of freedom
## Multiple R-squared:  0.4835, Adjusted R-squared:  0.4825 
## F-statistic: 471.8 on 1 and 504 DF,  p-value: < 2.2e-16
summary(modelo_mult)
## 
## Call:
## lm(formula = medv ~ rm + crim + age, data = Boston)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -19.959  -3.143  -0.633   2.150  39.940 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -23.60556    2.76938  -8.524  < 2e-16 ***
## rm            8.03284    0.40201  19.982  < 2e-16 ***
## crim         -0.21102    0.03407  -6.195 1.22e-09 ***
## age          -0.05224    0.01046  -4.993 8.21e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 6.094 on 502 degrees of freedom
## Multiple R-squared:  0.5636, Adjusted R-squared:  0.561 
## F-statistic: 216.1 on 3 and 502 DF,  p-value: < 2.2e-16
r2_ajustado_modelo = summary(modelo)$adj.r.squared
r2_ajustado_modelo_mult = summary(modelo_mult)$adj.r.squared

print(paste("R cuadrado ajustado para el modelo simple: ", r2_ajustado_modelo))
## [1] "R cuadrado ajustado para el modelo simple:  0.482500704911952"
print(paste("R cuadrado ajustado para el modelo múltiple: ", r2_ajustado_modelo_mult))
## [1] "R cuadrado ajustado para el modelo múltiple:  0.561023992253402"
ggplot(Boston, aes(x = crim, y = medv)) +
geom_point() +
geom_smooth(method = "lm", col = "blue") +
labs(title = "Componente CRIM de la regresión lineal múltiple", 
 x = "Tasa de criminalidad per cápita por ciudad",
 y = "Valor medio de las viviendas ocupadas por sus propietarios",
 caption = "Línea de regresión lineal representada en azul")
## `geom_smooth()` using formula = 'y ~ x'

ggplot(Boston, aes(x = age, y = medv)) +
geom_point() +
geom_smooth(method = "lm", col = "green") +
labs(title = "Componente AGE de la regresión lineal múltiple", 
 x = "Proporción de viviendas construidas antes de 1940",
 y = "Valor medio de las viviendas ocupadas por sus propietarios",
 caption = "Línea de regresión lineal representada en verde")
## `geom_smooth()` using formula = 'y ~ x'

  • Analice los resultados obtenidos contextualizando su respuesta al problema. ¿Qué implica para el valor de las viviendas en Boston? ¿Cómo estas relaciones podrían ser útiles para los interesados en el mercado inmobiliario de Boston?

Cuando realizamos un análisis de regresión, cada coeficiente representa el cambio esperado en la variable de respuesta (en este caso, valor medio de la vivienda) por unidad de cambio en la variable correspondiente, manteniendo todas las demás variables constantes.Por lo tanto, un coeficiente positivo en habitaciones medianas por hogar generalmente indica que a medida que aumenta la cantidad mediana de habitaciones por hogar en el comunidad, se espera que también aumente el valor promedio de la vivienda. Específicamente, el valor del coeficiente le dice cuánto aumenta el valor medio de la vivienda por cada habitación adicional. Asimismo, los coeficientes negativos para la tasa de criminalidad per cápita en una ciudad y la proporción de unidades construidas antes de 1940 pueden indicar que las áreas con tasas de criminalidad más altas y más viviendas antiguas tienden a tener viviendas de menor valor. Estos resultados pueden ser útiles para varias partes interesadas en el mercado inmobiliario de Boston. Por ejemplo, los compradores de viviendas pueden usar la información para ayudar a evaluar los valores de las viviendas en diferentes áreas, en función de factores como el tamaño de la vivienda y las tasas de criminalidad en el área. Los inversores inmobiliarios también pueden encontrar útil esta información para identificar áreas que pueden estar infravaloradas o sobrevaloradas.

Referencias

Valor de la vivienda en los suburbios de Boston - https://www.kaggle.com/competitions/boston-housing/data