АBC–аналіз – метод класифікації активів підприємства за їх прибутковістю.

  • Об’єкти класу А є дуже важливими для компанії, оскільки приносять левову частку прибутку. Тому дуже важливим є облік, контроль і забезпечення наявності цих об’єктів.
  • Об’єкти класу B є важливим, однак менше ніж А. Це є проміжний клас.
  • Об’єкти класу С не є важливими, і тому припустимою є економія коштів та зусиль для цієї групи.

Наприклад, активом для класифікації може бути товар, у випадку аптеки – ліки. Провізору вигідніше рекомендувати ЛП, що відносяться до класу А, ніж об’єкти інших класів, а також слід забезпечити постійну наявність цих ліків (звести відмови по ним до нуля). З іншого боку, фінансові ресурси для придбання ліків аптекою не безмежні, тому якщо постає питання про скорочення, перш за все скорочуються ЛП із групи С.

ABC-аналізу можуть також підлягати працівники компанії, постійні клієнти, матеріальні ресурси і т.д. Розподіл за класами прийнято робити згідно принципу Парето. Принцип Парето (правило 80-20, закон “важливої меншості”) каже, що для багатьох подій, 80% наслідків слідує із 20% причин. Таким чином управління цими 20% причин дасть нам можливість на 80% управляти ситуацією. Вільфредо Парето був італійським економістом, який у 1906 році виявив, що 80% італійських земель належить 20% населення. Варіанти формулювання принципу Парето для бізнесу наступні:

  • 80% доходу приносять 20% клієнтів
  • 80% доходу отримується внаслідок 20% витраченого робочого часу
  • 80% прибутку приносять 20% найменувань товару
  • 80% прибутку компанії приносять 20% працівників

Принцип Парето загалом говорить про дисбаланс між причинами та наслідками, а пропорція 80:20 є лише приблизним середнім значенням цього дизбалансу. Слід також зауважити, що оскільки 80% стосується наслідку, а 20% - причини (тобто різних речей), то їх сума не повинна дорівнювати 100%, а може бути як менша, так і більша. Наприклад, встановлено що у 1989 р. 20% найбагатших людей контролювали 82.7% відсотків світового прибутку. Принцип Парето також не залежить від масштабу. Так, якщо узяти сто найбагатших людей, то статки перших двадцяти будуть приблизно дорівнювати багатству інших 80. Існує значна кількість рекомендацій щодо встановлення раціональної межі між класами. По суті, ця межа залежить від галузі, ринку і специфіки роботи підприємства. Найчастіше придатним є такий розподіл:

  • А – 20% товарів, що приносять 70% прибутку
  • B – 30% товарів, що приносять 25% прибутку
  • С – 50% товарів, що приносять 5% прибутку

У той же час, існує два підходи до питання які відсотки рахувати фіксованими. Перший приймає фіксованими ті, що стосуються прибутку, а другий - ті, що стосуються кількості товарних позицій.

Існує декілька недоліків даного методу. Перший недолік – внаслідок випадковості у продажах товари можуть мігрувати із групи в групу. Товар групи А, потрапивши випадково у групу B, втратить необхідну увагу, і внаслідок цього з часом може переміститись у групу С і навіть бути вилученим. Для того, щоб урахувати фактор випадковості продажів, застосовують XYZ-аналіз, про що йтиметься пізніше. Другий недолік – не врахування зв’язку (залежності) між причинами загалом, а товарами - у більш конкретному значенні. Так, споживач внаслідок відсутності потрібного йому товару, що віднесений нами до групи С, не купить інший товар, що знаходитиься у групі А. Надмірне захоплення управлінців ABC-аналізом призводить до відсутності вибору і наявності товару однієї-двох марок.

