Phát triển mô hình chuỗi thời gian thích hợp để dự đoán doanh số dựa trên hồ sơ tháng trước


12

Tôi đã điều hành một doanh nghiệp trực tuyến trong hai năm liên tiếp, vì vậy tôi có dữ liệu bán hàng hàng tháng của mình trong khoảng hai năm. Công việc kinh doanh của tôi hàng tháng chắc chắn bị ảnh hưởng bởi sự thay đổi theo mùa (hoạt động tốt hơn vào Giáng sinh, v.v.) và có lẽ một số yếu tố khác mà tôi không biết.

Để dự đoán doanh số trong tương lai tốt hơn và để đánh giá hiệu quả của chiến dịch bán hàng của tôi hoặc tác động của các đối thủ cạnh tranh mới, tôi muốn có thể phát triển mô hình chuỗi thời gian phù hợp để ngoại suy dữ liệu bán hàng hiện tại của mình trong tương lai. Điều này là để khi tôi so sánh kết quả dự đoán của mình với kết quả thực tế, tôi có thể kiểm tra định lượng hiệu quả của chiến dịch bán hàng của mình hoặc tác động của các đối thủ cạnh tranh.

Câu hỏi của tôi là, cho rằng tôi có dữ liệu bán hàng trong 2 năm, liệu tôi có thể xây dựng mô hình chuỗi thời gian dự đoán cho việc này không?

Lưu ý: Tôi quan tâm nhiều hơn đến các khái niệm và lý thuyết nền, hơn là các công cụ hộp đen. Nói về các công cụ, tôi có mathicala, matlab, R, Excel, Google Bảng tính .... bạn đặt tên cho nó.


Bạn sử dụng phần mềm nào?
Dimitriy V. Masterov

1
@ DimitriyV.Masterov, tôi có Matlab / R / Excel / Mathicala ... bạn đặt tên cho nó. Thật ra tôi quan tâm đến các khái niệm hơn là tự viết mã thực tế
Graviton

Câu trả lời:


14

Vâng, có nhiều cách để làm điều này. Mọi người kiếm sống bằng cách làm những thứ như thế này ;-)

Bạn đang tìm kiếm dự báo nhân quả . Nhìn vào sách giáo khoa trực tuyến miễn phí này về dự báo để tìm hiểu về phương pháp dự báo.

Bạn có hai vấn đề chính trong tay mà bạn cần phải giải quyết: tính thời vụ (hay nói chung hơn là cấu trúc chuỗi thời gian, có thể là tự phát) một mặt và mặt khác là các tác động như quảng cáo. Chương 8 trong sách giáo khoa ở trên đề cập đến các chuỗi thời gian trong bối cảnh ARIMA, trong khi Chương 5 đề cập đến các hiệu ứng nhân quả.

Thật hạnh phúc, có thể giải quyết cả hai vấn đề bằng cách tính toán cái gọi là ARIMAX (chữ X là viết tắt của mô hình "hiệu ứng bên ngoài", tức là ARIMA với các hiệu ứng bên ngoài) hoặc hồi quy với lỗi ARIMA. Xem bài đăng trên blog của Rob Hyndman về "Mô hình ARIMAX lầy lội" để biết sự khác biệt. Các auto.arima()chức năng trong forecastgói R sẽ phù hợp với một hồi quy với các lỗi ARIMA. Hãy xem qua một ví dụ, trong đó tôi lấy một bộ dữ liệu tiêu chuẩn với xu hướng và tính thời vụ mạnh mẽ và thêm "chương trình khuyến mãi".

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

Các chấm đỏ là chương trình khuyến mãi. Theo mặc định, bạn sẽ nhận được các khoảng dự đoán được vẽ bằng màu xám. Bạn có thể cung cấp nhiều biến hồi quy vào mô hình của mình thông qua xregtham số, điều bạn nên làm nếu bạn có các loại quảng cáo khác nhau với các hiệu ứng khác nhau. Thử nghiệm một chút.

Tôi sẽ khuyên bạn nên xem xét dữ liệu chi tiết hơn so với hàng tháng nếu bạn có chúng, ví dụ: hàng tuần. Đặc biệt là tất nhiên nếu chương trình khuyến mãi của bạn không chạy trong cả tháng. Bạn có thể làm điều này một cách riêng biệt theo sản phẩm, đặc biệt là nếu bạn quảng bá các sản phẩm cụ thể hoặc trên toàn bộ danh mục.

Một giải pháp thay thế sẽ là, nếu bạn quan tâm đến các khái niệm hơn mã, để xem xét Làm mịn theo cấp số nhân và thay đổi nó cho phù hợp với nhu cầu của bạn, bằng cách thêm các thành phần quảng cáo vào các thành phần ba cấp độ, mùa và xu hướng tiêu chuẩn. Bạn có thể tự mình làm nhiều hơn với Làm mịn theo cấp số nhân so với việc cố gắng ước tính tối đa một mô hình ARIMAX, nhưng Smoothing có thể biến thành một cơn ác mộng của sổ sách kế toán nếu bạn có nhiều loại khuyến mãi.


