Ir al contenido
σestadistica.ar

Calculadora

Pareto y clasificación ABC

Qué porción de los clientes hace el 80 % de la facturación. La respuesta casi nunca es 20 %, y medio chiste del asunto es que «80/20» es un nombre, no un resultado.

Una fila por cliente, producto o sucursal. Sirve lo que se copia de una planilla.

40 filas leídas · decimal con coma

Ejemplos

Cuarenta productos de /datos/distribuidora-norte. No da 80/20: en un mayorista de almacén la facturación está mucho menos concentrada que en el dicho.

22 de 40 ítems —el 55,0 %— hacen el 80 % del total.

El «80/20» es un nombre, no un resultado: la proporción que junta el 80 % sale de los datos y casi nunca es un quinto.

Clase A

22

55,0 % de los ítems · 81,0 % del total

Concentración (HHI)

0,0418

equivale a 23,9 ítems iguales

Los 4 más grandes

29,4 %

el primero solo: 10,6 %

Gini

0,405

0 = parejo · 1 = todo en uno

Diagrama de Pareto

Barras: lo que aporta cada ítem, de mayor a menor. Línea: el acumulado. La cruz punteada marca dónde se llega al 80 %.

0 %25 %50 %75 %100 %Yerba mate 1 kg: 10,6 % · acumulado 10,6 %Pañales talle M x40: 7,7 % · acumulado 18,4 %Gaseosa cola 2,25 l: 6,0 % · acumulado 24,4 %Cerveza rubia 1 l: 5,0 % · acumulado 29,4 %Aceite girasol 900 ml: 4,6 % · acumulado 34,0 %Jabón en polvo 800 g: 4,3 % · acumulado 38,3 %Aceite mezcla 1,5 l: 3,7 % · acumulado 42,0 %Gaseosa lima-limón 2,25 l: 3,4 % · acumulado 45,4 %Papel higiénico x4: 3,3 % · acumulado 48,7 %Yerba mate 500 g: 3,3 % · acumulado 52,0 %Vino tinto común 1 l: 3,2 % · acumulado 55,2 %Shampoo 400 ml: 3,0 % · acumulado 58,2 %Azúcar 1 kg: 2,8 % · acumulado 61,0 %Arroz largo fino 1 kg: 2,8 % · acumulado 63,7 %Vino torrontés 750 ml: 2,7 % · acumulado 66,4 %Detergente 750 ml: 2,6 % · acumulado 69,0 %Aceite oliva 500 ml: 2,6 % · acumulado 71,6 %Agua mineral 2 l: 2,1 % · acumulado 73,7 %Agua saborizada 1,5 l: 1,9 % · acumulado 75,6 %Fideos guiseros 500 g: 1,8 % · acumulado 77,5 %Rollo de cocina x2: 1,8 % · acumulado 79,3 %Tomate triturado 520 g: 1,7 % · acumulado 81,0 %Atún al natural 170 g: 1,7 % · acumulado 82,8 %Fideos tallarín 500 g: 1,7 % · acumulado 84,5 %Desinfectante 500 ml: 1,6 % · acumulado 86,1 %Lavandina 1 l: 1,6 % · acumulado 87,6 %Cerveza negra 1 l: 1,6 % · acumulado 89,2 %Harina 000 1 kg: 1,4 % · acumulado 90,6 %Fideos tirabuzón 500 g: 1,3 % · acumulado 91,9 %Toallitas húmedas x80: 1,3 % · acumulado 93,2 %Pasta dental 90 g: 1,2 % · acumulado 94,4 %Alcohol en gel 250 ml: 1,0 % · acumulado 95,4 %Harina leudante 1 kg: 0,9 % · acumulado 96,3 %Arvejas 350 g: 0,8 % · acumulado 97,1 %Porotos negros 400 g: 0,8 % · acumulado 97,9 %Jabón de tocador 90 g: 0,7 % · acumulado 98,6 %Servilletas x100: 0,5 % · acumulado 99,1 %Jugo en polvo 20 g: 0,5 % · acumulado 99,6 %Lentejas 400 g: 0,2 % · acumulado 99,8 %Gaseosa naranja 2,25 l: 0,2 % · acumulado 100,0 %1402211 %0 %

■ A · hasta el 80 %■ B · del 80 al 95 %■ C · el resto

Clasificación ABC

#ÍtemValorParteAcumuladoClase
1Yerba mate 1 kg153,6010,6 %10,6 %A
2Pañales talle M x40111,707,7 %18,4 %A
3Gaseosa cola 2,25 l87,006,0 %24,4 %A
4Cerveza rubia 1 l72,305,0 %29,4 %A
5Aceite girasol 900 ml66,604,6 %34,0 %A
6Jabón en polvo 800 g61,504,3 %38,3 %A
7Aceite mezcla 1,5 l53,903,7 %42,0 %A
8Gaseosa lima-limón 2,25 l48,903,4 %45,4 %A
9Papel higiénico x448,203,3 %48,7 %A
10Yerba mate 500 g47,303,3 %52,0 %A
11Vino tinto común 1 l45,703,2 %55,2 %A
12Shampoo 400 ml42,903,0 %58,2 %A
13Azúcar 1 kg40,802,8 %61,0 %A
14Arroz largo fino 1 kg39,702,8 %63,7 %A
15Vino torrontés 750 ml38,802,7 %66,4 %A

Se muestran 15 de 40. La fila resaltada es la que cruza el 80 %.

Cómo se lee

