欠損値や不規則な時系列でR予測パッケージを使用する


16

R forecastパッケージ、zooおよび不規則な時系列や欠損値の補間などのパッケージに感銘を受けました。

私のアプリケーションはコールセンターのトラフィック予測の領域にあるため、週末のデータは常に(ほぼ)欠落していzooます。これはでうまく処理できます。また、いくつかの離散ポイントが欠落している可能性がありますNA。そのためにRを使用しています。

事ある次のような予測パッケージ、すべての素敵な魔法eta()auto.arima()など、平野期待しているように見えるts物体は、つまりは、欠落したデータを含まない時系列を等間隔。等間隔のみの時系列の実世界のアプリケーションは確かに存在すると思いますが、-私の意見では-非常に限られています。

少数の離散の問題NA値が容易に提供される補間関数のいずれかを使用することによって解決することができるzooだけでなくによってforecast::interp。その後、予測を実行します。

私の質問:

  1. 誰かがより良い解決策を提案していますか?
  2. (私の主な質問)少なくとも私のアプリケーションドメイン、コールセンターのトラフィック予測(および他のほとんどの問題ドメインを想像できる限り)では、時系列は等間隔ではありません。少なくとも、定期的な「営業日」スキームなどがあります。それを処理し、予測パッケージのすべてのクールな魔法を使用する最良の方法は何ですか?

    週末を埋めるために時系列を「圧縮」し、予測を実行してから、週末にNA値を再挿入するためにデータを再度「膨らませ」ますか?(それは残念だと思いますか?)

    予測パッケージを、動物園やそのような不規則な時系列パッケージと完全に互換させる計画はありますか?はいの場合、いつ、いいえの場合、なぜですか?

私は予測(および統計全般)が初めてなので、重要なことを見落とす可能性があります。


このサイトと予測へようこそ!等間隔のみの時系列の実際のアプリケーションは、非常に制限されていません。プロモーションの需要に対処するのに十分な製品を手元に置いてスーパーマーケットに行く予測について少し知っていますが、これらの数百万の時系列(1,000店舗で20,000 SKUは非常に一般的です)は確かに非常に等間隔です。(申し訳ありませんが、あなたはそれを求めてきました...)しかし、私はあなたにもっと役立つ何かをすぐに考えようとします。
S. Kolassa -復活モニカ

2
コールセンターのデータが等間隔になっていない理由をもっと明確に説明していただけますか?(おそらく、 "等間隔"の意味を誤解しているでしょう。)私が見たコールセンターの予測方法は、通常、着信コールを15分間隔にバケットし、これが "等間隔"の定義を満たします。次に、複雑な季節性(毎日、毎週、毎年)に対処する必要があります。どのトピックについてこれが役立ちますか:stats.stackexchange.com/questions/44704/…これはあなたの質問に答えますか?そうでない場合は、他に何が必要か教えてください。
S. Kolassa -復活モニカ

5
auto.arima欠損値を処理できます。
ロブハインドマン

1
すべての建設的なコメントをありがとう!ステファン、私のデータは2つの方法で等間隔になっていません。1.多くのコールセンターは土曜日と日曜日に閉鎖されています。一部は日曜日のみ休業します。したがって、2つの隣接するデータポイント間の「通常の」スペースは1日ですが、金曜日から月曜日までは3日間です。したがって、スペースは等しくありません。つまり、等間隔ではありません。第二に、その日に測定装置の電源を入れるのを忘れたため、どこかでランダムな欠落データが存在する可能性があります。それが私のポイントを明確にすることを願っています。
entreprogreur

1
ただの(挑発的)思考。週末にコールセンターが閉鎖されると言う場合。そうすれば、欠損データはありません。時系列はMo-Frに及びます。5日間。かなり等距離です。週末の内挿は形式的に間違っているように思われます。なぜなら、呼び出しは発生せず、あなたが推論する情報はすべて間違っているからです。私はあなたが...データを発明による推定値を向上させることはできないことを主張するだろう
手段ツー意味

