Help us understand the problem. What is going on with this article?

SARIMAモデル(季節自己回帰和分移動平均モデル)による未来予測において生じる問題への対処法

自分で記事を書くということをしたことがなかったのですが、今回詰まってしまった所が検索してもなかなか解決しなかったので、知恵として残しておこうと思います。

問題があったのは時系列分析で用いられるSARIMAモデルを使った予測においてです。(あくまで詰まってしまった部分の解説なので、具体的なSARIMAモデルの使い方の勉強は別の場所でお願いします)

次のような形で所与の時系列データに対してSARIMAモデルを適応させます。

qiita.rb
SARIMA_2_1_3_011 = sm.tsa.SARIMAX(train.y, order=(2,1,3), seasonal_order=(0,1,1,20)).fit()

このモデルを用いて次のように未来予測を行おうとしました。
(つまり169から206のindexは元データの範囲を超えていて、それを予測したかった)

qiita.rb
pred3 = SARIMA_2_1_3_011.predict(start=169,end=206)

KeyError: 'The `start` argument could not be matched to a location related to the index of the data.'

するとこのようなエラーが生じてしまいました。
英語ができないのでなんとなくでしか意味を察せないため、よく分からないけどindexの範囲が越えているのが問題のようでした。
しかし、参考にしたサイトでは何の問題もなく未来予測ができていました。

そこから色々と手を加えたりエラーをコピペして海外の質問サイトに飛んで調べたりしたのですが、かれこれ30分以上は苦戦した気がします。

で、結果的に辿り着いた予想は「元データにおけるindexである日付の現れ方が不規則なため、未来予測するためのindexが決められないということではないか」というものです。
(例えば元データのindexが1/1,1/2,1/3なら次の予測は1/4,1/5...と続くが、1/1,1/2,1/4となっていると次のindex(日付)が決まらない)

したがってこの問題の解決策は次の2つが挙げられると思います。

①なんとかしてindexの規則性を整える
②元データに空のデータ(ただしindex付)を結合して、未来のindexを用意しておく(もちろん目的変数は空のまま)

実際に2つ目の方法を行うとうまくいったので、恐らくこれらが解決法としては正しいと思います。

初めて記事を書くので見にくかったかもしれませんが、ご了承ください...。
また、力不足で至らない点も多々あると思いますが、お気づきの方はご指摘してくださると嬉しいです。
少しでもこの問題で立ち往生している方の助けになれば幸いです。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした