2017-03-17 7 views
0

다음 5 개 주문과 각 주문의 3 개 제품 수량을 예측하고 싶습니다.예측 배수 제품 데이터

나는 초보자이며 rtimeseries을 사용하고 있으며 arima을 사용하는 예를 보았지만 한 가지만 측정하고 내 예와 같은 여러 제품에는 적용하지 않습니다.

아리마를 사용해야합니까? 정확히 무엇을해야합니까?

나쁜 영어로 죄송합니다. 미리 감사드립니다.

dateordrer,product1,product2,product3 
12/01/2012,2565,3254,635 
25/01/2012,2270,3254,670 
01/03/2012,2000,785,0 
05/05/2012,300,3254,750 
26/06/2012,3340,0,540 
30/06/2012,0,3254,0 
21/06/2012,3360,3356,830 
01/07/2012,2470,3456,884 
03/07/2012,3680,3554,944 
05/07/2012,2817,3854,0 
09/07/2012,4210,4254,32 
09/08/2012,0,3254,1108 
13/09/2012,4560,5210,952 
25/09/2012,4452,4256,1143 
31/09/2012,5090,5469,199 
25/11/2012,5100,5569,0 
10/12/2012,5440,5789,1323 
11/12/2012,5528,5426,1350 

답변

1

귀하의 질문은 매우 넓은, 그래서 그것은 단지 다양한 방식으로 답변을 얻을 수 있습니다. 또한, 질문은 R보다는 예측 이론과 관련이 있습니다. 나는 당신이 할 수있는 몇 가지 사전 처리가 보인다 당신이 시작하는 두 개의 포인터 ...

  1. 를 제공합니다 즉 : 당신의 시간 간격은 무엇인가? 기본 시간 단위는 무엇입니까? (주? 월?). 해당 시간 단위에 따라 데이터를 집계해야합니다. 이러한 종류의 작업을 수행하려면 tidyrlubridate 패키지를 사용할 수 있습니다. - data.frame (sale.month = 월 (dates.seq), sale.year = 년 (dates.seq))

    data.raw <- read_csv("data1.csv") %>% 
          mutate(date.re = as.POSIXct(dateordrer, format = "%d/%m/%Y")) 
    complete.dates <- range(data.raw$date.re) 
    dates.seq <- seq(complete.dates[1], complete.dates[2], by = "month") 
    

    시리즈 < : 여기가 조금 배치 한 후 데이터 세트의 예

    data.post <- data.raw %>% 
          mutate(sale.month = month(date.re), sale.year = year(date.re)) %>% 
          select(product1:product3, sale.month, sale.year) %>% 
          group_by(sale.month, sale.year) %>% 
          summarize_all(funs(sum(.))) %>% 
          right_join(series) %>% 
          replace_na(list(product1 = 0, product2 = 0, product3 = 0)) 
    

그 결과는 다음과 같습니다

 sale.month sale.year product1 product2 product3 
     1   2012  4835  6508  1305 
     2   2012  0   0   0 
     3   2012  2000  785   0 
     4   2012  0   0   0 
     etc... 

당신이 (원래) 데이터 없었다 개월 2와 4가보기 때문에 그들이 appea r은 0입니다. 전처리는 가볍게 수행하지 않아야하며, 기본 단위로 월을 사용했으나 목표에 맞지 않을 수도 있습니다. 계속 진행하고 다른 집계가 더 나은 결과를 제공하는지 확인하려고 시도 할 수도 있습니다.

  1. 사전 처리 후에 만 ​​예측으로 전환 할 수 있습니다. 세 제품이 독립적 인 경우 독립적으로 예측할 수 있습니다 (예 : Arima/Holt-Winters/다른 모델 *을 세 번 사용). 그러나 서로 연관되어있을 수있는 세 가지 제품이 있다는 사실은 계층적인 시계열 (패키지 hts)으로 안내합니다. 이 패키지의 hts() 함수는 다양한 제품간에 통계적으로 관련이있을 때 예측 모델에 가장 적합 할 수 있습니다. 예를 들어 특정 제품을 다른 제품 (보완 제품)과 함께 구입하거나 재고가 없거나 다른 제품 (대체 제품)으로 연결되는 경우. 여기까지 자체에 포함 된 이러한 광범위한 주제에 대한 것을 때문에

, 당신을 위해 다음 최고의 이동은 다음과 같은 온라인 도서를 확인하는 것입니다 : Hyndman 및 Athanasopoulos으로

Forecasting: principles and practice

. 나는 시계열로 시작할 때 그것을 읽었다. 그것은 아주 좋은 책입니다.

9.4 Forecasting hierarchical or grouped time series

당신은 또한 (9.4로 이동하기 전에) 그 책의 7 장을 읽을 수 있는지 확인하십시오 : 특히, 다수의 시계열을 위해 당신은 장을 포함해야한다.

+0

감사합니다. 정말로 dates.seq <- seq (complete.dates [1], complete.dates [2], by = "month")를 실행하려고하면 정말 도움이됩니다. 오류를 해결하는 방법을 찾았지만 아무것도 발견하지 못했습니다 : seq.int의 오류 (r1 $ mon, 12 * (to0 $ year-r1 $ year) + to0 $ mon, by) : 'from'은 NA, NaN 무한한 – user3010971

+0

이전 예제에서 내 코드가 오류없이 작동하기 때문에이 오류에 대한 재현 가능한 예제가 필요합니다. 그 모습에서'seq' 명령에 사용 된 날짜 형식에 문제가있을 것입니다. –

+0

대단히 감사합니다. 문제가 해결 됐어. 나는 결코 그것을 실제로 바꿀 수 없었던 날짜 31/09/2012를 가졌다. – user3010971