Ok, vamos a ver lo que dejamos en el último video, donde estábamos viendo
el tiempo que tardan en infectarse vs la población inicial
imaginemos que una vez que lo hicimos, nos da curiosidad acerca de como es el gráfico
que obtenemos luego del 100% de infección
entonces no queremos ver los datos finales sino los datos que nos llevan a ese punto
final, ok?
el gráfico del que estamos hablando es el de los resultados finales
un aspecto importante, un aspecto bueno de los MBA es que nos permite registrar toda
la información de transición, la info que nos lleva desde las condiciones iniciales
hasta el punto final, para ver como son las cosas
a veces esto se denomina gráfico del tiempo de corrida
o gráfico de serie temporal
siempre requieren mucha info y en muchos casos, dependiendo de cuan grandes son
nuestros conjuntos de datos, puede necesitar de mucho trabajo realizarlos
porque debemos registrar toda la info para cada punto del tiempo, ahora si estamos
corriendo algo por 10 ticks, no es mucho, pero si estamos corriendo algo por 10000
ticks, eso es mucha info que hay que registrar, incluso para una sola corrida
pensemos entonces cuidadosamente, antes de poner la data, si realmente se necesita
vamos a volver a nuestro modelo de dispersión de enfermedades y vamos a ver
como podemos hacer esto en NetLogo
Volvimos a NetLogo y vamos a crear estos datos del tiempo de corrida, estos datos
de series temporales que nos permitirá examinar la tasa de infección en cada
corrida, y al hacerlo no solo veremos la tasa de densidad de población, vamos a
ver la densidad de la población, vamos a duplicarlo, esto nos crea una copia exacta
con los mismos valores de entrada y vamos a llamar a este experimento "tiempo de
corrida" en vez de llamarlo únicamente densidad de población
y la primer línea que vemos, es la de la medida de la corrida por cada paso
bien, esto está bien, salvo por el hecho que...
qué es lo que estamos buscando? qué es lo que queremos analizar? cuál es la salida
que queremos ver?
no sólo es el último tick, porque no queremos ver la cuestión del tiempo, lo
que queremos ver es en cada paso del tiempo, cuánta gente está infectada,
enfermos,
entonces necesitamos cambiar nuestra salida de los ticks para contar
las tortugas que están infectadas
le damos ok, para salvarlo
y lo ponemos a correr
y obtenemos una salida
en el escritorio, ya lo hicimos antes
obtenemos la salida de esto
ahora volvemos al R, para analizar esos datos
volvimos a R y vamos a analizar la serie temporal de datos que generamos en el
último experimento
y una de las primeras cosas, usamos el mismo comando, ustedes notarán que el
cambio
en los archivos de datos, apuntan al tiempo de corrida, que es la salida que
usamos en el experimento
esto es todo un nuevo conjunto de código en R
que va a analizar los datos, pero es similar en algunos aspectos
tenemos ahora que asignar los nuevos colores, debido
es casi lo mismo, excepto porque ahora tenemos como variable a las tortugas que
están infectadas al final
en R siempre las etiquetas llevan puntos cuando no alcanza a poner más
vamos a renombrarlo a infectados, renombramos los pasos, etc.
ahora si vemos los encabezados luego de haber corrido, es más simple de entender
que es lo que está sucediendo
también podemos ver que las corridas están desordenadas, por lo tanto tendremos que
pensar en como lidiar con ello, si es que lo necesitamos
por suerte en la mayoría de los casos no lo necesitamos
el próximo paso, esto es algo que me gusta cuando analizo
miremos todos los datos, miremos que nos dicen todos esos datos
vamos a graficar, sea lo que sea que pongamos en el eje de las X y sea lo que
sea poner en el eje de las Y
en el eje de las X ponemos los pasos y en el eje de las Y el número de infectados
si lo graficamos, vemos este gráfico que es interesante, pero no queda claro que es
lo que está sucediendo
en que se diferencian estas líneas de estas otras, puedo tratar de adivinar
que estos son los 50 agentes en la población, 100, 150, 200 infectados
ahí no adivino porque puedo ver aproximadamente lo que puede ser
una de las cosas que hace al gráfico difícil de leer es el hecho de que no
sabemos a qué corresponde cada línea en relación con los números, el número incial
de personas, pero también el hecho de que tienen diferentes valores
200, 150 y así sucesivamente
hagamos una versión más limpia de este gráfico
lo primero que voy a hacer es crear un nuevo campo en el conjunto de datos
que voy a llamarlo frac.infected o fracción de infectados
frac.infected va a ser igual al número de los que fueron infectados dividido por el
número inicial de personas
esto nos dice la fracción de infectados en la población
la próxima cosa que voy a hacer es colorear y darles diferentes símbolos a
los puntos a los diferentes números de la población inicial
estoy todavía graficando los pasos versus la fracción de infectados
pero tengo este comando que dice
asigne el caracter de cada punto a 1, 2, 3 o 4 basados en cual es el número de
personas para ese punto en particular
tengo que convertirlo primero en factor y luego lo convierto de nuevo a numérico
para poder indexarlos en este vector que acabo de crear
y puedo hacer lo mismo para el color, tomo el número de personas, lo convierto a
factor, que es algo del R que nos permite estar más seguros, 50 es un factor, 100
es un factor y así sucesivamente y luego los convertimos a numérico, 50, 100
y una vez que lo hicimos, graficamos los resultados
volvemos a la ventana
ahora vemos que no solamente se hace la comparación, están todos en el mismo eje
pero puedo ver también los diferentes colores y como se ven en cada punto
puedo agregar una leyenda, también
así podemos estar seguros de qué implica cada punto, podemos hacer esto asignando
el texto de la etiqueta que sea igual a las etiquetas de los factores
y el caracter es igual a 1, 2, 3 y los colores son iguales a 1, 2, 3
ahora que hice todo, puedo ver mi gráfico y tengo alguna información que me ayuda a
entender
sin embargo, el problema con esto es que tenemos todos los datos juntos que puede
hacer dificultoso de leer y ver que sucede
lo que podemos hacer entonces es, podemos empezar a resumir los datos
pero a diferencia del caso anterior, no vamos a resumir a partir del número de
personas
sino que también resumiremos a partir de los pasos, entonces lo que queremos hacer
es ver cual es el valor del promedio de las corridas, cuando asignamos el valor
inicial de las personas a 50 al paso número 176
si el número inicial de personas es 200 al paso del tiempo 10
y podemos calcular todo
y también vamos a calcular el desvío estándar
una vez que hicimos eso, podemos graficar un gráfico de barras donde podremos ver
los pasos versus la fracción de infectados y obtenemos esa fracción de infectados,
agregando el desvío estándar y restando,
así podemos entender como se ve ahora
el problema es que cuando miramos a estos datos
se ve cada punto simple y no hemos agregado los colores, no hemos hecho todo
el trabajo, y entonces no es obvio cual es la diferencia, que es lo que está pasando
vamos a hacer algo, una cosa que podemos notar, es que graficando cada punto simple
cuando tenemos 500 pasos, precisa de muchos datos y eso hace que sea difícil
diferenciarlos
entonces una de las primeras cosas que vamos a hacer, es tomar los datos del
promedio y vamos a mirar únicamente cada 10 pasos
entonces lo que hacemos es tomar los datos originales y decimos
únicamente incluí los pasos, que cuando dividimos por 10, obtenemos un resto de 0
es el operador denominado módulo, el operador módulo toma como entrada un valor
lo divide y nos muestra el resto
esto nos va a dar 10, 20 y 34
lo que vamos a hacer, tanto para el desvío estándar y el promedio, así ahora
sólo tenemos en el subconjunto de datos
los datos cada 10 pasos
todos estos conjuntos de datos, son muy grandes
y en verdad no necesitamos toda esta información
entonces porqué no creamos un conjunto de datos que queremos mostrar en el gráfico
vamos a tomar, vamos a usar el comando cbind otra vez, para tomar únicamente los
pasos
el número de personas
la media, del subconjunto de datos de la media
el desvío estándar, del subconjunto de datos del desvío estándar
y vamos a graficar todos estos datos, que son un subconjunto del conjunto original
de datos
si lo vemos
tiene los datos que queremos
ahora que tenemos exactamente los datos que queremos en una tabla
en vez de graficar todos los datos de una vez, como lo hicimos con un solo comando
voy a graficar a lo largo del tiempo
la primera cosa que voy a hacer es graficar sólo los datos que tienen como
población inicial 50 personas, en este caso es la población inicial
lo que voy a hacer es, con los datos agregados, que recién creamos, cuando el
número de personas sea igual a 50
entonces grafique cada paso contra la media de ese conjunto de datos
en el eje con el color negro y aquí está tu etiqueta, podemos verlo, ahora puedo
agregar a este gráfico, un incremento a lo largo del tiempo, entonces lo siguiente
que voy a hacer es graficar cuando es 100, usando plot que crea un nuevo gráfico en
este punto, y agregamos puntos al gráfico
agrego puntos cuando hay 100 personas
y con 150 y con 200, tengo diferentes pch y diferentes colores
puedo agregar una leyenda, así queda claro cual es cual, 50, 100, 200, en este caso
pongo esto porque sé exactamente qué es porque ya lo grafiqué
podemos agregar barras de la misma forma, el comando de R bar es igual a los que
vimos antes, con la diferencia de que podemos decir que a es igual a verdadero
que implica que agrega los datos que tiene
el otro comando del que quiero hablarles es como ponerle color a la barra
porque no sabe como hacerlo en forma automática, entonces voy a decirle que
para 15, negro para 100, rojo y así sucesivamente
puedo agregarle una sección con títulos, ya están ahí lo hicimos en la sesión
previa
y ahora puedo ver los datos y ahora tenemos un hermoso resumen de los datos
para ver en tiempo de corrida
y lo que pueden ver, mirándolos
es que queda claro que el patrón de difusión, que arranca en 50 es un poco
más lento que el que tiene 100 o 150 o 200 pero los de 150 o 200 están muy cerca unos
de otros, las barras se superponen no son muy diferentes unos de otros en el período
de tiempo particular, siempre es una fracción del número de infectados
pero sí, esta es una linda forma de ver las series temporales y datos del tiempo
de corrida para tus modelos