Rを使用してカスタムpdfからランダムサンプルを生成しようとしています。私のpdfは次のとおりです
均一なサンプルを生成し、それをカスタム分布に変換しようとしました。これを行うには、分布の累積分布関数()を見つけ、それを均一なサンプル()に設定し、xについて解きます。
上記分布を有するランダムサンプルを生成するために、均一なサンプルを取得とを解くに
私はそれを実装しましたR
が、期待した分布が得られません。誰かが私の理解の欠陥を指摘できますか?
nsamples <- 1000;
x <- runif(nsamples);
f <- function(x, u) {
return(3/2*(x-x^3/3) - u);
}
z <- c();
for (i in 1:nsamples) {
# find the root within (0,1)
r <- uniroot(f, c(0,1), tol = 0.0001, u = x[i])$root;
z <- c(z, r);
}
1
コーディングの間違いである必要があります。私はRを使用していないので、間違いを正確に言うことはできません-しかし、あなたのソリューションをコーディングしました(常に0と1の間にある3次多項式の中間根を取ることに注意してください)、そしてサンプルと予想される分布との間に良好な一致が得られました。ルートファインダーに問題がありますか?入手しているサンプルの何が問題になっていますか?
—
-jpillow
私はあなたのコードを試しましたが(これはあまり効率的ではありません)、期待通りの配布を得ました。
—
アニコ
@jpillowと@Aniko私の間違い。私が使用
—
アナンド
nsamples <- 1e6
したとき、それは良いマッチでした。
@Anand 1つの方法は、を観察し、観点からを直接計算できるようにすることです。
—
whuber
@Anand en.wikipedia.org/wiki/...
—
whuber