jueves, 6 de mayo de 2021

Interpretar bien las medias

 

La estadística tiene, en ciertos círculos, una mala reputación, la de la disciplina según que "si tu te comes dos pollos y yo ninguno, hemos comido un pollo cada uno". Esto es cierto a un nivel muy superficial, pero, si personas sin escrúpulos pueden usar la estadística para hacer esta afirmación (y peores), la estadística también nos ofrece instrumentos para averiguar que, en el caso del pollo, la situación no es tan idílica.

La afirmación que acabamos de hacer se basa en la media aritmética de un conjunto de valores. La media de un conjunto de números, que llamaremos $x_1,\ldots,x_n$ es simplemente la suma de los valores dividida por el número de valores que tenemos. La media se indica normalmente con $\bar{x}$, y se puede escribir como (*):

\begin{equation} \bar{x} = \frac{x_1 + x_2 + \cdots + x_n}{n} = \frac{1}{n} \sum_{i=1}^n x_i \end{equation}

Supongamos por ejemplo que tenemos un conjunto de 10 personas, que tienen altura, en cm:
pesona altura
1 140
2 195
3 150
4 180
5 160
6 185
7 160
8 180
9 175
10 175
La altura media de estas personas es

\begin{equation} \bar{h} = \frac{1}{10}(140+195+150+180+160+185+160+180+175+175) = \frac{1700}{10} = 170 \end{equation}

Consideremos ahora otro grupo de 10 personas
persona altura
1 170
2 170
3 170
4 170
5 170
6 170
7 170
8 170
9 170
10 170
Es fácil ver que en este caso también la altura media es de $170$ cm pero, en este caso, nos encontramos frente a una situación bastante diferente: mientras en primer caso las alturas eran muy variadas, de 140 a 195 cm y, en efecto, nadie medía 170 cm, ahora tods miden 170 cm. Las diferencia entre las dos situaciones se puede evidenciar por medio de un histograma: en abscisa ponemos todos los posible valores que la altura puede tomar (en este caso, será suficiente poner valores entre 140 y 195 cm) y en ordenada, por cada valor, el número de personas cuya altura tiene ese valor. Los resultados están en la Figura 1. Aquí es evidente que las dos situaciones son muy diferentes, en la primera las alturas están muy "desperdiciadas" alrededor de la media.

Lo que necesitamos ahora es una medida de este efecto, un número que nos diga cuanto "desperdiciados" son los datos alrededor de la media. Esta medida es la varianza. La varianza es definida como la media de los cuadrados de las distancias entre cada elemento y la media. Es decir, si tenemos los elementos $x_1,\ldots,x_n$, y su media es $\bar{x}$, la varianza $\sigma^2$ se define como(**)

\begin{equation} \sigma^2 = \frac{1}{n} \left[ (x_1-\bar{x})^2 + \cdots + (x_n-\bar{x})^2 \right] = \frac{1}{n} \sum_{i=1}^n (x_i-\bar{x})^2 \end{equation}

La varianza nos da la indicación que buscábamos de la dispersión de los valores alrededor de la media. El el primer caso arriba, la varianza es

\begin{equation} \sigma^2 = \frac{1}{10}\left[ (140-170)^2+(195-170)^2+(150-170)^2+ (180-170)^2+(160-170)^2 \\ +(185-170)^2+ (160-170)^2+(180-170)^2+(175-170)^2+ (175-170)^2\right] = 260 \end{equation}

En el segundo caso, todos los factores son $(170-170)^2=0$, por tanto $\sigma^2=0$.

La varianza nos ayuda a resolver el caso del pollo: es cierto que, mediamente, nos comemos un pollo cada uno, pero en el caso "de justicia", en que efectivamente nos comemos un pollo cada uno, la varianza es cero, en el caso en que uno se come dos pollos y el otro ninguno, la varianza es $1$.

La media, como medida estad&iacite;stica, tiene otro problema: es muy sensible a la presencia de pocos valores muy alejados de ella, los llamados outliers. Consideramos un barrio con 10 familias. Nueve de ellas ganan 10.000 Euros al año, la d´cima gana 1.000.000 de Euros. Si queremos dar una valoración global de ese barrio no diríamos que se trata de un barrio rico: casi todo el mundo gana muy poco dinero. Sin embargo, si calculamos el sueldo anual medio en este barrio conseguimos

\begin{equation} \bar{s} = \frac{1}{10} (9 \times 10.000 + 1.000.000) = 109.000 \end{equation}

Un sueldo medio de más de 100.000 Euros al año nos puede hacer pensar que el barrio es rico mientras, en realidad, no lo es (y esto, claramente, puede perjudicar a las 9 familias a la hora de recibir ayudas o de establecer el IBI en sus viviendas). El problema está en esa única familia que gana tanto dinero que sube la media para todos. En este caso la varianza nos avisa que algo está pasando

\begin{equation} \sigma^2 = \frac{1}{10} \left[ 9*(10.000-109.000)^2 + (1.000.000-109.000)^2\right] = 88.209.000.000 \end{equation}

En este caso, una medida más fiable nos la da la mediana. La mediana de este conjunto es simplemente el sueldo tal que la mitad de las familias gana un sueldo menor o igual a la mediana, y la mitad gana un sueldo mayor o igual. En este caso, la mitad de las familias (5 familias) gana 10.000 Euros (o menos, pero esto no nos interesa en este caso) y la mitad gana 10.000 Euros o más. Por tanto el sueldo mediano en el barrio que nos interesa es de 10.000 Euros al año: el barrio no es rico.


(*) El símbolo $\sum$ se usa en matemáticas para indicar una suma de valores. Los habitantes de Madrid lo reconocerán en el símbolo de la comunidad: $\Sigma{M}$, donde $M$ indica los habitantes de Madrid y el símbolo $\Sigma$ indica "la suma de todos", así como recita el lema asociado al logo.

(**) El cuadrado es necesario. Si no lo ponemos, se puede demostrar que los elementos más grandes que la media compensan exactamente los menores que la media, por tanto el resultado sería siempre cero. Es decir, sean cual sean los valores $x_i$ y su media $\bar{x}$, es

\begin{equation} \frac{1}{n} \sum_{i=1}^n (x_i-\bar{x}) = 0 \end{equation}

miércoles, 7 de abril de 2021

El método d'Hondt para asignar escaños.

En España, en las elecciones, la asignación de escaños se hace usando un método conocido como "método d'Hondt", nombrado en honor a su creador, el matemático Belga Victor D'Hondt, que lo creó en 1878 . Se habla mucho de este método, de sus ventajas y de sus problemas, pero no todos saben exactamente como funciona. No es un método complicado: sólo necesita unos sencillos cálculos.

La mejor manera para entenderlos es quizás con un ejemplo. En una elección se presentan cuatro partidos, que llamaremos A, B, C, D. En las elecciones se asignan 11 escaños. Supongamos que los partidos han conseguido los votos siguientes:

A: 90000
B: 50000
C: 20000
D: 5000

Pongamos estos valores en una lista:

A B C D
90000 50000 20000 5000

El partido que tiene más votos es el partido A. Asignamos un escaño al partido A y dividimos su número de votos por dos. Ahora tenemos una situación que podemos resumir como sigue:
A B C D Escaño
90000 50000 20000 5000 A
45000 50000 20000 5000

En la primera fila hemos indicado que hemos asignado un escaño al partido A, y en la segunda fila hemos puesto el resultado de la división. Ahora el máximo número de votos los tiene el partido B. Asignamos un escaño a B, y dividimos su número de votos por dos:
A B C D Escaño
90000 50000 20000 5000 A
45000 50000 20000 5000 B
45000 25000 20000 5000

Ahora, otra vez, el partido A es el que tiene más votos. Asignamos un escaño al partido pero esta vez ponemos en la lista su número de votos dividido por tres:
A B C D Escaño
90000 50000 20000 5000 A
45000 50000 20000 5000 B
45000 25000 20000 5000 A
30000 25000 20000 5000

Otra vez, el máximo de votos lo tiene el partido A: le asignamos un escaño y remplazamos el valor con su número de votos dividido por cuatro:
A B C D Escaño
90000 50000 20000 5000 A
45000 50000 20000 5000 B
45000 25000 20000 5000 A
30000 25000 20000 5000 A
22500 25000 20000 5000

Ahora el máximo lo tiene B, le asignamos un escaños y ponemos en la lista sus votos divididos por tres... seguimos así hasta haber asignado todos los escaños (10, en este caso). El resultado final es el esquema siguiente:
A B C D Escaño
90000 50000 20000 5000 A
45000 50000 20000 5000 B
45000 25000 20000 5000 A
30000 25000 20000 5000 A
22500 25000 20000 5000 B
22500 16667 20000 5000 A
18000 16667 20000 5000 C
18000 16667 10000 5000 A
15000 16666 10000 5000 B
15000 12500 10000 5000 A
12857 12500 10000 5000 A

