Como amostra da distribuição Cantor?

19

Qual seria a melhor maneira de colher amostras da distribuição Cantor ? Ele só tem cdf e não podemos invertê-lo.

Tim
fonte
4
Na verdade, alguém perguntou sobre matemática: math.stackexchange.com/questions/1115907/…
RUser4512
Aqui estão algumas perguntas interessantes de acompanhamento: qual é o desvio padrão? Qual é a função geradora de momento? Como eles se comparam aos seus pares na distribuição Uniforme ? :-)(0 0,1)
whuber
5
I como o loop infinito vocês criaram referenciando o pós math.stackexchange, que liga de volta para cá: p
Tasos Papastylianou

Respostas:

23

Fácil: faça uma amostra de uma distribuição Uniforme e recodifique de binário para ternário, interpretando cada "1" como um "2". (Esta é a abordagem de transformação de probabilidade inversa: ela realmente inverte o CDF!)(0 0,1)

Figura

Aqui está uma Rimplementação, escrita de uma maneira que deve ser portada prontamente para quase qualquer ambiente de computação.

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
fonte
3
No início deste ano eu comecei uma implementação ligeiramente mais completa em github.com/Henrygb/CantorDist.R com funções rCantor(), qCantor(), pCantor()e uma menos significativadCantor()
Henry
1
@ Henry O que dcantorimplementaria? Como Tim observa, essa distribuição não tem densidade. Também não possui átomos discretos. É o exemplo arquetípico de uma distribuição contínua, mas não absolutamente contínua. (I como a implementação de qcantor, BTW - é provável rápido em virtude de sua exploração de multiplicação de matrizes.)
whuber
1
Devemos ter em mente que estamos lidando apenas com uma aproximação finita da distribuição real. Digamos que tivéssemos 10 números de precisão de dígitos ternários (na prática, eles serão maiores) e geramos 0,0222020002 para "representar" uma variável cujos dígitos se estendem ainda mais. Enquanto o mesmo comentário se aplica a qualquer rv com valor real e com um rv contínuo, todos os valores "representados" que a aproximação de comprimento finito poderia significar também estão "no conjunto". Na distribuição real do Cantor, quase todas as "continuações" dessa sequência de dez dígitos não estão no conjunto. ... CTD
Glen_b -Reinstate Monica
1
@whuber Eu reconheci claramente que todo método de geração de números aleatórios é precisão finita em minha segunda frase. O fato de você ter escolhido repeti-lo e a ênfase dada a ele sugere que você perdeu meu ponto de vista; quando represento uma variável contínua para precisão finita, os valores reais que essa aproximação finita poderia representar estão "no conjunto" que queremos gerar. Quando represento uma variável como essa para precisão finita, os valores reais que uma aproximação finita poderia representar quase todos não estão no conjunto. É um caso diferente. ...
ctd
1
ctd ... nenhuma crítica à sua postagem foi implícita; esse era um ponto que os leitores poderiam ignorar, e talvez queiram considerar, principalmente se estão tentando inferir propriedades do conjunto Cantor simulando a partir dele.
Glen_b -Reinstala Monica