Jak próbkować z dystrybucji Cantor?

19

Jaki byłby najlepszy sposób na pobranie próbki z dystrybucji Cantor ? Ma tylko format cdf i nie możemy go odwrócić.

Tim
źródło
4
Właściwie ktoś zapytał o to na stronie Matematyka: math.stackexchange.com/questions/1115907/…
RUser4512,
Oto kilka interesujących pytań uzupełniających: jakie jest odchylenie standardowe? Jaka jest funkcja generowania momentu? Jak porównują się do swoich odpowiedników dla rozkładu Uniform ? :-)(0,1)
whuber
5
Podoba mi się nieskończona pętla, którą stworzyliście, odwołując się do postu math.stackexchange, który łączy tutaj: p
Tasos Papastylianou

Odpowiedzi:

23

Ł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!)(0,1)

Postać

Oto Rimplementacja, 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=".")
Whuber
źródło
3
Na początku tego roku zacząłem nieco pełniejszą realizację w github.com/Henrygb/CantorDist.R z funkcjami rCantor(), qCantor(), pCantor()i mniej znaczącedCantor()
Henry
1
@Henry Co by dcantorwdroż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 qcantorBTW - prawdopodobnie jest szybka dzięki wykorzystaniu mnożenia macierzy.)
whuber
1
Musimy pamiętać, że mamy do czynienia tylko ze skończonym przybliżeniem rzeczywistego rozkładu. Załóżmy, że mieliśmy 10 liczb trójskładnikowych (w praktyce będą one dłuższe) i wygenerowaliśmy 0,0222020002, aby „reprezentować” zmienną, której cyfry rozciągają się dalej. Podczas gdy ten sam komentarz dotyczy każdej wartości rzeczywistej z ciągłą wartością rv, wszystkie „reprezentowane” wartości, które mogą oznaczać przybliżone długości skończone, są również „w zbiorze”. W rzeczywistym rozkładzie Cantora prawie wszystkie „kontynuacje” tej dziesięciocyfrowej sekwencji nie są w zestawie. ... ctd
Glen_b -Reinstate Monica
1
@ whuber Wyraźnie uznałem, że każda metoda generowania liczb losowych jest skończoną precyzją w moim drugim zdaniu. To, że zdecydowałeś się je powtórzyć, a podkreślenie, które mu nadałeś, sugeruje, że przegapiłeś mój faktyczny punkt; kiedy reprezentuję ciągłą zmienność do skończonej precyzji, rzeczywiste wartości, które może reprezentować takie skończone przybliżenie, są „w zbiorze”, z którego chcemy generować. Kiedy reprezentuję zmienną taką jak ta do skończonej precyzji, rzeczywiste wartości, które mogłaby reprezentować skończona aproksymacja, prawie nie znajdują się w zbiorze. To raczej inna sprawa. ... ctd
Przywróć Monikę
1
ctd ... nie sugerowano krytyki twojego postu; był to punkt, który czytelnicy mogą przeoczyć i powinni rozważyć, szczególnie jeśli próbują wywnioskować właściwości zestawu Cantora, symulując go.
Glen_b