BigQuery MLの時系列データで休日効果を使ってみる
はじめに
データアナリティクス事業本部のkobayashiです。
以前のエントリにてBigQuery MLで時系列データを扱いましたがARIMAモデルを作成する際にholiday effects(休日効果) が週周期でも使える様になっていたのでこのオプションを試してみました。
以前の記事
モデルの作成
holiday effectsを使うのは非常に簡単でCREATE MODEL
文のオプションにHOLIDAY_REGION ='国or地域コード'
を追加するだけです。
ただholiday effectsオプションのドキュメント
にも記載がありますが使うためには2点注意点があります。
- 入力する時系列データが
daily
かweekly
- 入力する時系列データが1年より長いデータ
前回は一般公開データセットのGoogleAnalyticsのデータを使いましたがこのデータについては、seasonal_periodsがweekly
で片方の条件を満たしていましたがデータ数がちょうど1年分しかなかったためholiday
effectsを使ったモデルを作成できませんでした。したがって今回は新しい時系列データとして、一般公開データセットの「COVID-19 Open Data」を使います。
COVID-19 Open Data – マーケットプレイス – Google Cloud Platform
COVID-19 Open Dataの日本のデータでARIMAモデル作成するために以下のデータを元データとして使用します。
SELECT date , cumulative_confirmed - lag(cumulative_confirmed) over (partition by country_code order by date) new_confirmed FROM ` bigquery- public - data.covid19_open_data.covid19_open_data ` where country_code = 'JP' and subregion1_code is null order by date desc ;
holiday effectsを使わないモデルの作成
この時系列データを元にARIMAモデルを作成するのですが、holiday effectsオプションを使った場合と使わない場合を比較したいため、まずはholiday effectsオプションを使わないモデルを作成します。
CREATE OR REPLACE MODEL data_set.covid19_arima_model OPTIONS (model_type = 'ARIMA_PLUS', time_series_timestamp_col = 'date', time_series_data_col = 'new_confirmed', auto_arima = TRUE, data_frequency = 'AUTO_FREQUENCY', decompose_time_series = TRUE ) AS SELECT date , cumulative_confirmed - lag(cumulative_confirmed) over (partition by country_code order by date) new_confirmed FROM ` bigquery- public - data.covid19_open_data.covid19_open_data ` where country_code = 'JP' and subregion1_code is null order by date desc ;
1分ほどでモデルが作成されるので作成されたモデルの評価指数を見てみると以下の様になります。
休日効果あり
の項目がFalse
になっています。
holiday effectsを使ったモデルの作成
次にholiday effectsを使っ他モデルを作成します。日本のデータを使っていますのでholiday effectsを使わないクエリにHOLIDAY_REGION ='JP'
を追加するだけです。
CREATE OR REPLACE MODEL data_set.covid19_arima_model_holiday OPTIONS (model_type = 'ARIMA_PLUS', time_series_timestamp_col = 'date', time_series_data_col = 'new_confirmed', auto_arima = TRUE, data_frequency = 'AUTO_FREQUENCY', decompose_time_series = TRUE, HOLIDAY_REGION='JP' ) AS SELECT date , cumulative_confirmed - lag(cumulative_confirmed) over (partition by country_code order by date) new_confirmed FROM ` bigquery- public - data.covid19_open_data.covid19_open_data ` where country_code = 'JP' and subregion1_code is null order by date desc ;
こちらも先程と同様に作成されたモデルの評価指標を確認してみます。
こちらの場合は休日効果あり
の項目がTrue
になりholiday effectsが効いていることがわかります。また尤度、AIC、バリアンスの3つの評価指標がholiday
effectsを使っていない場合と比較して改善していることがわかります。
まとめ
BigQuery MLで時系列データのARIMAモデルを作成する際にholiday effectsを使ってその効果を見てみました。HOLIDAY_REGION
のオプションが使える時系列データの場合には積極的に試してみたいと思います。
最後まで読んで頂いてありがとうございました。