ARIMA_PLUS 単変量モデルを使用して複数の時系列を予測する

このチュートリアルでは、ARIMA_PLUS 単変量時系列モデルを使用して、特定の列の過去の値に基づいて、その列の将来の値を予測する方法について説明します。

このチュートリアルでは、複数の時系列の予測を行います。予測値は、指定された 1 つ以上の列の値ごとに、各時点について計算されます。たとえば、天気を予測し、都市データを含む列を指定した場合、予測データには、都市 A のすべての時間ポイントの予測と、都市 B のすべての時間ポイントの予測値が含まれます。

このチュートリアルでは、一般公開テーブル bigquery-public-data.new_york.citibike_trips のデータを使用します。このテーブルには、ニューヨーク市でのシティバイクの利用回数に関する情報が含まれています。

このチュートリアルを読む前に、単変量モデルを使用して 1 つの時系列を予測するをお読みになることを強くおすすめします。

データセットを作成する

ML モデルを保存する BigQuery データセットを作成します。

コンソール

  1. Google Cloud コンソールで、[BigQuery] ページに移動します。

    [BigQuery] ページに移動

  2. [エクスプローラ] ペインで、プロジェクト名をクリックします。

  3. [アクションを表示] > [データセットを作成] をクリックします。

  4. [データセットを作成する] ページで、次の操作を行います。

    • [データセット ID] に「bqml_tutorial」と入力します。

    • [ロケーション タイプ] で [マルチリージョン] を選択してから、[US(米国の複数のリージョン)] を選択します。

    • 残りのデフォルトの設定は変更せず、[データセットを作成] をクリックします。

bq

新しいデータセットを作成するには、--location フラグを指定した bq mk コマンドを使用します。使用可能なパラメータの一覧については、bq mk --dataset コマンドのリファレンスをご覧ください。

  1. データの場所が US に設定され、BigQuery ML tutorial dataset という説明の付いた、bqml_tutorial という名前のデータセットを作成します。

    bq --location=US mk -d \
     --description "BigQuery ML tutorial dataset." \
     bqml_tutorial

    このコマンドでは、--dataset フラグの代わりに -d ショートカットを使用しています。-d--dataset を省略した場合、このコマンドはデフォルトでデータセットを作成します。

  2. データセットが作成されたことを確認します。

    bq ls

API

定義済みのデータセット リソースを使用して datasets.insert メソッドを呼び出します。

{
  "datasetReference": {
     "datasetId": "bqml_tutorial"
  }
}

BigQuery DataFrames

このサンプルを試す前に、BigQuery DataFrames を使用した BigQuery クイックスタートの手順に沿って BigQuery DataFrames を設定してください。詳細については、BigQuery DataFrames のリファレンス ドキュメントをご覧ください。

BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の ADC の設定をご覧ください。

import google.cloud.bigquery

bqclient = google.cloud.bigquery.Client()
bqclient.create_dataset("bqml_tutorial", exists_ok=True)

入力データを可視化する

モデルを作成する前に、必要に応じて入力時系列データを可視化して分布を把握できます。これは、Looker Studio を使用して行います。

SQL

次のクエリの SELECT ステートメントは、EXTRACT 関数を使用して、starttime 列から日付情報を抽出します。さらに、COUNT(*) 句を使用して、1 日あたりのシティバイクの合計利用回数を取得します。

時系列データを可視化する手順は次のとおりです。

  1. Google Cloud コンソールで、[BigQuery] ページに移動します。

    [BigQuery] に移動

  2. クエリエディタに次のクエリを貼り付け、[実行] をクリックします。

    SELECT
     EXTRACT(DATE from starttime) AS date,
     COUNT(*) AS num_trips
    FROM
    `bigquery-public-data.new_york.citibike_trips`
    GROUP BY date;
  3. クエリが完了したら、[データを探索] > [Looker Studio で調べる] をクリックします。Looker Studio が新しいタブで開きます。新しいタブで次の操作を行います。

  4. Looker Studio で、[挿入] > [期間グラフ] をクリックします。

  5. [グラフ] ペインで、[設定] タブを選択します。

  6. [指標] セクションで、num_trips フィールドを追加し、デフォルトの指標である [レコード数] を削除します。作成されたグラフは次のようになります。

    自転車利用回数の経時的な変化を示すグラフ。

BigQuery DataFrames

