viernes, 5 de octubre de 2012

Método de la transformada inversa

Generación de variables aleatorias

La variabilidad de eventos y actividades se presentan a través de funciones de densidad para fenómenos continuos, y mediante distribuciones de probabilidad para fenómenos de tipo discreto. La simulación de estos eventos o actividades se realiza con la ayuda de la generación de variables aleatorias.
 
 
MÉTODO DE LA TRANSFORMADA INVERSA

El método de la transformada inversa puede utilizarse para simular variables aleatorias continuas, lo cual se logra mediante la función acumulada F(x) y la generación de números pseudoaleatorios uniformes R = {  ri } ~U (0,1).


El método consiste en:
  1. Definir la función de Densidad f(x) que representa la variable a modelar.
  2. Calcular la función acumulada F(x)
  3.  Igualar a la función acumulada con R, F(x)=R ,y luego despejar la variable aleatoria x para obtener la función acumulada inversa: x =F-1(R).
  4. Generar las variables aleatorias xi, sustituyendo los valores de los números pseudoaleatorios R = { ri } ~U (0,1) en la función acumulada inversa encontrada.
         (observe la portada del libro de texto, Simulación de Raúl Coss Bu)


El método de la transformada inversa también puede emplearse para simular variables aleatorias de tipo discreto, como en las distribuciones de Poisson, de Bernoulli, binomial, geométrica, discreta general, etc. La generación se lleva a cabo a través de la probabilidad acumulada P(x) y la generación de números pseudoaleatorios ri ~U (0,1).

Metodología para generar variables aleatorias continuas.
Metodología para generar variables aleatorias discretas.


Distribución Uniforme

A partir de la función de la densidad de las variables aleatorias uniformes entre a y b.

  • Se obtiene la función acumulada


  • Igualando la función acumulada F(x) con el número pseudoaleatorio ri ~U (0,1), y despejando x se obtiene:


Xi=a + (b - a) F(x)i
Xi=a + (b - a) r


Ejemplo 1:

Los datos del tiempo de servicio en la caja de un banco se comportan de forma exponencial con media de 3 minutos/cliente. Una lista de números pseudoleatorios ri ~U (0,1) y la ecuación generadora exponencial xi = -3In (1 - ri) nos permite simular el comportamiento de la variable aleatoria
Distribución de Bernoulli

A partir de la distribución de probabilidad de las variables aleatorias de Bernoulli con media
p(x) = px (1 – p)1 – x para x=0,1
Se calculan las probabilidades para x=0 y x=1, para obtener


Acumulando los valores de p(x) se obtiene:

Generando números pseudoaleatorios ri ~U (0,1) se aplica la regla:


La tabla siguiente muestra la demanda diaria de cepillos dentales en un supermercado.
Simular el comportamiento de la demanda mediante el método de la transformada inversa.



A partir de la información histórica se calculan las probabilidades puntuales y las acumuladas para x=0,1,2,3



La regla para generar esta variable aleatoria estaría dada por:

Con la lista de números pseudoaleatorios ri ~U (0,1) y la regla anterior es posibles simular la demanda diaria de cepillos dentales, tal como se muestra

Generación de variables aleatorias no uniformes

En todo modelo de simulación estocástico existen una o varias variables aleatorias interactuando. Generalmente, estas variables siguen distribuciones de probabilidad teóricas o empíricas diferentes a la distribucion uniforme. Por consiguiente, para simular este tipo de variables, es necesario contar con un generador de numeros aleatorios y una función que a través de un método específico transforme estos números uniformes en valores de la distribucion de probabilidad deseada.
 
Existen varios procedimientos para lograr este objetivo. Lo normal es que existan varias opciones para generar una misma variable aleatoria. La elección del método adecuado se puede basar en una serie de factores como:
  • Exactitud: se prefiere un método exacto frente a métodos aproximados
  • Velocidad: se refiere al tiempo de generación de la vaviable. Se prefieren aquellos métodos que requieren poco tiempo para denerar los valores deseados. 
  • Espacio: es la necesitad de memoria CPU del método utilizado. En general un buen método no consume mucha memoria.
  • Simplicidad: se refiere a la sencillez del método para generar los valores aleatorios con la distribución de probabilidad deseada.

 Entre los métodos más comunes y más difundidos se pueden mencionar los siguientes:
1) El método de la transformada inversa o de inversión;
2) El método rechazo,
3) El método de composición,
4) El método de convolución y 
5) Los procedimientos especiales.



Pruebas estadisticas para los numeros pseudoaleatorios

Prueba de promerios
Prueba de frecuencias
Prueba de la distancia
Prueba de series
Prueba de Kolmogorox-Smirnov
Prueba del Poker
Prueba de las corridas

viernes, 14 de septiembre de 2012

Caracteristicas de los números pseudoaleatorios

Independientemente del proceso o procedimiento que se utilice para la generacion de los números rectangulares, estos deben de poseer ciertas características deseables que aseguren o aumenten la confiabilidad de los resultados de la simulación. Tales características son:

1.- Uniformemente distribuidos.
2.- Estadísticamente independientes.
3.- Reproducibles.
4.- Periodo largo (sin repetición dentro de un longitud determinada de la sucesión)
5.- Generados a través de un método rápido.



martes, 11 de septiembre de 2012

Generación de números aleatorios rectangulares


Para la realización de una simulación se requieren números aleatorios en el intervalo (0,1), a los cuales se hará referencia como rj, es decir, una secuencia rj={r1,r2,r3,..., rn} que contiene n números, todos ellos diferentes, nrecibe el nombre de periodo o ciclo de vida del generador que creó la secuenciarj.

Los rj constituyen la parte medular de la simulación de procesos estocásticos y generalmente se usan para modelar el comportamiento de variables aleatorias tanto continuas como discretas.

