miércoles, 27 de enero de 2010

Números aleatorios y la distribución normal

Resumen: Se muestra cómo generar números aleatorios uniformes y no-uniformes, cómo saber si el método para generarlos es realmente bueno, qué es la  distribución normal y cuáles son algunas de sus aplicaciones.

Generadores de números aleatorios

Un generador de números pseudo-aleatorios es un algoritmo que genera una secuencia de números que es una buena aproximación a un conjunto de números aleatorios. Se dice que es una aproximación porque las secuencias son obtenidas por medios deterministas.

Para la Distribución Uniforme

La mayoría de los algoritmos de generadores pseudoaleatorios producen sucesiones que poseen una distribución uniforme según varios tipos de pruebas. Las clases más comunes de estos algoritmos son:
generadores lineales congruentes,
generadores Fibonacci demorados,
desplazamiento de registros con retroalimentación lineal, y
desplazamientos de registros con retroalimentación generalizada.

Entre los desarrollos más recientes de algoritmos pseudoaleatorios se encuentran Blum Blum Shub, Fortuna, y el Mersenne twister.

Para distribuciones no-uniformes

Para estas distribuciones lo que se busca es encontrar un cambio de variable, que concretamente consistirá en buscar una transformación y=f(x) para obtener la distribución deseada. Si la densidad de probabilidad de x es p(x), tenemos:

\[P(X \in x,x+dx) = P(Y\in y, y+dy)\]
\[p(x)dx=w(y)dy\]

