Enso
C/C++ HTML Highcharts JQuery JavaScript Proyecto
Especificaciones
- Año: 2016
- Categoría: Simulación
- Framework: Bootstrap
- Gráficas: Sí (Highcharts)
- Lenguajes: C++, HTML, CSS, JS
Enlaces
- Código fuente en Github.
- Archivo .exe de este proyecto.
Simulación, modelado y caracterización del fenómeno El Niño con C++
Resumen
El objetivo del presente trabajo, es el de simular un periodo de tiempo especificado, sobre el fenómeno de El Niño-Oscilación del Sur (ENOS), a través del Índice Oceánico de El Niño (ONI), haciendo uso del lenguaje de programación C++, mostrando las respectivas graficas sobre los datos aportados por dicha simulación. Se realizo la caracterización del fenómeno con datos obtenidos de mediciones del ONI, por un periodo de 66 años, desde Enero de 1950, hasta Julio del presente 2016, de manera de conocer las probabilidades de que ocurra un evento particular, según la intensidad del mismo, es decir, que ocurra un Niño, una Niña o un periodo Neutral junto al promedio de sus duraciones y valores más altos en cada caso, que junto al uso de la transformada inversa, se relaciona la entrada de variables aleatorias a las probabilidades especificadas anteriormente que permiten la especificación del evento a generar.
Palabras claves: Simulación, ENOS, ONI, probabilidad, transformada Inversa.
Introducción
Los calentamientos inusuales en el Océano Pacifico Tropical traen consigo a El Niño, el cual es “Un fenómeno climático donde se evidencia con mayor fuerza el acoplamiento entre el océano y la atmosfera.” (Paolini, 2015, p. 1). Este fenómeno posee tres fases las cuales están determinadas por el Índice Oceánico de El Niño (ONI), el cual tiene un intervalo de medición que va desde -3 hasta +3, donde tenemos que la fase cálida que determina a El Niño, se encuentra comprendido entre un ONI de 0.5 a 3, mientras que la fase fría asociada a La Niña, (Denominada así para diferenciar ambas fases) va desde -0.5 hasta -3, dejando de esta manera a la fase Neutral desde - 0.5 a +0.5.
Por su parte, cada fase tiene tres tipos de intensidad, exceptuando a la fase Neutral. Para ambas fases, cálida y fría, en un valor positivo y negativo, de 0.5 a 0.9 se entiende que la fase entra en una intensidad Débil, de 1 a 1.4 la fase pasa a ser Moderada, para dar lugar a la intensidad Severa cuando se llega a un valor mayor o igual a 1.5.
Con dichas características, es posible conocer las probabilidades de que ocurra una fase cálida o una fría, así como también una Neutral. Entre las estadísticas obtenidas de los datos obtenidos en el periodo de 1950 hasta 2016, se han tenido un total de 72 eventos, distribuidos de la siguiente manera: 22 Niños, 14 Niñas y 36 Neutrales.
Los datos anteriores, nos permiten conocer la probabilidad para que ocurra alguna fase, en término de los 72 eventos. La probabilidad que ocurra una fase cálida, es de 0.306, mientras quela probabilidad para la fase fría es de 0.194, dando esto un total en probabilidad acumulada de 0.500, correspondiendo de esta manera, a la mitad exacta de que ocurra alguna de ambas fases, dejando la otra mitad a la fase neutral, lo cual corresponde lógicamente al hecho que, ”los índices se dan en una serie de valores monótonamente crecientes o decrecientes dependiendo del calentamiento o enfriamiento del Océano Pacifico Tropical”. (Paolini, 2016, p. 1). Al ir decreciendo monótonamente, no se ha llegado al punto de pasar de una fase cálida a fría directamente o viceversa, por lo tanto, para pasar de una fase a otra, ha de pasar primeramente por una fase Neutral, dando ello la probabilidad obtenida, de que por cada evento no Neutral, habrá dos eventos Neutrales.
Cabe destacar que, aunque un mes tenga un ONI que entre en el rango de alguna fase no Neutral, para ser considerado Niña o Niño, debe haber una continuidad de al menos 4 meses con un índice de cada fase, para ser considerado valido.
Determinando probabilidad de ocurrencia de cada fase
El fenómeno de El Niño, puede tener tres fases distintas, El Niño para denotar la fase cálida, La Niña para la fase fría y una fase neutral. Para ello, tenemos que “Al conjunto de todos los resultados posibles de un experimento estadístico se le llama espacio muestral”) (Walpole, 2012, p. 36), de esta manera dichas fases pasan a ser nuestro espacio muestral.
Conociendo que durante el periodo de estudio que ha sido abarcado el fenómeno de El Niño, se ha logrado detectar un total de 72 eventos del mismo. Para conocer la probabilidad de ocurrencia de alguna de sus fases, conocemos el total de ocurrencias de cada una de ellas, mostradas en la siguiente tabla junto a la probabilidad de ocurrencia.
Debemos dividir el número de ocurrencias de cada fase entre el total de ocurrencias para hallar la probabilidad para cada fase. Quedando manifestado que por cada evento no Neutral, ocurren dos eventos Neutrales, puesto que la distribución corre con la mitad para esta última.
Determinando probabilidad de Intensidad de cada fase del fenómeno
En este punto, caracterizamos la probabilidad que ocurrencia de un evento, siguiendo el enfoque del punto anterior, esta vez enfocado a las intensidades de las fases, dadas por “débil”, “moderada” y “severo”. No se toma en cuenta la fase neutral ya que esta no posee una distinción de intensidad, dada que las mismas se aplican solo a la fase cálida y fría.
Siguiendo el mismo patrón de obtener la probabilidad dividiendo el número de ocurrencias detectadas en el periodo estudiado, divido entre el total de eventos del mismo tipo, obtendremos las respectivas probabilidades.
Primeramente tomaremos el caso de la fase cálida “El Niño”. Tomando el total de eventos de esta fase como n=22, para calcular la probabilidad de que, en caso de que vaya a ocurrir esta fase, ocurra de igual modo alguna de sus intensidades, dividiremos el total de veces que ocurrió esta fase en cierta intensidad entre el número total de la fase.
Desde 1950 hasta 2016, ocurrieron los siguientes eventos o fases cálidas “El Niño”, con respectiva intensidad mostradas en la siguiente tabla, donde también mostramos la probabilidad de ocurrencia.
Por otra parte, tenemos una presencia menor de la fase fría, pero obtenemos la probabilidad
de ocurrencia de la misma manera que lo hemos hecho hasta ahora, como se muestra en la tabla
de abajo.
Caracterizando la etapa cálida “El Niño”
Conociendo ya las probabilidades de cada fase y sus intensidades, procedemos a caracterizar cada fase por separado, tomando en cuenta para cada intensidad y cada ocurrencia de la misma, la duración, el valor pico (el valor más alto que tomo cada ocurrencia), el mes en que comenzó cada, el ONI con que comenzó y terminó. Para este proceso, se calculó la media y desviación estándar para cada intensidad, de la fase cálida, demostrada en la tabla a continuación.
De la tabla anterior, notamos un patrón de aumento en la media a medida que aumenta la intensidad, y con esto se entiende que pasa de débil a moderado y de esta a severo, lo cual tiene sentido gracias al aumento monótonamente creciente o decreciente de los valores o índices ONI. Como los ONI de cada intensidad aumenta, y estos valores aumentan de poco a poco, resulta obvio que una ocurrencia ha de tardar más en culminar su fase a medida que sus índices oceánicos de El Niño alcanzan mayores valores.
Cabe destacar que apartado “Mes de comienzo” indica un valor numérico que en este caso, indica el mes 8 para la intensidad débil, para tomarlo con ejemplo. Estos meses hacen referencia numérica a los 12 meses que contiene un año, por lo tanto el mes corresponde al mes Agosto, dando lugar que el promedio de eventos Niños de intensidad débil comenzaron en el mes de Agosto. Los valores iniciales y finales de los eventos no pasan a ser tan relevantes, puesto que lo normal es que, viniendo de una fase neutral, ambos valores se encuentren muy cercanos al 0.5 que limita a la fase neutral.
Caracterizando la etapa fría “La Niña”
Procedemos a realizar la caracterización para la fase fría tal cual se realizo con la fase cálida, con los valores a considerar relevantes. En ciertos aspectos, como la duración, es posible tener referencias similares a las de la fase cálida, pero cabe recordar que cuando se experimentan con mayor número de pruebas, los resultados serán más consistentes por lo tanto será más difícil que estos sufran variaciones, lo cual notaremos algo de ello gracias a lo mostrado en la siguiente tabla.
Ocurre que la diferencia entre la duración media de la intensidad moderada para esta fase, es mucho mayor que la de la fase cálida, pero cabe recordar que el numero de experimentos es mayor en el Niño que en la Niña, por lo tanto esta fase ha sido más susceptible a los cambios de valores. Al igual que en la fase cálida, el aspecto de Mes de Comienzo es una referencia numérica a los 12 meses que contiene un año, por lo tanto para la intensidad débil, que indica mes 8, corresponde al mes de Agosto.
Caracterizando la fase Neutral
La fase neutral para la simulación que hemos de realizar, no tiene tanta importancia con las otras dos fases, puesto que al ser neutral, se mantiene en una posición que afecta en lo mismo según las consecuencias que trae consigo el fenómeno, pero no por ello deja de tener información relevante para la simulación. Como ya se ha dicho, la fase neutral funge como puente entre dos eventos no Neutrales, puesto que en esta transición, ha de pasar por esta fase, por lo tanto los valores que nos ha de importar de esta fase se encuentran en la tabla a continuación.
Esta fase posee una distribución bastante peculiar, lo cual se puede notar en la desviación en cada característica. El asunto que conlleva a esto es que, a diferencia de las fases anteriores, donde lo mínimo que debe durar una fase es de 4 meses, en esta, no existe mínimo mas allá de bastar con tener un solo mes, y esto, de la mano con que se han tenido fases neutrales con tiempos de duración excesivamente largo en comparación a las otras fases, hace que esta diferencia entre la duración mínima y la duración máxima lleve a una desviación estándar tan alta.
De igual manera se nota un cambio en el mes que comienza esta fase, en las anteriores, es normal que siempre comience a partir del mes de agosto ya que es indispensable que las fases pasen por el mes de Diciembre, que es cuando tienen su valor ONI más elevado, por lo tanto que la fase neutral tenga una media de comienzo en el mes de Mayo no resulta extraño, puesto que esta fase al poseer un valor Pico, no necesita pasar por el mes de Diciembre.
Por otra parte, los valores iniciales y finales resultan de importancia, puesto que indican los valores promedios para el comienzo y final de la transacción entre eventos, dando lugar a conocer un valor aproximado con el que debe comenzar el siguiente evento, no Neutral.
Comparación entre El Niño y La Niña
Habiendo indicado que hay más probabilidad de que ocurra un Niño que una Niña, puesto que las probabilidades son de 0.306 y 0.194 respectivamente, nos encontramos con la interrogativa de cómo deben comportarse cada una de estas fases de manera que se diferencien una de la otra en término de sus valores, más no en sus consecuencias.
Comenzando con la duración, notamos que ambas fases poseen un aumento a medida que aumenta la intensidad de la misma, comenzando ambos con una duración de 7 meses, para una intensidad débil, y así va aumentando.
La diferencia más notable de este aspecto, es que La Niña, dura por lo general más tiempo que el Niño. Por otra parte, referente al valor más alto que alcanzan las fases en sus respectivas intensidades, notamos que la Niña posee un valor pico mayor que el Niño cuando se tiene una intensidad Débil y Moderada, a diferencia de la intensidad Severa, la cual posee un valor mayor en la fase cálida.
Algo en que coinciden mas acertadamente ambas fases son, el mes en que comienzan, siendo casi idénticos el mes de comienzo para ambas a diferencia mayor cuando el Niño es Severo.
Respecto a los valores iniciales y finales, los valores finales son casi idénticos, pero respecto a los valores Iniciales, resulta que cuando La Niña se encuentra con una intensidad Moderada, esta comienza con un valor mucho mayor al de El Niño.
A pesar que notamos patrones, como el de crecimiento en las duraciones de las intensidades, no notamos mayores diferencias mas allá de la mencionada anteriormente, dando lugar que una fase es cercanamente el reflejo de comportamiento de la otra, respecto a sus valores, mas no de sus consecuencias.
Generación de variables aleatorias Uniformes para determinar fase e intensidad de evento a generar
Como en todo modelo de simulación, tenemos variables aleatorias interactuando entre sí. Para poder simular estas variables, hacemos uso de la transformada inversa, la cual “utiliza la distribución acumulada F(x) de la distribución que se va a simular” (Ross Bu, 2003, p. 49). Como F(x) está definida en un intervalo (0; 1), tenemos la posibilidad de generar un número aleatorio uniforme y tratar de determinar el valor de la variable aleatoria para la cual su distribución acumulada es igual R. De este modo, podemos generar variables aleatorias y relacionarlas con las probabilidades que ya hemos determinado en la caracterización de las distintas fases e intensidades.
Lo primero a realizar es generar una variable aleatoria para relacionarlo con un evento, siendo un evento alguno de las tres fases del fenómeno. Conociendo las probabilidades de que ocurra alguno, tenemos que si:
-
Aleatorio < 0.306 (Probabilidad de Niño), esta variable al aplicarle la transformada inversa, pasa a ser un evento Niño.
-
Aleatorio < 0.500 (Probabilidad de Niña más Probabilidad de Niño), esta variable al aplicarle transformada inversa, pasa a ser un evento Niña.
-
Aleatorio < 1 (Probabilidad acumulada total, sumadas las probabilidades de las tres fases), esta variable pasaría a ser un evento Neutral.
De igual manera nos encontramos cuando generamos una variable aleatoria para que corresponda a alguna intensidad una vez que se tenga la fase que se ha de generar.
En caso que la fase a generar sea Niño, tenemos la siguiente distribución acumulada.
Si ya tenemos una ocurrencia de Niño lista para generar sus índices ONI, debemos conocer en que intensidad se encontrara dicha fase nueva. De modo que si:
-
Aleatorio < 0.363 (Probabilidad que sea débil), la variable corresponderá a un Niño débil.
-
Aleatorio < 0.636 (Probabilidad que sea débil más probabilidad que sea moderado), la variable corresponderá a un Niño Moderado.
-
Aleatorio < 1 (Probabilidad total acumulada), la variable corresponderá a un Niño Severo.
En caso de tener que generar una Niña, se nos presenta la siguiente distribución acumulativa:
-
Aleatorio < 0.241 (Probabilidad que sea débil), la variable corresponderá a una Niña débil.
-
Aleatorio < 0.643 (Probabilidad que sea débil más probabilidad que sea moderada), la variable corresponderá a una Niña Moderada.
-
Aleatorio < 1 (Probabilidad acumulativa total), la variable corresponderá a una Niña Severa.
Generación de variables aleatorias Uniformes que correspondan a valores de cada fase
Para generar por completo la distribución de índices ONI de cada fase, es necesario conocer valores como los planteados al comienzo del trabajo, como lo son: duración, mes en que comienza el evento, el valor más alto, el valor con que inicia la fase y el valor con que termina. Para lograr esto, continuamos con la caracterización las fases y sus intensidades, que, sacando la media y la desviación estándar para cada valor, podemos generar una variable aleatoria uniforme, y aplicarle la transformada inversa.
Excel nos brinda la facilidad de aplicarle a un valor aleatorio, una función de transformada inversa la cual necesita, el valor que va a transformar, la media y la desviación estándar de la distribución que seguirá. De manera que si queremos saber la duración que durara la fase que ha de generarse, se crea una variable aleatorio, se aplica la función de transformada inversa de Excel, pasándole la media y la desviación estándar del valor de duración de la caracterización de cada intensidad para cada fase (Revisar puntos 4, 5 y 6). De manera que si se generara una fase Niño, con intensidad Moderada, los parámetros que recibirá la función serán, el valor generado el cual tomaremos 0.5813 como ejemplo, la media y la desviación para esa ocurrencia en particular, que vendrían siendo: 7.67 y 1.86 respectivamente, lo cual nos arrojara la transformada.
Por su parte, C++ no nos proporciona una funciona predeterminada, por lo tanto, la solución a este problema la hemos dado con, generar la transformada inversa para números aleatorios que van desde 0.100 hasta 0.850, y todos los valores que nos arroje, son colocados en un vector en C++, de manera que se tendrían los valores predeterminados, lo cual seria para cada caso, para cada valor de cada intensidad de cada fase.
Generando la tabla de índices ONI
Una vez tengamos las fases que serán generadas, junto a sus duraciones, valores picos y valores con que iniciaran y terminaran, podemos conseguir la distribución de los índices ONI para cada fase.
A continuación se muestra el resultado de una simulación para un periodo de 4 años. Se muestra que cada fase aumenta o decrece (dependiendo de la fase en que se encuentra pues, si entra en una fase Niña, el índice ira decreciendo monótonamente). A medida que aumenta la fase, los índices van aumentado paulatinamente hasta llegar a su valor pico, es decir el valor máximo que alcanza en una fase, y una vez llegado a este punto, ira decreciendo hasta llegar al valor final con que terminara la fase.
Lo explicado anteriormente es un comportamiento notado en los datos recolectados durante los 66 años de estudio del fenómeno. Se nota de igual manera, que nunca pasa directamente de una fase no neutral a otra no neutral, es decir, no pasa de Niño a Niña y viceversa.
Como vemos, que cuando una fase no neutral termina, siempre llega a una fase Neutral, y ahí va hacia otra fase, que pudiera ser la misma de la que vino.
Generando graficas con los datos obtenidos de la simulación
Para la generación de las graficas de los índices ONI, hacemos uso de la librería Highcharts, que nos brinda la jQuery para graficar. Una herramienta muy fácil de usar pero muy provechosa. Si bien la simulación se realiza en el lenguaje C++, la unión de ambos lenguajes, por asi decirlo, es desde el código en C++, escribir en un archivo de texto los índices ONI, de manera que desde el navegador con jQuery, leer los datos escritos en dicho archivo, y una vez recogidos, pasárselos a la librería Highcharts y graficarlos.
Siguiendo los resultados de la simulación del punto anterior, mostramos a continuación la grafica de los índices ONI obtenidos en dicha simulación.
Conclusión
Para poder simular un fenómeno, proceso o sistema, es necesario caracterizarlo de manera que sirva como base para la formulación y desarrollo de un modelo, de manera que se pueda realizar la simulación describiendo el sistema deseado a través los parámetros conocidos. Si bien solo usamos como parámetro de entrada el periodo en que se simulara, los parámetros relevantes son los índices oceánicos de El Niño, los cuales son los necesarios para la distribución de cada mes de las fases generadas del fenómeno. Es importante conocer las características y datos que intervienen en el desarrollo de lo que se quiere estudiar puesto que es el modo de llegar a entender el comportamiento, ya que de esta manera podemos realizar un modelo adecuado.
Para entender cómo deben ser los índices ONI, fue necesario hacer una caracterización completa del fenómeno de manera que conocimos como iba variando, de modo que nos permitiera simular el comportamiento y generar sus respectivas gráficas.
Referencias
Coss Bu, R. (2003). Simulación. Un Enfoque practico. Limusa, México.
Paolini, J. (2015). El fenómeno de El Niño: ¿Qué es? ¿Cómo ocurre? ¿Está relacionado con otros eventos? ¿Cómo se mide su intensidad? ¿Afecta a Venezuela?. 1 Universidad Nacional
Experimental de Guayana, Ciudad Guayana, Venezuela. 2 Sustainability Measuring and Modeling Lab. UPC. Barcelona, España.
Paolini, J. (2016). Duración e Intensidad del Fenómeno El Niño (ENSO). Universidad Nacional Experimental de Guayana, Ciudad Guayana, Venezuela.
Walpole, R., Myers, R., Myers, S. y Ye, K. (2012). Probabilidad y estadística para ingeniería y Ciencias. 9na Edición. Pearson Educación, México.
Nota: Todas las tablas, figuras e imágenes mencionadas en este post se encuentran en el informe que está en los enlaces.