このサンプルを試す前に、BigQuery DataFrames を使用した BigQuery クイックスタートの手順に沿って BigQuery DataFrames を設定してください。詳細については、BigQuery DataFrames のリファレンス ドキュメントをご覧ください。

BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の ADC の設定をご覧ください。


import bigframes.pandas as bpd

df = bpd.read_gbq("bigquery-public-data.new_york.citibike_trips")

features = bpd.DataFrame(
    {
        "num_trips": df.starttime,
        "date": df["starttime"].dt.date,
    }
)
date = df["starttime"].dt.date
df.groupby([date])
num_trips = features.groupby(["date"]).count()

# Results from running "print(num_trips)"

#                num_trips
# date
# 2013-07-01      16650
# 2013-07-02      22745
# 2013-07-03      21864
# 2013-07-04      22326
# 2013-07-05      21842
# 2013-07-06      20467
# 2013-07-07      20477
# 2013-07-08      21615
# 2013-07-09      26641
# 2013-07-10      25732
# 2013-07-11      24417
# 2013-07-12      19006
# 2013-07-13      26119
# 2013-07-14      29287
# 2013-07-15      28069
# 2013-07-16      29842
# 2013-07-17      30550
# 2013-07-18      28869
# 2013-07-19      26591
# 2013-07-20      25278
# 2013-07-21      30297
# 2013-07-22      25979
# 2013-07-23      32376
# 2013-07-24      35271
# 2013-07-25      31084

num_trips.plot.line(
    # Rotate the x labels so they are more visible.
    rot=45,
)

時系列モデルを作成する

シティバイク ステーションごとの自転車利用回数を予測したいとします。この場合、入力データに含まれるシティバイク ステーションごとに 1 つずつ、多くの時系列モデルが必要になります。これは複数のモデルを作成すればできますが、特に多数の時系列が存在する場合に、作成に手間や時間がかかる可能性があります。代わりに、1 つのクエリを使用して一連の時系列モデルを作成して適合させ、複数の時系列を一度に予測できます。

SQL

次のクエリの OPTIONS(model_type='ARIMA_PLUS', time_series_timestamp_col='date', ...) 句は、ARIMA ベースの時系列モデルを作成していることを示します。CREATE MODEL ステートメントの time_series_id_col オプションを使用して、予測を取得する入力データの 1 つ以上の列(この場合は、start_station_name 列で表されるシティバイク ステーション)を指定します。WHERE 句を使用して、名前に Central Park が含まれるステーションに限定します。CREATE MODEL ステートメントの auto_arima_max_order オプションは、auto.ARIMA アルゴリズムでのハイパーパラメータ チューニングの検索空間を制御します。CREATE MODEL ステートメントの decompose_time_series オプションはデフォルトで TRUE に設定されているため、次のステップでモデルを評価するときに時系列データに関する情報が返されます。

次の手順でモデルを作成します。

  1. Google Cloud コンソールで、[BigQuery] ページに移動します。

    [BigQuery] に移動

  2. クエリエディタに次のクエリを貼り付け、[実行] をクリックします。

    CREATE OR REPLACE MODEL `bqml_tutorial.nyc_citibike_arima_model_group`
    OPTIONS
    (model_type = 'ARIMA_PLUS',
     time_series_timestamp_col = 'date',
     time_series_data_col = 'num_trips',
     time_series_id_col = 'start_station_name',
     auto_arima_max_order = 5
    ) AS
    SELECT
     start_station_name,
     EXTRACT(DATE from starttime) AS date,
     COUNT(*) AS num_trips
    FROM
    `bigquery-public-data.new_york.citibike_trips`
    WHERE start_station_name LIKE '%Central Park%'
    GROUP BY start_station_name, date;

    クエリが完了するまでに約 24 秒かかります。完了後、nyc_citibike_arima_model_group モデルにアクセスできます。クエリは CREATE MODEL ステートメントを使用するため、クエリの結果は表示されません。

このクエリでは、入力データ内の 12 個のシティバイクの出発ステーションごとに 1 つずつ、12 個の時系列モデルを作成します。所要時間は約 24 秒です。並列処理を行うため、これは 1 つの時系列モデルを作成する場合の 1.4 倍程度にすぎません。ただし、WHERE ... LIKE ... 句を削除すると、600 以上の時系列が予測され、スロットの容量の制限により、時系列の予測が完全に並列では処理されない可能性があります。その場合、クエリが完了するまでに約 15 分かかることがあります。モデルの品質がわずかに低下する可能性がありますが、クエリの実行時間を短縮するには、auto_arima_max_order の値を小さくします。これにより、auto.ARIMA アルゴリズムのハイパーパラメータ調整の検索空間が縮小されます。詳細については、Large-scale time series forecasting best practices をご覧ください。

