{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "fe446bd5-ea33-43a8-af48-b973617563a8", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import scipy" ] }, { "cell_type": "code", "execution_count": 2, "id": "8c532763-c8ea-451b-b9a5-10e71e4bf542", "metadata": {}, "outputs": [], "source": [ "def calc_lambd_optimal(X):\n", " def neg_log_likelihood(lambd):\n", " return -np.sum(-lambd * X + np.log(lambd))\n", "\n", " # use scipy to find the optimum lambd for likelihood\n", " return scipy.optimize.minimize_scalar(\n", " neg_log_likelihood, bounds=(1e-9,1000)\n", " ).x" ] }, { "cell_type": "code", "execution_count": 3, "id": "1ffb73eb-4fcd-4124-9018-56a0bf097cfc", "metadata": {}, "outputs": [], "source": [ "def dataset_analysis(X):\n", " lambd_optimal = calc_lambd_optimal(X)\n", "\n", " # bootstrapping\n", " lambd_bootstrapped = [\n", " calc_lambd_optimal(np.random.choice(X, size=len(X)))\n", " for i in range(1000)\n", " ]\n", "\n", " confidence_level = 0.95\n", " lambd_lower, lambd_upper = np.quantile(\n", " lambd_bootstrapped, [(1-confidence_level)/2, (1+confidence_level)/2]\n", " )\n", "\n", " # reporting\n", " print(f\"Inferred optimal value of lambda: {lambd_optimal:.3f}\")\n", " print(f\"{confidence_level*100:.0f}% confidence interval: from {lambd_lower:.3f} to {lambd_upper:.3f}\")" ] }, { "cell_type": "code", "execution_count": 4, "id": "d8d86f66-25f2-4c6e-a453-7c0999b37699", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "True value of lambda: 10.0\n", "Inferred optimal value of lambda: 9.725\n", "95% confidence interval: from 9.090 to 10.409\n" ] } ], "source": [ "lambd_true = 10\n", "print(f\"True value of lambda: {lambd_true:.1f}\")\n", "dataset_analysis(np.random.exponential(scale=1/lambd_true, size=1000))" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.11" } }, "nbformat": 4, "nbformat_minor": 5 }