I²CNERへの研究提案 · 体験型ショーケース v2.1
時刻オフセットか、漏えいか?
センサーのデータでは、二つの問題がよく似て見えることがあります。本当の水素漏えいと、時刻がずれた時計です。
水素ディスペンサー配管の質量収支で、出口側の一定の時刻オフセット(時計の誤り)と実際の水素の漏えいは、いつ区別でき、いつ区別できないのか。シミュレーター、判定法の性能マップ、ブラウザでの再計算、ブラインドテストの4つで確かめてください。
なぜ重要か。ステーションは、入ってきた水素と出ていった水素を比べて漏えいを確認できます。片方の計器の時計が1秒未満ずれるだけで、帳尻は気体が消えたように見えます。そして小さな本物の漏えいも、同じ種類の誤差に紛れ込みえます。このページでは例示モデルで、判定法が両者を区別できる場合とできない場合を示します。
例示 シミュレーションはすべて公開済みベンチマーク v1.5.0 の例示モデルです。実在のステーション・計量器・警報設定の性能ではありません。割合は v1.5.0 の公開シミュレーション結果のみから示し、結果にない条件は灰色で示します(補間なし)。
九州大学・I²CNERの公式ページではありません。提案中の受入れ先(協議中):I²CNER(九州大学)。
1. 時計か、漏えいか?
例示
スライダーを動かすと、v1.5.0 のモデル(公開コードそのもの)で1回の充填をこのブラウザ内で計算し、公開しきい値で判定します。1回の充填は1つの例にすぎません。割合はマップ(2)をご覧ください。
帯(濃い部分):±0.3 s =ベンチマークで宣言した範囲(しきい値はこの範囲の時刻オフセットで較正)。点線:±0.4 s = B5 が探索する許容オフセット(±2サンプル × 0.2 s)。2つは別の値です。
モデルの漏えい:漏えい流量 = 設定した割合 × 定常流量 × p/p_end(漏えい開始から流れの終わりまで)。充填中に圧力 p が上がるため、「5%」は充填中ずっと一定の実際の割合ではありません。
ここでのドリフト(0.0005~0.006 s/s ≈ 500~6000 ppm)はストレス値で、通常の時計よりはるかに大きい値です。
入口出口残差 RB2 の許容幅(参考)B5 の統計量
グラフの数値(10 s ごと)
判定(例示)
各判定法の警報(公開しきい値):▲ 正側の警報 ▽ 負側の警報 – 警報なし
質量収支(この充填・例示)
判定の規則は本ページの表示用の組合せです(B5 を主とし、A と比較)。研究の結論ではありません。採点はベンチマークと同じで、B5 の最初の警報が漏えい開始以後かつ正側のときだけ「検知」と数えます。
2. 判定法の性能マップ(公開シミュレーション結果のみ)
行は漏えいの大きさ、列は時刻オフセット δ。セルの値は、このモデルで選んだ判定法が正しく判定した割合です(漏えいあり:漏えい開始後の最初の警報が正側、漏えいなし:警報なし)。区別できるかどうかの一般的な限界ではありません。灰色は公開結果にない条件で、補間していません。セルを押すとシミュレーターに設定します。
判定法の記号: A0 流量のみ · A +配管内水素質量の変化 · B1/B2 一定の時刻許容幅 u·|Δq|(u = 0.2 / 0.4 s)· B3 状態に応じた許容幅 · B4 2段階(B2 で選別し C)· B5 許容される時刻合わせを探索する判定法(出口側を −2…+2 サンプル=±0.4 s ずらす、正側・負側の2系統)· C 1 s ブロックの片側 CUSUM 2系統 · I1–I3 充填全体の分類器(別の手順:各セル80回、漏えいは開始時から)。
3D表示:高さ=正しい判定の割合(v1.5.0 の公開シミュレーション結果のみ)。灰色の平らなタイルは公開結果にない条件(高さなし・補間なし)。枠で囲んだ帯は宣言した範囲 ±0.3 s。ドラッグまたは矢印キーで回転、棒をタップすると値を表示します。下の表と同じ数値です。
表を横にスワイプすると、すべてのオフセットが見られます。
| 漏えい\δ | −1.0 | −0.5 | −0.3 | −0.2 | −0.1 | 0.0 | +0.1 | +0.2 | +0.3 | +0.5 | +1.0 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| なし | 0% (0/400) | 99.75% (399/400) | 100% (400/400) | 100% (400/400) | 100% (400/400) | 100% (400/400) | 100% (400/400) | 100% (400/400) | 100% (400/400) | 91.75% (367/400) | 0% (0/400) |
| 1% | 結果なし | 結果なし | 結果なし | 結果なし | 結果なし | 0% (0/400) | 結果なし | 結果なし | 結果なし | 結果なし | 結果なし |
| 2% | 結果なし | 結果なし | 16.25% (65/400) | 結果なし | 結果なし | 16% (64/400) | 結果なし | 16% (64/400) | 16% (64/400) | 結果なし | 結果なし |
| 5% | 結果なし | 結果なし | 90% (360/400) | 結果なし | 結果なし | 80% (320/400) | 結果なし | 80% (320/400) | 80% (320/400) | 結果なし | 結果なし |
| 10% | 結果なし | 結果なし | 100% (400/400) | 結果なし | 結果なし | 99.5% (398/400) | 結果なし | 99.5% (398/400) | 98.75% (395/400) | 結果なし | 結果なし |
色=正しい判定の割合(cividis、0% 濃い青 → 100% 明るい色)。斜線の灰色=公開結果にない条件。枠で囲んだ列=宣言した範囲 ±0.3 s。
ケースの詳細
時刻・計器の障害(漏えいなし):警報なしの割合
3. 自分で確かめる
公開しているベンチマークのコード(mass_balance_clock.mjs)を、このブラウザの Web Worker で実行し、公開値と比べます。サーバーには何も送りません。
expected_output.json(v1.5.0)の SHA-256(node mass_balance_clock.mjs > out.json で再現): c2642719411660360de6113e17f84b462ab109589c9a38d62df4fff9748242a7
クイック検証(部分集合)
① 配布ファイル2つ(コードと expected_output.json)の SHA-256 を SHA256SUMS.txt と照合。② 主較正(7層 × 1000回の漏えいのない充填)を再計算し、しきい値9個を比較。③ 5条件(δ 0/+0.3/+0.5 s、漏えい 2%/5%)× 400回を再計算し、各判定法の警報数・正しい診断数56個を比較。合計9000回の充填(デスクトップで約5秒)。感度分析・ROC・ブートストラップ・マップ・費用は含みません。
完全な再計算(全体)
run() の出力全体を JSON にし、SHA-256 を公開ハッシュとバイト単位で比較します。約55000回の充填(デスクトップの Node.js で約35秒、スマートフォンでは未計測、数分かかる可能性があります)。
4. ブラインドテスト
例示
10件の充填の流量と残差を見て、時刻オフセットか漏えいかを当ててください。5件は時刻オフセットのみ、5件は漏えい(時刻オフセットを伴う場合あり)で、順序はランダムです。すべて v1.5.0 の評価用母集団の充填を例示モデルで計算したものです。
限界と注意
- 例示モデルです(仮定は README に記載)。合成したシミュレーション結果であり、実測データではありません。
- 1回の充填の判定は偶然に左右されます。割合を示すのはマップ(2)の公開シミュレーション結果だけです。
- シミュレーターとブラインドテストは、公開しきい値(小数4桁に丸めた値)を使います。クイック検証は丸める前の値を再計算します。
- スライダーではベンチマークにない組合せ(例:ドリフト+時刻オフセット)も試せますが、その結果は1回の例で、公開された割合ではありません。
- 拡張カルマンフィルタ・プロファイル尤度は実装していません。このモデルでは漏えいが圧力に影響しないため(モデルの単純化)、独立した圧力・温度による確認は評価できません。
- B5 は許容される時刻合わせの探索を表す説明的な名前で、尤度比検定としての導出は主張しません。探索は窓ごとに繰り返すため、1つの一定のオフセットが充填全体を説明することは示しません。