Этого, пожалуй, вполне хватит, если речь идет только о моделировании и вот почему:
на графиках, хоть и разный масштаб, но интересна динамика, поэтому даже учитывая малую амплитуду для данных Infected и Death мы тут видим качественное изменение, что вполне достаточно для анализа.
Теперь представим себе другой случай - мы не просто моделируем, но и смотрим соответствие модели экспериментальным данным.
Тогда:
- количество графиков удваивается - надо показывать как модельные так и реальные данные
- масштаб играет роль - насколько модель будет отражать реальные данные для того же графика Death при мелком размере графика будет непонятно.
Для симуляции модельных данных я буду брать модель синуса и косинуса, а для симуляции реальных данных - просто добавлю туда случайные величины.
По факту для работы нам достаточно импортировать только NumPy:
import numpy as np
Данные будут храниться в глобальных переменных. Пусть амплитуды будут различаться.
Пусть ось x будет одинаковая.
Возьмем для примера два набора - y и y2, реальные данные будут тогда yr и yr2 соответственно:
x, y, y2, yr, yr2 = [], [], [], [], []
Теперь сначала вычислим данные для модельных наборов:
# параметры тригонометрический функций
f = 0.5; phase = 2
# 10 значений по оси х
x = np.linspace(0, 10, 10)
# y будет синусом
y = np.sin(f * x + phase)
# y2 будет косинусом с пятикратно более высокой амплитудой
y2 = 5*np.cos(f * x + phase)
Далее смоделируем реальные данные. Вычислять их будем по модельным, используя векторные возможности NumPy:
yr = y + np.random.random() * y
yr2 = y2 + np.random.random() * y2
Т.е. в каждой точке данные получаются умножением случайного числа в диапазоне (0,1) на модельные данные.
Если хочется решить задачу при минимальном кодировании, то логично сделать два графика - для y и для y2:
Если хочется уплотнить информацию - удобнее эти два графика сделать на одном, но с двумя осями.
Второй способ - более тяжелый с точки зрения кодирования, но более компактный: скажем в случае SEIRD модели надо четыре величины и их можно упаковать в два графика.
В дальнейшем мы эти варианты последовательно рассмотрим.
No comments:
Post a Comment