Search This Blog

Saturday 2 August 2014

Simulaciones en Excel









Aunque hay programas más adecuados, la sencillez y flexibilidad de Excel también puede ser aprovechada para efectuar experimentos simples de simulación matemática. Básicamente, de lo que se trata es de generar muestras aleatorias de números que sigan una distribución determinada. El resultado puede ser usado como entrada de cualquier modelo que se alimente de datos que se supone que siguen esa distribución.
La técnica para la generación de esas muestras no puede ser más sencilla. Conocida la función de distribución de probabilidad de lo que se trata es de ir hallando la abcisa correspondiente a números generados aleatoriamente de forma uniforme entre 0 y 1 (el rango de cualquier función de distribución de probabilidad). Así, si queremos generar una muestra de n valores de una variable aleatoria X que se distribuye normalmente con media μ y desviación típica σ, debemos partir de n números aleatorios distribuidos uniformemente entre 0 y 1. Posteriormente, para cada uno de esos números, pi, tenemos que hallar el valor xi de la variable aleatoria que presente una probabilidad de ocurrencia menor o igual a pi. El conjunto de valores xi así obtenidos será una muestra simulada de la variable aleatoria X, evidentemente con su misma distribución.


¿Cómo plantear esto en Excel? Para generar los números aleatorios uniformemente distribuidos entre 0 y 1 tenemos la función ALEATORIO(). Y para obtener la abcisa correspondiente a una ordenada dada de la distribución normal tenemos la función INV.NORMAL(), que recibe como parámetros el valor de la abcisa (la probabilidad), la media y la desviación típica de la normal que estamos simulando. Hay que decir que esta función está disponible a partir de Excel 2010; para versiones anteriores tenemos la función DISTR.NORM.INV() cuyo funcionamiento es idéntico. Lo único que hay que tener en cuenta es que la función ALEATORIO() devuelve valores en el intervalo [0, 1), cerrado por la izquierda y abierto por la derecha; por su parte, la función INV.NORMAL() (o su equivalente DISTR.NORMAL.INV()) trabaja para valores de probabilidad mayores que cero e inferiores a uno. Por tanto, en el improbable caso de que ALEATORIO() devolviese exactamente cero, la función INV.NORMAL() daría un error. Si fuésemos muy puristas podríamos controlar este caso pero, sinceramente, creo que no merece la pena. Por otra parte, si quisiésemos simular valores para una variable aleatoria que se distribuyese siguiendo otra distribución de probabilidad, obviamente deberíamos usar la correspondiente función estadística INV de Excel.



En este fichero Excel podemos ver un sencillo ejemplo de lo explicado. La columna A contiene 200 números aleatorios distribuidos uniformemente entre 0 y 1 (podemos variar su valor pulsando F9). Por su parte la columna B contiene los valores simulados para una variable aleatoria de media la que señalemos en la celda E1 y de desviación típica la indicada en la celsda E2. Los valores de los parámetros pueden ser cambiados en cualquier momento. Se incluye también un gráfico donde podemos ver cómo efectivamente los valores generados dan lugar a una gráfica igual a la de la función de distribución de probabilidad de una normal con los parámetros elegidos.




No comments:

Post a Comment