diff --git a/Exercise sheet 2/exercise_sheet_02.ipynb b/Exercise sheet 2/exercise_sheet_02.ipynb index 6e295c7..6e3fcbc 100644 --- a/Exercise sheet 2/exercise_sheet_02.ipynb +++ b/Exercise sheet 2/exercise_sheet_02.ipynb @@ -411,7 +411,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "id": "210f1302", "metadata": { "deletable": false, @@ -426,20 +426,69 @@ "task": false } }, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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X2XatGns2bPnY9sXLVrE+PHjmTRpUsLXbdq0icsuu4yCgoKE+7saneGLSJd11113tRj20BT4+/a19Kc92qaxsTEpx0klBb6IdAlnzpxh3rx5XHHFFUyZMoWGhga++c1vsmHDBgDKy8spKCigsLCQ73//+zz77LNUVFRw2223UVRUxN/+9jeqq6sZM2YMhYWFTJ8+nX/84x8AVFZWUlhYyNixY7ntttsYPnw4AGvWrOHrX/861157LVOmTOHEiRNMnDiRkSNHMmLECH73u98BTb+BDBs2jBtvvJHhw4czZ84ctm7dylVXXcXQoUPZuXPnOfmMFPgi0iX89a9/5Tvf+Q579+7lggsu4NFHHz2778iRIzz22GPs3buXmpoa7rzzTsaNG8d1113HvffeS3V1NZdeeinXX389S5cupaamhhEjRvCTn/wEgLlz57Jy5Uqee+45srOzP/a+zz33HA8//DBPPfUUubm5PPbYY7zwwgs8/fTTfO973zv7bJ26ujpuueUWampqePHFF1m7di07duxg2bJl/PSnPz0nn5ECX0S6hPz8fIqKigD44he/yKuvvnp2X58+fcjNzeXGG29k48aN9OzZ8xOvP3bsGEePHmXChAkA3HDDDWzfvp2jR49y/Phxxo0bBzT9ec94kydP5jOf+QzQ9MTMO+64g8LCQiZNmsQbb7zB3//+97P1jRgxgqysLK644gomTpyImTFixIiP1ZpKCnwR6RJ69Ohxdjk7O/tjc+rdunVj586dfPWrX2XTpk2UlpZGPm5rzxv76JHLAI888ghvv/02u3btorq6ms997nOcOnXqE/VlZWWdXc/Kyjpn8/8KfBHp8k6cOMGxY8eYOnUqy5cvP/tXueIfcdy3b18uvPBC/vSnPwHw61//mgkTJnDhhRfSu3dvnn/+eQDWrVvX4vscO3aMAQMGkJOTw9NPP82BAwdS27E20mWZIpJUUS6jPNeOHz9OWVkZp06dwt35+c9/DsDMmTOZN28eK1asYMOGDTz88MMsWLCAkydPcskll/DQQw8B8Ktf/Yp58+bRq1cvSkpK6Nu3b8L3mTNnDtdeey2jRo2iqKiIYcOGnbM+RqHHI0ub6fHIEi/THo/cHidOnOD8888HYMmSJbz55pv84he/SPn7JvvxyDrDFxFpxeOPP84999xDY2MjF198MWvWrEl3Se2iwBcR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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], "source": [ "def f_inv_discrete(prob_list,p):\n", - " # YOUR CODE HERE\n", - " raise NotImplementedError()\n", + " assert np.isclose(np.sum(prob_list), 1), \"The probabilities should sum to one.\"\n", + " \n", + " p_cum = 0\n", + " i = 0\n", + " while p_cum < p:\n", + " p_cum += prob_list[i]\n", + " i += 1\n", + " return i\n", "\n", "# plotting\n", - "# YOUR CODE HERE\n", - "raise NotImplementedError()" + "f_X = lambda prob_list, x: prob_list[np.rint(x).astype(int) - 1] if np.rint(x) in range(1, len(prob_list) + 1) else 0\n", + "\n", + "# Input parameters as list for flexibility in testing.\n", + "for prob_list in [[.1, .3, .2, .4], [0.5, 0.5], [0.7, 0.1, 0.2]]:\n", + " alpha, b = params\n", + " pdf = lambda x: f_X(prob_list, x)\n", + " samples = [inversion_sample(lambda p: f_inv_discrete(prob_list, p)) for _ in range(100000)]\n", + " compare_plot(samples, pdf, .5, len(prob_list) + .5, len(prob_list))" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "id": "3c691f0a", "metadata": { "deletable": false,