BigQuery DataFrames

次のスニペットでは、ARIMA ベースの時系列モデルを作成します。

このサンプルを試す前に、BigQuery DataFrames を使用した BigQuery クイックスタートの手順に沿って BigQuery DataFrames を設定してください。詳細については、BigQuery DataFrames のリファレンス ドキュメントをご覧ください。

BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の ADC の設定をご覧ください。

from bigframes.ml import forecasting
import bigframes.pandas as bpd

model = forecasting.ARIMAPlus(
    # To reduce the query runtime with the compromise of a potential slight
    # drop in model quality, you could decrease the value of the
    # auto_arima_max_order. This shrinks the search space of hyperparameter
    # tuning in the auto.ARIMA algorithm.
    auto_arima_max_order=5,
)

df = bpd.read_gbq("bigquery-public-data.new_york.citibike_trips")

# This query creates twelve time series models, one for each of the twelve
# Citi Bike start stations in the input data. If you remove this row
# filter, there would be 600+ time series to forecast.
df = df[df["start_station_name"].str.contains("Central Park")]

features = bpd.DataFrame(
    {
        "start_station_name": df["start_station_name"],
        "num_trips": df["starttime"],
        "date": df["starttime"].dt.date,
    }
)
num_trips = features.groupby(
    ["start_station_name", "date"],
    as_index=False,
).count()

X = num_trips["date"].to_frame()
y = num_trips["num_trips"].to_frame()

model.fit(
    X,
    y,
    # The input data that you want to get forecasts for,
    # in this case the Citi Bike station, as represented by the
    # start_station_name column.
    id_col=num_trips["start_station_name"].to_frame(),
)

# The model.fit() call above created a temporary model.
# Use the to_gbq() method to write to a permanent location.
model.to_gbq(
    your_model_id,  # For example: "bqml_tutorial.nyc_citibike_arima_model",
    replace=True,
)

これにより、入力データ内の 12 個のシティバイクの出発ステーションごとに 1 つずつ、12 個の時系列モデルが作成されます。所要時間は約 24 秒です。並列処理を行うため、これは 1 つの時系列モデルを作成する場合の 1.4 倍程度にすぎません。

モデルを評価する

SQL

ML.ARIMA_EVALUATE 関数を使用して時系列モデルを評価します。ML.ARIMA_EVALUATE 関数は、ハイパーパラメータの自動チューニング プロセス中にモデルに対して生成された評価指標を表示します。

次の手順でモデルを評価します。

  1. Google Cloud コンソールで、[BigQuery] ページに移動します。

    [BigQuery] に移動

  2. クエリエディタに次のクエリを貼り付け、[実行] をクリックします。

    SELECT
    *
    FROM
    ML.ARIMA_EVALUATE(MODEL `bqml_tutorial.nyc_citibike_arima_model_group`);

    結果は次のようになります。

    時系列モデルの評価指標。

    auto.ARIMA は、各時系列について複数の ARIMA 候補モデルを評価しますが、ML.ARIMA_EVALUATE はデフォルトでは出力テーブルをコンパクトにするため、最適モデルの情報のみを出力します。すべての候補モデルを表示するには、ML.ARIMA_EVALUATE 関数の show_all_candidate_model 引数TRUE に設定します。

BigQuery DataFrames

このサンプルを試す前に、BigQuery DataFrames を使用した BigQuery クイックスタートの手順に沿って BigQuery DataFrames を設定してください。詳細については、BigQuery DataFrames のリファレンス ドキュメントをご覧ください。

BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の ADC の設定をご覧ください。

# Evaluate the time series models by using the summary() function. The summary()
# function shows you the evaluation metrics of all the candidate models evaluated
# during the process of automatic hyperparameter tuning.
summary = model.summary()
print(summary.peek())

