タグ付けされた質問 「inverse-cdf」

2
分位(逆CDF)関数の理解を手伝ってください
分位数関数について読んでいますが、はっきりしていません。以下に示す説明よりも直感的な説明を提供できますか? cdfは単調増加関数であるため、逆関数になります。これを示しましょう。場合の累積分布関数であるは、の値であるように、。これは分位数と呼ばれます。値は分布の中央値で、確率質量の半分が左側に、半分が右側にあります。値 およびは、下位および上位の四分位数です。F - 1 F X F - 1(α )X α P (X ≤ X α)= α α F F - 1(0.5 )F - 1(0.25 )F - 1(0.75 )FFFF−1F−1F^{−1}FFFバツXXF− 1(α )F−1(α)F^{−1}(\alpha)バツαxαx_\alphaP(X≤ Xα)= αP(X≤xα)=αP(X \le x_\alpha) = \alphaαα\alphaFFFF− 1(0.5 )F−1(0.5)F^{−1}(0.5)F− 1(0.25 )F−1(0.25)F^{−1}(0.25)F− 1(0.75 )F−1(0.75)F^{−1}(0.75)

2
逆変換方法はどのように機能しますか?
反転法はどのように機能しますか?密度 over ランダムサンプルとし、したがって cdfで。次に、反転法により、の分布をとして取得します。 f (x ; θ )= 1X1,X2,...,XnX1,X2,。。。、バツnX_1,X_2,...,X_n 0&lt;X&lt;1FX(X)=X1/θ(0、1)XF - 1 X(U)=Uθf(x;θ)=1θx(1−θ)θf(バツ;θ)=1θバツ(1−θ)θf(x;\theta)={1\over \theta} x^{(1-\theta)\over \theta} 0&lt;x&lt;10&lt;バツ&lt;10<x<1FX(x)=x1/θFバツ(バツ)=バツ1/θF_X(x)=x^{1/\theta}(0,1)(0、1)(0,1)XバツXF−1X(u)=uθFバツ−1(あなたは)=あなたはθF_X^{-1}(u)=u^\theta それで、はの分布がありますか?これは反転方法の仕組みですか? Xuθあなたはθu^\thetaXバツX u&lt;-runif(n) x&lt;-u^(theta)

3
逆変換ではなく、アーレンスとディーター(1972)の方法を使用する指数ランダムジェネレーターの利点は何ですか?
私の質問は、Rの組み込みの指数乱数ジェネレーターである関数に触発されましたrexp()。指数分布の乱数を生成しようとする場合、多くの教科書では、このWikipediaページで概説されている逆変換方法を推奨しています。このタスクを実行する他の方法があることを知っています。特に、Rのソースコードは、Ahrens&Dieter(1972)の論文で概説されているアルゴリズムを使用しています。 アーレンスディーター(AD)法が正しいことを確信しました。それでも、逆変換(IT)メソッドと比較して、これらのメソッドを使用する利点はわかりません。ADは、ITよりも実装が複雑なだけではありません。スピードメリットもないようです。以下に、両方の方法のベンチマークを行うためのRコードと、それに続く結果を示します。 invTrans &lt;- function(n) -log(runif(n)) print("For the inverse transform:") print(system.time(invTrans(1e8))) print("For the Ahrens-Dieter algorithm:") print(system.time(rexp(1e8))) 結果: [1] "For the inverse transform:" user system elapsed 4.227 0.266 4.597 [1] "For the Ahrens-Dieter algorithm:" user system elapsed 4.919 0.265 5.213 2つの方法のコードを比較すると、ADは少なくとも2つの均一な乱数(C関数を使用unif_rand())を描画して、1つの指数乱数を取得します。ITは1つの均一な乱数のみを必要とします。対数を取るのがより均一な乱数を生成するよりも遅いかもしれないと想定していたため、おそらくRコアチームはITの実装に反対しました。対数を取る速度はマシンに依存する可能性があることを理解していますが、少なくとも私にとってはその逆です。おそらく、ITの数値精度に関連して、0の対数の特異性に関係する問題があるのでしょうか。しかし、その後、R ソースコードsexp.cは、Cコードの次の部分が一様乱数uから先頭ビットを削除するため、ADの実装も数値精度を失うことを示しています。 double u = unif_rand(); while(u &lt;= 0. || u …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.