Tarea: Análisis de Datos y Evaluación de Modelos

Aquí tienes una tabla de contenido con una breve explicación para cada paso de la tarea:


Tabla de Contenido

  1. Importar paquetes
    • En esta sección, importaremos los paquetes necesarios para realizar el análisis de datos y modelización.
  2. Cargar dataset
    • En este paso, cargaremos el dataset que utilizaremos para el análisis y modelización.
  3. Normalidad
    • Utilizaremos pruebas como shapiro.test() o ks.test() para evaluar la normalidad de las variables en el dataset.
  4. Análisis de correlación
    • Utilizaremos la función chart.Correlation() del paquete PerformanceAnalytics para realizar un análisis completo de correlación entre las variables del dataset.
  5. Regresiones lineales
    • En esta sección, ajustaremos modelos de regresión lineal simple para comprender las relaciones lineales entre variables.
  6. Pruebas de autocorrelación
    • Utilizaremos la función dwtest() del paquete lmtest para realizar pruebas de autocorrelación en los residuos de los modelos de regresión.
  7. Regresiones no lineales
    • Exploraremos modelos de regresión no lineal utilizando la función nls() en R y la función curve_fit() del paquete scipy en Python.
  8. Regresión Lineal Múltiple manual
    • Realizaremos un análisis de regresión lineal múltiple manualmente utilizando la función lm() en R.
  9. Regresión Lineal Múltiple con eliminación hacia atrás
    • Utilizaremos la función stepAIC() del paquete MASS para realizar la selección automática de variables en modelos de regresión lineal múltiple.
  10. Conclusiones
    • En esta sección, presentaremos las conclusiones obtenidas a partir del análisis y modelización realizados en el dataset.

Esta tabla de contenido proporciona una guía estructurada para la tarea, detallando cada paso y la acción a realizar en cada sección.

Integrantes:

Objetivo:

Aplicar técnicas de análisis de datos, pruebas de correlación, regresiones y visualización para evaluar la relación entre variables en el dataset [Nombre del Dataset].

1. Importar Paquetes

options(warn = -1)

library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.5.1     ✔ tibble    3.2.1
## ✔ lubridate 1.9.3     ✔ tidyr     1.3.1
## ✔ purrr     1.0.2     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(PerformanceAnalytics)
## Loading required package: xts
## Loading required package: zoo
## 
## Attaching package: 'zoo'
## 
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
## 
## 
## ######################### Warning from 'xts' package ##########################
## #                                                                             #
## # The dplyr lag() function breaks how base R's lag() function is supposed to  #
## # work, which breaks lag(my_xts). Calls to lag(my_xts) that you type or       #
## # source() into this session won't work correctly.                            #
## #                                                                             #
## # Use stats::lag() to make sure you're not using dplyr::lag(), or you can add #
## # conflictRules('dplyr', exclude = 'lag') to your .Rprofile to stop           #
## # dplyr from breaking base R's lag() function.                                #
## #                                                                             #
## # Code in packages is not affected. It's protected by R's namespace mechanism #
## # Set `options(xts.warn_dplyr_breaks_lag = FALSE)` to suppress this warning.  #
## #                                                                             #
## ###############################################################################
## 
## Attaching package: 'xts'
## 
## The following objects are masked from 'package:dplyr':
## 
##     first, last
## 
## 
## Attaching package: 'PerformanceAnalytics'
## 
## The following object is masked from 'package:graphics':
## 
##     legend
library(lmtest)

2. Cargar Dataset del paquete MASS:

El marco de datos de Boston tiene 506 filas y 14 columnas. dis: media ponderada de distancias a cinco centros de empleo de Boston.

  1. rad: índice de accesibilidad a carreteras radiales. 2.tax: tasa de impuesto a la propiedad de valor total por $10,000. 3.ptratio: ratio alumnos-profesor por localidad.
  2. lstat: estatus inferior de la población (porcentaje).
  3. medv: valor medio de las viviendas ocupadas por sus propietarios en miles de dólares. (Variable dependiente)
  4. dis: media ponderada de distancias a cinco centros de empleo de Boston.

Mostrar el dataset Boston y su estructura mediante la función str()

La función str() en R se utiliza para mostrar la estructura interna de un objeto de datos de una manera compacta y legible. Esta función es muy útil para obtener una visión rápida del tipo de datos, la dimensión y el contenido de un objeto, especialmente cuando se trabaja con estructuras de datos complejas como data frames, listas y matrices.

