Простое скользящая среднее
Метод скользящих средних можно считать развитием метода прогнозирования по среднему. Только при скользящих средних используются для осреднения не все значения, а к-последних. Как только новое наблюдение становится доступным, оно включается в осреднение, а наиболее старое исключается. Уравнение для скользящего среднего имеет вид
$$A_{t}=\frac{1}{k}\sum_{t-k+1}^{t}x_{t}$$
Где $x_{t}$ - наблюдения, $A_{t}$ - скользящая средняя во времени t.
Где $x_{t}$ - наблюдения, $A_{t}$ - скользящая средняя во времени t.
Скользящая средняя использует n последовательных периодов времени. Для сезонных временных рядов порядок скользящей средней определяется частотой ряда, Для недельного ряда порядок равен 7, годового - 12, квартального - 4. При таком подходе устраняется влияние сезонности и случайной составляющей, что позволяет выделить из временного ряда тенденцию.
Рассмотрим, как можно использовать метод скользящей средней для анализа работы розничного магазина одежды. Для этого возьмем датафрейм с месячными показателями продаж розничного магазина c 01.2016 по 12.2019.
head(df_month)
data rev visit conv lch price rv
<date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 2016-01-01 60440. 7462. 0.0718 3.23 35.0 8.10
2 2016-02-01 45041. 6047. 0.0699 3.11 34.3 7.45
3 2016-03-01 48758. 6812. 0.0623 3.10 37.0 7.16
4 2016-04-01 50207. 6497. 0.0786 2.79 35.3 7.73
5 2016-05-01 60750. 6913. 0.0863 3.53 28.8 8.79
6 2016-06-01 51709. 6683. 0.0868 3.58 24.9 7.74
В качестве показателей выводится rev - выручка, visit - посетители, conv-конверсия,lch - длина чека, price - цена продажи, rv - выручка на посетителя, интегрированный показатель, равный произведению конверсии, длины чека и средней цены. Сделаем из него объект временного ряда и выведем график показателей
ts_month <- ts(data = df_month[,c(2:7)],
start = c(2016, 1),
frequency = 12)
plot.ts(ts_month)
Для выделения тенденции применим скользящее среднее порядка 12 и выведем графики
ts_month_ma <- ma(ts_month,12,centre = FALSE)
Чтобы при выводе графиков вывелись названия показателя
ts_month_ma <- ts(data=ts_month_ma,
start = c(2016, 1),
frequency = 12,names=c('rev','visit','conv','lch','price','rv'))
plot.ts(ts_month_ma)
Как видно по графикам, скользящее среднее выделяет тенденцию по каждому показателю, необходимую для анализа происходящих процессов. Это как панель управления, сигнализирующая в каком состоянии находится и куда движется показатель контролируемого процесса.
Повторим анализ для дневных данных, возьмем те же параметры, только по дням за один год
head(df_day)
data visit rev conv lch price rv
<date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 2018-01-01 97.5 898. 0.0659 3.87 36.1 9.22
2 2018-01-02 460. 4658. 0.0759 3.80 35.1 10.1
3 2018-01-03 485. 5254. 0.0776 3.93 35.5 10.8
4 2018-01-04 471. 5070. 0.0758 3.97 35.9 10.8
5 2018-01-05 442. 5109. 0.0822 3.99 35.3 11.6
6 2018-01-06 402. 4802. 0.0841 4.10 34.6 12.0
ts_day <- ts(data = df_day[,c(2:7)],
start = c(2018, 1),
frequency = 365)
plot.ts(ts_day)
Для выделения тенденции применим скользящее среднее порядка 7 и выведем графики
ts_day_ma <- ma(ts_day,7,centre = FALSE)
ts_day_ma <- ts(data=ts_day_ma,
start = c(2018, 1),
frequency = 365,names=c('rev','visit','conv','lch','price','rv'))
plot.ts(ts_day_ma)
Рассмотрим, как можно использовать метод скользящей средней для анализа работы розничного магазина одежды. Для этого возьмем датафрейм с месячными показателями продаж розничного магазина c 01.2016 по 12.2019.
head(df_month)
data rev visit conv lch price rv
<date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 2016-01-01 60440. 7462. 0.0718 3.23 35.0 8.10
2 2016-02-01 45041. 6047. 0.0699 3.11 34.3 7.45
3 2016-03-01 48758. 6812. 0.0623 3.10 37.0 7.16
4 2016-04-01 50207. 6497. 0.0786 2.79 35.3 7.73
5 2016-05-01 60750. 6913. 0.0863 3.53 28.8 8.79
6 2016-06-01 51709. 6683. 0.0868 3.58 24.9 7.74
В качестве показателей выводится rev - выручка, visit - посетители, conv-конверсия,lch - длина чека, price - цена продажи, rv - выручка на посетителя, интегрированный показатель, равный произведению конверсии, длины чека и средней цены. Сделаем из него объект временного ряда и выведем график показателей
ts_month <- ts(data = df_month[,c(2:7)],
start = c(2016, 1),
frequency = 12)
plot.ts(ts_month)
ts_month_ma <- ma(ts_month,12,centre = FALSE)
Чтобы при выводе графиков вывелись названия показателя
ts_month_ma <- ts(data=ts_month_ma,
start = c(2016, 1),
frequency = 12,names=c('rev','visit','conv','lch','price','rv'))
Как видно по графикам, скользящее среднее выделяет тенденцию по каждому показателю, необходимую для анализа происходящих процессов. Это как панель управления, сигнализирующая в каком состоянии находится и куда движется показатель контролируемого процесса.
Повторим анализ для дневных данных, возьмем те же параметры, только по дням за один год
head(df_day)
data visit rev conv lch price rv
<date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 2018-01-01 97.5 898. 0.0659 3.87 36.1 9.22
2 2018-01-02 460. 4658. 0.0759 3.80 35.1 10.1
3 2018-01-03 485. 5254. 0.0776 3.93 35.5 10.8
4 2018-01-04 471. 5070. 0.0758 3.97 35.9 10.8
5 2018-01-05 442. 5109. 0.0822 3.99 35.3 11.6
6 2018-01-06 402. 4802. 0.0841 4.10 34.6 12.0
ts_day <- ts(data = df_day[,c(2:7)],
start = c(2018, 1),
frequency = 365)
plot.ts(ts_day)
ts_day_ma <- ma(ts_day,7,centre = FALSE)
ts_day_ma <- ts(data=ts_day_ma,
start = c(2018, 1),
frequency = 365,names=c('rev','visit','conv','lch','price','rv'))
plot.ts(ts_day_ma)
Комментариев нет:
Отправить комментарий