예, 이렇게하는 방법이 있습니다. 사람들 은 이런 식으로 일을하고 있습니다 ;-)
인과 예측을 찾고 있습니다. 예측 방법론에 대해 배우려면 예측 에 대한 이 무료 온라인 교과서를 보십시오 .
한편으로는 계절성 (또는 일반적으로 자동 회귀와 관련된 시계열 구조)과 다른 한편으로는 판촉과 같은 인과 적 영향을 다루어야하는 두 가지 주요 문제가 있습니다. 위의 교과서 8 장은 ARIMA의 맥락에서 시계열 자료를 다루고 5 장은 인과 관계를 다루고 있습니다.
행복하게도, 소위 ARIMAX (X는 "외부 효과를 나타내는 ARIMA") 또는 ARIMA 오류가있는 회귀를 계산하여 두 가지 문제를 모두 해결할 수 있습니다. 차이점에 대해서는 Rob Hyndman의 "ARIMAX 모델 머들"에 대한 블로그 게시물을 참조하십시오 . R 패키지 의 auto.arima()
함수는 forecast
ARIMA 오류와 함께 회귀에 적합합니다. 강력한 추세와 계절성을 가진 표준 데이터 집합을 사용하여 "프로모션"을 추가하는 예를 살펴 보겠습니다.
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")
빨간 점은 프로모션입니다. 기본적으로 예측 간격은 회색으로 표시됩니다. xreg
매개 변수를 통해 모델에 여러 회귀자를 공급할 수 있으며 , 효과 가 다른 여러 유형 의 승격 이있는 경우 수행해야합니다 . 조금 실험 해보십시오.
예를 들어 매주와 같이 매월보다 더 세분화 된 데이터를 보는 것이 좋습니다. 특히 프로모션이 한 달 동안 실행되지 않는 경우 특히 그렇습니다. 제품별로, 특히 특정 제품을 홍보하는 경우 또는 전체 카테고리에서이를 별도로 수행 할 수 있습니다.
코드보다 개념에 더 관심이있는 경우 표준 3 수준, 계절 및 추세 구성 요소에 프로모션 구성 요소를 추가하여 지수 평활 을보고 필요에 맞게 변경 하는 대안이 있습니다 . ARIMAX 모델의 최대 가능성을 추정하는 것보다 Exponential Smoothing을 사용하여 더 많은 작업을 수행 할 수 있지만 프로모션 유형이 여러 개인 경우 Smoothing이 약간의 부기 악몽으로 변할 수 있습니다.