Вычислительный блокнот детерминированного факторного анализа


Изложение предполагает, что читатель знаком с теорией детерминированного факторного анализа и его основными методами. В противном случае сначала рекомендуется ознакомиться с документом Теория.
Существенно подробнее проблематика такого рода (и не только) вычислений изложена в книге Экономический анализ: практические вычисления. Экономические расчеты онлайн . Там же имеется достаточно подробное обсуждение порядка использования этого инструмента для выявления неопределенностей в оценках финансовых коэффициентов. Материал большой и здесь ему не место.
Реализованные на данном сайте возможности позволяют произвольным образом структурировать результаты вычислений методами детерминированного факторного анализа в виде так называемых вычислительных блокнотов.
Вычислительный блокнот - это самая обыкновенная статья сайта, использующая специализированные расчётные функции и поля переменных данных.
Рассмотрим порядок создания вычислительных блокнотов на нескольких простых примерах. Авторизованные пользователи могут детально изучить то, как составлен этот документ, просмотрев его Код, выбрав ссылку Код в самом низу статьи.
Использование данного вычислительного блокнота для вычислений с собственными данными возможно только при наличии у Вас статуса "Писатель" или выше. Как получить статус Писатель?
Если нужный статус уже есть, то:
1. Откройте Код этого документа и скопируйте его в буфер обмена.
2. Создайте свой документ и скопируйте полученный Код в Содержание нового документа.
3. Внесите необходимые Вам правки в текст и исходные данные расчётов.
4. Сохраните документ и откройте его для просмотра. Вычисления будут выполнены и их результаты выведутся в документ.
Использование вычислительных блокнотов может быть полезно в тех случаях, когда необходимо выполнять массу однотипных вычислений с разными данными. В этом случае один раз создаём статью-шаблон. А потом только изменяем в нём исходные данные. Либо копируем его в другую статью, где подставляем нужные данные.
Чтобы никто Ваши данные не подсмотрел, при создании статьи задайте параметр: .d 00000. И тогда никто даже не догадается, что такая статья существует. Кстати, на сайте таких статей и сборников (книг) уже довольно много. И никто, кроме их создателя, о них ничего не знает. Кроме, разве что, администратора. Уж ему-то по определению всё доступно...

Модель Прибыль = Выручка * Рентабельность_продаж


Рассмотрим простейшую 2х-факторную мультипликативную модель Прибыль = Выручка * Рентабельность_продаж
Введём обозначения:
vr - Выручка
rp - Рентабельность продаж
Исходные данные примера:
План vr:780612980 rp:0.673350554586
Факт vr:2507009504 rp:0.625679177322
Для того, чтобы различать значения Плана и Факта введём следующие переменные:
~vrp=780612980
~rpp=0.673350554586
~vrf=2507009504
~rpf=0.625679177322
Рассчитаем общее изменение прибыли:
~x=vrf*rpf-vrp*rpp
И выведем его с помощью поля переменных данных:
Общее изменение прибыли = {*=x*}
Общее изменение прибыли = 1042957461.0011

Интегральный метод


Для вычислений по 2х факторным моделям интегральным методом используются функции:
axb(a0,b0,a1,b1) - модель a*b
adb(a0,b0,a1,b1) - модель a/b
Им передаются 4 параметра:
1. a0 - Плановое значение 1-го фактора
2. b0 - Плановое значение 2-го фактора
3. a1 - Фактическое значение 1-го фактора
4. b1 - Фактическое значение 2-го фактора
С учётом введенных обозначений исходных данных расчётная формула должна быть записана в следующем виде:
~res=axb(vrp,rpp,vrf,rpf)
Результатом выполнения функции axb является вектор с элементами a и b. Элемент с индексом a содержит рассчитанное значение вклада фактора a в общее изменение показателя, а элемент с индексом b - значение вклада фактора b. В наших обозначениях элемент с индексом a содержит значение вклада фактора vr, а элемент с индексом b - значение вклада фактора rp.
Для вывода результатов вводим следующий код:
Изменение за счёт фактора vr = {*=res('a')*}
Изменение за счёт фактора rp = {*=res('b')*}
Суммарное изменение = {*=res('a')+res('b')*}
На страницу будет выведено:
Изменение за счёт фактора vr = 1121320206.8693
Изменение за счёт фактора rp = -78362745.868187
Суммарное изменение = 1042957461.0011
Можно видеть, что суммарное изменение по 2м факторам совпадает с общим изменением прибыли.

Метод цепных подстановок


