Quelle serait la meilleure façon d'échantillonner à partir de la distribution Cantor ? Il n'a que du cdf et nous ne pouvons pas l'inverser.
Quelle serait la meilleure façon d'échantillonner à partir de la distribution Cantor ? Il n'a que du cdf et nous ne pouvons pas l'inverser.
Réponses:
Facile: échantillonnage à partir d'une distribution uniforme et recodage du binaire au ternaire, interprétant chaque "1" comme un "2". (C'est l'approche de la transformée de probabilité inverse: elle inverse en effet le CDF!)
Voici une R
implémentation, écrite d'une manière qui devrait facilement être portée sur presque n'importe quel environnement informatique.
binary.to.ternary <- function(x) {
y <- 0
x <- round(2^52 * x)
for (i in 1:52) {
y <- y + 2*(x %% 2)
y <- y/3
x <- floor(x/2)
}
y
}
n <- 1000
x <- runif(n)
y <- binary.to.ternary(x)
plot(ecdf(y), pch=".")
rCantor()
, qCantor()
, pCantor()
et moins significativedCantor()
dcantor
œuvre? Comme le note Tim, cette distribution n'a pas de densité. Il n'a pas non plus d'atomes discrets. C'est l'exemple archétypal d'une distribution continue mais pas absolument continue. (J'aime l'implémentation de qcantor
, BTW - c'est probablement rapide en raison de son exploitation de la multiplication matricielle.)