library(MASS)
## 
## Attaching package: 'MASS'
## The following object is masked from 'package:dplyr':
## 
##     select
str(Boston)
## '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 ...
Boston[ ,c("rad", "tax", "ptratio", "lstat", "medv", "dis")]

Secuencia de Análisis:

3. Normalidad:

se utilizó el test de “Kolmogorov-Smirnov” para evaluar la normalidad de las variables. El test de “Kolmogorov-Smirnov” es una prueba estadística no paramétrica adecuada para muestras grandes (generalmente más de 50 observaciones). Esta prueba compara la función de distribución acumulativa de una muestra de datos con la función de distribución acumulativa de una distribución teórica específica, como la distribución normal.

Ho: SI ES Normal Ha: NO ES Normal

# Espacio para el código de verificación de normalidad}
ks.test(Boston$rad, "pnorm")
## 
##  Asymptotic one-sample Kolmogorov-Smirnov test
## 
## data:  Boston$rad
## D = 0.93772, p-value < 2.2e-16
## alternative hypothesis: two-sided
ks.test(Boston$tax, "pnorm")
## 
##  Asymptotic one-sample Kolmogorov-Smirnov test
## 
## data:  Boston$tax
## D = 1, p-value < 2.2e-16
## alternative hypothesis: two-sided
ks.test(Boston$ptratio, "pnorm")
## 
##  Asymptotic one-sample Kolmogorov-Smirnov test
## 
## data:  Boston$ptratio
## D = 1, p-value < 2.2e-16
## alternative hypothesis: two-sided
ks.test(Boston$lstat, "pnorm")
## 
##  Asymptotic one-sample Kolmogorov-Smirnov test
## 
## data:  Boston$lstat
## D = 0.99004, p-value < 2.2e-16
## alternative hypothesis: two-sided
ks.test(Boston$dis, "pnorm")
## 
##  Asymptotic one-sample Kolmogorov-Smirnov test
## 
## data:  Boston$dis
## D = 0.89213, p-value < 2.2e-16
## alternative hypothesis: two-sided
ks.test(Boston$medv, "pnorm")
## 
##  Asymptotic one-sample Kolmogorov-Smirnov test
## 
## data:  Boston$medv
## D = 1, p-value < 2.2e-16
## alternative hypothesis: two-sided

4. Análisis de Correlación:

Si hay normalidad, usar las pruebas de correlación con el test de pearson, si falla la normalidad usar el test de spearman. Utilice la función chart.Correlation() del paquete PerformanceAnalytics. El siguiente es un ejemplo de cómo usar la función con el test de spearman: chart.Correlation(Boston, method = "spearman"). Si no se especifica el method, la prueba es de pearson y supone normalidad.

Puede utilizar visualizaciones y pruebas para pares de variables utilizando la función with().

se utilizó el método de correlación de Spearman para evaluar las relaciones entre las variables. Este método es adecuado cuando las variables no siguen una distribución normal, como fue identificado previamente con el test de Kolmogorov-Smirnov.

# Espacio para el código de pruebas de correlación (Pearson, Spearman o Kendall)

# Configurar la supresión de warnings

options(warn=-1)
library(PerformanceAnalytics)

chart.Correlation(Boston)

chart.Correlation(
  R = Boston[,c("rad", "tax", "ptratio", "lstat", "medv", "dis")],
  histogram = TRUE,
  method = "spearman"
)

5. Regresiones Lineales:

Realice regresiones lineales simples y luego verifique la autocorrelación de los residuos con el test de Durbin-Watson, con la función dwtest() del paquete lmtest.

Estadístico Durbin-Watson – Es una medida de la correlación serial en los residuos. Si los residuos varían aleatoriamente, éste valor puede ser cercano a 2. Un pequeño P-Value indica una tendencia no aleatoria en los residuos. Para unos datos que corren sobre el tiempo, un pequeño P-value podría indicar que alguna tendencia en el tiempo no ha sido tomada en cuenta. Para datos registrados en el tiempo, un valor-P pequeño podría indicar que alguna tendencia en el tiempo no ha sido explicada. (Statgraphics).

Si falla la No Autocorrelación, proceda a realizar regresión no lineal con la función nls() y decida cual modelo no lineal que considere de acuerdo a la visualización de R.

Funciones no Lineales mas Comunes

Regresión Lineal con lm().

# Espacio para el código de regresiones lineales y prueba de autocorrelación
modelo1 <- lm(dis ~ rad, data = Boston)
summary(modelo1)
## 
## Call:
## lm(formula = dis ~ rad, data = Boston)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.0194 -1.2028 -0.2158  0.9328  7.7873 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  4.937229   0.120937   40.83   <2e-16 ***
## rad         -0.119608   0.009362  -12.78   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.832 on 504 degrees of freedom
## Multiple R-squared:  0.2446, Adjusted R-squared:  0.2431 
## F-statistic: 163.2 on 1 and 504 DF,  p-value: < 2.2e-16
plot(Boston$rad, Boston$dis)
abline(modelo1)

