Jaki byłby najlepszy sposób na pobranie próbki z dystrybucji Cantor ? Ma tylko format cdf i nie możemy go odwrócić.
Jaki byłby najlepszy sposób na pobranie próbki z dystrybucji Cantor ? Ma tylko format cdf i nie możemy go odwrócić.
Odpowiedzi:
Łatwe: próbkuj z rozkładu Uniform i przekoduj z binarnego na trójskładnikowy, interpretując każde „1” jako „2”. (Jest to metoda odwrotnej transformacji prawdopodobieństwa: faktycznie odwraca CDF!)
Oto R
implementacja, napisana w sposób, który powinien z łatwością przenieść się na prawie każde środowisko komputerowe.
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()
i mniej znaczącedCantor()
dcantor
wdrożyć? Jak zauważa Tim, ten rozkład nie ma gęstości. Nie ma też żadnych dyskretnych atomów. To archetypowy przykład ciągłej, ale nie absolutnie ciągłej dystrybucji. (Podoba mi się implementacja qcantor
BTW - prawdopodobnie jest szybka dzięki wykorzystaniu mnożenia macierzy.)