3.1 Agrupación

Es importante comprender como se agrupan los datos y como se construye. Existen dos formas de agrupar los datos; por Clase y Categoría. Ambas formas de agrupamiento hacen uso de diferentes columnas que vienen en la base de datos, y que el usuario puede cambiar y definir según las necesidades. Adicionalmente a esto, el agrupamiento se hace también por la unidad de tiempo definida por el usuario (usualmente mes).

Definiendo:

  1. Las Clases son las columnas que definen una agrupación jerarquíca y acumulativa, donde el orden es importante.
  2. Las Categorías con columnas que definen una agrupación sin jerarquía, y donde el orden no importa.

A modo de ejemplo, actualmente para Clase se usan las columnas proveedor_mercado_nombre, proveedor_mercado_categoria_nombre, proveedor_rut y mercado_tipo_producto_nombre (en dicho orden). Por otro lado, para las Categorías se utiliza cierre_corte y motivo_legal_descripcion.

En una primera instancia, los reclamos serán agrupados siempre por la primera columna de la Clase, en este caso, proveedor_mercado_nombre; posteriormente, se agrupan también por las Categorías (cierre_corte y motivo_legal_descripcion). Es decir, para esta primera instancia, tendremos el número de reclamos agrupados por mes, según proveedor_mercado_nombre y cierre_corto, y proveedor_mercado_nombre y motivo_legal_descripcion.

En una segunda instancia, los reclamos serán agrupados siempre por las dos primeras columnas de la Clase, en este caso, proveedor_mercado_nombre y proveedor_mercado_categoria_nombre. Como las Categorías se mantienen, en esta iteración se obtienen el número de reclamos agrupados por mes según proveedor_mercado_nombre, proveedor_mercado_categoria_nombre y cierre_corto, y proveedor_mercado_nombre, proveedor_mercado_categoria_nombre y motivo_legal_descripcion.

Este proceso se repite hasta agotar todas las columnas dentro de la Clase. Adicionalmente, se calcula una agrupación especial (agrupación de base o basal), que considera un agrupamiento solo por la Categoría. Es decir, la agrupación agrupa (una única vez) el número de reclamos por la unidad de tiempo (mes en este ejemplo) según cierre_corto y motivo_legal_descripcion. El objetivo de esto, es también comparar con respecto a como se mueve cada Categoría de manera general, sin ningún agrupamiento por Clase.

Específicamente, los pasos son los siguientes:

  1. Agrupar por mes/semana, usando caso_creacion_fecha.
  2. Se cuentan agrupadamente, el número de reclamos por las Clases y Categorías definidas por el usuario. Adicionalmente se cuentan agrupadamente los reclamos por Categoría solamente (agrupación basal).
    1. También se calcula la proporción de reclamos acogidos vs los no acogidos, usando la variable reclamo_acogido, calculada previamente en base a cierre_corto (ver sección 2.3).
    2. Si es definido por el usuario, se calcula el promedio y la desviación estándar del tiempo de respuesta del proveedor (caso_cierre_fecha - caso_creacion_fecha).
  3. Una nueva fecha es asignada, para el caso mensual, el 15 del mes correspondiente (es necesario mantener el formato de fecha dentro del programa). Sin embargo, esta fecha representa la unidad de tiempo completa, en este caso al mes completo (del 1 de dicho mes, hasta el último día según corresponda), aunque esté codificada como un día en concreto.
  4. Se revisa la serie y se completan las fechas faltantes (periodos en que no hubieron reclamos). Para el número de reclamos, se rellena con 0s, para los otros cálculos, se mantiene el valor faltante (NA).
  5. Se ordena la serie y se retornan las agrupaciones pertinentes.

3.1.1 Ejemplo de agrupamiento en R

En este ejemplo se definen las Clases mencionadas anteriormente. Es importante fijarse en el orden y que para cada clase se debe incluir un nombre corto (sin espacios, ni carácteres latinos); en este ejemplo, dichos nombres corresponden a mercado, industria, proveedor y producto.

Y luego, se calculan los reclamos con el siguiente código:

  • dbfM es la base de datos previamente homologada.
  • byCategoria contiene las Categorías que se usarán (en este caso son las mencionadas anteriormente); a diferencia de las Clases no es necesario darle un nombre corto.
  • lags (desfases) se definen las unidades de tiempo a mirar hacia atrás y en este caso, se está mirando a 1, 2, 3, 4, 5, 6, 12 y 24 meses.
  • cuantiles e IQR definene qué cuantiles calcular y cuál será el límite del rango intercuantil (min, max) respectivamente. IQR debe estar presente en cuantiles, o sea producirá un error.
  • coef corresponde a la máxima desviación con respecto a IQR(ver 3.4.1 para más detalles).
  • n_min define el número mínimo de observaciones por proveedor (proveedor_rut). Caso de ser menor, dichas observaciones no se toman en cuenta (se elimina el proveedor).
  • usar_tiempo define si se desea utilizar el tiempo de respuesta del proveedor como una métrica extra al momento de buscar valores atípicos [experimental].
  • rango_fechas define el rango de fechas (min|inicio, max|término) en que un reclamo es considerado (usando caso_creacion_fecha). Usar NA en uno o ambos extremos, para usar el mínimo y/o máximo de observaciones posibles. Las fechas deben estar en formato ‘YYYY-MM-DD’ (año completo, mes en número y día).