PICP(Prediction Interval Coverage Probability)

中級

4.2.11

PICP(Prediction Interval Coverage Probability)

最終更新 2020-06-17 読了時間 1 分
まとめ
  • PICP は予測区間に真値が含まれる割合を測るキャリブレーション指標です。
  • 予測区間の上下限を生成し、PICP と PIW を計算して区間の妥当性を確認します。
  • 信頼水準の設定や MIS との併用など区間評価の注意点を整理します。

1. 定義 #

予測下限を \(L_i\)、上限を \(U_i\)、実測値を \(y_i\)、ターゲット信頼水準を \(\gamma\) とすると、

$$ \mathrm{PICP} = \frac{1}{n} \sum_{i=1}^n \mathbf{1}\{ L_i \le y_i \le U_i \} $$

ターゲット値 \(\gamma\)(例:0.9)に対して PICP が同程度か、どれくらいズレているかを確認します。


2. Python で計算 #

1
2
3
4
5
6
7
8
9
import numpy as np

def picp(y_true: np.ndarray, lower: np.ndarray, upper: np.ndarray) -> float:
    '''Prediction interval coverage probability.'''
    inside = (y_true >= lower) & (y_true <= upper)
    return float(inside.mean())

coverage = picp(y_test, lower_bound, upper_bound)
print(f"PICP: {coverage:.3f}")

lower_boundupper_bound はモデルが出力した予測区間です。LightGBM の quantile モードや NGBoost などの分布予測モデルで取得できます。


3. 理想的な状態 #

  • PICP ≒ 目標信頼水準(例:0.9)のとき、区間が適切にキャリブレーションされている。
  • PICP が低すぎる → 区間が狭すぎて過小評価。
  • PICP が高すぎる → 区間が広すぎて保守的。 区間幅も併せて確認しないと、過度に広い区間で PICP を満たしてしまうことがあるため注意します。

4. PINAW(Normalized Average Width)との併用 #

区間の幅を評価する指標として PINAW(Prediction Interval Normalized Average Width)があります。

$$ \mathrm{PINAW} = \frac{1}{nR} \sum_{i=1}^n (U_i - L_i) $$

ここで \(R\) はデータの範囲です。PICP と PINAW を併用し、十分な被覆率と適切な幅を両立できているかを確認します。


5. 実務での活用 #

  • 在庫・需給管理:欠品を避けるために 90% 区間で PICP を監視。
  • エネルギー予測:需給調整のリスク管理として区間予測の信頼性を評価。
  • 金融リスク:Value at Risk (VaR) のバックテストに近い概念で使用。

まとめ #

  • PICP は予測区間が目標信頼水準を満たしているかをチェックする指標。

  • 過小/過大評価を見極めるために PINAW やピンボール損失と併用すると効果的。

  • 区間予測を提供するモデルでは、PICP を定期的にモニタリングして信頼性を保とう。


ノイズと各指標の変化 #

ノイズ量を変えた場合の各指標の変化を確認できます。