Las clases A, B y C
A son los que juntan el primer 80 %; B, hasta el 95 %; C, el resto. El ítem que cruza cada corte entra a la clase de arriba: sin él no se llega al 80 %, así que dejarlo afuera haría que la clase A no cumpla su propia definición.
El índice de Herfindahl
La suma de los cuadrados de las participaciones. Va de 1/n —todos iguales— a 1 —uno se lleva todo—. Su inversa, 23,9, se lee como «esta cartera se comporta como si tuviera 23,9 ítems de igual tamaño», que es más fácil de explicar que el índice.
Pareto y Lorenz
Son la misma curva mirada al revés: Pareto ordena de mayor a menor para hablar de concentración, Lorenz de menor a mayor para hablar de desigualdad. El Gini de acá es el mismo que devuelve la calculadora de Lorenz y Gini.
Lo que esto no dice
Que un cliente esté en la clase C no significa que convenga perderlo: puede ser nuevo, estacional o barato de atender. La clasificación ordena por facturación y nada más. Para mirar antigüedad y frecuencia hace falta otra cosa.

Lo mismo en R y en Python

R

# Pareto y clasificación ABC
d <- d[order(-d$valor), ]
d$parte      <- d$valor / sum(d$valor)
d$acumulado  <- cumsum(d$parte)
# El ítem que CRUZA el 80 % entra a la A: se mira el acumulado anterior.
anterior  <- c(0, head(d$acumulado, -1))
d$clase   <- ifelse(anterior < 0.80, "A", ifelse(anterior < 0.95, "B", "C"))

sum(d$clase == "A")                    # cuántos hacen el 80 %
sum(d$parte^2)                         # Herfindahl
1 / sum(d$parte^2)                     # equivalentes de ítems iguales

Python

# Pareto y clasificación ABC
import numpy as np, pandas as pd

d = d.sort_values("valor", ascending=False).reset_index(drop=True)
d["parte"] = d.valor / d.valor.sum()
d["acumulado"] = d.parte.cumsum()
# El ítem que CRUZA el 80 % entra a la A: se mira el acumulado anterior.
anterior = d.acumulado.shift(1, fill_value=0)
d["clase"] = np.where(anterior < 0.80, "A", np.where(anterior < 0.95, "B", "C"))

(d.clase == "A").sum()                 # cuántos hacen el 80 %
(d.parte ** 2).sum()                   # Herfindahl
1 / (d.parte ** 2).sum()               # equivalentes de ítems iguales

De dónde sale el 80/20

Vilfredo Pareto observó a fines del siglo XIX que en Italia una porción chica de la población tenía la mayor parte de la tierra, y al ajustar una distribución a esos datos encontró un parámetro cercano a 1,16. Con ese valor exacto —y solo con ese— se cumple que el 20 % de arriba junta el 80 %.

De ahí en adelante el «80/20» se convirtió en una regla que se repite sin medirla. Pero es una propiedad de una distribución con un parámetro, no una ley de las empresas. Una cartera de clientes puede dar 30/80, 12/80 o 45/80, y cada uno de esos números describe un negocio distinto. Por eso esta herramienta no verifica el dicho: lo mide.

Qué decide la clasificación ABC

La clase A son los ítems que juntan el primer 80 % del total; la B, los que llegan hasta el 95 %; la C, el resto. Los cortes son convención, no teoría: en control de inventarios se usan esos tres porque ordenan el esfuerzo de gestión, y nada impide mover el corte si el negocio lo pide.

Hay un detalle que cambia el resultado y suele hacerse mal: el ítem que cruza el 80 % pertenece a la clase A. Si se lo clasifica mirando su propio acumulado, queda en la B y entonces la clase A no llega al 80 %, que es justamente lo que su definición promete. Con pocos ítems la diferencia es grande.

Los índices de concentración

El Herfindahl-Hirschman suma los cuadrados de las participaciones. Su gracia es que su inversa se lee en unidades entendibles: un HHI de 0,05 equivale a veinte ítems de igual tamaño. Las autoridades de competencia lo usan con el índice multiplicado por 10.000, donde por encima de 2.500 un mercado se considera concentrado.

Las razones de concentración —CR1, CR4, CR10— dicen qué porción se llevan el más grande, los cuatro más grandes y los diez más grandes. Son más fáciles de comunicar que el Herfindahl y pierden la información del resto de la cola, así que conviene mirar las dos cosas.

Lo que la concentración no dice

Que un cliente esté en la clase C no significa que convenga perderlo. Puede ser nuevo, puede comprar poco y seguido, puede ser barato de atender o puede ser el que trae a los demás. La clasificación ordena por una sola variable —cuánto facturó— y en un período elegido por quien hace la cuenta.

El riesgo de concentración tampoco se lee del índice solo: cinco clientes que son cinco sucursales de la misma cadena son, para efectos de riesgo, un solo cliente. Antes de interpretar el Herfindahl conviene preguntarse si las filas son realmente independientes.

Cómo está verificado

No hay una función de biblioteca que haga «Pareto»: es aritmética. Así que lo que se compara no es otra implementación de la misma fórmula —que compartiría el error— sino tres cosas que no la comparten. Los acumulados se recalculan con Fraction, sin un solo redondeo, porque los valores de entrada son racionales exactos y entonces se puede saber cuánto error de coma flotante acumuló el camino rápido en vez de suponerlo.

El Herfindahl se contrasta contra la identidad algebraica H = (1 + CV²)/n sobre las participaciones, que no se parece en nada a «sumar los cuadrados»: si el código suma mal, no cierra. La clasificación A/B/C se rehace en Python con un bucle escrito al revés que el de TypeScript. Y el Gini se compara contra su definición —la diferencia absoluta media— calculada con numpy, no contra el atajo de la curva. Son 258 comprobaciones sobre siete familias de casos, entre ellas un solo ítem, todos iguales, uno que se lleva casi todo, ceros, negativos y empates.