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 mtcars del paquete datasets:

Los datos se extrajeron de la revista Motor Trend US de 1974, y comprenden el consumo de combustible y 10 aspectos del diseño y el rendimiento de 32 automóviles (modelos de 1973-74).

  1. mpg: Millas/gal (EE.UU.). Variable dependiente)
  2. cyl: Número de cilindros
  3. disp: Desplazamiento (cu.in.)
  4. hp: potencia bruta
  5. drat: relacion del eje trasero
  6. wt: peso (1000 libras)
  7. carb: numero de carburadores

Mostrar el dataset de mtcars y su estructura str()

str (utils): La función str() en R es una herramienta utilizada para inspeccionar la estructura interna de objetos en R. Su nombre proviene de “structure” (estructura en inglés). Al aplicar str() a un objeto en R, se obtiene una descripción concisa de la estructura del objeto y sus componentes.

library(datasets)
str(mtcars)
## 'data.frame':    32 obs. of  11 variables:
##  $ mpg : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
##  $ cyl : num  6 6 4 6 8 6 8 4 4 6 ...
##  $ disp: num  160 160 108 258 360 ...
##  $ hp  : num  110 110 93 110 175 105 245 62 95 123 ...
##  $ drat: num  3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
##  $ wt  : num  2.62 2.88 2.32 3.21 3.44 ...
##  $ qsec: num  16.5 17 18.6 19.4 17 ...
##  $ vs  : num  0 0 1 1 0 1 0 1 1 1 ...
##  $ am  : num  1 1 1 0 0 0 0 0 0 0 ...
##  $ gear: num  4 4 4 3 3 3 3 4 4 4 ...
##  $ carb: num  4 4 1 1 2 1 4 2 2 4 ...
mtcars[,c("mpg","cyl","disp","hp","drat","wt","carb")]

Secuencia de Análisis:

3. Normalidad:

Usar “Test de Shapiro-Wilk”, cuando la muestra es pequeña (generalmente menos de 50 observaciones). El “Test de Kolmogorov-Smirnov”, es más adecuado para muestras grandes (generalmente más de 50 observaciones).

# Espacio para el código de verificación de normalidad con shapiro.test porque hay 32 obs 

shapiro.test(mtcars$mpg)
## 
##  Shapiro-Wilk normality test
## 
## data:  mtcars$mpg
## W = 0.94756, p-value = 0.1229
shapiro.test(mtcars$cyl)
## 
##  Shapiro-Wilk normality test
## 
## data:  mtcars$cyl
## W = 0.75331, p-value = 6.058e-06
shapiro.test(mtcars$disp)
## 
##  Shapiro-Wilk normality test
## 
## data:  mtcars$disp
## W = 0.92001, p-value = 0.02081
shapiro.test(mtcars$hp)
## 
##  Shapiro-Wilk normality test
## 
## data:  mtcars$hp
## W = 0.93342, p-value = 0.04881
shapiro.test(mtcars$drat)
## 
##  Shapiro-Wilk normality test
## 
## data:  mtcars$drat
## W = 0.94588, p-value = 0.1101
shapiro.test(mtcars$wt)
## 
##  Shapiro-Wilk normality test
## 
## data:  mtcars$wt
## W = 0.94326, p-value = 0.09265
shapiro.test(mtcars$carb)
## 
##  Shapiro-Wilk normality test
## 
## data:  mtcars$carb
## W = 0.8511, p-value = 0.0004382

interpretacion de la normalidad de las variables

las variables mpg, drat, wt y carb podrían considerarse aproximadamente normales, mientras que las variables cyl, disp y hp no siguen una distribución normal según el test de Shapiro-Wilk.

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().

Por ejemplo para ver el histograma de medv en Boston, use: with(Boston, hist(medv)). Por ejemplo, para hacer un test de correlación de spearman entre lstat y medv, use: with(Boston, cor.test(lstat,medv, method = "spearman")).

# 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(mtcars)

chart.Correlation(
  R = mtcars[,c("mpg","cyl","disp","hp","drat","wt","carb")],
  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(carb ~ mpg, data = mtcars)
summary(modelo1)
## 
## Call:
## lm(formula = carb ~ mpg, data = mtcars)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.1064 -0.7970 -0.2004  0.5929  4.4359 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  5.77880    0.85540   6.756 1.72e-07 ***
## mpg         -0.14765    0.04083  -3.616  0.00108 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.37 on 30 degrees of freedom
## Multiple R-squared:  0.3035, Adjusted R-squared:  0.2803 
## F-statistic: 13.07 on 1 and 30 DF,  p-value: 0.001084
plot(mtcars$mpg, mtcars$carb)
abline(modelo1)

visualizacion en ggplot() y method=“lm”

library(ggplot2)
ggplot(
  data = mtcars,
  mapping = aes(x=mpg, y=carb)
) +
  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 = mtcars,
  mapping = aes(x=mpg, y=carb)
) +
  geom_point() +
  geom_smooth()
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'

6. Pruebas de autocorrelación:

estadistico Durbin-Watson - El Estadístico Durbin-Watson es una prueba estadística que se utiliza para detectar la presencia de autocorrelación en los residuos (errores de predicción) de un análisis de regresión. La autocorrelación se refiere a una relación entre los valores separados el uno del otro por un intervalo de tiempo dado.

library(lmtest)
dwtest(modelo1)
## 
##  Durbin-Watson test
## 
## data:  modelo1
## DW = 1.1201, p-value = 0.003287
## alternative hypothesis: true autocorrelation is greater than 0

7. Regresiones no lineales

Regres no Lineal con nls()

# Inspección visual de los datos
plot(mtcars$carb, mtcars$mpg, main = "mpg vs carb", xlab = "carb", ylab = "mpg")

# Ajustar el modelo no lineal con diferentes valores iniciales
modelo2 <- nls(mpg ~ a * exp(b * carb), data = mtcars, start = list(a = 1, b = -0.1))

# Imprimir el resumen del modelo
summary(modelo2)
## 
## Formula: mpg ~ a * exp(b * carb)
## 
## Parameters:
##   Estimate Std. Error t value Pr(>|t|)    
## a 28.16767    2.45975  11.451 1.78e-12 ***
## b -0.12759    0.03324  -3.838 0.000594 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4.953 on 30 degrees of freedom
## 
## Number of iterations to convergence: 7 
## Achieved convergence tolerance: 8.512e-06
# Predecir valores usando el modelo ajustado
carb_estimado <- predict(modelo2)

# Alternativa: modelo polinomial
modelo_alternativo <- nls(mpg ~ a + b * carb + c * I(carb^2), data = mtcars, start = list(a = 1, b = 1, c = 1))

# Imprimir el resumen del modelo alternativo
summary(modelo_alternativo)
## 
## Formula: mpg ~ a + b * carb + c * I(carb^2)
## 
## Parameters:
##   Estimate Std. Error t value Pr(>|t|)    
## a  30.7686     2.8717  10.715 1.35e-11 ***
## b  -5.5589     1.7226  -3.227   0.0031 ** 
## c   0.4749     0.2219   2.140   0.0409 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4.833 on 29 degrees of freedom
## 
## Number of iterations to convergence: 1 
## Achieved convergence tolerance: 4.992e-09
# Predecir valores usando el modelo alternativo
carb_estimado_alt <- predict(modelo_alternativo)
library(ggplot2)
ggplot(
  data = mtcars,
  mapping = aes(x = mpg, y = carb)
) +
  geom_point() +
  geom_smooth() +
  geom_line(aes(x = mpg, y = carb_estimado))
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'

Grabar el archivo mtcars

library(datasets)
write.csv(x = mtcars[, c("mpg","cyl","disp","hp","drat","wt","carb")], file = "mtcars.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: regresion no lineal .ipynb: https://colab.research.google.com/drive/1OwiTECBv5mzI9N8dwXEBhTW9hAjo98fO?usp=sharing.

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'
mtcars = pd.read_csv("/cloud/project/mtcars.csv")
mtcars.info()
## <class 'pandas.core.frame.DataFrame'>
## RangeIndex: 32 entries, 0 to 31
## Data columns (total 8 columns):
##  #   Column      Non-Null Count  Dtype  
## ---  ------      --------------  -----  
##  0   Unnamed: 0  32 non-null     object 
##  1   mpg         32 non-null     float64
##  2   cyl         32 non-null     int64  
##  3   disp        32 non-null     float64
##  4   hp          32 non-null     int64  
##  5   drat        32 non-null     float64
##  6   wt          32 non-null     float64
##  7   carb        32 non-null     int64  
## dtypes: float64(4), int64(3), object(1)
## memory usage: 2.1+ KB
mtcars["mpg"]
## 0     21.0
## 1     21.0
## 2     22.8
## 3     21.4
## 4     18.7
## 5     18.1
## 6     14.3
## 7     24.4
## 8     22.8
## 9     19.2
## 10    17.8
## 11    16.4
## 12    17.3
## 13    15.2
## 14    10.4
## 15    10.4
## 16    14.7
## 17    32.4
## 18    30.4
## 19    33.9
## 20    21.5
## 21    15.5
## 22    15.2
## 23    13.3
## 24    19.2
## 25    27.3
## 26    26.0
## 27    30.4
## 28    15.8
## 29    19.7
## 30    15.0
## 31    21.4
## Name: mpg, dtype: float64
mtcars["carb"]
## 0     4
## 1     4
## 2     1
## 3     1
## 4     2
## 5     1
## 6     4
## 7     2
## 8     2
## 9     4
## 10    4
## 11    3
## 12    3
## 13    3
## 14    4
## 15    4
## 16    4
## 17    1
## 18    2
## 19    1
## 20    1
## 21    2
## 22    2
## 23    4
## 24    2
## 25    1
## 26    2
## 27    2
## 28    4
## 29    6
## 30    8
## 31    2
## Name: carb, dtype: int64
def f(x, a, b):
    return a*np.exp(b*(x))


x = mtcars["mpg"]
y = mtcars["carb"]

res,cov = curve_fit(f,x,y)

print(res)
## [ 8.3030575  -0.05635779]
print(cov)
## [[ 6.58442108e+00 -4.35268646e-02]
##  [-4.35268646e-02  3.09606913e-04]]

xx = np.linspace(8,40,50)
fig,axes=plt.subplots()
axes.scatter(x,y)

axes.plot(xx,f(xx,8.3030575,-0.05635779))

Visualización:

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

library(ggplot2)

ggplot(
  data = mtcars,
  mapping = aes(x = mpg, y = carb)
) +
  geom_point(colour = "pink")

  geom_smooth(colour = "black" )
## geom_smooth: na.rm = FALSE, orientation = NA, se = TRUE
## stat_smooth: na.rm = FALSE, orientation = NA, se = TRUE
## position_identity

Visualización:

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

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(datasets)
# mtcars[, c("mpg","cyl","disp","hp","drat","wt","carb")]
modelo3 <- lm(carb ~ ., data = mtcars)
summary(modelo3)
## 
## Call:
## lm(formula = carb ~ ., data = mtcars)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.2349 -0.3722  0.1054  0.2529  1.0242 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -2.468075   4.942922  -0.499  0.62275    
## mpg         -0.013788   0.057301  -0.241  0.81218    
## cyl          0.285369   0.267713   1.066  0.29855    
## disp        -0.014310   0.003589  -3.987  0.00067 ***
## hp           0.013498   0.005060   2.667  0.01441 *  
## drat         0.416966   0.422699   0.986  0.33515    
## wt           1.533209   0.426193   3.597  0.00169 ** 
## qsec        -0.224938   0.191678  -1.174  0.25373    
## vs          -0.230362   0.551387  -0.418  0.68034    
## am          -0.118783   0.559190  -0.212  0.83383    
## gear         0.771539   0.356707   2.163  0.04223 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.6969 on 21 degrees of freedom
## Multiple R-squared:  0.8739, Adjusted R-squared:  0.8139 
## F-statistic: 14.55 on 10 and 21 DF,  p-value: 2.596e-07
modelo4 <- lm(mpg ~ .,data = mtcars[c("mpg","cyl","disp","hp","drat","wt","carb")])
summary(modelo4)
## 
## Call:
## lm(formula = mpg ~ ., data = mtcars[c("mpg", "cyl", "disp", "hp", 
##     "drat", "wt", "carb")])
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.8398 -1.5374 -0.4027  1.1366  5.6332 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 34.644580   8.875237   3.904 0.000635 ***
## cyl         -1.028354   0.772134  -1.332 0.194931    
## disp         0.009206   0.015813   0.582 0.565638    
## hp          -0.019331   0.020285  -0.953 0.349726    
## drat         1.145915   1.547607   0.740 0.465929    
## wt          -3.434305   1.325496  -2.591 0.015747 *  
## carb        -0.196203   0.633312  -0.310 0.759278    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.583 on 25 degrees of freedom
## Multiple R-squared:  0.8519, Adjusted R-squared:  0.8163 
## F-statistic: 23.96 on 6 and 25 DF,  p-value: 3.127e-09

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

# Espacio para el código de Selección Automática de Variables con stepAIC()
library(MASS)
## 
## Attaching package: 'MASS'
## The following object is masked from 'package:dplyr':
## 
##     select
library(datasets)
mejor_modelo <- stepAIC(modelo4)
## Start:  AIC=66.83
## mpg ~ cyl + disp + hp + drat + wt + carb
## 
##        Df Sum of Sq    RSS    AIC
## - carb  1     0.640 167.43 64.954
## - disp  1     2.261 169.05 65.262
## - drat  1     3.658 170.44 65.525
## - hp    1     6.059 172.84 65.973
## <none>              166.79 66.831
## - cyl   1    11.834 178.62 67.025
## - wt    1    44.786 211.57 72.442
## 
## Step:  AIC=64.95
## mpg ~ cyl + disp + hp + drat + wt
## 
##        Df Sum of Sq    RSS    AIC
## - drat  1     3.018 170.44 63.526
## - disp  1     6.949 174.38 64.255
## <none>              167.43 64.954
## - cyl   1    15.411 182.84 65.772
## - hp    1    21.066 188.49 66.746
## - wt    1    77.476 244.90 75.124
## 
## Step:  AIC=63.53
## mpg ~ cyl + disp + hp + wt
## 
##        Df Sum of Sq    RSS    AIC
## - disp  1     6.176 176.62 62.665
## <none>              170.44 63.526
## - hp    1    18.048 188.49 64.746
## - cyl   1    24.546 194.99 65.831
## - wt    1    90.925 261.37 75.206
## 
## Step:  AIC=62.66
## mpg ~ cyl + hp + wt
## 
##        Df Sum of Sq    RSS    AIC
## <none>              176.62 62.665
## - hp    1    14.551 191.17 63.198
## - cyl   1    18.427 195.05 63.840
## - wt    1   115.354 291.98 76.750
summary(mejor_modelo)
## 
## Call:
## lm(formula = mpg ~ cyl + hp + wt, data = mtcars[c("mpg", "cyl", 
##     "disp", "hp", "drat", "wt", "carb")])
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.9290 -1.5598 -0.5311  1.1850  5.8986 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 38.75179    1.78686  21.687  < 2e-16 ***
## cyl         -0.94162    0.55092  -1.709 0.098480 .  
## hp          -0.01804    0.01188  -1.519 0.140015    
## wt          -3.16697    0.74058  -4.276 0.000199 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.512 on 28 degrees of freedom
## Multiple R-squared:  0.8431, Adjusted R-squared:  0.8263 
## F-statistic: 50.17 on 3 and 28 DF,  p-value: 2.184e-11

10. Conclusiones

A continuación, se presentan las conclusiones obtenidas tras realizar un análisis y modelización de los datos del dataset mtcars, el cual incluye diversas pruebas de normalidad, análisis de correlación, regresiones lineales y no lineales, así como una regresión lineal múltiple con selección automática de variables.

  1. Importar Paquetes y Cargar Dataset Se importaron los paquetes necesarios para realizar el análisis y se cargó el dataset mtcars, verificando que los datos estuvieran correctamente estructurados y listos para su análisis.

  2. Pruebas de Normalidad Se realizaron pruebas de normalidad utilizando el test de Shapiro-Wilk para cada variable del dataset:

Variables que siguen una distribución aproximadamente normal: mpg, drat, wt, carb Variables que no siguen una distribución normal: cyl, disp, hp Esto indica que para algunas variables se podrían aplicar métodos paramétricos, mientras que para otras, sería más adecuado utilizar métodos no paramétricos.

  1. Análisis de Correlación El análisis de correlación se realizó utilizando el test de Spearman, debido a la falta de normalidad en algunas variables. La matriz de correlación mostró las siguientes observaciones:

Variables con fuerte correlación positiva: wt y disp Variables con fuerte correlación negativa: mpg y wt Esto sugiere que el peso del vehículo (wt) está fuertemente correlacionado tanto con el desplazamiento (disp) como con el consumo de combustible (mpg).

  1. Regresiones Lineales Simples y Autocorrelación Se ajustó un modelo de regresión lineal simple para predecir el número de carburadores (carb) en función de mpg. El modelo mostró una relación negativa entre mpg y carb. Sin embargo, la prueba de autocorrelación de Durbin-Watson indicó que los residuos del modelo no mostraban autocorrelación significativa.

  2. Regresiones No Lineales Se exploraron modelos de regresión no lineal utilizando la función nls() en R y curve_fit() en Python:

Modelo Exponencial: Ajuste moderado de los datos, con coeficientes estimados que indicaron una disminución exponencial en carb conforme aumenta mpg. Modelo Polinomial: Se ajustó un modelo polinomial de segundo grado, que también mostró un buen ajuste a los datos. Ambos enfoques de modelización no lineal proporcionaron una mejor comprensión de las relaciones no lineales entre las variables.

  1. Regresión Lineal Múltiple Se ajustó un modelo de regresión lineal múltiple para predecir carb utilizando todas las demás variables del dataset:

Modelo Inicial: Incluyó todas las variables predictoras. Selección Automática de Variables: Utilizando stepAIC(), se seleccionaron las variables más significativas para el modelo final. El mejor modelo ajustado mostró que variables como wt, hp, y disp son significativas para predecir mpg, mientras que carb está influenciado por otras variables como mpg, hp, y drat.

Entregables:

  1. Documento RMarkdown con el código completo y los resultados obtenidos.
  2. Gráficos generados durante el análisis para visualizar la normalidad, correlaciones, regresiones y posibles fallas en la visualización.
  3. Utilice la IA para interpretar los resultados de las pruebas y verifique la veracidad de la interpretación.
  4. Link de la página web alojada en RPubs.
  5. Video sustentando el desarrollo del documento RMarkdown con la participación de todos los integrantes del grupo.

Notas Importantes:

  • Justificar las decisiones tomadas en cada paso del análisis.
  • Explorar y discutir cualquier hallazgo interesante o inesperado que surja durante el análisis.
  • Presentar conclusiones claras y respaldadas por los resultados obtenidos en el análisis del dataset.

¡Éxitos en el análisis y la modelización de datos!. ```