{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Implementation of MLE for variate-covariate models\n", "\n", "[Dataset download](https://s3.amazonaws.com/bebi103.caltech.edu/data/good_invitro_droplet_data.csv)\n", "\n", "\n", "
" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "nbsphinx": "hidden", "tags": [] }, "outputs": [], "source": [ "#| code-fold: true\n", "\n", "# Colab setup ------------------\n", "import os, sys, subprocess\n", "if \"google.colab\" in sys.modules:\n", " cmd = \"pip install --upgrade polars iqplot bebi103 watermark\"\n", " process = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE)\n", " stdout, stderr = process.communicate()\n", " data_path = \"https://s3.amazonaws.com/bebi103.caltech.edu/data/\"\n", "else:\n", " data_path = \"../data/\"\n", "# ------------------------------" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ " \n", "
\n", " \n", " Loading BokehJS ...\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "'use strict';\n", "(function(root) {\n", " function now() {\n", " return new Date();\n", " }\n", "\n", " const force = true;\n", "\n", " if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n", " root._bokeh_onload_callbacks = [];\n", " root._bokeh_is_loading = undefined;\n", " }\n", "\n", "const JS_MIME_TYPE = 'application/javascript';\n", " const HTML_MIME_TYPE = 'text/html';\n", " const EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n", " const CLASS_NAME = 'output_bokeh rendered_html';\n", "\n", " /**\n", " * Render data to the DOM node\n", " */\n", " function render(props, node) {\n", " const script = document.createElement(\"script\");\n", " node.appendChild(script);\n", " }\n", "\n", " /**\n", " * Handle when an output is cleared or removed\n", " */\n", " function handleClearOutput(event, handle) {\n", " function drop(id) {\n", " const view = Bokeh.index.get_by_id(id)\n", " if (view != null) {\n", " view.model.document.clear()\n", " Bokeh.index.delete(view)\n", " }\n", " }\n", "\n", " const cell = handle.cell;\n", "\n", " const id = cell.output_area._bokeh_element_id;\n", " const server_id = cell.output_area._bokeh_server_id;\n", "\n", " // Clean up Bokeh references\n", " if (id != null) {\n", " drop(id)\n", " }\n", "\n", " if (server_id !== undefined) {\n", " // Clean up Bokeh references\n", " const cmd_clean = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n", " cell.notebook.kernel.execute(cmd_clean, {\n", " iopub: {\n", " output: function(msg) {\n", " const id = msg.content.text.trim()\n", " drop(id)\n", " }\n", " }\n", " });\n", " // Destroy server and session\n", " const cmd_destroy = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n", " cell.notebook.kernel.execute(cmd_destroy);\n", " }\n", " }\n", "\n", " /**\n", " * Handle when a new output is added\n", " */\n", " function handleAddOutput(event, handle) {\n", " const output_area = handle.output_area;\n", " const output = handle.output;\n", "\n", " // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n", " if ((output.output_type != \"display_data\") || (!Object.prototype.hasOwnProperty.call(output.data, EXEC_MIME_TYPE))) {\n", " return\n", " }\n", "\n", " const toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n", "\n", " if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n", " toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n", " // store reference to embed id on output_area\n", " output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n", " }\n", " if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n", " const bk_div = document.createElement(\"div\");\n", " bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n", " const script_attrs = bk_div.children[0].attributes;\n", " for (let i = 0; i < script_attrs.length; i++) {\n", " toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n", " toinsert[toinsert.length - 1].firstChild.textContent = bk_div.children[0].textContent\n", " }\n", " // store reference to server id on output_area\n", " output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n", " }\n", " }\n", "\n", " function register_renderer(events, OutputArea) {\n", "\n", " function append_mime(data, metadata, element) {\n", " // create a DOM node to render to\n", " const toinsert = this.create_output_subarea(\n", " metadata,\n", " CLASS_NAME,\n", " EXEC_MIME_TYPE\n", " );\n", " this.keyboard_manager.register_events(toinsert);\n", " // Render to node\n", " const props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n", " render(props, toinsert[toinsert.length - 1]);\n", " element.append(toinsert);\n", " return toinsert\n", " }\n", "\n", " /* Handle when an output is cleared or removed */\n", " events.on('clear_output.CodeCell', handleClearOutput);\n", " events.on('delete.Cell', handleClearOutput);\n", "\n", " /* Handle when a new output is added */\n", " events.on('output_added.OutputArea', handleAddOutput);\n", "\n", " /**\n", " * Register the mime type and append_mime function with output_area\n", " */\n", " OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n", " /* Is output safe? */\n", " safe: true,\n", " /* Index of renderer in `output_area.display_order` */\n", " index: 0\n", " });\n", " }\n", "\n", " // register the mime type if in Jupyter Notebook environment and previously unregistered\n", " if (root.Jupyter !== undefined) {\n", " const events = require('base/js/events');\n", " const OutputArea = require('notebook/js/outputarea').OutputArea;\n", "\n", " if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n", " register_renderer(events, OutputArea);\n", " }\n", " }\n", " if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n", " root._bokeh_timeout = Date.now() + 5000;\n", " root._bokeh_failed_load = false;\n", " }\n", "\n", " const NB_LOAD_WARNING = {'data': {'text/html':\n", " \"
\\n\"+\n", " \"

\\n\"+\n", " \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n", " \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n", " \"

\\n\"+\n", " \"\\n\"+\n", " \"\\n\"+\n", " \"from bokeh.resources import INLINE\\n\"+\n", " \"output_notebook(resources=INLINE)\\n\"+\n", " \"\\n\"+\n", " \"
\"}};\n", "\n", " function display_loaded(error = null) {\n", " const el = document.getElementById(\"f3ddcbf7-1279-45d3-b470-e0832e4ef9ed\");\n", " if (el != null) {\n", " const html = (() => {\n", " if (typeof root.Bokeh === \"undefined\") {\n", " if (error == null) {\n", " return \"BokehJS is loading ...\";\n", " } else {\n", " return \"BokehJS failed to load.\";\n", " }\n", " } else {\n", " const prefix = `BokehJS ${root.Bokeh.version}`;\n", " if (error == null) {\n", " return `${prefix} successfully loaded.`;\n", " } else {\n", " return `${prefix} encountered errors while loading and may not function as expected.`;\n", " }\n", " }\n", " })();\n", " el.innerHTML = html;\n", "\n", " if (error != null) {\n", " const wrapper = document.createElement(\"div\");\n", " wrapper.style.overflow = \"auto\";\n", " wrapper.style.height = \"5em\";\n", " wrapper.style.resize = \"vertical\";\n", " const content = document.createElement(\"div\");\n", " content.style.fontFamily = \"monospace\";\n", " content.style.whiteSpace = \"pre-wrap\";\n", " content.style.backgroundColor = \"rgb(255, 221, 221)\";\n", " content.textContent = error.stack ?? error.toString();\n", " wrapper.append(content);\n", " el.append(wrapper);\n", " }\n", " } else if (Date.now() < root._bokeh_timeout) {\n", " setTimeout(() => display_loaded(error), 100);\n", " }\n", " }\n", "\n", " function run_callbacks() {\n", " try {\n", " root._bokeh_onload_callbacks.forEach(function(callback) {\n", " if (callback != null)\n", " callback();\n", " });\n", " } finally {\n", " delete root._bokeh_onload_callbacks\n", " }\n", " console.debug(\"Bokeh: all callbacks have finished\");\n", " }\n", "\n", " function load_libs(css_urls, js_urls, callback) {\n", " if (css_urls == null) css_urls = [];\n", " if (js_urls == null) js_urls = [];\n", "\n", " root._bokeh_onload_callbacks.push(callback);\n", " if (root._bokeh_is_loading > 0) {\n", " console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n", " return null;\n", " }\n", " if (js_urls == null || js_urls.length === 0) {\n", " run_callbacks();\n", " return null;\n", " }\n", " console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", " root._bokeh_is_loading = css_urls.length + js_urls.length;\n", "\n", " function on_load() {\n", " root._bokeh_is_loading--;\n", " if (root._bokeh_is_loading === 0) {\n", " console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n", " run_callbacks()\n", " }\n", " }\n", "\n", " function on_error(url) {\n", " console.error(\"failed to load \" + url);\n", " }\n", "\n", " for (let i = 0; i < css_urls.length; i++) {\n", " const url = css_urls[i];\n", " const element = document.createElement(\"link\");\n", " element.onload = on_load;\n", " element.onerror = on_error.bind(null, url);\n", " element.rel = \"stylesheet\";\n", " element.type = \"text/css\";\n", " element.href = url;\n", " console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n", " document.body.appendChild(element);\n", " }\n", "\n", " for (let i = 0; i < js_urls.length; i++) {\n", " const url = js_urls[i];\n", " const element = document.createElement('script');\n", " element.onload = on_load;\n", " element.onerror = on_error.bind(null, url);\n", " element.async = false;\n", " element.src = url;\n", " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", " document.head.appendChild(element);\n", " }\n", " };\n", "\n", " function inject_raw_css(css) {\n", " const element = document.createElement(\"style\");\n", " element.appendChild(document.createTextNode(css));\n", " document.body.appendChild(element);\n", " }\n", "\n", " const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-3.7.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.7.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.7.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.7.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-3.7.3.min.js\"];\n", " const css_urls = [];\n", "\n", " const inline_js = [ function(Bokeh) {\n", " Bokeh.set_log_level(\"info\");\n", " },\n", "function(Bokeh) {\n", " }\n", " ];\n", "\n", " function run_inline_js() {\n", " if (root.Bokeh !== undefined || force === true) {\n", " try {\n", " for (let i = 0; i < inline_js.length; i++) {\n", " inline_js[i].call(root, root.Bokeh);\n", " }\n", "\n", " } catch (error) {display_loaded(error);throw error;\n", " }if (force === true) {\n", " display_loaded();\n", " }} else if (Date.now() < root._bokeh_timeout) {\n", " setTimeout(run_inline_js, 100);\n", " } else if (!root._bokeh_failed_load) {\n", " console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n", " root._bokeh_failed_load = true;\n", " } else if (force !== true) {\n", " const cell = $(document.getElementById(\"f3ddcbf7-1279-45d3-b470-e0832e4ef9ed\")).parents('.cell').data().cell;\n", " cell.output_area.append_execute_result(NB_LOAD_WARNING)\n", " }\n", " }\n", "\n", " if (root._bokeh_is_loading === 0) {\n", " console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n", " run_inline_js();\n", " } else {\n", " load_libs(css_urls, js_urls, function() {\n", " console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n", " run_inline_js();\n", " });\n", " }\n", "}(window));" ], "application/vnd.bokehjs_load.v0+json": "'use strict';\n(function(root) {\n function now() {\n return new Date();\n }\n\n const force = true;\n\n if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\n\n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n const NB_LOAD_WARNING = {'data': {'text/html':\n \"
\\n\"+\n \"

\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"

\\n\"+\n \"\\n\"+\n \"\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"\\n\"+\n \"
\"}};\n\n function display_loaded(error = null) {\n const el = document.getElementById(\"f3ddcbf7-1279-45d3-b470-e0832e4ef9ed\");\n if (el != null) {\n const html = (() => {\n if (typeof root.Bokeh === \"undefined\") {\n if (error == null) {\n return \"BokehJS is loading ...\";\n } else {\n return \"BokehJS failed to load.\";\n }\n } else {\n const prefix = `BokehJS ${root.Bokeh.version}`;\n if (error == null) {\n return `${prefix} successfully loaded.`;\n } else {\n return `${prefix} encountered errors while loading and may not function as expected.`;\n }\n }\n })();\n el.innerHTML = html;\n\n if (error != null) {\n const wrapper = document.createElement(\"div\");\n wrapper.style.overflow = \"auto\";\n wrapper.style.height = \"5em\";\n wrapper.style.resize = \"vertical\";\n const content = document.createElement(\"div\");\n content.style.fontFamily = \"monospace\";\n content.style.whiteSpace = \"pre-wrap\";\n content.style.backgroundColor = \"rgb(255, 221, 221)\";\n content.textContent = error.stack ?? error.toString();\n wrapper.append(content);\n el.append(wrapper);\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(() => display_loaded(error), 100);\n }\n }\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error(url) {\n console.error(\"failed to load \" + url);\n }\n\n for (let i = 0; i < css_urls.length; i++) {\n const url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n for (let i = 0; i < js_urls.length; i++) {\n const url = js_urls[i];\n const element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-3.7.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.7.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.7.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.7.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-3.7.3.min.js\"];\n const css_urls = [];\n\n const inline_js = [ function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\nfunction(Bokeh) {\n }\n ];\n\n function run_inline_js() {\n if (root.Bokeh !== undefined || force === true) {\n try {\n for (let i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\n\n } catch (error) {display_loaded(error);throw error;\n }if (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n const cell = $(document.getElementById(\"f3ddcbf7-1279-45d3-b470-e0832e4ef9ed\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import warnings\n", "\n", "import tqdm\n", "\n", "import numpy as np\n", "import polars as pl\n", "import scipy.optimize\n", "import scipy.stats as st\n", "\n", "import iqplot\n", "import bebi103\n", "\n", "import bokeh.io\n", "bokeh.io.output_notebook()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "We now proceed to do maximum likelihood estimation for the parameters of the second model for spindle length.\n", "\n", "\\begin{align}\n", "&\\mu_i = \\frac{\\gamma d_i}{\\left(1+(\\gamma d_i/\\phi)^3\\right)^{\\frac{1}{3}}}, \\\\[1em]\n", "&l_i \\sim \\text{Norm}(\\mu_i, \\sigma) \\;\\forall i,\n", "\\end{align}\n", "\n", "The parameters for this model are $\\gamma$, $\\phi$, and $\\sigma$.\n", "\n", "Finally, before we being doing MLE, as a reminder, we will load in and plot the data." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "(function(root) {\n", " function embed_document(root) {\n", " const docs_json = {\"baf1fcdd-4119-4330-ab2d-27ae42529aa4\":{\"version\":\"3.7.3\",\"title\":\"Bokeh Application\",\"roots\":[{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p1003\",\"attributes\":{\"x_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1012\",\"attributes\":{\"end\":250}},\"y_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1013\",\"attributes\":{\"end\":50}},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1014\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1015\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p1010\"},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1048\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1039\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1040\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1041\"},\"data\":{\"type\":\"map\",\"entries\":[[\"Droplet Diameter (um)\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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MzMzMzPTUEAzMzMzM9NQQDMzMzMz01BAZmZmZmbmUEBmZmZmZuZQQGZmZmZm5lBAZmZmZmbmUEBmZmZmZuZQQGZmZmZm5lBAZmZmZmbmUEBmZmZmZuZQQGZmZmZm5lBAZmZmZmbmUEBmZmZmZuZQQDMzMzMz81BAMzMzMzPzUEAzMzMzM/NQQDMzMzMz81BAMzMzMzPzUEAzMzMzM/NQQGZmZmZmBlFAZmZmZmYGUUBmZmZmZgZRQGZmZmZmBlFAZmZmZmYGUUBmZmZmZgZRQGZmZmZmBlFAZmZmZmYGUUBmZmZmZgZRQGZmZmZmBlFAZmZmZmYGUUCamZmZmRlRQJqZmZmZGVFAmpmZmZkZUUCamZmZmRlRQJqZmZmZGVFAmpmZmZkZUUCamZmZmRlRQGZmZmZmJlFAZmZmZmYmUUBmZmZmZiZRQGZmZmZmJlFAZmZmZmYmUUBmZmZmZiZRQGZmZmZmJlFAZmZmZmYmUUBmZmZmZiZRQJqZmZmZOVFAmpmZmZk5UUCamZmZmTlRQGZmZmZmRlFAZmZmZmZGUUBmZmZmZkZRQGZmZmZmRlFAZmZmZmZGUUBmZmZmZkZRQGZmZmZmRlFAZmZmZmZGUUBmZmZmZkZRQGZmZmZmRlFAmpmZmZlZUUCamZmZmVlRQJqZmZmZWVFAmpmZmZlZUUCamZmZmVlRQJqZmZmZWVFAmpmZmZlZUUCamZmZmVlRQJqZmZmZWVFAZmZmZmZmUUBmZmZmZmZRQGZmZmZmZlFAZmZmZmZmUUBmZmZmZmZRQGZmZmZmZlFAZmZmZmZmUUBmZmZmZmZRQGZmZmZmZlFAZmZmZmZmUUCamZmZmXlRQJqZmZmZeVFAmpmZmZl5UUCamZmZmXlRQJqZmZmZeVFAmpmZmZl5UUCamZmZmXlRQJqZmZmZeVFAmpmZmZl5UUBmZmZmZoZRQGZmZmZmhlFAZmZmZmaGUUBmZmZmZoZRQGZmZmZmhlFAZmZmZmaGUUBmZmZmZoZRQGZmZmZmhlFAmpmZmZmZUUCamZmZmZlRQJqZmZmZmVFAmpmZmZmZUUCamZmZmZlRQJqZmZmZmVFAmpmZmZmZUUCamZmZmZlRQM3MzMzMrFFAzczMzMysUUDNzMzMzKxRQM3MzMzMrFFAzczMzMysUUDNzMzMzKxRQM3MzMzMrFFAzczMzMysUUCamZmZmblRQJqZmZmZuVFAmpmZmZm5UUDNzMzMzMxRQM3MzMzMzFFAzczMzMzMUUDNzMzMzMxRQM3MzMzMzFFAzczMzMzMUUDNzMzMzMxRQJqZmZmZ2VFAmpmZmZnZUUCamZmZmdlRQJqZmZmZ2VFAmpmZmZnZUUCamZmZmdlRQM3MzMzM7FFAzczMzMzsUUDNzMzMzOxRQM3MzMzM7FFAmpmZmZn5UUCamZmZmflRQJqZmZmZ+VFAzczMzMwMUkDNzMzMzAxSQM3MzMzMDFJAzczMzMwMUkDNzMzMzAxSQM3MzMzMDFJAmpmZmZkZUkCamZmZmRlSQJqZmZmZGVJAmpmZmZkZUkCamZmZmRlSQM3MzMzMLFJAzczMzMwsUkAAAAAAAEBSQAAAAAAAQFJAAAAAAABAUkDNzMzMzExSQM3MzMzMTFJAzczMzMxMUkDNzMzMzExSQM3MzMzMTFJAAAAAAABgUkAAAAAAAGBSQAAAAAAAYFJAAAAAAABgUkAAAAAAAGBSQM3MzMzMbFJAAAAAAACAUkAAAAAAAIBSQAAAAAAAgFJAzczMzMyMUkAAAAAAAKBSQAAAAAAAoFJAMzMzMzOzUkAAAAAAAMBSQDMzMzMz81JAAAAAAAAAU0AAAAAAACBTQDMzMzMzM1NAMzMzMzNTU0AzMzMzM1NTQGZmZmZmZlNAZmZmZmZmU0AzMzMzM7NTQGZmZmZmxlNAmpmZmZkZVEDNzMzMzExUQJqZmZmZeVRAzczMzMyMVECamZmZmZlUQJqZmZmZmVRAAAAAAAAgVUAAAAAAAIBVQGZmZmZmBlZAZmZmZmbmVkCamZmZmflWQAAAAAAAgFdAzczMzMysV0AAAAAAACBYQAAAAAAAIFhAMzMzMzNTWEAAAAAAAGBYQDMzMzMzk1hAmpmZmZkZWUDNzMzMzKxZQJqZmZmZ+VlAmpmZmZl5XEDNzMzMzAxdQM3MzMzMLF1AAAAAAABgXUAAAAAAAMBdQGZmZmZmJl5AZmZmZmZGXkCamZmZmZleQJqZmZmZuV5AZmZmZmbGXkAzMzMzM2NgQJqZmZmZeWFAmpmZmZmJYUCamZmZmalhQAAAAAAAAGRAMzMzMzPDZEDNzMzMzDxnQAAAAAAA0GdAzczMzMysa0A=\"},\"shape\":[670],\"dtype\":\"float64\",\"order\":\"little\"}],[\"Droplet Volume (uL)\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[670],\"dtype\":\"float64\",\"order\":\"little\"}],[\"Spindle Length (um)\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[670],\"dtype\":\"float64\",\"order\":\"little\"}],[\"Spindle Width (um)\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[670],\"dtype\":\"float64\",\"order\":\"little\"}],[\"Spindle Area (um2)\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[670],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1049\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1050\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Scatter\",\"id\":\"p1045\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"Droplet Diameter (um)\"},\"y\":{\"type\":\"field\",\"field\":\"Spindle Length (um)\"},\"line_color\":{\"type\":\"value\",\"value\":\"#1f77b4\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.3},\"fill_color\":{\"type\":\"value\",\"value\":\"#1f77b4\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.3},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.3}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Scatter\",\"id\":\"p1046\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"Droplet Diameter (um)\"},\"y\":{\"type\":\"field\",\"field\":\"Spindle Length (um)\"},\"line_color\":{\"type\":\"value\",\"value\":\"#1f77b4\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"fill_color\":{\"type\":\"value\",\"value\":\"#1f77b4\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Scatter\",\"id\":\"p1047\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"Droplet Diameter (um)\"},\"y\":{\"type\":\"field\",\"field\":\"Spindle Length (um)\"},\"line_color\":{\"type\":\"value\",\"value\":\"#1f77b4\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"fill_color\":{\"type\":\"value\",\"value\":\"#1f77b4\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p1011\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"p1026\"},{\"type\":\"object\",\"name\":\"WheelZoomTool\",\"id\":\"p1027\",\"attributes\":{\"renderers\":\"auto\"}},{\"type\":\"object\",\"name\":\"BoxZoomTool\",\"id\":\"p1028\",\"attributes\":{\"dimensions\":\"both\",\"overlay\":{\"type\":\"object\",\"name\":\"BoxAnnotation\",\"id\":\"p1029\",\"attributes\":{\"syncable\":false,\"line_color\":\"black\",\"line_alpha\":1.0,\"line_width\":2,\"line_dash\":[4,4],\"fill_color\":\"lightgrey\",\"fill_alpha\":0.5,\"level\":\"overlay\",\"visible\":false,\"left\":{\"type\":\"number\",\"value\":\"nan\"},\"right\":{\"type\":\"number\",\"value\":\"nan\"},\"top\":{\"type\":\"number\",\"value\":\"nan\"},\"bottom\":{\"type\":\"number\",\"value\":\"nan\"},\"left_units\":\"canvas\",\"right_units\":\"canvas\",\"top_units\":\"canvas\",\"bottom_units\":\"canvas\",\"handles\":{\"type\":\"object\",\"name\":\"BoxInteractionHandles\",\"id\":\"p1035\",\"attributes\":{\"all\":{\"type\":\"object\",\"name\":\"AreaVisuals\",\"id\":\"p1034\",\"attributes\":{\"fill_color\":\"white\",\"hover_fill_color\":\"lightgray\"}}}}}}}},{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p1036\"},{\"type\":\"object\",\"name\":\"ResetTool\",\"id\":\"p1037\"},{\"type\":\"object\",\"name\":\"HelpTool\",\"id\":\"p1038\"}]}},\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1021\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1022\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1023\"},\"axis_label\":\"spindle length (\\u00b5m)\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1024\"}}}],\"below\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1016\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1017\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1018\"},\"axis_label\":\"droplet diameter (\\u00b5m)\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1019\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1020\",\"attributes\":{\"axis\":{\"id\":\"p1016\"}}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1025\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"p1021\"}}}],\"frame_width\":400,\"frame_height\":300}}]}};\n", " const render_items = [{\"docid\":\"baf1fcdd-4119-4330-ab2d-27ae42529aa4\",\"roots\":{\"p1003\":\"d467fb85-55e5-4f3b-a4e6-6947b6787a42\"},\"root_ids\":[\"p1003\"]}];\n", " void root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", " }\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " } else {\n", " let attempts = 0;\n", " const timer = setInterval(function(root) {\n", " if (root.Bokeh !== undefined) {\n", " clearInterval(timer);\n", " embed_document(root);\n", " } else {\n", " attempts++;\n", " if (attempts > 100) {\n", " clearInterval(timer);\n", " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", " }\n", " }\n", " }, 10, root)\n", " }\n", "})(window);" ], "application/vnd.bokehjs_exec.v0+json": "" }, "metadata": { "application/vnd.bokehjs_exec.v0+json": { "id": "p1003" } }, "output_type": "display_data" } ], "source": [ "df = pl.read_csv(os.path.join(data_path, 'good_invitro_droplet_data.csv'), comment_prefix='#')\n", "\n", "p = bokeh.plotting.figure(\n", " frame_height=300,\n", " frame_width=400,\n", " x_axis_label=\"droplet diameter (µm)\",\n", " y_axis_label=\"spindle length (µm)\",\n", " x_range=[0, 250],\n", " y_range=[0, 50],\n", ")\n", "\n", "p.scatter(\n", " source=df.to_dict(),\n", " x=\"Droplet Diameter (um)\",\n", " y=\"Spindle Length (um)\",\n", " alpha=0.3,\n", ")\n", "\n", "bokeh.io.show(p)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It is also useful to extract the data sets as Numpy arrays for speed in the MLE and bootstrap calculations." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "d = df['Droplet Diameter (um)'].to_numpy()\n", "ell = df['Spindle Length (um)'].to_numpy()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Performing MLE by direct numerical optimization\n", "\n", "We can take the same approach as we did with the mRNA counts from the smFISH experiments. We write a function for the log likelihood and then use numerical optimization to find the parameters.\n", "\n", "The joint probability density function for the data set is the product of the probability densities of Normals. Therefore, the log likelihood is the *sum* of *log* probability densities of Normals. We can code that up using the convenient functions in the `scipy.stats` module." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "def theor_spindle_length(gamma, phi, d):\n", " \"\"\"Compute spindle length using mathematical model\"\"\"\n", " return gamma * d / np.cbrt(1 + (gamma * d / phi)**3)\n", " \n", " \n", "def log_likelihood(params, d, ell):\n", " \"\"\"Log likelihood of spindle length model.\"\"\"\n", " gamma, phi, sigma = params\n", " \n", " if gamma <= 0 or gamma > 1 or phi <= 0:\n", " return -np.inf\n", "\n", " mu = theor_spindle_length(gamma, phi, d)\n", "\n", " return np.sum(st.norm.logpdf(ell, mu, sigma))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In looking at the code for the log likelihood, the convenience of the `scipy.stats` module is clear. We more or less code up the model as we would say it!\n", "\n", "We can now code up the MLE calculation. For our initial guesses, we can look at the data an make estimates. The initial slope of the $l$ vs. $d$ curve is about one-half, so we will guess an initial value of $\\gamma$ of 0.5. The plateau seems to be around 40 µm, so we will guess $\\phi = 40$ µm. Eyeballing the standard deviation in the data points, I would guess it is about 5 µm." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "def spindle_mle(d, ell):\n", " \"\"\"Compute MLE for parameters in spindle length model.\"\"\"\n", " with warnings.catch_warnings():\n", " warnings.simplefilter(\"ignore\")\n", "\n", " res = scipy.optimize.minimize(\n", " fun=lambda params, d, ell: -log_likelihood(params, d, ell),\n", " x0=np.array([0.5, 35, 5]),\n", " args=(d, ell),\n", " method='Powell'\n", " )\n", "\n", " if res.success:\n", " return res.x\n", " else:\n", " raise RuntimeError('Convergence failed with message', res.message)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's run the calculation to get MLEs for the parameters." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 0.86047455, 38.23124995, 3.75342168])" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mle_params = spindle_mle(d, ell)\n", "\n", "mle_params" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can take a quick look as to how the theoretical curve might look with respect to the data." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "(function(root) {\n", " function embed_document(root) {\n", " const docs_json = {\"4bd76f12-01f8-4915-a6d6-d2fdc64ca41d\":{\"version\":\"3.7.3\",\"title\":\"Bokeh Application\",\"roots\":[{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p1003\",\"attributes\":{\"x_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1012\",\"attributes\":{\"end\":250}},\"y_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1013\",\"attributes\":{\"end\":50}},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1014\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1015\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p1010\"},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1048\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1039\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1040\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1041\"},\"data\":{\"type\":\"map\",\"entries\":[[\"Droplet Diameter (um)\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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MzMzMzPTUEAzMzMzM9NQQDMzMzMz01BAZmZmZmbmUEBmZmZmZuZQQGZmZmZm5lBAZmZmZmbmUEBmZmZmZuZQQGZmZmZm5lBAZmZmZmbmUEBmZmZmZuZQQGZmZmZm5lBAZmZmZmbmUEBmZmZmZuZQQDMzMzMz81BAMzMzMzPzUEAzMzMzM/NQQDMzMzMz81BAMzMzMzPzUEAzMzMzM/NQQGZmZmZmBlFAZmZmZmYGUUBmZmZmZgZRQGZmZmZmBlFAZmZmZmYGUUBmZmZmZgZRQGZmZmZmBlFAZmZmZmYGUUBmZmZmZgZRQGZmZmZmBlFAZmZmZmYGUUCamZmZmRlRQJqZmZmZGVFAmpmZmZkZUUCamZmZmRlRQJqZmZmZGVFAmpmZmZkZUUCamZmZmRlRQGZmZmZmJlFAZmZmZmYmUUBmZmZmZiZRQGZmZmZmJlFAZmZmZmYmUUBmZmZmZiZRQGZmZmZmJlFAZmZmZmYmUUBmZmZmZiZRQJqZmZmZOVFAmpmZmZk5UUCamZmZmTlRQGZmZmZmRlFAZmZmZmZGUUBmZmZmZkZRQGZmZmZmRlFAZmZmZmZGUUBmZmZmZkZRQGZmZmZmRlFAZmZmZmZGUUBmZmZmZkZRQGZmZmZmRlFAmpmZmZlZUUCamZmZmVlRQJqZmZmZWVFAmpmZmZlZUUCamZmZmVlRQJqZmZmZWVFAmpmZmZlZUUCamZmZmVlRQJqZmZmZWVFAZmZmZmZmUUBmZmZmZmZRQGZmZmZmZlFAZmZmZmZmUUBmZmZmZmZRQGZmZmZmZlFAZmZmZmZmUUBmZmZmZmZRQGZmZmZmZlFAZmZmZmZmUUCamZmZmXlRQJqZmZmZeVFAmpmZmZl5UUCamZmZmXlRQJqZmZmZeVFAmpmZmZl5UUCamZmZmXlRQJqZmZmZeVFAmpmZmZl5UUBmZmZmZoZRQGZmZmZmhlFAZmZmZmaGUUBmZmZmZoZRQGZmZmZmhlFAZmZmZmaGUUBmZmZmZoZRQGZmZmZmhlFAmpmZmZmZUUCamZmZmZlRQJqZmZmZmVFAmpmZmZmZUUCamZmZmZlRQJqZmZmZmVFAmpmZmZmZUUCamZmZmZlRQM3MzMzMrFFAzczMzMysUUDNzMzMzKxRQM3MzMzMrFFAzczMzMysUUDNzMzMzKxRQM3MzMzMrFFAzczMzMysUUCamZmZmblRQJqZmZmZuVFAmpmZmZm5UUDNzMzMzMxRQM3MzMzMzFFAzczMzMzMUUDNzMzMzMxRQM3MzMzMzFFAzczMzMzMUUDNzMzMzMxRQJqZmZmZ2VFAmpmZmZnZUUCamZmZmdlRQJqZmZmZ2VFAmpmZmZnZUUCamZmZmdlRQM3MzMzM7FFAzczMzMzsUUDNzMzMzOxRQM3MzMzM7FFAmpmZmZn5UUCamZmZmflRQJqZmZmZ+VFAzczMzMwMUkDNzMzMzAxSQM3MzMzMDFJAzczMzMwMUkDNzMzMzAxSQM3MzMzMDFJAmpmZmZkZUkCamZmZmRlSQJqZmZmZGVJAmpmZmZkZUkCamZmZmRlSQM3MzMzMLFJAzczMzMwsUkAAAAAAAEBSQAAAAAAAQFJAAAAAAABAUkDNzMzMzExSQM3MzMzMTFJAzczMzMxMUkDNzMzMzExSQM3MzMzMTFJAAAAAAABgUkAAAAAAAGBSQAAAAAAAYFJAAAAAAABgUkAAAAAAAGBSQM3MzMzMbFJAAAAAAACAUkAAAAAAAIBSQAAAAAAAgFJAzczMzMyMUkAAAAAAAKBSQAAAAAAAoFJAMzMzMzOzUkAAAAAAAMBSQDMzMzMz81JAAAAAAAAAU0AAAAAAACBTQDMzMzMzM1NAMzMzMzNTU0AzMzMzM1NTQGZmZmZmZlNAZmZmZmZmU0AzMzMzM7NTQGZmZmZmxlNAmpmZmZkZVEDNzMzMzExUQJqZmZmZeVRAzczMzMyMVECamZmZmZlUQJqZmZmZmVRAAAAAAAAgVUAAAAAAAIBVQGZmZmZmBlZAZmZmZmbmVkCamZmZmflWQAAAAAAAgFdAzczMzMysV0AAAAAAACBYQAAAAAAAIFhAMzMzMzNTWEAAAAAAAGBYQDMzMzMzk1hAmpmZmZkZWUDNzMzMzKxZQJqZmZmZ+VlAmpmZmZl5XEDNzMzMzAxdQM3MzMzMLF1AAAAAAABgXUAAAAAAAMBdQGZmZmZmJl5AZmZmZmZGXkCamZmZmZleQJqZmZmZuV5AZmZmZmbGXkAzMzMzM2NgQJqZmZmZeWFAmpmZmZmJYUCamZmZmalhQAAAAAAAAGRAMzMzMzPDZEDNzMzMzDxnQAAAAAAA0GdAzczMzMysa0A=\"},\"shape\":[670],\"dtype\":\"float64\",\"order\":\"little\"}],[\"Droplet Volume (uL)\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[670],\"dtype\":\"float64\",\"order\":\"little\"}],[\"Spindle Length (um)\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[670],\"dtype\":\"float64\",\"order\":\"little\"}],[\"Spindle Width (um)\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[670],\"dtype\":\"float64\",\"order\":\"little\"}],[\"Spindle Area (um2)\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[670],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1049\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1050\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Scatter\",\"id\":\"p1045\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"Droplet Diameter (um)\"},\"y\":{\"type\":\"field\",\"field\":\"Spindle Length (um)\"},\"line_color\":{\"type\":\"value\",\"value\":\"#1f77b4\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.3},\"fill_color\":{\"type\":\"value\",\"value\":\"#1f77b4\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.3},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.3}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Scatter\",\"id\":\"p1046\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"Droplet Diameter (um)\"},\"y\":{\"type\":\"field\",\"field\":\"Spindle Length (um)\"},\"line_color\":{\"type\":\"value\",\"value\":\"#1f77b4\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"fill_color\":{\"type\":\"value\",\"value\":\"#1f77b4\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Scatter\",\"id\":\"p1047\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"Droplet Diameter (um)\"},\"y\":{\"type\":\"field\",\"field\":\"Spindle Length (um)\"},\"line_color\":{\"type\":\"value\",\"value\":\"#1f77b4\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"fill_color\":{\"type\":\"value\",\"value\":\"#1f77b4\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1062\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1056\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1057\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1058\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAAAAACFn1yIuhn0P4WfXIi6GQRASO+KzJcmDkCFn1yIuhkUQGbHcyopIBlASO+KzJcmHkCUC1E3g5YhQIWfXIi6GSRAdjNo2fGcJkBmx3MqKSApQFdbf3tgoytASO+KzJcmLkCcQcuO51QwQJQLUTeDljFAjdXW3x7YMkCFn1yIuhk0QH1p4jBWWzVAdjNo2fGcNkBu/e2Bjd43QGbHcyopIDlAX5H50sRhOkBXW397YKM7QE8lBST85DxASO+KzJcmPkBAuRB1M2g/QJxBy47nVEBAmCYOY7X1QECUC1E3g5ZBQJHwkwtRN0JAjdXW3x7YQkCJuhm07HhDQIWfXIi6GURAgYSfXIi6REB9aeIwVltFQHlOJQUk/EVAdjNo2fGcRkByGKutvz1HQG797YGN3kdAauIwVlt/SEBmx3MqKSBJQGKstv72wElAX5H50sRhSkBbdjynkgJLQFdbf3tgo0tAU0DCTy5ETEBPJQUk/ORMQEsKSPjJhU1ASO+KzJcmTkBE1M2gZcdOQEC5EHUzaE9AHs+ppIAEUECcQcuO51RQQBq07HhOpVBAmCYOY7X1UEAWmS9NHEZRQJQLUTeDllFAEn5yIermUUCR8JMLUTdSQA9jtfW3h1JAjdXW3x7YUkALSPjJhShTQIm6GbTseFNABy07nlPJU0CFn1yIuhlUQAMSfnIhalRAgYSfXIi6VED/9sBG7wpVQH1p4jBWW1VA+9sDG72rVUB5TiUFJPxVQPjARu+KTFZAdjNo2fGcVkD0pYnDWO1WQHIYq62/PVdA8IrMlyaOV0Bu/e2Bjd5XQOxvD2z0LlhAauIwVlt/WEDoVFJAws9YQGbHcyopIFlA5DmVFJBwWUBirLb+9sBZQOAe2OhdEVpAX5H50sRhWkDdAxu9K7JaQFt2PKeSAltA2ehdkflSW0BXW397YKNbQNXNoGXH81tAU0DCTy5EXEDRsuM5lZRcQE8lBST85FxAzZcmDmM1XUBLCkj4yYVdQMl8aeIw1l1ASO+KzJcmXkDGYay2/nZeQETUzaBlx15AwkbviswXX0BAuRB1M2hfQL4rMl+auF9AHs+ppIAEYEBdiLoZtCxgQJxBy47nVGBA2/rbAxt9YEAatOx4TqVgQFlt/e2BzWBAmCYOY7X1YEDX3x7Y6B1hQBaZL00cRmFAVVJAwk9uYUCUC1E3g5ZhQNPEYay2vmFAEn5yIermYUBRN4OWHQ9iQJHwkwtRN2JA0KmkgIRfYkAPY7X1t4diQE4cxmrrr2JAjdXW3x7YYkDMjudUUgBjQAtI+MmFKGNASgEJP7lQY0CJuhm07HhjQMhzKikgoWNABy07nlPJY0BG5ksTh/FjQIWfXIi6GWRAxFht/e1BZEADEn5yIWpkQELLjudUkmRAgYSfXIi6ZEDAPbDRu+JkQP/2wEbvCmVAPrDRuyIzZUB9aeIwVltlQLwi86WJg2VA+9sDG72rZUA6lRSQ8NNlQHlOJQUk/GVAuQc2elckZkD4wEbvikxmQDd6V2S+dGZAdjNo2fGcZkC17HhOJcVmQPSlicNY7WZAM1+aOIwVZ0ByGKutvz1nQLHRuyLzZWdA8IrMlyaOZ0AvRN0MWrZnQG797YGN3mdArbb+9sAGaEDsbw9s9C5oQCspIOEnV2hAauIwVlt/aECpm0HLjqdoQOhUUkDCz2hAJw5jtfX3aEBmx3MqKSBpQKWAhJ9cSGlA5DmVFJBwaUAj86WJw5hpQGKstv72wGlAoWXHcyrpaUDgHtjoXRFqQCDY6F2ROWpAX5H50sRhakCeSgpI+IlqQN0DG70rsmpAHL0rMl/aakBbdjynkgJrQJovTRzGKmtA2ehdkflSa0AYom4GLXtrQFdbf3tgo2tAlhSQ8JPLa0DVzaBlx/NrQBSHsdr6G2xAU0DCTy5EbECS+dLEYWxsQNGy4zmVlGxAEGz0rsi8bEBPJQUk/ORsQI7eFZkvDW1AzZcmDmM1bUAMUTeDll1tQEsKSPjJhW1AisNYbf2tbUDJfGniMNZtQAg2eldk/m1ASO+KzJcmbkCHqJtBy05uQMZhrLb+dm5ABRu9KzKfbkBE1M2gZcduQION3hWZ725AwkbviswXb0AAAAAAAEBvQA==\"},\"shape\":[200],\"dtype\":\"float64\",\"order\":\"little\"}],[\"y\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[200],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1063\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1064\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1059\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"orange\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1060\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"orange\",\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1061\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"orange\",\"line_alpha\":0.2,\"line_width\":2}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p1011\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"p1026\"},{\"type\":\"object\",\"name\":\"WheelZoomTool\",\"id\":\"p1027\",\"attributes\":{\"renderers\":\"auto\"}},{\"type\":\"object\",\"name\":\"BoxZoomTool\",\"id\":\"p1028\",\"attributes\":{\"dimensions\":\"both\",\"overlay\":{\"type\":\"object\",\"name\":\"BoxAnnotation\",\"id\":\"p1029\",\"attributes\":{\"syncable\":false,\"line_color\":\"black\",\"line_alpha\":1.0,\"line_width\":2,\"line_dash\":[4,4],\"fill_color\":\"lightgrey\",\"fill_alpha\":0.5,\"level\":\"overlay\",\"visible\":false,\"left\":{\"type\":\"number\",\"value\":\"nan\"},\"right\":{\"type\":\"number\",\"value\":\"nan\"},\"top\":{\"type\":\"number\",\"value\":\"nan\"},\"bottom\":{\"type\":\"number\",\"value\":\"nan\"},\"left_units\":\"canvas\",\"right_units\":\"canvas\",\"top_units\":\"canvas\",\"bottom_units\":\"canvas\",\"handles\":{\"type\":\"object\",\"name\":\"BoxInteractionHandles\",\"id\":\"p1035\",\"attributes\":{\"all\":{\"type\":\"object\",\"name\":\"AreaVisuals\",\"id\":\"p1034\",\"attributes\":{\"fill_color\":\"white\",\"hover_fill_color\":\"lightgray\"}}}}}}}},{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p1036\"},{\"type\":\"object\",\"name\":\"ResetTool\",\"id\":\"p1037\"},{\"type\":\"object\",\"name\":\"HelpTool\",\"id\":\"p1038\"}]}},\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1021\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1022\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1023\"},\"axis_label\":\"spindle length (\\u00b5m)\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1024\"}}}],\"below\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1016\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1017\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1018\"},\"axis_label\":\"droplet diameter (\\u00b5m)\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1019\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1020\",\"attributes\":{\"axis\":{\"id\":\"p1016\"}}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1025\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"p1021\"}}}],\"frame_width\":400,\"frame_height\":300}}]}};\n", " const render_items = [{\"docid\":\"4bd76f12-01f8-4915-a6d6-d2fdc64ca41d\",\"roots\":{\"p1003\":\"d52ff4c7-45bc-4312-8eb9-ac3e350a77f3\"},\"root_ids\":[\"p1003\"]}];\n", " void root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", " }\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " } else {\n", " let attempts = 0;\n", " const timer = setInterval(function(root) {\n", " if (root.Bokeh !== undefined) {\n", " clearInterval(timer);\n", " embed_document(root);\n", " } else {\n", " attempts++;\n", " if (attempts > 100) {\n", " clearInterval(timer);\n", " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", " }\n", " }\n", " }, 10, root)\n", " }\n", "})(window);" ], "application/vnd.bokehjs_exec.v0+json": "" }, "metadata": { "application/vnd.bokehjs_exec.v0+json": { "id": "p1003" } }, "output_type": "display_data" } ], "source": [ "# Compute theoretical curve using MLE parameters\n", "d_theor = np.linspace(0, 250, 200)\n", "ell_theor = theor_spindle_length(*mle_params[:-1], d_theor)\n", "\n", "# Add theoretical curve to the plot\n", "p.line(d_theor, ell_theor, line_width=2, line_color=\"orange\")\n", "\n", "bokeh.io.show(p)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Of course, we are not using the full generative model here, since we are not using the parameter $\\sigma$. We will discuss in much more detail in the lesson on model assessment how to visualize the entire generative model as it relates to the measured data." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Least squares\n", "\n", "We worked out in [our lesson on MLE of variate-covariate models](../20/mle_for_variate_covariate_models.ipynb#homoscedastic-normal-models) that when we have a homoscedastic Normal model for residuals, we may compute the MLE by first minimizing the residual sum of squares and then computing the MLE for the variance of the Normally distributed residuals as $\\sigma^* = \\sqrt{\\text{RSS}^* / n}$, where $n$ is the total number of data points.\n", "\n", "Conveniently, this is the form of our generative model, so we can split the optimization problem in two parts. First, find the values of parameters $\\gamma$ and $\\phi$ that minimize the residual sum of squares. Then, using these values, compute the MLE for $\\sigma$ using the analytical result we have just derived.\n", "\n", "The [Levenberg-Marquardt algorithm](https://en.wikipedia.org/wiki/Levenberg–Marquardt_algorithm) is a fast, robust algorithm to perform minimization of the RSS. A variant of this is implemented in `scipy.optimization.least_squares()` ([docs](https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.least_squares.html)). To use that algorithm you need to define a function for the residual; that is a function that returns the quantity $l_i - \\mu_i$. The function has call signature `f(params, *args)`, where `params` is a Numpy array containing the parameters you will use in the optimization (in our case, $\\gamma$ and $\\phi$), and `args` is a tuple of any other arguments passed to the function, which almost always include the data (in our case `(d, ell)`). We can code up that function." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "def resid(params, d, ell):\n", " \"\"\"Residual for spindle length model.\"\"\"\n", " return ell - theor_spindle_length(*params, d)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can call `scipy.optimize.least_squares()` to perform the MLE. We can also specify bounds as a tuple containing a list of the lower bounds of the respective parameters and a list of the upper bounds of the respective parameters. We bound $\\gamma$ between zero and one, and $\\phi$ just has to be positive." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(array([ 0.8601068 , 38.24676911]), np.float64(3.7549998715440034))" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "res = scipy.optimize.least_squares(\n", " resid, np.array([0.5, 35]), args=(d, ell), bounds=([0, 0], [1, np.inf])\n", ")\n", "\n", "# Compute residual sum of squares from optimal params\n", "rss_mle = np.sum(resid(res.x, d, ell)**2)\n", "\n", "# Compute MLE for sigma\n", "sigma_mle = np.sqrt(rss_mle / len(d))\n", "\n", "# Take a look\n", "res.x, sigma_mle" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Indeed, we got the same results as before. Let's code this procedure up into a function. Looking ahead to using `bebi103.bootstrap.draw_bs_reps_mle()`, we need the function to take the data set as a single argument." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "def spindle_mle_lstq(data):\n", " \"\"\"Compute MLE for parameters in spindle length model.\"\"\"\n", " # Unpack data\n", " d = data[:, 0]\n", " ell = data[:, 1]\n", " \n", " res = scipy.optimize.least_squares(\n", " resid, np.array([0.5, 35]), args=(d, ell), bounds=([0, 0], [1, np.inf])\n", " )\n", "\n", " # Compute residual sum of squares from optimal params\n", " rss_mle = np.sum(resid(res.x, d, ell)**2)\n", "\n", " # Compute MLE for sigma\n", " sigma_mle = np.sqrt(rss_mle / len(d))\n", " \n", " return tuple([x for x in res.x] + [sigma_mle])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The big advantages of doing this are the robustness and speed of the Levenberg-Marquardt algorithm. Let's do a speed test." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Timing for MLE by Powell's method:\n", "5.09 ms ± 17.4 μs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n", "\n", "Timing for MLE by least_squares:\n", "1.36 ms ± 2.47 μs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)\n" ] } ], "source": [ "print(\"Timing for MLE by Powell's method:\")\n", "%timeit spindle_mle(d, ell)\n", "\n", "print(\"\\nTiming for MLE by least_squares:\")\n", "data = df[['Droplet Diameter (um)', 'Spindle Length (um)']].to_numpy()\n", "%timeit spindle_mle_lstq(data)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "That's a substantial speed boost of nearly 4×." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Confidence intervals\n", "\n", "We can now proceed to compute confidence intervals for our parameters. We will do a parametric bootstrap here. We use the generative model parametrized by the MLE to regenerate data sets. For each value of $d$ (which are fixed), we draw values of $l$ using the generative distribution). Then we perform MLE of those to get confidence intervals. To use `bebi103.draw_bs_reps_mle()`, then, we just are left to supply the bootstrap sample generating function." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "def gen_spindle_data(params, d, size, rng):\n", " \"\"\"Generate a new spindle data set.\"\"\"\n", " mu = theor_spindle_length(*params[:-1], d)\n", " sigma = params[-1]\n", "\n", " return np.vstack((d, rng.normal(mu, sigma))).transpose()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that we were careful to make sure the data set has the appropriate dimensions; the row indexes the trial. We can now compute our replicates and confidence intervals." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "95% Confidence intervals\n", "γ: [ 0.83, 0.89]\n", "φ: [37.54, 39.03]\n", "σ: [ 3.54, 3.95]\n", "\n" ] } ], "source": [ "bs_reps = bebi103.bootstrap.draw_bs_reps_mle(\n", " spindle_mle_lstq,\n", " gen_spindle_data,\n", " data=df[[\"Droplet Diameter (um)\", \"Spindle Length (um)\"]].to_numpy(),\n", " mle_args=(),\n", " gen_args=(d,),\n", " size=10_000,\n", " n_jobs=9,\n", " progress_bar=False,\n", ")\n", "\n", "# Compute confidence intervals\n", "conf_ints = np.percentile(bs_reps, [2.5, 97.5], axis=0)\n", "\n", "# Print the results\n", "print(\n", " \"\"\"95% Confidence intervals\n", "γ: [ {0:.2f}, {1:.2f}]\n", "φ: [{2:.2f}, {3:.2f}]\n", "σ: [ {4:.2f}, {5:.2f}]\n", "\"\"\".format(\n", " *conf_ints.transpose().ravel()\n", " )\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The confidence intervals are given in each column for $\\gamma$, $\\phi$, and $\\sigma$, respectively, and are quite tight. This is because we have lots of data points. This does *not* mean that the data are tightly distributed about the theoretical curve, only that the MLE estimates for the parameters will not vary much if we repeated the experiment and analysis." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Other confidence intervals\n", "\n", "We have computed parametric confidence intervals by regenerating spindle lengths for each droplet diameter we measured using the generative model parametrized by the MLE. There are many ways to compute confidence intervals for variate-covariate models, including pairs, residual, and wild bootstrap. Briefly, here are the respective techniques.\n", "\n", "**Pairs bootstrap**: As we saw when doing nonparametric bootstrap confidence intervals for correlation coefficients, we can apply a similar technique here. We resample the data set as, in this case, pairs of droplet diameters and spindle lengths $(d_i, \\ell_i)$, and compute MLE estimates for the parameters for each bootstrap sample.\n", "\n", "**Residual bootstrap**: In residual bootstrap, the *residuals* are resampled. The procedure goes as follows.\n", "\n", "1. Compute the MLE for the parameters of the model, $\\theta^*$. In the spindle length example, $\\theta^* = (\\gamma^*, \\phi^*)$.\n", "2. Define $\\hat{y}_i = y(x_i; \\theta^*)$ to be the value of $y$ computed as point $x_i$ using the theoretical curve parametrized by the MLE estimate for $\\theta$.\n", "3. Define residual $i$ as $\\epsilon_i = y_i - \\hat{y}_i$.\n", "4. Draw a bootstrap sample of the residuals, randomly assigning a new residual to each datum. Let $\\epsilon_j$ be the $j$th *resampled* residual (that is the $j$th residual in the bootstrap sample of residuals). \n", "5. Generate a bootstrap sample of your data set where the $j$th data point $(x_j, \\hat{y}_j + \\epsilon_j)$.\n", "5. Recompute the MLE for $\\theta$ from this bootstrap sample.\n", "\n", "**Wild bootstrap**: In wild bootstrap, the residuals are resampled parametrically. If residual $i$ is $\\epsilon_i = y_i - \\hat{y}_i$, then a new residual applied to data point $i$ is $\\epsilon_i\\,v_i$, where $v_i$ is drawn from a Normal distribution with mean zero and variance one. Thus, data point $i$ in the bootstrap sample is $(x_i, \\hat{y}_i + \\epsilon_i\\,v_i)$. The MLE for $\\theta$ is then computed from this bootstrap sample." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Why I do not advocate for using these other methods\n", "\n", "Pairs bootstrap is a nonparametric way of getting bootstrap samples, with the bootstrap replicate computed using a parametric inference technique. This can work well if we have a large number of data points *and* no *x*-values are severely undersampled in the experiment. This is not always the case, however, though it is in the case of the spindle length data.\n", "\n", "Residual bootstrap implicitly models the residuals of homoscedastic, since any given residual may be applied to any given data point. Again, this is often not the case.\n", "\n", "Wild bootstrap is a twist on residual bootstrap that attempts to model heteroscedasticity. In using wild bootstrap, we have implicitly baked into model that the residual for each data point is normally distributed about the empirical residual with a scale parameter that scales with the size of the empirical residual. This is a way of dealing with heteroscedasticity without seriously considering the variation in measurement in a generative way. But, we really should *think generatively*. If we are going to model, we should model everything. A full generative model, including how we might expect the variability to change as a function of the measured and/or explanatory variables, is preferable.\n", "\n", "For variate-covariate models, I usually prefer to do the parametric bootstrap method we have covered in this lesson. If I have enough well-sampled data points, then pairs bootstrap is a reasonable way to nonparametrically get bootstrap samples to compute a confidence interval. If I am sure of homoscedasticity, residual bootstrap is a good method. I generally shy away from wild bootstrap completely, since I prefer to explicitly model heteroscedasticity." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Computing environment" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Python implementation: CPython\n", "Python version : 3.13.5\n", "IPython version : 9.4.0\n", "\n", "numpy : 2.2.6\n", "scipy : 1.16.0\n", "polars : 1.31.0\n", "bokeh : 3.7.3\n", "bebi103 : 0.1.28\n", "jupyterlab: 4.4.5\n", "\n" ] } ], "source": [ "%load_ext watermark\n", "%watermark -v -p numpy,scipy,polars,bokeh,bebi103,jupyterlab" ] } ], "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.13.5" } }, "nbformat": 4, "nbformat_minor": 4 }