2

ガウス分布を表す値型があります。

struct Gauss {
    double mean;
    double variance;
}

これらの一連の値に対して積分を実行したいと思います。

Gauss eulerIntegrate(double dt, Gauss iv, Gauss[] values) {
    Gauss r = iv;
    foreach (Gauss v in values) {
        r += v*dt;
    }
    return r;
}

私の質問は、これらの正規分布の加算を実装する方法です。

スカラー ( dt) による乗算は十分に単純に思えました。しかし、それは簡単ではありませんでした!助けてくれたFOOSHNICKに感謝します:

public static Gauss operator * (Gauss g, double d) {
    return new Gauss(g.mean * d, g.variance * d * d);
}

しかし、追加は私を避けます。手段を追加するだけでよいと思います。私を悩ませているのは分散です。これらの定義はどちらも「論理的」に思えます。

public static Gauss operator + (Gauss a, Gauss b) {
    double mean = a.mean + b.mean;
    // Is it this? (Yes, it is!)
    return new Gauss(mean, a.variance + b.variance);        
    // Or this? (nope)
    //return new Gauss(mean, Math.Max(a.variance, b.variance));
    // Or how about this? (nope)
    //return new Gauss(mean, (a.variance + b.variance)/2);
}

統計的に正しい、または少なくとも「合理的な」バージョンの+オペレーターを定義するのを手伝ってくれる人はいますか?

代わりに区間演算を使用するようにコードを切り替えることができると思いますが、確率と統計の世界にとどまることを望んでいました。

4

7 に答える 7

8

2 つの正規分布の合計は、それ自体が正規分布です。

N(平均1, 分散1) + N(平均2, 分散2) ~ N(平均1 + 平均2, 分散1 + 分散2)

これはすべてウィキペディアのページにあります。

これらは実際には分散であり、標準偏差ではないことに注意してください。

// X + Y
public static Gauss operator + (Gauss a, Gauss b) {
    //NOTE: this is valid if X,Y are independent normal random variables
    return new Gauss(a.mean + b.mean, a.variance + b.variance);
}

// X*b
public static Gauss operator * (Gauss a, double b) {
    return new Gauss(a.mean*b, a.variance*b*b);
}
于 2009-01-07T21:40:47.957 に答える
3

より正確には:

確率変数Zが2つの無相関ガウス確率変数XとYの線形結合として定義されている場合、Z自体がガウス確率変数です。例:

Z = aX + bYの場合、mean(Z)= a * mean(X)+ b * mean(Y)、およびvariance(Z)= a 2 *variance(X)+ b 2 *variance(Y)。

確率変数が相関している場合は、それを考慮する必要があります。Variance(X)は、期待値E([X-mean(X)] 2)によって定義されます。これをZ=aX + bYで処理すると、次のようになります。

分散(Z)= a 2 *分散(X)+ b 2 *分散(Y)+ 2ab *共分散(X、Y)

ガウス分布を持たない2つの無相関確率変数を合計する場合、合計の分布は2つの成分分布の畳み込みになります。

2つの相関する非ガウス確率変数を合計する場合は、適切な積分を自分で処理する必要があります。

于 2009-01-19T15:19:53.443 に答える
2

+ 演算子の統計的に正しい、または少なくとも「合理的な」バージョンを定義するのを手伝ってくれる人はいますか?

おそらくそうではありません.2つのディストリビューションを追加することは異なることを意味するため-信頼性と保守性に取り組んできたので、タイトルからの私の最初の反応は、システムのmtbfが各部分のmtbfが正常に分散され、システムに冗長性がない場合. あなたは、2つの正規分布の効果の(論理)合計ではなく、2つの正規分布の独立変量の合計の分布について話している。多くの場合、演算子のオーバーロードには驚くべきセマンティクスがあります。あなたのコードが非常に具体的なターゲットオーディエンスを持っていない限り、私はそれを関数のままにして「normalSumDistribution」と呼びます。

于 2009-01-19T12:46:34.737 に答える
2

ハッ、ガウス分布を一緒に追加できないと思っていましたが、できます!

http://mathworld.wolfram.com/NormalSumDistribution.html

実際、平均は個々の分布の合計であり、分散は個々の分布の合計です。

于 2009-01-07T21:41:33.247 に答える
2

スカラーによる乗算は間違っています。分散に d の 2 乗を掛ける必要があります。定数を追加する場合は、それを平均に追加するだけで、分散は変わりません。2 つの分布を追加する場合は、平均を追加し、分散を追加します。

于 2009-01-07T21:45:00.680 に答える
1

私はそれがあなたがしている追加のタイプに依存すると思っていたでしょう. プロパティ(平均、標準偏差など)が2つの分布の合計に等しい正規分布を取得したいだけの場合は、他の回答で与えられたプロパティの追加で問題ありません。これは、PERT などで使用される仮定であり、多数の正規確率分布が加算されると、結果の確率分布は別の正規確率分布になります。

問題は、追加される 2 つのディストリビューションが似ていない場合に発生します。たとえば、平均が 2 で標準偏差が 1 の確率分布と、標準偏差が 2 である 10 の確率分布を加算するとします。これら 2 つの分布を加算すると、2 つのピークを持つ確率分布が得られます。そして10時の1つ。したがって、結果は正規分布ではありません。分布を追加するという仮定は、元の分布が非常に似ている場合、または元の分布が多数あり、山と谷が均等になる場合にのみ有効です。

于 2009-01-19T15:44:11.490 に答える
1

一連の価値に対する「統合」と呼んでいるものが好きかどうかはわかりません。微積分的な意味での言葉ですか?数値積分をしようとしていますか?それを行うための他のより良い方法があります。あなたのものは私には正しく見えません。最適なことは言うまでもありません。

ガウス分布は滑らかな関数です。素敵な直交アプローチまたはルンゲクッタの方がはるかに良いアイデアだと思います。

于 2009-01-07T21:46:46.777 に答える