Visualización con ggplot() y method=“lm”

library(ggplot2)
ggplot(
  data = Boston,
  mapping = aes(x=rad, y=dis)
) +
  geom_point() +
  geom_smooth(method = "lm")
## `geom_smooth()` using formula = 'y ~ x'

Visualización con ggplot() sin method (hara el method loess)

library(ggplot2)
ggplot(
  data = Boston,
  mapping = aes(x=rad, y=dis)
) +
  geom_point() +
  geom_smooth()
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'

6. Pruebas de autocorrelación:

Estadístico Durbin-Watson El estadístico de Durbin-Watson es una medida utilizada en la estadística y la econometría para detectar la presencia de autocorrelación en los residuos de una regresión lineal. La autocorrelación indica que los errores (residuos) en un modelo de regresión no son independientes entre sí, lo que puede invalidar las inferencias estadísticas realizadas a partir del modelo.

library(lmtest)
dwtest(modelo1)
## 
##  Durbin-Watson test
## 
## data:  modelo1
## DW = 0.10853, p-value < 2.2e-16
## alternative hypothesis: true autocorrelation is greater than 0

7. Regresiones no lineales

Regres no Lineal con nls()

modelo2 <- nls(dis ~ a * exp(b*rad), data = Boston, start = list(a = 0.1, b = 0.1))
summary(modelo2)
## 
## Formula: dis ~ a * exp(b * rad)
## 
## Parameters:
##    Estimate Std. Error t value Pr(>|t|)    
## a  5.194532   0.156502  33.191   <2e-16 ***
## b -0.037898   0.003838  -9.874   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.832 on 504 degrees of freedom
## 
## Number of iterations to convergence: 7 
## Achieved convergence tolerance: 2.224e-06
dis_estimado <- predict(modelo2)
library(ggplot2)
ggplot(
  data = Boston,
  mapping = aes(x = rad, y = dis)
) +
  geom_point() +
  geom_smooth() +
  geom_line(aes(x = rad, y = dis_estimado))
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'

Grabar el archivo de Boston

library(MASS)
write.csv(x = Boston[,c ("rad", "tax", "ptratio", "lstat", "medv", "dis")],file = "Boston.csv")

Regresión no lineal con Python

La función curve_fit() se utiliza para ajustar una función modelo a datos experimentales, lo que implica encontrar los parámetros óptimos de la función que minimizan la diferencia entre los datos reales y los valores predichos por el modelo. Esto es especialmente útil en regresiones no lineales, donde la relación entre las variables no puede expresarse de manera lineal.

Pueden consultar el notebook: Regresión no Lineal.ipynb.

Se deberán instalar lo siguiente: 1. El paquete de R llamado “reticulate” 2. Todos los módulos de Python que se usen, se deben instalar en la Terminal 3. por ejemplo: matplotlib: lanzando: pip install matplotlib

Inserte a continuación un fragmento de código de Python y espere que Posit Cloud reacciones para instalar los requerimientos. A continuación se transcribe el código de Python del documento RMarkdown “2_Regresión Lineal y no Lineal”:

El código en Python es el siguiente:

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from scipy.optimize import curve_fit

import os
os.getcwd()
## '/cloud/project'
Boston = pd.read_csv("/cloud/project/Boston.csv")
Boston.info()
## <class 'pandas.core.frame.DataFrame'>
## RangeIndex: 506 entries, 0 to 505
## Data columns (total 7 columns):
##  #   Column      Non-Null Count  Dtype  
## ---  ------      --------------  -----  
##  0   Unnamed: 0  506 non-null    int64  
##  1   rad         506 non-null    int64  
##  2   tax         506 non-null    int64  
##  3   ptratio     506 non-null    float64
##  4   lstat       506 non-null    float64
##  5   medv        506 non-null    float64
##  6   dis         506 non-null    float64
## dtypes: float64(4), int64(3)
## memory usage: 27.8 KB
Boston["rad"]
## 0      1
## 1      2
## 2      2
## 3      3
## 4      3
##       ..
## 501    1
## 502    1
## 503    1
## 504    1
## 505    1
## Name: rad, Length: 506, dtype: int64
Boston["dis"]
## 0      4.0900
## 1      4.9671
## 2      4.9671
## 3      6.0622
## 4      6.0622
##         ...  
## 501    2.4786
## 502    2.2875
## 503    2.1675
## 504    2.3889
## 505    2.5050
## Name: dis, Length: 506, dtype: float64
def f(x, a, b):
    return a*np.exp(b*(x))

