27/31 プロファイルで WATCH が発火。平均リードタイム 96.6秒(中央値 105秒)と、 焙煎士が介入するのに十分な余裕を提供している。4件の未発火は緩やかなRoR変動を持つ豆(Magarrissa-Tulise、スイカ系)で共通しており、 豆種・焙煎プロファイルの特性による可能性が高い。
予測値が実際の残り時間より 平均25.8秒短く 表示されている。
原因は CSD_FC_ESTIMATE_MAX_SEC = 60 の設定。WATCHが実際には平均97秒前に発火するのに、
上限を60秒と仮定しているため、発火直後から既に「60秒」という不足した値を表示し続ける。
現状では「±15秒」に収まるのは全tickの 16.9% のみ。
AR(1) ≥ 0.50 のしきい値に達するプロファイルが 31 件中 12 件のみ。 Jigesa_no17 での最大 AR(1) = 0.45–0.48 という実測値に基づき 0.50 に下げたが、 それでも多くのプロファイルでは届かない。WARNが発火したとしてもリードタイムが WATCH より平均20秒しか短くならず、両者の差別化が薄い。
no9(5秒)・no23(10秒)の2プロファイルでWATCHが発火したのはFCのわずか5〜10秒前。 これらはbias値も大きく正方向(過大推定 +43〜+50秒)で、逆に「まだ60秒ある」と表示しながら すぐにFCが来るという最悪ケース。AR(1)が遅れて上昇したか、warmup期間の影響が考えられる。
実データ上のWATCH平均リードタイムが 96.6秒 のため、上限を 100秒 に設定することで AR(1)=0.35 時点での推定値が実態に近くなる。サンプル計算:
AR(1)=0.35 (WATCH): frac = (0.85-0.35)/(0.85-0.35) = 1.00 → 100秒(現行: 60秒) AR(1)=0.50 (WARN): frac = (0.85-0.50)/(0.85-0.35) = 0.70 → 70秒(現行: 42秒) AR(1)=0.70: frac = (0.85-0.70)/(0.85-0.35) = 0.30 → 30秒(現行: 18秒) AR(1)=0.85 (IMMIN): 0秒(変更なし)
変更箇所: live_monitor.py の CSD_FC_ESTIMATE_MAX_SEC = 60 → 100
全プロファイルのAR(1)最大値を確認したところ、多くは 0.45〜0.55 付近で頭打ちになっている。
現行の CSD_AR1_WARN = 0.50 では半数以上で未発火。
0.45 に引き下げることで発火率が改善する見込み(推定 60〜70%)。
ただしWATCHとの差別化が更に薄まるため、UI表現の見直しも検討すること。
変更箇所: live_monitor.py の CSD_AR1_WARN = 0.50 → 0.45
WATCH発火直後(FC 80〜120秒前)は予測精度が低い(bias大)。
FC 30秒以内になると誤差が収束する傾向がある。
UIで ±15秒 の表示を発火直後は ±40秒、FC近接時は ±15秒 に
動的変更することで、ユーザーへの過信を防げる:
AR(1) < 0.50 → 「推定 XX秒 ±40秒」 AR(1) 0.50〜0.70 → 「推定 XX秒 ±25秒」 AR(1) > 0.70 → 「推定 XX秒 ±15秒」
未発火の4プロファイルはすべてMagarrissa-Tulise系またはスイカ系。 ゆっくり上昇する系の豆はKalman innovationの自己相関が蓄積しにくい可能性がある。 データが10件以上蓄積できたら豆種別のCSD_WATCHしきい値調整(例: 遅い豆 → 0.30)を検討。
| ファイル | FC時刻 | CSD状態 | WATCHリード | WARNリード | MAE | Bias | アクティブtick数 |
|---|