# Expected output:
#    start_station_name                  non_seasonal_p  non_seasonal_d   non_seasonal_q  has_drift  log_likelihood           AIC     variance ...
# 1         Central Park West & W 72 St               0               1                5      False    -1966.449243   3944.898487  1215.689281 ...
# 8            Central Park W & W 96 St               0               0                5      False     -274.459923    562.919847   655.776577 ...
# 9        Central Park West & W 102 St               0               0                0      False     -226.639918    457.279835    258.83582 ...
# 11        Central Park West & W 76 St               1               1                2      False    -1700.456924   3408.913848   383.254161 ...
# 4   Grand Army Plaza & Central Park S               0               1                5      False    -5507.553498  11027.106996   624.138741 ...

start_station_name 列は、時系列が作成された入力データ列を識別します。これは、モデルの作成時に time_series_id_col オプションで指定した列です。

non_seasonal_pnon_seasonal_dnon_seasonal_qhas_drift の出力列は、トレーニング パイプラインの ARIMA モデルを定義します。log_likelihoodAICvariance の出力列は、ARIMA モデルの適合プロセスに関連しています。適合プロセスでは、時系列ごとに 1 つ、auto.ARIMA アルゴリズムを使用して最適な ARIMA モデルが決定されます。

auto.ARIMA アルゴリズムは KPSS テストを使用して、non_seasonal_d の最適値を決定します。この場合は 1 になります。non_seasonal_d1 の場合、auto.ARIMA アルゴリズムは 42 個の ARIMA 候補モデルを並行してトレーニングします。この例では、42 個の候補モデルがすべて有効であるため、出力には 42 行(ARIMA 候補モデルごとに 1 行)が含まれます。一部のモデルが無効な場合は、出力から除外されます。これらの候補モデルは、AIC の昇順で返されます。最初の行のモデルは AIC が最も低く、最適なモデルとみなされます。この最適モデルが最終モデルとして保存され、次の手順で示すようにデータの予測、モデルの評価、モデルの係数の検査を行うときに使用されます。

seasonal_periods 列には、時系列データで識別された季節パターンに関する情報が含まれます。時系列ごとに異なるシーズン パターンがある場合があります。たとえば、この図では 1 つの時系列に 1 年ごとのパターンがありますが、他の時系列には存在しません。

has_holiday_effecthas_spikes_and_dipshas_step_changes 列は、decompose_time_series=TRUE の場合にのみ入力されます。これらの列も、入力時系列データに関する情報が反映されますが、ARIMA モデリングとは関係ありません。また、これらの列の値はすべての出力行で同じになります。

モデルの係数を調べる

SQL

ML.ARIMA_COEFFICIENTS 関数を使用して、時系列モデルの係数を調べます。

モデルの係数を取得する手順は次のとおりです。

  1. Google Cloud コンソールで、[BigQuery] ページに移動します。

    [BigQuery] に移動

  2. クエリエディタに次のクエリを貼り付け、[実行] をクリックします。

    SELECT
    *
    FROM
    ML.ARIMA_COEFFICIENTS(MODEL `bqml_tutorial.nyc_citibike_arima_model_group`);

    クエリが完了するまでに 1 秒もかかりません。結果は次のようになります。

    時系列モデルの係数。

    出力列の詳細については、ML.ARIMA_COEFFICIENTS 関数をご覧ください。

BigQuery DataFrames

coef_ 関数を使用して、時系列モデルの係数を調べます。

このサンプルを試す前に、BigQuery DataFrames を使用した BigQuery クイックスタートの手順に沿って BigQuery DataFrames を設定してください。詳細については、BigQuery DataFrames のリファレンス ドキュメントをご覧ください。

BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の ADC の設定をご覧ください。

coef = model.coef_
print(coef.peek())

# Expected output:
#    start_station_name                                              ar_coefficients                                   ma_coefficients intercept_or_drift
# 5    Central Park West & W 68 St                                                [] [-0.41014089  0.21979212 -0.59854213 -0.251438...                0.0
# 6         Central Park S & 6 Ave                                                [] [-0.71488957 -0.36835772  0.61008532  0.183290...                0.0
# 0    Central Park West & W 85 St                                                [] [-0.39270166 -0.74494638  0.76432596  0.489146...                0.0
# 3    W 82 St & Central Park West                         [-0.50219511 -0.64820817]             [-0.20665325  0.67683137 -0.68108631]                0.0
# 11  W 106 St & Central Park West [-0.70442887 -0.66885553 -0.25030325 -0.34160669]                                                []                0.0

start_station_name 列は、時系列が作成された入力データ列を識別します。これは、モデルの作成時に time_series_id_col オプションで指定した列です。