Si \( x \in U(0,1)\) la integración de esta ecuación resulta ser
$$\int_0^x dx = \int_{y_{min}}^y w(y')dy'$$

Si sabemos calcular la integral, obtenemos una relación del tipo \(X=g(Y)\), que se tiene que invertir para poder obtener \(Y=f(X)\). Ejemplos:
  1. Para generar números con distribución exponencial  \[ x=\int_0^y \lambda e^{-\lambda y'}dy= 1-e^{-\lambda y'},\]  por lo tanto, el cambio adecuado será $$y=-\frac{1}{\lambda}\ln (1-x).$$
  2. Para obtener numeros con distribución normal \( Y\in N(0,1)\), media 0 y varianza 1, nos queda la siguiente ecuación $$x=\int_{-\infty}^y e^{-y'^2/2}\frac{dy'}{\sqrt{2\pi}}.$$ La integral no se puede resolver analíticamente, y menos aun invertir la relación para obtener \(Y=f(X)\).  La mejor alternativa es aplicar el método polar, el cual es muy sencillo.

Pruebas de Aleatoriedad

Las pruebas de aleatoriedad consisten básicamente en dos tipos principales de pruebas; empíricas y teóricas. Estas pruebas son usadas para determinar que estemos ante un generados de números aleatorios competente.
  • Empíricas. Dentro de las empíricas podemos aplicar diferentes
  1. Test de uniformidad.
  2. Test Serial.
  3. Test de correlaciones.
  • Teóricas. Estas se efectúan sobre toda la secuencia.
  1. en el generados de secuencia lineal al determinar los valores de las constantes a, c y m.
  2. Test espectral: si se forman vectores con k valores consecutivos,
    \[ u_n= (x_n,x_{n+1}, \cdots, x_{n+k}), \]
    estos forman hiperplanos paralelos en el espacio k-dimensional. La separación dk entre los planos tiene que ser la mínima posible.

Distribución Normal

La distribución fue reconocida por primera vez por el francés Abraham de Moivre y más tarde Carl Friedrich Gauss hizo algunos cambios y desarrollo la ecuación de la curva, de ahí que también sea reconocida como "Campana de Gauss".
La distribución esta completamente determinada por dos parámetros: la media y la desviación estándar. La ecuación esta dada por
$$f(x)=\frac{1}{\sigma\sqrt{2\pi}}exp \{\frac{-1}{2}\left( \frac{x-\mu}{\sigma}\right)^2\}, \quad -\infty < x  < \infty$$

donde σ y μ son la media y la desviación estándar respectivamente.

La distribución Normal tiene ciertas propiedades de importancia:
  • Tiene una única moda, que coincide con su media y su mediana.
  • La curva normal es asintótica al eje de abscisas. Por ello, cualquier valor entre -∞\ y + es teóricamente posible. El área total bajo la curva es, por tanto, igual a 1.
  • Es simétrica con respecto a su media μ. Según esto, para este tipo de variables existe una probabilidad de un 50% de observar un dato mayor que la media, y un 50% de observar un dato menor.
  • La distancia entre la línea trazada en la media y el punto de inflexión de la curva es igual a una desviación típica (σ). Cuanto mayor sea σ, más aplanada será la curva de la densidad.
  • El área bajo la curva comprendido entre los valores situados aproximadamente a dos desviaciones estándar de la media es igual a 0.95. En concreto, existe un 95% de posibilidades de observar un valor comprendido en el intervalo (μ-1.96σ, μ+1.96σ).
  • La forma de la campana de Gauss depende de los parámetros μ y σ (Figura 3). La media indica la posición de la campana, de modo que para diferentes valores de μ la gráfica es desplazada a lo largo del eje horizontal. Por otra parte, la desviación estandar determina el grado de apuntamiento de la curva. Cuanto mayor sea el valor de σ , más se dispersarán los datos en torno a la media y la curva será más plana. Un valor pequeño de este parámetro indica, por tanto, una gran probabilidad de obtener datos cercanos al valor medio de la distribución.

Pruebas de Normalidad

Muchos resultados teóricos y prácticos provienen de distribuciones normales, por lo cual es de gran importancia tener pruebas estadísticas de que los datos siguen o no una distribución normal. Existen muchos métodos para analizar la normalidad de datos. Por ejemplo:
  • Prueba de Karl Pearson, basada en la distribución chi cuadrada y que corresponde a una prueba de bondad de ajuste.
  • Prueba de Smirnov Kolmogorov, descansa en los desvíos de la distribución teórica y empírica.
  • Prueba de Cramer-Von Mises, es útil para pequeñas muestras y usa los momentos como criterio.
  • Prueba de Gram-Charlier, usa la distribución de mismo nombre para inferir si la muestra es normal.
  • Prueba de Jarque y Bera, utiliza un estadístico en prueba que involucra la curtosis y la asimetría.
  • Prueba de R.C. Geary, usa los cumulantes muestrales y sus medias y desviaciones estándar.
  • Otras, como la de Shapiro-Wilk y aquéllas basadas en métodos numéricos.
Las pruebas de X² o la de Smirnov son las mas usadas y funcionan con cualquier distribución, sin embargo, la prueba R.C Geary es exclusiva para la distribución uniforme y es muy importante en la teoría de la normalidad por su sencillez, potencia y aplicación.

Aplicaciones de la Distribución Normal.

La distribución Normal es de gran importancia ya que como su nombre lo indica hay muchos fenómenos en los que algunas características siguen un comportamiento común o normal. Algunas de las aplicaciones o ramas donde se presenta algún tipo de distribución normal son:
  • Caracteres morfológicos de individuos (personas, animales, plantas,…) de una especie, por ejemplo: Tallas, pesos, envergaduras, diámetros, perímetros…
  • Caracteres fisiológicos, por ejemplo; efecto de una misma dosis de un fármaco, o de una misma cantidad de abono.
  • Caracteres sociológicos, por ejemplo: consumo de cierto producto por un mismo grupo de individuos, puntuaciones de examen.
  • Caracteres psicológicos, por ejemplo: cociente intelectual, grado de adaptación a un medio, etc.
  • Errores cometidos al medir ciertas magnitudes.
  • Valores estadísticos maestrales, por ejemplo: la media.
  • Otras distribuciones como la binomial o la de Poisson son aproximaciones normales.

Otras distribuciones de probabilidad

Para todos aquellos que programan en C++. La librería Boost contiene todas las distribuciones ya implementadas y listas para su uso. Dicha librería puede ser descargada de forma gratuita. A continuación se listan las distribuciones de números aleatorios más conocidas. Las ligas correspondientes muestran una descripción e implementación de la distribución que puede ser de gran ayuda.


Bernoulli Distribution
Beta Distribution
Binomial Distribution
Cauchy-Lorentz Distribution
Chi Squared Distribution
Exponential Distribution
Extreme Value Distribution
F Distribution
Gamma (and Erlang) Distribution
Hypergeometric Distribution
Laplace Distribution
Logistic Distribution
Log Normal Distribution
Negative Binomial Distribution
Noncentral Beta Distribution
Noncentral Chi-Squared Distribution
Noncentral F Distribution
Noncentral T Distribution
Normal (Gaussian) Distribution
Pareto Distribution
Poisson Distribution
Rayleigh Distribution
Students t Distribution
Triangular Distribution
Weibull Distribution
Uniform Distribution

En la siguiente pagina se puede encontrar un tutorial sobre como usar las distribuciones, así como algunos ejemplos en los que han sido usadas y la descripción de cada distribución.

Statistical Distributions and Functions
Non-Member Properties
Boost Worked Examples



miércoles, 20 de enero de 2010

Metodología de simulación


Entre las cosas mas importantes para poder modelar un sistema se tienen que seguir los siguientes pasos:
  • Definir el sistema. Se trata de estudiar el contexto del problema definir los objetivos del proyecto, los objetivos específicos de la modelación y la forma de medir la efectividad del sistema.
  • Construir un modelo. Es necesario definir todas las variables involucradas, todas las relaciones lógicas y diagramas de flujo que sirvan de apoyo para describirlo.
  • Colección de datos. Se trata de tener bien definidos que datos va a requerir el modelo para arrojar los resultados deseados.
  • Implementación. Se decide si se utilizara un lenguaje de programación o se usara un paquete de simulación, para procesarlo en la computadora y obtener los resultados.
  • Verificación. Se trata de ver si el modelo se comporta de acuerdo a su diseño.
  • Validación. Se valoran las diferencias entre el funcionamiento del simulador y el sistema real que se trata de simular.
  • Experimentación. Se realiza después de validar el modelo, y consiste en generar los datos  deseados y en realizar análisis de sensibilidad.
  • Interpretación. Se interpretan los resultados y se toma una decisión.
  • Documentación. Se realiza en dos formas: primera, se refiere a la documentación del tipo técnico, y segundo, se refiere al manual de usuario, con el cual se facilita el uso y la interacción con el modelo desarrollado.

Validación de la simulación: Sugerencias

Existen varios criterios para validar un modelo de simulación:
  • La opinión de expertos sobre los resultados de la simulación.
  • La exactitud con que se predicen datos históricos.
  • La exactitud en la predicción del futuro.
  • La provocación de falla del modelo de simulación al utilizar los datos que hacen fallar al sistema real.
  • La aceptación y confianza en el modelo por la persona que hará uso de los resultados que arroje la simulación.

Colección de datos

Es muy importante la confiabilidad de los datos, tanto de los datos obtenidos en la coleccion de los datos como de los números pseudoaleatorios empleados en algunos métodos de simulación.

Entre los diferentes modelos de simulación se encuentran: los modelos de simulación deterministas y los modelos estocásticos.

Si la salida queda determinada una vez que se especifican los datos y la relaciones que entran en el modelo, el modelo es determinista. Sin embargo, hay sistemas que se modelan usando alguna componente de entrada que es aleatoria, lo que da la característica de modelo estocástico.

La salida en los modelos estocásticos es en si misma de carácter aleatoria y es usada solo para aproximar una característica real del modelo. Si la variabilidad en la salida es de suma importancia, debido a la aplicación o el sistema que se este estudiando, también sera importante que la aleatoriedad de la entrada sea confiable.

Casos aplicables de simulación con herramientas gráficas.

Algunas de la aplicaciones de la simulación son las siguientes:
  • Adiestramiento de operadores (centrales carboeléctricas, termoeléctricas, nucleoeléctricas, aviones, etc.).
  • Análisis de sistemas de acondicionamiento de aire.
  • Evaluación de sistemas tácticos o de defensa militar.
  • Análisis de un departamento dentro de una fábrica.
  • Análisis de sistemas de transporte terrestre, marítimo o por aire.
  • Análisis del impacto ambiental causado por diversas fuentes.
  • Análisis y diseño de sistemas de manufactura.
  • Análisis y diseño de sistemas de comunicaciones.
  • Uno de los principales proyectos futuristas de la simulación es en el campo de las minosvalias físicas.
  • Uno de los proyectos mas interesantes de la simulación virtual de sistemas esta relacionado con la composición musical.

Otra pagina sobre simulación aquí.