지난 달 레코드를 기반으로 판매를 예측하기위한 적절한 시계열 모델 개발


12

지금 2 년 동안 온라인 비즈니스를 운영해 왔으므로 약 2 년 동안 월별 판매 데이터를 보유하고 있습니다. 매월 저의 사업은 계절 변동 (크리스마스 등에서 더 나은 실적)과 내가 모르는 다른 요인에 의해 영향을받습니다.

향후 판매를 더 잘 예측하고 내 판매 캠페인의 효과 또는 새로운 경쟁 업체의 영향을 측정하기 위해 현재 판매 데이터를 미래에 외삽 할 적절한 시계열 모델을 개발할 수 있기를 원합니다. 예측 결과와 실제 결과를 비교할 때 판매 캠페인의 효과 또는 경쟁 업체의 영향을 정량적으로 테스트 할 수 있습니다.

내 질문은 2 년 분량의 판매 데이터가 있다고 가정하면 어쨌든 예측 시계열 모델을 공식화 할 수 있습니까?

참고 : 나는 블랙 박스 도구보다는 배경 개념과 이론에 더 관심이 있습니다. 도구에 관해서는 수학, matlab, R, Excel, Google Spreadsheet 등이 있습니다.


어떤 소프트웨어를 사용하십니까?
Dimitriy V. Masterov

1
@ DimitriyV.Masterov, Matlab / R / Excel / Mathematica가 있습니다 ... 이름을 지정하십시오. 실제로 실제 코드 자체를 작성하는 대신 개념에 더 관심이 있습니다
Graviton

답변:


14

예, 이렇게하는 방법이 있습니다. 사람들 은 이런 식으로 일을하고 있습니다 ;-)

인과 예측을 찾고 있습니다. 예측 방법론에 대해 배우려면 예측 에 대한 이 무료 온라인 교과서를 보십시오 .

한편으로는 계절성 (또는 일반적으로 자동 회귀와 관련된 시계열 구조)과 다른 한편으로는 판촉과 같은 인과 적 영향을 다루어야하는 두 가지 주요 문제가 있습니다. 위의 교과서 8 장은 ARIMA의 맥락에서 시계열 자료를 다루고 5 장은 인과 관계를 다루고 있습니다.

행복하게도, 소위 ARIMAX (X는 "외부 효과를 나타내는 ARIMA") 또는 ARIMA 오류가있는 회귀를 계산하여 두 가지 문제를 모두 해결할 수 있습니다. 차이점에 대해서는 Rob Hyndman의 "ARIMAX 모델 머들"에 대한 블로그 게시물을 참조하십시오 . R 패키지 의 auto.arima()함수는 forecastARIMA 오류와 함께 회귀에 적합합니다. 강력한 추세와 계절성을 가진 표준 데이터 집합을 사용하여 "프로모션"을 추가하는 예를 살펴 보겠습니다.

library(forecast)
AirPassengers # a built-in dataset
#      Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
# 1949 112 118 132 129 121 135 148 148 136 119 104 118
# 1950 115 126 141 135 125 149 170 170 158 133 114 140
# 1951 145 150 178 163 172 178 199 199 184 162 146 166
# 1952 171 180 193 181 183 218 230 242 209 191 172 194
# 1953 196 196 236 235 229 243 264 272 237 211 180 201
# 1954 204 188 235 227 234 264 302 293 259 229 203 229
# 1955 242 233 267 269 270 315 364 347 312 274 237 278
# 1956 284 277 317 313 318 374 413 405 355 306 271 306
# 1957 315 301 356 348 355 422 465 467 404 347 305 336
# 1958 340 318 362 348 363 435 491 505 404 359 310 337
# 1959 360 342 406 396 420 472 548 559 463 407 362 405
# 1960 417 391 419 461 472 535 622 606 508 461 390 432

set.seed(1) # for reproducibility
promos <- rep(0,length(AirPassengers))
promos[sample(seq_along(AirPassengers),10)] <- 1
promos.future <- c(0,1,0,0,1,0,0,1,0,0,1,0)
AP.with.promos <- AirPassengers
AP.with.promos[promos==1] <- AP.with.promos[promos==1]+120