1
Các mô hình ARIMA với đồng biến được thảo luận trong Phần 9 của cuốn sách: www.otexts.org/fpp/9/1
Rob Hyndman

Cảm ơn, Rob. Tôi thực sự cần phải đi qua cuốn sách thường xuyên hơn ...
Stephan Kolassa

Cảm ơn @StephanKolassa! một câu hỏi phụ, tôi có thể lấy cuốn sách bạn đề cập trong bài viết trên, ở định dạng mobi hoặc epub không?
Graviton

1
@Graviton: câu hỏi hay. Tốt nhất để hỏi tác giả. Một trong số đó là Rob Hyndman, người đã bình luận ở trên.
Stephan Kolassa

1
@Graviton. Làm việc trên đó. Xem robjhyndman.com/hyndsight/fpp-amazon
Rob Hyndman

4

Đầu tiên, bạn không có nhiều dữ liệu để chơi, chỉ có 24 quan sát. Trong trường hợp của bạn, điều đó có nghĩa là bạn hầu như không có một vài tham số để ước tính một cách đáng tin cậy. cách hệ thống nhất trong dự báo là đưa ra quy trình tạo dữ liệu (DGP). bạn đưa ra một giả định về quy trình thực sự cho doanh số của bạn, sau đó thử ước tính các tham số của nó.

hãy xem xét một mô hình chuỗi thời gian thuần túy với AR (1) DGP: , tức là doanh số của bạn trong tháng này là trung bình trọng số của doanh số tháng trước và không đổi. bạn đã có 3 tham số (hai hệ số và phương sai lỗi), có nghĩa là khoảng 8 quan sát cho mỗi tham số - rõ ràng không nhiều.xt= =φxt-1+c

vì doanh số của bạn là theo mùa, chúng tôi phải làm gì đó với nó. một cách là thêm tính thời vụ nhân : trong ký hiệu toán tử lag hoặc ở dạng mở rộng: . điều này thêm một tham số để ước tính, vì vậy bạn đi xuống 6 quan sát cho mỗi tham số - một sự kéo dài thực sự.x t = c + ϕ 1 x t - 1 + ϕ 12 x t - 12 - ϕ 1 ϕ 12 x r - 13(1-L)(1-L12)xt= =cxt= =c+φ1xt-1+φ12xt-12-φ1φ12xr-13

trong Matlab mô hình này được chỉ định là arima('ARLags',1,'SARLags',12)

điều này giả định rằng doanh số của bạn ổn định, tức là không tăng trưởng.

nếu bạn nghĩ rằng doanh số của bạn đang tăng lên, thì bạn có hai lựa chọn: đi bộ ngẫu nhiên (RW) và xu hướng thời gian.

trong Matlab RW được chỉ định với arima('D',1,'SARLags',12)

rõ ràng, đây chỉ là những ví dụ về DGP khác nhau. bất cứ điều gì bạn làm hãy ghi nhớ số lượng tham số để ước tính. với 24 quan sát, mô hình của bạn phải rất đơn giản, tối đa 4 tham số (bao gồm cả phương sai).


0

Dưới đây là những gì bạn nên làm Tạo hai biểu đồ:

  • Bán hàng so với thời gian trong toàn bộ 24 tháng
  • Bán hàng so với thời gian với năm thứ hai âm mưu trên đầu năm đầu tiên

Nhìn họ kìa. Chú thích ngày của bất kỳ chương trình khuyến mãi đặc biệt, hoặc hoạt động cạnh tranh đã biết. "Tháng 12" thường khá rõ ràng, nhưng hãy thêm một ghi chú nếu giúp gọi nó ra.

Đi trước và phù hợp với một mô hình chuỗi thời gian - bất kỳ mô hình nào (có hàng trăm). Mô hình có thể cung cấp cho bạn một dự báo tốt hơn một chút cho giai đoạn tiếp theo (t + 1) so với phán đoán của bạn. Ít nhất, nó sẽ thách thức phán đoán của bạn. Ngoài giai đoạn tiếp theo (t + n, n> 1), bất kỳ mô hình chuỗi thời gian nào cũng tào lao. † Vì vậy, hãy quên việc đánh giá định lượng hiệu quả của các chiến dịch bán hàng hoặc hiệu ứng của đối thủ cạnh tranh. Nếu bạn so sánh doanh số thực tế với dự đoán, bạn sẽ thấy dự đoán là tào lao. Dự đoán tương lai là khó khăn, và không có phương pháp nào thay đổi thực tế cơ bản đó.

Bạn sẽ thấy hai biểu đồ của bạn hữu ích hơn. Nghiên cứu chúng trong một thời gian, sau đó dành phần còn lại của bạn để đưa ra ý tưởng về cách tăng doanh số - đây sẽ là cách sử dụng có lợi hơn rất nhiều thời gian của bạn để cố gắng phù hợp với mô hình chuỗi thời gian.

Bạn có nhiều hy vọng hơn nếu bạn có thể tạo một mô hình dự đoán dựa trên các chỉ số hàng đầu - tức là doanh số bán nhà ở cho tháng trước có thể hữu ích để dự đoán doanh số của các sắc thái cửa sổ trong tháng hiện tại.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.