El partido A ha conseguido 7 escaños, B ha conseguido 3, C ha conseguido 1 y D no ha conseguido ninguno.

Hasta ahora todo bien, pero ahora empiezan los problemas. Supongamos que los partidos B y C se unen, y suman sus electores. Ahora tenemos sólo tres partidos, que consiguen los votos siguientes:

A: 90000
BC: 70000
D: 5000

Si aplicamos el método que acabamos de usar, conseguimos la tabla siguiente:

A BC D Escaño
90000 70000 5000 A
45000 70000 5000 BC
45000 35000 5000 A
30000 35000 5000 BC
30000 23333 5000 A
22500 23333 5000 BC
22500 17500 5000 A
18000 17500 5000 A
15000 17500 5000 BC
15000 14000 5000 A
12857 14000 5000 BC

Ahora el partido A consigue 6 escaños, el partido BC consigue 5 y el partido D, otra vez, no consigue ninguno.

Los dos partidos, B y C, presentándose separadamente conseguían, entre los dos, cuatro escaños. Si se unen, aún si el número total de votos no cambia, consiguen cinco. Han ganado un escaño simplemente por presentarse juntos. Al mismo tiempo el partido A, con el mismo número de voto y el mismo porcentaje respeto al número total, ha perdido un escaño simplemente porque dos partidos se han unido, incluso si el número total de votos que han conseguido no cambia. Este es el efecto de ventaja para los grandes partidos de que se habla cuando se menciona el método d'Hondt.

Hay que remarcar que, en las elecciones en España, este no es el factor más importante que favorece los grandes partidos. La manera en que se recuperan los votos perdidos tiene una influencia mucho más grande. En este caso, por ejemplo, el partido D no ha conseguido escaños dado que sólo tiene 5000 votos. Sin embargo, entre todas las circunscripciones el partido podría acumular un número considerable de votos y aún así nop tener ningún escaño.

Por esto se considera que en el caso de la comunidad de Madrid, que tiene una sola provincia y una sola circunscripción, la elección es esencialmente proporcional. También contribuye a esto el número relativamente elevado de escaños: Madrid tiene 136 escaños, uno cada 48.000 habitantes, mientras que el congreso español, con 350 escaños, tiene uno cada 134.000 habitantes. Es posible ver que el efecto de ventaja que hemos considerado aquí es menor si en la elección se asignan muchos escaños comparados con el número de electores.

Aun así, el efecto es real, y contribuye a penalizar los partidos pequeños. Por esto, en muchos países de Europa se usa un método modificado en que en lugar de dividir por 2, 3, 4,... se divide por 3, 5, 7,... consiguiendo un reparto más proporcional de los escaños.

Si el método d'Hondt tiene este tipo de problemas, uno se puede preguntar porqué no usamos uno mejor. Hasta nos podemos preguntar si existe un método que asigna los escaños de una manera que refleja perfectamente los votos. Resulta que esto es imposible, y nos lo impide un teorema matemático, el teorema de Arrow. El teorema se refiere a decisiones en que cada persona puede extresar una lista de preferencias entre alternativas, pero se extiende fácilmente a sistema de votos. Al teorema dice que no existe ningún sistema de ordenación de preferencias que cumpla las siguientes cinco condiciones:
  1. No-dictadura: se tienen en cuenta los deseos de todos lso electores;
  2. Eficiencia de Pareto: las preferencias unánimes son respetadas: si todos los electores prefieren el candidato A al candidato B, el candidato A gana;
  3. Independencia de las alternativas irrelevantes: si se elimina un candidato, el orden de los otros no debe cambiar. Si el candidato A es preferido frente al candidato B y existe otro candidato C, la eliminación de C no cambia las cosas: A sigue siendo elegido frente a B.
  4. Dominio sin restricciones La votación tiene que tener en cuenta todas las preferencias de los electores;
  5. Orden social: cada persona debe tener la libertdad de ordenar sus preferencias como quiera.
Se trata de condiciones muy razonables, algo que nos parece normal pedir a un sistema de elección. Pero el teorema dice que no existe ningún sistema de elección que respete estas cinco condiciones. El método d-Hondt, por ejemplo (así como casi todos los métodos existentes) no cumple la condición 3: Independencia de las alternativas irrelevantes.

Lamentablemente, el sistema perfecto no existe: hay que aprender a convivir con la imperfección.

miércoles, 31 de marzo de 2021

Interpretemos bien las gráficas

La pandemia nos ha transformado todos si no en expertos en epidemiología, por lo menos en personas que buscan toda la información posible sobre el sujeto. Conceptos que hasta 2020 nos eran completamente extraños (Incidencia Acumulada a 14 días, R0, ola epidémica, pico de la curva,...) ahora nos "suenan", incluso si a veces no estamos tan seguros de su significado o de su definición precisa. La epidemiología es un sujeto complejo y supone analizar mucha información. En búsqueda de esta información recurrimos a menudo a gráficas, muchas veces a gráficas publicadas en periódicos y diseñada por personas cuyos conocimientos en análisis de datos no podemos averiguar.

Las gráficas son un muy bien instrumento para conseguir información: nos proporcionan una visión global (gestalt) de los datos que una secuencia de números no nos pueden dar, una que nos hace entender, a primera vista, el comportamiento general de un fenómeno.

Pero hay que tener cuidado: los gráficos pueden ayudar a comprender pero pueden también engañar y darnos una impresión falsa que invalidará todos los razonamientos que hagamos en la base de esa información. Y hay que tener doblemente cuidado con la posibilidad que los gráficos se utilicen intencionalmente para manipular la información, para dar una impresión que no se corresponde a lo que dicen los datos.

Una manera muy común de provocar una impresión incorrecta es el uso de una escala expandida. Consideremos dos grupos de 150 personas en que se puede producir un fenómeno dado. En el primer grupo el fenómeno se produce en 105 personas, mientras en el segundo grupo se produce en 115. La diferencia entre los dos grupos es de 10 personas, un 5% del total. Los dos gráficos de la Figura 1 representan esta situación, pero en dos escalas muy diferente. El primero tiene en el eje de las ordenadas una escala de 0 a 120, y muestra que la diferencia entre los dos grupos es muy pequeña. El segundo expande la escala, y sólo muestra en ordenadas los valores de 100 a 120. En esta gráfica la diferencia entre los dos grupos aparece mucho más grande de lo que es en realidad: nos da una impresión equivocada.

Esto no quiere decir que la escala expandida sea un mal o que no tenga su utilidad. Consideremos el caso en que tenemos 10.000 personas y cada día cierto número de personas hacen algo (para fijar las ideas: contamos cuantas personas toman café sin leche por la mañana---los datos que pongo son completamente inventados y los uso sólo para mostrar las características de los gráficos; no tienen nada que ver con la vida real). El gráfico de la Figura 2 muestra un valor prácticamente constante: de las 10.000 personas, unas 5.000 toman café sin leche por la mañana.

 

Si ahora expandimos la escala y ponemos en ordenadas los valores entre 4.500 y 5.500 conseguimos la gráfica de la Figura 3


Aquí es evidente que los datos tienen una periodicidad semanal: el fin de semana menos personas desayunan con café sin leche (quizás porqué tienen más tiempo para desayunar y e toman un café con leche y una tostada...). Se trata de algo que casi no se notaba en la gráfica de la Figura 2 y que la expansión de la escala ha puesto en evidencia. En este caso la expansión de la escala, lejos de engañarnos, nos ha ayudado a ver algo que con la escala completa no veíamos.

 

 

Otra solución que puede ser útil o engañosa según se usa es el uso de una escala logarítmica. En una gráfica como la que hemos visto ahora, distancias iguales en el dibujo corresponden a intervalos iguales. En una escala logarítmica, intervalos iguales corresponden a intervalos que se multiplican cada vez por 10. Así, por ejemplo, el intervalo entre 1 y 10 tiene el mismo espacio que el intervalo entre 10 y 100 y el entre 100 y 1000: a medida que los números se hacen grandes, el espacio dedicado a cada número se reduce. Esto puede llevar a no evaluar bien las diferencias entre fenómenos. Las tres curvas de la Figura 4 muestran la variación del precio de tres productos (de fantasía) a lo largo del año. La primera impresión que nos da la gráfica es que precio del producto B está a la mitad entre los productos A y C. En realidad, si dibujamos la gráfica en una escala lineal, conseguimos el resultado de la Figura 5

 


                           