model <- auto.arima(AP.with.promos,xreg=promos)
summary(model) # examine the model - you'll see the estimated promo coefficient
# Series: AP.with.promos 
# ARIMA(0,1,1)(0,1,0)[12]                    

# Coefficients:
#           ma1    promos
#       -0.3099  122.2599
# s.e.   0.0947    2.2999

# sigma^2 estimated as 151.2:  log likelihood=-457.4
# AIC=920.79   AICc=920.98   BIC=929.42

# Training set error measures:
#                     ME     RMSE     MAE        MPE     MAPE      MASE         ACF1
# Training set 0.2682805 11.12974 8.24397 0.06139784 2.867274 0.1860814 0.0008326436

fcast <- forecast(model,xreg=promos.future,h=length(promos.future))
fcast
#          Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
# Jan 1961       447.1516 431.3951 462.9081 423.0542 471.2490
# Feb 1961       543.4115 524.2670 562.5559 514.1326 572.6904
# Mar 1961       449.1516 427.1345 471.1687 415.4793 482.8239
# Apr 1961       491.1516 466.5956 515.7076 453.5964 528.7068
# May 1961       624.4115 597.5556 651.2674 583.3389 665.4841
# Jun 1961       565.1516 536.1777 594.1255 520.8399 609.4633
# Jul 1961       652.1516 621.2044 683.0988 604.8220 699.4812
# Aug 1961       758.4115 725.6095 791.2135 708.2452 808.5778
# Sep 1961       538.1516 503.5942 572.7090 485.3006 591.0026
# Oct 1961       491.1516 454.9237 527.3795 435.7459 546.5573
# Nov 1961       542.4115 504.5869 580.2361 484.5637 600.2593
# Dec 1961       462.1516 422.7950 501.5082 401.9608 522.3424
promos.ts <- ts(c(AP.with.promos,fcast$mean),
                  start=start(AirPassengers),frequency=frequency(AirPassengers))
promos.ts[c(promos,promos.future)==0] <- NA

plot(fcast)
points(promos.ts,pch=19,col="red")

ARIMAX

빨간 점은 프로모션입니다. 기본적으로 예측 간격은 회색으로 표시됩니다. xreg매개 변수를 통해 모델에 여러 회귀자를 공급할 수 있으며 , 효과 가 다른 여러 유형 의 승격 이있는 경우 수행해야합니다 . 조금 실험 해보십시오.

예를 들어 매주와 같이 매월보다 더 세분화 된 데이터를 보는 것이 좋습니다. 특히 프로모션이 한 달 동안 실행되지 않는 경우 특히 그렇습니다. 제품별로, 특히 특정 제품을 홍보하는 경우 또는 전체 카테고리에서이를 별도로 수행 할 수 있습니다.

코드보다 개념에 더 관심이있는 경우 표준 3 수준, 계절 및 추세 구성 요소에 프로모션 구성 요소를 추가하여 지수 평활 을보고 필요에 맞게 변경 하는 대안이 있습니다 . ARIMAX 모델의 최대 가능성을 추정하는 것보다 Exponential Smoothing을 사용하여 더 많은 작업을 수행 할 수 있지만 프로모션 유형이 여러 개인 경우 Smoothing이 약간의 부기 악몽으로 변할 수 있습니다.


1
공변량을 갖는 ARIMA 모델은이 책의 섹션 9에서 설명합니다. www.otexts.org/fpp/9/1
Rob Hyndman

고마워 Rob. 나는 정말로 책을 더 자주지나 가야한다 ...
Stephan Kolassa

감사합니다 @StephanKolassa! 부수적 인 질문, 위의 게시물에서 mobi 또는 epub 형식으로 언급 한 책을 얻을 수 있습니까?
Graviton

1
@ Graviton : 좋은 질문입니다. 저자에게 물어 보는 것이 가장 좋습니다. 그들 중 하나는 위에서 언급 한 Rob Hyndman입니다.
Stephan Kolassa

