1 Predicción de valores de Viviendas en la Ciudad de Boston

1.0.1 Descripción

Valores de las viviendas en los suburbios de Boston

El conjunto de datos Boston es un marco de datos (data frame) que contiene 506 filas y 14 columnas. Incluye variables relacionadas con las características de las viviendas, las condiciones socioeconómicas, la contaminación y la accesibilidad a los servicios en los suburbios de Boston.

Variables:

  • crim: Tasa de criminalidad per cápita por localidad.
  • zn: Proporción de terrenos residenciales destinados a lotes de más de 25 000 pies cuadrados.
  • indus: Proporción de acres destinados a negocios no minoristas por localidad.
  • chas: Variable indicadora del río Charles: toma el valor 1 si el terreno limita con el río y 0 en caso contrario.
  • nox: Concentración de óxidos de nitrógeno, expresada en partes por cada 10 millones.
  • rm: Número promedio de habitaciones por vivienda.
  • age: Proporción de unidades ocupadas por sus propietarios construidas antes de 1940.
  • dis: Media ponderada de las distancias a cinco centros de empleo de Boston.
  • rad: Índice de accesibilidad a las autopistas radiales.
  • tax: Tasa del impuesto predial calculada sobre un valor de 10 000 dólares.
  • ptratio: Proporción de estudiantes por docente en cada localidad.
  • black: Variable calculada mediante la expresión \(1000(B_k-0.63)^2\), donde \(B_k\) representa la proporción de población negra por localidad.
  • lstat: Porcentaje de población de nivel socioeconómico bajo.
  • medv: Valor mediano de las viviendas ocupadas por sus propietarios, expresado en miles de dólares.

2 1. Cargar librerías

library(MASS)
library(neuralnet)
library(ggplot2)
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.2.1     ✔ readr     2.2.0
## ✔ forcats   1.0.1     ✔ stringr   1.6.0
## ✔ lubridate 1.9.5     ✔ tibble    3.3.1
## ✔ purrr     1.2.2     ✔ tidyr     1.3.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::compute() masks neuralnet::compute()
## ✖ dplyr::filter()  masks stats::filter()
## ✖ dplyr::lag()     masks stats::lag()
## ✖ dplyr::select()  masks MASS::select()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(visdat)
library(tidyverse)
library(dplyr)
library(skimr)

3 2. Cargar los datos

set.seed(65)
datos <- Boston
head(datos)
##      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

4 3. Análisis exploratorio de datos

5 3.1 Estructura de los datos

str(datos)
## 'data.frame':    506 obs. of  14 variables:
##  $ crim   : num  0.00632 0.02731 0.02729 0.03237 0.06905 ...
##  $ zn     : num  18 0 0 0 0 0 12.5 12.5 12.5 12.5 ...
##  $ indus  : num  2.31 7.07 7.07 2.18 2.18 2.18 7.87 7.87 7.87 7.87 ...
##  $ chas   : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ nox    : num  0.538 0.469 0.469 0.458 0.458 0.458 0.524 0.524 0.524 0.524 ...
##  $ rm     : num  6.58 6.42 7.18 7 7.15 ...
##  $ age    : num  65.2 78.9 61.1 45.8 54.2 58.7 66.6 96.1 100 85.9 ...
##  $ dis    : num  4.09 4.97 4.97 6.06 6.06 ...
##  $ rad    : int  1 2 2 3 3 3 5 5 5 5 ...
##  $ tax    : num  296 242 242 222 222 222 311 311 311 311 ...
##  $ ptratio: num  15.3 17.8 17.8 18.7 18.7 18.7 15.2 15.2 15.2 15.2 ...
##  $ black  : num  397 397 393 395 397 ...
##  $ lstat  : num  4.98 9.14 4.03 2.94 5.33 ...
##  $ medv   : num  24 21.6 34.7 33.4 36.2 28.7 22.9 27.1 16.5 18.9 ...
skim(datos)
Data summary
Name datos
Number of rows 506
Number of columns 14
_______________________
Column type frequency:
numeric 14
________________________
Group variables None

Variable type: numeric

skim_variable n_missing complete_rate mean sd p0 p25 p50 p75 p100 hist
crim 0 1 3.61 8.60 0.01 0.08 0.26 3.68 88.98 ▇▁▁▁▁
zn 0 1 11.36 23.32 0.00 0.00 0.00 12.50 100.00 ▇▁▁▁▁
indus 0 1 11.14 6.86 0.46 5.19 9.69 18.10 27.74 ▇▆▁▇▁
chas 0 1 0.07 0.25 0.00 0.00 0.00 0.00 1.00 ▇▁▁▁▁
nox 0 1 0.55 0.12 0.38 0.45 0.54 0.62 0.87 ▇▇▆▅▁
rm 0 1 6.28 0.70 3.56 5.89 6.21 6.62 8.78 ▁▂▇▂▁
age 0 1 68.57 28.15 2.90 45.02 77.50 94.07 100.00 ▂▂▂▃▇
dis 0 1 3.80 2.11 1.13 2.10 3.21 5.19 12.13 ▇▅▂▁▁
rad 0 1 9.55 8.71 1.00 4.00 5.00 24.00 24.00 ▇▂▁▁▃
tax 0 1 408.24 168.54 187.00 279.00 330.00 666.00 711.00 ▇▇▃▁▇
ptratio 0 1 18.46 2.16 12.60 17.40 19.05 20.20 22.00 ▁▃▅▅▇
black 0 1 356.67 91.29 0.32 375.38 391.44 396.22 396.90 ▁▁▁▁▇
lstat 0 1 12.65 7.14 1.73 6.95 11.36 16.96 37.97 ▇▇▅▂▁
medv 0 1 22.53 9.20 5.00 17.02 21.20 25.00 50.00 ▂▇▅▁▁

5.1 3.1. Estadística descriptiva

5.2 3.2. Análisis gráfico

6 4. Construcción de modelos

6.1 4.1. Regresión

6.2 4.2. Redes neuronales

7 5. Evaluación de los modelos

8 6. Conclusiones

8.1 R Markdown

8.2 R Markdown

8.3 R Markdown

8.4 R Markdown

8.5 R Markdown

8.6 R Markdown

8.7 R Markdown

8.8 R Markdown

8.9 R Markdown

8.10 R Markdown

8.11 R Markdown

8.12 R Markdown

8.13 R Markdown

8.14 R Markdown

8.15 R Markdown

8.16 R Markdown

8.17 R Markdown

8.18 R Markdown

8.19 R Markdown

8.20 R Markdown

8.21 Including Plots

You can also embed plots, for example: