En este documento encontrarás cinco ejercicios prácticos. Lee
detenidamente cada consigna, escribe el código R necesario dentro de los
bloques (chunk) correspondientes y añade una breve
interpretación de los resultados donde se solicite.
Asegúrate de cargar las librerías necesarias al inicio de tu sesión
(por ejemplo: ggplot2, caret,
rpart, factoextra).
#| label: setup
library(ggplot2)
library(caret)
## Cargando paquete requerido: lattice
library(rpart)
library(rpart.plot)
library(factoextra)
## Welcome to factoextra!
## Want to learn more? See two factoextra-related books at https://www.datanovia.com/library/principal-component-methods
La exploración visual es el primer paso crítico antes de aplicar
cualquier modelo predictivo. Utilizaremos el conjunto de datos
mpg (disponible al cargar ggplot2).
Consigna: Crea un gráfico de dispersión utilizando
ggplot2 que muestre la relación entre el tamaño del motor
(displ, en el eje X) y el rendimiento en autopista
(hwy, en el eje Y). Añade una línea de tendencia suavizada
(método “lm” o “loess”) y colorea los puntos según la clase del vehículo
(class).
ggplot(
data = mpg,
mapping = aes(x = displ, y = hwy)
) +
geom_point(aes(color = class, shape = class)) +
geom_smooth(method = "lm") +
labs(
title = "Tamaño del motor y rendimiento en autopista",
subtitle = "Según la clase del vehículo",
x = "Tamaño del motor",
y = "Rendimiento en autopista",
color = "Clase",
shape = "Clase"
) +
scale_color_brewer(palette = "Dark2")
## `geom_smooth()` using formula = 'y ~ x'
## Warning: The shape palette can deal with a maximum of 6 discrete values because more
## than 6 becomes difficult to discriminate
## ℹ you have requested 7 values. Consider specifying shapes manually if you need
## that many of them.
## Warning: Removed 62 rows containing missing values or values outside the scale range
## (`geom_point()`).
Interpretación:
Se observa una relación negativa entre el tamaño del motor y el rendimiento en autopista. A medida que aumenta el tamaño del motor, disminuye la cantidad de millas por galón. Además, diferentes clases de vehículos presentan distintos patrones de consumo.
Consigna: Utilizando el mismo conjunto de datos
mpg, crea un diagrama de caja (boxplot) que
compare la distribución del rendimiento en ciudad (cty)
para cada tipo de tracción (drv: f = delantera, r =
trasera, 4 = cuatro ruedas). Añade un título adecuado y renombra los
ejes.
ggplot(mpg, aes(x = drv, y = cty, fill = drv)) +
geom_boxplot() +
labs(
title = "Rendimiento en ciudad según el tipo de tracción",
x = "Tipo de tracción",
y = "Rendimiento en ciudad (mpg)"
) +
theme_minimal()
#El diagrama de caja compara la distribución del rendimiento en ciudad
(cty) según el tipo de tracción (drv): tracción en las cuatro ruedas
(4), delantera (f) y trasera (r).
Tracción delantera (f): presenta la mayor mediana de rendimiento, cercana a 19 mpg, lo que indica que, en general, los vehículos con tracción delantera son los más eficientes en consumo de combustible en ciudad. Además, se observan varios valores atípicos superiores (entre aproximadamente 26 y 35 mpg), lo que evidencia la existencia de algunos vehículos con un rendimiento excepcionalmente alto. Tracción en las cuatro ruedas (4): tiene una mediana cercana a 14 mpg, inferior a la de la tracción delantera. La variabilidad es moderada y aparece un valor atípico alrededor de 21 mpg, correspondiente a un vehículo con un rendimiento superior al habitual dentro de este grupo. **Tracción trasera (r): presenta una mediana cercana a 15 mpg, ligeramente superior a la de los vehículos con tracción en las cuatro ruedas, pero considerablemente menor que la de los vehículos con tracción delantera. Su dispersión es moderada y no se observan valores atípicos importantes.
Utilizaremos el conjunto de datos swiss, el cual
contiene indicadores socioeconómicos estandarizados de provincias suizas
(alrededor de 1888).
Consigna: 1. Ajusta un modelo de regresión lineal
múltiple para predecir la fertilidad (Fertility) en función
del porcentaje de hombres con educación agrícola
(Agriculture), el nivel educativo (Education)
y el porcentaje de católicos (Catholic). 2. Muestra el
resumen del modelo (summary).
data(swiss)
modelo <- lm(Fertility ~ Agriculture + Education + Catholic,
data = swiss)
summary(modelo)
##
## Call:
## lm(formula = Fertility ~ Agriculture + Education + Catholic,
## data = swiss)
##
## Residuals:
## Min 1Q Median 3Q Max
## -15.178 -6.548 1.379 5.822 14.840
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 86.22502 4.73472 18.211 < 2e-16 ***
## Agriculture -0.20304 0.07115 -2.854 0.00662 **
## Education -1.07215 0.15580 -6.881 1.91e-08 ***
## Catholic 0.14520 0.03015 4.817 1.84e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 7.728 on 43 degrees of freedom
## Multiple R-squared: 0.6423, Adjusted R-squared: 0.6173
## F-statistic: 25.73 on 3 and 43 DF, p-value: 1.089e-09
Interpretación:
El resumen del modelo permite identificar cuáles variables son estadísticamente significativas mediante sus valores p.
Generalmente:
summary(modelo) y representa el porcentaje de
variabilidad de la fertilidad explicado por el modelo.Según los resultados del modelo, las tres variables explicativas (Agriculture, Education y Catholic) son estadísticamente significativas, ya que presentan valores p menores a 0,01. El R² ajustado del modelo es 0.6173, lo que significa que aproximadamente el 61,73 % de la variabilidad de la fertilidad es explicada por las variables incluidas en el modelo. **Para evaluar que variable tiene más impacto en la Fertilidad se debería calcular los coeficientes beta, ya que las variables estan en unidades de medición disitintos.
Utilizaremos el clásico conjunto de datos iris.
Consigna: 1. Divide el conjunto de datos en
entrenamiento (70%) y prueba (30%). (Puedes usar
createDataPartition de caret o hacer un
muestreo base). 2. Entrena un modelo de árbol de decisión
(rpart) utilizando los datos de entrenamiento para predecir
la especie (Species) a partir de las demás variables. 3.
Dibuja el árbol resultante utilizando rpart.plot.
set.seed(123)
datos <- iris
indice <- createDataPartition(datos$Species,
p = 0.70,
list = FALSE)
train <- datos[indice, ]
test <- datos[-indice, ]
modelo_arbol <- rpart(
Species ~ .,
data = train,
method = "class"
)
rpart.plot(modelo_arbol)
**El árbol muestra que la longitud y el ancho del pétalo son las
variables más importantes para discriminar las especies de iris,
logrando una clasificación prácticamente perfecta de setosa y una
separación muy precisa entre versicolor y virginica. Esto evidencia que
el modelo de árbol de decisión posee una alta capacidad predictiva para
este conjunto de datos.
Utilizaremos el conjunto de datos USArrests, que
contiene estadísticas de arrestos por cada 100,000 residentes por
asalto, asesinato y violación en cada uno de los 50 estados de EE.
UU.
Consigna: 1. Escala los datos utilizando la función
scale(), ya que las variables tienen unidades de medida muy
diferentes. 2. Aplica el algoritmo K-means para agrupar los estados en 4
clústeres (centers = 4). Fija una semilla
(set.seed) para la reproducibilidad. 3. Visualiza los
clústeres resultantes utilizando la función fviz_cluster
del paquete factoextra.
data(USArrests)
USArrests.scaled <- scale(USArrests)
set.seed(123)
kmeans.modelo <- kmeans(
USArrests.scaled,
centers = 4,
nstart = 25
)
fviz_cluster(
kmeans.modelo,
data = USArrests.scaled
)
Interpretación:
El gráfico muestra cuatro grupos de estados con características similares respecto a las tasas de criminalidad.
Por ejemplo, California y Nevada pueden pertenecer al mismo clúster debido a que presentan niveles relativamente altos en varias variables de arrestos. Los estados agrupados dentro del mismo clúster comparten patrones semejantes en los indicadores analizados.
`