[comment]: # attributes: notoc

[comment]: # (terms: forecast, timeleft )

[comment]: # ({2bf301d5-2e2a1a06})
# 8 予測関数

ここに記載されているすべての関数は、以下でサポートされています。

-   [トリガー式](/manual/config/triggers/expression)
-   [計算アイテムの数式](/manual/config/items/itemtypes/calculated)
-   [式マクロ](/manual/config/macros/expression_macros)

関数は追加情報なしで一覧表示されています。詳細は関数をクリックして確認してください。

|関数|説明|
|--|--------|
|[forecast](#forecast)|アイテムの将来の値、最大値、最小値、差分、または平均値。|
|[timeleft](#timeleft)|アイテムが指定したしきい値に到達するまでに必要な時間（秒）。|

[comment]: # ({/2bf301d5-2e2a1a06})

[comment]: # ({645b8a56-4d343eb8})
##### 共通パラメータ

-   `/host/key` は、ホストのアイテム履歴を参照する関数に共通する必須の第1パラメータです
-   `(sec|#num)<:time shift>` は、ホストのアイテム履歴を参照する関数に共通する第2パラメータで、以下を意味します:
    -   **sec** - 秒単位の最大[評価期間](/manual/config/triggers#evaluation-period)（時間の[サフィックス](/manual/appendix/suffixes)を使用できます）、または
    -   **#num** - 最新の収集値における最大[評価範囲](/manual/config/triggers#evaluation-period)（先頭にハッシュ記号が付く場合）
    -   **time shift**（任意）- 評価時点を過去に移動できます。time shift の指定方法の詳細は、[こちら](/manual/config/triggers/expression#time-shift)を参照してください。

[comment]: # ({/645b8a56-4d343eb8})

[comment]: # ({c645f0e4-f3b63bc1})
### 関数の詳細

関数パラメータに関する一般的な注意事項:

-   関数パラメータはカンマで区切ります
-   オプションの関数パラメータ（またはパラメータの一部）は`<` `>`で示します
-   関数固有のパラメータは各関数で説明します
-   `/host/key` および `(sec|#num)<:time shift>` パラメータは決して引用符で囲まないでください

[comment]: # ({/c645f0e4-f3b63bc1})

[comment]: # ({8a873b31-e4452b37})
##### forecast(/host/key,(sec|#num)<:time shift>,time,<fit>,<mode>) {#forecast}

アイテムの将来の値、最大値、最小値、差分または平均値。<br>
対応する値の型: *Float*、*Integer*。

パラメータ:

-   [共通パラメータ](#common-parameters)を参照;<br>
-   **time** - 予測する期間（秒単位、時間のサフィックスも使用可能）。負の値もサポート;<br>
-   **fit** (オプション; ダブルクォートで囲む必要あり) - 過去データにフィットさせる関数。サポートされるフィット:<br>*linear* - 線形関数（デフォルト）<br>*polynomialN* - N次多項式（1 <= N <= 6）<br>*exponential* - 指数関数<br>*logarithmic* - 対数関数<br>*power* - 累乗関数<br>なお、*polynomial1*は*linear*と同等;
-   **mode** (オプション; ダブルクォートで囲む必要あり) - 出力する値。サポートされるモード:<br>*value* - 値（デフォルト）<br>*max* - 最大値<br>*min* - 最小値<br>*delta* - *max*-*min*<br>*avg* - 平均値<br>なお、*value*は`now` + `time`時点のアイテム値を推定する。*max*、*min*、*delta*、*avg*は`now`から`now` + `time`までの区間でのアイテム値の推定を調査する。

コメント:

-   返す値が1.7976931348623158E+308より大きい、または-1.7976931348623158E+308より小さい場合、返り値はそれぞれ1.7976931348623158E+308または-1.7976931348623158E+308に切り詰められる;
-   式の誤用（誤ったアイテムタイプ、不正なパラメータ）でのみ未サポートとなり、それ以外のエラー時は-1を返す;
-   [予測トリガー関数](/manual/config/triggers/prediction)の追加情報も参照。

例:

    forecast(/host/key,#10,1h) #直近10個の値から1時間後のアイテム値を予測
    forecast(/host/key,1h,30m) #直近1時間のデータから30分後のアイテム値を予測
    forecast(/host/key,1h:now-1d,12h) #1日前の1時間分のデータから12時間後のアイテム値を予測
    forecast(/host/key,1h,10m,"exponential") #直近1時間のデータと指数関数から10分後のアイテム値を予測
    forecast(/host/key,1h,2h,"polynomial3","max") #直近1時間のデータと3次多項式から、今後2時間で到達しうる最大値を予測
    forecast(/host/key,#2,-20m) #直近2個の値から20分前のアイテム値を推定（アイテムの更新頻度が低い場合、last()よりも精度が高い場合がある）

[comment]: # ({/8a873b31-e4452b37})

[comment]: # ({834aceba-9b065620})
##### timeleft(/host/key,(sec|#num)<:time shift>,threshold,<fit>) {#timeleft}

アイテムが指定されたしきい値に達するまでに必要な秒数。<br>
サポートされている値の型: *Float*、*Integer*。

パラメータ:

-   [共通パラメータ](#common-parameters)を参照;<br>
-   **threshold** - 到達する値([単位のサフィックス](/manual/appendix/suffixes)が使用可能);
-   **fit** (オプション; ダブルクォートで囲む必要あり) - [forecast()](#forecast)を参照。

コメント:

-   返す値が1.7976931348623158E+308より大きい場合、返り値は1.7976931348623158E+308に切り捨てられます;
-   しきい値に到達できない場合は1.7976931348623158E+308を返します;
-   式の誤用(アイテムタイプの誤り、パラメータの無効化)の場合のみ未サポートとなり、それ以外のエラー時は-1を返します;
-   [予測トリガー関数](/manual/config/triggers/prediction)の追加情報も参照してください。

例:

    timeleft(/host/key,#10,0) #直近10個の値からアイテム値が0に達するまでの時間
    timeleft(/host/key,1h,100) #直近1時間のデータからアイテム値が100に達するまでの時間
    timeleft(/host/key,1h:now-1d,100) #1日前の1時間分のデータからアイテム値が100に達するまでの時間
    timeleft(/host/key,1h,200,"polynomial2") #直近1時間のデータとアイテムが2次多項式のように振る舞うと仮定して、アイテム値が200に達するまでの時間

[comment]: # ({/834aceba-9b065620})

[comment]: # ({ba58f5e4-9958c480})
[サポートされているすべての関数](/manual/config/triggers/expression#functions)を参照してください。

[comment]: # ({/ba58f5e4-9958c480})
