2009-10-18 47 views
15

Estoy buscando una biblioteca de Python que me permita calcular material de cálculo estocástico, como la expectativa (condicional) de un proceso aleatorio Definiría la difusión. Eché un vistazo a simpy (simpy.sourceforge.net), pero no parece cubrir mis necesidades.Biblioteca de cálculo estocástico en python

Esto es para prototipos rápidos y experimentación. En java, utilicé con cierto éxito la biblioteca http://martingale.berlios.de/Martingale.html (ahora inactiva).

El problema no es difícil en sí mismo, pero hay cosas mucho más triviales, repetitivas (uso eficiente de la memoria, técnicas de reducción variable, etc.).

Idealmente, sería capaz de escribir algo como esto (únicamente ilustrativo):

 
def my_diffusion(t, dt, past_values, world, **kwargs): 
    W1, W2 = world.correlated_brownians_pair(correlation=kwargs['rho']) 
    X = past_values[-1] 
    sigma_1 = kwargs['sigma1'] 
    sigma_2 = kwargs['sigma2'] 
    dX = kwargs['mu'] * X * dt + sigma_1 * W1 * X * math.sqrt(dt) + sigma_2 * W2 * X * X * math.sqrt(dt) 
    return X + dX 

X = RandomProcess(diffusion=my_diffusion, x0 = 1.0) 
print X.expectancy(T=252, dt = 1./252., N_simul= 50000, world=World(random_generator='sobol'), sigma1 = 0.3, sigma2 = 0.01, rho=-0.1) 

¿Alguien sabe de algo más que reimplementar en numpy por ejemplo?

+0

Nota: Este es un material muy interesante, pero por desgracia, no parece incluir los procesos dependientes de la trayectoria/hora: http: // pymc .googlecode.com/svn/doc/index.html) – LeMiz

+0

Haciendo cosas como esta para ganarse la vida, puedo asegurarle que puede llevarse bien con un código trivial (es decir, sin técnicas de reducción de varianza) si usa números cuasialeatorios (p. ej. Secuencias de Sobol). –

+0

¡También hago eso para vivir (y en París también)! Ser capaz de reutilizar los mismos dibujos cuando se simulan sus subyacentes puede ser muy útil además de reducir la varianza del estimador. Y las secuencias de Sobol tienen sus inconvenientes, también. Pero, por supuesto, la pregunta era sobre la experimentación, no el código de producción. – LeMiz

Respuesta

0

Conozco a alguien que usa Sundials para resolver problemas estocásticos de ODE/PDE, aunque no conozco lo suficiente sobre la biblioteca para asegurarme de que sea apropiada en su caso. Hay enlaces de pitón para él here.

+0

Este es un solucionador de PDE, no una herramienta de MC. Ojalá pudiera convertir todos mis problemas en PDE de baja dimensión ... En este momento, solo quiero investigar el aspecto de algunos modelos (cómo se ven las trayectorias, por ejemplo) – LeMiz

1

¿Has mirado sage?

+0

No he encontrado una simulación estocástica paquete en Sage. – LeMiz

1

Lo más parecido que he visto a esto en Python es PyMC - una implementación de varios algoritmos de Markov Chain Monte Carlo.

0

Estoy trabajando en procesos estocásticos (incluidos los procesos de difusión y algunos acondicionadores) de la biblioteca de python. Consulte this link en la página de inicio del proyecto google. ¡Aclamaciones!

+0

Esto sería más adecuado como un comentario, creo. – arshajii