El producto B cuesta 10 veces el producto A, y el producto C cuesta 10 veces el producto B. El diagrama nos daba una impresión equivocada. El diagrama también nos da la impresión que el crecimiento está reduciendo su velocidad, mientras el diagrama de la Figura 5 nos muestra que no es así. Por otro lado está claro que algo se está reduciendo, pero… ¿Qué? Para ver esto hay que considerar otro tipo de curva y de fenómeno: los fenómenos exponenciales.

 

Como en el caso anterior, esto no quiere decir que un diagrama logarítmico no sea útil. Un caso pertinente son los datos de una pandemia. Una pandemia, en sus inicios, tiene un comportamiento exponencial, es decir, el número de casos es una función del tiempo del tipo \begin{equation} C(t) = e^{\beta_t t} \end{equation}

donde $\beta_t$ es el parámetro que determina la velocidad de propagación de la epidemia: si $\beta$ es constante, la epidemia se extiende de manera incontrolada, si $\beta$ se reduce con el tiempo, la epidemia está frenando su expansión. El problema es que la función exponencial crece tan rápidamente que puede ser difícil observar este efecto. Consideremos la Figura 6 (en un diagrama lineal): ¿qué hace la exponencial? ¿Está frenando o no?

 


En este diagrama es difícil decirlo. Por otro lado, en un diagrama logarítmico lo que se representa es el logaritmo de la función: 

 

\begin{equation} \log C(t) = \log e^{\beta t} = \beta t \end{equation}

 

Es decir, una exponencial se transforma en una línea recta, con una pendiente constante. Si visualizamos los datos de la Figura 6 en un diagrama logarítmico, observamos el comportamiento de la Figura 7


donde está claro que la epidemia está frenando su crecimiento. Una manera aún más clara de determinar el comportamiento de una curva exponencial es mirar el aumento en porcentaje de un día para otro. Esto, excepto un factor 100, es una aproximación de 

\begin{equation} \frac{1}{C(t)}\frac{d}{dt} C(t) = \frac{\beta e^{\beta t}}{ e^{\beta t}} = \beta \end{equation}

 

En este caso, si la epidemia sigue un andamiento exponencial, veremos una línea horizontal. La Figura 8 muestra este valor para la primera ola de la pandemia en España (curva azul oscuro contínua).

 


Al principio la curva es muy irregular: cuando los casos son pocos, pocas variaciones aleatorias suponen grandes cambios. A medida que el número de casos aumenta, la curva se hace más regular, y se nota un claro descenso: desde finales de Marzo la pandemia empezaba a estar controlada.

 

Las gráficas son un instrumento muy útil en cuanto proporcionan una visión intuitiva, a primera vista, del comportamiento de un fenómeno. Pero, por la misma razón, también se prestan a manipular la información y a dar impresiones equivocadas. Por esto es importante, siempre, fijarse bien en los detalles de cualquier representación gráfica, y juzgar si la representación que se está mirando ofrece una imagen fiel de los datos o no. En caso de duda, mejor fijarse en los números: menos intuitivos, pero que nunca mienten.

 

 

 

 

 

lunes, 15 de febrero de 2021

El arte de contar II: torres de Hanoi y recursión

La recursión es uno de los principios más importantes no sólo de las matenáticas sino, también, de la informática. Todos los lenguajes de programación modernos permiten la recursión, y la usan como una de sus características fundamentales.

La idea de la recusrión es uy sencilla: utilizar, para la solución de un problema, la solución de una versión más sencilla del mismo problema, hasta llegar así, reduciendo la dimensión del problema, a uno tan sencillo que se puede resolver sencillamente.

La manera mejor de entender la recusrión es a través de un ejemplo. Consideremos un juego muy conocido: el juego de las torres de Hanoi. En una table hay tres palos y en uno de ellos hay una serie de discos de diámetro progresivamente más grande, hasta formar una especie de pirámide:
El juego consiste en mover la pirámide del palo $1$ al $2$ sin poner nunca un disco más grande por encima de uno más pequeño.

Si la torre está formada por $n$ discos, llamaremos el problema $\mbox{Hanoi}(n)$. Imaginemos ahora que no sabemos como solucionar $\mbox{Hanoi}(n)$ pero sí sabemos como solucionar el problema más sencillo con $n-1$ discos: $\mbox{Hanoi}(n-1)$. Con esta solución, es fácil resolver $\mbox{Hanoi}(n)$. El algoritmo es el siguiente:
  1. Usa $\mbox{Hanoi}(n-1)$ para mover los $n-1$ discos más pequeños del palo $1$ al palo $3$.
  2. Mueve el disco más grande del palo $1$ al palo $2$.
  3. Usa $\mbox{Hanoi}(n-1)$ para mover los $n-1$ discos más pequeños del palo $3$ al palo $2$.
El algoritmo se representa esquemáticamente como en Figura 2.
En realidad no hemos resuelto mucho: no sabemos como resolver $\mbox{Hanoi}(n-1)$. Pero, bueno, si sabemos como resolver $\mbox{Hanoi}(n-2)$ podemos usar el mismo algoritmo para resolver $\mbox{Hanoi}(n-1)$. ¿Y cómo resolvemos $\mbox{Hanoi}(n-2)$? Bueno, si sabemos como resolver $\mbox{Hanoi}(n-3)$...

Seguimos así hasta llegar a $\mbox{Hanoi}(1)$, el problema con sólo un disco. Y si sólo hay un disco, el problema es sencillo: movemos el disco desde el palo donde está al palo donde lo queremos y ya está.

La idea que hemos usado para resolver el problema de las torres de Hanoi es muy general. En informática es una idea que hace muy fácil escribir programas, en matemática se relaciona con uno de los principios más importantes de las matemáticas de los números enteros, el principio de inducción. Consideremos primero el problema desde el punto de vista de un programador.

Para los programadores

Las características de los problemas recursivos hace muy fácil programar soluciones para problemas aparentemente muy complicado como la torre de Hanoi. En este caso, escribir un programa que nos diga, paso a paso como mover los discos sería, sin recursión, extremadamente complicado (los que tienen buenos conocimientos de programación pueden intentarlo: el programa se puede escribir, pero es muy complicado de escribir y muy difícil de intender). Por otro lado, escribir un programa recursivo es muy fácil.

Queremos escribir una función, que llamaremos hanoi($n$, $a$, $b$, $c$). La función, como vemos, recibe cuatro parámetros. El primer parámetro ($n$) es el número de discos que tenemos que mover, el segundo ($a$) es al palo en que están los discos, el tercero ($b$) es el palo en que queremos mover los discos, finalmente, el cuarto ($c$) es el tercer palo, que, si lo necesitamos, podemos usar como auxilio para mover los discos de $a$ a $b$. La función, escrita en un \dqt{psudo-código} bastante fácil de entender es la siguiente:

  hanoi(n, a, b, c)
    if n = 1 then
      print "mueve un disco de " a " a " b
    else
      hanoi(n-1, a, c, b)
      print "mueve un disco de " a " a " b
      hanoi(n-1, c, b, a)

Esto es todo. Si $n=1$, sólo hay que mover un disco, por tanto imprimimos en pantalla que hay que mover un disco desde el palo fuente al palo destino. Si no, la función se llama a si misma para mover $n-1$ discos de la fuente al palo intermedio, mueve al disco más grande (que ahora ha quedado al descubierto) del palo fuente al palo destino, y luego vuelve a mover los $n-1$ discos que se había quitado del medio del palo auxiliario al palo destino. Y el programa funciona. Si ejecutamos la función hanoi(5, 1, 2, 3) (mueve una torre de cinco discos del palo 1 al palo 2 usando 3 como auxilio), conseguimos la respuesta siguiente:

mueve un disco de 1 a 2
mueve un disco de 1 a 3
mueve un disco de 2 a 3
mueve un disco de 1 a 2
mueve un disco de 3 a 1
mueve un disco de 3 a 2
mueve un disco de 1 a 2
mueve un disco de 1 a 3
mueve un disco de 2 a 3
mueve un disco de 2 a 1
mueve un disco de 3 a 1
mueve un disco de 2 a 3
mueve un disco de 1 a 2
mueve un disco de 1 a 3
mueve un disco de 2 a 3
mueve un disco de 1 a 2
mueve un disco de 3 a 1
mueve un disco de 3 a 2
mueve un disco de 1 a 2
mueve un disco de 3 a 1
mueve un disco de 2 a 3
mueve un disco de 2 a 1
mueve un disco de 3 a 1
mueve un disco de 3 a 2
mueve un disco de 1 a 2
mueve un disco de 1 a 3
mueve un disco de 2 a 3
mueve un disco de 1 a 2
mueve un disco de 3 a 1
mueve un disco de 3 a 2
mueve un disco de 1 a 2