回答:


1

私はRの専門家ではないので、もっと簡単な方法があるかもしれませんが、これに出くわしたことがあります。以前に行ったことは、実際の日付間の距離(時間単位)を測定し、既存の時系列の新しい列に保存する関数を実装することです。次のようなものがあります。

index/date | value | distance  
01.01.2011 |  15   |   1  
02.01.2011 |  17   |   3  
05.01.2011 |  22   |   ..   

このように、時系列がまだ実際の一連の時点(または間違った形式など)に関連付けられていない場合でも、それを使用できます。

次に、次のように新しい時系列を作成する関数を作成します。

最初に、選択した日付の間に時系列が実際に持つ時間の単位を計算し、空の値を使用して動物園またはtsなどのタイムラインを作成します。

次に、選択した制限に従って、不完全な時系列配列を取得し、ループを使用して、正しいタイムラインに値を入力します。単位距離が1ではない(日(単位)が欠落している)行に出くわすと、補間値を入力します。

さて、これはあなたの関数なので、実際に補間方法を選択できます。たとえば、距離が2単位未満の場合は、標準の線形補間を使用すると決定します。週が欠落している場合は、別のことを行い、欠落している日付の特定のしきい値に達すると、データに関する警告を出します。

ループが終了日に達すると、新しいtsを返します。

このような関数の利点は、ギャップの長さに応じて異なる補間または処理手順を使用し、選択した形式できれいに作成されたシリーズを返すことができることです。一度作成すると、あらゆる種類の表形式データからクリーンで優れたtsを取得できます。これが何らかの形で役立つことを願っています。


IMA、役に立つ回答をありがとう!だから、私が今やっていること:離散欠損値については、補間(およびユーザー指定の「調整」)を使用して欠損データを埋めます。IMA、それをさらに強化するためのあなたの答えは非常に役立ちます。週末などの「通常の」欠損データの場合、予測のためだけにデータを2番目の「擬似」tsに変換し、結果を「正しい」時系列に変換して、予測にも欠損値があるようにします週末に。週末に定期的な「ギャップ」を処理する方法についてのよりエレガントな提案に感謝します。
entreprogreur

@entreprogreur、私は答えなかった、IMAは答えた。IMAのクレジットはここにあります。うまく表示されるようにフォーマットを調整しました。
GUNG -復活モニカ

1

統計処理をさらに進める前に、補間を適用する場合は非常に注意する必要があります。補間のために行う選択により、データに偏りが生じます。これは、予測の質を変える可能性があるため、絶対に避けたいものです。あなたが言及したような、時間の間隔が一定で、アクティビティの停止に対応する欠損値についての私の意見では、これらの日をモデルから除外する方が正しいかもしれません。コールセンターの小さな世界(それについて構築しているモデル)では、存在しないアクティビティの測定値を作成するのではなく、閉じたときに時間を単純に停止することを検討する方がよい場合があります。一方、ARIMAモデルは、データが等間隔であるという仮定に基づいて統計的に構築されています。私の知る限り、ARIMAはあなたのケースに適応していません。実際の就業日にいくつかの測定値が不足している場合は、補間を使用せざるを得ない可能性があります。


0

@Remiが指摘したように、このデータでモデルを推定する前にデータを補間しません。それは悪い考えです。極端な例:2013年1月と2014年1月の2つのデータポイントがあるとします。今度は2013年2月から12月の間に10の月間ポイントを補間し、月の日付に回帰を実行します。現実にはそれほど悪くなることはありませんが、それは同じ考えです:せいぜい統計を膨らませるだけです。

方法は、欠落データを処理する時系列メソッドを使用することです。たとえば、状態空間メソッド。を見てみましょうastsa Rパッケージご覧。時系列分析に関する優れた本が付属しています。これにより、欠落データがうまく処理されます。Matlabのssmパッケージに同様の機能が追加されました。モデルを状態空間形式に変換することを学ぶ必要がありますが、auto.arima「魔法」から離れるには、とにかくこれを学ぶ必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.