caso vehículos

¿Que tipo de vehículo puede ser más adecuado para los siguientes tipos de clientes? Considere su experiencia y la información disponible en el conjunto de datos de vehículos a continuación (BD mpg)

Familia con niños en edad escolar que viven fuera de la ciudad

Ingeniero constructor con varias obras en municipios del departamento

Estudiante universitario

Pensionado

Dendrograma

Es un tipo de representación gráfica o diagrama de datos en forma de árbol que organiza los datos en subcategoras que se van dividiendo en otros hasta llegar al nivel de detalle deseado (asemejándose a las ramas de un árbol que se van dividiendo en otras sucesivamente). Este tipo de representación permite apreciar claramente las relaciones de agrupación entre los datos e incluso entre grupos de ellos aunque no las relaciones de similaridad o cercana entre categorías. Observando las sucesivas subdivisiones podemos hacernos una idea sobre los criterios de agrupación de los mismos, la distancia entre los datos según las relaciones establecidas, etc. También podramos referirnos al dendrograma como la ilustración de las agrupaciones derivadas de la aplicación de un algorítmo de clustering jerárquico.

Librerias: ggplot /ggdendro/ reshape2/ protoclust

library (ggplot2)
#head(mpg)

Vamos a trabajar con un año específico y en este, solo seleccionando los casos completos del conjunto de datos: con registros incompletos, el algoritmo de cluster puede lanzar errores o excepciones.

# subconjunto de datos del dataset(mpg) completo(año 2008, categoria vehiculo suv)

vehic2008<- subset(mpg, mpg$year==2008 & mpg$class=='suv')

# Seleccionamos datos completos (filas con información completa al cruzar con columnas). Lo que decimos con los [] es llamar las filas, solamente las que estén completas, columnas, todas.

vehic2008<- vehic2008[complete.cases(vehic2008),]

# revisamos 3 primeras columnas

head(vehic2008,3)
## # A tibble: 3 x 11
##   manufacturer model      displ  year   cyl trans  drv     cty   hwy fl    class
##   <chr>        <chr>      <dbl> <int> <int> <chr>  <chr> <int> <int> <chr> <chr>
## 1 chevrolet    c1500 sub~   5.3  2008     8 auto(~ r        14    20 r     suv  
## 2 chevrolet    c1500 sub~   5.3  2008     8 auto(~ r        11    15 e     suv  
## 3 chevrolet    c1500 sub~   5.3  2008     8 auto(~ r        14    20 r     suv

Cálculo de distancias

Nuestro conjunto de datos tiene columnas numéricas en varios órdenes de magnitud. Estas diferencias pueden impactar el cálculo de la distancia, porque los órdenes de magnitud menores no tendran tanto impacto como los mayores. Para esto es conveniente normalizar los valores. La función scale() normaliza por defecto cada columna relativa a su desviacion estandar. Esta función también tiene otras formas de normalizar.

# Duplicamos el dataset

vehic2008N<- vehic2008

# Normalizamos las columnas numéricas

vehic2008N<- scale(vehic2008[,c(3,5,8,9)])

# Le ponemos nombres a las filas (hay por ahora, números)

rownames(vehic2008N)<- vehic2008$model



# Calculamos las distancias

vehic2008D<- dist(vehic2008N)

library(reshape2)
## Warning: package 'reshape2' was built under R version 4.0.5
# convierto el formato de wide a long c
# vehic2008D no es un dataframe (es una matriz de distancias). Lo convertimos a num con data.matrix. El melt lo convierte en data frame y lo transforma en 2 columnas.

vehic2008Dlong<- melt(data.matrix(vehic2008D))

grafic<- ggplot(vehic2008Dlong, aes(Var1,Var2,fill=value))
grafic<- grafic + geom_tile()

# se cambia el valor de las baldosas con paletas de colorbrewer continuas con scale fill. No es util para este caso paletas divergentes como spectral

# La paleta viridis viene c= continua, d= discreta, b= black, blanco y negro

grafic<- grafic + scale_fill_viridis_c()
grafic<- grafic + theme(axis.text.x = element_text(angle=90))
grafic

# clusters en dendograma

vehic2008clust<- hclust(vehic2008D)
library (ggdendro)
## Warning: package 'ggdendro' was built under R version 4.0.5
grafico <-ggdendrogram (vehic2008clust, size=2)
grafico