Si alguien tiene la paciencia de probarlo, verá que, efectivamente, las instrucciones son correctas.

Para los matemáticos

Una cosa puede haber llamado la atención en el ejemplo precedente: hay muchos movimientos. Incluso para mover una torre de sólo cinco discos, son necesarios muchos movimientos. Es natural (para un matemático, por lo menos) preguntarse: Cuántos movimientos necesito para mover una torre de $n$ discos, donde $n$ puede ser cualquiera?

Para descubrirlo, llamemos $H(n)$ el número de movimientos necesarios para mover una torre de $n$ discos. Si sólo tenemos un disco, la cosa es fácil: simplemente movemos el disco de un palo al otro. Por tanto: \begin{equation} H(1) = 1 \end{equation} Para cualquier $n$ construimos una ecuación recursiva. Para mover una torre de $n$ discos del palo $1$ al palo $2$, tenemos que hacer tres operaciones:
  1. mover una torre de $n-1$ discos de $1$ a $3$; el número de movimientos necesarios es $H(n-1)$;
  2. mover el disco que queda de $1$ a $2$: un movimiento;
  3. mover una torre de $n-1$ discos de $3$ a $2$; el número de movimientos necesarios es $H(n-1)$.
Sumando todos los movimientos, esto nos da la ecuación recursiva \begin{equation} H(n) = 2\cdot H(n-1) + 1 \end{equation} Con estas dos ecuaciones, podemos calcular el número de movimientos necesario por cualquier $n$: \begin{equation} \begin{aligned} H(1) &= 1~~~\mbox{esto ya lo sabíamos} \\ H(2) &= 2H(1) + 1 = 2 + 1 = 3 \\ H(3) &= 2H(2) + 1 = 2\cdots 3 + 1 = 7 \\ H(4) &= 2H(3) + 1 = 2\cdots 7 + 1 = 15 \\ H(5) &= 2H(4) + 1 = 2\cdots 15 + 1 = 31 \vdots \end{aligned} \end{equation} Con este método podemos calcular el número de movimientos necesarios para cualquier número de discos. Es fácil continuar y darse cuenta, por ejemplo, que para mover una torre de $10$ discos son necesarios nada menos que $1023$ movimiento y para una torre de 20 discos un imposible $1.048.575$ movimientos.

Esto nos puede satisfafer, pero seguramente no satisface a un matemático. Lo que un matemático busca es una fórmula directa, algo no recursivo, algo que, por cada número $n$, nos dice, directamente y sin tantos rodeos, cuantos movimientos necesitamos. (No siempre los matemáticos lo consiguen, pero en este caso veremos que sí, que se puede conseguir).

Empecemos notando que los números que hemos conseguido tienen una particularidad: si los aumentamos de una unidad, conseguimos siempre potencias de $2$: $1+1=2=2^1$, $3+1=4=2^2$, y siguiendo $31+1=32=2^5$. Lo mismo vale para los otros valores que hemos mencionado: $1.023+1=1.024=2^{10}$ y $1.048.575+1=1.048.576=2^{20}$. No sólo: notamos que el exponente de $2$ siempre es igual al argumento de la función $H$. Así, por ejemplo \begin{equation} \begin{aligned} H(3) + 1 &= 7 + 1 = 8 = 2^3 \\ H(5) + 1 &= 31 + 1 = 32 = 2^5 \\ H(10) + 1 &= 1.023 + 1 = 1.024 = 2^{10} \end{aligned} \end{equation} Esto nos da una idea: es posible que hayamos encontrado la regla general, y que podamos escribir, por cada número $n$ \begin{equation} H(n) = 2^n - 1 \end{equation} Es posible (y, de hecho, es así). Pero un buen matemático no se conforma con ser posible: un buen matemático necesita demostrarlo. Para hacer esto, dejamos de un lado por el momento nuestra ecuación y nos ocupamos de un método de demostración muy útil, muy relacionado con la recursión, y que nos permitirá demostrar nuestra hipótesis: el método de inducción.

El método de inducción

El método de inducción es un instrumento potente y en aparencia sencillo, pero la lógica que está detrás de su aplicación es sorprendentemente sutil. Empecemos con su definición. Consideremos una propiedad $P$ que los números enteros pueden o no tener, y escribamos $P(n)$ para indicar que el número $n$ tiene la propiedad. $P$ puede representar muchas propiedades. Por ejemplo:
  1. $P(n)$ quiere decir "$n$ es un número primo";
  2. $P(n)$ quiere decir "$n$ es impar";
  3. $P(n)$ quiere decir $n>0$;
  4. $P(n)$ quiere decir "$2n$ es par;"
  5. $P(n)$ quiere decir "una torre de Hanoi con $n$ discos se puede mover en $2^n-1$ movimientos"
Algunas de estas propiedades son ciertas por todos números (todos números enteros son mayores de cero, y su doble es par), otras no (no todos los números son primos, ni todos son impares). Propiedades como $P$ también tienen propiedades. En particular, llamaremos una propiedad hereditaria si lo siguiente es ciertos: por cada número $n$, si $n$ tiene la propiedad, entonces $n+1$ también la tiene. En lógica esto se escribe: \begin{equation} \forall n. P(n) \Rightarrow P(n+1) \end{equation} (el símbolo $\forall$ singifica "para todos": con esto afirmamos que lo que sigue es cierto por todo $n$, el símbolo $\Rightarrow$ quiere decir "implica": afirma que si el predicado que precede el símbolo es cierto, el predicado que lo sigue también lo es). Es fácil ver, por ejemplo, que la propiedad 3 es hereditaria: si un número $n$ es mayor de cero y consideramos el número $n+1$ obtenido añadiendo una unidad a $n$, ese número también será mayor de cero. Por otro lado, la propiedad 2 no lo es: si $n$ es impar (por ejemplo, si $n=3$) entonces $n+1$ ($4$, en este caso) es par.

El principio de inducción nos dice lo siguiente:

Dada una propiedad $P$, si $P$ es válida en el caso de $n=1$, y $P$ es hereditaria, entonces $P$ es válida para todo número entero.

La intuición confirma el principio. Digamos, por ejemplo, que queremos demostrar que la propiedad es válida en el caso $n=5$. Procedemos así:
  • $P$ es cierto en el caso de $n=1$, es decir, $P(1)$;
  • Si $P(1)$ es cierto, entonces $P(2)$ es cierto;
  • Si $P(2)$ es cierto, entonces $P(3)$ es cierto;
  • Si $P(3)$ es cierto, entonces $P(4)$ es cierto;
  • Si $P(4)$ es cierto, entonces $P(5)$ es cierto;
Por tanto, si $P$ respeta los requisitos del principio de inducción, $P(5)$ es cierto. De la misma manera podemos (idealmente) aplicar el principio para demostrar que $P(n)$ es cierto sea cual sea $n$*.

Este principio nos proporciona una manera muy útil para demostrar teoremas. Tenemos una propiedad $P$ que queremos demostrar (por ejemplo, quereoms demostrar que el doble de cada número $n$ es par). Para demostrarla tenemos que demostrar que cumple las hipótesis del principio de inducción, es decir, tenemos que demostrar que:
  1. La propiedad es cierta en el caso $n=1$ (esto se llama el "caso base")
  2. Si asumimos que la propiedad es cierta en el caso $n$ (es decir: asumimos por hipótesis que $P(n)$ es cierto), entonces la propiedad es cierta en el caso $n+1$ (es decir: si $P(n)$ s cierto, entonces $P(n+1)$ también es cierto, esto es el "caso de inducción").
Si conseguimos demostrar estas dos cosas, entonces hemos demostrado que la propiedad $P$ es cierta por cada número. Considereos un ejemplo: queremos demostrar que, por cada $n$, $2n+1$ es impar. Tenemos los dos casos:
  1. Caso base: $n=1$. En este caso $2n+1=3$, y sabemos que $3$ es impar.
  2. Inducción: suponemos que la propuedad es cierta para $n$, es decir, supongamos que $2n+1$ es impar. Tenemos que demostrar que $2(n+1)+1$ es impar. Procedemos como sigue: \begin{equation} 2(n+1)+1 = 2n + 2 + 1 = 2n+1 + 2 \end{equation} Ahora, sabemos que $2n+1$ es impar, por tanto en esa ecuación tenemos un número impar (lo llamamos $m$) a que le añadimos $2$. Dado que $m$ es impar, su succesor, $m+1$ es par y por tanto su succesor $m+1+1=m+2$ es impar.

De vuelta a Hanoi

Tenemos ahora los instrumentos para demostrar que nuestra solución del número de movimientos necesarios para mover una torre es correcta. Sólo tenemos que reformular nuestro descubrimiento como una propiedad de los números enteros. La propiedad es la siguiente:

El número $n$ tiene la propiedad de Hanoi ($H(n)$) si es posible mover una torre de Hanoi de $n$ discos usando $H(n)=2^n-1$ movimientos.

Recordamos que $H(n)$ es el resultado de la ecuación recursiva \begin{equation} H(n) = 2\cdot H(n-1) + 1 \end{equation} que asumimos válida. Empecemos la demostración con los dos pasos
  1. Paso base $n=1$. Sabemos que podemos mover una torre de un solo disco con un solo movimientos. Dado que $H(1)=2^1-1=1$, la propiedad se cumple en el caso de $n=1$.
  2. Paso de inducción. Supongamos ahora que la propiedad sea cierta para $n$, es decir, que $H(n)=2^n-1$. Queremos demostrar que $H(n+1)=2^{n+1}-1$. Para esto, aplicamos la recursión: \begin{equation} \begin{array}{rcll} H(n+1) & = & 2H(n) + 1 & \mbox{ecuación recursiva} \\ & = & 2(2^n-1) + 1 & \mbox{hypótesis inductiva} \\ & = & 2\cdots2^n - 2 + 1 & \\ & = & 2^{n+1} - 1 \end{array} \end{equation} La igualdad crucial es la segunda: podemos remplazar $H(n)$ con $2^n-1$ porque el método de inducción nos permite asumir que la propiedad es cierta para $n$, es decir, asumimos ya como demostrado que $H(n)=2^n-1$ y usamos este hecho para demostrar que $H(n+1)=2^{n+1}-1$. El resto es álgebra.


♱ El pseudo código es un instrumento que los programadores usan a menudo para describir un problema. Se trata de una notación simplificada que evita todos los detalles necesarios para que un programa efectivamente funcione y que pone el foco en sus aspectos esenciales.

♯ Recordamos aquí que un número es primo si sólo se puede dividir por el número mismo y por $1$. Los números $2$, $3$, $5$, $7$, $11$, etc. son primos (por convención, el número $1$ no se considera primo), mientras, por ejemplo, $6$ y $9$ no lo son (el primero se puede dividir por $2$ y $3$, el segundo por $3$). Uno de los descubrimientos más sorprendente de los matemáticos griegos es que existe una infinidad de números primos: dado un número cualquiera, existe un número primo más grande que este número.

* Para los más lógicos: cuando he dicho que es obvio que la propiedad de inducción garantiza que $P$ es cierto para todos los números enteros, en realidad he engañado. Hay muchas sutilezas lógicas detrás del principio de inducción en que en ese momento no voy a entrar.

Esencialmente, lo que he demostrado con mi argumento intuitivo es que, dado cualquier número finito $n$, puedo demostrar que $P(n)$ es cierto. Pero esto es muy distinto que afirmar que $P$ es cierto en el caso de la infinidad de números enteros.

Una solución a este problema lógico es la de los llamados axiomas de Peano, que describen propiedades tan básicas de los números enteros que se asumen sin demostrar (propiedades como "cero es un número"). Uno de los axiomas de Peano es precisamente el principio de inducción. En este caso, los problemas lógicos desvanecen: simplemente definimos los números enteros como esos números para que vale el principio de inducción.

sábado, 6 de febrero de 2021

El arte de contar I: jugando a poker con las matrículas de coches

Una de las actividades fundamentales de las matemáticas es contar. Contar puede parecer banal, pero puede ser una de las cosas más complicada de las matemáticas. Hay varias técnicas útiles para contar cosas complicadas. Aquí veremos una: el análisis combinatorio.

Utilizaremos un juego que jugaba de niño con mi familia en los largos recorridos en coche (estoy hablando de un tiempo en que no podíamos simplemente estar cada uno por su cuenta jugando con el móvil sin ni siquiera reconocer que los otros estaban allí). Lo que hacíamos para distraernos era jugar a poker con las matrículas de los coches. Un coche tiene cuatro números en la matrícula (en España, en otros países este número varia), y a turno observábamos la matrícula de los coches que llegaban asignándonos puntos según las combinaciones permitidas del poker. La pregunta a que quiero contestar aquí es: ¿cuántas combinaciones de cuatro cifras hay que proporcionan puntos?

Con cuatro cifras se pueden crear 10.000 números (desde $0000$ hasta $9999$). Olvidemos por el momento las escalas, e intentemos contar cuantas otras combinaciones hay. Cada combinación del poker que da punto (excepto las escalas) tiene por lo menos dos números iguales (par, tris, full house, etc.), por tanto para contarlas podemos trabajar de una manera indirecta: ¿cuántas combinaciones no dan puntos? Si calculamos este número y lo restamos de $10.000$ conseguimos las combinaciones que buscamos.

Empecemos a construir un número de cuatro cifras sin repeticiones. Consideremos la primera cifra: en este lugar podemos poner cualquier número de 0 a 9, es decir, para la primera cifra tenemos $10$ posibilidades ($0, 1, 2, \ldots, 9$)

Una vez que hemos decidido una primera cifra (es decir, que hemos elegido una de las $10$ posibilidades), ¿cuántas posibilidades tenemos para la segunda cifra? Pues, queremos crear números sin repeticiones por tanto si la primera cifra era, por ejemplo, un $2$, para la segunda tenemos $9$ posibilidades (cualquier cifra menos el $2$). Este razonamiento lo podemos repetir por cada una de las $10$ posibilidades de elección de la primera cifra. Por tanto para tener un número de dos cifras sin repeticiones tenemos \begin{equation} 10 \times 9 = 90 \end{equation} posibilidades. Que es así es fácil comprobarlo: tenemos todas las $100$ posibles combinaciones de dos cifras excepto $10$ combinaciones ($00, 11, \ldots, 99$), lo que nos da $90$.

Ahora la tercera cifra: por cada una de las combinaciones que tenemos de dos cifras, podemos elegir la tercera cifra en $8$ maneras diferentes (todas excepto las que ya hemos elegido para la primera y la segunda cifra). Esto vale por cada una de las combinaciones, por tanto los números de tres cifras sin repeticiones son \begin{equation} 10 \times 9 \times 8 = 720 \end{equation} Ahora la mecánica es clara: para la cuarta cifra podemos elegir $7$ posibilidades diferentes, es decir los números de cuatro cifras con todas las cifras diferentes son \begin{equation} 10 \times 9 \times 8 \times 7 = 5.040 \end{equation} Estos son los números con todas las cifras diferentes, es decir, los que no dan puntos. Los números que dan puntos (otra vez: sin contar las escalas) son \begin{equation} 10.000 - 5.040 = 4.960 \end{equation}


Nos quedan por considerar las escalas. Hay siete escalas posibles: $0123, 1234, \ldots, 6789$ pero, claramente, no es necesario que las cifras estén ordenadas, es decir, un número como $2314$ sigue siendo una escala.

Consideremos una de esas escala, por ejemplo la escala $0123$. Haremos unas consideraciones parecidas a las de la primera parte pero, esta vez, con las posiciones de las cifras. ¿Dónde está el $0$? Hay cuatro posiciones posibles. Por cada una de estas $4$ posiciones, quedan $3$ posiciones posibles donde poner el $1$, por cada posición del $0$ y del $1$, quedan $2$ posiciones para el $2$ y, una vez que hemos puesto el $0$, el $1$ y el $2$, sólo nos queda una posición donde poner el $3$. El número total de números que contienen la escala $0123$ es por tanto \begin{equation} 4 \times 3 \times 2 \times 1 = 24 \end{equation} Estos son los números que contienen la escala $0123$. Dado que tenemos siete escalas diferentes (y ningún puede contener dos escalas a la vez), el número de posibilidades para una escala es $24\times{7}=168$.

Sumando los resultados obtenidos conseguimos el número total de combinaciones que nos dan punto en el poker de matrículas de coches: \begin{equation} 4.960 + 168 = 5128 \end{equation} Un poco más de la mitad. Si queréis jugar a cara o cruz (donde "cara" quiere decir que se ha visto un número que da puntos y "cruz" que se ha visto uno que no los da), os compensa apostar "cara". La ventaja es pequeña, pero existe.


