2017-03-17 8 views
0

次の5件の注文と、3件の商品の数量を各注文で予測したいと考えています。複数の商品データの予測

私はrtimeseriesを使用して初心者と私はarimaを用いた例を見たが、彼らは私の例のように一つだけを測定していない複数の製品を適用しています。

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.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.frame(sale.month =月(dates.seq)、sale.year =年(dates.seq))

    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... 

は、彼らがappeaので、(もともと)ヶ月2及び4のためにあなたは何のデータがなかったことを参照してください。 rを0とする。 前処理は軽く行うべきではなく、私は月を基本単位として使用しましたが、それはあなたの目標に真実でないかもしれません。継続した後にこれを修正しても、異なる集約がより良い結果をもたらすかどうかを調べることさえできます。

  1. 前処理の後でのみ、予測に切り替えることができます。 3つの製品が独立している場合は、独立して予測することができます(たとえば、Arima/Holt-Winters /他のモデルを3回使用します)。しかし、相互に関連している可能性のある3つの製品があるという事実は、階層的な時系列(パッケージhts)に導きます。このパッケージ内のhts()ファンクションは、さまざまな製品間に統計的な関係がある場合に、予測モデルに最も適しています。たとえば、特定の製品が別の製品(補完製品)で購入された場合、または在庫切れで別の製品(代替製品)につながる場合。これははるかに自己完結型など、幅広い話題についてであることからであるので

、あなたのための次善の動きは以下のオンラインブックをチェックアウトすることです:HyndmanとAthanasopoulosことで

Forecasting: principles and practice

。私は時系列で始まったときにそれを読んだ。それは非常に良い本です。あなたも(9.4に移行する前に)その本の第7章をお読みください

9.4 Forecasting hierarchical or grouped time series

:具体的には、複数の時系列のためにあなたは、章をカバーする必要があります。

+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

関連する問題