pod_from_ahat — SPC pod op

• Data kinds: table → table

• Call: import fullseye as fs; fs.ledger.pod_from_ahat(fit, a_dec, level=0.95, n_grid=200, a=None) (implementation को सीधे call करना हो तो import pod; pod.pod_from_ahat(fit, a_dec, level=0.95, n_grid=200, a=None), registry से लेना हो तो opsspc.get("pod_from_ahat"))

• GPU: नहीं (केवल CPU reference implementation)

उपयोग

â बनाम a regression और decision threshold a_dec से POD(a) curve तथा a50 / a90 / a90/95 (table)।

> नीचे का विस्तृत विवरण मूल text में है — सारांश और headings का अनुवाद हो चुका है।

判定は â > 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 価にならず、読まないこと。

★Wald の a90/95 は点数が少ないと信頼水準に届かない。真の a90 が既知の合成(log-log、σ = 0.4、2000 反復)で「a90/95 ≥ 真の a90」の割合は名目 95 % に対し n = 10 で 0.79、n = 40 で 0.89、n = 100 で 0.92(2026-11-09 実測)。そこで a90_95_lr も返す: a90 を固定して (β1, σ) について最大化したプロファイル対数尤度が ℓmax − χ²₁(2·level − 1)/2 まで落ちる大きさ(pod_hitmiss_fit と同じ作り、打ち切りも尤度に入る)。同じ合成で被覆率は n = 10 で 0.86、n = 40 で 0.92、n = 100 で 0.93(打ち切りありでも同じ) —— Wald より水準に近いが、少数点では足りないことに変わりはない。尤度が十分に落ちないときは None と lr_status = "unbounded"、上限が元の単位で表せないほど大きい(対数座標の exp が溢れる)ときは None と "overflow"、プロファイルの最大化が途中で失敗したときは None と "profile_failed"(失敗を棄却と数えると上限が楽観側に出るため)、fit に当てに使った x y status が無いときは None と "no_data"。n < 40(1823A の推奨最小) なら small_sample が True。

★a_dec_below_floor が True のとき、a_dec は fit の censor_low(記録の下限)より下 —— 床より下の応答は観測されていないので、その閾値の POD は回帰の外挿だけで決まる(1823A は a_dec ≥ 記録の閾値を前提にする)。a_dec_above_ceiling は censor_high の上で同じ。

★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) の外。

संदर्भ (sample data, साहित्य)

• Sample data catalog (DL URL / license) — 2-D के लिए skimage.data (BSD/public) + synthetic, 3-D के लिए real data sources (Stanford/PDS आदि) के DL URL।

• Operators का स्रोत और संदर्भ — इस op family के मूल research/methods के स्रोत।

• Algorithm का मानक स्रोत (लेखक, वर्ष) और उपयोग ऊपर की family usage guide में दिए गए हैं।

चलाए जा सकने वाले उदाहरण (verified samples जो सच में यह op call करते हैं)

• poc_equipment_selection_map — py -3.11 examples/poc_equipment_selection_map.py

• poc_pod_lighting — py -3.11 examples/poc_pod_lighting.py

• poc_sam_hybrid_bonding_voids — py -3.11 examples/poc_sam_hybrid_bonding_voids.py

वे अगले ops जिनसे type जुड़ता है (table को input के रूप में लेते हैं)

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

इसी category के (pod)

proportion_interval · trials_for_all_success · pod_ahat_fit · pod_hitmiss_fit · pod_false_call · pod_decision_tradeoff


*Provenance: pod.py — SPC operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*

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