Contar así puede parecer un poco complicado, pero tiene una gran ventaja: se puede extender. Digamos que vivimos en un país que tiene $6$ cifras en las matrículas. ¿Cuántas combinaciones ganadoras existen? (En este caso consideraremos como ganadoras también el "pentapoker"---cinco números iguales---y el "esapoker"---seis números iguales). Pues, sólo tenemos que extender nuestras consideraciones previas a seis cifras. Si no consideramos las escalas tenemos \begin{equation} 10 \times 9 \times 8 \times 7 \times 6 \times 5 = 151.200 \end{equation} combinaciones (tenemos ahora seis factores, uno por cada una de las seis cifras) no ganadoras y $1.000.000-151.200=848.800$ ganadoras. Las posibilidades para una escala son ahora \begin{equation} 6 \times 5 \times 4 \times 3 \times 2 \times 1 = 720 \end{equation} Esta vez tenemos sólo $5$ escalas posibles (de $012345$ hasta $456789$), por tanto las escalas serán $720\times{5}=3600$ y el número total de combinaciones ganadoras es \begin{equation} 848.800 + 720 = 849.520 \end{equation} Notamos como a medidas que aumenta el número de cifras el número de combinaciones ganadoras aumenta pero, claramente, si tenemos más de 10 cifras ninguna escala es posible.

miércoles, 3 de febrero de 2021

Paseos aleatorios: por qué los pelos siempre acaban en los rincones

Los americanos sostienen que en la vida hay dos cosas inevitables: la muerte y los impuestos. Se le ha olvidado una: los pelos en el suelo de casa. No sé como están los demás, pero el suelo de mi casa está diseminado de pelos (sobre todo desde que me he dejado el pelo muy largo). Parece increíble que todavía no me he vuelto calvo, pero, a pesar de que el espejo me dice que todavía tengo todo mi pelo, el suelo es de otra opinión.

Además, una aplicación elemental de la ley de Murphy al pelo en el suelo nos garantiza que este se colocará en los lugares donde más difícil es llegar para barrerlo: pegado a las paredes y, con particular predilección, en los rincones. Pero esta vez el pobre Murphy es inocente: la culpa del pelo en los rincones es de las matemáticas. Veamos por qué.

Empecemos con hacer los que mejor saben hacer los matemáticos: simplificar el problema. Se trata de un paso muy importante en matemáticas y en física: intentamos eliminar del problema todas las características secundaria hasta llegar a un problema más sencillo de resolver que pero mantiene la esencia del problema original. Se trata de un proceso de abstracción: ignoramos lo inesencial y extraemos del problema original sólo los aspectos fundamentales (abstracción deriva del latín abstraho---sacar fuera). El proceso es peligroso: intentando simplificar el problema podemos acabar eliminando aspectos que, lejos de ser secundarios, se revelan esenciales. Por esto la ciencia hace experimentos: una vez que hemos desarrollado una teoría mediante abstracción, es necesario ponerla a prueba comparandola con el problema original. En nuestro caso: la teoría que vamos a desarrollar, por simplificada que sea, debe explicarnos por qué el pelo termina siempre en los rincones. La teoría que vamos a utilizar es muy conocida en matemáticas y en física como teoría de los paseos aleatorios. Los paseos aleatorios tiene una larga y honrada tradición. El primer ejemplo, y el más conocido, es el llamado Movimiento Browniano, en honor del botánico Robert Brown, quien, en 1837 observó el movimiento de minúsculas partículas suspendidas en líquidos, movimientos que resultó ser un ejemplo de paseo aleatorio. Una de las contribuciones más destacada es la de Albert Einstein que, en 1905 desarrolló una teoría que explica matemáticamente los resultados que aquí vamos a conseguir con simulacione.


Paseos Aleatorios

Simplifiquemos, pues, el problema. Empezaremos con ocuparnos sólo de un pelo. Es obvio que, si conseguimos describir el comportamiento de un pelo, podemos aplicar el mismo razonamiento a todos los pelos que tenemos en el suelo y explicar por qué se acumulan. En segundo lugar, consideraremos un problema en una sola dimensión. Es decir, consideraremos que el pelo sólo se mueve en una dirección, en los dos sentidos. Si conseguimos explicar por qué en este caso los pelos se acumulan en un punto determinado, no será difícil extender la solución al caso de dos dimensiones, simplemente considerando una dimensión a la vez (con cuidado, como veremos a continuación). Tenemos por tanto esta situación:
La posición del pelo se describe con un solo número: la distancia $x$ (con signo) desde el punto inicial, que consideraremos como nuestro punto $x=0$. Si en un determinado momento $x>0$, el pelo se ha movido hacia la derecha, si $x<0$ se ha movido hacia la izquierda.

¿Por qué se mueve el pelo? Lo que mueve el pelo en nuestro suelo son las pequeñas corrientes de aire provocada por las causas más heterogéneas, desde una ventana que se abre, hasta la corriente provocada por una puerta que se cierra o por nosotros mismos pasando por ahi. Se trata de pequeños movimientos de aire esencialmente aleatorios e impredicibles. Por esto haremos un modelo del movimiento de nuestro pelo basado en los que los matemáticos llamámos paseos aleatorios

Esta es la idea. El paseante (yo, por ejemplo) se encuentra inicialmente en la posición $x=0$ y decide hacer un paso hacia la derecha o hacia la izquierda digamos cada $10$ segundos. Para decidir la dirección, lanzo una moneda: si sale cara hago un paso hacia la izquierda, si sale cruz hago un paso hacia la derecha. La primera pregunta que nos surge es obvia: tras haber dado $t$ pasos, ¿dónde estaré? No podemos dar una respuesta exacta a esta pregunta, dado que la respuesta depende de la secuencia específica de caras y de cruces que han salido cuando he lanzado la moneda, pero podemos dar una respuesta estadística. Si repito el paseo muchas veces (digamos, $1000$ veces), ¿cuantas de estas veces acabaré en una posición dada? La respuesta depende de la longitud del paseo. En la Figura 1 vemos la probabilidad de acabar en una posición dada por varios valores the la longitud del paseo.
La primera cosa que nos llama la atención es que tenemos máxima probabilidad de acabar en la posición de donde hemos salido: el pico de la función siempre está en $x=0$: cuando hacemos un paseo aleatorio, lo más probable es que no lleguemos a ningún lado. Por otro lado, la probabilidad de acabar en posiciones que no son la inicial cambia con la longitud del paseo. Con paseos más largo, el "pico" es más bajo, y las "alas" son más amplia. Esto quiere decir que, si paseamos muchos, tenemos una probabilidad un poco mejor de acabar más lejos de donde hemos salido.

En cualquier caso, si alguien tuviera la idea de usar paseos aleatorios para moverse por la ciudad, mejor que cambie de plan. El problema de los paseos aleatorios es que no nos llevan muy lejos. Si nos movemos en una dirección determinada a velocidad constante, la distancia a que llegamos es proporcional al tiempo en que andamos (es decir: si caminamos el doble del tiempo, llegamos el doble de lejos de nuestro punto de partida). En un diagrama que tiene en abscisas el tiempo y en ordenadas la distancia desde la salida, esta es una línea recta. En la Figura 2, esta es la línea azul, mientras que la línea roja es la distancia máxima a que llegamos con un paseo aleatorio.
Está claro que con el paseo aleatorio no llegamos tan lejos como con un paseo determinado. De hecho, la curva del paseo aleatorio se parece bastante a la curva negra, que es una curva del tipo $d=\sqrt{t}$. Esto quiere decir que si nos movemos con un paseo aleatorio, para llegar al doble de la distancia desde el punto de partida tendremo que caminar un tiempo cuatro veces mayor.


El pelo en los rincones

El pelo en el suelo de que nos estamos ocupando ejecuta un paseo aleatorio bajo el empuje irregular de las pequeñas corrientes de aire. Pero se trata de un paseo especial, de un paseo "vinculado". Si el pelo llega por azar a una pared, no puede ir más allá. Además, cuanto más cerca el pelo esté de la pared, tanto menos probable es que las corrientes les lleguen del lado de la pared, es decir, a medida que se acerca a la pared, se hace más probable que las corrientes aleatorias lo empujen hacia la pared. Podemos ver la evolución de ese paseo en la Figura 3
Al principio (curvas rojas y azul), el paseo no se distingue demasiado de uno normal: en muchos casos el pelo todavía no ha tenido tiempo de llegar a la pared. Hay unos pequeños bultos en la línea azul que indican que, en ciertos experimento, el pelo sí ha llegado a las paredes. En la línea verde, tras 500 lanzamientos de moneda, se nota algo de irregularidad, pero el pelo empieza a estar con más probabilidad en las paredes. Finalmente, en la línea negra, vemos que la probabilidad más grande de encontrar el pelo es en las paredes.

Lo que hemos hecho aquí es un experimento en una dimensión, pero podemos fácilmente imaginar dos paseos aleatorios, independientes en las dos dimensiones del suelo de nuestros pisos: habrá corrientes de aire en las dos dimensiones y en cada dimensión las características del paseo empujarán el pelo hacia la pared. Por tanto el pelo acabará terminando, y no por su culpa, en el único lugar en que hay una pared en ambas dimensiones: en el rincón.

viernes, 22 de enero de 2021

Más matemáticas de las epidemias: las medidas de distanciamiento social

 En el artículo anterior hemos analizado un modelo matemático que describe la evolución de una epidemia. Dos cantidades nos interesan especialmente: el número de infectados $I(t)$ y el número de víctimas $V(t)$. En particular nos interesa lo que el modelo nos puede enseñar sobre las medidas epidemiológicas que podemos utilizar para reducir la difusión del virus.

El modelo depende de varios parámetros. Algunos de ellos no se pueden controlar a través de medidas de tipo social. El parámetro $\gamma$, por ejemplo (el porcentaje de personas que se recuperan una vez contagiadas) depende de los conocimientos médicos que permiten curar los contagiados.

La parte del modelo que podemos cambiar mediates medidas sociales es el factor que determina los contagios:

\begin{equation} \beta \frac{S(t)I(t)}{N} \end{equation}

Podemos hacer un modelo de las restricciones sociales si inroducimos un coeficiente de \dqt{restrucción}, que llamaremos $r$. Si $r=0$, no hay ninguna restricción, y nuestro modelo no cambia. Si $r=1$ estamos en la situación (ideal e imposible) en que nadie entra en contacto con nadie. El factor que determina el contagio es ahora:

\begin{equation} \beta (1-r(t)) \frac{S(t)I(t)}{N} \end{equation}

He escrito $r(t)$ para evidenciar que este factor puede variar en el tiempo según las medidas que se toman. En el caso de la primera ola de la pandemia, por ejemplo, hasta el 14 de Marzo no se ha restringido la circulación, por tanto hemos tenido $r(t)=0$. El 14 de Marzo, con el estado de alarma, los contactos entre las personas se han restringido, y esto ha cambiado el coeficiente de transmisión.

Empecemos con el caso más sencillo: supongamos que se imponen restricciones (es decir, se tiene un $r>0$) desde el principio de la epidemia. ¿Cómo cambia el comportamiento de la epidemia? En la Figura 1 vemos el número de contagiados por cada día en los casos de $r=0$ (ninguna intervención), $r=0.5$ (reducción a la mitad de los contactos) y $r=0.8$ (reducción más drástica).
Tres cosas saltan a la atención: el pico es mucho más bajo, el pico se presenta con retraso, y la curva se dilata. Los primeros dos son lo que esperamos (reduciendo los contactos las cosas mejoran y la epidemia va más lenta), mientras el tercero podría sorprender, y hay que explicarlo.

En el modelo de moléculas de gas, dado un tiempo suficientemente largo, cada persona encontrará cada otra personas un número arbitrario de veces: todo el mundo encuentra a todo el mundo cuantas veces se quiera. Esto quiere decir que, a menor que no tengamos $r=1$ (en cual caso nadie se contagia), dado un tiempo suficientemente largo todo el mundo se contagiará. Por esto el número total de infectados será siempre el mismo, y una curva más baja tiene necesariamente que ser más larga.

