R을 사용하여 사용자 정의 PDF에서 임의의 샘플을 생성하려고합니다. 내 PDF는 다음과 같습니다.
균일 한 샘플을 생성 한 다음이를 사용자 지정 배포로 변환하려고했습니다. 내 분포의 cdf ( )를 찾아 균일 표본 ( )으로 설정하고 해결하여이를 수행했습니다 .
상기 분포가 임의의 샘플을 생성하기 위해 균일 한 시료 얻을 및 풀기 에
나는 그것을 구현했지만 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 사이에있는 입방 다항식의 중간 루트를 취하도록주의를 기울입니다). 표본과 예상 분포가 잘 일치합니다. 루트 파인더에 문제가 될 수 있습니까? 샘플에 어떤 문제가 있습니까?
—
jpillow
나는 당신의 코드를 시도했지만 (매우 효율적이지 않습니다) 예상되는 분포를 얻었습니다.
—
Aniko
@jpillow와 @Aniko 내 실수. 내가 사용했을 때
—
Anand
nsamples <- 1e6
그것은 잘 어울렸다.
@Anand 하나의 방법은 관찰하는 의 직접 계산 가능 측면에서 .
—
whuber
@Anand en.wikipedia.org/wiki/…
—
whuber