MATLAB で確率密度関数をシミュレートするにはどうすればよいですか?
fx(x)={ x/8 0<=x<=4
{ 0 Other
任意の確率密度関数からのシミュレーションは、次のように行われます。
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