x = Boston["rad"]
y = Boston["dis"]

res,cov = curve_fit(f,x,y)
# res son los coeficientes a y b
print(res)
## [ 5.19452461 -0.03789824]
print(cov)
## [[ 2.44927753e-02 -4.36543372e-04]
##  [-4.36543372e-04  1.47311554e-05]]

# xx = np.linspace(8,40,50)
# fig,axes=plt.subplots()
# axes.scatter(x,y)
#  
# axes.plot(xx,f(xx,5.19452461,-0.03789824))

Visualización:

Utilice ggplot() del paquete ggplot2, de acuerdo al capítulo 1: 1 Data visualization

# Espacio para el código de visualización de resultados y posibles fallas
library(ggplot2)

ggplot(
  data = Boston,
  mapping = aes(x = rad, y = dis)
) +
  geom_point(colour = "orange") +
  geom_smooth(colour = "green")
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'

8. Regresión Lineal Múltiple:

La Regresión Lineal Múltiple es una técnica estadística utilizada para modelar la relación entre una variable de respuesta (también llamada variable dependiente) y dos o más variables predictoras (variables independientes). A diferencia de la Regresión Lineal Simple, que utiliza una sola variable predictora, la Regresión Lineal Múltiple permite analizar cómo múltiples variables predictoras afectan a la variable de respuesta.

9. Regresión Lineal Múltiple Manual

# Espacio para el código de Regresión Lineal Múltiple Manual
library(MASS)
# Boston[,c ("rad", "tax", "ptratio", "lstat", "medv", "dis")]
modelo3 <- lm(dis ~ ., data = Boston)
summary(modelo3)
## 
## Call:
## lm(formula = dis ~ ., data = Boston)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.5462 -0.6364 -0.0463  0.5347  4.3103 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 10.6670771  1.0442339  10.215  < 2e-16 ***
## crim        -0.0246488  0.0070367  -3.503 0.000502 ***
## zn           0.0280890  0.0026948  10.424  < 2e-16 ***
## indus       -0.0571758  0.0129331  -4.421 1.21e-05 ***
## chas         0.1209801  0.1864785   0.649 0.516795    
## nox         -6.0641064  0.7909332  -7.667 9.48e-14 ***
## rm           0.0066286  0.0968849   0.068 0.945481    
## age         -0.0173148  0.0027228  -6.359 4.64e-10 ***
## rad          0.0160172  0.0145126   1.104 0.270271    
## tax         -0.0005065  0.0008148  -0.622 0.534469    
## ptratio     -0.0093794  0.0295223  -0.318 0.750843    
## black        0.0003656  0.0005827   0.627 0.530708    
## lstat       -0.0268033  0.0119385  -2.245 0.025203 *  
## medv        -0.0678417  0.0091703  -7.398 6.01e-13 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.017 on 492 degrees of freedom
## Multiple R-squared:  0.7725, Adjusted R-squared:  0.7665 
## F-statistic: 128.5 on 13 and 492 DF,  p-value: < 2.2e-16
modelo4 <- lm(dis ~ .,data = Boston[,c ("rad", "tax", "ptratio", "lstat", "medv", "dis")])
summary(modelo4)
## 
## Call:
## lm(formula = dis ~ ., data = Boston[, c("rad", "tax", "ptratio", 
##     "lstat", "medv", "dis")])
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.4114 -1.1107 -0.1508  0.7119  6.4946 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  9.964804   1.036555   9.613  < 2e-16 ***
## rad          0.006332   0.020997   0.302    0.763    
## tax         -0.005262   0.001114  -4.724 3.01e-06 ***
## ptratio     -0.024946   0.042249  -0.590    0.555    
## lstat       -0.151704   0.016343  -9.283  < 2e-16 ***
## medv        -0.075541   0.013015  -5.804 1.15e-08 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.651 on 500 degrees of freedom
## Multiple R-squared:  0.3913, Adjusted R-squared:  0.3852 
## F-statistic: 64.29 on 5 and 500 DF,  p-value: < 2.2e-16

Selección Automática de Variables con stepAIC()

