AD値 → Alcohol Concentration 換算式の推測¶
対象ログ: breath_test_log.csv
抽出方法¶
passiveTestコマンドの最終結果行(final flag=...)と、同じelapsed_sで発行されたfindAlcoholAD行(=同時刻にトリガーされたAD生値)をペアとして抽出した。中間に挟まるMPa行や、待機中に追加取得されたfindAlcoholAD行はセンサー安定待ちの読み取りとみなし、ペアリングからは除外している。
Alcohol Concentration が 0.05〜2.0 の範囲にある結果のみを対象とした。
抽出結果テーブル¶
| AD値 | elapsed_s | Alcohol Concentration | flag |
|---|---|---|---|
| 530 | 18.503 | 0.1023 | 2 |
| 1097 | 107.054 | 0.1116 | 2 |
| 1544 | 89.468 | 0.1990 | 2 |
| 3403 | 67.264 | 0.5701 | 3 |
| 9252 | 55.550 | 1.6384 | 3 |
範囲外として除外した値:
- 0.0272 (AD=256, flag=1) — 0.05未満
- 3.8337 (AD=13449, flag=3) — 2.0超
- elapsed=120.456 の行 — TIMEOUT(結果なし)
回帰分析¶
線形フィット¶
R² ≈ 0.997べき乗フィット(log-log回帰)¶
R² ≈ 0.953線形フィットの方が当てはまりが良く、この範囲ではAD値とAlcohol Concentrationはほぼ比例関係とみなせる。
推測される換算式¶
逆算(AD値から濃度を求める場合の逆関数):
注意点・限界¶
- サンプル数が5点と少なく、特に低AD側(AD=530)は残差が大きい(実測0.1023 vs 予測0.044)。傾き・切片の精度には限界がある。
- 切片が負のため、AD値が概ね290未満では式上Concentrationが負になり物理的に不整合。この式は今回検証した AD 530〜9252 の範囲でのみ有効な近似。
- ペアリングは「同一elapsed_s(同時刻に発行されたコマンド)のAD値=その瞬間の生値」という前提に基づく。ログ上で単純に直前の行のAD値を使う想定であれば結果が変わる可能性がある。
- より精度の高い換算式を得るには、低濃度域(0.05近辺)を含むより多くのサンプルを収集することが望ましい。