Метод хорд и касательных в excel
Существует три метода графического дифференцирования: метод касательных, метод хорд и метод приращений.
Метод касательных
Метод касательных основан на геометрической интерпретации производной. При использовании метода кинематических диаграмм вначале дифференцируется диаграмма перемещений для получения графика (диаграммы) скоростей. Рассмотрим графическое дифференцирование на этом примере.
V = ds/dt, но т.к. аналитическое выражение для перемещений в данном случае отсутствует, то представляем значения перемещений и времени через отрезки на диаграмме перемещений:
Но отношение бесконечно малого приращения функции к бесконечно малому приращению аргумента на графике представляет собой тангенс угла наклона касательной к данной кривой в рассматриваемой точке, т.е.
Используя данное обстоятельство, диаграмму скоростей строят в следующем порядке (рисунок 11):
- проводят касательные к диаграмме перемещений в намеченных положениях;
- слева от начала координат на оси абсцисс будущей диаграммы скоростей отмечают полюс P на некотором расстоянии H (которое называется полюсным расстоянием);
- из полюса проводят лучи, параллельные проведенным касательным на диаграмме перемещений. Эти лучи отсекают на оси ординат будущей диаграммы скоростей отрезки
Таким образом, и скорость в i-том положении и отрезки oi* пропорциональны tgαi , а значит отрезки oi* пропорциональны Vi (скорости исследуемого звена в соответствующем положении механизма), т.е. они представляют собой изображение скорости в виде отрезка в некотором масштабе – Vi.
где Kv – масштаб диаграммы скоростей по оси ординат в (м/с)/мм.
Далее отрезки oi* переносят в соответствующие положения, отмеченные на оси абсцисс, и, соединив концы отрезков плавной кривой, получают диаграмму скоростей исследуемого звена. Аналогично строится диаграмма ускорений. При этом масштаб ускорений
Теоретически метод касательных самый точный из графических методов дифференцирования, т.к. дает значение мгновенной скорости (ускорения) именно в том положении, в котором проведена касательная.
Однако из-за трудности точного проведения касательных (и сама дифференцируемая кривая, построенная по точкам, имеет отклонения от ее теоретической функции), практическая точность этого метода весьма низкая, поэтому он используется редко (обычно когда надо проанализировать характер движения звена без получения конкретных численных результатов).
Метод хорд
При графическом дифференцировании методом хорд последовательность действий точно такая же, что и при методе касательных, но вместо касательных к дифференцируемому графику в конкретных положениях проводят хорды на выделенных участках. В этом случае
т.е. тангенс угла наклона хорды пропорционален средней скорости на выделенном участке, поэтому отрезки 0i* с оси ординат надо переносить на середины соответствующих участков (считая, что средняя скорость примерно совпадает с мгновенной скоростью посередине выделенного участка). По полученным точкам строят диаграмму скоростей (см. рисунок 12).
Аналогично, дифференцируя диаграмму скоростей, получают диаграмму ускорений. Масштабы всех диаграмм определяют точно так же, как и при использовании метода касательных.
Изначально в методе хорд имеется неточность, связанная с тем, что на самом деле средняя скорость на участке не обязательно совпадает с мгновенной скоростью на его середине. Однако практическая точность его значительно выше, чем при использовании метода касательных, т.к. хорду по двум точкам провести легко с достаточно высокой степенью точности.
Метод тем точнее, чем ближе хорда к дифференцируемой кривой, поэтому делением кривой на более мелкие участки, можно добиться достаточной для практики точности. Поэтому метод хорд применяется значительно чаще, чем метод касательных.
Метод приращений
Метод приращений является частным случаем метода хорд, когда полюсное расстояние принимается равным выделенным участкам на оси абсцисс (при этом все участки должны иметь одинаковую величину H=Δt ). В этом случае приращение перемещений на выделенном участке представляет собой среднюю скорость на данном участке в некотором масштабе
Аналогично дифференцируется диаграмма скоростей для получения диаграммы ускорений. Метод удобен тем, что не надо проводить никаких вспомогательных линий, дифференцирование осуществляется очень быстро. Однако при повторном дифференцировании (дифференцировании диаграммы скоростей для получения диаграммы ускорений) приращения уменьшаются и точность результатов резко снижается (получается большая относительная погрешность).
Графический метод АВС-анализа — метод касательных
Графический метод АВС-анализа по касательным включает в себя следующие шаги:
- Определить цели анализа.
- Определить объекты и факторы анализа.
Примечание. Объекты и факторы, используемые в приведённых ниже примерах, являются, по сути, абстракциями. В реальных задачах АВС-анализа объектом может быть наименование товара, товарная группа или подгруппа, клиент, поставщик и т.д. В качестве фактора, как правило, выступает выручка, количество продаж и др. - Собрать и подготовить данные для АВС-анализа.
- Отсортировать набор данных в порядке убывания значения фактора.
- Рассчитать следующие параметры, необходимые для построения кривой Парето:
- рассчитать долю фактора каждого объекта в общей сумме факторов;
- рассчитать кумулятивную сумму долей факторов объектов.
- Произвести построение кривой Парето на основании полученных значений кумулятивной суммы. На оси абсцисс отложены объекты анализа, а по оси ординат — значения нарастающего итога доли факторов объектов в общей сумме значений факторов.
- Отметить на кривой Парето точки О и К.
- Провести отрезок из точки О в точку К.
- Определить на кривой Парето точку M, используя метод параллельного переноса, либо построение нормали к точке, в которой касательная к диаграмме параллельна отрезку ОК.
- Отнести к группе А объекты, лежащие слева от проекции точки М на ось абсцисс.
- Провести отрезок из точки М к точке К.
- Определить на графике АВС-кривой точку N, в которой касательная к графику параллельна отрезку MК.
- Отнести к группе В объекты, лежащие слева от проекции точки N на ось абсцисс.
- Отнести к группе С объекты, лежащие справа от проекции точки N на ось абсцисс.
Результатом анализа будет разделение объектов по группам A, B и C (рисунок 1).
Рис. 1: Результат АВС-анализа методом касательных
Метод касательных в ABC-анализе
Сегодня продолжение истории про Парето-анализ. Базовое приложение на Qlik разработано, настало время основывать АВС-аналитику не на общепризнанных правилах или экспертных оценках, а исключительно на ваших данных (ведь реальная разбивка может быть не 20/80, а 10/70 или любой другой). В конце статьи можно скачать скрипт, который автоматизирует разбиение групп на А, В и С по методу касательных. Итак, приступим!
Зачем нам автоматизировать АВС-аналитику в Qlik?
ABC-анализ – популярный метод структурного анализа, который помогает во многих бизнес-задачах, к примеру, более эффективно управлять товарными запасами и выстраивать категорийный менеджмент. В первоначальном варианте данный вид анализа основывается на принципе Парето (или еще можно встретить вариант принцип 20/80) – «20% усилий дают 80% результата, а остальные 80% усилий – лишь 20% результата». Это так называемый классический метод ABC-анализа. Его можно применять – это лучше, чем не применять совсем ничего.
Но мир неидеален и бизнес не работает по классическим учебникам – на деле соотношения бывают совершенно разными: 20/90, 10/70, 45/100, 5/98 и т.д. Причин тому опять же может быть множество:
- Сезонность, которая влияет на ассортимент продукции,
- Праздничные дни: Новый Год, Рождество, Пасха и т.д.,
- Введение/выведение товара (группы товаров) на рынок, которые могут существенно повлиять на структуру продаж,
- Выход на новые рынки (регионы), рост/падение клиентской базы и пр.
К тому же, часто для проведения ABC-анализа нельзя обойтись каким-то одним критерием классификации (это уже задача многокритериальной классификации объектов). В такой ситуации проще и эффективнее иметь максимально формализованный метод определения границ групп при ABC-классификации – метод касательных.
Почему метод касательных?
Придумано достаточно методов для ABC-классификации: метод касательных, метод треугольника, метод петли и т.д. Почему я выбрал метод касательных? Этот метод – полностью формализован, алгоритм его работы понятен (как в графическом, так и аналитическом представлении), и его можно реализовать на Qlik, не используя «сильной» математики =) Вообще я сам придерживаюсь этого правила (и всем могу посоветовать): если задачу можно решить простым методом – используем простой!
Метод касательных для АВС-классификации: суть, плюсы и минусы
Суть метода касательных представлена на графике ниже:
Кратко алгоритм графического метода можем описать так:
- Строим кривую Парето
- Соединяем крайние её точки
- К кривой Парето строим касательную параллельную прямой п.2.
- Точка касания – граница групп А (слева) и В (справа).
- Чтобы получить группу С, повторяем все, начиная с п.2, только прямую начинаем строить не от начала кривой Парето, а от точки границы групп А и В.
Теперь немного моих усовершенствований для понимания сути метода:
- Метод касательных можно представить в виде последовательности шагов по разделению всего множества объектов на две группы (целевая группа и остальное множество). Таким образом на первом шаге мы определяем первую целевую группу А и все остальные объекты.
- Количество шагов зависит от количества групп, на которые мы делаем разбиение. Стандартно сегмента 3 – А, В и С, но при желании можно продолжить.
- На каждом шаге рассматриваемое множество объектов делится по скорости роста кривой Парето (там, где скорость роста кривой выше среднего на всем рассматриваемом множестве, и где ниже)
Достоинства метода касательных:
- Возможность автоматического расчета границ групп (без «большой математики»)
- Отсутствие необходимости пересматривать границы групп
- Масштабируемый алгоритм
- Хороший результат в области средних значений точки Парето
Недостатки метода касательных:
- Не единственность разбиения для некоторых форм кривой Парето (наличие прямолинейного отрезка):
- Метод плохо работает на распределениях близких к граничным точкам Парето:
Но на практике могу сказать, что это крайние случаи, и для них необходимо использовать экспертный подход, разбирать их отдельно. Алгоритм действий в таком случае может быть следующим:
- Предобработка данных. Определяем крайние случаи распределения Парето
- Крайние случаи отправляем на экспертный анализ
- Общие случаи отправляем на метод касательных
Разрабатываем аналитический алгоритм АВС на Qlik
Скачайте предложенный мной Алгоритм автоматизации АВС-классификации по методу касательных. Разработанный алгоритм является унифицированным, т.е. его не нужно «допиливать» под конкретную задачу, вы либо его принимаете, либо нет =)
Внедрить алгоритм в свое приложение можно буквально в 2 шага:
- Самое простое – пишем в скрипте:
$(Must_Include=abc.txt);
Сам алгоритм метода касательных «спрятан» в подскрипт, который вызывается на выполнение командой $(Must_Include) или $(Include). Таким образом, мы можем включить алгоритм в любом месте скрипта, любое количество раз. В скрипте я комментировал каждый шаг, так что при необходимости разработчику или аналитику будет легко разобраться.
- Перед тем, как написать команду выше, нам все же нужно немного поработать:
- сформировать таблицу на которой будет проведена ABC классификация:
- имя таблицы – Data_IN,
- два поля – Object (объект классификации), Factor (критерий классификации).
«Внимание!» — данные в таблице Data_IN – должны быть сгруппированными.
- на выходе мы получаем таблицу Data_OUT со следующими полями:
- id – поле для сопоставления входных и выходных данных (поле Object в таблице Data_IN)
- SalePer – доля критерия в общем объеме
- SalePerCum – доля критерия с накоплением
- ABC_Group – группа A,B,C
«Внимание!» — если необходимо использовать алгоритм ABC классификации несколько раз в скрипте, то после каждого его применения не забывайте делать пособработку таблицы Data_OUT.
АВС-анализ по методу касательных: реальный пример
Для примера я создал приложение АВС-классификации по методу касательных на QlikView:
Расчет групп производится здесь автоматически по неделям, с возможностью выбора объекта классификации – номенклатура или контрагент.
Тут можно увидеть, что функция расчета ABC групп запускалась не один раз (а точнее >300 раз). Это и расчеты по разным объектам (Номенклатура и Контрагенты), и по разным временным отрезкам. При этом отмечу, что данный алгоритм работает очень быстро – на вход подавался объем
3 млн.строк, время обработки составило
1 мин. Для сравнения, тот же алгоритм реализованный на языке R на куда меньшем объеме
- на выходе мы получаем таблицу Data_OUT со следующими полями:
- сформировать таблицу на которой будет проведена ABC классификация: