diff --git a/02_activities/assignments/a1_sampling_and_reproducibility.ipynb b/02_activities/assignments/a1_sampling_and_reproducibility.ipynb index 11852458..f3ebad6a 100644 --- a/02_activities/assignments/a1_sampling_and_reproducibility.ipynb +++ b/02_activities/assignments/a1_sampling_and_reproducibility.ipynb @@ -16,7 +16,12 @@ "cell_type": "markdown", "id": "4ea73db3", "metadata": {}, - "source": [] + "source": [ + "1. Sampling occurs at three stages: infection, primary tracing, and secondary tracing. \n", + "2. At the infection stage: simple random sampling was used with 100 people from 1000 attendees. The function used is [np.random.choice, replace=false]. The underlying distribution is hypergeometric.\n", + "3. At the primary tracing stage: among infected people, draw a uniform random number and compare to trace_success =0.2. The function used is np.random.rand(k), TRACE_SUCCESS. The sampling frame is the infected people and the sample size is random follows a binomial distribution. The underlying distribution is Bernoulli.\n", + "4. At the secondary tracing stage: Count tranced cases in each event (wedding or brunch). If an event type has 2 or more cases, marked all infected in that event type as traced. Function used is value_counts () in each event. The sample frame is infected individiuals within each event types and the sample size depends on how many infected people exist in an event that meets the threshold. If at least two attendees in one event were traced in primary, then all infected wedding attendees become traced. The underlying distribution is binomial." + ] }, { "cell_type": "markdown", @@ -30,7 +35,10 @@ "cell_type": "markdown", "id": "4cf5d993", "metadata": {}, - "source": [] + "source": [ + "1. Change the repetition to 10: The graph appears sparse. There is only one bar for the proportion of infection from weddings. Each execution changes drastically. \n", + "2. Change the repetiiton to 100: The graph is close to th original 1000. Compare to the repetitions to 10, the graphs are more stable accrss each exectuions. " + ] }, { "cell_type": "markdown", @@ -44,7 +52,9 @@ "cell_type": "markdown", "id": "77613cc3", "metadata": {}, - "source": [] + "source": [ + "I added a function: np.random.seed(42). This gave a fixed starting point to make sure that each execuion produce the same output. " + ] }, { "cell_type": "markdown", @@ -59,7 +69,18 @@ "execution_count": null, "id": "ab8587a0", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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XwCIIHXkkUfmE404Ufv73/+e78cJ4+jRo/NyMehZQ0S5IiRHX+uofS2XMcLNY489lmvf4sT0xhtvTHfddVd+LspYWXNbKU4Gowl5bLNvfOMbc33/CNZx4h8nxnHSt95666X7778/B+cIc3WbhD766KPpzjvvTIccckg+kbvkkkvySVdcHIkLG7E/Xn/99XTzzTfn10Y4rGz+GuWPk+x4z2hiHX0eY11xIhgXG8pin/z4xz/Oy0ataOzD559/Pgf8H/7wh3n/x4ldBJZyGWO7zK+42BK12xGoIiDF36+99lq+0PC9730vH18ff/xxuuqqq3IIiOfKTaXjeI3jI7Z/nHjGMRFN+uN4iJYFEV7nJPp6xvrPOuus3Bw7ugjEyfk555xT62T6tttuy10Goh/vww8/nINqQ0Rgj4ASISK+F/Fet99+e15nXOSJ8laKUBPlj+M6vivxHYz9G/2y56VWuHzhIY6TEN+RIUOGpB122CF/xjh24/jYYost8r6uvIgSNYexXDwXFwPigkiIYzaOlfid+MlPfpKX+89//pNbe8TFpfDb3/42/frXv87bN5b55JNP0u9///v8HYn3qa8WNj5fdD+IYz32dRwHZXEsxLER+zjEsRvHc3w3fvrTn6b+/fvni4JxXMZ3IZYvi/ePMBPH8GabbZZ/axq6/8piO0WoqxRhsBo19XM6ZuM7H/s4tn906YhlQmyfEMdV7LsIsXEhKS7GXHrppXmflH/7ivgtiObdcbxE/+r4/Y3vRRwPEZDjM9S9eNeQ72Vd8XyE1fh9O/zww3NobarvZUMV/Z2ZOnVqXn98F+Izxv8P4/8Z8f/DKHcck0CVlADqcd1110WVaumZZ56peWzIkCH5sTPPPLPmsS+++KK04IILljp06FC65ZZbah7/73//m5c9+eSTZ1nngAEDSlOnTq15/Nxzz82P//Wvf615bNKkSbOU6aCDDip17969NHny5Hx/+vTppRVXXLHUt2/fXI5KM2fOrPn70EMPzetviLFjx5a6dOlS2n777UszZsyoefzSSy/N67j22mtrHovPFo998sknc1zniy++mJc78sgjG1SGu+++Oy9/xhln1Hr8u9/9bt7Ob775Zs1jsVyUt/Kx8vv9/ve/r3nsvPPOy4+98847s7xffdt6hx12KK200ko197/88stSjx49Sptssknp66+/nu22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njIstlND5rpviChb7N/4jsZxGS2OIuTH9HFxfMZxGAOsNeZ72RT7sSm/M9HqI5aPMkWNeATw+H9n/D8vfqeAKqr28OlA65oyLKZaqau+6WdCTBcT08bUXefDDz9c+ulPf1pabLHF8vQrgwcPrjVVTIgpfb75zW/m6ch69+5dOu6442qmC6o7Pcujjz5a2m677fI0NlG+ddZZp9Z0WTG12OGHH15acskl8/RIDfnpiynCVl999VLnzp1LSy+9dOnggw+eZVqyhk4ZVimmp4npiOIzxbpjGwwcOLB0ww031JoCK6Zv+vnPf16z3Kqrrpqn/aqckifE+8eUaPVt+9hflU4//fTScsstl6fhqZw+7J577snbrFu3bnkKqXPOOadmqq26U4zFsptttlneL4ssskhp4403Lt188801z0+YMCF/vph6Kl7f0OnD5jRlWH3T38SUYcccc0xp2WWXzWXZfPPNS0888UQ+FuNWKaYbO+mkk/L0crEtl1lmmTz92ltvvTXXKcPq7tvyMVy5XSZOnJj3weKLL56P59122600cuTIvNzZZ58918/+8ccfl/bff//SEksskad/W3vttWeZMqo8BVEcA3U1ZGqrOW3L+paNKeNimrA4JlZeeeU8Bdqzzz4719+C8vctyhnfn/g88b2L6ZnqTs30l7/8pbTFFlvk9cQtlo/tGNuu8n3qO4bie9CnT596p9arnOIpjuX4bYqp5OK7FtMVnnrqqaWvvvqqZrmY9iqma4opp6Icu+yyS+n9999v1JRh9e2XSvV9jji29txzzzwNYpQtpkR85ZVX5nvKsIYcs7P7zQ5/+MMf8naK71X8psbxGL+/Mc1cU/wWzG5atAceeCB/j8vri/3w2muv1VqmMZ+xrmnTppWuvvrq/P2MssQxEdt+/fXXz/tvypQpjf5eNmY/Nsd35u23387TqcV3Nr678Zu09dZb520LVFeH+E81Qz/QfsQosVEz+cwzz+RaJmiroqYwas1uuummNHjw4GoXBwCoIn26AWA+RFPYuqIJanR/qBwIEABon/TpBoD5cO655+Z+n9H/MqbVikGZ4hb9LKs9NRUAUH1CNwDMhxicaejQoXnU5xiILqZei8Gf6k5jBQC0T/p0AwAAQEH06QYAAICCCN0AAABQkFbdp3vmzJlp9OjRqUePHqlDhw7VLg4AAADtRKlUSuPHj0+9e/fOs5a0ydAdgdvIsAAAAFTL+++/n5Zffvm2Gbqjhrv8IRdZZJFqFwcAAIB2Yty4cbkSuJxL22ToLjcpj8AtdAMAANDc5tbV2UBqAAAAUBChGwAAAAoidAMAAEBBWnWf7oaaMWNGmjZtWrWLAe1O586dU8eOHatdDAAAqJpObX3etI8++ih9+eWX1S4KtFs9e/ZMyyyzzFwHmAAAgLaoTYfucuBeaqmlUvfu3Z30QzNf9Jo0aVIaO3Zsvr/ssstWu0gAANDsOrXlJuXlwN2rV69qFwfapQUXXDD/G8E7vouamgMA0N602YHUyn24o4YbqJ7yd9C4CgAAtEdtNnSXaVIO1eU7CABAe9bmQzcAAABUS5vt0z0n7733Xvr000+b5b2WWGKJ9I1vfKNZBo3bZ5990uOPP56naSpqxPbrr78+HXXUUVUdET4G6DrooIPSHXfckb744ov0/PPPp/XWWy+1Bw3Z/qecckq6++670wsvvJDv77fffnn5eAwAAGhendpj4O7Xr3+aPHlSs7xft27d08iRIxoVvOclJF144YVpzJgxOWgtuuiiqSmssMIKOeDFrWyvvfZKgwYNStV033335fD50EMPpZVWWilf2KimE044Ie+r//73vzWPxd/9+/dPQ4YMyWUti7/jgkHs3/IgY0W7+OKL84UKAACg+bW70B013BG4+/e/KXXv3r/Q95o0aUQaMeJH+T2Lru1+66230oABA9Kqq65a6PtEUGyusDinzxrTT2222WazXWbq1KmpS5cuzVKerbfeOp1zzjm5tUHMRx2GDRuW+vTpky8MVIrHv/nNbzbrNmyqizAAAEDjtds+3RG4e/TYoNBbU4X6rbbaKh1xxBHpuOOOS4svvngOdtGEuLJG+i9/+Uu68cYb86BVUVMeojb1Jz/5SVpyySXTIosskrbZZpv04osv1lr33/72t7TRRhulbt265Rrj3XffveY933333fTzn/88r7M8GFbU1Pbs2bPWOq644oq08sor55Dbr1+/9Kc//anW8/HaP/7xj3ndMZJ1XBi45557ap6PJuKDBw/O5YwwGs9fd9119W6L+GyHH354brEQ643PXi7vYYcdlmvl43PssMMO+fGHH344bbzxxqlr1645qEet9PTp02tt21hfvG6xxRZLSy+9dLr66qvTxIkT0/7775969OiRVllllXTvvffOdv9sscUWuUl/ZcCOvw899ND0+eefp1GjRtV6PEJ6mDJlSjr22GPTcsstlxZaaKG0ySabzBLSY3vHBZvYbrH9Pvvss1ne/+yzz87ljrIecMABafLkybNss912263Bx1O5pj4+VxwXa6yxRnrggQfy9i63voiLGrG9Y5vGMn379k1nnXXWbLcRAAC0V+02dLc2N9xwQw5mTz31VDr33HPTaaedloYOHZqfe+aZZ9KOO+6Yvv/97+cm5tGcOHzve9/L8yNHYBw+fHjaYIMN0sCBA3MQDP/4xz9ykIvm4tEv+sEHH8wBNdx5551p+eWXz+8T64xbfe6666505JFHpmOOOSa98soruel0hNWo0a106qmn5vK99NJL+f0iZJfL8etf/zq99tpruZwjRozIIX52Tcbjs0WZomxRpvjsldsogv9jjz2WrrzyyvThhx/m94qLCnGxIdZ7zTXXpDPOOGOWbRvv9/TTT+cAfvDBB+dtFzXpzz33XNp+++1zf/lJk+rvkhD7Jd6j8jNHeI5tvfnmm9c8/vbbb+eLBeXQHaH1iSeeSLfcckveLvGesR/feOON/Hzs6wjRsVx0G4jX1S37bbfdlgPzmWeemZ599tkcgi+//PJ6y9nQ4ynmuI+QHkE/nv/DH/6QTjrppFqvv+SSS/KFk3j/kSNHpj//+c81F0AAAIAKpVbsq6++io6q+d+6vv7669Jrr72W/600fPjw/JoBA4aXttqqVOgt3iPeK96zMYYMGVLadddda+5vueWWpS222KLWMhtttFHp+OOPr7kfy8fryv7zn/+UFllkkdLkyZNrvW7llVcuXXXVVfnvTTfdtDR48ODZlqNv376lCy+8sNZj1113XWnRRRetub/ZZpuVDjzwwFrLfO973ysNGjSo5n5sg1/96lc19ydMmJAfu/fee/P9XXbZpbT//vuXGirKFGWrFNto/fXXr/XYL3/5y1K/fv1KM2fOrHnssssuKy288MKlGTNm1Lttp0+fXlpooYVK++yzT81jY8aMyeV94oknZlumk046qbTaaqvlv1999dW87WNdZ555ZmnffffNj19zzTWlbt265X3y7rvvljp27Fj68MMPa61n4MCBpRNPPDH/vffee9fajmGvvfaqtf1jHx5yyCG1ltlkk01K66677jwfT7FfOnXqlD932dChQ/M2uOuuu/L9ww8/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suaxhRdeuObvUqmUZsyYkTp1atu7ceutt0533XVXrceGDRuW+vTpkx566KFaoTvuDxkypFnLZ4o7AABgdtptn+4I3Bv06FHobV5C/TLLLFNzW3TRRXPNd/n+f//739SjR4907733pgEDBqSuXbumRx99NNfs7rrrrmnppZfOoXyjjTZKDzzwQK31TpkyJR1//PE5qMbrVllllXTNNdfUPP/KK6+knXbaKb8+1rPPPvvUaoI/ceLEtO++++bnl1122XT++efP8XNcf/316dRTT00vvvhi/gxxi8fKrQ2ivLGuRRZZJH3/+99PH3/88RxDd1x4+Oijj2oee/jhh9MJJ5yQQ3bZO++8k9599928fHj//ffzunv27JkWX3zx/J6jRo2qWT4uWBx99NH5+V69eqXjjjsuX8io1JDPHc3LK5vYx2f94x//mHbffffUvXv3tOqqq6Z77rmn1mvifjzerVu3XN4bbrghvy6atof4HLvssktabLHFci36mmuumf75z3/OcZsDAAAtT7sN3a1ZhM2zzz47jRgxIq2zzjppwoQJadCgQenBBx9Mzz//fNpxxx1zYItwWxbB8eabb06XXHJJft1VV11VU2seQW+bbbZJ66+/fnr22WfTfffdl0NwBNayX/ziFzno/vWvf03/+te/cth97rnnZlvGvfbaKx1zzDE5LEbtfdzisZkzZ+bw+/nnn+f1DR06NL399tv5udnZfPPNU+fOnXPtdnjttdfS119/nQ444ID02Wef5bAd4vkIsZtuummaNm1a2mGHHfJFimhq/thjj+XPG9tm6tSpefkI0HEh4Nprr80XL6JMdWvUG/u5y+KCQ2y/l156Ke+bwYMH5/WHKO93v/vdtNtuu+WLEgcddFA66aSTar3+0EMPzRdKHnnkkfTyyy+nc845p1YrBwAAoHVo2+2S26jTTjstbbfddjX3oxZ33XXXrbl/+umn5/AYtamHHXZYev3119Ntt92WA+62226bl1lppZVqlr/00ktz4D7zzDNrHosgGrXi8drevXvnWvGbbropDRw4MD8fNbPLL7/8bMu44IIL5pAYTd+jlr4syhAhMoJnrD/ceOONOZxH3+iopa8rano33njjHHj33nvv/O8WW2yRa+w322yzfH/FFVfM/0bgjsejrBHwo8a53E8++n9HrXYst/322+fa6RNPPDHtscce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AAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAIC2GLqvuOKKtM4666RFFlkk3zbddNN07733VrNIAAAA0DZC9/LLL5/OPvvsNHz48PTss8+mbbbZJu26667p1VdfrWaxAAAAoEl0SlW0yy671Lr/29/+Ntd+P/nkk2nNNdesWrkAAACg1YfuSjNmzEi33357mjhxYm5mXp8pU6bkW9m4ceOasYQAAHM3efJ7adq0T6tdDNqwr79+5///d2QaP36hRr120qQRBZUKaLGh++WXX84he/LkyWnhhRdOd911V1pjjTXqXfass85Kp556arOXEQCgoYH72af7pekzJ1e7KLQDo0YdmEaNmrfXlkpTm7o4QEsN3f369UsvvPBC+uqrr9Idd9yRhgwZkh5++OF6g/eJJ56Yjj766Fo13X369GnmEgMA1C9quCNwn9G9f1pxge7VLg5t1LTpn6XJk0elbt36pc6dFm7Uax+b/lm6fPKoVJo5vbDyAS0sdHfp0iWtssoq+e8BAwakZ555Jl188cXpqquummXZrl275hsAQEsWgbt/px7VLgZt1NSZk9KklFL3BbqnLo08zt6ZEa8EWvzo5W+//XYqysyZM2v12wYAAIB2FbqjZnrrrbdON910U+6LPa+iufgjjzySRo0alft2x/2HHnooDR48eJ7XCQAAAK06dD/33HNpnXXWyf2rl1lmmXTQQQelp59+utHrGTt2bNp3331zv+6BAwfmpuX3339/2m677ealWAAAAND6Q/d6662X+12PHj06XXvttWnMmDFpiy22SGuttVa64IIL0ieffNKg9VxzzTW5ljuak0cAf+CBBwRuAAAA2nfoLuvUqVPaY4898vza55xzTnrzzTfTsccem0cUjxrsCOMAAADQXs1X6H722WfTIYcckpZddtlcwx2B+6233kpDhw7NteC77rpr05UUAAAA2sOUYRGwr7vuujRy5Mg0aNCgdOONN+Z/F1jg/zL8iiuumK6//vq0wgorNHV5AQAAoG2H7iuuuCL9+Mc/Tvvtt1+u5a7PUkstlftsAwAAQHs1T6H7jTfemOsyXbp0SUOGDJmX1QMAAED77dMdTctj8LS64rEbbrihKcoFAAAA7TN0n3XWWWmJJZaot0n5mWee2RTlAgAAgPYZut977708WFpdffv2zc8BAAAA8xi6o0b7pZdemuXxF198MfXq1aspygUAAADtM3Tvvffe6YgjjkjDhg1LM2bMyLd///vf6cgjj0w/+MEPmr6UAAAA0F5GLz/99NPTqFGj0sCBA1OnTv+3ipkzZ6Z9991Xn24AAACYn9Ad04HdeuutOXxHk/IFF1wwrb322rlPNwAAADAfobtstdVWyzcAAACgiUJ39OG+/vrr04MPPpjGjh2bm5ZXiv7dAAAA0N7NU+iOAdMidO+8885prbXWSh06dGj6kgEAAEB7DN233HJLuu2229KgQYOavkQAAADQnqcMi4HUVllllaYvDQAAALT30H3MMcekiy++OJVKpaYvEQAAALTn5uWPPvpoGjZsWLr33nvTmmuumTp37lzr+TvvvLOpygcAAADtK3T37Nkz7b777k1fGgAAAGjvofu6665r+pIAAABAGzNPfbrD9OnT0wMPPJCuuuqqNH78+PzY6NGj04QJE5qyfAAAANC+arrffffdtOOOO6b33nsvTZkyJW233XapR48e6Zxzzsn3r7zyyqYvKQAAALSHmu4jjzwybbjhhumLL75ICy64YM3j0c/7wQcfbMryAQAAQPuq6f7Pf/6THn/88Txfd6UVVlghffjhh01VNgAAAGh/Nd0zZ85MM2bMmOXxDz74IDczBwAAAOYxdG+//fbpoosuqrnfoUOHPIDaySefnAYNGtSU5QMAAID21bz8/PPPTzvssENaY4010uTJk9MPf/jD9MYbb6Qlllgi3XzzzU1fSgAAAGgvoXv55ZdPL774YrrlllvSSy+9lGu5DzjggDR48OBaA6sBAABAe9Zpnl/YqVP60Y9+1LSlAQAAgPYeum+88cY5Pr/vvvvOa3kAAACgfYfumKe70rRp09KkSZPyFGLdu3cXugEAAGBeRy//4osvat2iT/fIkSPTFltsYSA1AAAAmJ/QXZ9VV101nX322bPUggMAAEB71WShuzy42ujRo5tylQAAANC++nTfc889te6XSqU0ZsyYdOmll6bNN9+8qcoGAAAA7S9077bbbrXud+jQIS255JJpm222Seeff35TlQ0AAADaX+ieOXNm05cEAAAA2pgm7dMNAAAAzGdN99FHH93gZS+44IJ5eQsAAABon6H7+eefz7dp06alfv365cdef/311LFjx7TBBhvU6usNAAAA7dU8he5ddtkl9ejRI91www1pscUWy4998cUXaf/990/f+ta30jHHHNPU5QQAAID20ac7Rig/66yzagJ3iL/POOMMo5cDAADA/ITucePGpU8++WSWx+Ox8ePHz8sqAQAAoM2Zp9C9++6756bkd955Z/rggw/y7S9/+Us64IAD0h577NH0pQQAAID20qf7yiuvTMcee2z64Q9/mAdTyyvq1CmH7vPOO6+pywgAAADtJ3R37949XX755Tlgv/XWW/mxlVdeOS200EJNXT4AAABoX83Ly8aMGZNvq666ag7cpVKp6UoGAAAA7TF0f/bZZ2ngwIFptdVWS4MGDcrBO0TzctOFAQAAwHyE7p///Oepc+fO6b333stNzcv22muvdN99983LKgEAAKDNmac+3f/617/S/fffn5Zffvlaj0cz83fffbepygYAAADtr6Z74sSJtWq4yz7//PPUtWvXpigXAAAAtM/Q/a1vfSvdeOONNfc7dOiQZs6cmc4999y09dZbN2X5AAAAoH01L49wHQOpPfvss2nq1KnpuOOOS6+++mqu6X7ssceavpQAAADQXmq611prrfT666+nLbbYIu266665ufkee+yRnn/++TxfNwAAADAPNd3Tpk1LO+64Y7ryyivTSSedVEypAAAAoD3WdMdUYS+99FIxpQEAAID23rz8Rz/6UbrmmmuavjQAAADQ3gdSmz59err22mvTAw88kAYMGJAWWmihWs9fcMEFTVU+AAAAaB+h++23304rrLBCeuWVV9IGG2yQH4sB1SrF9GEAAABAI0P3qquumsaMGZOGDRuW7++1117pkksuSUsvvXRR5QMAAID20ae7VCrVun/vvffm6cIAAACAJhpIbXYhHAAAAJjH0B39tev22daHGwAAAJqgT3fUbO+3336pa9eu+f7kyZPTz372s1lGL7/zzjsbs1oAAABokxoVuocMGTLLfN0AAABAE4Tu6667rjGLAwAAQLs2XwOpAQAAALMndAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAWwzdZ511Vtpoo41Sjx490lJLLZV22223NHLkyGoWCQAAANpG6H744YfToYcemp588sk0dOjQNG3atLT99tuniRMnVrNYAAAA0CQ6pSq67777at2//vrrc4338OHD07e//e2qlQsAAADaXJ/ur776Kv+7+OKLV7soAAAA0LpruivNnDkzHXXUUWnzzTdPa621Vr3LTJkyJd/Kxo0b14wlBAAAgFZa0x19u1955ZV0yy23zHHgtUUXXbTm1qdPn2YtIwAAALS60H3YYYelv//972nYsGFp+eWXn+1yJ554Ym6CXr69//77zVpOAAAAaDXNy0ulUjr88MPTXXfdlR566KG04oorznH5rl275hsAAAC0Bp2q3aT8f//3f9Nf//rXPFf3Rx99lB+PpuMLLrhgNYsGAAAArbt5+RVXXJGbiW+11VZp2WWXrbndeuut1SwWAAAAtI3m5QAAANBWtYiB1AAAAKAtEroBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAA0BZD9yOPPJJ22WWX1Lt379ShQ4d09913V7M4AAAA0HZC98SJE9O6666bLrvssmoWAwAAAArRKVXRTjvtlG8AAADQFunTDQAAAG2xpruxpkyZkm9l48aNS63Je++9lz799NNqFwNma4kllkjf+MY3ql0Mmklr/E0aM2ZM+vLLL6tdDFq4d955J/87adKIZn/varwnAC1bqwrdZ511Vjr11FNTaz257d+vX5o0eXK1iwKz1b1btzRi5EjBux2I36R+/fqnyZMnpdbWPGtmtQtBqzFixI+q9t6l0tSqvTcALUurCt0nnnhiOvroo2vVdPfp0ye1BlGbFIH7pv79U//u3atdHJjFiEmT0o9GjMjHqtDd9sV+jsDdv/9NqXv3/qk1iBrECFGndV0hrbjAgtUuDi3Y9BlfpSlTR6du3fqlzp0Wbtb3fmz6Z+nyyaNSaeb0Zn1fAFquVhW6u3btmm+tWQTuDXr0qHYxALII3D16bJBak5U790r9O/kdZfamTk1p0tTRqfsC3VOXZj5W3pnRulqPANDGQ/eECRPSm2++WasP1gsvvJAWX3xxNW0AAAC0elUN3c8++2zaeuuta+6Xm44PGTIkXX/99VUsGQAAALTy0L3VVlulUqlUzSIAAABAYczTDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAADQlkP3ZZddllZYYYXUrVu3tMkmm6Snn3662kUCAACA1h+6b7311nT00Uenk08+OT333HNp3XXXTTvssEMaO3ZstYsGAAAArTt0X3DBBenAAw9M+++/f1pjjTXSlVdembp3756uvfbaahcNAAAAWm/onjp1aho+fHjadttt/1+BFlgg33/iiSeqWTQAAACYb51SFX366adpxowZaemll671eNz/73//O8vyU6ZMybeyr776Kv87bty41NJNmDAh/zt8/Pg0YcaMahcHZjFy0qT8b1wIKx+vtF0jR47M/37yyZ1p/PjhqTWYPPnd/O+rUz9JE6ePr3ZxaMGmzxiX4myh67RPU6eZE5v1vd+e/n/nJq9O/yJ9XfL/e1reMe4YpTV4e8b/5btJkya16KxXLlupVJrjch1Kc1uiQKNHj07LLbdcevzxx9Omm25a8/hxxx2XHn744fTUU0/VWv6UU05Jp556ahVKCgAAALN6//330/LLL59aZE33EksskTp27Jg+/vjjWo/H/WWWWWaW5U888cQ86FrZzJkz0+eff5569eqVOnTokFqyuArSp0+fvEMWWWSRaheHdspxSEvhWKSlcCzSUjgWaSkciw0X9dfjx49PvXv3nuNyVQ3dXbp0SQMGDEgPPvhg2m233WqCdNw/7LDDZlm+a9eu+VapZ8+eqTWJA9fBS7U5DmkpHIu0FI5FWgrHIi2FY7FhFl100bkuU9XQHaLmesiQIWnDDTdMG2+8cbrooovSxIkT82jmAAAA0JpVPXTvtdde6ZNPPkm/+c1v0kcffZTWW2+9dN99980yuBoAAAC0NlUP3SGaktfXnLwtiWbxJ5988izN46E5OQ5pKRyLtBSORVoKxyIthWOx6VV19HIAAABoyxaodgEAAACgrRK6AQAAoCBCNwAAABRE6J5Hl112WVphhRVSt27d0iabbJKefvrpOS5/++23p9VXXz0vv/baa6d//vOftZ6PrvUxgvuyyy6bFlxwwbTtttumN954o+BPQVvQ1Mfifvvtlzp06FDrtuOOOxb8KWhvx+Krr76a9txzz7x8HGMxXeT8rhOKOhZPOeWUWX4X43cUmvJYvPrqq9O3vvWttNhii+VbnAvWXd75Ii3lWHS+2DhC9zy49dZb8/ziMarfc889l9Zdd920ww47pLFjx9a7/OOPP5723nvvdMABB6Tnn38+7bbbbvn2yiuv1Cxz7rnnpksuuSRdeeWV6amnnkoLLbRQXufkyZOb8ZPR2hRxLIb40RwzZkzN7eabb26mT0R7ORYnTZqUVlpppXT22WenZZZZpknWCUUdi2HNNdes9bv46KOPFvgpaI/H4kMPPZT/Hz1s2LD0xBNPpD59+qTtt98+ffjhhzXLOF+kpRyLwfliI8To5TTOxhtvXDr00ENr7s+YMaPUu3fv0llnnVXv8t///vdLO++8c63HNtlkk9JBBx2U/545c2ZpmWWWKZ133nk1z3/55Zelrl27lm6++ebCPgetX1Mfi2HIkCGlXXfdtcBS0xY19lis1Ldv39KFF17YpOuk/SriWDz55JNL6667bpOXlbZtfn/Dpk+fXurRo0fphhtuyPedL9JSjsXgfLFx1HQ30tSpU9Pw4cNzM4uyBRZYIN+PK0H1iccrlw9xdam8/DvvvJM++uijWsssuuiiuenH7NYJRRyLlVc4l1pqqdSvX7908MEHp88++6ygT0F7PRarsU7aviKPm2jC27t371wrPnjw4PTee+81QYlpq5riWIxWGNOmTUuLL754vu98kZZyLJY5X2w4obuRPv300zRjxoy09NJL13o87scPYX3i8TktX/63MeuEIo7FclOhG2+8MT344IPpnHPOSQ8//HDaaaed8ntBUx2L1VgnbV9Rx02Emuuvvz7dd9996YorrsjhJ/o7jh8/vglKTVvUFMfi8ccfny/0lMOS80VayrEYnC82TqdGLg+0cT/4wQ9q/o6B1tZZZ5208sor56uZAwcOrGrZAKohTiTL4jcxQnjfvn3TbbfdlsfIgKYWYwzccsst+f+9MfAVtLRj0fli46jpbqQlllgidezYMX388ce1Ho/7sxuAJR6f0/LlfxuzTijiWKxPNKWM93rzzTebqOS0NfNyLFZjnbR9zXXc9OzZM6222mp+FynkWPzd736Xg86//vWvHGTKnC/SUo7F+jhfnDOhu5G6dOmSBgwYkJtSlM2cOTPf33TTTet9TTxeuXwYOnRozfIrrrhiPugrlxk3blwelXJ264QijsX6fPDBB7mPTkxPAk11LFZjnbR9zXXcTJgwIb311lt+F2nyYzFGJz/99NNzV4YNN9yw1nPOF2kpx2J9nC/ORSMHXqNUKt1yyy15pMjrr7++9Nprr5V++tOflnr27Fn66KOP8vP77LNP6YQTTqhZ/rHHHit16tSp9Lvf/a40YsSIPApq586dSy+//HLNMmeffXZex1//+tfSSy+9lEcDXHHFFUtff/11VT4j7fNYHD9+fOnYY48tPfHEE6V33nmn9MADD5Q22GCD0qqrrlqaPHly1T4nbe9YnDJlSun555/Pt2WXXTYfd/H3G2+80eB1QnMdi8ccc0zpoYceyr+L8Tu67bbblpZYYonS2LFjq/IZaZvHYpwLdunSpXTHHXeUxowZU3OL/zdXLuN8kWofi84XG0/onke///3vS9/4xjfyARnD8D/55JM1z2255ZZ5GP1Kt912W2m11VbLy6+55pqlf/zjH7Wej2kgfv3rX5eWXnrp/KUYOHBgaeTIkc32eWi9mvJYnDRpUmn77bcvLbnkkjmMx/Q5Bx54oJBDkx+L8T/puO5b9xbLNXSd0FzH4l577ZUDeaxvueWWy/fffPPNZv9ctO1jMf6fW9+xGBfIy5wv0hKOReeLjdch/jO32nAAAACg8fTpBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGgDagQ4cO6e677652MdJHH32Utttuu7TQQgulnj17Vrs4AFB1QjcA7dZ+++2Xw2rcunTpklZZZZV02mmnpenTp6eW6pRTTknrrbfeLI+PGTMm7bTTTqnaLrzwwlyWF154Ib3++uvVLg4AVF2nahcAAKppxx13TNddd12aMmVK+uc//5kOPfTQ1Llz53TiiSfOsuzUqVNzOK+GUqmUZsyYMdvnl1lmmdQSvPXWW2nAgAFp1VVXrXZRAKBFUNMNQLvWtWvXHFj79u2bDj744LTtttume+65p6YmfLfddku//e1vU+/evVO/fv3y4y+//HLaZptt0oILLph69eqVfvrTn6YJEybUrLP8ulNPPTUtueSSaZFFFkk/+9nPcmgvi5B/xBFHpKWWWip169YtbbHFFumZZ56pef6hhx7KNfD33ntvDrFRzptuuimv88UXX6ypob/++uvrbV7e0DL+7ne/S8suu2xeJi44TJs2bY7b64orrkgrr7xyvvgQ2+NPf/pTzXMrrLBC+stf/pJuvPHGXJ54j9m59tpr05prrpk/V7z/YYcdVvPcBRdckNZee+3cRL1Pnz7pkEMOqVX2d999N+2yyy5pscUWy8vEeuKCSdkrr7ySa/0XXnjhtPTSS6d99tknffrppzXP33HHHXn95W0T+3zixIlz/NwAMK+EbgCoEEGsMhw/+OCDaeTIkWno0KHp73//ew5nO+ywQw58EZJvv/329MADD9QKjeXXjRgxIofnm2++Od155505MJcdd9xxOaDecMMN6bnnnstN22O9n3/+ea31nHDCCenss8/O64q+0sccc0wOmdGEO2577bXXLJ+hoWUcNmxYrpmOf6McEeDLIb4+d911VzryyCNzGSLYHnTQQWn//ffPrw/xXtFy4Pvf/34u28UXXzzb4B4BPy4ExMWBuMgRn79sgQUWSJdcckl69dVXc7n+/e9/5+1VFq+NixaPPPJIfv0555yTA3b48ssv88WG9ddfPz377LPpvvvuSx9//HEuU4hy7b333unHP/5xzf7ZY489cksCAChECQDaqSFDhpR23XXX/PfMmTNLQ4cOLXXt2rV07LHH1jy/9NJLl6ZMmVLzmj/84Q+lxRZbrDRhwoSax/7xj3+UFlhggdJHH31U87rFF1+8NHHixJplrrjiitLCCy9cmjFjRn5t586dS3/+859rnp86dWqpd+/epXPPPTffHzZsWKTA0t13312rzCeffHJp3XXXneWzxLJ33XVXo8rYt2/f0vTp02uW+d73vlfaa6+9Zru9Nttss9KBBx5Y67F4zaBBg2rux/aMdc9JfM6TTjqp1FC33357qVevXjX311577dIpp5xS77Knn356afvtt6/12Pvvv5+3z8iRI0vDhw/Pf48aNarB7w8A80NNNwDtWtReRy1pNPGOJslRcxyDlZVFM+TKftxRO7ruuuvmZs1lm2++eZo5c2auES+LZbp3715zf9NNN81NpN9///1cuxzNuON1ZdGPfOONN87rr7Thhhs2+jM1tIxRY96xY8ea+9HMe+zYsXNcb2WZy+utW+Y5ifWPHj06DRw4cLbLRK18PL/ccsulHj165Obhn332WZo0aVJ+Pprln3HGGfm9Tz755PTSSy/VvDaa3kfNe+zT8m311VfPz8V2j+0S6479+r3vfS9dffXV6Ysvvmhw+QGgsYRuANq1rbfeOo+0/cYbb6Svv/46N2euDKuVf1dDke8fQb9S9MOOYF508/05GTVqVPrOd76T1llnndz8fvjw4emyyy7Lz5Wb/f/kJz9Jb7/9dg7j0bw8Lkz8/ve/z8/FhY3o7x37tPIW+/fb3/52vsgQXQWir/waa6yRXxd90995551CPzcA7ZfQDUC7FqE2+hN/4xvfSJ06zX1Sj/79++fa1MqBtx577LHcD7k80FqIZSLElz355JO51jUGBisPRBavK4ua7+gTHUFwTuJ1cxrFvDFlbKxYb2WZy+udW5krRc11DLgWfd7rEyE7gv/555+fvvnNb6bVVlst14zXFdsxBqeLvvLRxzxqrMMGG2yQ+4LHe8R+rbyVL2DExYWoJY8+9s8//3zeptFfHQCKIHQDQCMMHjw4N0UfMmRIHkwsmjIffvjhudY1Rsoui1rZAw44IL322mt5ZO1oBh0DmUXwjfAXI6X/4he/yAN9xTIHHnhgbj4dr5mTCJNRKxu1tzEidwwoNq9lbKwobwy0FgOhRc1xjDIeoffYY49t1Hqi+X6E6hgsLdYTA8mVa6ojHMcFiLgftdkxOvqVV15Z6/VHHXVUuv/++/N2iNfG54sLAuVB1mIwuhgsLS5iRJPyWDYGfIuLFU899VQ688wz8yBr7733Xi7/J598UvN6AGhqQjcANEL0044QF8Fuo402St/97ndzH+FLL7201nLxWMxVHU2ao5/4//zP/9TqKx4jku+55545CEft7JtvvpnXGyOOz0m8JkYIj2bxMR1ZjIw+r2VsrJhiLEYkj2nGoj/4VVddlec432qrrRq1nrgYcNFFF6XLL788ryeak0f4DtHnOsJ8jEi+1lprpT//+c/prLPOqvX6CM8RriMox7aI2vBYV4ip3aL2PZbZfvvtc9/tCOk9e/bMFzxi+rYY9XzQoEH5db/61a/yBYDozw8ARegQo6kVsmYAaKdifuqYuqpy3mwAoH1S0w0AAAAFEboBAACgIJqXAwAAQEHUdAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQCrG/wemZd8uG4cEVgAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# Import necessary libraries\n", "import pandas as pd\n", @@ -131,7 +152,9 @@ " return p_wedding_infections, p_wedding_traces\n", "\n", "# Run the simulation 1000 times\n", - "results = [simulate_event(m) for m in range(1000)]\n", + "np.random.seed(50)\n", + "\n", + "results = [simulate_event(m) for m in range(10)]\n", "props_df = pd.DataFrame(results, columns=[\"Infections\", \"Traces\"])\n", "\n", "# Plotting the results\n", @@ -193,7 +216,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "sampling-env", "language": "python", "name": "python3" }, @@ -207,7 +230,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.13.0" + "version": "3.11.13" } }, "nbformat": 4,