9 El Modelo SI de Infección

9.1 Construcción del Modelo

9.1.1 Introducción

En términos históricos, las enfermedades infecciosas han constituido una amenaza muy grave para la sociedad. Durante la mayor parte del siglo XX las pandemias (epidemias que se propagan por áreas y poblaciones de enorme tamaño) se habían ya considerado amenazas del pasado; la medicina moderna se había ocupado para siempre de la peste, la viruela y otras catástrofes de carácter contagioso. No obstante, los cambios ambientales actuales han propiciado cambios en las distribuciones geográficas de organismos en general y de parásitos en particular. La resistencia a los agentes antimicrobianos también se han convertido en un grave problema mundial. Algunas infecciones, antes fáciles de tratar con antibióticos, representan ahora una grave amenaza para la salud en todas partes. El caso de Toronto (Canadá), la única ciudad de un país occidental en la que la epidemia del síndrome respiratorio agudo grave (SRAG) se ha extendido de forma local, es un claro ejemplo de ello. Por lo tanto, en años recientes, las enfermedades infecciosas como malaria, tuberculosis, VIH/SIDA, SRAG y la posibilidad del bioterrorismo han provocado de nueva cuenta un gran efecto económico y de salud, sea en países desarrollados o del tercer mundo, lo cual indica que esta amenaza sigue presente. Por ello, El uso de modelos basados en agentes es muy útil para estudiar la dinámica de transmisión y control de las enfermedades infecciosas e idear programas efectivos de control.

Describiremos e implementaremos un modelo básico de Infeccción que luego iremos extendiendo con mayores funcionalidades y paralelamente iremos realizando análisis del modelo.

9.1.2 Descripción del Modelo

Se tiene un número de personas en un espacio cerrado, las personas se mueven al azar dentro del espacio cerrado todas a una misma velocidad. Cuando una persona sana se encuentra “cerca” de una persona infectada, esta adquiere inmediatamente la infección, se asume que una persona infectada no vuelve a quedar sana.

Inicialmente solo una persona se encuentra infectada y las demás sanas

Queremos entender como evoluciona la infección en este espacio cerrado, las dimensiones del espacio cerrado son fijas y también fijaremos el número de personas infectadas inicialmente (en este caso una). El número de personas en el cuarto es variable (digamos de 50 a 200 personas) y queremos medir:

  • el tiempo que transcurre hasta que todas las personas quedan infectadas

9.1.3 Pregunta

La pregunta inicial que queremos responder con el modelo es:

  • ¿Qué relación hay entre el tiempo para la infección total y la densidad de personas en el cuarto?

Por ejemplo:

*¿Entre más densidad de personas hay en el cuarto, el tiempo de infección total es mayor o menor?

Por ejemplo si tengo 200 personas, estas se demorarán más en infectarse comparado con 50 personas, o por el contrario las 50 personas demoran más en infectarse.

Implementando el Modelo

Abra el Programa NetLogo:





9.1.3.1 Setup

Haga clic en la pestaña de código y coloque lo siguiente:

to setup
 clear-all     ; limpia el mundo
create-turtles num-personas
 [setxy random-xcor random-ycor  ; coloque al agente al azar en el mundo
  set shape "person"      ;forma del  agente
   set color green] ; color del agente 
   
ask one-of turtles [ set color red]   ; infecte una persona al azar
reset-ticks   ; inicialize tiempo en 0
 end

El procedimiento setup en su orden:

  • limpia el mundo : clear-all
  • crea agentes de acuerdo con el deslizador num-personas : create-turtles num-personas
  • se define atributos a los agentes:
  • forma : set shape “person”
  • color : set color green
  • se selecciona un agente al azar y se infecta : ask one-of turtles [ set color red]
  • Se pone el tiempo del modelo en cero : reset-ticks




Oprima el botón comprobar, aparece el siguiente error en amarillo:





Este error indica que num-personas no está definida, la mejor manera es definirla a través de un deslizador para que sea un parámetro del modedlo, entonces: Seleccione la pestaña Ejecutar y del menú que dice Botón seleccione la opción deslizador:





Haga clic a la izquierda de la pantalla negra, aparece una ventana, llénela de la siguiente manera y oprima ok.





Haga clic en la pestaña código de nuevo y oprima el botón comprobar ya no debe aparecer el error. Ahora creemos un botón pra el procedimiento setup: Selccione la opción Botón, haga clic en la parte izquierda de la pantalla y llene la ventana que aparece de la siguiente manera:





Haga clic varias veces en el botón set up para comprobar que los agentes (personas) se crean en el mundo.

9.1.3.2 Go

Una vez definido el procedimiento de setup, vamos a definir el comportamiento de los agentes, vaya a la pestaña de código y coloque lo siguiente:

 to go
   if all? turtles [color = red ] [stop] ; si todas las personas se infectan pare
   ask turtles  [
   move ]         ; los agentes (personas) se mueven al azar en el mundo       
   
   ask turtles with [color = red] [
   infect]      ; las personas infectadas miran si pueden infectar a otras
   tick
 end
 
 to infect
   ask (turtles-on neighbors) with [color = green]
   [set color red]  ; si una persona es vecina de una infectada, se infecta
 end
 
 to move
   move-to one-of neighbors  ; los agentes seleccionan al azar una párcela vecina y se mueven
 end

Este procedimiento go en su orden:

  • Determina cuando el modelo para: if all? turtles [color = red ] [stop]
  • pone a mover los agentes al azar en el mundo : ask turtles [move ]
  • digale a los agentes rojos: infecten : ask turtles with [color = red] [infect]

¿Como infecta un agente rojo? (procedmiento infect) :

  1. dígale a mis agentes vecinos que estén sanos: (turtles-on neighbors) with [color = green]
  2. inféctense: [set color red]

La frase completa es: “vecinos mios sanos, enférmense”: ask (turtles-on neighbors) with [color = green] [set color red]

(Nota: neighbors es el conjunto de parcelas vecinas y (turtles-on neighbors) es el conjunto de agentes(personas) que están sobre esas parcelas)




Seleccione de nuevo la opción botón y haga clic a la derecha del botón setup, aparece una ventana llénela de la siguiente manera:





Listo, ya podemos observar el comportamiento del modelo, la interfaz es la siguiente:




Haga clic en Setup y luego en Go para observar la funcionalidad del modelo.

(Nota: si el modelo corre muy rápido ajuste el deslizador de velocidad situado en la parte superior central)

Puede ensayar la funcionalidad del modelo en el siguiente applet:

9.2 Análisis del Modelo

9.2.1 La pregunta

9.2.2 Diseñando el experimento

9.2.3 Análisis del Modelo en Rstudio

9.2.3.1 Configurando R studio

9.2.3.2 Leyendo los datos de NetLogo a R

9.2.3.3 Limpiando los datos

9.2.4 Un Segundo Análisis (Infección Ambiental)