1

MATLAB で確率密度関数をシミュレートするにはどうすればよいですか?

fx(x)={ x/8    0<=x<=4
      {   0     Other
4

1 に答える 1

7

任意の確率密度関数からのシミュレーションは、次のように行われます。

1) 逆累積分布を導出します。

2) 一様 [0, 1] 分布からシミュレートします。

3) 一様 [0, 1] 数を逆累積分布に当てはめます。

あなたの状況では、扱いやすい簡単な確率密度があるため、これは宿題の質問であると思われます。あなたが自分で解決しようとしたことを示すコードを投稿していないことを考えると、私はあなたのために答えを書き出すつもりはありません.

代わりに、逆累積分布を自分で導出してみませんか? まず、累積分布を取得する必要があります。これは、マイナス無限大からxまでの確率密度の積分を見つけることで実行できます。これは、この場合、0からxまでの積分に相当します。これを行ったら、その逆を見つける必要があります。ここの例は、単純なケースでそれを行う方法を示すのに十分なはずです. そこまで到達したら、 を使用rand(100, 1)して、均一な [0, 1] 密度から 100 回の描画をシミュレートし、それらの数値を逆累積分布に当てはめます。

問題が発生した場合は、自由に質問を編集して追加し、この回答にコメントを残してください。お手伝いします. 私は次の 1 時間かそこらの周りにいます。

乾杯。

更新: OPの宿題はおそらく今までに期限が来たと思うので、完全を期すために:確率密度の積分、つまり累積分布はf(x)=(1/16)x ^ 2です。x = 0 の場合は f(x) = 0、x = 4 の場合は f(x) = 1 であることに注意してください。これは、問題が確率密度の定義域を正しく示していることを示しています。次に、f(x) は g(x) = 4 * x^(1/2) の逆 CDF を意味します。したがって:

MyInverseCDF = @(x) (4 * sqrt(x));
MySimulatedDraw = MyInverseCDF(rand(100, 1));

以下を使用して、すべてが機能していることを視覚的に検証できます。

hist(MySimulatedDraw);

もう1つ、ここに別の関連するSOの質問へのリンクがあります: definition-your-own-probability-distribution-function-in-matlab

于 2012-12-04T04:00:09.470 に答える