g(x)= 1,0,0≦x≦1のベータ版の受け入れ拒否方法を使用しています。 関数は次のとおりです。 f(x)= 100x^3(1-x)^ 2である。ベータ版の受け入れ拒否Rコード
この密度関数からデータを生成するアルゴリズムを作成します。
k = 1000の繰り返し(n = 1000)でP(0≦X≦0.8)を推定するにはどうすればよいですか? Rでこれをどのように解決できますか?
私が既に持っている:
beta.rejection <- function(f, c, g, n) {
naccepts <- 0
result.sample <- rep(NA, n)
while (naccepts < n) {
y <- runif(1, 0, 0.8)
u <- runif(1, 0, 0.8)
if (u <= f(y)/(c*g(y))) {
naccepts <- naccepts + 1
result.sample[n.accepts] = y
}
}
result.sample
}
f <- function(x) 100*(x^3)*(1-x)^2
g <- function(x) x/x
c <- 2
result <- beta.rejection(f, c, g, 10000)
for (i in 1:1000){ # k = 1000 reps
result[i] <- result[i]/n
}
print(mean(result))
'f(x)= 10x^2(1-x)^ 5'はどのようにアルゴリズムですか?あなたの質問をより詳しく説明して、それを解決しようとする試みを示してください。 –
これは関数であり、アルゴリズムではありません。この機能で何をしようとしているのかは完全にはっきりしていません。 –
あなたは '[0,1]'で 'f(x)'の上限を見つけることから始めます。 –