ar_coefficients 出力列には、ARIMA モデルの自己回帰(AR)部分のモデル係数が表示されます。同様に、ma_coefficients 出力列には、ARIMA モデルの移動平均(MA)部分のモデル係数が表示されます。どちらの列にも配列値が含まれ、長さはそれぞれ non_seasonal_pnon_seasonal_q です。intercept_or_drift 値は、ARIMA モデルの定数項です。

モデルを使用してデータを予測する

SQL

ML.FORECAST 関数を使用して、将来の時系列値を予測します。

次の GoogleSQL クエリの STRUCT(3 AS horizon, 0.9 AS confidence_level) 句は、3 個の将来の時点を予測し、信頼度レベル 90% の予測間隔を生成するように表示します。

次の手順でモデルを使用し、データを予測します。

  1. Google Cloud コンソールで、[BigQuery] ページに移動します。

    [BigQuery] に移動

  2. クエリエディタに次のクエリを貼り付け、[実行] をクリックします。

    SELECT
    *
    FROM
    ML.FORECAST(MODEL `bqml_tutorial.nyc_citibike_arima_model_group`,
     STRUCT(3 AS horizon, 0.9 AS confidence_level))
  3. [実行] をクリックします。

    クエリが完了するまでに 1 秒もかかりません。結果は次のようになります。

    ML.FORECAST の出力。

出力列の詳細については、ML.FORECAST 関数をご覧ください。

BigQuery DataFrames

predict 関数を使用して、将来の時系列値を予測します。

このサンプルを試す前に、BigQuery DataFrames を使用した BigQuery クイックスタートの手順に沿って BigQuery DataFrames を設定してください。詳細については、BigQuery DataFrames のリファレンス ドキュメントをご覧ください。

BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の ADC の設定をご覧ください。

prediction = model.predict(horizon=3, confidence_level=0.9)

print(prediction.peek())
# Expected output:
#            forecast_timestamp                             start_station_name  forecast_value  standard_error  confidence_level ...
# 4   2016-10-01 00:00:00+00:00                         Central Park S & 6 Ave      302.377201       32.572948               0.9 ...
# 14  2016-10-02 00:00:00+00:00  Central Park North & Adam Clayton Powell Blvd      263.917567       45.284082               0.9 ...
# 1   2016-09-25 00:00:00+00:00                    Central Park West & W 85 St      189.574706       39.874856               0.9 ...
# 20  2016-10-02 00:00:00+00:00                    Central Park West & W 72 St      175.474862       40.940794               0.9 ...
# 12  2016-10-01 00:00:00+00:00                   W 106 St & Central Park West        63.88163       18.088868               0.9 ...

最初の列 start_station_name は、各時系列モデルが適合される時系列にアノテーションを付けます。各 start_station_name には、horizon 値で指定された 3 行の予測結果があります。

start_station_name ごとに、出力行は forecast_timestamp 列の値で時系列順に並べ替えられます。時系列予測では、prediction_interval_lower_bound 列と prediction_interval_upper_bound 列の値で表される予測間隔は、forecast_value 列の値と同じくらい重要です。forecast_value 値は予測間隔の中間点です。予測間隔は、standard_error 列と confidence_level 列の値によって異なります。

予測結果を説明する

SQL

ML.EXPLAIN_FORECAST 関数を使用すると、予測データに加えて説明可能性の指標を取得できます。ML.EXPLAIN_FORECAST 関数は、将来の時系列値を予測し、時系列の個別のコンポーネントをすべて返します。予測データを返すだけの場合は、モデルを使用してデータを予測するで説明されているように、代わりに ML.FORECAST 関数を使用します。

ML.EXPLAIN_FORECAST 関数で使用される STRUCT(3 AS horizon, 0.9 AS confidence_level) 句は、クエリが 3 個の将来の時点を予測し、信頼度 90% の予測間隔を生成するように表示します。

