2 votos

Quasi Monte Carlo en Matlab

Quiero utilizar Quasi Monte Carlo para intentar mejorar la convergencia de una simulación que estoy realizando.

Los números aleatorios son simplemente para producir los errores de observación para un modelo de regresión lineal estándar. A continuación, se estima mediante una serie de técnicas de regresión diferentes. Esto se hace repetidamente para estimar el error cuadrático medio de cada modelo.

Soy bastante nuevo en Quasi Monte Carlo, pero es probable que ayudar en esta situación sólo estoy usando para producir 10k números aleatorios. Parece que generalmente puedo esperar una convergencia más rápida del orden de (1/n) en lugar de n^(-0,5):

http://en.wikipedia.org/wiki/Quasi-Monte_Carlo_method

Sin embargo, también afirma que los números del QMC no son verdaderamente aleatorios, por lo que me pregunto cuáles son las implicaciones para cualquier prueba estadística que quiera realizar sobre los resultados.

1.) Supongo que lo que quiero saber son los pros y los contras de MC v QMC. (¿Siempre querría usar QMC si está disponible?) 2.) ¿Qué pruebas puedo utilizar para determinar cuál es el mejor para mi aplicación? (parece que cualquier prueba que dependa de que los números sean realmente aleatorios fallará).

Sé que esto se puede hacer en Matlab utilizando

q = qrandstream('halton',NSteps,'Skip',1e3,'Leap',1e2); RandMat = qrand(q,NRepl); z_RandMat = norminv(RandMat,0,1);

que se extrae de este documento.

http://papers.ssrn.com/sol3/cf_dev/AbsByAuth.cfm?per_id=1519239

Parece que hay otros números de baja discrepancia, como la secuencia de Sobol, disponibles en Matlab y, de nuevo, sólo me gustaría saber qué pruebas puedo utilizar para determinar cuál es la mejor para mi situación.

2voto

Kyle Cronin Puntos 554

Una de las principales cosas a las que renuncias es a una simple condición de parada para tu algoritmo de estimación. Con los números pseudoaleatorios, el algoritmo puede hacer un seguimiento del error estándar y detenerse cuando haya superado un umbral:

error_est = Inf
n = 0
while not error_est < target_precision:
    n = n + 1
    x = new_random_sample()
    samples.append( F(x) )
    error_est = 3 * std_deviation( samples ) / sqrt(n)
value_est = mean( samples ) 

Como con las secuencias QR la estimación del error no se puede tomar de la desviación estándar, no se puede aplicar este algoritmo. En su lugar, los profesionales suelen elegir simplemente un número de muestras para tomar a priori o establecer una condición de parada que compruebe que la media en curso cambia muy poco.

En cuanto a las pruebas de una secuencia frente a otra, el enfoque típico es establecer un gran conjunto de problemas de muestra. La ganadora es la secuencia QR que tiene la mejor relación entre el tiempo de cálculo y la precisión en el conjunto de problemas.

Cuando hicimos esto para los exóticos de la renta variable en la década de 1990, descubrimos que las secuencias de Niederreiter superaban a Sobol y Faure, aunque por una cantidad muy pequeña.

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X