1
@ 그 라비 톤. 작업 중입니다. robjhyndman.com/hyndsight/fpp-amazon
Rob Hyndman

4

먼저, 당신은 24 개의 관측치 만 가지고 놀만한 데이터가 없습니다. 귀하의 경우 신뢰할 수있는 추정치가 거의 없다는 것을 의미합니다. 예측에서 가장 체계적인 방법은 데이터 생성 프로세스 (DGP)를 만드는 것입니다. 판매에 대한 실제 프로세스가 무엇인지 가정 한 다음 해당 매개 변수를 추정하십시오.

AR (1) DGP : 하는 순수한 시계열 모델을 고려 하십시오. 즉, 이번 달 매출은 지난 달 매출의 평균에 플러스와 상수를 더한 가중치입니다. 이미 3 개의 매개 변수 (두 개의 계수와 오차 분산)가 있는데, 이는 매개 변수 당 약 8 개의 관측 값을 의미합니다.xt=ϕxt1+c

귀하의 판매는 계절적이므로, 우리는 그것에 대해 무언가를해야합니다. 한 가지 방법은 곱하기 계절성 을 추가하는 것입니다 . 지연 연산자 표기법 또는 확장 형식 : . 이렇게하면 추정 할 매개 변수가 하나 더 추가되므로 매개 변수 당 6 개의 관측치 (실제 확장)로 내려갑니다.x t = c + ϕ 1 x t 1 + ϕ 12 x t 12ϕ 1 ϕ 12 x r 13(1L)(1L12)xt=cxt=c+ϕ1xt1+ϕ12xt12ϕ1ϕ12xr13

Matlab에서이 모델은 arima('ARLags',1,'SARLags',12)

이것은 판매가 안정적이라고 가정합니다. 즉 일반적으로 성장하지 않습니다.

매출이 증가하고 있다고 생각되면 랜덤 워크 (RW)와 시간 추세의 두 가지 옵션이 있습니다.

Matlab RW에서 arima('D',1,'SARLags',12)

분명히, 이들은 다른 DGP의 예일뿐입니다. 추정 할 매개 변수의 수를 명심하십시오. 24 개의 관측치로 모형은 매우 단순해야하며 최대 4 개의 모수 (분산 포함) 여야합니다.


0

다음은 두 가지 그래프를 만드는 것입니다.

  • 24 개월 동안의 판매 대 시간
  • 첫 해에 두 번째 해가 표시된 판매 대 시간

저들을 봐. 특별 프로모션 또는 알려진 경쟁 활동의 날짜에 주석을 답니다. "12 월"은 일반적으로 매우 명백하지만, 도움이 될 경우 메모를 추가하십시오.

계속해서 시계열 모델에 맞추십시오-모든 모델 (수백 가지)이 있습니다. 모델은 판단보다 다음 기간 (t + 1)에 대해 약간 더 나은 예측을 제공 할 수 있습니다. 최소한, 그것은 당신의 판단에 도전 할 것입니다. 다음 기간 (t + n, n> 1)을 넘어 서면 어떤 시계열 모델도 허물어집니다. † 따라서 판매 캠페인의 효과 또는 경쟁사의 영향을 정량적으로 평가하는 것을 잊지 마십시오. 실제 판매량과 예측을 비교하면 예측이 불량하다는 것을 알 수 있습니다. 미래를 예측하는 것은 어렵고 방법이 기본 사실을 바꾸지는 않습니다.

두 그래프가 더 유용하다는 것을 알게 될 것입니다. 잠시 동안 연구를 한 다음 나머지 시간을 판매 증가 방법에 대한 아이디어로 생각해보십시오. 이것은 시계열 모델을 맞추려는 시간을 훨씬 더 수익성있게 사용할 것입니다.

선행 지표를 기반으로 예측 모델을 만들 수 있다면 더 많은 희망을 갖게됩니다. 즉, 이전 달의 주택 판매가 이번 달의 창 음영 판매를 예측하는 데 유용 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.