Algo que sí cambia, y mucho, es el número de v{\'i}ctimas en un tiempo dado (siempre asumimos que en algún momento la epidemia terminará con una vacunación generalizada). La Figura 2 muestra el número total de víctimas por cada día a lo largo de un año por los mismos valores de $r$.
El número de víctimas, efectivamente, se reduce cuando $r$ aumenta, y cambiar $r$ de $0$ a $0.5$ no tiene el mismo efecto que cambiarlo de $0.5$ a $0.8$: un $r=0.5$ prácticamente no cambia el número de muertos, $r=0.7$ empieza a reducirlo, y $r=0.8$ lo reduce sustancialmente a lo largo del año.

Para obervar mejor este efecto, en la Figura 3, tenemos el número de muertos al cabo de un año como función del valor $r$. 



El número de víctimas empieza a bajar significativamente con $r\sim{0.7}$, antes de este valor las restricciones no tienen un gran efecto. Es importante tener en cuenta esta característica de las epidemias cuando hablamos de como la gente responde a las recomendaciones de limitar los contactos sociales:

Una minoría de personas que no respetan las restricciones o una mayoría que las respeta pero no tanto son suficientes para que las restricciones no tengan prácticamente efecto.

Hasta ahora hemos considerado que las restricciones entran en vigor al principio de la epidemia, pero normalmente este no es el caso. Las restricciones entran en vigor varios días después del comienzo de la pandemia, ya sea por el retraso en la detección, ya sea por varias razones de orden social, político o logístico que retrasan las medidas. Para no tener demasiadas variables, fijemos el valor de $r=0.85$. Con este valor, si las medidas se toman al principio de la pandemia, el número de víctimas se reduce a menos de la décima parte.

En la Figura 4 vemos la curva de mortalidad total por varios valores del día en que se empiezan a tomar las medidas. Está claro que cuanto más se retrasan las medidas, cuantos más muertos hay y que tomar las medidas de restricción cuando ya estamos en el pico prácticamente no tiene efecto. 




Para aclarar el efecto, la Figura 5 muestra el número de muerto al cabo de un año como función del día en que se reduce la transmisión. Si se tarda más de 30 días, el efecto sobre el número de muertos es prácticamente nulo.



Esto nos lleva a la situación que vivimos en España en este momento (finales de Enero de 2021). Sabíamos que las navidades iban a ser un momento de aumento sustancial de contacto, a causa del relajamiento de las precauciones. Muchos de nosotros han tomado medidas, no se han reunido con sus familias y no han salido de fiesta, pero hemos visto en la primera parte de este artículo que las acciones de una minoría han sido suficientes para que las restricciones que la mayoría se ha auto-impuesto fueran inútiles. Los resultados que tenemos ahora nos dicen que tomar medidas ahora, como varias Comunidades Autónomas están intetntando hacer, es inútil. Las medidas hay que tomarlas antes que la curva se acerque al pico: una vez que la curva se acerca al pico, ya no hay nada que hacer, las medidas ya no tienen efecto. Salvar la navidad ha sido una ilusión que ha tenido un coste tremendo, y ahora no tenemos otra elección que pagarlo.

sábado, 9 de enero de 2021

Las matemáticas de la epidemia, Parte I

En un año normal, cualquiera diría que hablar de epidemias y su difusión no es exactamente un tema de "vida cotidiana", por lo menos en la rica y medicalizada Europa (lo es, lamentablemente, en muchos países de Africa, Asia o América, por poco que hablemos de ello). Pero el 2020 que acabaos de despedir ha sido diferente: ha sido el año en que las epidemias han entrado prepotentemente en nuestra vida, el año en que todos hemos hablado de IA, de R0, de curvas ascendentes, de doblar las curvas, etc.

La pandemia de covid ha afectado no sólo, y de manera trágica, la vida de muchos, sino también el discurso público. De repente, España (y el resto del mundo) se ha llenado de personas que querían saber más sobre las epidemias, sus causas y su manera de extenderse. España se ha llenado también, y lamentablemente, de personas que sentenciaban mucho y sabían muy poco, pero este no es el lugar para hablar de ellos.

Las matemáticas han estudiado los fenómenos de difusión viral desde hace más de 40 años. Al principio estos estudios se limitaban a la difusión de virus y enfermedades pero luego, como es a menudo el caso de los modelos matemáticos, se ha notado que muchos fenómenos aparentemente alejado siguen las mismas leyes y hoy en día estos modelo se usan también para estudiar, por ejemplo, la difusión de opiniones o la difusión de bulos en las redes sociales. Aquí nos interesa la aplicación de estos modelos a la difusión de virus, y nos limitaremos a los más sencillos.

Antes de empezar, una recomendación: los modelos matemáticos no son la realidad sino, en el mejor de los casos, una versión muy simplificada de la realidad.Un buen modelo matemáticos nos puede dar indicación preciosas sobre el comportamiento del fenómeno real, pero siempre hay que tener cuidado a la hora de tomar decisiones o expresar opiniones basándose en un modelo matemáticos. Antes de hacerlo, es necesario por lo menos saber las simplificaciones que se han hecho, su justificación y los posibles errores que se pueden introducir.

Y ahora el modelo. Nos interesa la evolución de la epidemia a lo largo del tiempo. Mediremos el tiempo en días, y usaremos la variable t para indicar el día en que nos encontramos. La variable asume valores $t=0,1,2,...,100$, es decir, seguiremos el comportamiento de la epidemia durante 100 días. Por cada día seguiremos cuatro magnitudes:

  • $S(t)$: el número de personas "susceptibles" el día $t$. Los susceptibles son las personas no contagiadas o que se han recuperado pero no tienen anticuerpos. Es decir, las personas que se pueden contagiar del virus.
  • $I(t)$: el número de personas "infectadas" el día $t$. Las personas enfermas.
  • $R(t)$: el número de personas "recuperadas" el día $t$. Se trata de las personas que han superado la enfermedad y que todavía tienen anticuerpos, es decir, las personas que el día t no están enfermas y no se pueden infectar.
  • $V(t)$: el número de víctimas, es decir, el número de personas que en este día han sucumbido a la enfermedad.

También consideraremos un número total N de personas fijo, que no cambia durante nuestro análisis (esto quiere decir que el intervalo en que analizamos la epidemia es lo suficientemente corto para que el nacimiento de niños y la muerte de personas por causas diferentes de la covid no son relevantes). En cualquier momento una persona puede ser susceptible, infectada, recuperada o ser una víctima: cada persona se encuentra en una de estas categoría, y ninguna está en dos categoría, por tanto cada día t: \[ S(t) + I(t) + R(t) + V(t) = N \]

La base del modelo es la llamada "predicción a un paso". Supongamos que conocemos los valores $S(t)$, $I(t)$, $R(t)$, $V(t)$, el día $t$. ¿Cuáles son los valores $S(t+1)$, $I(t+1)$, $R(t+1)$, $V(t+1)$ para el día siguiente? Empecemos con $S(t)$. Podemos escribir:

\[ S(t+1) = S(t) - A + B \]

En esta ecuación $A$ es el número de personas susceptibles que el día $t$ se han infectado (y que por tanto el día $t+1$ ya no son susceptibles), $B$ es el número de personas que el día $t$ eran recuperados pero que al día $t+1$ han perdido los anticuerpos y por tanto están susceptibles.

El número $A$ depende de los contactos entre personas susceptibles e infectadas. No podemos saber cuantos son exactamente estos contactos, pero los podemos estimar estadísticamente. Un modelo muy utilizado es el que los físicos llaman "de moléculas de gas". Si asumimos que las personas se mueven mucho y cada persona puede encontrar a cualquier otra persona, entonces el número $A$ es proporcional a $S(t)\cdot{I(t)}$. Introducimos un parámetro $\beta$, que representa la probabilidad que un encuentro resulte en un contagio. Con esto podemos escribir

\begin{equation} A = \beta \frac{S(t)I(t)}{N}\rule{10em}{0pt}(1) \end{equation}

(El factor $1/N$ es un factor de normalización para que la ecuación describa una probabilidad de encuentros.) El valor $B$ depende de cuantas personas se han recuperado en ese día. Si hay $R(t)$ personas recuperadas y llamamos $\gamma$ la fracción de personas recuperadas que pierden los anticuerpos cada día, tenemos

\begin{equation} B = \gamma R(t)\rule{10em}{0pt}(2) \end{equation}

Con estas definiciones podemos escribir la ecuación que regula la evolución del número de personas susceptibles:

\begin{equation} S(t+1) = S(t) - \beta \frac{S(t)I(t)}{N} + \gamma R(t) \end{equation}

Consideremos ahora las personas infectadas. En este caso podemos escribir

\begin{equation} I(t+1) = I(t) + A - C - D \end{equation}

La variable $A$ son las personas que se han infectado ese día, y ya hemos calculado su valor en la ecuación (1). La variable $C$ son las personas que ese día se han recuperado, y $D$ son las personas que han muerto ese día. Así como hemos hecho antes, podemos asumir que cada día una fracción dada de las personas infectadas se recuperan, y otra fracción dada muere, por tanto escribiremos

\begin{equation} \begin{array}{rcll} C &= &\rho I(t) &\rule{10em}{0pt}(3) \\ D &= &\zeta I(t) &\rule{10em}{0pt}(4) \end{array} \end{equation}

Con esto obtenemos la ecuación

\begin{equation} I(t+1) = I(t) + \beta \frac{S(t)I(t)}{N} - \rho I(t) - \zeta I(t) \end{equation}

Tenemos ahora las personas que se recuperan. En este caso escribimos

\begin{equation} R(t+1) = R(t) - B + C \end{equation}

La variable $B$, definida en la ecuación (2) son las personas que ese día han vuelto a ser susceptibles, mientras $C$, definida en (3) son las personas infectadas que ese día se han recuperado. Por tanto podemos escribir

\begin{equation} R(t+1) = R(t) - \gamma R(t) + \rho I(t) \end{equation}

Finalmente, para las víctimas, escribimos:

\begin{equation} V(t+1) = V(t) + \zeta I(t) \end{equation}

Las víctimas de hoy son las víctima de ayer más las personas que han muerto entre ayer y hoy. Tenemos ahora nuestro modelo completo:

\begin{equation} \begin{array}{rcl} S(t+1) &= &S(t) - \beta \frac{S(t)I(t)}{N} + \gamma R(t) \\ I(t+1) &= &I(t) + \beta \frac{S(t)I(t)}{N} - \rho I(t) - \zeta I(t) \\ R(t+1) &= &R(t) - \gamma R(t) + \rho I(t) \\ V(t+1) &= &V(t) + \zeta I(t) \end{array} \end{equation}

Estas ecuaciones tienen una característica que nos ayuda a tener confianza de su validez. Se puede demostrar que

\begin{equation} S(t+1)+I(t+1)+R(t+1)+V(t+1) = S(t)+I(t)+R(t)+V(t) \end{equation}

Es decir, las ecuaciones nos confirman que el número total de personas (es decir, N) no cambia: las personas pasan de una categoría a otra sin alterar su número total.

Para completar el modelo es necesario establecer el valor de las constantes β, γ, ρ, ζ. Para esto se pueden usar los datos efectivos de la epidemias (tasa de crecimiento, duración media de la enfermedad, mortalidad, etc.). El procedimiento para conseguir estos parámetros no es muy complicado pero en este momento nos llevaría demasiado lejos. Si usamos como datos los relativos a la primera fase de la epidemia en España, conseguimos los valores siguientes:

\begin{equation} \begin{array}{rcl} \beta &= &0.48 \\ \gamma &= &0 \\ \rho &= &0.05 \\ \zeta &= &0.06 \end{array} \end{equation}

Notamos que se ha puesto γ=0. ¿Qué quiere decir esto? Si nos fijamos en las ecuaciones, γ=0 quiere decir que ninguna persona recuperada volverá a ser susceptible. Esto no es completamente cierto, pero en la primera fase de la epidemia (de Marzo a Junio) no se confirmó en España ningún caso de reinfección, y esto resulta en nuestra elección de γ=0. ¿Qué resultados nos dan nuestras ecuaciones? No es posible calcular soluciones exactas, pero es muy fácil introducirle en un ordenador y efectuar los cálculos para ver que curvas de contagio nos dan. Nos interesan sobre todo dos cantidades: el número de casos nuevos diarios C(t)=I(t)-I(t-1) y el número de víctimas diarias M(t)=V(t)-V(t-1). Para arrancar el cálculo, asumimos que el primer día (t=0) todo el mundo es susceptible excepto una persona que se ha infectado (el "paciente cero"). Es decir:

\begin{equation} \begin{array}{rcl} S(0) &= &N-1 \\ I(0) &= &1 \\ R(0) &= &0 \\ V(0) &= &0 \end{array} \end{equation}

Si insertamos nuestras formulas en un sencillo programa de ordenador poniendo, por ejemplo, $N=10.000$, los resultados son los de Figura 1.a, donde vemos en rojo el número de infectados cada día y en negro el número de víctimas diarias.
El número de infectados (lo que hemos llamado $I(t)$) no es lo mismo que el número de nuevos casos diarios; esto lo tenemos en la Figura 2. El comportamiento es muy parecido a lo que observamos en los datos reales, sobre todo en la fase ascendente (el descenso es más lento en nuestro caso que en el caso real, en cuanto nuestro modelo, por el momento, no tiene en cuenta un elemento muy importante: el confinamiento del 14 de Marzo). A continuación me centraré sobre todo en el número de casos (Figura 1), dado que es el que determina la saturación de los hospitales.

Se trata claramente de una versión muy idealizada: los datos reales no tienen esta regularidad, principalmente porque el parámetro $\beta$, que depende de los contactos entre las personas, no es exactamente constante: de un día para otro los contactos entre las personas varian de manera imprevisible.

Los modelos matemáticos no nos dan una imagen completa de la difusión de la epidemia, pero son muy útiles para estudiar sus características generales y ver, a grandes líneas, el efecto de varias estrategias y comportamiento. Para esto,es mejor evitar el ruido que hace las curvas más realistas y trabajar con la curva idealizada, que nos muestra mejor los rasgos generales sin confundirnos con los detalles que pueden variar imprevisiblemente. Hablaré de ello en el próximo artículo.