Aleatorización y correlación en secuencias de baja discrepancia (Halton / Sobol)

14

Actualmente estoy trabajando en un proyecto donde genero valores aleatorios usando conjuntos de puntos de baja discrepancia / cuasialeatorios , como los conjuntos de puntos de Halton y Sobol. Estos son esencialmente vectores dimensionales que imitan una variable dimensional uniforme (0,1), pero tienen una mejor distribución. En teoría, se supone que ayudan a reducir la varianza de mis estimaciones en otra parte del proyecto.dd

Desafortunadamente, me he encontrado con problemas al trabajar con ellos y gran parte de la literatura sobre ellos es densa. Por lo tanto, esperaba obtener una idea de alguien que tenga experiencia con ellos, o al menos encontrar una manera de evaluar empíricamente lo que está sucediendo:

Si has trabajado con ellos:

  • ¿Qué es exactamente la codificación? ¿Y qué efecto tiene en el flujo de puntos que se generan? En particular, ¿hay algún efecto cuando aumenta la dimensión de los puntos que se generan?

  • ¿Por qué si genero dos flujos de puntos Sobol con la codificación MatousekAffineOwen, obtengo dos flujos de puntos diferentes? ¿Por qué este no es el caso cuando uso la codificación de radix inversa con puntos Halton? ¿Existen otros métodos de codificación para estos conjuntos de puntos? Y si es así, ¿hay una implementación de MATLAB?

Si no has trabajado con ellos:

  • Digamos que tengo secuencias de números supuestamente aleatorios, ¿qué tipo de estadísticas debo usar para mostrar que no están correlacionadas entre sí? ¿Y qué número necesitaría para demostrar que mi resultado es estadísticamente significativo? Además, ¿cómo podría hacer lo mismo si tuviera secuencias de vectores aleatorios dimensionales ?nS1,S2,,SnnnS1,S2,,Snd[0,1]

Preguntas de seguimiento sobre la respuesta del cardenal

  1. Teóricamente hablando, ¿podemos emparejar cualquier método de aleatorización con cualquier secuencia de baja discrepancia? MATLAB solo me permite aplicar la codificación de radix inversa en las secuencias de Halton, y me pregunto si eso es simplemente un problema de implementación o un problema de compatibilidad.

  2. Estoy buscando una forma que me permita generar dos redes (t, m, s) que no estén correlacionadas entre sí. ¿MatouseAffineOwen me permitirá hacer esto? ¿Qué tal si usara un algoritmo de codificación determinista y simplemente decidiera elegir cada valor 'kth' donde k era primo?

Berk U.
fuente
¿Qué quieres decir con dos redes que no están correlacionadas? En particular, ¿qué significa esto cuando dice "usándonos un algoritmo de codificación determinista"? Muchos algoritmos de codificación pueden aplicarse a redes arbitrarias ( t , m , s ) ; Sinceramente, no sé si todos los esquemas sí. Me imagino que la respuesta podría ser "no". (Es decir, se podría construir una codificación que fuera lo suficientemente especializada como para mantener la propiedad de cierre para una secuencia en particular , pero no en general. No sé acerca de eso).(t,m,s)(t,m,s)
Cardenal
@cardinal Lo siento, eso no estaba claro, así que déjame intentar reformularlo. Digamos que tengo dos redes P y Q que uso para generar dos secuencias de 100 puntos, { p i } 100 1 y { q i } 100 1 . Si uso un algoritmo de aleatorización aleatorio, entonces { p i } 100 1 y { q i } 100 1(t,m,s)PQ{pi}1100{qi}1100{pi}1100{qi}1100no debe estar correlacionado, ¿verdad? Claramente, esto no es cierto si hubiera usado un algoritmo de codificación determinista. Pero, ¿qué pasa si genera 200 puntos y solo mantiene entradas pares de y entradas impares de { q i } 200 1 . ¿Estarían correlacionados? ¿Y todavía estarían muy bien "esparcidos"? {pi}1200{qi}1200
Berk U.
Sí, si aleatoriza aleatoriamente dos redes separadas independientemente una de la otra, los conjuntos resultantes serán independientes. En cuanto a un algoritmo de codificación determinista, sin ninguna noción de aleatoriedad, realmente no puede haber una noción adecuada de correlación. Tendría que pensar en tomar entradas pares e impares. El enfoque estándar sería obtener algunos puntos para el primero, luego generar y tirar un montón más de puntos, luego acumular su segundo conjunto de puntos. Esto está relacionado con el uso de conjuntos "quemados" de puntos QMC. (t,m,s)
cardenal

Respuestas:

10

La codificación suele ser una operación aplicada a una red digital que utiliza alguna base b . Las redes Sobol usan b = 2 , por ejemplo, mientras que las redes Faure usan un número primo para b .(t,m,s)bb=2b

El propósito de la codificación es (con suerte) obtener una distribución aún más uniforme, especialmente si solo puede usar una pequeña cantidad de puntos. Un buen ejemplo para ver por qué esto funciona es mirar la secuencia de Halton en y elegir dos números primos "grandes", como 29 y 31. El cuadrado se rellena muy lentamente usando la secuencia estándar de Halton. Pero, con la codificación, se rellena de manera más uniforme y mucho más rápido. Aquí hay una gráfica para los primeros cientos de puntos usando un enfoque de codificación determinista.d=2

enter image description here

Las formas más básicas de aleatorización esencialmente permutan las expansiones de la base dígitos de los n puntos originales entre sí. Para más detalles, aquí hay una exposición clara .bn

(t,m,s)(t,m,s)(t,m,s)

En cuanto a los tipos de aleatorización, la aleatorización de radix inversa es una aleatorización determinista . El algoritmo de codificación Matousek es una codificación aleatoria , realizada nuevamente para mantener la propiedad de cierre. Si configura la semilla aleatoria antes de hacer la llamada a la función de codificación, siempre debe recuperar la misma red.

También te puede interesar el proyecto MinT .

cardenal
fuente
Muchas gracias por esto. Tengo algunas preguntas de seguimiento si no te importa. Como el cuadro de comentarios no me permite enumerarlos claramente, los incluí en la publicación.
Berk U.