モデルの結果を説明する手順は次のとおりです。

  1. Google Cloud コンソールで、[BigQuery] ページに移動します。

    [BigQuery] に移動

  2. クエリエディタに次のクエリを貼り付け、[実行] をクリックします。

    SELECT
    *
    FROM
    ML.EXPLAIN_FORECAST(MODEL `bqml_tutorial.nyc_citibike_arima_model_group`,
     STRUCT(3 AS horizon, 0.9 AS confidence_level));

    クエリが完了するまでに 1 秒もかかりません。結果は次のようになります。

    予測データと予測の説明に関する最初の 9 つの出力列。 予測データと予測の説明に関する 10~17 番目の出力列。 予測データと予測の説明に関する最後の 6 つの出力列。

    返される最初の数千行はすべて履歴データです。予測データを表示するには、結果をスクロールする必要があります。

    出力行は、まず start_station_name で並べ替えられ、次に time_series_timestamp 列の値で時系列で並べ替えられます。時系列予測では、prediction_interval_lower_bound 列と prediction_interval_upper_bound 列の値で表される予測間隔は、forecast_value 列の値と同じくらい重要です。forecast_value 値は予測間隔の中間点です。予測間隔は、standard_error 列と confidence_level 列の値によって異なります。

    出力列の詳細については、ML.EXPLAIN_FORECAST をご覧ください。

BigQuery DataFrames

predict_explain 関数を使用すると、予測データに加えて説明可能性の指標を取得できます。predict_explain 関数は、将来の時系列値を予測し、時系列の個別のコンポーネントをすべて返します。予測データを返すだけの場合は、モデルを使用してデータを予測するで説明されているように、代わりに predict 関数を使用します。

predict_explain 関数で使用される horizon=3, confidence_level=0.9 句は、クエリが 3 個の将来の時点を予測し、信頼度 90% の予測間隔を生成するように表示します。

このサンプルを試す前に、BigQuery DataFrames を使用した BigQuery クイックスタートの手順に沿って BigQuery DataFrames を設定してください。詳細については、BigQuery DataFrames のリファレンス ドキュメントをご覧ください。

BigQuery に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の ADC の設定をご覧ください。

explain = model.predict_explain(horizon=3, confidence_level=0.9)

print(explain.peek(5))
# Expected output:
#   time_series_timestamp	        start_station_name	            time_series_type	    time_series_data	    time_series_adjusted_data	    standard_error	    confidence_level	    prediction_interval_lower_bound	    prediction_interval_upper_bound	    trend	    seasonal_period_yearly	    seasonal_period_quarterly	    seasonal_period_monthly	    seasonal_period_weekly	    seasonal_period_daily	    holiday_effect	    spikes_and_dips	    step_changes	    residual
# 0	2013-07-01 00:00:00+00:00	Central Park S & 6 Ave	                history	                  69.0	                   154.168527	              32.572948	             <NA>	                        <NA>	                            <NA>	                 0.0	          35.477484	                       <NA>	                        <NA>	                  -28.402102	                 <NA>	                <NA>	               0.0	         -85.168527	        147.093145
# 1	2013-07-01 00:00:00+00:00	Grand Army Plaza & Central Park S	    history	                  79.0	                      79.0	                  24.982769	             <NA>	                        <NA>	                            <NA>	                 0.0	          43.46428	                       <NA>	                        <NA>	                  -30.01599	                     <NA>	                <NA>	               0.0	            0.0	             65.55171
# 2	2013-07-02 00:00:00+00:00	Central Park S & 6 Ave	                history	                  180.0	                   204.045651	              32.572948	             <NA>	                        <NA>	                            <NA>	              147.093045	      72.498327	                       <NA>	                        <NA>	                  -15.545721	                 <NA>	                <NA>	               0.0	         -85.168527	         61.122876
# 3	2013-07-02 00:00:00+00:00	Grand Army Plaza & Central Park S	    history	                  129.0	                    99.556269	              24.982769	             <NA>	                        <NA>	                            <NA>	               65.551665	      45.836432	                       <NA>	                        <NA>	                  -11.831828	                 <NA>	                <NA>	               0.0	            0.0	             29.443731
# 4	2013-07-03 00:00:00+00:00	Central Park S & 6 Ave	                history	                  115.0	                   205.968236	              32.572948	             <NA>	                        <NA>	                            <NA>	               191.32754	      59.220766	                       <NA>	                        <NA>	                  -44.580071	                 <NA>	                <NA>	               0.0	         -85.168527	        -5.799709

出力行は、まず time_series_timestamp で並べ替えられ、次に start_station_name 列の値で時系列で並べ替えられます。時系列予測では、prediction_interval_lower_bound 列と prediction_interval_upper_bound 列の値で表される予測間隔は、forecast_value 列の値と同じくらい重要です。forecast_value 値は予測間隔の中間点です。予測間隔は、standard_error 列と confidence_level 列の値によって異なります。