XYZ-аналіз – метод, що здійснює оцінку стабільності певних процесів чи об’єктів бізнесу (напр. стабільність продажів ЛП, стабільність поведінки покупців, стабільність ефективності роботи працівників і т.д.). Часто застосовується одночасно з ABC-аналізом.

  • група X – товари, що характеризуються стабільним попитом (розміром продажів), висока можливість вірного прогнозування, коливання 0-20%
  • група Y – товари, що мають деякі коливання продажів, середня можливість прогнозування, коливання 20-50%
  • група Z – товари з нерегулярним і нестабільним попитом, слабка точність прогнозування, коливання > 50%.

Сумісний ABC та XYZ-аналіз у результаті групує товари на 9 класів таблиця інтегрованого ABC-XYZ аналізу

Можна стверджувати, що товари із групи AX – безумовні лідери, найкращий актив, а із групи CZ – повні аутсайдери.

Загальна рекомендація така: товари категорії X варто завжди мати у кількості, рівній прогнозованому продажу (AX - трохи більше прогнозованої кількості), а товари категорії Z (особливо BZ і СZ) часто доцільно реалізовувати (поставляти) за попереднім замовленням. ЛП групи СZ – кандидати на вилучення з асортименту.

##Приклад

Є перелік асортиментних позицій аптеки, закупівельні (оптові) та роздрібні ціни та дані щодо кількості проданих препаратів за місяць напротязі шести місяців. Необхідно виконати комбінований ABC-XYZ-аналіз. У наведеному прикладі наведено 52 препарати (російською мовою) вітчизняного виробника “Фармак” (стовпчик preparat), оптові ціни (стовпчик optcina) узяті із сайту pharmbase.com.ua і відображають пропозиції оптової фірми БаДМ станом на кінець листопада-початок грудня 2011р. Роздрібні ціни (стовпчик aptcina) є середньозваженою роздрібною вартістю станом на жовтень 2011 і узяті із сайту compendium.com.ua. Дані щодо продажу препаратів за кожен з шести місяців (стовпчики р1-р6) згенеровані випадково за допомогою спеціального алгоритму, що враховує роздрібну вартість препарату, та здійснює імітацію рівномірного розподілу та розподілу Пуассона для випадкової величини.

Завантажимо дані:

adress = "http://stat.org.ua/data/abc.csv"
dani = read.csv(adress, sep = ";", fileEncoding = "CP1251")
# Якщо у вас Windows української чи російської локалізації - аргумент
# fileEncoding можна пропустити
head(dani)  #перевіряємо успішність завантаження
##     preparat optcina aptcina p1 p2 p3 p4 p5 p6
## 1     АЛАДИН   43.57   48.97  6  6  2  5  3  2
## 2    АМИЗОН®   13.38   15.33 30 21 19 26 35 27
## 3  АНДРОФАРМ  382.10  438.51  8  1  0  1  3  0
## 4   АНТРАЛЬ®   42.52   53.25  8  7  6  4  7  5
## 5 АТОРВАКОР®   40.81   47.69 10 13 18 16 12 12
## 6  БАРБОВАЛ®    8.60    9.50 59 39 61 48 31 41

Ми слідуємо принципу “невелика частка препаратів приносить велику частку прибутку”, значить цей прибуток (сумарний) від продажів кожного з препаратів потрібно обчислити. Прибуток дорівнює різниці між роздрібною і оптовою ціною (націнка), помноженій на сумарну кількість проданих препаратів – сумі по рядках стовпчиків з четвертого по дев’ятий.

dani$prubytok = (dani$aptcina - dani$optcina) * apply(dani[, 4:9], 1, sum)

"apply(dani[,4:9],1,sum)" каже “застосуй до стовпців з 4 по 9 датафрейму dani, по рядочках, функцію суми”. Перевіримо появу нового стовпчика із назвою prubytok:

fix(dani)

Тепер потрібно відсортувати датафрейм dani за спаданням прибутку:

dani = dani[order(-dani$prubytok), ]

У новий датафрейм dani записуємо старий датафрейм, рядки якого розміщуються у тому порядку, в якому спадають значення прибутку. Функція order() обчислює порядок даних по зростанню, а щоб зробити навпаки, потрібно перед даними поставити мінус. Тепер нам варто обчислити кумулятивну суму прибутку – для i-го препарату це сума прибутку від всіх препаратів до i включно, тобто це прибуток, який приносять i перших препаратів.

