From 3b6dc5c15bd50b09349e2e5b6bfdeafa561a889f Mon Sep 17 00:00:00 2001 From: zainabh Date: Sat, 30 May 2026 23:47:21 -0400 Subject: [PATCH 1/2] Complete assignment 1: sampling and reproducibility --- .../a1_sampling_and_reproducibility.ipynb | 36 ++++++++++++++++--- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/02_activities/assignments/a1_sampling_and_reproducibility.ipynb b/02_activities/assignments/a1_sampling_and_reproducibility.ipynb index 873f5985..5cac3e02 100644 --- a/02_activities/assignments/a1_sampling_and_reproducibility.ipynb +++ b/02_activities/assignments/a1_sampling_and_reproducibility.ipynb @@ -16,7 +16,9 @@ "cell_type": "markdown", "id": "4ea73db3", "metadata": {}, - "source": [] + "source": [ + "I think there are four sampling stages in the code. The first one is at the population construction, the population is defined at 1000 people, 200 at a wedding, and 800 at a brunch, this is a predetermined frame that sets who is even eleibile to be infected or traced. The second one is at the primary infection which is at the infected_indices, the function is the np.random.choice, where the sample size is 10% pf the 1000 which is 100. The sampling frame is all 1000 people in ppl, where its a uniform distribution since each person is equally likely to be infected, and the method is random sampling without replacement. The third stage is at the primary contact tracing where the function is np.random.rand, the sample size is 20% of the 100 infected which is 20. The sampling frame here is only the infected people, and its a uniform distribution, where each infected person has a 20% independent probability of being traced. The method here is bernoulli trials where each person is independently traced with probability of 0.20. Lastly there the secondary contact tracing, where the function is the .value_counts() + threshold filter. This is not random, if an event has more than 2 traced cases all infected attendees of that event get traced. This is where bias is introduced, larger events are more likely to hit the threshold and get fully traced. " + ] }, { "cell_type": "markdown", @@ -32,6 +34,14 @@ "metadata": {}, "source": [] }, + { + "cell_type": "markdown", + "id": "1dbf6364", + "metadata": {}, + "source": [ + "At 10 repetitions the results vary a lot more between runs, the histogram shape, the spread and the peak location - it all becomes really hard to reproduce. At 100 repetitions theres still some noticeable variations between runs but its a bit more reproducible, i think there's a general trend but the exact distribution shifts each run. At 1000 repetitions its much more stable across runs, but its still not identical because there is no random seed set. " + ] + }, { "cell_type": "markdown", "id": "32603ce7", @@ -44,7 +54,9 @@ "cell_type": "markdown", "id": "77613cc3", "metadata": {}, - "source": [] + "source": [ + "I think the fix might be to set a random seed, so that you can recreate the same result with as many simulations as possible. Setting the random seed before the simulation fixes the starting state of the random number generator. The specific number is pretty arbitrary. " + ] }, { "cell_type": "markdown", @@ -56,10 +68,21 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "id": "ab8587a0", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAJOCAYAAACqS2TfAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjksIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvJkbTWQAAAAlwSFlzAAAPYQAAD2EBqD+naQAAYeNJREFUeJzt3QeYVOXdP+6HJriIoqLYuyJ2xVhir1jia8HExIbGqLF3oz+NvWKNPTHWaDRq1Bg79sQudt1gFw2CYqNJn//1fd539j+7LmVhD9vu+7qGYWbOnHnmnDmz8zlPa1cqlUoJAAAAaHTtG3+VAAAAgNANAAAABVLTDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG6Agv3lL39JK664YurUqVPq3r277d1CtWvXLp122mlNXQzq2GeffdJSSy3V4j8TTfk+6jNp0qR0/PHHp8UXXzy1b98+7bTTTrPttT/55JO8bW+88cbZ9poARRK6gZkWP4jih9Err7zS4rfigw8+WEig+s9//pN/TC+77LLp2muvTX/605+m+5zXX3897bnnnvnHbufOndN8882Xttxyy3TDDTekyZMnp6I899xzeRt89913qUh//etf06WXXjrd5aIs8fma3mXTTTcttLxtxVNPPVVru8ZJomWWWSbtvffe6aOPPmrq4rVY5QBZ32W99dYrfH/eddddM/X866+/Pl1wwQVp1113TTfddFM66qijmuy7YHb75z//mTbZZJO04IILpqqqqnwc/OIXv0gPP/xwUxcNaKE6NnUBAJpL6L7yyisbPXjHD98pU6akP/zhD2m55Zab7vJ//vOf029/+9vUs2fPtNdee6Xll18+jRo1Kj3++ONpv/32S1988UX6f//v/6WiQvfpp5+eTxIUWSMfP7TffvvtdOSRR05zuV122aXWNhs9enQ66KCD0s4775wfK4ttNTv88MMPqWPH1v9n8/DDD08/+clP0sSJE9Orr76aTxQ98MAD6a233kqLLLJIam7iZFYcY83dr371q7TddtvVum+BBRZIzdUTTzyRFl100XTJJZfM9u+CJZdcMh9vceJndrvwwgvTcccdl0P3iSeemEP3Bx98kB577LF0++23p2222Wa2lwlo+Vr/rweAJvTll1/m6xkJsS+88EIO3Ouvv34+CdCtW7eax+JHabQoiB+obcVqq62WL2UjRozIoTvui5YAUzNu3Lg0xxxz5CaxjalLly6pLdhoo41y7WbYd9990worrJCDeNR2RgiZFWPGjEldu3ZNjakpgtnMWGuttab5uW2O311N1R0mauib4niLJvVnnnlm2mqrrdKjjz461e/z2amIYwaY/TQvBxpV1JLONddcaciQIelnP/tZ/n/UlkQtcojass033zz/iIjajKjpqK/J+jPPPJMOPPDANP/886e55547N3H99ttvay37j3/8I22//fa59i2aYUcT7vjBVF8T7BdffDHXMs0777z5tSO4Re1zuczl8lU2/Zyeq666Kq288sr5taMMhxxySK2m2dE/89RTT62p0Zpe/8+oZY5lbr311lqBu2zttdfOZa38MXbMMcfUNEPv1atXrqUplUq1nhfrPPTQQ9O9996bVllllbxslLuyqWSUK2p3wtJLL12zDaJpbIim7bHforllPH+llVZKV199db3v46GHHsq1RPEeYt9FrWl5P0dT8Kg1/fTTT2teY1b6sZab0EYN1Mknn5w/a1EzNXLkyPTNN9+kY489Nq266qr5cxhl2XbbbdMbb7xRb1CPbRABM37sL7zwwrk2/cMPP6y1HSv3X7n5e9SClVsHzDPPPDmojh07ttb6o9YugmuPHj3ydvmf//mf9N///neG+wTHj/1o6RC1+lG+1VdfPYfg+poxx2cgaqfjeIh9Fdv/5ZdfnsktnPJ+Dx9//HGtfRzhPI6leD9xHL7zzjv1fhfENoxjL5bbY4898mPl1h+xb+L9xPERNYh1u6rccsstqU+fPmnOOefM3Sx++ctfps8+++xHr1P+DEXtfCwX+6Cu+EzEa8Vnomz8+PH5GI0WFbGt4liKfsxxf6W4Hc2ro5zl/ff555+nIpU/23HdWP2dZ+QzW17/k08+mfdp+TgtlyP2XTQJj++Q2J7xmYzv6rrfz7PyXTC19xi17+XPXZR9xx13TNXV1Q1+j1MTJ/bic7LBBhvU+3h8/zX0uGzIfpxdx8z777+f+vXrlxZaaKG8rsUWWywv9/33309z+wAzT0030Ogi9Ea42XjjjdOAAQNyiIzQFz+UTjrppPwjIgLNNddck8N01OxG0KsUy8ePpfgBNXjw4Bzw4sdZ+QdMiB8r8QPl6KOPztfxg+yUU07JP5qiL2LZwIED8wmA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Mfv2qFGj0iKLLJJnJJkaoTulHLiNHgsAAEBDffbZZ2mxxRab6uNCd0q5hru8seaee+4Gb2QAAADalpEjR+bK23KenBqhO4Zw/78m5RG4hW4AAABm1PS6KBtIDQAAAAoidAMAAEBBhG4AAAAoiD7dAADQjE2ePDlNnDixqYsBbU6nTp1Shw4dZnk9QjcAADTTOYCHDRuWvvvuu6YuCrRZ3bt3TwsttNB0B0ubFqEbAACaoXLgXnDBBVNVVdUs/egHGn7Sa+zYsenLL7/MtxdeeOE0s4RuAABohk3Ky4F7/vnnb+riQJs055xz5usI3nEszmxTcwOpAQBAM1Puwx013EDTKR+DszKugtANAADNlCbl0PKPQaEbAAAACqJPNwAAtCBDhgxJI0aMmG2v16NHj7TEEksUPmjcXnvtlZ577rk8TVNRI7bfeOON6cgjj2zSEeFjgK4DDzww3XXXXenbb79Nr732WlpjjTVSW3DjDGz/0047Ld17773p9ddfz7f32WefvHzc11IJ3QAA0IICd69evdO4cWNn22t26VKVBg+unuHgPTMh6ZJLLklffPFFDlrzzDNPagxLLbVUDnhxKdttt93Sdtttl5rSww8/nMPnU089lZZZZpl8UqMpnXDCCXlf/ec//6m5L/7fu3fv1L9//1zWsvh/nDCI/VseZKxof/jDH/KJipZM6AYAgBYiargjcPfufUuqqupd+OuNHVudqqv3zK9bZG33hx9+mPr06ZOWX375VKQIirMrLE7rvcb0Uz/96U+nusyECRPSHHPMMVvKs9lmm6Xzzz8/tzaI+ajDk08+mRZffPF8YqBS3L/eeuvN1m04TyOdhGlK+nQDAEALE4G7W7e1Cr80RrDfdNNN0+GHH56OP/74NN988+VgF02IK2uk//73v6ebb745D1oVNeUhalN/85vfpAUWWCDNPffcafPNN09vvPFGrXX/85//TD/5yU9Sly5dco3xzjvvXPOan376aTrqqKPyOsuDYUVNbffu3Wut4+qrr07LLrtsDrm9evVKf/nLX2o9Hs/985//nNcdI1nHiYH77ruv5vFoIr7HHnvkckYYjcdvuOGGerdFvLfDDjsst1iI9cZ7L5f30EMPzbXy8T769u2b73/66afTOuuskzp37pyDetRKT5o0qda2jfXF8+add97Us2fPdO2116YxY8akfffdN3Xr1i0tt9xy6aGHHprq/tlwww1zk/7KgB3/P+SQQ9I333yTPvnkk1r3R0gP48ePT8cee2xadNFFU9euXdO66677o5Ae23uJJZbI2y2239dff/2j1z/vvPNyuaOs++23Xxo3btyPttlOO+00w5+nck19vK/4XKy00krpsccey9u73PoiTmrE9o5tGsssueSS6dxzz01FEboBAIBC3XTTTTmYvfjii2nAgAHpjDPOSAMHDsyPvfzyy2mbbbZJv/jFL3IT82hOHH7+85/n+ZEjMA4aNCittdZaaYsttshBMDzwwAM5yEVz8egX/fjjj+eAGu6+++602GKL5deJdcalPvfcc0864ogj0jHHHJPefvvt3HQ6wmrU6FY6/fTTc/nefPPN/HoRssvl+P3vf5/efffdXM7q6uoc4qfWZDzeW5QpyhZlivdeuY0i+D/77LPpmmuuSf/973/za8VJhTjZEOu97rrr0llnnfWjbRuv99JLL+UAftBBB+VtFzXpr776atp6661zf/mxY+vvkhD7JV6j8j1HeI5tvcEGG9Tc/9FHH+WTBeXQHaH1+eefT7fffnveLvGasR/ff//9/Hjs6wjRhx56aO42EM+rW/Y77rgjB+ZzzjknvfLKKzkEX3XVVfWWc0Y/TzHHfYT0CPrx+J/+9Kd00kkn1Xr+ZZddlk+cxOsPHjw43XrrrTUnQIqgeTkAAFCo1VZbLZ166qn5/1ETfMUVV+SQvNVWW+Ua4qjJjVricvPmf//73zlERuiOx8KFF16YaypjALIDDjggnX322emXv/xlDsRlq6++er6OGtAOHTrk2tPyOusT64ya1IMPPjjfPvroo9MLL7yQ7y+HyxDL/OpXv8r/j4AYoS3KFyEzguiaa66Z1l577fz4tMJbNJWOMkXZ6pYrtksEyLIIitHEO7ZV1NKuuOKKaejQoel3v/tdOuWUU1L79u1r3vPJJ5+c/3/iiSfmmuMI4fvvv3++L5aNwB7BOJqG1yfe65133pn/HycQorY53tPGG2+cA3iciIjrqBWOdcR7jtr8uF5kkUXy86LWO/qrx/2xjeIEQ2yf448/Pj++wgor5IHyYpmySy+9NAfzuIQI5VErXbe2uyGfpwjf0YQ/ylvexvFZicfKotzxvKgNj20bNd1FUtMNAAAUKkJSpajRjEA9NVGzO3r06DT//POnueaaq+by8ccf50AVovY0amNnRdRMR21upbgd90+t/FHDGs3dy+WPmuWo7Y0RyCNgRrCcGdGnvW7Z1l9//VrzREfZYrt8/vnn9ZYtwnxss1VXXbXmvmi6Haa1vaPJ9nvvvZdr3yOsRhiNdW2yySY1TcbjOmrP4yTIW2+9lWuUI0hX7p9oDl/eP1H+aHJeKd5PpRlZpqGfp6i5jpMVlSc1yi0gKk+ixOcnuhNEU/VHH300FUlNNwAAUKjoM1wpguSUKVOmunwEywhSdfsIh3Kf7Nk5mNe0yr/tttvm/uMPPvhgrmWNEwHRHzpqyxsiwnxjla3yvnJon9b2jjAfTdujKXlcImyHaHYeg+hF0/LYF9H8vrx/IpRHs/+4rhThu7l9nuqKrgpxAie6BETNenQd2HLLLXMriiKo6QYAAJqVCEUxmnbHjh3zQGCVl3J/6ajtjCbFUxMhMmpjpyWmxYo+1JXidgy+1RDRRD6m17rllltyk+noRzyromzRZ7pyuqwoWzRPjz7hjSlOYJQHQova6qj5LofbaE4efck/++yzmib30fQ8tm3ULtfdP+Ua5ih/9KmuFE33K83IMg0VtddR1uHDh9fcV9l3vixaK8QUcjHw3N/+9rc8mF+5n35jU9MNAAA0K1HrGM2MY0Cs6OcczZijP3N58LToPx19eqNWOUYej77dMap31DZHn+dy3+pnnnkmPxZNousb3Oy4447LtZwRIuM1YzT0GIQtaj9nVPSZjqbhK6+8ch7R+/77789hclZFP/MI8DE4WgxGFs2m4z1Hv/Nyf+7GFIE65ksvn/Qoi1rvqLUvD7gWYn/EYHJ77713uuiii/L2++qrr/JJkDgZsv322+dm21GDfuGFF6Ydd9wxPfLII7X6c4cYxC6aesf+jGVjQLN33nknz18+s6Lvdnwm4iRIfHZGjRpV0+e9XOt/8cUX55YUUe7YltGfPU4W1B3ZvrEI3QBAsxWD3UTTRtqmCElFzg3dksX82a3pdeqKcBQBOgYTi0G8ItBFKIqBvcp9lKM2NsLSmWeemQcPi5rLeLwsRrSO5tARwCIMV9YYl0WojwG/IhhGAFx66aXzQGDlmt4ZETXqMYBZTK0VNcYbbbRR7uM9q2IqrtgGcWIgBkuLweFiwLFygCwidMc2i8HPooVBZeiOsB/TmFU2647tFAOfxcjvMdJ6HK9RK/6zn/0sPx7/j1rkU089NZ+YiJMaUfbYX2VR0xx9wKMvfAye1q9fv9xHPgL6zIrm7jHgXkw3FycJIsBfcMEFaYcddsgDwYVoLRCBPEZaj+VjudjWRZzMCO1K9X362piRI0fmkQS///77fLACAM0jcPfq1TuNG1f/NDe0fl26VKXBg6vbZPCOABJ9TiMEloNCUx0XbXk/0Do8++yzeXC4Dz74IJ+EaYxjsSE5Uk03ANAsRQ13BIvevW9JVVWz3lSTliVqWKur98yfA2Hv/xfbIgLw7GwBosUBLc0999yTB3SLacEiaEcrhmi+3tDA3ViEbgCgWYvA3a3b/9+/ENq6CN5ORMDURT/u6NsfLUPipFE0bY++501F6AYAAKDV2HvvvfOluTBlGAAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiIKcMAAKAFibmHR4wYMdteL+Y5bo3zgm+66aZpjTXWSJdeemlqLfbZZ5/03XffpXvvvXeG3/dSSy2VjjzyyHyhGEI3AAC0oMDdu1evNHbcuNn2mlVduqTqwYNnKHi3a9dumo+feuqp6bTTTkstQZQzwuvrr78+S+tZb731csi95pprau6L/x900EHphhtuyEG5LP7/4Ycfpn/9619pdnn55ZdT165dZ9vrtUVCNwAAtBBRwx2B+5bevVPvqqrCX6967Ni0Z3V1ft0ZCd1ffPFFzf//9re/pVNOOSUNHjy45r655pqr5v+lUilNnjw5dezYuiPJZpttlu65555a9z355JNp8cUXT0899VSt0B23+/fvP1vLt8ACC8zW12uL9OkGAIAWJgL3Wt26FX5paLBfaKGFai7zzDNPrvku3/7Pf/6TunXrlh566KHUp0+f1Llz5/Tvf/871+zuuOOOqWfPnjmU/+QnP0mPPfZYrfWOHz8+/e53v8tBNZ633HLLpeuuu67m8bfffjttu+22+fmxnr322qtWE/wxY8akvffeOz++8MILp4suumia7+PGG29Mp59+enrjjTfye4hL3FdubRDljXXNPffc6Re/+EUaPnz4NEN3nHgYNmxYzX1PP/10OuGEE3LILvv444/Tp59+mpcPn332WV539+7d03zzzZdf85NPPqlZPk5YHH300fnx+eefPx1//PH5REalGXnf0by8sol9vNc///nPaeedd05VVVVp+eWXT/fdd1+t58TtuL9Lly65vDfddFN+XjRtD/E+dthhhzTvvPPmWvSVV145Pfjgg6mtEroBAIDZJsLmeeedl6qrq9Nqq62WRo8enbbbbrv0+OOPp9deey1ts802ObBFuC2L4Hjbbbelyy67LD/vj3/8Y02teQS9zTffPK255prplVdeSQ8//HAOwRFYy4477rgcdP/xj3+kRx99NIfdV199dapl3G233dIxxxyTw2LU3scl7psyZUoOv998801e38CBA9NHH32UH5uaDTbYIHXq1CnXbod33303/fDDD2m//fZLX3/9dQ7bIR6PELv++uuniRMnpr59++aTFNHU/Nlnn83vN7bNhAkT8vIRoONEwPXXX59PXkSZ6taoN/R9l8UJh9h+b775Zt43e+yxR15/iPLuuuuuaaeddsonJQ488MB00kkn1Xr+IYcckk+UPPPMM+mtt95K559/fq1WDm1N627LAQAANCtnnHFG2mqrrWpuRy3u6quvXnP7zDPPzOExalMPPfTQ9N5776U77rgjB9wtt9wyL7PMMsvULH/FFVfkwH3OOefU3BdBNGrF47mLLLJIrhW/5ZZb0hZbbJEfj5rZxRZbbKplnHPOOXNIjKbvUUtfFmWIEBnBM9Yfbr755hzOo2901NLXFTW966yzTg68v/rVr/L1hhtumGvsf/rTn+bbSy+9dL6OwB33R1kj4EeNc7mffPT/jlrtWG7rrbfOtdMnnnhi2mWXXWr6iT/yyCM1rxsnMxr6vsuiyXuUNcR2jZMdL730Ug79ccKjV69e6YILLsiPx/+jpcHZZ59d8/w4YdKvX7+06qqr/mh/tUVqugEAgNlm7bXXrnU7wuGxxx6bevfunUNlhN2ozS7XdMdAZh06dEibbLJJveuL2taoJY7nlS8rrrhifiyarsclaofXXXfdWkE/wmJDRbkibJcDd1hppZVyueOxaY0YXm5KHtdxO8R7qry/3LQ83tMHH3yQa7rL7ynKPG7cuPx+vv/++1z7Xvme4gRB5badlfcdLRAqTxpEM/ovv/wy346m8nVPLsRJhUqHH354Ouuss3It/6mnnpprzNsyoRsAAJht6o6UHYE7arajRjWaUkfIjhrScjPqqHWelgjt0Rw9nld5ef/999PGG2+cmoMI01Hr/t///jeH6/IJhHLojoAcfbijmXz5PUW/97rvKdax++67F17eaA5fKWrb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IEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAXpWNSKAQBamnHjhqSJE0c0dTFIKY0dW523Q3X1/17Pqh49eqQllljCtgVmO6EbAOD/AvcrL/VKk6aMsz2akT333LNR1lPVpUuqHjxY8AZmO6EbACClXMMdgfusqt5p6fZVtkkTmzJ5bBrzQ3VaqXfv1LVq1vZH9dixac/q6jRixAihG5jthG4AgAoRuHt37GabNLHJKaVRKaU1qqpSt272B9ByGUgNAAAACiJ0AwAAQEGEbgAAAGjtofu8885L7dq1S0ceeWTNfePGjUuHHHJImn/++dNcc82V+vXrl4YPH17reUOGDEnbb799qqqqSgsuuGA67rjj0qRJk5rgHQAAAEAzDN0vv/xy+uMf/5hWW221WvcfddRR6Z///Ge6884709NPP52GDh2adtlll5rHJ0+enAP3hAkT0nPPPZduuummdOONN6ZTTjmlCd4FAAAANLPQPXr06LTHHnuka6+9Ns0777w193///ffpuuuuSxdffHHafPPNU58+fdINN9yQw/ULL7yQl3n00UfTu+++m2655Za0xhprpG233TadeeaZ6corr8xBHAAAANp06I7m41FbveWWW9a6f9CgQWnixIm17l9xxRXz3IrPP/98vh3Xq666aurZs2fNMn379k0jR45M77zzzlRfc/z48XmZygsAAAC0qnm6b7/99vTqq6/m5uV1DRs2LM0xxxype/fute6PgB2PlZepDNzlx8uPTc25556bTj/99EZ6FwAAANDMaro/++yzdMQRR6Rbb701denSZba+9oknnpibr5cvURYAAABoNaE7mo9/+eWXaa211kodO3bMlxgs7bLLLsv/jxrr6Jf93Xff1XpejF6+0EIL5f/Hdd3RzMu3y8vUp3PnzmnuueeudQEAAIBWE7q32GKL9NZbb6XXX3+95rL22mvnQdXK/+/UqVN6/PHHa54zePDgPEXY+uuvn2/HdawjwnvZwIEDc4heaaWVmuR9AQAAQJP36e7WrVtaZZVVat3XtWvXPCd3+f799tsvHX300Wm++ebLQfqwww7LQXu99dbLj2+99dY5XO+1115pwIABuR/3ySefnAdni9psAAAAaLMDqU3PJZdcktq3b5/69euXRxyPkcmvuuqqmsc7dOiQ7r///nTQQQflMB6hvX///umMM85o0nIDAABAswvdTz31VK3bMcBazLkdl6lZcskl04MPPjgbSgcAAAAtbJ5uAAAAaK2EbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAACN0AAADQsqjpBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgIJ0LGrFANBaDRkyJI0YMaKpi9HqVVdX5+uxY//3umiz63UAaFuEbgBoYODu3atXGjtunO02m1RX7zlbt3WpNGG2vh4ArZvQDQANEDXcEbhv6d079a6qsu0KNGbs2PRudXXqOmfv1L5D8dv62Ulfp6vGfZJKUyYV/loAtB1CNwDMhAjca3XrZtsVaFRKKeJvtw5VqUPH4rf1x5PHFv4aALQ9BlIDAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAF6TgzT/roo4/SMsss0/ilAYAKQ4YMSSNGjGhW26S6ujpfjxk7No1q6sK0crGNAaBNhu7lllsubbLJJmm//fZLu+66a+rSpUvjlwyA1NYDd69evdO4cc0zeL1bXZ0mNXUh2ogppVLq0NSFAIDZGbpfffXVdMMNN6Sjjz46HXrooWm33XbLAXydddaZ2XIAQC1Rwx2Bu3fvW1JVVe9ms3XGjq1O1dV7pq5z9k7dOlQ1dXFatYmTvknjxn2cSqVSUxcFAGZv6F5jjTXSH/7wh3TRRRel++67L914441pww03TCussEL69a9/nfbaa6+0wAILzHypAOD/RODu1m2tZrc92neoSh06dmvqYrRqk6c0z1YOADDbBlLr2LFj2mWXXdKdd96Zzj///PTBBx+kY489Ni2++OJp7733Tl988cWsrB4AAADabuh+5ZVX0sEHH5wWXnjhdPHFF+fA/eGHH6aBAwemoUOHph133LHxSgoAAABtoXl5BOzo0z148OC03XbbpZtvvjlft2//vxl+6aWXzk3Ol1pqqcYuLwAAALTumu6rr7467b777unTTz9N9957b/rZz35WE7jLFlxwwXTddddNdz2rrbZamnvuufNl/fXXTw899FDN4+PGjUuHHHJImn/++dNcc82V+vXrl4YPH/6j0W233377VFVVlV/zuOOOS5MmGU8WAACAFlrT/f777093mTnmmCP1799/mssstthi6bzzzkvLL798Hpn0pptuyk3SX3vttbTyyiuno446Kj3wwAO5z/g888yTR0qPPuTPPvtsfv7kyZNz4F5ooYXSc889l/uQR1/yTp06pXPOOWdm3hoAAAA0bU13NC2PIFxX3BfBeUbtsMMOuVl6hO4Y+fzss8/ONdovvPBC+v7773NNeTRl33zzzVOfPn3y60a4jsfDo48+mt599910yy235BHVt91223TmmWemK6+8Mk2YMGFm3hoAAAA0beg+99xzU48ePX50fzTvntka5qi1vv3229OYMWNyM/NBgwaliRMnpi233LJmmRVXXDEtscQS6fnnn8+343rVVVdNPXv2rFmmb9++aeTIkemdd96ZqXIAAABAkzYvj37UMVhaXUsuuWR+rCHeeuutHLKj/3bUct9zzz1ppZVWSq+//npuot69e/day0fAHjZsWP5/XFcG7vLj5cemZvz48flSFiEdAAAAmkVNd9Rov/nmmz+6/4033siDnjVEr169csB+8cUX00EHHZT7gUeT8SJFTX30ES9fYl5xAAAAaBah+1e/+lU6/PDD05NPPpmbhcfliSeeSEcccUT65S9/2aB1RW32csstl/tsRxheffXV0x/+8Ic8OFr0y/7uu+9qLR+jl8djIa7rjmZevl1epj4nnnhi7jNevnz22WcNKjMAAAAUFrpjsLJ11103bbHFFmnOOefMl6233joPeDaro4ZPmTIlN/2OEB6jkD/++OM1j8W84NF8PZqjh7iO5ulffvllzTIDBw7M049FE/Wp6dy5c800ZeULAAAANIs+3VE7/be//S2H72hSHqE7BjSLPt0NETXOMeJ4DI42atSo9Ne//jU99dRT6ZFHHsnNvvfbb7909NFHp/nmmy8H48MOOywH7fXWWy8/P4J+hOu99torDRgwIPfjPvnkk/Pc3hGsAQAAoMWF7rKY5isuMytqqGNe7ZhfO0L2aqutlgP3VlttlR+/5JJLUvv27VO/fv1y7XeMTH7VVVfVPL9Dhw7p/vvvz33BI4x37do19wk/44wzZuVtAQAAQNOF7ujDfeONN+am3xGco0l4pejfPSNiHu5p6dKlS55zOy5TE7XrDz744AyWHAAAAJp56I4B0yJ0b7/99mmVVVZJ7dq1a/ySAQAAQFsM3bfffnu644470nbbbdf4JQIAAIC2PHp5eZovAAAAoJFD9zHHHJPn0i6VSjPzdAAAAGgTZqp5+b///e/05JNPpoceeiitvPLKeT7tSnfffXdjlQ8AAADaVuju3r172nnnnRu/NAAAANDWQ/cNN9zQ+CUBAACAVmam+nSHSZMmpcceeyz98Y9/TKNGjcr3DR06NI0ePboxywcAAABtq6b7008/Tdtss00aMmRIGj9+fNpqq61St27d0vnnn59vX3PNNY1fUgAAAGgLNd1HHHFEWnvttdO3336b5pxzzpr7o5/3448/3pjlAwAAgLZV0/2vf/0rPffcc3m+7kpLLbVU+u9//9tYZQMAAIC2V9M9ZcqUNHny5B/d//nnn+dm5gAAAMBMhu6tt946XXrppTW327VrlwdQO/XUU9N2221nuwIAAMDMNi+/6KKLUt++fdNKK62Uxo0bl3bffff0/vvvpx49eqTbbrvNhgUAAICZDd2LLbZYeuONN9Ltt9+e3nzzzVzLvd9++6U99tij1sBqAAAA0JZ1nOknduyY9txzz8YtDQAAALT10H3zzTdP8/G99957ZssDAAAAbTt0xzzdlSZOnJjGjh2bpxCrqqoSugEAAGBmRy//9ttva12iT/fgwYPThhtuaCA1AAAAmJXQXZ/ll18+nXfeeT+qBQcAAIC2qtFCd3lwtaFDhzbmKgEAAKBt9em+7777at0ulUrpiy++SFdccUXaYIMNGqtsAAAA0PZC90477VTrdrt27dICCyyQNt9883TRRRc1VtkAAACg7YXuKVOmNH5JAAAAoJVp1D7dAAAAwCzWdB999NEzvOzFF188My8BAAAAbTN0v/baa/kyceLE1KtXr3zfe++9lzp06JDWWmutWn29AQAAoK2aqdC9ww47pG7duqWbbropzTvvvPm+b7/9Nu27775po402Ssccc0xjlxMAAADaRp/uGKH83HPPrQncIf5/1llnGb0cAAAAZiV0jxw5Mn311Vc/uj/uGzVq1MysEgAAAFqdmQrdO++8c25Kfvfdd6fPP/88X/7+97+n/fbbL+2yyy6NX0oAAABoK326r7nmmnTsscem3XffPQ+mllfUsWMO3RdccEFjlxEAAADaTuiuqqpKV111VQ7YH374Yb5v2WWXTV27dm3s8gEAAEDbal5e9sUXX+TL8ssvnwN3qVRqvJIBAABAWwzdX3/9ddpiiy3SCiuskLbbbrscvEM0LzddGAAAAMxC6D7qqKNSp06d0pAhQ3JT87LddtstPfzwwzOzSgAAAGh1ZqpP96OPPpoeeeSRtNhii9W6P5qZf/rpp41VNgAAAGh7Nd1jxoypVcNd9s0336TOnTs3RrkAAACgbYbujTbaKN188801t9u1a5emTJmSBgwYkDbbbLPGLB8AAAC0reblEa5jILVXXnklTZgwIR1//PHpnXfeyTXdzz77bOOXEgAAANpKTfcqq6yS3nvvvbThhhumHXfcMTc332WXXdJrr72W5+sGAAAAZqKme+LEiWmbbbZJ11xzTTrppJNsQwAAAGismu6YKuzNN99s6NMAAACgzZmp5uV77rlnuu666xq/NAAAANDWB1KbNGlSuv7669Njjz2W+vTpk7p27Vrr8YsvvrixygcAAABtI3R/9NFHaamllkpvv/12WmuttfJ9MaBapZg+DAAAAGhg6F5++eXTF198kZ588sl8e7fddkuXXXZZ6tmzp20JAAAAs9Knu1Qq1br90EMP5enCAAAAgEYaSG1qIRwAAACYydAd/bXr9tnWhxsAAAAaoU931Gzvs88+qXPnzvn2uHHj0m9/+9sfjV5+9913N2S1AAAA0Co1KHT379//R/N1AwAAAI0Qum+44YaGLA4AAABt2iwNpAYAAABMndANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAALTG0H3uueemn/zkJ6lbt25pwQUXTDvttFMaPHhwrWXGjRuXDjnkkDT//POnueaaK/Xr1y8NHz681jJDhgxJ22+/faqqqsrrOe6449KkSZNm87sBAACAZhS6n3766RyoX3jhhTRw4MA0ceLEtPXWW6cxY8bULHPUUUelf/7zn+nOO+/Myw8dOjTtsssuNY9Pnjw5B+4JEyak5557Lt10003pxhtvTKecckoTvSsAAAD4Xx1TE3r44Ydr3Y6wHDXVgwYNShtvvHH6/vvv03XXXZf++te/ps033zwvc8MNN6TevXvnoL7eeuulRx99NL377rvpscceSz179kxrrLFGOvPMM9Pvfve7dNppp6U55pijid4dAAAAbV2z6tMdITvMN998+TrCd9R+b7nlljXLrLjiimmJJZZIzz//fL4d16uuumoO3GV9+/ZNI0eOTO+88069rzN+/Pj8eOUFAAAAWm3onjJlSjryyCPTBhtskFZZZZV837Bhw3JNdffu3WstGwE7HisvUxm4y4+XH5taX/J55pmn5rL44osX9K4AAABoy5pN6I6+3W+//Xa6/fbbC3+tE088Mdeqly+fffZZ4a8JAABA29OkfbrLDj300HT//fenZ555Ji222GI19y+00EJ5gLTvvvuuVm13jF4ej5WXeemll2qtrzy6eXmZujp37pwvAAAA0GprukulUg7c99xzT3riiSfS0ksvXevxPn36pE6dOqXHH3+85r6YUiymCFt//fXz7bh+66230pdfflmzTIyEPvfcc6eVVlppNr4bAAAAaEY13dGkPEYm/8c//pHn6i73wY5+1nPOOWe+3m+//dLRRx+dB1eLIH3YYYfloB0jl4eYYizC9V577ZUGDBiQ13HyySfndavNBgAAoM2G7quvvjpfb7rpprXuj2nB9tlnn/z/Sy65JLVv3z7169cvjzoeI5NfddVVNct26NAhN00/6KCDchjv2rVr6t+/fzrjjDNm87sBAACAZhS6o3n59HTp0iVdeeWV+TI1Sy65ZHrwwQcbuXQAAADQSkYvBwAAgNZG6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAXpWNSKAQBgVo0ZO7bR1lFdXW2HtCA9evRISyyxRFMXA2aZ0A0AQLMzpTSh0YLye/93veeee87yuph9unSpSoMHVwvetHhCNwAAzU6pNClfd+nSK3XqONcsravr5LEp/VCdeve+JVVV9W6kElKksWOrU3X1nmnEiBFCNy2e0A0AQLPVvn1V6tCx26yto9FKw+w2Iy0dNEOnuRO6AQBo1UZMmZCDd9Sc0rLMSJeAqi5dUvXgwWrEabaEbgAAWrVRpUlpSkrpjM5LpWU7zd/UxWEGTJk8No35oTqt1Lt36lpVNdXlqseOTXtWV2uGTrMmdAMA0CYs3X7O1HsWm6oze0yOkyUppTWqqlK3bvYZLZsuLgAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAFpj6H7mmWfSDjvskBZZZJHUrl27dO+999Z6vFQqpVNOOSUtvPDCac4550xbbrllev/992st880336Q99tgjzT333Kl79+5pv/32S6NHj57N7wQAAACaWegeM2ZMWn311dOVV15Z7+MDBgxIl112WbrmmmvSiy++mLp27Zr69u2bxo0bV7NMBO533nknDRw4MN1///05yB9wwAGz8V0AAABA/TqmJrTtttvmS32ilvvSSy9NJ598ctpxxx3zfTfffHPq2bNnrhH/5S9/maqrq9PDDz+cXn755bT22mvnZS6//PK03XbbpQsvvDDXoAMAAEBTabZ9uj/++OM0bNiw3KS8bJ555knrrrtuev755/PtuI4m5eXAHWL59u3b55rxqRk/fnwaOXJkrQsAAAC0mdAdgTtEzXaluF1+LK4XXHDBWo937NgxzTfffDXL1Ofcc8/NAb58WXzxxQt5DwAAALRtzTZ0F+nEE09M33//fc3ls88+a+oiAQAA0Ao129C90EIL5evhw4fXuj9ulx+L6y+//LLW45MmTcojmpeXqU/nzp3zaOeVFwAAAGgzoXvppZfOwfnxxx+vuS/6Xkdf7fXXXz/fjuvvvvsuDRo0qGaZJ554Ik2ZMiX3/QYAAIA2O3p5zKf9wQcf1Bo87fXXX899spdYYol05JFHprPOOistv/zyOYT//ve/zyOS77TTTnn53r17p2222Sbtv//+eVqxiRMnpkMPPTSPbG7kcgAAANp06H7llVfSZpttVnP76KOPztf9+/dPN954Yzr++OPzXN4x73bUaG+44YZ5irAuXbrUPOfWW2/NQXuLLbbIo5b369cvz+0NAAAAbTp0b7rppnk+7qlp165dOuOMM/JlaqJW/K9//WtBJQQAAIBW2KcbAAAAWjqhGwAAAAoidAMAAEBr7NNNwwwZMiSNGDHCZmuFevTokUfsBwAAWhehuwUF7t69eqWx48Y1dVEoQFWXLql68GDBGwAAWhmhu4WIGu4I3Lf07p16V1U1dXFoRNVjx6Y9q6vzPlbbDQAArYvQ3cJE4F6rW7emLgYAAAAzwEBqAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAABCNwAAALQsaroBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEE6FrViAFIaMmRIGjFihE0xE6qrq/P12LH/e91cNLfyAADNm9ANUGDg7t2rVxo7bpxtPAuqq/dsltuvVJrQ1EUAAFoAoRugIFHDHYH7lt69U++qKtu5gcaMHZvera5OXefsndp3aD7b79lJX6erxn2SSlMmNXVRAIAWQOgGKFgE7rW6dbOdG2hUSilibbcOValDx+az/T6ePLapiwAAtCAGUgMAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0cuBZj/XdUy91RJVV1fXTH0VI3HTMLHdAABaOqEbaNaBu1ev3mncuJYdvmKuaTM6z7wppVLq0Ij7AwBgdhK6gWYrargjcPfufUuqquqdWpqxY6tTdfWeqeucvfNc0zTMxEnfpHHjPk6lUsmmAwBaLKEbaPYicHfrtlZqqdp3qEodOnZr6mK0OJOntOwWDgAAwUBqAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAEDoBgAAgJalY1MXAAAAoD5jxo6doccffPDBVF1dbSO2Issss0xaf/31U2vQakL3lVdemS644II0bNiwtPrqq6fLL788rbPOOk1dLAAAoIGmlCbk6+kF6Rf+r7/s73//e9u4lWmfUvr3c8+1iuDdKkL33/72t3T00Uena665Jq277rrp0ksvTX379k2DBw9OCy64YFMXDwAAaIBSaVK+7tKlV+rUca6pLjd54tdpyvhP0mlzLJKW7TCPbdxKfDj5+3TahKHpo48+Erqbi4svvjjtv//+ad999823I3w/8MAD6frrr08nnHBCUxcPAACYCe3bV6UOHbtN9fF2k/+3eXkE7pU797SNW4vx8c/Q1Fq0+JruCRMmpEGDBqUTTzyx5r727dunLbfcMj3//PNNWjZoCP2Qpr5Nxo5tmX20Wmq5AQBoPC0+dI8YMSJNnjw59exZ+8xW3P7Pf/5T73PGjx+fL2Xff/99vh45cmRqrkaPHp2vB40alUZPntzUxaERPT9yZGqXUtpzzz1t16morm7Z2+btCV+kMZNGNXUxWpxJk0fmE92dJ45IHaeMSc3FR5P+92/GO5O+TT+UfB+3ps+Afdt6979923r3v33bOn00+X9z2dixY5t1RiuXrVQqTXO5dqXpLdHMDR06NC266KLpuTqd7I8//vj09NNPpxdffPFHzznttNPS6aefPptLCgAAQGvz2WefpcUWW6z11nT36NEjdejQIQ0fPrzW/XF7oYUWqvc50RQ9Bl4rmzJlSvrmm2/S/PPPn9q1izrH5nkWZfHFF887dO65527q4tCI7NvWy75tnezX1su+bb3s29bLvm2dRraQ7BP116NGjUqLLLLINJdr8aF7jjnmSH369EmPP/542mmnnWpCdNw+9NBD631O586d86VS9+7dU0sQH7rm/MFj5tm3rZd92zrZr62Xfdt62betl33bOs3dArLPPPNMf9T8Fh+6Q9Ra9+/fP6299tp5bu6YMmzMmDE1o5kDAABAU2gVoXu33XZLX331VTrllFPSsGHD0hprrJEefvjhHw2uBgAAALNTqwjdIZqST605eWsQzeFPPfXUHzWLp+Wzb1sv+7Z1sl9bL/u29bJvWy/7tnXq3MqyT4sfvRwAAACaq/ZNXQAAAABorYRuAAAAKIjQDQAAAAURupvQlVdemZZaaqnUpUuXtO6666aXXnppmsvfeeedacUVV8zLr7rqqunBBx+s9Xh0z48R3BdeeOE055xzpi233DK9//77Bb8LZse+3WeffVK7du1qXbbZZhsbvxnv13feeSf169cvLx/7K6YynNV10nL27WmnnfajYzaOcZr3vr322mvTRhttlOadd958ib+jdZf3t7b17lt/a1vefr377rvzlMHdu3dPXbt2zTMY/eUvf6m1jGO29e7bfVrS7+MYSI3Z7/bbby/NMcccpeuvv770zjvvlPbff/9S9+7dS8OHD693+WeffbbUoUOH0oABA0rvvvtu6eSTTy516tSp9NZbb9Usc95555XmmWee0r333lt64403Sv/zP/9TWnrppUs//PDDbHxnFLFv+/fvX9pmm21KX3zxRc3lm2++sbGb8X596aWXSscee2zptttuKy200EKlSy65ZJbXScvZt6eeempp5ZVXrnXMfvXVV3ZhM9+3u+++e+nKK68svfbaa6Xq6urSPvvsk/+ufv755zXL+Fvbevetv7Utb78++eSTpbvvvjv/fvrggw9Kl156af5N9fDDD9cs45htvfu2fwv6fSx0N5F11lmndMghh9Tcnjx5cmmRRRYpnXvuufUu/4tf/KK0/fbb17pv3XXXLR144IH5/1OmTMk//i644IKax7/77rtS586d8w9DWu6+LX+p7LjjjgWWmsber5WWXHLJeoPZrKyT5r1vI3SvvvrqdlMTm9VjbNKkSaVu3bqVbrrppnzb39rWu2+Dv7VNrzH+Lq655pq5AiM4Zlvvvm1px6zm5U1gwoQJadCgQblpU1n79u3z7eeff77e58T9lcuHvn371iz/8ccfp2HDhtVaZp555slNN6a2TlrGvi176qmn0oILLph69eqVDjrooPT111/bhc14vzbFOmle+yG69yyyyCJpmWWWSXvssUcaMmSIXdTC9u3YsWPTxIkT03zzzZdv+1vbevdtmb+1LXe/RmXi448/ngYPHpw23njjfJ9jtvXu25Z2zArdTWDEiBFp8uTJqWfPnrXuj9sRnOsT909r+fJ1Q9ZJy9i3Ifqn3HzzzfkL5/zzz09PP/102nbbbfNr0Tz3a1Osk+azH+KE54033pgefvjhdPXVV+cfftGfdNSoUXZTC9q3v/vd7/KJk/IPRX9rW+++Df7Wtsz9+v3336e55porzTHHHGn77bdPl19+edpqq63yY47Z1rtvW9ox27GpCwBM3y9/+cua/8dAa6uttlpadtll89m9LbbYwiaEZib+6JfF8RohfMkll0x33HFH2m+//Zq0bMyY8847L91+++35ezYG/aH171t/a1umbt26pddffz2NHj06h6+jjz46tzDadNNNm7poFLxvf9mCfh+r6W4CPXr0SB06dEjDhw+vdX/cXmihhep9Ttw/reXL1w1ZJy1j39YnvnDitT744INGKjmNvV+bYp003/0Qo6+usMIKjtkWsm8vvPDCHMweffTR/COuzN/a1rtv6+NvbcvYr9FMebnllsujWx9zzDFp1113Teeee25+zDHbevdtSztmhe4mEE0k+vTpk8/YlE2ZMiXfXn/99et9TtxfuXwYOHBgzfJLL710/tBWLjNy5Mj04osvTnWdtIx9W5/PP/8891mJ6eFonvu1KdZJ890PcZb+ww8/dMy2gH07YMCAdOaZZ+auATFdTSV/a1vvvq2Pv7Ut8/s4njN+/Pj8f8ds6923Le6YbeqR3NrysPkxsviNN96Yh8I/4IAD8rD5w4YNy4/vtddepRNOOKHWtFIdO3YsXXjhhXmqixgZt74pw2Id//jHP0pvvvlmHs3PlGEtf9+OGjUqT0/0/PPPlz7++OPSY489VlprrbVKyy+/fGncuHFN8A7bpobu1/Hjx+epaeKy8MIL530Y/3///fdneJ203H17zDHHlJ566ql8zMYxvuWWW5Z69OhR+vLLL+3WZrxv4+9oTGlz11131ZqCJr6HK5fxt7b17Vt/a1vmfj3nnHNKjz76aOnDDz/My8dvqfhNde2119Ys45htnft2VAv7fSx0N6HLL7+8tMQSS+Q/AjGM/gsvvFDz2CabbJKHwa90xx13lFZYYYW8fMz/+sADD9R6PKZF+P3vf1/q2bNn/lBvscUWpcGDB8+290Mx+3bs2LGlrbfeurTAAgvkMB5TFMXchoJZ896v8QcgzmvWvcRyM7pOWu6+3W233XIgj/Utuuii+XbMM0rz3rfx/Vrfvo2ToWX+1rbOfetvbcvcryeddFJpueWWK3Xp0qU077zzltZff/0c7io5Zlvnvh3bwn4ft4t/mrq2HQAAAFojfboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugGgDWjXrl269957m7oYadiwYWmrrbZKXbt2Td27d2/q4gBA4YRuAJiKffbZJ4fVuMwxxxxpueWWS2eccUaaNGlSs91mp512WlpjjTV+dP8XX3yRtt1229TULrnkklyW119/Pb333ntNXRwAKFzH4l8CAFqubbbZJt1www1p/Pjx6cEHH0yHHHJI6tSpUzrxxBN/tOyECRNyOG8KpVIpTZ48eaqPL7TQQqk5+PDDD1OfPn3S8ssv39RFAYDZQk03AExD586dc2Bdcskl00EHHZS23HLLdN9999XUhO+0007p7LPPTossskjq1atXvv+tt95Km2++eZpzzjnT/PPPnw444IA0evTomnWWn3f66aenBRZYIM0999zpt7/9bQ7tZRHyDz/88LTgggumLl26pA033DC9/PLLNY8/9dRTuQb+oYceyiE2ynnLLbfkdb7xxhs1NfQ33nhjvc3LZ7SMF154YVp44YXzMnHCYeLEidP8vFx99dVp2WWXzScfYnv85S9/qXlsqaWWSn//+9/TzTffnMsTrzE1119/fVp55ZXz+4rXP/TQQ2seu/jii9Oqq66am6gvvvji6eCDD65V9k8//TTtsMMOad55583LxHrihEnZ22+/nWv955prrtSzZ8+01157pREjRtQ8ftddd+X1l7dN7PMxY8ZM830DwNQI3QDQABHEKsPx448/ngYPHpwGDhyY7r///hzO+vbtmwNfhOQ777wzPfbYY7VCY/l51dXVOTzfdttt6e67786Buez444/PAfWmm25Kr776am7aHuv95ptvaq3nhBNOSOedd15eV/SVPuaYY3LIjCbccdltt91+9B5mtIxPPvlkrpmO6yhHBPhyiK/PPffck4444ohchgi2Bx54YNp3333z80O8VrQc+MUvfpHL9oc//GGqwT0CfpwIiJMDcZIj3n9Z+/bt02WXXZbeeeedXK4nnngib6+yeG6ctHjmmWfy888///wcsMN3332XTzasueaa6ZVXXkkPP/xwGj58eC5TiHL96le/Sr/+9a9r9s8uu+ySWxIAwEwpAQD16t+/f2nHHXfM/58yZUpp4MCBpc6dO5eOPfbYmsd79uxZGj9+fM1z/vSnP5XmnXfe0ujRo2vue+CBB0rt27cvDRs2rOZ58803X2nMmDE1y1x99dWlueaaqzR58uT83E6dOpVuvfXWmscnTJhQWmSRRUoDBgzIt5988slIgaV77723VplPPfXU0uqrr/6j9xLL3nPPPQ0q45JLLlmaNGlSzTI///nPS7vttttUPy0//elPS/vvv3+t++I52223Xc3t2J6x7mmJ93nSSSeVZtSdd95Zmn/++Wtur7rqqqXTTjut3mXPPPPM0tZbb13rvs8++yxvn8GDB5cGDRqU///JJ5/M8OsDwLSo6QaAaYja66gljSbe0SQ5ao5jsLKyaIZc2Y87akdXX3313Ky5bIMNNkhTpkzJNeJlsUxVVVXN7fXXXz83kf7ss89y7XI0447nlUU/8nXWWSevv9Laa6/d4P03o2WMGvMOHTrU3I5m3l9++eU011tZ5vJ665Z5WmL9Q4cOTVtsscVUl4la+Xh80UUXTd26dcvNw7/++us0duzY/Hg0yz/rrLPya5966qnpzTffrHluNL2PmvfYp+XLiiuumB+L7R7bJdYd+/XnP/95uvbaa9O33347w+UHgLqEbgCYhs022yyPtP3++++nH374ITdnrgyrlf9vCkW+fgT9StEPO4J50c33p+WTTz5JP/vZz9Jqq62Wm98PGjQoXXnllfmxcrP/3/zmN+mjjz7KYTyal8eJicsvvzw/Fic2or937NPKS+zfjTfeOJ9kiK4C0Vd+pZVWys+Lvukff/xxoe8bgNZL6AaA6YTa6E+8xBJLpI4dpz/pR+/evXNtauXAW88++2zuh1weaC3EMhHiy1544YVc6xoDg5UHIovnlUXNd/SJjiA4LfG8aY1i3pAyNlSst7LM5fVOr8yVouY6BlyLPu/1iZAdwf+iiy5K6623XlphhRVyzXhdsR1jcLroKx99zKPGOqy11lq5L3i8RuzXykv5BEacXIha8uhj/9prr+VtGv3VAWBmCN0A0Ij22GOP3BS9f//+eTCxaMp82GGH5VrXGCm7LGpl99tvv/Tuu+/mkbWjGXQMZBbBN8JfjJR+3HHH5YG+Ypn9998/N5+O50xLhMmolY3a2xiROwYUm9kyNlSUNwZai4HQouY4RhmP0Hvsscc2aD3RfD9CdQyWFuuJgeTKNdURjuMERNyO2uwYHf2aa66p9fwjjzwyPfLII3k7xHPj/cUJgfIgazEYXQyWFicxokl5LBsDvsXJihdffDGdc845eZC1IUOG5PJ/9dVXNc8HgIYSugGgEUU/7QhxEex+8pOfpF133TX3Eb7iiitqLRf3xVzV0aQ5+on/z//8T62+4jEieb9+/XIQjtrZDz74IK83RhyflnhOjBAezeJjOrIYGX1my9hQMcVYjEge04xFf/A//vGPeY7zTTfdtEHriZMBl156abrqqqvyeqI5eYTvEH2uI8zHiOSrrLJKuvXWW9O5555b6/kRniNcR1CObRG14bGuEFO7Re17LLP11lvnvtsR0rt3755PeMT0bTHq+XbbbZefd/LJJ+cTANGfHwBmRrsYTW2mngkAzJSYnzqmrqqcNxsAaJ3UdAMAAEBBhG4AAAAoiOblAAAAUBA13QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAkIrx/wFAXTiS7tqB2QAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# Import necessary libraries\n", "import pandas as pd\n", @@ -75,6 +98,9 @@ "import warnings\n", "warnings.simplefilter(action='ignore', category=FutureWarning)\n", "\n", + "#set random seed for reproducability \n", + "np.random.seed(123)\n", + "\n", "# Constants representing the parameters of the model\n", "ATTACK_RATE = 0.10\n", "TRACE_SUCCESS = 0.20\n", @@ -207,7 +233,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.13.0" + "version": "3.11.6" } }, "nbformat": 4, From d6a88ba5196ffff471cf1ea5a5603b6cfad42523 Mon Sep 17 00:00:00 2001 From: zainabh Date: Mon, 8 Jun 2026 00:25:19 -0400 Subject: [PATCH 2/2] Complete assignment 2 --- .../a2_survey_design_and_evaluation.md | 110 +++++++++++++++--- 1 file changed, 96 insertions(+), 14 deletions(-) diff --git a/02_activities/assignments/a2_survey_design_and_evaluation.md b/02_activities/assignments/a2_survey_design_and_evaluation.md index b4f036f2..ab171583 100644 --- a/02_activities/assignments/a2_survey_design_and_evaluation.md +++ b/02_activities/assignments/a2_survey_design_and_evaluation.md @@ -40,30 +40,34 @@ For the **Canadian General Social Survey on Giving, Volunteering, and Participat ## Part A - Survey Design: -The number of your chosen topic: `#` +The number of your chosen topic: `#3` Describe the purpose of your survey: ``` -write your answer here... +This survey looks at the relationship between age and music taste with a focus on perceptions of popular music. The goal is to capture both cross-sectional differences across age and retrospective self-reports of how individuals own tastes have shifted over time. ``` Describe your target population, sampling frame, sampling units, and observational units: ``` -write your answer here... +The target populations are adults 18+ in Canada who listen to music at least occasionally. Because the study requires age diversity and retrospective self-reporting (same individual at different life stages), a stratified random sample is appropriate-stratifying by age group to ensure enough representation across life span with oversampling of older groups if needed to balance sizes. + +The sampling frame would be panel recruited through university pools (fo younger adults) and community/online recruitment targeting older age brackets, supplemented by social media outreach. Sampling units are individual people (one per household if household-based recruitment is used). Observational units are also individual people, both their currernt music preferences and their retrospective accounts of past preferences. + +This cross-sectional +retrospective design is justified because a true longitudinal study would be prohibitevely slow for a research project, while a purely cross-sectional design conflates cohort effects with age effects. Stratified sampling ensures the analysis isn't dominated by whichever age groups is easiest to recruit. ``` Your 5-10 question survey: ``` -1. write your question here... -2. write your question here... -3. write your question here... -4. write your question here... -5. write your question here... -6. write your question here... (optional) -7. write your question here... (optional) -8. write your question here... (optional) -9. write your question here... (optional) -10. write your question here... (optional) +1. What is your age +2. How often do you currently listen to music? +3. Which genres do you most enjoy listening to right now? +4. How would you describe your attitude toward the popular music of today? +5. Thinking back to when you were between 15 and 25 years old, which genres did you listen to most? +6. compared to the music you listened to at age 15-25, how do you feel about the music you listen to now? +7. Do you think your music taste has become more or less open to new genres as you've gotten older +8. When you encounter a new popular song you've never heard before, what is your initial reaction most often? +9. To what extent do you agree: "Popular music today is lower quality than the popular music of my youth." +10. What do you think most influences your music taste? ``` ## Part B - Survey Evaluation: @@ -71,7 +75,85 @@ Your 5-10 question survey: Identify and describe survey features: ``` -write your answer here +1. Sample type: stratified probability sample with a cross-sectional design. Two stages: first stage samples clusters of telephone numbers linked to addresses; second stage randomly selects one eligible person per household. "Rejective sampling" was used so that all identified volunteers complete the full interview, while non volunteers are sub-sampled and randomly assigned to a long or short interview. + +2. Sample size +- 50,000 units in the field sample. -40,000 invitation letters sent. Target of +-24,000 completed questionnaires. + +3. Target population +Canadians aged 15+ living in private households across the ten provinces. +Excludes full-time residents of institutions and all three territories. + +4. Sampling frame +An integrated frame combining landline and cellular phone numbers (from the +Census and admin sources) with Statistics Canada's Address Register. +Households without any phone service are excluded. + +5. Survey mode +Electronic questionnaire (EQ, offered for the first time in 2018) or +Computer-Assisted Telephone Interviewing (CATI). Respondents chose their +preferred mode and language (English or French). No proxy responses allowed. +Average completion time was ~44 minutes. + +6. Timeline +Data collection: September 4 to December 28, 2018. Reference period: the +12 months preceding each respondent's interview date. Data released +January 26, 2021. + +7. Response rate +41.9%. + +8. Weights +WGHT_PER: person-level weight for producing population estimates. Bootstrap +weights are also provided for variance estimation. Weights account for +rejective sub-sampling, nonresponse (using administrative data on +non-respondents), and post-stratification to age-sex-province estimates. +Weights were also adjusted to match the 2017 Canadian Income Survey income +distribution by province. + +9. Data processing +Processing used Statistics Canada's SSPE system. Edits were applied at +multiple stages including consistency checks, flow edits, and range checks. +The CATI system enforced these in real time; unresolved errors were escalated +to head office for review. + +10. Cleaning, imputation, etc. +Nearest-donor hot-deck imputation: missing values on a recipient record were +filled using the donor record with the most matching characteristics. Mean +imputation was used where hot-deck was not possible. Imputation covered nine +steps across volunteering variables, donation amounts, and income. Income was +not asked directly; instead it was linked to 2017 CRA tax records (T1FF) for +81.9% of respondents, with the rest imputed. + +11. Sources of error +Sampling error: estimates vary across repeated samples; bootstrap weights are +provided to quantify this. Non-sampling errors include coverage error +(phone-less households and territories excluded), nonresponse error (41.9% +response rate despite weighting adjustments), response error (recall bias, +social desirability bias, and potential mode effects from the new EQ), and +processing error (minimized through structured editing). + +12. Limitations and known biases +Results are not comparable with any previous GSS GVP cycle because of the +new EQ mode and major questionnaire redesign. The 41.9% response rate is +low and introduces potential nonresponse bias. Territories, institutions, +and phone-less households are all excluded. Volunteering and donation +figures are likely overreported due to social desirability bias. Respondents +who declined tax record linkage required imputation for income. + +13. Links to documentation +Statistics Canada survey record (Cycle 33): +https://www23.statcan.gc.ca/imdb/p2SV.pl?Function=getSurvey&Id=796234 + +PUMF User Guide: +https://www150.statcan.gc.ca/n1/en/catalogue/452500112021001 + +The Daily release (January 26, 2021): +https://www150.statcan.gc.ca/n1/daily-quotidien/210126/dq210126h-eng.htm + +GSS Overview: +https://www150.statcan.gc.ca/n1/pub/89f0115x/89f0115x2019001-eng.htm ``` ## Rubric