Software y Programación

Análisis K-means de ocupación de aparcamientos en parques nacionales de Estados Unidos

El objetivo de este estudio es determinar la correlación que existe en los niveles de ocupación de los estacionamientos de parques en Estados Unidos respecto a los meses, días y horas de un periodo analizado a partir del desarrollo de un algoritmo K-means. Para ello, utilizaré el lenguaje de programación R y un conjunto de datos de 35.717 registros con datos obtenidos de octubre a diciembre de 2016.

K-Means es un método de agrupación o clustering. El término «k-means» fue utilizado por primera vez por James MacQueen en 1967, aunque la idea se remonta a Hugo Steinhaus en 1957.

El algoritmo estándar fue propuesto por primera vez por Stuart Lloyd en 1957 como técnica para la modulación por impulsos codificados, aunque no se publicó fuera de los Laboratorios Bell hasta 1982.

Analisis de K-means
Análisis de agrupamientos obtenidos a partir de las K-medias de un conjunto de datos basados en una distribución gaussiana. ChireCC BY-SA 3.0, via Wikimedia Commons

Análisis K-means: Caso de Estudio

El objetivo general de esta investigación es determinar la correlación que existe en los niveles de ocupación de los estacionamientos de parques en Estados Unidos, respecto a los meses, días y horas del periodo analizado a través del desarrollo de un algoritmo k-means s.

Los objetivos específicos son los siguientes:

  • Establecer un análisis exploratorio de los datos mediante cálculos de medias, medianas y otras medidas de tendencia central.
  • Desarrollar e implementar el algoritmo K-means.
  • Determinar la correlación que existe en los niveles de ocupación con respecto a los meses, días y horas del periodo analizado.

Metodología de Análisis K-means

El clustering es una técnica que permite encontrar y clasificar K grupos de datos (clusters). Así, los elementos que comparten características similares estarán juntos en el mismo grupo, separados de otros grupos con los que no comparten características.

Para averiguar si los datos son similares o diferentes, el algoritmo K-means utiliza la distancia entre los datos. Las observaciones que son similares tendrán una distancia menor entre ellas. En general, se utiliza la distancia euclídea como medida, aunque también se pueden utilizar otras funciones.

Los algoritmos de clustering se consideran algoritmos de aprendizaje no supervisado. Este tipo de algoritmos de aprendizaje no supervisado busca patrones en los datos sin tener una predicción específica como objetivo (no hay variable dependiente). En lugar de tener una salida, los datos sólo tienen una entrada que serían las múltiples variables que describen los datos.

El algoritmo K-means necesita como entrada el número de grupos en los que vamos a segmentar la población. A partir de este número k de grupos, el algoritmo coloca primero k puntos aleatorios (centroides). A continuación, asigna a cualquiera de estos puntos todas las muestras con las distancias más pequeñas. A continuación, el punto se desplaza a la media de las muestras más cercanas.

Esto generará una nueva asignación de muestras, ya que algunas muestras están ahora más cerca de otro centroide. Este proceso se repite iterativamente y los grupos se ajustan hasta que la asignación ya no cambia al mover los puntos. Este resultado final representa el ajuste que maximiza la distancia entre los distintos grupos y minimiza la distancia intragrupo.

Este tipo de algoritmo de aprendizaje no supervisado es útil para explorar, describir y resumir datos de una forma diferente. La agrupación de datos puede ayudarnos a confirmar (o rechazar) algún tipo de clasificación previa. También puede ayudarnos a descubrir patrones y relaciones que desconocíamos.

El conjunto de datos que se va a analizar consta de las siguientes características:

  • 35.717 tuplas o filas. Cuatro columnas con los siguientes datos:
    • SystemCode: Indica el código asociado al aparcamiento.
    • Capacity: Indica el número total de plazas disponibles en el aparcamiento.
    • Occupancy: Indica el número de plazas de aparcamiento que están ocupadas en el momento de emitir el informe.
    • LastUpdated: Indica la fecha exacta en la que se registraron los datos de la tupla.

Para gestionar los datos de forma más eficiente al aplicar el algoritmo k-means, el campo LastUpdated se dividió en cuatro campos:

  • Year: Año del registro de datos de la tupla.
  • Month: Mes del registro de datos de la tupla.
  • Day: Day of the tuple data record.
  • Time: Hora del registro de datos de la tupla. # Análisis exploratorio.

Importemos las bibliotecas cluster y fpc, y creemos el conjunto de datos.

In [48]:

library(cluster)
library(fpc)

set.seed(500)
dataset <- read.csv("../input/dataset/parking-clean-data.csv")

Para cada una de las cinco columnas a analizar se obtiene el valor mínimo, el primer cuartil, la mediana, la media, el tercer cuartil y el valor máximo, y a continuación se generan diagramas de caja con esta información.

Podemos observar que los aparcamientos analizados tienen una capacidad que varía entre 220 plazas y 4675 plazas, con una media de 1398 plazas. Su ocupación varía entre 0 plazas y 4327 plazas, con una media de 642,2 plazas.

En cuanto al periodo analizado, oscila entre el mes 10 y el mes 12 de 2016, con una media de 10,88. En cuanto a los días analizados, se realiza un recorrido completo desde el día 1 al 31, con una media de 15,16. Las horas analizadas van desde las 7:30 hasta las 16:34, con una media de 12:05.

Se observa que los campos Capacidad y Ocupación tienen valores atípicos que pueden afectar la efectividad del proceso de clustering, sin embargo no serán ajustados aún debido a su alta importancia en este proceso de análisis. Tras el proceso de clustering, se eliminarán los valores atípicos en los clusters creados con el fin de generar conclusiones más precisas.

In [49]:

# Pasar a columnas numéricas
dataset$Capacity <- as.numeric(dataset$Capacity)
dataset$Occupancy <- as.numeric(dataset$Occupancy)
dataset$Month <- as.numeric(dataset$Month)
dataset$Day <- as.numeric(dataset$Day)
dataset$Time <- as.numeric(dataset$Time)

In [50]:

# Ignorar valores NA
dataset <- na.omit(dataset,na.action=TRUE)