# Espacio para el código de Selección Automática de Variables con stepAIC()
library(MASS)
mejor_modelo <- stepAIC(modelo4)
## Start:  AIC=513.37
## dis ~ rad + tax + ptratio + lstat + medv
## 
##           Df Sum of Sq    RSS    AIC
## - rad      1     0.248 1363.2 511.47
## - ptratio  1     0.950 1363.9 511.73
## <none>                 1362.9 513.37
## - tax      1    60.834 1423.8 533.47
## - medv     1    91.824 1454.8 544.37
## - lstat    1   234.882 1597.8 591.83
## 
## Step:  AIC=511.47
## dis ~ tax + ptratio + lstat + medv
## 
##           Df Sum of Sq    RSS    AIC
## - ptratio  1     0.802 1364.0 509.76
## <none>                 1363.2 511.47
## - medv     1    93.841 1457.0 543.15
## - tax      1   222.176 1585.4 585.87
## - lstat    1   235.834 1599.0 590.21
## 
## Step:  AIC=509.76
## dis ~ tax + lstat + medv
## 
##         Df Sum of Sq    RSS    AIC
## <none>               1364.0 509.76
## - medv   1    100.33 1464.3 543.68
## - lstat  1    235.65 1599.6 588.40
## - tax    1    255.23 1619.2 594.56
summary(mejor_modelo)
## 
## Call:
## lm(formula = dis ~ tax + lstat + medv, data = Boston[, c("rad", 
##     "tax", "ptratio", "lstat", "medv", "dis")])
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.4605 -1.1355 -0.1807  0.7053  6.5336 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  9.3917578  0.4693187  20.011  < 2e-16 ***
## tax         -0.0050628  0.0005224  -9.692  < 2e-16 ***
## lstat       -0.1502321  0.0161318  -9.313  < 2e-16 ***
## medv        -0.0722935  0.0118967  -6.077 2.43e-09 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.648 on 502 degrees of freedom
## Multiple R-squared:  0.3909, Adjusted R-squared:  0.3872 
## F-statistic: 107.4 on 3 and 502 DF,  p-value: < 2.2e-16

10. Conclusiones

Conclusión

En este análisis del dataset Boston, se realizaron diversos procedimientos estadísticos para comprender mejor las relaciones entre las variables y ajustar modelos de regresión tanto lineales como no lineales. A continuación se presentan las principales conclusiones obtenidas:

Normalidad

  1. Test de Kolmogorov-Smirnov: Se utilizó este test para evaluar la normalidad de las variables. Los resultados indicaron que ninguna de las variables clave (rad, tax, ptratio, lstat, medv, dis) sigue una distribución normal. Este hallazgo justifica el uso de métodos no paramétricos en el análisis de correlación.

Análisis de Correlación

  1. Correlación de Spearman: Dada la falta de normalidad de las variables, se utilizó el método de correlación de Spearman para evaluar las relaciones entre ellas. Este método es más adecuado para datos que no siguen una distribución normal y proporciona una medida robusta de la asociación entre variables.

Regresiones Lineales

  1. Regresiones Lineales Simples: Se ajustaron modelos de regresión lineal simple para examinar la relación entre dis y rad, y se realizaron pruebas de autocorrelación en los residuos utilizando el test de Durbin-Watson. Los resultados indicaron que había autocorrelación en los residuos, sugiriendo que los modelos lineales simples no capturaban completamente la relación entre las variables.

Regresiones No Lineales

  1. Regresión No Lineal: Debido a la presencia de autocorrelación en los residuos de los modelos lineales, se exploraron modelos de regresión no lineal. Se utilizó la función nls() en R y curve_fit() en Python para ajustar un modelo exponencial a los datos, lo que proporcionó un mejor ajuste para la relación entre dis y rad.

Regresión Lineal Múltiple

  1. Regresión Lineal Múltiple: Se realizaron análisis de regresión lineal múltiple para evaluar el impacto combinado de varias variables predictoras sobre dis. Se utilizaron tanto métodos manuales como automáticos (con stepAIC()) para seleccionar el mejor modelo. El modelo resultante ayudó a identificar las variables más importantes y relevantes para predecir dis.

General

  1. Visualización y Interpretación: Se utilizaron diversas técnicas de visualización para ilustrar las relaciones entre las variables y los ajustes de los modelos. Estas visualizaciones facilitaron la comprensión de los patrones subyacentes en los datos y la validación de los modelos ajustados.

En resumen, el análisis reveló que las relaciones entre las variables del dataset Boston son complejas y no pueden ser capturadas completamente por modelos lineales simples. Los modelos no lineales y la regresión lineal múltiple proporcionaron una mejor comprensión y predicción de las variables de interés, destacando la importancia de considerar múltiples enfoques y técnicas en el análisis de datos.