使用 ARIMA_PLUS 單變數模型預測多個時間序列

本教學課程說明如何使用ARIMA_PLUS單變數時間序列模型,根據特定資料欄的歷史值,預測該資料欄的未來值。

本教學課程會預測多個時間序列。系統會針對一或多個指定資料欄中的每個值,計算每個時間點的預測值。舉例來說,如果您想預測天氣,並指定包含城市資料的資料欄,預測資料就會包含城市 A 所有時間點的預測值,然後是城市 B 所有時間點的預測值,依此類推。

本教學課程使用公開資料表中的資料。bigquery-public-data.new_york.citibike_trips這個表格包含紐約市 Citi Bike 行程的相關資訊。

建議您先閱讀「使用單變量模型預測單一時間序列」一文,再開始閱讀本教學課程。

建立資料集

建立 BigQuery 資料集來儲存機器學習模型。

控制台

  1. 前往 Google Cloud 控制台的「BigQuery」頁面。

    前往 BigQuery 頁面

  2. 在「Explorer」窗格中,按一下專案名稱。

  3. 依序點按 「View actions」(查看動作) >「Create dataset」(建立資料集)

  4. 在「建立資料集」頁面中,執行下列操作:

    • 在「Dataset ID」(資料集 ID) 中輸入 bqml_tutorial

    • 針對「Location type」(位置類型) 選取「Multi-region」(多區域),然後選取「US (multiple regions in United States)」(us (多個美國區域))

    • 其餘設定請保留預設狀態,然後按一下「建立資料集」

bq

如要建立新的資料集,請使用 bq mk 指令搭配 --location 旗標。如需可能的完整參數清單,請參閱 bq mk --dataset 指令參考資料。

  1. 建立名為「bqml_tutorial」的資料集,並將資料位置設為「US」,說明則設為「BigQuery ML tutorial dataset」:

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

    這個指令採用 -d 捷徑,而不是使用 --dataset 旗標。如果您省略 -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(*) 子句,取得每日的 Citi Bike 行程總數。

請按照下列步驟,以視覺化方式呈現時間序列資料:

  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,
)

建立時間序列模型

您想預測每個 Citi Bike 車站的單車行程數量,這需要許多時間序列模型,也就是輸入資料中每個 Citi Bike 車站各需要一個模型。您可以建立多個模型來完成這項作業,但這可能相當繁瑣且耗時,尤其是有大量時間序列時。您可以改用單一查詢建立及調整一組時間序列模型,一次預測多個時間序列。

SQL

在下列查詢中,OPTIONS(model_type='ARIMA_PLUS', time_series_timestamp_col='date', ...) 子句表示您要建立以 ARIMA 為基礎的時間序列模型。您可以使用 CREATE MODEL 陳述式的time_series_id_col 選項,指定要取得預測結果的輸入資料欄 (在本例中為 Citi Bike 車站,以 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 陳述式,因此您不會看到查詢結果。

這項查詢會建立十二個時間序列模型,輸入資料中十二個 Citi Bike 起始車站各有一個模型。由於平行處理,時間成本約為 24 秒,只比建立單一時間序列模型多 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,
)

這會建立十二個時間序列模型,輸入資料中的十二個 Citi Bike 起始站點各有一個模型。由於平行處理,建立單一時間序列模型的時間成本約為 24 秒,僅增加 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 模型擬合程序相關。擬合程序會針對每個時間序列使用 auto.ARIMA 演算法,找出最佳的 ARIMA 模型。

auto.ARIMA 演算法會使用 KPSS 測試判斷 non_seasonal_d 的最佳值,在本例中為 1。當 non_seasonal_d1 時,auto.ARIMA 演算法會平行訓練 42 個不同的候選 ARIMA 模型。在本例中,所有 42 個候選模型都有效,因此輸出內容包含 42 個資料列,每個資料列對應一個候選 ARIMA 模型;如果部分模型無效,則會從輸出內容中排除。系統會按照 AIC 遞增順序傳回這些候選模型。第一列中的模型 AIC 最低,因此視為最佳模型。這個最佳模型會儲存為最終模型,並用於預測資料、評估模型,以及檢查模型的係數,如下列步驟所示。

seasonal_periods 欄包含時間序列資料中識別出的季節性模式相關資訊。每個時間序列可能都有不同的季節性模式。舉例來說,從圖中可以看出,其中一個時間序列具有年度模式,其他則沒有。

只有在 decompose_time_series=TRUE 時,系統才會填入 has_holiday_effecthas_spikes_and_dipshas_step_changes 欄。這些資料欄也會反映輸入時間序列資料的相關資訊,與 ARIMA 模型無關。所有輸出資料列的這些資料欄值也相同。

檢查模型的係數

SQL

使用 ML.ARIMA_COEFFICIENTS 函式檢查時間序列模型的係數。

請按照下列步驟擷取模型的係數:

  1. 前往 Google Cloud 控制台的「BigQuery」頁面。

    前往「BigQuery」

  2. 在查詢編輯器中貼上以下查詢,然後點選「執行」

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

    查詢不到一秒即可完成。結果應如下所示:

    時間序列模型的係數。

    如要進一步瞭解輸出資料欄,請參閱 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_qintercept_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. 按一下「執行」

    查詢不到一秒即可完成。結果應如下所示:

    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 值所指定。

每個 start_station_name 的輸出資料列會依 forecast_timestamp 資料欄值依時間順序排列。在時間序列預測中,預測間隔 (以 prediction_interval_lower_boundprediction_interval_upper_bound 欄值表示) 與 forecast_value 欄值同樣重要。forecast_value 值是預測間隔的中間點。預測區間取決於 standard_errorconfidence_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));

    查詢不到一秒即可完成。結果應如下所示:

    預測資料和預測說明的前九個輸出資料欄。 預測資料和預測說明的第 10 到第 17 個輸出資料欄。 預測資料和預測說明的最後六個輸出資料欄。

    傳回的前幾千列都是歷史資料。您必須捲動結果,才能查看預測資料。

    輸出資料列會先依 start_station_name 排序,再依 time_series_timestamp 資料欄值依時間順序排序。在時間序列預測中,預測間隔 (以 prediction_interval_lower_boundprediction_interval_upper_bound 欄值表示) 與 forecast_value 欄值同樣重要。forecast_value 值是預測間隔的中間點。預測區間取決於 standard_errorconfidence_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_boundprediction_interval_upper_bound 欄值表示) 與 forecast_value 欄值同樣重要。forecast_value 值是預測間隔的中間點。預測區間取決於 standard_errorconfidence_level 欄的值。