cumpr = cumsum(dani$prubytok)

І перевести кумулятивну суму у кумулятивний відсоток:

cumproc = cumpr/sum(dani$prubytok) * 100

Проведемо розподіл на групи за першим підходом – фіксовані межі прибутку 70%, 25%, 5% (а значить кумулятивного -70%, 95%, 100%):

abc = cut(cumproc, breaks = c(0, 70, 95, 100), labels = c("A", "B", "C"))
abc = as.factor(abc)

Останнім рядочком ми перетворюємо змінну abc у фактор, адже “A”, “B” i “C” - не просто букви, а різні групи. Подивимось, скільки препаратів було віднесено до кожного з класів:

table(abc)
## abc
##  A  B  C 
## 25 18  9

Щоб подивитись, який з препаратів куди належить, та який розмір прибутку приніс, можемо використати точкову діаграму. Так як препаратів багато, зменшимо розмір шрифту, щоб назви не налізали одна на одну. Також обернемо всі дані по зростанню, щоб графік був наочнішим. Для цього існує функція rev() яка обертає заданий їй аргумент задом наперед.

par(ps = 6)
dotchart(rev(dani$prubytok), labels = rev(dani$preparat), groups = rev(abc), 
    color = as.numeric(rev(abc)))

ABC-аналіз

А тепер проведемо XYZ-аналіз. Для цього потрібно визначити коефіцієнти варіації (відсотки коливань) – тобто яка частина від середнього значення змінюється (коливається).

means = apply(dani[, 4:9], 1, mean)  #знаходимо середні продажі
devs = apply(dani[, 4:9], 1, sd)  #обчислюєм стандартні відхилення
kol = devs/means * 100  #коефіцієнти варіації

Тепер поділимо препарати на категорії X, Y i Z. Приймемо, що до X належатимуть ЛП із відсотком коливань <20%, до Y – між 20% і 50%, і до Z > 50%.

xyz = cut(kol, breaks = c(0, 20, 50, 10000), labels = c("X", "Y", "Z"))
xyz = as.factor(xyz)  #перетворюємо змінну xyz у фактор

Ми в якості останньої межі для cut() передаємо велике число (10000), якого коефіцієнт варіації точно не досягне. Подивимось кількості препаратів у групах:

table(xyz)
## xyz
##  X  Y  Z 
##  2 17 33

Усього два ЛП характеризується стабільним попитом. І поглянем на результати комбінованого ABC-XYZ аналізу:

table(abc, xyz)
##    xyz
## abc  X  Y  Z
##   A  1  9 15
##   B  0  4 14
##   C  1  4  4

Один із стабільних препаратів приносить нам суттєвий дохід. Найбільш цінні у даній ситуації – він та 9 препаратів категорії AY. Поглянемо який із препаратів до якого класу належить:

dotchart(rev(dani$prubytok), labels = rev(dani$preparat), groups = rev(interaction(abc, 
    xyz, drop = TRUE)), color = as.numeric(rev(as.numeric(abc))))

Комбінований ABC-XYZ аналіз

Тепер ми бачимо назви препаратів, найбільш корисних для планування прибутку (AY), та назви препаратів – кандидатів на вилучення з асортименту (CZ). Варто пам’ятати, що аналізовані у цій задачі дані – навчальні, кількості продажів – випадкові, тому отримані результати не відображають реальності. Однак при дослідженні реальних даних ABC-XYZ аналіз є потужним інструментом для управління асортиментом.

Часто кращим рішенням для визначення меж між групами А, В і С, а також між X, Y i Z виявляється кластерний аналіз. Спробуйте самі провести поділ препаратів за прибутком (ABC) та за відсотком коливань (XYZ) із використанням кластерного аналізу та порівняти отримані результати із отриманою в цій задачі класифікацією.