¿Cómo tomar muestras de la distribución de Cantor?

19

¿Cuál sería la mejor manera de tomar muestras de la distribución de Cantor ? Solo tiene cdf y no podemos invertirlo.

Tim
fuente
44
En realidad, alguien lo preguntó en Matemáticas: math.stackexchange.com/questions/1115907/…
RUser4512
Aquí hay algunas preguntas de seguimiento interesantes: ¿cuál es la desviación estándar? ¿Cuál es la función generadora de momento? ¿Cómo se comparan con sus homólogos para la distribución Uniforme ? :-)(0 0,1)
whuber
55
Me gusta el bucle infinito que ustedes han creado al hacer referencia a la publicación math.stackexchange, que enlaza aquí: p
Tasos Papastylianou

Respuestas:

23

Fácil: muestra de una distribución Uniforme y recodifica de binario a ternario, interpretando cada "1" como un "2". (Este es el enfoque de transformación de probabilidad inversa: de hecho, ¡invierte el CDF!)(0 0,1)

Figura

Aquí hay una Rimplementación, escrita de una manera que debería portarse fácilmente a casi cualquier entorno informático.

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
fuente
3
A principios de este año empecé un poco más completa aplicación en github.com/Henrygb/CantorDist.R con funciones rCantor(), qCantor(), pCantor()y una menos significativadCantor()
Henry
1
@Henry ¿Qué dcantorimplementaría? Como señala Tim, esta distribución no tiene densidad. Tampoco tiene átomos discretos. Es el ejemplo arquetípico de una distribución continua pero no absolutamente continua. (Me gusta la implementación de qcantor, por cierto, es probable que sea rápido en virtud de su explotación de la multiplicación de matrices.)
whuber
1
Debemos tener en cuenta que solo estamos tratando con una aproximación finita a la distribución real. Digamos que teníamos números de precisión de 10 dígitos ternarios (en la práctica serán más largos), y generamos 0.0222020002 para "representar" una variable cuyos dígitos se extienden aún más. Si bien el mismo comentario se aplica a cualquier valor real real con un valor continuo continuo, todos los valores "representados" que la aproximación de longitud finita podría representar también están "en el conjunto". En la distribución real de Cantor, casi todas las "continuaciones" de esa secuencia de diez dígitos no están en el conjunto. ...
ctd
1
@whuber Reconocí claramente que cada método de generación de números aleatorios es precisión finita en mi segunda oración. Que elegiste repetirlo y el énfasis que le diste sugiere que te perdiste mi punto real allí; cuando represento una variante continua de precisión finita, los valores reales que tal aproximación finita podría representar están "en el conjunto" desde el que queremos generar. Cuando represento una variable como esta con precisión finita, los valores reales que tal aproximación finita podría representar casi no están en el conjunto. Es un caso bastante diferente. ...
ctd
1
ctd ... no se implicaron críticas a su publicación; Era un punto que los lectores podían pasar por alto y que querrían considerar, especialmente si intentaban inferir propiedades del conjunto de Cantor simulando a partir de él.
Glen_b