Aproximación normal a curvas de 1 y 10 temporadas

 En anteriores posts había hablado de la distribución loglogística, y de cómo la misma ajustaba los retornos de una jugada para la jornada. También había mostrado cómo se puede obtener la EM global de la jugada integrando dicha curva. Muchos de los quinielistas conocen la herramienta de Jorge, de la peña Fáciles y Rentables y su Comparador Gráfico. En dicha herramienta de simulación, una de las salidas son las curvas logísticas de la jugada para una jornada, una temporada y diez temporadas. Dicha salida se construye exclusivamente con la simulación miles de veces de la jugada introducida y sus parámetros de recaudación, porcentajes reales y apostados. En esta entrada voy a ampliar la curva loglogística para una jornada y la voy a generalizar para calcular lotes de varias jornadas y así obtener las curvas analíticas para periodos más amplios.

El método a utilizar será la suma de variables con distribución logística. Aunque no lo cité en las anteriores entradas, cuando una variable sigue una distribución loglogística, el logaritmo de la misma sigue una distribución logística. Buceando por internet encontré un artículo que trataba el tema de suma de variables logísticas. En el mismo apuntaba que dicha suma se podía aproximar de varias maneras, una de ellas era a través de la distribución normal, cuyos parámetros pueden hallarse fácilmente con un par de fórmulas aplicadas a la muestra.

La novedad es que la simulación que realizaré para generar la muestra no calculará columnas aleatorias cuyos premios han de calcularse a su vez con la poisson binomial (hablé de ella en el primer post), si no que crearé un "dado" a partir del modelo loglogístico.

Como siempre, haciendo referencia a la Wikipedia en su entrada para la distribución loglogística en inglés, tenemos la siguiente expresión que generará valores aleatorios que seguirán la distribución anterior:

$$F^{-1} (p; \alpha , \beta ) = \alpha \biggl( \frac{p}{1 - p} \biggr)^{1 / \beta}$$  

En la expresión 'p' puede ser el cuantil, o directamente una variable con distribución uniforme entre 0 y 1, esto es el random o pseudoaleatorio de cualquier lenguaje de programación.

Con la expresión de arriba, generando un random para p, se pueden generar cientos de miles de números aleatorios con distribución loglogística, sin necesidad de recurrir nuevamente a la generación de columnas aleatorias y al cálculo de premios. Todo lo que necesitamos el el random y la expresión.

A continuación acompaño el código JS que he introducido en la hoja de cálculo de Google:


function dado_loglogistica(alfa, beta, probabilidad) {
  var r = Math.random();
  var s_n = Math.random();
  if(s_n < probabilidad) {
    return alfa * Math.pow(r / (1 - r), 1 / beta);
  }
  else return 0.0;
}

function simular_normal(iteraciones, jornadas, alfa, beta, probabilidad) {
  var sum_x2 = 0.0;
  var sum_x = 0.0;
  for(var i = 0; i < iteraciones; i++) {
    var acum = 0.0;
    for(var j = 0; j < jornadas; j++) {
      var k = dado_loglogistica(alfa, beta, probabilidad);
      acum += k;
    }
    acum = Math.log(acum);
    sum_x2 += (acum * acum);
    sum_x += acum;
  }
  var s2 = (iteraciones * sum_x2 - sum_x * sum_x) / (iteraciones * (iteraciones - 1));
  var s = Math.sqrt(s2);
  var mu = sum_x / iteraciones;
  return [[mu, s]];
}

En el anterior script dispongo la función de "dado" que genera la variable aleatoria lognormal si la jugada acaba con premio según la probabilidad que tenga de hacerlo, y cero en caso contrario. Para los valores de la jugada, el alfa, el beta y la probabilidad recuerdo que compartí una utilidad de navegador para su cálculo e introducción en la sheet de Google, y que vuelvo a compartir a continuación (con ella podremos calcular nuestra propia jugada):

https://drive.google.com/file/d/1CC7NsZbZivAaYCHtMotjuj40eEQi51ls/view?usp=sharing

Asímismo comparto la hoja de Google con el anterior código JS y que viene a ser una versión de hoja más completa de otra ya compartida en anteriores posts:

https://docs.google.com/spreadsheets/d/1e3XQ_FItSaH3NM1tGh5XqhvPcrbTM4vBzjAEMY7X568/edit?usp=sharing

Siguendo con el código JS, lo que hacemos es generar X simulaciones de 60 y 600 jornadas, lo que equivale a 1 y 10 temporadas (60 jornadas cada una). Cada temporada simulada con ayuda del "dado" es pasada a su logaritmo. Esto es porque estamos haciendo una aproximación de una distribución normal para la suma de variables que siguen una distribución logística, y el dado simula una loglogística. Debo decir también que al hacer el logaritmo es necesario que a lo largo de la temporada, o temporadas, simuladas obtengamos siempre una cifra mayor a cero con el dado, o de lo contrario al hacer el logaritmo se producirá un error en el cálculo. Por ello este algoritmo es útil para una temporada completa o más, ya que cuanto menor sea el lote, más probable es que se dé una cifra nula cuyo logaritmo será un infinito negativo.

Con la simulación de la normal en JS obtendremos una media (mu) y una desviación estándar (sigma) que tan sólo tendremos que introducir en la hoja de cálculo como parámetros de la función DISTR.NORM que traen por defecto tanto Excel como las propias Google Sheets. Los valores de cada serie pueden verse en la hoja "Data".

El resultado para el cálculo se refleja en la siguiente imagen:


Añado que el dado generará valores entre cero e infinito, sin mencionar que la normal es una mera aproximación de la suma de variables. Esto justifica que en las simulaciones de la herramienta que mencioné al principio del post, las curvas para 1 y 10 temporadas caigan mucho más vertiginosamente hacia la derecha de la cola de lo que lo hacen en el gráfico de la imagen. En todo caso los puntos de recuperación del 100% para los lotes de jornadas, son bastante ajustados a los de la simulación pura y dura, y nos dan información de interés de nuestra jugada.

Para los valores del libro compartido he usado los del cálculo previo a la celebración de la jornada 1, y que supuse para hacer la jugada de la peña. Resulta en ocasiones frustrante, que a pesar de jugar durante 10 años, tengamos una esperanza de poco más del 50% de recuperar al menos todo lo jugado. La Quiniela es así, y poco más se puede hacer con el presupuesto de una peña pequeña, aunque 216€ no es poco ni mucho menos. Es el juego, y no deja de ser azar, sobretodo para los modestos

Si no se ha entendido algo recomiendo leer o releer las entradas correspondientes a la distribución loglogística (I y II) y la entrada en la que trato la espranza matemática, ya que este post puede considerarse continuación de las anteriores.

Como nota final recomendar sacar siempre copia del material al drive personal para el cálculo y manipulación, y no usar dispositivos móviles (ni la app de Google Sheets móvil), y emplear un PC para toda la revisión.

Espero que el blog sea revelador o de utilidad para el lector. Un saludo, y suerte en vuestras jugadas.

Comentarios

Entradas populares de este blog

Herramienta de análisis

La distribución binomial de Poisson y el cálculo del escrutinio

La regresión logística y el cálculo de porcentajes apostados