Для вычислений по 2х-факторной мультипликативной модели используется функция mcp2mm(a0,b0,a1,b1). Она должна получить 4 параметра.
1. a0 - плановое значение 1-го фактора;
2. b0 - плановое значение 2-го фактора;
3. a1 - фактическое значение 1-го фактора;
4. b1 - фактическое значение 2-го фактора.
Обозначения данных и переменных те же, что и в примере выполнения расчётов интегральным методом. Поэтому в нашем случае вызов функции mcp2mm() будет выглядеть так:
~res=mcp2mm(vrp,rpp,vrf,rpf)
Результатом выполнения функции mcp2mm является вектор с элементами a и b. Элемент с индексом a содержит рассчитанное значение вклада фактора a в общее изменение показателя, а элемент с индексом b - значение вклада фактора b. В наших обозначениях элемент с индексом a содержит значение вклада фактора vr, а элемент с индексом b - значение вклада фактора rp.
Вывод результатов осуществляется точно также, как и в случае использования интегрального метода - с помощью полей переменных данных.
Изменение за счёт фактора vr = {*=res('a')*}
Изменение за счёт фактора rp = {*=res('b')*}
Суммарное изменение = {*=res('a')+res('b')*}
Изменение за счёт фактора vr = 1162470056.8707
Изменение за счёт фактора rp = -119512595.86962
Суммарное изменение = 1042957461.0011
Можно видеть, что результаты расчётов, выполненных интегральным методом и методом цепных подстановок различаются.
Будут различаться и результаты расчётов при другом порядке факторов. Выполним функцию mcp2mm(), передав её параметры в другой последовательности:
~res=mcp2mm(rpp,vrp,rpf,vrf)
Получим другой результат:
Изменение за счёт фактора rp = -37212895.866755
Изменение за счёт фактора vr = 1080170356.8679
Суммарное изменение = 1042957461.0011
Метод цепных подстановок может быть использован для любого типа моделей и любой их размерности, в том числе для любых расчётных формул, связывающих факторы. Соответствующий пример будет рассмотрен позже.

Модель Прибыль = Оборотные_активы*Скорость_оборота*Рентабельность_продаж.


Рассмотрим теперь порядок оформления вычислений для 3х-факторных моделей на примере модели:
Прибыль = ОА * СО * РП (1)
ОА — оборотные активы;
СО — скорость оборота;
РП — рентабельность продаж.
Соотношение (1) является тождеством, поскольку:
Скорость_оборота = Выручка/Оборотные_активы (2)
Рентабельность_продаж = Прибыль/Выручка (3)
Если подставить (2) и (3) в (1) и сократить подобные члены, то можно в этом убедиться.
Введём следующие обозначения факторов:
1. oa — оборотные активы;
2. so — скорость оборота;
3. rp — рентабельность продаж по валовой прибыли.
Исходные данные:
План:
oa:615434881
so:780612980/615434881=1.26839248814
rp:525626183/780612980=0.673350554586
Факт:
oa:1602398617
so:2507009504/1602398617=1.56453548911
rp:1568583644/2507009504=0.625679177322
Также, как и для предыдущей модели, введём следующие обозначения переменных и присвоим им соответствующие значения:
~oap=615434881
~sop=1.26839248814
~rpp=0.673350554586
~oaf=1602398617
~sof=1.56453548911
~rpf=0.625679177322

Интегральный метод


Для вычислений по 3х факторным моделям интегральным методом используются функции:
axbxc(a0,b0,c0,a1,b1,c1) - модель a*b*c
adbpc(a0,b0,c0,a1,b1,c1) - модель a/(b+c)
Им передаются 6 параметров:
1. Плановое значение 1-го фактора (a0)
2. Плановое значение 2-го фактора (b0)
3. Плановое значение 3-го фактора (c0)
4. Фактическое значение 1-го фактора (a1)
5. Фактическое значение 2-го фактора (a2)
6. Фактическое значение 3-го фактора (c2)
С учётом введенных обозначений исходных данных расчётная формула должна быть записана в следующем виде:
~res=axbxc(oap,sop,rpp,oaf,sof,rpf)
Результатом выполнения функции axbxc является вектор с элементами a, b, c. Элемент с индексом a содержит рассчитанное значение вклада фактора a в общее изменение показателя, элемент с индексом b - значение вклада фактора b, элемент с индексом c - значение вклада фактора c. В наших обозначениях элемент с индексом a содержит значение вклада фактора oa, элемент с индексом b - значение вклада фактора so, элемент с индексом с - значение вклада фактора rp.
Для вывода результатов вводим следующий код:
Изменение за счёт фактора oa = {*=res('a')*}
Изменение за счёт фактора so = {*=res('b')*}
Изменение за счёт фактора rp = {*=res('c')*}
Суммарное изменение = {*=res('a')+res('b')+res('c')*}
Будет выведено:
Изменение за счёт фактора oa = 906859741.47721
Изменение за счёт фактора so = 212138214.60996
Изменение за счёт фактора rp = -76040495.087567
Суммарное изменение = 1042957460.9996

