{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "2cd0caa5", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "from IPython.display import display\n", "\n", "from epimodels.continuous.models import SISLogistic\n", "from epimodels.fitting import (\n", " Dataset,\n", " DataSeries,\n", " ParameterSpec,\n", " ModelFitter,\n", " FittingResult,\n", " fit_model,\n", " SumOfSquaredErrors,\n", " WeightedSSE,\n", " PoissonLikelihood,\n", " NegativeBinomialLikelihood,\n", " NormalLikelihood,\n", " HuberLoss,\n", " ScipyOptimizer,\n", " MultiStartOptimizer,\n", ")\n", "\n", "np.random.seed(42)\n", "plt.style.use('seaborn-v0_8-whitegrid')\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 2, "id": "be2407e0", "metadata": {}, "outputs": [], "source": [ "df = pd.read_csv(\"dengue_data_logistic.csv\")\n", "\n", "df = df.sort_values(\"data_iniSE\")\n", "\n", "times = np.arange(len(df))\n", "\n", "observed_I = df[\"casos_est\"].values\n", "\n", "TOTAL_POPULATION = df[\"pop\"].iloc[0]\n", "INITIAL_INFECTED = observed_I[0]\n", "INITIAL_SUSCEPTIBLE = TOTAL_POPULATION - INITIAL_INFECTED" ] }, { "cell_type": "code", "execution_count": 3, "id": "ddca0af4", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Dataset valid: True\n", "Time range: (0.0, 103.0)\n", "Dataset(n_series=1, variables=['I'], time_range=(0.0, 103.0))\n" ] } ], "source": [ "model = SISLogistic()\n", "dataset = Dataset(model)\n", "\n", "dataset.register(\n", " name='infected',\n", " values=observed_I,\n", " times=times,\n", " state_variable='I',\n", ")\n", "\n", "validation_result = dataset.validate(total_population=TOTAL_POPULATION)\n", "\n", "print(f\"Dataset valid: {validation_result.is_valid}\")\n", "print(f\"Time range: {dataset.time_range}\")\n", "print(dataset)" ] }, { "cell_type": "code", "execution_count": 4, "id": "65a1aa83", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Parameters to fit:\n", " R0: bounds=(1.01, 5.0), initial=2.0\n", " gamma: bounds=(0.01, 0.5), initial=0.3\n", " r: bounds=(0.01, 0.5), initial=0.4\n", " k: bounds=(1000, 20000), initial=5000\n" ] } ], "source": [ "param_specs = [\n", " ParameterSpec(\n", " name='R0',\n", " bounds=(1.01, 5.0),\n", " initial=2.0,\n", " ),\n", " ParameterSpec(\n", " name='gamma',\n", " bounds=(0.01, 0.5),\n", " initial=0.3,\n", " ),\n", " ParameterSpec(\n", " name='r',\n", " bounds=(0.01, 0.5),\n", " initial=0.4,\n", " ),\n", " ParameterSpec(\n", " name='k',\n", " bounds=(1000, 20000),\n", " initial=5000,\n", " ),\n", "]\n", "\n", "print(\"Parameters to fit:\")\n", "for spec in param_specs:\n", " print(f\" {spec.name}: bounds={spec.bounds}, initial={spec.initial}\")" ] }, { "cell_type": "code", "execution_count": 5, "id": "4e22e9b4", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "==================================================\n", "FITTING RESULTS\n", "==================================================\n", "Convergence: True\n", "Number of evaluations: 50\n", "Final loss: 248362.48\n", "\n", "Fitted parameters:\n", " R0: 1.0100\n", " gamma: 0.5000\n", " r: 0.5000\n", " k: 1000.0000\n" ] } ], "source": [ "fitter = ModelFitter(\n", " model=model,\n", " dataset=dataset,\n", " parameters_to_fit=param_specs,\n", " total_population=INITIAL_SUSCEPTIBLE + INITIAL_INFECTED,\n", " optimizer=ScipyOptimizer(method='L-BFGS-B', max_iterations=200),\n", ")\n", "\n", "result = fitter.fit()\n", "\n", "print(\"\\n\" + \"=\"*50)\n", "print(\"FITTING RESULTS\")\n", "print(\"=\"*50)\n", "print(f\"Convergence: {result.convergence}\")\n", "print(f\"Number of evaluations: {result.n_evaluations}\")\n", "print(f\"Final loss: {result.best_loss:.2f}\")\n", "\n", "print(\"\\nFitted parameters:\")\n", "\n", "for param, value in result.best_params.items():\n", "\n", " print(f\" {param}: {value:.4f}\")" ] }, { "cell_type": "code", "execution_count": 6, "id": "1a8320d2", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAJOCAYAAABm7rQwAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAit9JREFUeJzt3Qd8U/X6x/FvKRtKy95DwbJkL1kqXAciKuAEAScoggM37o3iAK+KAxUF3CJu/yqCogKilCV7CzIEhVI2tP2/nl9NbtIBKaRJ2nze93Xu6Tk5SU5ODEm+eX7PiUlPT08XAAAAAAAAEEKFQnlnAAAAAAAAgCGUAgAAAAAAQMgRSgEAAAAAACDkCKUAAAAAAAAQcoRSAAAAAAAACDlCKQAAAAAAAIQcoRQAAAAAAABCjlAKAAAAAAAAIUcoBQAAAAAAgJAjlAIAAEflueeeU/369d00fvz4w27btWtXt12fPn2CerRnzJjhbtf25WgEuk+e/T/c9Oijj7ptf/nlF7c8atQov9vYuXOn/vnnnyy3vXbtWu/fGzZscNe99dZbFe7nNPPUsmVLde/eXU888YR27dqlSJHb4w0AACJH4XDvAAAAyP/+7//+TwMGDMj2snnz5unPP/9UQTBy5MgcL6tbt653bttZUOLxww8/6Pbbb9d///tftWvXzhuaDBo0SHXq1NHjjz/u1pUrV85dt2bNmgqniy++WK1atfJbt2XLFn399dd6/fXXNX/+fE2YMEGxsbGKRNkdbwAAEHkIpQAAwDGpXbu2kpKSXGhRuXLlLJd/+eWXKl++vP7+++98f6TPO++8I25ToUKFLNvZ8dmxY4ffuu3bt2vu3LkulPIoWbJkQPeR15o3b57tflx99dW6/PLLXXXStGnTdNpppykSZXe8AQBA5GH4HgAAOCZnnXWW0tPT9c0332S5LC0tzVVRdevWjaNcABQqVEgXXXSR+/u3334L9+4AAIB8jlAKAAAckzZt2rjqIAufMpszZ46roDr77LOzvW5ycrIbuvaf//xHJ554otq3b6+bb75Zq1atyrLtkiVLdO2117r7a926tRuelVPPoNWrV7vbsduz2z3jjDM0evRo7du3L+Q9jvr376+XXnrJ/W1DHK0/1UcffeT2yUyePNltb9fLrqeUXd9CvWXLlrnhfjasrkWLFq5iyYbRZTd0rW/fvm6bk046Sffdd5+rarLbtfs9VlbNlR17nu+9916dfPLJ7ph36dJFjzzyiKsI82XP2d133+2qrGy7jh076qabbtKKFSsC6q1l6+wy2yY72R1vj7feeku9e/d2/bHs+FjAFoxjAgAAjg7D9wAAwDFXz5x55pl65513sgzh++KLL1StWjUXAmS2bds212R8/fr16tmzp5o2beqCBrudqVOn6tVXX3Xhk1m4cKELG4oVK+aChri4OH366aeaMmVKlttdsGCBC2xKly6tSy+91PVpsr5WFlTMnDnTNWW32zkaOYVgJUqUcFN2LEiz/f3uu+/c302aNHGhyh133OGahttjtHDEelHlFJrZ/fbr188FPrfddps7Tm+88YZ7nN9//73i4+Pddp999pm7vFatWrruuutcpdp7773nekEFiz0OY4GShz2H9lweOHDA9aOqXr26li5dqnfffVfTp093c3seUlNT3RBA2397bmw7u+7EiRP1008/6auvvlLFihWPaf+yO97GjteIESNcQGrH++DBgy4QHD58uDvuFuQBAIDQIpQCAADHzM7KZlUoNoTPwiNjAYQtW+AUExOT5TrPPPOM/vjjD3fWugsuuMC7/txzz3XLFhZY9ZU107bwxgIWC6yOP/54t52FCJdddpnrH+RhwwjvuusulSlTRh9//LESEhK821qF1T333ONCqYEDBx7V47TKq+wMHTpU119/fbaXWSXQ7NmzXUjSoUMHb+Ntqw6zx2VNzT39m3Kq/rGKsmHDhrmQxaN48eLubHkWOFnIsn//fleZZKHgpEmTXDBjLCTq0aNHrh7nnj17/AI4O/Zbt251oZfdduPGjd2wTY+HHnpIe/fudSGPBWIeVg12xRVXuIbjDzzwgBYvXqxFixa5aiff58BCuhdeeMFdduqpp+pY5HS8P/zwQxf82X93Hueff747dhagAQCA0COUAgAAx8yGlFWqVMmFSJ5QatasWa65eXZD9yzksMDKAhkLBnw1aNDAhSgWcFhIYdtY/yIbhuUJpEzRokWzhFI2xM2GgV1yySXuPnyDFRtOZhVS33777VGHUuPGjct2fSjOlmdhnS9PpZKFRcaqwKy5tw1b9ARSxoI5q7LyDCcMxMMPP+ym7IbuXXjhhe4+PGfes8DMqpysisuq03yPuT2XdmzsmFsoZf+N2PXef/99Va1aVZ07d3ZVXhZq2pSXqlSpop9//tkFeXZfFlDZ4/n888/z9H4BAEDOCKUAAMAxs0oo63tkw7D++usvFz7YWffszHJWVZOZ9RlKSUlxYVZ2VVQnnHCCt3LILrcKKDvLX2b16tXL0kvK2HAxm7Lz559/HvXjtMqbcLG+Xb4slDMWvpk1a9a4+XHHHXfE43QkV111lTp16uSOu4VeEyZMcIGfVYNdeeWVftuuW7fO7YMNI8ypksxYJZdVcVm1mlWI3XLLLW7oZ6NGjVw4ZRV1vmciDDaroLMhjc8//7ybbF+sqsqquaw6K7v/DgEAQN4ilAIAAEFhw7lsaJxVQNmQMev3ZH2DsmNhx+HY0D/f4MVYv6LMPIFM5tu1Sinrc5WdwoXz58cfC3AOx3okZT5mHrntoWUhlm8AZ5VF1mTdwiQLqawfVubnwBqX5/R8G09llQ2ltOo5a8hulUvW4P3FF1/U2LFjXTP6008/PaD/NnLLquwsKLXm+9bnyir5PvnkE2/TeaugAgAAoZU/P5UBAICIY2czsyFZ1uOoRo0abihZTmfds6bXNtRr5cqVLkjKXKVi643dnjXDtkDGUwWVuUrHl92vsdvMXNVk4YntWyiG2oWDp8rIjlPmvkzZHbvcsKDLAiPrffX666+76jdPnyrPMbdm4dlVklk4aUMILQy0CjkbXmnD+mw4omdIog09tOosC6cslPIEh9kFkdYgP7cOHTqk5cuXu9u13mI2GRtean26LEi1yxMTE3N92wAA4Ogd/ic3AACAXA7hs/5P1pDcggfr25PtB5BChVz4YMPzrHG2LwsHrKLFwiMb2mWBhoUdFlzYWfR8K2bsjGqZ+yxZiGUVMJ7hbB52Frqbbropy/2FgqdKyLeyy1P5lLna62jZUDRr8G79mnbv3u1db3/nNJQxN+x5sEope54ffPBBbd682Tus0IZhWtXTr7/+6ncdq4YaMmSIXnnlFbf8448/up5jmffHzpBngZEnjCpbtqyKFCniGpD7VkatXbvW77+BQI+3hVLWV8sarHsqykz58uW9jdk91wEAAKFDpRQAAAgaG+ZlzcCtv5D1DDocu9zOkmY9hizIatasmQup3n77bRcQPPbYY94KKtvGhuTZmdwsXLCeVV988YU7e58vu56dge6aa65xZ/Cz61gvqoULF7owygII6ysUahZ+GAvrrOeWVRxZtZgFU3YMLEiyUOlYlCpVyvVNuvPOO9W7d2/vGQ3trHOeAOlY+yaddNJJLlSyYZp2X6+99pq7zfvvv989L/b82NBNqziy6iwLnyzM8gz3syDSLnv22We1fv16F0bZmf5sCJ1VRXn6VdlwQxsO+umnn+rqq692f2/ZssX9t2Fh5apVq3J9vO127H5tiKH9d1qiRAnXJN8anVsT/JwCVAAAkHcIpQAAQNA0bdrUDeeycOlIZ1OrWLGiC0zGjBmjqVOnunDAAgzrTWRDqnxDAmvebcGNnUHO5hZgWPXUsGHDNGDAAL/btfW2jQ0Fs7DDGqrbmdesl5GFVXa/oWbD1KZNm+bCOqv4snDGQiSr3LFeSnamOzs7Xbt27Y7pfnr16uXOKGeVSdYjyf62QMeqx5588sls+03llu2znW3PKqPeeustF0bVr1/fHWt7Lm2IpFWl2XG2yjkLAT1N6i0IstDy5ZdfdlVUFjpZRZSFU3YcrOG5hwVddmY+O6OjVWDZfwMWbtmQu5EjR+b6eNt+WJhp+2b/bVgYZiHljTfe6IYOAgCA0ItJP1KnUQAAAEQ8C+psqJ4NfcvspZdecoGeVTgda/AFAAAQLPSUAgAAKACSk5Pd8Lrhw4dnCau++uorVyVlPboAAAAiBcP3AAAACgAbLnfKKado8uTJrsF3y5YttXfvXtd7yxqG33777YqLiwv3bgIAAHgxfA8AAKCAsD5JdkZCC6L+/PNP16/JzoJozcnPOOOMcO8eAACAH0IpAAAAAAAAhBw9pQAAAAAAABByhFIAAAAAAAAIuahpdH7o0CF3VppixYqpUCGyOAAAAAAAgLxgJ13Zv3+/4uPjVbhwztFT1IRSFkitXbs23LsBAAAAAAAQFerUqaPy5cvneHnUhFJWIeU5ICVKlFB+lpqaquXLlysxMVGxsbHh3h0gIvC6AHhdALxXAHyGAvhuERn27t3rCoM8WYyiPZTyDNmzQKpkyZLK71++jT0OQimA1wXA+wXAZyiA7xYA37kj0ZHaJ9FcCQAAAAAAACFHKAUAAAAAAICQI5QCAAAAAABAyBFKAQAAAAAAIOQIpQAAAAAAABByhFIAAAAAAAAIOUIpAAAAAAAAhByhFAAAAAAAAEKOUAoAAAAAAAAhRygFAAAAAACAkCOUAgAAAAAAQMgRSgEAAAAAgKiVmpqqt99+WxdccIFatGihdu3a6f7779ekSZOUnp7u3W7Dhg2qX7++fvnlF+V3GwJ4LHb5Rx99lKf7UThPbx0AAAAAACBCHTx4UEOGDNGCBQs0dOhQderUSQcOHNB7772nkSNH6vvvv9dzzz2n2NjYcO9qgUQoBQAAAAAAotLLL7+s3377TR9++KGOP/54b+VU9+7d1bNnT/Xp00evvfaaBg0aFO5dLZAYvgcAAAAAAMJnxgxp8GDp9NMz5rYcAmlpaZowYYJ69+7tDaR8NWrUSOedd57bxrb1mDt3rs455xydeOKJ7rqzZs3yXvb333/rhhtucEMAmzZtqksuuUSzZ8/2Xm5VWE8++aQ6d+7shgpedNFF+umnn7yX23C5008/XY888ohatWqlwYMH6z//+Y+7jq+PP/5YzZs3165du9yyDTU866yz3H3a/M033/Tb5+XLl2vAgAHuOnb7M2fOVCQglAIAAAAAAOFhAdSwYdK0adKOHRlzWw5BMLVmzRrt2LFDLVu2zHGb9u3b66+//tL69eu966xyysKiTz75xAVX11xzjbZs2eIue+CBB7R//35NnDhRn332mY477jhdd9112rNnj7t8+PDh+vnnn/XUU09p8uTJLkC69tpr3TBBjz/++MPdpwVPN998s3r16qUvv/zSr7/Vp59+qtNOO02lS5f2DjW04YdffPGFbrrpJo0dO9bdh0lJSdHll1+uuLg4ffDBB24fX3zxRUUCQikAAAAAABAeEyZIyclSvXpSlSoZc1ueODHP7zrZ7kdS2bJlc9zGc9k///zjXXf99de74X1169Z1AU/58uVdo3RPoFSmTBnVrFlTtWvX1t13363//ve/rifVunXr9Pnnn2vEiBGukqpOnTq64oordPbZZ7ugy5cFWXYbJ5xwghtGuGnTJjfM0GzdutVVZ1mVlhkzZowLyex27Dpnnnmmhg0b5oIxC8gsqNq7d68ef/xxd3sdO3bUXXfdpUhATykEjyXZ9g/KypUZ/5D07y916MARBgAAAABkz74/xsVJMTEZyza35RUr8vyIeQInqyQ6UnBVrlw57zobVudRuHBhVy214t/9tWql2267TV9//bXbzhqn9+jRQ8WKFdPixYvdNn379s3SbL1MmTJ+6yyw8qhRo4batm3rKq/atGnjQqZKlSrppJNOcmHZ5s2b9cwzz+jZZ5/1XseG7lkgZWfZs6F7dntWKeVhQwcjAaEUgltyaS9Y+w/dSi6TkqRRowimAAAAAADZs4IG+/5YuXJGIGVD1Cwkats2z49YrVq1VLFiRf36668644wzst3G+kHZNhYMWbWSyXwmPmuMbqGTsX5NP/74o5tmzJihcePG6fnnn9f777/vHX731ltvqVSpUn63UaiQ/0C24sWL+y1bVdRjjz2me+65xw3ds15Xdh1P3ygbFtghm6KQqlWrKiYmxq+/lCdMiwQM30O+L7kEAAAAAORTNsImPj6jYmrz5oy5Lffrl+d3beGS9VqyM++tWrUqy+VW/WR9nfr16+cXRP3+++9+jctt2YbF2d82NM/6T9nwPmtWPmXKFBceWc8o28Yz/M6G9tX+d7Lm5jYdjg3JO3TokOsJtWjRIu/QPRs6aFVcdp++t2nbjB492m3ToEEDrV271m8Iou9jCCdCKeT7kksAAAAAQD5l1T02wqZrVykhIWNuYUr79iG5+yuvvFInn3yyLr30UlfBZH2fbPr222912WWXuSFyAwcO9LvO008/7cKmlStX6s4773RhlF2/aNGiWrhwoe69917NmzfPDZ2zsMmanNtwOQulunTpovvvv19Tp051QZI1JH/55Zdd1dbhlChRQt26dXP3bY3ZLXgyVgVl+2dnCLQeUtbTyvbdel1ZtZXtk/WasvDqlltu0dKlS13116OPPqpIEBn1Wsj/wlhyCQAAAADI58FUmPoRWxWT9WKyiig7i92oUaPcMLtq1aq5EOfCCy90wY8va3RuZ7az0Klp06ZuiF6CBWqyfG2Uq5ayxuPWq+r4449327Zu3dp7uU333Xef61dlYZQFRHaGvSOx6qhJkyZ5q6R8gzUbPmjBlDUzr1Chgi666CLdcMMN7vKSJUvqzTff1MMPP6w+ffooPj7eXWZD/sItJt33nIIFmCWTS5YsUcOGDd0Tkp/ZeFVLXZs3b55lLGvE9JSyQMpKLkOYcCO6ReTrAggzXhcArwmA9wqAz1CRnMEwfA8FouQSAAAAAADkLwzfQ4EouQQAAAAAAPkLlVIAAAAAAAAIOUIpAAAAAAAAhByhFAAAAAAAAEKOUAoAAAAAAAAhRygFAAAAAACAkCOUAgAAAAAAQMgRSgEAAAAAACDkCKUAAAAAAAAQcoVDf5cAAAAAAADh179/f82ePTvbyy6//HItXrxY1atX1+OPP+7WTZs2TTVr1lS9evXc8pw5c5Senq7WrVsf9T7ceeed+vPPPzVhwgRFG0IpAAAAAAAQtc466yzdfffd3uXU1FQtWrRIbdq0UVpammJjY916C46uvfZajR8/3htK9e3bVyNGjDimUCqaEUoBAAAAAICoVbx4cVWsWNEvlEpISFCpUqW8gZSxiigEFz2lAAAAAAAAchjeZ8PrNmzYoP/85z9u3YABA/Tcc8+pfv36bnn48OFuG7NlyxYNGzbMVU61a9fOVVatXbvWL9gaM2aMTj75ZDVv3txdd//+/VF77KmUAgAAAAAAQfHMzGfcdCQtq7bUp30+9Vt37jvnKmlT0hGve3P7m93kkbI/RWOTxvqtC7aqVavqgw8+0IUXXugCqY4dO+qSSy5Rp06ddNddd6l3797as2ePC7EaN26siRMnqlChQho3bpwuuugiffbZZ6pcubJeeeUVvfrqq3rooYfUqFEjvffee/roo4/Utm1bRSNCKQAAAAAAEBQ79+/Unyl/HnG7mvE1s6zbumdrQNe1+/CVrvQs63LDAqOvv/76f7eXnq7ExES988473nU2jK9cuXLu7/j4eDe0zyYTFxfnJgutdu7cqSeffFKFC2fELY8++qh++eUXvf/++xo6dKhrZm6VVj169HCXW6WUXR6tCKUAAAAAAEBQlClWRtXjqh9xu4olK2a7LpDr2n34ilFMlnW50bVrV916661+PaVWrVqV69uxM/UlJye7Bum+bHie3d727du1detWNWnSxO/y5s2bH9X9FQSEUgAAAAAAICgyD63LjczD+QIVVyzumIbuWcVT7dq1/UIpC5Byy87Ud9xxx+nFF1/MclnJkiUVExOTbcP0wv9WVUUjGp0DAAAAAAAcgSdUyokN+du4caMbymchl03VqlXT008/rV9//VVly5Z1vanmzJnjd73ff/89ao89oRQAAAAAAMARWLWTWb58uVJSUrzrPEPzzj33XNdv6oYbbtD8+fPdejsr3/Tp071n6hs4cKDeeust139qzZo1Gj16tBYsWBC1xz56a8QAAAAAAAACZJVO559/vkaOHKl169bpnnvu0ZVXXunOpmcB1EsvveTOumeXX3XVVW4YoJ2J7/XXX1fdunXdbVx66aVumJ8N8du2bZs6d+6sCy64wAVU0SgmPfNgxgLKTs24ZMkSNWzY0Jtu5lf2H/a8efNcMzQ7AwAAXhcA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oosu8q5LSkpS+/bt9cQTTygtLS3Y+wgAAAAAAIBoD6Wee+45ffrppy6c8mjUqJFuvfVWvf/++3r11VeDvY8AAAAAAACIxuF7vj777DPdcccduuSSS7zrEhISdPnll6tw4cIaP368Bg0aFOz9BAAAAAAAQDRXSm3fvl01a9bM9rLjjz9emzdvDsZ+AQAAAAAAoADLdShlwdPXX3+d7WVTp05V7dq1g7FfAAAAAAAAKMByPXxvwIABuvPOO7Vjxw6ddtppKl++vP755x9NmzZNX331lUaMGJE3ewoAAAAAAIDoDaV69uyp3bt3a8yYMfrmm2+868uWLat7773XXQ4AAAAAAAAENZQyl156qfr27as1a9a4iqkyZcq4YX2FCuV6NCAAAAAAAACi0FGnSDt37nSh1LJly1SuXDmtXbtW6enpwd07AAAAAAAAFEhHVSn14osv6uWXX9a+ffsUExOjpk2bavTo0e7MfK+//rqrnAIAAAAAAACCVik1ceJEPffcc7riiiv0/vvve6uj+vXrp/Xr1+vZZ5/N7U0CAAAAAAAgyuQ6lJowYYIGDRqkG2+8UY0bN/auP+WUU3TTTTdp6tSpwd5HAAAAAAAARHsotXHjRrVt2zbby6zZ+bZt24KxXwAAAAAAACjAch1KVa1aVXPnzs32st9//91dDgAAAAAAAAS10fkFF1zgekoVL15cp556qlu3Z88eff311675ufWaAgAAAAAAAIIaSg0cOFAbNmzQU0895SYzYMAANz/nnHN0zTXX5PYmAQAAAAAAEGUCCqVmz56tJk2aqESJEoqJidFDDz2kK6+8UrNmzdKOHTsUFxenNm3aKDExMe/3GAAAAAAAANHRU+q6667T4sWLvVVRq1atUp06dXTJJZfo2muv1aWXXnrMgdSBAwfUo0cP/fLLL951jzzyiOrXr+83TZw40Xv5559/rtNOO03NmjXTkCFD9M8//xzTPgAAAAAAACCCKqXS0tI0c+ZMValSxVVNrV271lVN5aRatWq52on9+/frlltu0YoVK/zWW/hl63v16uVdV7p0aTdfsGCB7r77bj344INq0KCBHn30UQ0fPtz1tQIAAAAAAEABCKXOOOMMPf/883rhhRfc8L2hQ4cedvslS5YEvAMrV650wVN6enqWyyyUuuqqq1SxYsUsl1nF1FlnnaWePXu65ZEjR6pL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d501dbaQitcFopV9sbZhrb6VHva6qFGjBq8LIIDvEza3ZQ8bzmetRPhcdWxIM/IJ64HQs2dPPfDAA1qwYIH7Vfz111/XgAEDwr1rQEj7IIwZM0YDBw50Z8KwakHPZGdYqlq1qoYPH+56JLzyyivutXLBBRfwDKFAsy/Z9su3ZypVqpSb7G9r8Lxz5049+uij7vTHNrcPUNbcFijIjj/+eJ166qnuPcHOYPzjjz+694U+ffrwukDUsh8sihQponvuuccFtlOnTtVLL72k/v3787oApCN+nzj//PPdj3u23i637SzUtTP54ejFpHt+PkXEsy8SFkp988037jTHV111lS6//PJw7xYQMvYGYP1BsrNs2TL369/dd9/tTtdqX8jtrBodOnTgGUJUufPOO9388ccfd3P7MGWN0C3UrV+/vh588EE3XAMo6FJSUtxw72+//db9uGdnWxoyZIhiYmJ4XSBqeX6gsPeGcuXK6dJLL9Vll13G6wJRyz4bjR8/3hssHen7hPVke+yxx9wZ+axVgr3PWE82HD1CKQAAAAAAAIQcw/cAAAAAAAAQcoRSAAAAAAAACDlCKQAAAAAAAIQcoRQAAAAAAABCjlAKAAAAAAAAIUcoBQAAAAAAgJAjlAIAAAAAAEDIEUoBAAAAAAAg5AilAABA1LnzzjtVv379w079+/fXRx995P7esGFDWPf366+/Vt++fQ+7je2vTaF04MABdevWTfPmzQvp/QIAgIIhJj09PT3cOwEAABBKf/zxh/755x/v8pgxY7R48WI9//zz3nWlS5dWuXLl3LaNGjVS0aJFw/Ik/f333zrnnHM0duxYNW7cOMftPIHUhAkTQrh30pQpU/Tkk0/qk08+UfHixUN63wAAIH8rHO4dAAAACLVatWq5ycPCJwudmjdvnmVbuyycXnzxRTVt2vSwgVQ4nXbaaRo9erTeeecdXXHFFeHeHQAAkI8wfA8AACAHmYfv2bC/q666Su+9954LYywsuuSSS7RmzRpNmzbNVTQ1a9ZMF154oZYsWeJ3W7/99pv69evnLm/btq3uuOMOv2qt7NjlH374oXr06OG3fuPGjRo6dKhatWqljh07aty4cVmuu2/fPj399NM644wzdOKJJ6ply5YuNPLs1/fff+8e208//ZRlP239nDlz3PKbb77phug1adJEnTt31gMPPKBdu3b5Xccet+2DDecDAAAIFJVSAAAAuTB37lz99ddfLqDav3+/C2kGDRqkmJgY3XDDDSpRooTuv/9+3Xrrrfriiy/cdX799VcXCJ100kmuqig5OVnPPvusBgwY4EKnnIa9ffPNNzp06JC6dOniXbdnzx4XbhUuXFgPP/ywChUqpP/+979umGGLFi28291+++0uYLr55ptdVdi6devcfd5yyy1uvyxgqlSpkht216lTJ+/1Pv74Y9WpU8cFXp9//rkbmmcBmgVVq1ev1hNPPKG9e/e6uYeFVs8884xmz57td1sAAACHQygFAACQC7t373bBUt26dd2yBTHvvvuu3njjDbVv396tswDIQpudO3eqTJkyrmLpuOOO08svv6zY2Fi3jVVMnX322Zo0aZIuvfTSbO9r1qxZ7n5KlSrlXTd58mRXKWWBUb169by3dfrpp3u3sYol28977rlH3bt3d+usOssqnB5//HFt27ZNFStWVK9evVwPKtvW7sOqq7766isXsnkeW40aNdz+Wfhlt1GyZEkXqvmqXbu24uPjNXPmTEIpAAAQMIbvAQAA5IKFL55AylSoUMEbDHkkJCS4uYVSVlU0f/58nXLKKbLzy1jlk001a9Z0t/Pzzz/neF/r1693oZAvq36yyidPIGWqVq3q1w/L+mO99tprLpDasmWLC7csOLMhhsYzzO788893lVfffvutW7a5Lffs2dMtW2WXDU3s3bu3awK/cOFCN1Qvu7P8VatWLexnKQQAAPkLlVIAAAC5YGfly45VEGXHgqm0tDR39jybMitWrFiO92WVTTYc0JdVKZUtWzbLtlb5ZBVQHj/++KMee+wxN+TOqqAaNGjg3UfPyZetwsmqn2zIngVRNu/QoYMqV67sLrdQy/b97bffdmcofO6551S9enU3NNFTgeVh+5m51xQAAMDhEEoBAADkIQuErN/U5Zdf7obrZZY5dPJl4VNKSkqWdTY8MLMdO3Z4/7b+UkOGDHHN2G3IoFVl2T689dZbLqzyZdVSd911l1atWuWG3z311FN+l1uTdZtsP6wpugVrt912m+s55QmvPOGbVUsBAAAEiuF7AAAAeVxZ1ahRI1exZGew80wnnHCCqzz65ZdfcryuhTybNm3yW2dD6myYnA2l8z1L37x587zLv//+u2vCbr2hbKifBVLGE0h5KqXMmWee6YIxa9huAZoFWR433XSTC7dMXFyczjrrLF133XVu+KE1e/ew27NhglZFBQAAEChCKQAAgDxmZ8CzKiM7890PP/ygqVOn6uqrr3aVSY0bN87xeh07dtSKFSv8qqXOO+88JSYmaujQoW643ZQpUzRw4EA3zM7DbtPOzmdnzrOeVdZL6vrrr9f333/vLre+UR4WSFkFlzU1t7n1o/INwOz2rWm77evXX3/tzuBnZ+ez4YAey5cvd/toZ/QDAAAIFKEUAABAHuvUqZNrPL5582bdcMMNuv32291Z+MaNG+fXoDyzLl26uHDJd8idhUZvvvmm2rRpo0cffdQNvbOz/tm2HtYrys74Z9VLgwcP1n333efW25n2rGrKmqX7OvXUU93cGpr7uuSSS9wZ/KZPn65rr73W3Y41Z3/99ddVpEgR73Z2ufW0atmyZRCOFgAAiBYx6b712wAAAIgoDz/8sKuWGj9+fJ7dx/333+/OEGiVV7llHyVtCGDfvn1d3ywAAIBAUSkFAAAQwaxCaenSpVqwYEHQb9uCLusl9f7777vhhEfjm2++UWpqqquqAgAAyA1CKQAAgAhmw+IsOHrssceCfts2jO+TTz7RZZdd5s6wl1sHDhzQM888o5EjR6p48eJB3z8AAFCwMXwPAAAAAAAAIUelFAAAAAAAAEKOUAoAAAAAAAAhRygFAAAAAACAkCOUAgAAAAAAQMgRSgEAAAAAACDkCKUAAAAAAAAQcoRSAAAAAAAACDlCKQAAAAAAAIQcoRQAAAAAAAAUav8P9vtk5s178bsAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fitted_model = result.fitted_model\n", "\n", "fig, ax = plt.subplots(figsize=(12, 6))\n", "\n", "ax.plot(times, observed_I, 'ro', label='Observed I', markersize=4, alpha=0.7)\n", "\n", "if fitted_model is not None and fitted_model.traces:\n", " ax.plot(fitted_model.traces['time'], fitted_model.traces['I'], \n", " 'g--', label='Fitted', linewidth=2)\n", "\n", "ax.set_xlabel('Time (days)', fontsize=12)\n", "ax.set_ylabel('Number of Infected', fontsize=12)\n", "ax.set_title('Model Fitting Results', fontsize=14)\n", "ax.legend(fontsize=11)\n", "plt.tight_layout()\n", "plt.show()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.2" } }, "nbformat": 4, "nbformat_minor": 5 }