Sto cercando di generare campioni casuali da un pdf personalizzato utilizzando R. Il mio pdf è:
Ho generato campioni uniformi e poi ho provato a trasformarlo nella mia distribuzione personalizzata. L'ho fatto trovando il cdf della mia distribuzione ( ) e impostandolo sul campione uniforme ( ) e risolvendo per .
Per generare un campione casuale con la distribuzione precedente, ottieni un campione uniforme e risolvi per in
L'ho implementato R
e non ottengo la distribuzione prevista. Qualcuno può sottolineare il difetto nella mia comprensione?
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);
}
nsamples <- 1e6
è stata una buona partita.