fullseye

pod_from_ahat — SPC pod op

使い方

â vs a の回帰と判定閾値 a_dec から POD(a) 曲線と a50 / a90 / a90/95(table)。

判定は â > a_dec で「検出」。回帰 y = β0 + β1 x + ε のもとで POD(x) = Φ((x − μ)/σ_pod)、μ = (y_dec − β0)/β1、σ_pod = σ/β1 (MIL-HDBK-1823A G.3.4.3。y_dec は a_dec を回帰の y 座標へ写したもの)。 a50 = μ、a90 = μ + z_0.9 σ_pod(z_0.9 = 1.281552)を元の単位へ戻す。

a90/95 はデルタ法: (β0, β1, σ) の共分散をヤコビアン ∂(μ, σ_pod)/∂(β0, β1, σ) で写し、x90 + z_level · sqrt(vμ + z_0.9² vσ + 2 z_0.9 c)。 level は片側の信頼水準(既定 0.95 → z = 1.644854)。

曲線の下限 pod_lower は「各 POD 水準 p の大きさ a_p の上限」をつないだ線 (水平方向のデルタ法)。だから下限が 0.9 を横切る大きさは a90/95 と一致する。 bound_monotone が False のとき(σ_pod が自分の標準誤差の z 倍に届かない = データが少なすぎる)下限曲線は 1 価にならず、読まないこと。

★a90_95_beyond_data が True のとき、a90/95 は試した最大の大きさより先にある —— 回帰の直線を試験の外へ延ばした外挿で、1823A が「データの外で POD を語るな」と いう領域。数は返すが、その数で合否を決めてはいけないことを旗で同伴させる (PoC の暗視野照明: 試した最大 300 µm に対し a90/95 = 5,952 µm)。

a を渡すとその大きさで曲線を評価する。省略時は当てに使った大きさの範囲を 少し広げた n_grid 点(対数座標なら等比)。

空の入力(fit が空の dict)は ValueError。 拒否(ValueError): pod_ahat_fit の表でない、β1 <= 0(応答が大きさとともに 増えない = 検出曲線が無い)、β1 が自分の標準誤差の z_level 倍以下(増えると 言えない —— その傾きで割った a50 は 10^12 µm のような数になる)、a_dec が 非有限(対数座標で 0 以下)、level が (0.5, 1) の外。

参考(サンプルデータ・文献)

実行できる例(この op を実際に呼ぶ検証済みサンプル)

型が繋がる次の op(table を入力に取れる)

msa_anova_table · msa_gauge_rr · msa_bias_linearity · msa_attribute_agreement · gum_standard_uncertainty · gum_propagate · gum_expanded · gum_monte_carlo

同カテゴリ(pod)

pod_ahat_fit · pod_hitmiss_fit · pod_false_call · pod_decision_tradeoff


Provenance: pod.py — SPC operator registry. この per-op ノートは tools/opdocs.py md が自動生成(手編集しない)。

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.