fullseye

gum_monte_carlo — SPC uncertainty op

使い方

GUM 補遺 1(JCGM 101)のモンテカルロ伝播(table)。

各入力量を分布から引いて y = sum_i c_i x_i を作り、標本から標準不確かさと 最短の包含区間を返す。既定は正規分布で、distribution に列名を渡すと gum_standard_uncertainty と同じ形の名前(rectangular / triangular / …)を 成分ごとに指定できる(半幅ではなく標準不確かさを持つ分布を作る)。

value と power に列名を渡すと 冪モデル を回す:

y = sum_i c_i (x_i + e_i)^{p_i}

(e_i が分布から引いた揺らぎ。既定は x_i = 0 / p_i = 1 = 線形。) 冪までに絞ったのは、台帳に載る op は宣言的でなければならず、任意の関数を 受け取れないため —— それでも規格の非線形の例(二乗の和)はこれで表現でき、 伝播則が破綻する場面を再現できる。

★これは gum_propagate の独立な検算である。伝播則は偏微分と分散の代数、 こちらは乱数の標本 —— 導出も実装も別なので、線形モデルでは u_mc -> u_c(1/sqrt(n) の速さ)に近づくはずで、近づかなければどちらかが 壊れている。相関は Cholesky 分解で入れるので、伝播則の相関項とは別の経路を通る。

★★非線形では両者が食い違うのが正しい。規格の例(比較損失 dY = X1^2 + X2^2、各 u = 0.005)を x1 = x2 = 0 で回すと:

伝播則   感度 ``c_i = 2 x_i`` が**両方 0** になるので ``u_c = 0``、区間 [0, 0]
モンテカルロ  ``dy = 50e-6``、``u = 50e-6``、区間 ``[0, 150e-6]``

伝播則は「不確かさゼロ」と答える —— これは実装の誤りではなく、1 次近似が 極値で情報を失うという手法そのものの限界。こういう場面があるから補遺 1 の モンテカルロが要る。x1 = 0.010 では伝播則の区間が [-96, +296]e-6 と 負の損失を含み(物理的にありえない)、x1 = 0.050 まで離れると [1520, 3480] 対 [1590, 3543] と近づく。

★★正規分布でない入力では、包含区間は k u_c と一致しない。矩形分布を 足し合わせると中心極限定理で正規に近づくが、成分が 1 つだけなら最短 95 % 区間の 半幅は 0.95 a(支持の端 a ではない —— 95 % ぶんの幅しか要らない)で、 k u = 1.96 a/sqrt(3) = 1.1316 a より狭い。比は 1.959964/(sqrt(3) x 0.95) = 1.1911 という閉形式で、実測 1.1914。 これは欠陥ではなく伝播則が分布の形を捨てていることの現れなので、両方返して 読み手に見せる(この 0.95 を最初 a と思い込んで門を誤らせた)。

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

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

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

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

同カテゴリ(uncertainty)

gum_standard_uncertainty · gum_propagate · gum_expanded · gum_validate


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

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