2

次の 2 つの確率変数があるとします。

X の場合、平均 = 6 および標準偏差 = 3.5
Y の場合、平均 = -42 および標準偏差 = 5

最初の 2 つに基づいて新しいランダム変数 Z を作成したいと思います。X は 90% の確率で発生し、Y は 10% の確率で発生します。

Z の平均を計算するのは簡単です: 0.9 * 6 + 0.1 * -42 = 1.2

しかし、単一の関数で Z のランダムな値を生成することは可能ですか? もちろん、私はそれらの線に沿って何かをすることができました:

if (randIntBetween(1,10) > 1)
    GenerateRandomNormalValue(6, 3.5);
else
    GenerateRandomNormalValue(-42, 5);

しかし、正規である必要のない確率変数 (Z) の確率密度関数として機能する単一の関数が本当に必要です。

くだらない疑似コードでごめんなさい

ご協力いただきありがとうございます!

編集:ここに1つの具体的な尋問があります:

Z からの 5 つの連続する値の結果を加算するとします。10 より大きい数値で終わる確率はどのくらいでしょうか?

4

5 に答える 5

4

しかし、正規である必要のない確率変数 (Z) の確率密度関数として機能する単一の関数が本当に必要です。

わかりました、密度が必要な場合は、次のとおりです。

rho = 0.9 * density_of_x + 0.1 * density_of_y

ただし、1) CDF を計算する (面倒ですが、実行不可能ではない) 2) 反転する (これには数値ソルバーが必要になります) しないと、この密度からサンプリングすることはできません。または、拒否サンプリング(またはバリアント、重要度サンプリングなど)を行うこともできます。これはコストがかかり、正しく処理するのが面倒です。

したがって、「if」ステートメントを使用する必要があります (つまり、ジェネレーターを 3 回呼び出す)。

于 2010-12-15T20:45:13.253 に答える
2

確率変数が x=(mean,stdev) で示される場合、次の代数が適用されます

number * x = ( number*mean, number*stdev )

x1 + x2 = ( mean1+mean2, sqrt(stdev1^2+stdev2^2) )

したがって、X = (mx,sx)、Y= (my,sy) の場合、線形結合は

Z = w1*X + w2*Y = (w1*mx,w1*sx) + (w2*my,w2*sy) = 
    ( w1*mx+w2*my, sqrt( (w1*sx)^2+(w2*sy)^2 ) ) =
    ( 1.2, 3.19 )

リンク:正規分布は、その他のセクション、項目 1 を探します。

PS。変な表記ですみません。新しい標準偏差は、ピタゴラスの定理に似た方法で計算されます。二乗和の平方根です。

于 2010-12-15T20:44:58.170 に答える
2

これは分布の形式です:

ListPlot[BinCounts[Table[If[RandomReal[] < .9,
    RandomReal[NormalDistribution[6, 3.5]], 
    RandomReal[NormalDistribution[-42, 5]]], {1000000}], {-60, 20, .1}], 
    PlotRange -> Full, DataRange -> {-60, 20}]

代替テキスト

通常の変数を追加するのではなく、特定の確率でどちらかを選択するだけなので、通常ではありません。

編集

これは、この分布で 5 つの変数を追加するための曲線です。

代替テキスト

上部と下部のピークは分布の 1 つを単独で取得することを表し、中央のピークは混合を説明します。

于 2010-12-15T21:13:36.167 に答える
0

最も簡単で一般的に適用可能な解決策は、問題をシミュレートすることです。

1,000,000 回 (非常に高い回数) の区分関数を実行し、結果のヒストグラムを生成し (それらをビンに分割し、各ビンのカウントを N (私の例では 1,000,000) で割ります)。指定されたビンごとに Z の PDF の近似値を使用します

于 2010-12-15T20:37:53.480 に答える
0

ここには多くの未知数がありますが、基本的には、2 つ (またはそれ以上) の確率関数を相互に追加したいだけです。

任意の確率関数について、確率曲線の下の面積 (積分) を計算し、0 とその面積の間の乱数を生成することで、その密度の乱数を計算できます。次に、面積が乱数と等しくなるまで曲線に沿って移動し、それを値として使用します。

このプロセスは、任意の関数 (または 2 つ以上の関数の合計) に一般化できます。

詳細: 0 から 1 の範囲の分布関数 f(x) がある場合。0 から 1 までの f(x) の積分を計算することにより、分布に基づいて乱数を計算でき、曲線の下の面積が得られます。 、それを A としましょう。

ここで、0 と A の間の乱数を生成します。その数を r と呼びましょう。ここで、0 から t までの f(x) の積分が r に等しくなるように、値 t を見つける必要があります。t は乱数です。

このプロセスは、任意の確率密度関数 f(x) に使用できます。2 つ (またはそれ以上) の確率密度関数の合計を含みます。

あなたの関数がどのように見えるかはわかりません。したがって、これらすべての分析ソリューションを計算できるかどうかはわかりませんが、最悪のシナリオでは、数値手法を使用して効果を概算できます。

于 2010-12-15T20:38:46.537 に答える