diff --git a/02_activities/assignments/a1_sampling_and_reproducibility.ipynb b/02_activities/assignments/a1_sampling_and_reproducibility.ipynb index 11852458..05773ef6 100644 --- a/02_activities/assignments/a1_sampling_and_reproducibility.ipynb +++ b/02_activities/assignments/a1_sampling_and_reproducibility.ipynb @@ -16,7 +16,23 @@ "cell_type": "markdown", "id": "4ea73db3", "metadata": {}, - "source": [] + "source": [ + "Infection_indices (np.random.choice(ppl.index, size=int(len(ppl) * ATTACK_RATE), replace=False)) :\n", + "Method: simple random sampling without replacement\n", + "Frame: All 1000\n", + "Sample size: 100 individuals\n", + "\n", + "Contract tracing (ppl.loc[ppl['infected'], 'traced'] = np.random.rand(sum(ppl['infected'])) < TRACE_SUCCESS):\n", + "Method: Bernouli sampling\n", + "Frame: Infected only\n", + "Sample size: 100 individuals\n", + "\n", + "Running simulation (results = [simulate_event(m) for m in range(1000)]):\n", + "Method: Monte carlo (independent reps of previous sampling)\n", + "Sample size: All 1000\n", + "\n", + "\n" + ] }, { "cell_type": "markdown", @@ -30,7 +46,11 @@ "cell_type": "markdown", "id": "4cf5d993", "metadata": {}, - "source": [] + "source": [ + "At 1000: peaks between 0.15 - 0.25\n", + "At 100: Much greater peak at 0.2-0.25, compared to 1000.\n", + "At 10: All cases concetrated at 0.16 - 0.24 (vs only peaks being at this range before)" + ] }, { "cell_type": "markdown", @@ -44,7 +64,9 @@ "cell_type": "markdown", "id": "77613cc3", "metadata": {}, - "source": [] + "source": [ + "After setting random seed, the graphs are still distinct between the 3 simulations, but less variable within each simulation." + ] }, { "cell_type": "markdown", @@ -56,10 +78,21 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "id": "ab8587a0", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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s9tv40jN9pfu79ib3OXlMTExGjZsmIoUKSIPDw/lz59fffr0SXLZe+Jl9cuXL1elSpXk7e2t0qVL66uvvrrre3T27FlJUt68eZN93sXF8b/Ed/tbIKV8C0RytxQk1r5o0SI98cQT8vLy0ttvvy1JOnHihF5++WUVLFhQHh4eypcvn5577jn9888/9vkvXbqkQYMGObxH/fv319WrVx3WvWDBAlWrVk0BAQHy8fFR0aJF1a1bt7u+PwCsRegGkCo3btxQy5Yt1bhxY33//fdq2LChhg0bpn//+9/q3LmzunXrpsWLF6tUqVLq0qWLtm3blmQZ3bt3l4uLi+bMmaNJkyZp8+bNCgkJcfiP1eHDh1W9enVNmTJFK1as0PDhw/X777+rVq1aunHjhr3frl27VLVqVW3atEmjRo3SsmXLNHbsWMXGxur69etq3LixxowZI0n69NNPtXHjRm3cuFGNGzdO8TWuWbNGzzzzjC5evKhp06Zp7ty58vPzU9OmTTV//nxJNy95XbRokaSbl+tu3LhRixcvTnGZK1askKurq5o2bZqq93nOnDlq1qyZ/P39NXfuXE2bNk3nz59XSEiI1q9fn6R/q1atVLJkSS1cuFCvv/665syZo9dee83+/MaNG+Xt7W2/f3fjxo2aPHmypJuBT5JGjBihn376SdOnT1fRokUVEhKisLAw+zLi4uLUsGFDjR49Wk2aNNHixYs1Y8YM1ahRQxEREXddz/3o1q2b3N3d9fXXX+u7776Tu7u7Tp48qcDAQI0bN07Lly/Xp59+Kjc3N1WrVk379++3z3v58mXVqlVLn332mbp27aoffvhBU6dOVcmSJRUZGXnXdb/44otyd3fXnDlzNH78eIWFhdkDS6KuXbtq0qRJ6tq1q77//nu1atVKLVq0SNU9sjExMQoNDdWsWbM0YMAA/fTTT+rQoYPGjx+vli1bJun/008/6ZNPPtGoUaO0cOFCZc+eXS1atEgSJFPr0KFDkv53Gf/s2bNVr149+fv7a+bMmfr222+VPXt21a9fP9ng1bJlSxUvXlwLFizQ1KlTJd0MVP369VPVqlU1f/58zZs3T//6178cwseYMWPUtm1blS1bVt9++62+/vprXb58WU8//bT27t2bYr3dunVTRESEfv31V4f2ffv2afPmzeratau9rUePHurfv7+effZZLVmyRJMn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T+3YsUM+Pj569dVXFRQUpFGjRumNN97QX3/9pQYNGihbtmz6559/tHnzZvn6+tp/Riklbdu21YABA9S2bVvFxsYmuRe4Zs2aevnll9W1a1dt3bpVtWvXlq+vryIjI7V+/XqVL19evXr1UrZs2TRo0CC98847DselkSNH3tPl5WnRsWNHdejQQb1791arVq107NgxjR8/Pt3uk75X97L90/vYW7duXdWvX19Dhw7VpUuXVLNmTe3evVsjRozQE088oY4dO6bLa/z666/12WefqV27dqpataoCAgL0999/68svv9SePXs0fPhw+xdLqf1b0KhRI2XPnl3du3fXqFGj5ObmphkzZuj48eOpritxBPjatWvr3//+t8qXL68LFy5o+fLlGjBggEqXLq3+/ftr4cKFql27tl577TVVqFBBCQkJioiI0IoVKzRw4EBVq1ZNw4cP199//606deqoQIECunDhgj766CO5u7srODg4Xd5HAGnkvDHcAGRGKY1e7uvrm6RvcHCweeyxx5K03z6ybuIyV6xYYTp27GiyZs1qvL29TaNGjczBgwcd5t27d6+pW7eu8fPzM9myZTPPP/+8iYiISDLCdGLf559/3gQGBhoPDw9TqFAh06VLFxMTE2PvM2nSJFOkSBHj6upqJJnp06ff8fWvW7fOPPPMM8bX19d4e3ubp556yvzwww8Ofe5l9PJEp06dMkOHDjWPPfaY8fHxMZ6enqZ48eKmR48e5o8//nDou2TJElOtWjXj5eVlfH19TZ06dcxvv/3m0Cdx1NwzZ844tCc3au7OnTtNzZo1jY+Pj8OozLGxsWbQoEEmf/78xsvLy1SqVMksWbIkyejCxtwcIXj48OGmRIkSxsPDwwQGBppnnnnGbNiw4a7ruZs7jV5++2i9xtwcdbp79+4mV65cxsfHx9SqVcusW7cu2ZGfz58/b/r162cKFSpk3N3dTa5cuUzjxo3Nvn377H1u37dSWndinbeOyBwTE2MGDBhgcuXKZby8vMxTTz1lNm7caAICAhxGUk/J2bNnTc+ePU3evHmNm5ubKVy4sBk2bJjDPpxYY58+fZLMn9Io2Le6l/11zZo1pnHjxiZ79uzG3d3d5M+f3zRu3Nhh26S07xlzc7TrDz/80JQrV854eHiYgIAAU7169SSfoSVLlpjQ0FDj7+9vPD09TeHChc1zzz1n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9ejRQ127dk1yhvftt99W69attXv3bjVq1Ejt27e31/HWW29p7969WrZsmcLDwzVlypQULxn/6KOPNGrUKBUoUECRkZHasmWLw3vk5uam3377TZ999plOnDihRo0aqWrVqtq1a5emTJmiadOm6Z133kny3ubIkUObN2/Wq6++ql69eun5559XjRo1tH37dtWvX18dO3ZUdHTytyP4+vqqatWqDq95zZo1qlOnjmrWrGlvP378uP766y+Fhoamavt8++23GjFihN59911t3bpVefPm1eTJkx3WPWHCBH311VeaNm2a1q9fr3Pnzmnx4sXJ1nn7fFWqVNGOHTvUu3dv9erVS/v27ZMkXb58WU2bNlX58uW1fft2jR49WkOHDnWY/162GQAAAPBQMw+5ixcvGknm4sWLSZ67du2a2bt3r7l27ZpD+7Zt24wkU7nyNhMSYix9VK58c13btm1L9Wvq3LmzadasmX06ODjY1KpVy6FP1apVzdChQ+3TzZo1M507d7ZPr1q1yvj7+5uYmBiH+YoVK2Y+++wzY4wx1atXN+3bt0+xjsKFC5sPP/zQoW369OkmICDAPl2jRg3z0ksvOfR5/vnnTaNGjezTksybb75pn75y5Yqx2Wxm2bJlxhhjmjZtarp27ZpiHbf78MMPTeHChR3agoODTcWKFR3a/v3vf5tSpUqZhIQEe9unn35qsmTJYuLj4+3z3frexsXFGV9fX9OxY0d7W2RkpJFkNm7cmGJN//73v03JkiWNMcbs2bPH+Pv7m7i4ODNu3DjTrl07Y4wxM2fONJ6eniY6OjrV26dnz54Oz1erVs08/vjj9um8efOacePG2adv3LhhChQokGT/6devn326cOHCpkOHDvbphIQEkytXLjNlyhRjjDFTpkwxgYGBDp+bL774wkgyO3bsMMbc+zZL6bMIAAAAZKQ75ce04kz3Q6JChQoO03nz5tXp06dT7L9t2zZduXJFgYGBypIli/1x5MgRHT58WJK0c+dO1alT577qCg8PV82aNR3aatas6TCo2O31+/r6ys/Pz15/r169NG/ePFWsWFFDhgzRhg0b0lRL4ln6W2urXr26w29E16xZU1euXNHff/+dbG2urq4KDAxU+fLl7W25c+eWpDu+36GhoTpw4IBOnjypsLAw1apVS66urgoODrZfdh4WFqannnpK3t7eqdo+ifXf6tbpixcvKjIy0qHNzc0tyfuQnFtfs81mU548eeyvb//+/apQoYK8vLzsfZ588kmH+dNrmwEAAAAPOqeG7rVr16pp06bKly+fbDZbktG4jTEaOXKk8uXLJ29vb4WEhGjPnj3OKTaTu330aZvNpoSEhBT7JyQkKG/evNq5c6fDY//+/Ro8eLAkpduAaLeGWunmdr297U71N2zYUMeOHVP//v118uRJ1alTR4MGDbrnOnx9fe9ah/n/+51vbU+utlvbEvve6f2uWbOmPDw8FBYWptWrVys4OFjSzS8CLl68qAMHDmj16tX2+7lTs32sdKftcaf3LVF6bTMAAADgQefU0H316lU9/vjj+uSTT5J9fvz48Zo4caI++eQTbdmyRXny5FHdunV1+fLlDK704VOpUiWdOnVKbm5uKl68uMMj8d7bChUqaNWqVSkuw8PDQ/Hx8XdcT5kyZbR+/XqHtg0bNqhMmXsbQC5nzpzq0qWLZs+erUmTJiUZ2CstypYtqw0bNjgExg0bNsjPz0/58+e/7+XfytvbW9WqVVNYWJjWrl2rkJAQSTfPPNeoUUOzZs3S0aNH7aE7NdunTJky2rRpk8N6bp0OCAhQ3rx5Hdri4uK0bdu2+3otpUuX1u7duxUbG2tv27p1a5J+VmwzAAAA4EHj1NDdsGFDvfPOO/YRsW9ljNGkSZP0xhtvqGXLlipXrpxmzpyp6OhozZkzxwnVPlyeffZZVa9eXc2bN9cvv/yio0ePasOGDXrzzTftAWrEiBGaO3euRowYofDwcP3xxx8aP368fRlBQUFau3atTpw4oaioqGTXM3jwYM2YMUNTp07VwYMHNXHiRC1atOieznoOHz5c33//vQ4dOqQ9e/boxx9/vOfQnpzevXvr+PHjevXVV7Vv3z59//33GjFihAYMGCAXl/T/aISGhmrevHm6du2aKlWqZG8PDg7Wf/7zH3swl1K3ffr166evvvpKX331lQ4cOKARI0YkuRKkX79+GjdunBYvXqx9+/apd+/eunDhwn29jnbt2ikhIUEvv/yywsPD9csvv+iDDz6Q9L+z/lZtMwAAAOBBk2l/p/vIkSM6deqU6tWrZ2/z9PRUcHCwNmzYoB49eiQ7X2xsrMMZuEuXLqW5hujo8Lt3uk8ZsY7k2Gw2/fzzz3rjjTfUrVs3nTlzRnny5FHt2rXt9yiHhIRowYIFGj16tMaNGyd/f3/Vrl3bvoxRo0apR48eKlasmGJjY5NcYixJzZs310cffaT3339fffv2VZEiRTR9+nT7md7U8PDw0LBhw3T06FF5e3vr6aef1rx58+77PcifP79+/vlnDR48WI8//riyZ8+u7t27680337zvZScnNDRUo0aNUoMGDeTm9r+PXnBwsN58803VqVNHnp6eklK3fdq0aaPDhw9r6NChiomJUatWrdSrVy/98ssv9mUPHDhQkZGR6tKli1xcXNStWze1aNFCFy9eTPPr8Pf31w8//KBevXqpYsWKKl++vIYPH6527drZ7/O2apsBAB4eERERKX5pD+DhlCNHDhUqVMjZZWQ4m0kuKTmBzWbT4sWL1bx5c0k3L/OtWbOmTpw4oXz58tn7vfzyyzp27JhDsLjVyJEj9fbbbydpv3jxovz9/R3aYmJidOTIERUpUsRhUKiIiAiVKlVGMTHJ/wRUevPy8tH+/eGP5A6Ih8M333yjrl276uLFi2kaCyClzyIA4OGU0f/XApA5PAi559KlSwoICEg2P6ZVpj3TnSg1g3DdatiwYRowYIB9+tKlSypYsOA9rbNQoULavz88w759fVS/8cGDa9asWSpatKjy58+vXbt2aejQoWrdunW6Db4HAHi4RUVFKSYmWmXKzJaPD7cfAY+C6OhwhYd3UFRU1COXfTJt6M6TJ48k6dSpU8qbN6+9/fTp0/bLa5Pj6elpv0T3fhQqVOiR2xmA1Dp16pSGDx9u/3w+//zzevfdd51dFgDgAePjU0Z+fpXu3hEAHmCZ9ne6ixQpojx58mjlypX2tuvXr2vNmjWqUaOGEysDMGTIEB09etR+WfiHH34oHx8fZ5cFAAAAZDpOPdN95coVHTp0yD595MgR7dy5U9mzZ1ehQoXUv39/jRkzRiVKlFCJEiU0ZswY+fj4qF27dk6sGgAAAACA1HFq6N66dav9d4kl2e/F7ty5s2bMmKEhQ4bo2rVr6t27t86fP69q1appxYoV8vPzc1bJAAAAAACkmlNDd0hISLI/M5XIZrNp5MiRGjlyZMYVBQAAAABAOsm093QDAAAAAPCgI3QDAAAAAGARQjcAAAAAABbJtL/T7WwRERGKiorKkHXlyJHjofxN8C5duujChQtasmSJs0tJN6l5TSEhIapYsaImTZokSQoKClL//v3Vv3//DKkRAAAAQOZB6E5GRESEypQqpeiYmAxZn4+Xl8L3709V8LbZbHd8PnHk9wfBjBkz1L9/f124cOG+lvPCCy/o4sWLWrZsmb1t2bJlatSokd58802NHj3a3j569GhNmTJFJ0+evK913ostW7bI19c3w9YHAAAAIPMgdCcjKipK0TExml2mjMr4+Fi6rvDoaHUID1dUVFSqQndkZKT93/Pnz9fw4cO1f/9+e5u3t7dD/xs3bsjd3T39Cs6EQkNDNWjQIMXFxcnN7eYuHRYWpoIFC2r16tUOfcPCwhx+pi4j5MyZM0PXBwAAACDz4J7uOyjj46NKfn6WPu411OfJk8f+CAgIkM1ms0/HxMQoa9as+vbbbxUSEiIvLy/Nnj1bZ8+eVdu2bVWgQAH5+PiofPnymjt3rsNyExIS9N5776l48eLy9PRUoUKF9O6779qfP3HihNq0aaNs2bIpMDBQzZo109GjR+3Px8fHa8CAAcqaNasCAwM1ZMiQO/4cXFhYmLp27aqLFy/KZrPZfx5Oks6fP69OnTopW7Zs8vHxUcOGDXXw4MEUlxUaGqorV65o69atDst//fXXtWXLFkVHR0uSrl+/ro0bN9pDd3q8pqtXr6pTp07KkiWL8ubNqwkTJiSpLygoyH6puXTzaoUvv/xSLVq0kI+Pj0qUKKGlS5c6zLN06VKVKFFC3t7eCg0N1cyZM2Wz2exXBRw7dkxNmzZVtmzZ5Ovrq8cee0w///xziu8RAAAAAOcgdD+Ehg4dqr59+yo8PFz169dXTEyMKleurB9//FF//vmnXn75ZXXs2FG///67fZ5hw4bpvffe01tvvaW9e/dqzpw5yp07tyQpOjpaoaGhypIli9auXav169crS5YsatCgga5fvy5JmjBhgr766itNmzZN69ev17lz57R48eIUa6xRo4YmTZokf39/RUZGKjIyUoMGDZJ0877prVu3aunSpdq4caOMMWrUqJFu3LiR7LJKliypfPny2c9qX758Wdu3b9fzzz+vYsWK6bfffpMkbdq0SdeuXVNoaGi6vabBgwdr9erVWrx4sVasWKGwsDBt27btrtvo7bffVuvWrbV79241atRI7du317lz5yRJR48e1XPPPafmzZtr586d6tGjh9544w2H+fv06aPY2FitXbtWf/zxh9577z1lyZLlrusFAAAAkLG4vPwh1L9/f7Vs2dKhLTHQStKrr76q5cuXa8GCBapWrZouX76sjz76SJ988ok6d+4sSSpWrJhq1aolSZo3b55cXFz05Zdf2u8pnz59urJmzaqwsDDVq1dPkyZN0rBhw9SqVStJ0tSpU/XLL7+kWKOHh4fDmfpEBw8e1NKlS/Xbb7+pRo0akqRvvvlGBQsW1JIlS/T8888nu7yQkBCFhYVp2LBhWrdunUqWLKmcOXMqODhYYWFhqlu3rv2S82LFiumrr76679d05coVTZs2TbNmzVLdunUlSTNnzlSBAgXutonUpUsXtW3bVpI0ZswYffzxx9q8ebMaNGigqVOnqlSpUnr//fclSaVKldKff/7pcOVBRESEWrVqpfLly0uSihYtetd1AgAAAMh4hO6HUJUqVRym4+PjNW7cOM2fP18nTpxQbGysYmNj7YN7hYeHKzY2VnXq1El2edu2bdOhQ4fk5+fn0B4TE6PDhw/r4sWLioyMVPXq1e3Pubm5qUqVKne8xDw54eHhcnNzU7Vq1extgYGBKlWqlMLDw1OcLzQ0VP3799eNGzcUFhamkJAQSVJwcLA+/vhjSTcvOX/mmWfS7TUdPnxY169fd+iTPXt2lSpV6q6vs0KFCvZ/+/r6ys/PT6dPn5Yk7d+/X1WrVnXo/+STTzpM9+3bV7169dKKFSv07LPPqlWrVg7LBAAAAJA5ELofQrePlD1hwgR9+OGHmjRpksqXLy9fX1/179/ffhn17YOv3S4hIUGVK1fWN998k+S59B4kLKWQboy548jtoaGhunr1qrZs2aLVq1dr8ODBkm6G7k6dOuncuXPauHGj/Ux+eryme/1C4Va3D25ns9mUkJBgX+7tr/X2db344ouqX7++fvrpJ61YsUJjx47VhAkT9Oqrr6a5JgAAAADpj3u6HwHr1q1Ts2bN1KFDBz3++OMqWrSow8BkiQN2rVq1Ktn5K1WqpIMHDypXrlwqXry4wyMgIEABAQHKmzevNm3aZJ8nLi7urvc2e3h4KD4+3qGtbNmyiouLc7jf/OzZszpw4IDKlCmT4rKKFSumggULaunSpdq5c6eCg4MlSXnz5lVQUJAmTJigmJgY+yBq6fGaihcvLnd3d4c+58+f14EDB+74uu+mdOnS2rJli0PbrYPEJSpYsKB69uypRYsWaeDAgfriiy/ua70AAAAA0h+h+xFQvHhxrVy5Uhs2bFB4eLh69OihU6dO2Z/38vLS0KFDNWTIEM2aNUuHDx/Wpk2bNG3aNElS+/btlSNHDjVr1kzr1q3TkSNHtGbNGvXr109///23JKlfv34aN26cFi9erH379ql37953/f3toKAgXblyRatWrbr5M23R0SpRooSaNWuml156SevXr9euXbvUoUMH5c+fX82aNbvj8kJDQzV58mQVL17cPgic9L9LzIsWLWr/Wbb0eE1ZsmRR9+7dNXjwYK1atUp//vmnunTpIheX+/tY9ejRQ/v27dPQoUN14MABffvtt/bfXk88A96/f3/98ssvOnLkiLZv365ff/31jl9KAAAAAHAOLi+/g/D//6mpB30db731lo4cOaL69evLx8dHL7/8spo3b66LFy869HFzc9Pw4cN18uRJ5c2bVz179pQk+fj4aO3atRo6dKhatmypy5cvK3/+/KpTp478/f0lSQMHDlRkZKQ9dHbr1k0tWrRwWMftatSooZ49e6pNmzY6e/asRowYoZEjR2r69Onq16+fmjRpouvXr6t27dr6+eef7/p746GhoZo1a5b9fu5EwcHB+vLLL9W6dWt7W3q9pvfff19XrlzRv/71L/n5+WngwIF3fM2pUaRIEX333XcaOHCgPvroI1WvXl1vvPGGevXqJU9PT0k379Pv06eP/v77b/n7+6tBgwb68MMP72u9AAAAANKfzdzPjakPgEuXLikgIEAXL160h6lEMTExOnLkiIoUKSIvLy97e0REhMqUKqXomJgMqdHHy0vh+/fbz8ICt3v33Xc1depUHT9+3NmlWCKlzyIA4OG0fft2Va5cWZUrb5OfXyVnlwMgA1y+vF3btlXWtm3bVKlS5v3c3yk/phVnupNRqFAhhe/fr6ioqAxZX44cOQjccDB58mRVrVpVgYGB+u233/T+++/rlVdecXZZAAAAAO4RoTsFhQoVIgjDaQ4ePKh33nlH586dU6FChTRw4EANGzbM2WUBAAAAuEeEbiAT+vDDD7lHGwAAAHgIMHo5AAAAAAAWIXQDAAAAAGARQrekhIQEZ5cAPNL4DAIAAOBh9Ujf0+3h4SEXFxedPHlSOXPmlIeHh2w2m7PLAh4Zxhhdv35dZ86ckYuLizw8PJxdEgAAAJCuHunQ7eLioiJFiigyMlInT550djnAI8vHx0eFChWSiwsX3wAAAODh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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# Import necessary libraries\n", "import pandas as pd\n", @@ -75,6 +108,9 @@ "import warnings\n", "warnings.simplefilter(action='ignore', category=FutureWarning)\n", "\n", + "# Edit for reproducibility\n", + "np.random.seed(42)\n", + "\n", "# Constants representing the parameters of the model\n", "ATTACK_RATE = 0.10\n", "TRACE_SUCCESS = 0.20\n", @@ -131,7 +167,7 @@ " 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", + "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 +229,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "plotting_env", "language": "python", "name": "python3" }, @@ -207,7 +243,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.13.0" + "version": "3.11.14" } }, "nbformat": 4, diff --git a/02_activities/assignments/a2_survey_design_and_evaluation.md b/02_activities/assignments/a2_survey_design_and_evaluation.md index a955d827..d0b3445d 100644 --- a/02_activities/assignments/a2_survey_design_and_evaluation.md +++ b/02_activities/assignments/a2_survey_design_and_evaluation.md @@ -21,6 +21,8 @@ Select one of the scenarios below and design a survey to meet the need(s) outlin For the **Canadian General Social Survey on Giving, Volunteering, and Participating, 2018 (cycle 33)**, conducted by Statistics Canada find any and all available documentation for the data gathered and identify and describe the survey features indicated below. +Identify and describe survey features: + 1. Sample type 2. Sample size 3. Target population @@ -35,44 +37,62 @@ For the **Canadian General Social Survey on Giving, Volunteering, and Participat 12. Limitations, known biases, etc 13. Link to documentation and any additional sources used - # Your Changes ## Part A - Survey Design: -The number of your chosen topic: `#` +The number of your chosen topic: `#2` Describe the purpose of your survey: -``` -write your answer here... -``` + +The purpose of this survey is to determine current perception of the political party I work for. The response from the survey population will be used to reinforce and highlight proposed policies / priorities of my party during the last month of campaining. Describe your target population, sampling frame, sampling units, and observational units: -``` -write your answer here... -``` + +My target population needs to Canadian nationals, aged 18 and over. +Sampling frame - List of registered voters from a up-to-date national database +Sampling unit - each indivdual voter +Sampling strategy - Stratified random sampling. Strata will be based on major demographic categories (age, riding, gender, employment etc) 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. How likley are you to vote this up-coming election? (answers will be range of likliness) +2. Which of the following issues are most important to you? +3. How satisfied are you with you current parties performance? +4. How likely are you to continue to vote for your current party? +5. What qualities do you prioritize for your party leader? (multiple selection) ## Part B - Survey Evaluation: -Identify and describe survey features: +1. Sample type - Probability sample design with a stratified sampling approach (27 strata total). Additionally the sample strategy was as following: "Each record in the survey frame was assigned to a stratum within its province. A simple random sample without +replacement of records was next selected in each stratum" +2. Sample size - 16,149 individuals aged 15 years and older from different Canadian provinces (excludes territories) +3. Target population - aged 15 years and older living in private households from the above mentioned regions +4. Sampling frame - Frame was generated from lists of telephone numbers in use and the The Address Register within 10 provinces +5. Survey mode(s) - Electronic questionnaire or telephone interview +6. Timeline - September to December, 2018 +7. Response rate - 41.9% overall +8. Weights - +Probability of each record within a stratum has an equal probability of selection = (Number of records sampled in the stratum / Total number of records in the stratum from the survey frame) +Person weight calculation: +(Initial Household Weight x Factor 1 x Number of eligible household members) +9. Data processing +Responses to survey questions were entered directly into computers by respondents who self-completed the electronic questionnaire or telephone. Responses were then filled into appropriate categories using custon code by survey team. +10. Cleaning, imputation, etc +Out-of-scope respondents were removed. "Records with missing or incorrect information were, in a small number of cases, corrected deterministically or imputed +from other information on the questionnaire." using a top-down approach. New values for questions such as "Valid skip" and "not stated" were created. +11. Sources of error +Non sampling error - non-response on survey results +Coverage error - some groups may be under-represented +Mode variation - online response option may influence how people answer compared to telephone interviews +12. Limitations, known biases, etc +Exclusion of territories. +Some non-response bias may still be retained after weighting +13. Link to documentation and any additional sources used +Data website: https://www150.statcan.gc.ca/n1/pub/45-25-0001/index-eng.htm +Zip file source: https://www150.statcan.gc.ca/n1/pub/45-25-0001/cat5/c33_2018.zip +All information was found in the "guide" pdf from the above link. -``` -write your answer here -``` ## Rubric