g (x) = 1, 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)'의 상한값을 찾을 수 있습니다. –