# Crear un nuevo dataset con las columnas que se utilizarán
mydata <- dataset[,c(2,3,5:7)]
# Obtener un resumen del dataset
summary(mydata)
boxplot(mydata)
    Capacity      Occupancy          Month            Day             Time     
 Min.   : 220   Min.   :   0.0   Min.   :10.00   Min.   : 1.00   Min.   : 730  
 1st Qu.: 500   1st Qu.: 210.0   1st Qu.:10.00   1st Qu.: 8.00   1st Qu.:1000  
 Median : 849   Median : 446.0   Median :11.00   Median :15.00   Median :1204  
 Mean   :1398   Mean   : 642.2   Mean   :10.88   Mean   :15.16   Mean   :1205  
 3rd Qu.:2009   3rd Qu.: 798.0   3rd Qu.:11.00   3rd Qu.:22.00   3rd Qu.:1429  
 Max.   :4675   Max.   :4327.0   Max.   :12.00   Max.   :31.00   Max.   :1634  

In [51]:

# Gráfico de capacidad
boxplot(mydata$Capacity,
main = "Capacity",
xlab = "Cars",
ylab = "Stalls",
col = "orange",
border = "brown",
horizontal = FALSE,
notch = TRUE)

In [52]:

# Gráfico de ocupación
boxplot(mydata$Occupancy,
main = "Occupancy",
xlab = "Cars",
ylab = "Stalls",
col = "orange",
border = "brown",
horizontal = FALSE,
notch = TRUE)

In [53]:

# Gráfico de mes
boxplot(mydata$Month,
main = "Month",
xlab = "Time",
ylab = "Months",
col = "orange",
border = "brown",
horizontal = FALSE,
notch = TRUE)
Warning message in bxp(list(stats = structure(c(10, 10, 11, 11, 12), .Dim = c(5L, :
“some notches went outside hinges ('box'): maybe set notch=FALSE”

In [54]:

# Gráfico de día
boxplot(mydata$Day,
main = "Day",
xlab = "Time",
ylab = "Days of the month",
col = "orange",
border = "brown",
horizontal = FALSE,
notch = TRUE)

In [55]:

# Gráfico de hora
boxplot(mydata$Time,
main = "Hour",
xlab = "Time",
ylab = "Hours of the day",
col = "orange",
border = "brown",
horizontal = FALSE,
notch = TRUE)

Algoritmo K-means

Las variables del conjunto de datos están a diferentes escalas, por lo que es necesario escalar el conjunto de datos para mantener la uniformidad como paso previo a la ejecución del algoritmo K-means.

Para obtener el número ideal de conglomerados (k), la varianza del conjunto de datos se almacena en una matriz y luego se itera 15 veces sobre la matriz. En cada iteración, se registra la suma de cuadrados del factor de fuerza de unión intracluster (withinss). A continuación, se trazan los resultados y se selecciona el valor de k en el que la pendiente de la curva muestra el mayor cambio.

In [56]:

# Las variables del conjunto de datos están a diferentes escalas.
# Para mantener la uniformidad, las columnas se escalan
scaled_data <- scale(mydata[,1:5])

## Calcular la varianza
wss <- (nrow(scaled_data)-1)*sum(apply(scaled_data,2,var))

# Iterar sobre la matriz wws 15 veces.
# Registrar en cada iteración la suma de cuadrados del factor de fuerza de unión intracluster para cada cluster (withinss)
for(i in 2:15)wss[i]<- sum(fit=kmeans(scaled_data,centers=i,15)$withinss)
## Gráfico de cada iteración
plot(1:15,wss,type="b",main="15 clusters",xlab="# of cluster",ylab="sum of squares")

A partir de este gráfico, podemos observar que la pendiente tiene un cambio más significativo cuando el número de clusters es igual a 3, por lo que se tomará este valor como número de clusters a utilizar.

Tras aplicar la función kmeans, se evalúan las propiedades de los clusters generados:

  • Centers: vector que indica la media de cada variable para cada conglomerado.
  • Totss (Suma total de cuadrados). Withinss (Suma total de cuadrados intracluster).
  • Tot.withinss (Suma total de cuadrados intra-cluster).
  • Betweenss (Suma de cuadrados interclúster).
  • Size: Número de puntos de cada conglomerado.

In [57]:

# La pendiente varía sobre todo en la tercera iteración, 
# por lo que se considera que 3 es el número óptimo de conglomerados.
fit <- kmeans(scaled_data, 3)

fit$centers
fit$totss
fit$withinss
fit$tot.withinss
fit$betweenss
fit$size
CapacityOccupancyMonthDayTime
1-0.4041041-0.3906482-0.6792592470.556198370-0.07882166
2-0.3737569-0.33540710.870854168-0.714267704-0.04301146
31.64442711.5418053-0.0058755590.0070016520.26551874

178580

  1. 44049.45510661
  2. 30017.6406344365
  3. 32196.509518354

106263.605259401

72316.3947405994

  1. 16187
  2. 12672
  3. 6858

Las distancias intracluster son 44049,46, 30017,64 y 32196,51, mientras que la distancia intercluster es de 72316,39.

Mediante la función plotcluster se obtiene un gráfico con el resultado del clustering y posteriormente una matriz con las medias de cada cluster en cada dimensión para evaluar cómo de diferentes son los clusters obtenidos.

El primer cluster tiene un tamaño de 16187 puntos (rojo en el gráfico), el segundo es de 12672 puntos (negro en el gráfico) y el tercero es de 6858 puntos (verde en el gráfico).

Del gráfico obtenido se deduce que existen tres grandes grupos diferenciados en los que se pueden clasificar los datos. Los grupos se explican detalladamente a continuación.

In [58]:

# Interpretar patrones
plotcluster(scaled_data,fit$cluster)
points(fit$centers,col=1:5,pch=16)

# Media de cada variable en cada conglomerado
mean_data <- dataset[,c(2,3,5:7)]mean_data <- data.frame(mean_data,fit$cluster)
mean_ds <- aggregate(mean_data[,1:5],by = list(fit$cluster),FUN = mean)
mean_ds
Group.1CapacityOccupancyMonthDayTime
<int><dbl><dbl><dbl><dbl><dbl>
1920.9793385.591610.3703619.7735221184.315
2956.7685421.882511.536149.2391891193.640
33336.86721655.126010.8767915.2197431273.979

Los resultados de la matriz de medias son los siguientes:

  • Grupo 1:
    • Capacidad: 920.9793
    • Ocupación: 385.5916
    • Mes: 10.37036
    • Día 19.773522
    • Hora: 1184.315
  • Grupo 2:
    • Capacidad: 956.7685
    • Ocupación: 421.8825
    • Mes: 11.53614
    • Día: 9.239189
    • Hora: 1193.640
  • Grupo 3:
    • Capacidad: 3336.8672
    • Ocupación: 1655.1260
    • Mes: 10.87679
    • Día: 15.219743
    • Hora: 1273.979

Estos datos pueden sintetizarse del siguiente modo:

  • Grupo 1: está compuesto por aparcamientos de baja y media capacidad, principalmente durante el mes de octubre y parte del mes de noviembre. Consta de 1.6187 entradas (45,32%).
  • Grupo 2: está compuesto por aparcamientos de baja y media capacidad durante los meses de noviembre y diciembre. Consta de 12672 registros (35,47%).
  • Grupo 3: está compuesto por aparcamientos de alta capacidad durante los meses de octubre, noviembre y diciembre. Consta de 6858 registros (19,20%).

In [59]:

# Asignar una variable a cada conglomerado
cluster1 = subset(mean_data, fit.cluster == 1)
cluster2 = subset(mean_data, fit.cluster == 2)
cluster3 = subset(mean_data, fit.cluster == 3)

# resumen de las agrupaciones
summary(cluster1)
    Capacity      Occupancy          Month            Day             Time     
 Min.   : 220   Min.   :   0.0   Min.   :10.00   Min.   : 4.00   Min.   : 730  
 1st Qu.: 485   1st Qu.: 175.0   1st Qu.:10.00   1st Qu.:15.00   1st Qu.: 932  
 Median : 720   Median : 334.0   Median :10.00   Median :21.00   Median :1200  
 Mean   : 921   Mean   : 385.6   Mean   :10.37   Mean   :19.77   Mean   :1184  
 3rd Qu.:1194   3rd Qu.: 560.0   3rd Qu.:11.00   3rd Qu.:26.00   3rd Qu.:1426  
 Max.   :3883   Max.   :1451.0   Max.   :11.00   Max.   :31.00   Max.   :1634  
  fit.cluster
 Min.   :1   
 1st Qu.:1   
 Median :1   
 Mean   :1   
 3rd Qu.:1   
 Max.   :1   

In [60]:

boxplot(cluster1)

In [61]:

summary(cluster2)
    Capacity        Occupancy          Month            Day        
 Min.   : 220.0   Min.   :   0.0   Min.   :11.00   Min.   : 1.000  
 1st Qu.: 485.0   1st Qu.: 187.0   1st Qu.:11.00   1st Qu.: 5.000  
 Median : 720.0   Median : 364.5   Median :12.00   Median : 9.000  
 Mean   : 956.8   Mean   : 421.9   Mean   :11.54   Mean   : 9.239  
 3rd Qu.:1200.0   3rd Qu.: 605.0   3rd Qu.:12.00   3rd Qu.:13.000  
 Max.   :3103.0   Max.   :1618.0   Max.   :12.00   Max.   :19.000  
      Time       fit.cluster
 Min.   : 732   Min.   :2   
 1st Qu.: 956   1st Qu.:2   
 Median :1200   Median :2   
 Mean   :1194   Mean   :2   
 3rd Qu.:1426   3rd Qu.:2   
 Max.   :1634   Max.   :2   

In [62]:

boxplot(cluster2)

Con el fin de facilitar el proceso de análisis, se eliminarán los valores atípicos en la dimensión Capacidad para los clusters 1 y 2. Por lo tanto, sólo se conservarán las tuplas cuya columna Capacidad sea inferior a 2000 posiciones. De este modo, se eliminan 1372 registros del cluster 1 y 1263 registros del cluster 2, lo que supone un total de 2635 registros (7,37% de los datos totales).

A continuación se presentan los resultados del ajuste:

In [63]:

# Determinar el número de valores atípicos en los conglomerados 1 y 2length(cluster1$Capacity[cluster1$Capacity>2000]) # 1372
length(cluster2$Capacity[cluster2$Capacity>2000]) # 1263

# Eliminar los valores atípicos de los grupos 1 y 2
cluster1 = subset(cluster1, Capacity<2000)
cluster2 = subset(cluster2, Capacity<2000)

1372

1263

In [64]:

summary(cluster1)
summary(cluster2)
summary(cluster3)
    Capacity        Occupancy          Month            Day       
 Min.   : 220.0   Min.   :   0.0   Min.   :10.00   Min.   : 4.00  
 1st Qu.: 480.0   1st Qu.: 166.0   1st Qu.:10.00   1st Qu.:15.00  
 Median : 690.0   Median : 310.0   Median :10.00   Median :20.00  
 Mean   : 759.6   Mean   : 363.5   Mean   :10.38   Mean   :19.66  
 3rd Qu.:1010.0   3rd Qu.: 532.0   3rd Qu.:11.00   3rd Qu.:26.00  
 Max.   :1920.0   Max.   :1412.0   Max.   :11.00   Max.   :31.00  
      Time       fit.cluster
 Min.   : 730   Min.   :1   
 1st Qu.: 959   1st Qu.:1   
 Median :1203   Median :1   
 Mean   :1199   Mean   :1   
 3rd Qu.:1429   3rd Qu.:1   
 Max.   :1634   Max.   :1   
    Capacity        Occupancy          Month            Day        
 Min.   : 220.0   Min.   :   0.0   Min.   :11.00   Min.   : 1.000  
 1st Qu.: 485.0   1st Qu.: 175.0   1st Qu.:11.00   1st Qu.: 5.000  
 Median : 690.0   Median : 332.0   Median :12.00   Median : 9.000  
 Mean   : 770.5   Mean   : 392.9   Mean   :11.53   Mean   : 9.335  
 3rd Qu.:1010.0   3rd Qu.: 568.0   3rd Qu.:12.00   3rd Qu.:13.000  
 Max.   :1920.0   Max.   :1586.0   Max.   :12.00   Max.   :19.000  
      Time       fit.cluster
 Min.   : 732   Min.   :2   
 1st Qu.:1000   1st Qu.:2   
 Median :1225   Median :2   
 Mean   :1207   Mean   :2   
 3rd Qu.:1429   3rd Qu.:2   
 Max.   :1634   Max.   :2   
    Capacity      Occupancy        Month            Day             Time     
 Min.   :1920   Min.   : 385   Min.   :10.00   Min.   : 1.00   Min.   : 755  
 1st Qu.:2937   1st Qu.:1102   1st Qu.:10.00   1st Qu.: 9.00   1st Qu.:1101  
 Median :3103   Median :1363   Median :11.00   Median :15.00   Median :1303  
 Mean   :3337   Mean   :1655   Mean   :10.88   Mean   :15.22   Mean   :1274  
 3rd Qu.:3883   3rd Qu.:2194   3rd Qu.:11.00   3rd Qu.:22.00   3rd Qu.:1459  
 Max.   :4675   Max.   :4327   Max.   :12.00   Max.   :31.00   Max.   :1634  
  fit.cluster
 Min.   :3   
 1st Qu.:3   
 Median :3   
 Mean   :3   
 3rd Qu.:3   
 Max.   :3   

In [65]:

# cluster 1
# Gráfico de Capacidad
boxplot(cluster1$Capacity,
main = "Capacity",
xlab = "Cars",
ylab = "Stalls",
col = "orange",
border = "brown",
horizontal = FALSE,
notch = TRUE)

# Gráfico de Ocupación
boxplot(cluster1$Occupancy,
main = "Occupancy",
xlab = "Cars",
ylab = "Stalls",
col = "orange",
border = "brown",
horizontal = FALSE,
notch = TRUE)

# Gráfico de Mes
boxplot(cluster1$Month,
main = "Month",
xlab = "Time",
ylab = "Months",
col = "orange",
border = "brown",
horizontal = FALSE,
notch = TRUE)

# Gráfico de Día
boxplot(cluster1$Day,
main = "Day",
xlab = "Time",
ylab = "Days of month",
col = "orange",
border = "brown",
horizontal = FALSE,
notch = TRUE)

# Gráfico de Hora
boxplot(cluster1$Time,
main = "Hour",
xlab = "Time",
ylab = "Hours of Day",
col = "orange",
border = "brown",
horizontal = FALSE,
notch = TRUE)
Warning message in bxp(list(stats = structure(c(10, 10, 10, 11, 11), .Dim = c(5L, :
“some notches went outside hinges ('box'): maybe set notch=FALSE”

In [66]:

# cluster 2
# Gráfico de Capacidad
boxplot(cluster2$Capacity,
main = "Capacity",
xlab = "Cars",
ylab = "Stalls",
col = "orange",
border = "brown",
horizontal = FALSE,
notch = TRUE)

# Gráfico de Ocupación
boxplot(cluster2$Occupancy,
main = "Occupancy",
xlab = "Cars",
ylab = "Stalls",
col = "orange",
border = "brown",
horizontal = FALSE,
notch = TRUE)

# Gráfico de Mes
boxplot(cluster2$Month,
main = "Month",
xlab = "Time",
ylab = "Months",
col = "orange",
border = "brown",
horizontal = FALSE,
notch = TRUE)

# Gráfico de Día
boxplot(cluster2$Day,
main = "Day",
xlab = "Time",
ylab = "Days of month",
col = "orange",
border = "brown",
horizontal = FALSE,
notch = TRUE)

# Gráfico de Hora
boxplot(cluster2$Time,
main = "Hour",
xlab = "Time",
ylab = "Hours of Day",
col = "orange",
border = "brown",
horizontal = FALSE,
notch = TRUE)
Warning message in bxp(list(stats = structure(c(11, 11, 12, 12, 12), .Dim = c(5L, :
“some notches went outside hinges ('box'): maybe set notch=FALSE”

In [67]:

# cluster 3
# Gráfico de Capacidad
boxplot(cluster3$Capacity,
main = "Capacity",
xlab = "Cars",
ylab = "Stalls",
col = "orange",
border = "brown",
horizontal = FALSE,
notch = TRUE)

# Gráfico de Ocupación
boxplot(cluster3$Occupancy,
main = "Occupancy",
xlab = "Cars",
ylab = "Stalls",
col = "orange",
border = "brown",
horizontal = FALSE,
notch = TRUE)

# Gráfico de Mes
boxplot(cluster3$Month,
main = "Month",
xlab = "Time",
ylab = "Months",
col = "orange",
border = "brown",
horizontal = FALSE,
notch = TRUE)

# Gráfico de Día
boxplot(cluster3$Day,
main = "Day",
xlab = "Time",
ylab = "Days of month",
col = "orange",
border = "brown",
horizontal = FALSE,
notch = TRUE)

# Gráfico de Hora
boxplot(cluster3$Time,
main = "Hour",
xlab = "Time",
ylab = "Hours of Day",
col = "orange",
border = "brown",
horizontal = FALSE,
notch = TRUE)
Warning message in bxp(list(stats = structure(c(10, 10, 11, 11, 12), .Dim = c(5L, :
“some notches went outside hinges ('box'): maybe set notch=FALSE”

Resultados y concluciones del Análisis K-means

A partir del resumen de los conglomerados y de los gráficos de caja obtenidos, pueden extraerse las siguientes conclusiones.

Análisis general de los Clusters

Aquellos aparcamientos de capacidad baja y media (entre 220 y 1920 plazas, con una media de 759,6) tendrán una ocupación media de 363,5 plazas durante el mes de octubre, lo que supone una ocupación del 47,85% de la capacidad media. Esta ocupación aumenta durante los meses de noviembre y diciembre hasta 392,9 plazas sobre una capacidad media de 770,5, lo que constituye una ocupación del 51%.

Los aparcamientos de alta capacidad (entre 1920 y 4675 plazas, con una media de 3337) tendrán una ocupación media de 1655, lo que representa el 49,6%.

Análisis de Clusters

Cluster 1

Los aparcamientos con ocupación alta (valor superior al tercer cuartil, que es de 532 plazas) tienen una ocupación similar durante los días del periodo analizado.

Los aparcamientos con ocupación intermedia (valor superior al primer cuartil, que es de 166 plazas e inferior al tercer cuartil, que es de 532 plazas) tienen una ocupación similar durante los días del periodo analizado.

Los aparcamientos con baja ocupación (valor inferior al primer cuartil que es 166) durante los días de octubre y noviembre se distribuyen uniformemente.

Durante las primeras horas del día (valor inferior al primer cuartil que es 9:59) existe una ocupación baja, con una media de 227,5 plazas, y en la que el 75% de los registros (hasta el tercer cuartil) alcanzan un máximo de 329 plazas, valor inferior a la media de este cluster (353,5 plazas).

En las horas intermedias del día (valor superior al primer cuartil 9:59 e inferior al tercer cuartil 14:29) se registra una alta ocupación, con una media de 411,7 puestos, y en la que el 75% de los registros (hasta el tercer cuartil) alcanzan un máximo de 598 puestos.

Durante las últimas horas del día (valor por encima del tercer cuartil que son las 14:29) se registra una ocupación intermedia, con una media de 405,2 puestos, y en la que el 75% de los registros (hasta el tercer cuartil) alcanzan un máximo de 567 puestos.

In [68]:

#DIAS
# Días de alta ocupación
test = subset(cluster1, Occupancy > 532)
summary(test)
boxplot(test$Day,
main = "High Occupancy",
xlab = "Time",
ylab = "Days of the month",
col = "orange",
border = "brown",
horizontal = FALSE,
notch = TRUE)

# Días de ocupación intermedia
test = subset(cluster1, Occupancy < 532 & Occupancy > 166)
summary(test)
boxplot(test$Day,
main = "Intermediate Occupancy",
xlab = "Time",
ylab = "Days of the month",
col = "orange",
border = "brown",
horizontal = FALSE,
notch = TRUE)

# Días de baja ocupación
test = subset(cluster1, Occupancy < 166)
summary(test)
boxplot(test$Day,
main = "Low Occupancy",
xlab = "Time",
ylab = "Days of the month",
col = "orange",
border = "brown",
horizontal = FALSE,
notch = TRUE)

# Horas
# Horas tempranas
test = subset(cluster1, Time < 959)
summary(test)
boxplot(test$Occupancy,
main = "Occupancy in the early hours",
xlab = "Cars",
ylab = "Stalls",
col = "orange",
border = "brown",
horizontal = FALSE,
notch = TRUE)

# Horas intermedias
test = subset(cluster1, Time > 959 & Time < 1429)
summary(test)
boxplot(test$Occupancy,
main = "Ocupping at intermediate times",
xlab = "Cars",
ylab = "Stalls",
col = "orange",
border = "brown",
horizontal = FALSE,
notch = TRUE)

# Últimas Horas
test = subset(cluster1, Time > 1429)
summary(test)
boxplot(test$Occupancy,
main = "Occupancy in the last hours",
xlab = "Cars",
ylab = "Stalls",
col = "orange",
border = "brown",
horizontal = FALSE,
notch = TRUE)
    Capacity      Occupancy          Month            Day             Time     
 Min.   : 577   Min.   : 533.0   Min.   :10.00   Min.   : 4.00   Min.   : 755  
 1st Qu.: 720   1st Qu.: 597.0   1st Qu.:10.00   1st Qu.:15.00   1st Qu.:1130  
 Median :1010   Median : 673.0   Median :10.00   Median :21.00   Median :1304  
 Mean   :1066   Mean   : 722.4   Mean   :10.41   Mean   :19.98   Mean   :1289  
 3rd Qu.:1268   3rd Qu.: 796.0   3rd Qu.:11.00   3rd Qu.:26.00   3rd Qu.:1434  
 Max.   :1920   Max.   :1412.0   Max.   :11.00   Max.   :31.00   Max.   :1634  
  fit.cluster
 Min.   :1   
 1st Qu.:1   
 Median :1   
 Mean   :1   
 3rd Qu.:1   
 Max.   :1   
    Capacity        Occupancy         Month            Day       
 Min.   : 220.0   Min.   :167.0   Min.   :10.00   Min.   : 4.00  
 1st Qu.: 485.0   1st Qu.:224.0   1st Qu.:10.00   1st Qu.:14.00  
 Median : 600.0   Median :311.0   Median :10.00   Median :20.00  
 Mean   : 697.6   Mean   :320.5   Mean   :10.37   Mean   :19.42  
 3rd Qu.: 849.0   3rd Qu.:405.0   3rd Qu.:11.00   3rd Qu.:26.00  
 Max.   :1920.0   Max.   :531.0   Max.   :11.00   Max.   :31.00  
      Time       fit.cluster
 Min.   : 732   Min.   :1   
 1st Qu.:1001   1st Qu.:1   
 Median :1226   Median :1   
 Mean   :1212   Mean   :1   
 3rd Qu.:1430   3rd Qu.:1   
 Max.   :1634   Max.   :1   
    Capacity        Occupancy          Month            Day       
 Min.   : 220.0   Min.   :  0.00   Min.   :10.00   Min.   : 4.00  
 1st Qu.: 387.0   1st Qu.: 57.00   1st Qu.:10.00   1st Qu.:15.00  
 Median : 470.0   Median : 93.00   Median :10.00   Median :20.00  
 Mean   : 578.5   Mean   : 91.86   Mean   :10.36   Mean   :19.84  
 3rd Qu.: 788.0   3rd Qu.:130.00   3rd Qu.:11.00   3rd Qu.:26.00  
 Max.   :1268.0   Max.   :165.00   Max.   :11.00   Max.   :31.00  
      Time       fit.cluster
 Min.   : 730   Min.   :1   
 1st Qu.: 831   1st Qu.:1   
 Median :1001   Median :1   
 Mean   :1082   Mean   :1   
 3rd Qu.:1304   3rd Qu.:1   
 Max.   :1634   Max.   :1   
    Capacity        Occupancy          Month            Day       
 Min.   : 220.0   Min.   :   0.0   Min.   :10.00   Min.   : 4.00  
 1st Qu.: 480.0   1st Qu.:  78.0   1st Qu.:10.00   1st Qu.:15.00  
 Median : 690.0   Median : 180.0   Median :10.00   Median :20.00  
 Mean   : 778.8   Mean   : 227.5   Mean   :10.38   Mean   :19.54  
 3rd Qu.:1010.0   3rd Qu.: 329.0   3rd Qu.:11.00   3rd Qu.:26.00  
 Max.   :1920.0   Max.   :1262.0   Max.   :11.00   Max.   :31.00  
      Time        fit.cluster
 Min.   :730.0   Min.   :1   
 1st Qu.:804.0   1st Qu.:1   
 Median :856.0   Median :1   
 Mean   :858.8   Mean   :1   
 3rd Qu.:926.0   3rd Qu.:1   
 Max.   :958.0   Max.   :1   
    Capacity        Occupancy          Month            Day       
 Min.   : 220.0   Min.   :   0.0   Min.   :10.00   Min.   : 4.00  
 1st Qu.: 470.0   1st Qu.: 203.0   1st Qu.:10.00   1st Qu.:15.00  
 Median : 690.0   Median : 358.0   Median :10.00   Median :20.00  
 Mean   : 753.7   Mean   : 411.7   Mean   :10.39   Mean   :19.82  
 3rd Qu.:1010.0   3rd Qu.: 598.0   3rd Qu.:11.00   3rd Qu.:26.00  
 Max.   :1920.0   Max.   :1412.0   Max.   :11.00   Max.   :31.00  
      Time       fit.cluster
 Min.   :1000   Min.   :1   
 1st Qu.:1101   1st Qu.:1   
 Median :1204   Median :1   
 Mean   :1200   Mean   :1   
 3rd Qu.:1326   3rd Qu.:1   
 Max.   :1428   Max.   :1   
    Capacity        Occupancy          Month            Day       
 Min.   : 220.0   Min.   :   0.0   Min.   :10.00   Min.   : 4.00  
 1st Qu.: 470.0   1st Qu.: 197.0   1st Qu.:10.00   1st Qu.:14.00  
 Median : 690.0   Median : 368.0   Median :10.00   Median :20.00  
 Mean   : 750.7   Mean   : 405.2   Mean   :10.38   Mean   :19.34  
 3rd Qu.:1010.0   3rd Qu.: 567.0   3rd Qu.:11.00   3rd Qu.:26.00  
 Max.   :1920.0   Max.   :1263.0   Max.   :11.00   Max.   :31.00  
      Time       fit.cluster
 Min.   :1430   Min.   :1   
 1st Qu.:1501   1st Qu.:1   
 Median :1531   Median :1   
 Mean   :1539   Mean   :1   
 3rd Qu.:1604   3rd Qu.:1   
 Max.   :1634   Max.   :1   

Cluster 2

  • Los aparcamientos con ocupación alta (valor superior al tercer cuartil, que es de 568 plazas) presentan una ocupación similar durante los días del periodo analizado.
  • Los aparcamientos con ocupación intermedia (valor superior al primer cuartil, que es de 175 plazas e inferior al tercer cuartil, que es de 568 plazas) presentan una ocupación similar durante los días del periodo analizado.
  • Los aparcamientos con baja ocupación (valor inferior al primer cuartil que es de 175 plazas) presentan una ocupación similar durante los días del periodo analizado.
  • Durante las primeras horas del día (valor inferior al primer cuartil que son las 10:00) existe una ocupación baja, con una media de 245,6 plazas, y en la que el 75% de los registros (hasta el tercer cuartil) alcanzan un máximo de 359,8 plazas, valor inferior a la media de este cluster (392,9 plazas).
  • En las horas intermedias del día (valor superior al primer cuartil 10:00 e inferior al tercer cuartil 14:29) se produce una ocupación alta, con una media de 451,2 puestos, y en la que el 75% de los registros (hasta el tercer cuartil) alcanzan un máximo de 647 puestos.
  • Durante las últimas horas del día (valor por encima del tercer cuartil que son las 14:29) hay una ocupación intermedia, con una media de 430 puestos, y en la que el 75% de los registros (hasta el tercer cuartil) alcanzan un máximo de 602 puestos.

In [69]:

# Días
# Días de Alta Ocupación
test = subset(cluster2, Occupancy > 568)
summary(test)
boxplot(test$Day,
main = "High Occupancy",
xlab = "Time",
ylab = "Days of the Month",
col = "orange",
border = "brown",
horizontal = FALSE,
notch = TRUE)

# Días de ocupación intermedia
test = subset(cluster2, Occupancy > 175 & Occupancy < 568)
summary(test)
boxplot(test$Day,
main = "Intermediate Occupancy",
xlab = "Time",
ylab = "Days of the Month",
col = "orange",
border = "brown",
horizontal = FALSE,
notch = TRUE)

# Días de Baja Ocupación
test = subset(cluster2, Occupancy < 175)
summary(test)
boxplot(test$Day,
main = "Low Occupancy",
xlab = "Time",
ylab = "Days of the Month",
col = "orange",
border = "brown",
horizontal = FALSE,
notch = TRUE)

# Horas
# Primeras Horas
test = subset(cluster2, Time < 1000)
summary(test)
boxplot(test$Occupancy,
main = "Occupancy in the early hours",
xlab = "Cars",
ylab = "Stalls",
col = "orange",
border = "brown",
horizontal = FALSE,
notch = TRUE)

# Horas Intermedias
test = subset(cluster2, Time > 1000 & Time < 1429)
summary(test)
boxplot(test$Occupancy,
main = "Occupancy in the intermediate hours",
xlab = "Cars",
ylab = "Stalls",
col = "orange",
border = "brown",
horizontal = FALSE,
notch = TRUE)

# Últimas horas
test = subset(cluster2, Time > 1429)
summary(test)
boxplot(test$Occupancy,
main = "Occupancy at last hours",
xlab = "Cars",
ylab = "Stalls",
col = "orange",
border = "brown",
horizontal = FALSE,
notch = TRUE)
    Capacity      Occupancy          Month           Day              Time     
 Min.   : 600   Min.   : 569.0   Min.   :11.0   Min.   : 1.000   Min.   : 756  
 1st Qu.: 863   1st Qu.: 641.0   1st Qu.:11.0   1st Qu.: 5.000   1st Qu.:1130  
 Median :1010   Median : 728.0   Median :12.0   Median : 9.000   Median :1303  
 Mean   :1113   Mean   : 787.7   Mean   :11.6   Mean   : 9.244   Mean   :1294  
 3rd Qu.:1322   3rd Qu.: 860.0   3rd Qu.:12.0   3rd Qu.:14.000   3rd Qu.:1456  
 Max.   :1920   Max.   :1586.0   Max.   :12.0   Max.   :19.000   Max.   :1634  
  fit.cluster
 Min.   :2   
 1st Qu.:2   
 Median :2   
 Mean   :2   
 3rd Qu.:2   
 Max.   :2   
    Capacity      Occupancy         Month            Day              Time     
 Min.   : 220   Min.   :176.0   Min.   :11.00   Min.   : 1.000   Min.   : 740  
 1st Qu.: 485   1st Qu.:238.0   1st Qu.:11.00   1st Qu.: 5.000   1st Qu.:1000  
 Median : 600   Median :333.0   Median :12.00   Median : 9.000   Median :1226  
 Mean   : 695   Mean   :342.1   Mean   :11.52   Mean   : 9.249   Mean   :1218  
 3rd Qu.: 849   3rd Qu.:434.0   3rd Qu.:12.00   3rd Qu.:13.000   3rd Qu.:1430  
 Max.   :1920   Max.   :567.0   Max.   :12.00   Max.   :19.000   Max.   :1634  
  fit.cluster
 Min.   :2   
 1st Qu.:2   
 Median :2   
 Mean   :2   
 3rd Qu.:2   
 Max.   :2   
    Capacity        Occupancy         Month            Day        
 Min.   : 220.0   Min.   :  0.0   Min.   :11.00   Min.   : 1.000  
 1st Qu.: 317.0   1st Qu.: 62.0   1st Qu.:11.00   1st Qu.: 6.000  
 Median : 470.0   Median :103.0   Median :11.00   Median :10.000  
 Mean   : 580.5   Mean   :100.4   Mean   :11.48   Mean   : 9.572  
 3rd Qu.: 788.0   3rd Qu.:143.0   3rd Qu.:12.00   3rd Qu.:13.000  
 Max.   :1268.0   Max.   :174.0   Max.   :12.00   Max.   :19.000  
      Time       fit.cluster
 Min.   : 732   Min.   :2   
 1st Qu.: 850   1st Qu.:2   
 Median :1026   Median :2   
 Mean   :1099   Mean   :2   
 3rd Qu.:1327   3rd Qu.:2   
 Max.   :1634   Max.   :2   
    Capacity      Occupancy          Month            Day        
 Min.   : 220   Min.   :   2.0   Min.   :11.00   Min.   : 1.000  
 1st Qu.: 485   1st Qu.:  84.0   1st Qu.:11.00   1st Qu.: 5.000  
 Median : 690   Median : 188.0   Median :12.00   Median : 9.000  
 Mean   : 785   Mean   : 245.6   Mean   :11.56   Mean   : 9.312  
 3rd Qu.:1010   3rd Qu.: 359.8   3rd Qu.:12.00   3rd Qu.:13.000  
 Max.   :1920   Max.   :1329.0   Max.   :12.00   Max.   :19.000  
      Time        fit.cluster
 Min.   :732.0   Min.   :2   
 1st Qu.:826.0   1st Qu.:2   
 Median :859.0   Median :2   
 Mean   :867.2   Mean   :2   
 3rd Qu.:927.0   3rd Qu.:2   
 Max.   :959.0   Max.   :2   
    Capacity        Occupancy          Month            Day        
 Min.   : 220.0   Min.   :   1.0   Min.   :11.00   Min.   : 1.000  
 1st Qu.: 485.0   1st Qu.: 215.0   1st Qu.:11.00   1st Qu.: 5.000  
 Median : 690.0   Median : 396.0   Median :12.00   Median : 9.000  
 Mean   : 766.1   Mean   : 451.2   Mean   :11.53   Mean   : 9.232  
 3rd Qu.:1010.0   3rd Qu.: 647.0   3rd Qu.:12.00   3rd Qu.:13.000  
 Max.   :1920.0   Max.   :1586.0   Max.   :12.00   Max.   :19.000  
      Time       fit.cluster
 Min.   :1002   Min.   :2   
 1st Qu.:1109   1st Qu.:2   
 Median :1226   Median :2   
 Mean   :1215   Mean   :2   
 3rd Qu.:1327   3rd Qu.:2   
 Max.   :1427   Max.   :2   
    Capacity        Occupancy        Month            Day        
 Min.   : 220.0   Min.   :   0   Min.   :11.00   Min.   : 1.000  
 1st Qu.: 485.0   1st Qu.: 207   1st Qu.:11.00   1st Qu.: 6.000  
 Median : 690.0   Median : 386   Median :12.00   Median :10.000  
 Mean   : 763.3   Mean   : 430   Mean   :11.53   Mean   : 9.656  
 3rd Qu.:1010.0   3rd Qu.: 602   3rd Qu.:12.00   3rd Qu.:14.000  
 Max.   :1920.0   Max.   :1488   Max.   :12.00   Max.   :19.000  
      Time       fit.cluster
 Min.   :1430   Min.   :2   
 1st Qu.:1500   1st Qu.:2   
 Median :1532   Median :2   
 Mean   :1547   Mean   :2   
 3rd Qu.:1603   3rd Qu.:2   
 Max.   :1634   Max.   :2   

Cluster 3

  • Los aparcamientos con ocupación alta (valor superior al tercer cuartil, que es de 2194 plazas) presentan una ocupación similar durante los días del periodo analizado.
  • Los aparcamientos con ocupación intermedia (valor superior al primer cuartil, que es de 1102 plazas e inferior al tercer cuartil, que es de 2194 plazas) presentan una ocupación similar durante los días del periodo analizado.
  • Los aparcamientos con baja ocupación (valor inferior al primer cuartil que es de 1102 puestos) presentan una ocupación similar durante los días del periodo analizado.
  • Durante las primeras horas del día (valor inferior al primer cuartil que es 11:01) se presenta una ocupación baja, con una media de 1351 puestos, y en la que el 75% de los registros (hasta el tercer cuartil) alcanzan un máximo de 1573 puestos, este es un valor inferior a la media de este cluster (2194 puestos).
  • En las horas intermedias del día (valor superior al primer cuartil 11:01 e inferior al tercer cuartil 14:59) se produce una mayor ocupación, con una media de 1819 puestos, y en la que el 75% de los registros (hasta el tercer cuartil) alcanzan un máximo de 2567 puestos.
  • Durante las últimas horas del día (valor por encima del tercer cuartil que son las 14:59) hay una ocupación intermedia, con una media de 1308 puestos, y en la que el 75% de los registros (hasta el tercer cuartil) alcanzan un máximo de 2182 puestos.

In [70]:

# Días
# Días de Alta Ocupación
test = subset(cluster3, Occupancy > 2194)
summary(test)
boxplot(test$Day,
main = "High Occupancy",
xlab = "Time",
ylab = "Days of the Month",
col = "orange",
border = "brown",
horizontal = FALSE,
notch = TRUE)

# Días de ocupación intermedia
test = subset(cluster3, Occupancy > 1102 & Occupancy < 2194)
summary(test)
boxplot(test$Day,
main = "Intermediate Occupancy",
xlab = "Time",
ylab = "Days of the Month",
col = "orange",
border = "brown",
horizontal = FALSE,
notch = TRUE)

# Días de baja ocupación
test = subset(cluster3, Occupancy < 1102)
summary(test)
boxplot(test$Day,
main = "Low Occupancy",
xlab = "Time",
ylab = "Days of the Month",
col = "orange",
border = "brown",
horizontal = FALSE,
notch = TRUE)

# Horas
# Primeras Horas
test = subset(cluster3, Time < 1101)
summary(test)
boxplot(test$Occupancy,
main = "Occupancy in the early hours",
xlab = "Cars",
ylab = "Stalls",
col = "orange",
border = "brown",
horizontal = FALSE,
notch = TRUE)

# Horas Intermedias
test = subset(cluster3, Time > 1101 & Time < 1459)
summary(test)
boxplot(test$Occupancy,
main = "Occupancy at intermediate hours",
xlab = "Cars",
ylab = "Stalls",
col = "orange",
border = "brown",
horizontal = FALSE,
notch = TRUE)

# Últimas Horas
test = subset(cluster3, Time > 1459)
summary(test)
boxplot(test$Occupancy,
main = "Occupancy in the last hours",
xlab = "Cars",
ylab = "Stalls",
col = "orange",
border = "brown",
horizontal = FALSE,
notch = TRUE)
    Capacity      Occupancy        Month         Day             Time     
 Min.   :3053   Min.   :2195   Min.   :10   Min.   : 1.00   Min.   : 856  
 1st Qu.:3883   1st Qu.:2556   1st Qu.:10   1st Qu.: 8.00   1st Qu.:1200  
 Median :3883   Median :2834   Median :11   Median :15.00   Median :1328  
 Mean   :4105   Mean   :2882   Mean   :11   Mean   :15.28   Mean   :1318  
 3rd Qu.:4675   3rd Qu.:3185   3rd Qu.:12   3rd Qu.:22.00   3rd Qu.:1459  
 Max.   :4675   Max.   :4327   Max.   :12   Max.   :31.00   Max.   :1634  
  fit.cluster
 Min.   :3   
 1st Qu.:3   
 Median :3   
 Mean   :3   
 3rd Qu.:3   
 Max.   :3   
    Capacity      Occupancy        Month            Day             Time     
 Min.   :1920   Min.   :1103   Min.   :10.00   Min.   : 1.00   Min.   : 755  
 1st Qu.:2009   1st Qu.:1229   1st Qu.:10.00   1st Qu.: 9.00   1st Qu.:1127  
 Median :3053   Median :1363   Median :11.00   Median :15.00   Median :1304  
 Mean   :2979   Mean   :1436   Mean   :10.86   Mean   :15.38   Mean   :1288  
 3rd Qu.:3103   3rd Qu.:1551   3rd Qu.:11.00   3rd Qu.:22.00   3rd Qu.:1457  
 Max.   :4675   Max.   :2193   Max.   :12.00   Max.   :31.00   Max.   :1634  
  fit.cluster
 Min.   :3   
 1st Qu.:3   
 Median :3   
 Mean   :3   
 3rd Qu.:3   
 Max.   :3   
    Capacity      Occupancy          Month            Day             Time     
 Min.   :1920   Min.   : 385.0   Min.   :10.00   Min.   : 1.00   Min.   : 755  
 1st Qu.:2937   1st Qu.: 727.0   1st Qu.:10.00   1st Qu.: 9.00   1st Qu.: 930  
 Median :3103   Median : 904.0   Median :11.00   Median :14.00   Median :1159  
 Mean   :3284   Mean   : 865.7   Mean   :10.79   Mean   :14.83   Mean   :1202  
 3rd Qu.:3103   3rd Qu.:1016.0   3rd Qu.:11.00   3rd Qu.:20.00   3rd Qu.:1501  
 Max.   :4675   Max.   :1101.0   Max.   :12.00   Max.   :31.00   Max.   :1634  
  fit.cluster
 Min.   :3   
 1st Qu.:3   
 Median :3   
 Mean   :3   
 3rd Qu.:3   
 Max.   :3   
    Capacity      Occupancy        Month            Day             Time       
 Min.   :1920   Min.   : 467   Min.   :10.00   Min.   : 1.00   Min.   : 755.0  
 1st Qu.:3053   1st Qu.: 902   1st Qu.:10.00   1st Qu.: 8.00   1st Qu.: 900.0  
 Median :3883   Median :1140   Median :11.00   Median :14.00   Median : 957.0  
 Mean   :3687   Mean   :1351   Mean   :10.86   Mean   :14.83   Mean   : 949.2  
 3rd Qu.:4675   3rd Qu.:1573   3rd Qu.:11.00   3rd Qu.:21.00   3rd Qu.:1029.0  
 Max.   :4675   Max.   :3384   Max.   :12.00   Max.   :31.00   Max.   :1100.0  
  fit.cluster
 Min.   :3   
 1st Qu.:3   
 Median :3   
 Mean   :3   
 3rd Qu.:3   
 Max.   :3   
    Capacity      Occupancy        Month            Day             Time     
 Min.   :1920   Min.   : 474   Min.   :10.00   Min.   : 1.00   Min.   :1102  
 1st Qu.:2937   1st Qu.:1225   1st Qu.:10.00   1st Qu.: 9.00   1st Qu.:1203  
 Median :3053   Median :1444   Median :11.00   Median :15.00   Median :1303  
 Mean   :3227   Mean   :1819   Mean   :10.89   Mean   :15.19   Mean   :1289  
 3rd Qu.:3883   3rd Qu.:2567   3rd Qu.:11.00   3rd Qu.:21.00   3rd Qu.:1400  
 Max.   :4675   Max.   :4270   Max.   :12.00   Max.   :31.00   Max.   :1458  
  fit.cluster
 Min.   :3   
 1st Qu.:3   
 Median :3   
 Mean   :3   
 3rd Qu.:3   
 Max.   :3   
    Capacity      Occupancy        Month            Day             Time     
 Min.   :1920   Min.   : 385   Min.   :10.00   Min.   : 1.00   Min.   :1500  
 1st Qu.:2937   1st Qu.:1076   1st Qu.:10.00   1st Qu.: 9.00   1st Qu.:1527  
 Median :3053   Median :1308   Median :11.00   Median :15.00   Median :1557  
 Mean   :3211   Mean   :1617   Mean   :10.87   Mean   :15.35   Mean   :1566  
 3rd Qu.:3883   3rd Qu.:2182   3rd Qu.:11.00   3rd Qu.:22.00   3rd Qu.:1625  
 Max.   :4675   Max.   :4327   Max.   :12.00   Max.   :31.00   Max.   :1634  
  fit.cluster
 Min.   :3   
 1st Qu.:3   
 Median :3   
 Mean   :3   
 3rd Qu.:3   
 Max.   :3   

Conclusiones generales

No existe una correlación directa entre el nivel de ocupación y el día del mes, pero sí entre el nivel de ocupación y la hora del día.

Los valores de ocupación más altos se dan en las horas intermedias (entre las 10:00 y las 14:59 aproximadamente), mientras que los valores de ocupación más bajos se registran en las primeras horas del día (antes de las 10:00).

También se observa un ligero aumento de los niveles de ocupación de la segunda quincena de noviembre a diciembre en comparación con el periodo comprendido entre octubre y la primera quincena de noviembre.

Referencias

Sergio Alves

Ingeniero de Sistemas. MSc. en Data Science. Cuento con una amplia trayectoria profesional en las áreas de Desarrollo Web FullStack, DBA, DevOps, Inteligencia Artificial y Ciencia de Datos. Soy un entusiasta de la música, la tecnología y el aprendizaje contínuo.

Artículos Relacionados

Back to top button