コンテンツにスキップ

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(結果なし)

回帰分析

線形フィット

Alcohol Concentration ≈ 0.0001823 × AD − 0.0527
R² ≈ 0.997

べき乗フィット(log-log回帰)

Alcohol Concentration ≈ 1.008×10⁻⁴ × AD^1.052
R² ≈ 0.953

線形フィットの方が当てはまりが良く、この範囲ではAD値とAlcohol Concentrationはほぼ比例関係とみなせる。

推測される換算式

Alcohol Concentration ≈ 0.000182 × AD − 0.053

逆算(AD値から濃度を求める場合の逆関数):

AD ≈ 5495 × (Concentration + 0.053)

注意点・限界

  • サンプル数が5点と少なく、特に低AD側(AD=530)は残差が大きい(実測0.1023 vs 予測0.044)。傾き・切片の精度には限界がある。
  • 切片が負のため、AD値が概ね290未満では式上Concentrationが負になり物理的に不整合。この式は今回検証した AD 530〜9252 の範囲でのみ有効な近似。
  • ペアリングは「同一elapsed_s(同時刻に発行されたコマンド)のAD値=その瞬間の生値」という前提に基づく。ログ上で単純に直前の行のAD値を使う想定であれば結果が変わる可能性がある。
  • より精度の高い換算式を得るには、低濃度域(0.05近辺)を含むより多くのサンプルを収集することが望ましい。