En todos los experimentos de simulación existe la necesidad de generar valores de variables aleatorias que representan a una cierta distribución de probabilidad. Durante un experimento de simulación, el proceso de generar un valor de la variable aleatoria de una distribución particular, puede repetirse tantas veces como se desee y tantas veces como distribuciones de probabilidad existan en el experimento de simulación. Sin embargo, es conveniente señalar que el proceso de generar variables aleatorias no uniformes se hace a partir de la generación de números rectangulares.

Algunos autores como Tocher, han sugerido tres formas para obtener los números rectangulares:
  • La provisión externa,
  • La generación interna a partir de un proceso físico al azar y
  • La generación interna de sucesiones de dígitos por medio de una relación de recurrencia.
 
 
El primer método implica tener los números aleatorios, como por ejemplo las tablas de la Rand y tratar a estos números  como datos de entrada para el problema que se está simulando.
 
El segundo método implica utilizar generar los numeros aleatorios mediante algún aditamento especial o con una computadora digital para luego se capaz de registrar los resultados del proceso aleatorio y además reducir esos resultados a sucesiones de dígitos. Por ejemplo mediante un dado con rj={r1=1, r2=2, r3=3, r4=4, r5=5, r6=6} se podría obtener: 6,4,2,6,3 = 0.64263

El tercer método, y uno de los más aceptados, implica la generación de estos números rectangulares a través de una relación de recurrencia.

El enfoque moderno es usar una computadora para generar los números mediante alguna formula matemática (o relación de recurrencia) con lo que nos encontramos utilizando un método deterministico para obtener una secuencia de números que dan la apariencia de ser aleatorios cuando en realidad no lo son, dado que en algún momento determinado esta lista comenzará a repetirse; el objetivo en si es generar una lista lo suficientemente larga de valores que permita realizar la simulación antes de llegar al comienzo del ciclo. A esta serie de números que parecen ser aleatorios se les denomina pseudoaleatorios.

Los números pseudoaleatorios

Para poder realizar una simulación que incluya variabilidad dentro de sus eventos, es preciso generar una serie de números que sean aleatorios por sí mismos, y que su aleatoriedad se extrapole al modelo de simulacion que se está construyendo.

Como se puede advertir, en la construccion de un modelo los números aleatorios juegan un papel relevante.
 
Cuando un conjunto de números se comporta de manera muy similar a un conjunto de números totalmente aleatorios se les denomina números pseudoaleatorios.
 

Casi todas las aplicaciones comerciales tienen varios generadores de números pseudoaleatorios mediante lascuales es posible obtener un conjunto muy grande de números sin mostrar correlación entre ellos.

Los numeros rectangulares generados a través de una relación de recurrencia se denominan pseudoaleatorios, por ser una sucesión de dígitos generados mediante una regla puramente determinística. Sin embargo esta objeción puede superarse, al menos parcialmente, al tomar el punto de vista un tanto pragmático de que una sucesión puede considerarse aleatoria si satisface un cierto conjunto de pruebas estadísticas de aleatoriedad.
 


Introducción a la simulación*

La simulación ayuda a conocer como las cosas que en teoria "funcionan siempre" realmente funcionan. Por ejemplo existe una transformación conocida como la transformación "tienda" la cual es facil probar que es invariante con respecto a la distribución uniforme (0,1), sin embargo cuando se realiza un estudio de simulación se puede ver que este generador tiene un comportamiento desastroso ya que converge para un valor fijo. Cuestiones como estas son donde la simulación es util pues ayuda a ver "más allá de lo evidente".
 
Aqui les dejo algunos ejemplos en donde personalmente he realizado estudios de simulación para verificar algunos aspectos importantes:
  • Podemos estar simulando modelos de sobrevivencia, con diferentes porcentajes de observaciones censuradas, o tipos de errores con diferentes distribuciones (simetricas, asimetricas, de colas pesadas, de colas livianas, etc) y ver si un estimador propuesto tiene un comportamiendo satisfactorio en ciertas condiciones,
  • Simular modelos de volatilidad de los mercados financieros y ver si mejora el ajuste a medida que el desarrollo en el area se ha ido dando (modelos de volatilidad con asimetrica de apalancamiento, o con asimetria en los errores, etc.),
  • Verificar si un algoritmo de clasificación es mejor que otro (en funcion del numero de variables, recorrido de la misma, cantidad de observaciones, medida de agrupamiento, etc.),
  • Analizar la convergencia de distintos metodos de aproximación,
  • Resolver integrales que analiticamente son complicadas,
  • Calcular probabilidades de distribuciones "dificiles",
  • Mejorar la estimación en ciertos modelos utilizando metodos computaciones intensivos como Monte Carlo o Bootstrap, etc. etc. etc.
  •  
Personalmente me gusta simular y gracias a eso he podido detectar algunas diferencia entre algunos metodos que resuelven el mismo problema, diferencias no aparecen en los libros, sino que a base de "simple curiosidad" he podido detectar.
 
Si bien la simulación es importante esta debe ser realizada cuidadosamente, pues se cae frecuentemente en el error de "simular perfectamente lo que no queriamos simular" o "considerar en la simulación los casos que no eran de nuestro interés". Simular no siempre es facil, pero definitivamente si el estudio es realizado correctamente los resultados obtenidos valen la pena.
 
 * Este artículo, el cual reproduzco con ligeros cambios,
 fue publicado originalmente por Carlos Trucios Mata en su blog Analisis de datos.
 


jueves, 16 de agosto de 2012

Bienvenida al curso de Simulación !

¡Hola a todos!

    Quiero darles la bienvenida al curso de SIMULACION.

    En este blog podrán encontrar información y recursos para hacer la materia mas atractiva e  
    interesante.