Метод цепных подстановок


Для вычислений по 3х-факторной мультипликативной модели используется функция mcp3mm(a0,b0,c0,a1,b1,c1). Она должна получить 6 параметров.
1. a0 - плановое значение 1-го фактора;
2. b0 - плановое значение 2-го фактора;
3. c0 - плановое значение 3-го фактора;
4. a1 - фактическое значение 1-го фактора;
5. b1 - фактическое значение 2-го фактора;
6. c1 - фактическое значение 3-го фактора.
Обозначения данных и переменных те же, что и в примере выполнения расчётов интегральным методом. Поэтому в нашем случае вызов функции mcp3mm() будет выглядеть так:
~res=mcp3mm(oap,sop,rpp,oaf,sof,rpf)
Результатом выполнения функции mcp3mm является вектор с элементами a, b, c. Элемент с индексом a содержит рассчитанное значение вклада фактора a в общее изменение показателя, элемент с индексом b - значение вклада фактора b, элемент с индексом c - значение вклада фактора c. В наших обозначениях элемент с индексом a содержит значение вклада фактора oa, элемент с индексом b - значение вклада фактора so, элемент с индексом с - значение вклада фактора rp.
Для вывода результатов ещё более простой, чем поля возможностью - вычисляемыми словами. Вычисляемое слов должно начинаться с символа = и далее без пробелов должно быть записано выражение. Если выражение может быть вычислено, то результат вычислений заменяет такое "слово". Если вычисление невозможно, то "слово" остаётся без изменений. Введём следующий код:
Изменение за счёт фактора oa = =res('a')
Изменение за счёт фактора so = =res('b')
Изменение за счёт фактора rp = =res('c')
Суммарное изменение = =res('a')+res('b')+res('c')
Изменение за счёт фактора oa = 842938867.01712
Изменение за счёт фактора so = 319531189.85198
Изменение за счёт фактора rp = -119512595.86949
Суммарное изменение = 1042957460.9996
Можно видеть, что результаты расчётов, выполненных интегральным методом и методом цепных подстановок различаются.
При использовании метода цепных подстановок будут различаться и результаты расчётов при другом порядке факторов.

Расчёты по произвольным моделям


Расчёты по произвольным моделям осуществляются путём задания расчётной формулы, связывающей факторы. В этом случае можно применять только метод цепных подстановок, поскольку формулы вычислений интегральным методом выведены только для ограниченного числа функциональных зависимостей.
Рассмотрим, например, смешанную мультипликативно-аддитивную факторную модель формирования прибыли от продаж, задействовав данные по выручке, рентабельности от продаж по валовой прибыли, коммерческие и управленческие расходы. Расчетная формула выглядит следующим образом:
ПрибыльПродаж = В * РП — КР — УР
Где:
В — выручка;
РП — рентабельность продаж;
КР — коммерческие расходы;
УР — управленческие расходы.
Введём следующие обозначения факторов:
vr — выручка от реализации;
rp — рентабельность продаж по валовой прибыли;
kr — коммерческие расходы;
ur — управленческие расходы.
Для вычислений по произвольным моделям методом цепных подстановок используется встроенная функция mcp(model,plan,fakt), где
model - число (номер модели) или формула;
plan - вектор плановых значений факторов;
fakt - вектор фактических значений факторов.
Если модель задана числом, то оно интерпретируется следующим образом:
0 - аддитивная модель;
1, 2 - мультипликативная модель;
3 - кратная модель y=a/b;
4 - кратная модель y=a/(b+c).
В качестве модели можно задать в одинарных или двойных кавычках произвольную расчётную формулу.
В рассматриваемом примере с учётом введенных обозначений расчётная формула будет выглядеть так: vr*rp-kr-ur
Для создания вектора плановых значений факторов можно ввести команду создания вектора с индексами vr, rp, kr, ur:
~p=massiv("vr:780612980 rp:0.673350554586 kr:309923956 ur:8147344")
Точно также создаётся и вектор фактических значений:
~f=massiv("vr:2507009504 rp:0.625679177322 kr:639679363 ur:33278171")
В этих обозначениях вызов функции mcp() будет выглядеть так:
~r=mcp('vr*rp-kr-ur',p,f)
Результатом выполнения функции mcp() будет вектор вклада факторов в общее изменение показателя. Индексы элементов этого вектора будут совпадать с именами факторов. Простейшим способом вывода полученного вектора является использование функции vms(имя_вектора). В нашем случае надо с первой позиции новой строки ввести: @vms(r)
Array
(
    [vr] => 1162470056.8707
    [rp] => -119512595.86962
    [kr] => -329755407
    [ur] => -25130827
)
Оцените публикацию по предложенной шкале
-5  -4  -3  -2  -1  0  +1  +2  +3  +4  +5

Статистика Код