{ "cells": [ { "cell_type": "markdown", "id": "fb9d7f6e", "metadata": {}, "source": [ "(correlation)=\n", "# Correlation\n", "\n", "\n", "```{admonition} Important Readings\n", ":class: seealso\n", "- {cite}`freedman2007statistics`, Chapters 8 and 9\n", "```\n", "\n", "## Scatter Plots\n", "\n", "The relationship between two quantitative variables can be explored in a scatter plot. \n", "You need data that is paired, like in the father and son data below. Each $x,y$ pair is plotted and you might notice a trend from the shape of the scatter of points.\n", "\n", "```{list-table} Father and Son Height Data\n", ":header-rows: 1\n", ":widths: auto\n", "\n", "* - Father's Height (inches)\n", " - Son's Height (inches)\n", "* - 65.0\n", " - 59.8\n", "* - 63.3\n", " - 63.2\n", "* - 65.0\n", " - 63.3\n", "```\n", "\n", "The relationship is called an **association**. When the scatter of points slopes upward, that shows a positive association. If the scatter slopes downward, that shows a negative association. A strong association indicates that one variable can be used to predict the others. \n", "\n", "```{figure} images/fathersonscatter.svg\n", ":width: 90%\n", ":name: fathersonscatter\n", "\n", "There is a positive association between a father's height and his son's height. The orange points are for the three pairs shown in the table above. \n", "```\n", "\n", "\n", "The variable on the $x$-axis is thought of as the **independent variable** and the $y$-axis variable is the **dependent variable**. This language suggests that the $x$ variable is the one influencing the $y$, suggesting (1) $y$ is predicted from $x$ or (2) there's a direction of causality being hypothesized. In this class, we have learned to be cautious in claiming causality. Go ahead and choose one variable as the independent variable and the other as the dependent without too much angst or hesitation. Just be ready to be humbled if you ultimately find the there is no causal relationship or if you get the direction backwards.\n", "\n", "\n", "\n", "For each of these two pairs, which variable would you choose as the independent variable? \n", "\n", "1. Hours of sleep and test performance on the following day\n", "2. Public assistance (like welfare) and poverty\n", "3. Attractiveness and income\n", "\n", "\n", "```{dropdown} Sleep and test performance\n", "\n", "Sleep should be the independent variable, especially given the temporal precedence.\n", "\n", "```\n", "\n", "```{dropdown} Public assistance and poverty \n", "\n", "Either choice is justified. First, let's consider public assistance as the independent variable. You don't have to be taking a stance on there being a positive or negative relationship. Statistician Udny Yule considered spending on public assistance as the independent variable and poverty as the dependent variable in his \"investigation into the causes of changes in pauperism in England,\" finding a positive relationship ({cite}`yule1899investigation`). This is the association you would expect if you believe that assistance promotes dependency and increases poverty. Public assistance might also break cycles of poverty, leading to a negative relationship. This can still be compatible with Yule's data if you recognize that it's important to consider the other direction. \n", "\n", "Societies that experience more poverty might spend more on public assistance. Given that spending responds to poverty levels, it can also be appropriate to consider poverty as the independent variable. \n", "\n", "```\n", "\n", "```{dropdown} Attractiveness and income\n", "\n", "\n", "Either choice is justified. {cite}`monk2021beholding` considers attractiveness as the independent variable and earnings as the dependent variable in examining the \"returns to physical attractiveness.\" However, as the figure below suggests, the effect can go both ways. \n", "\n", "```{figure} images/TomBradyIsHandsome.png\n", ":width: 61%\n", "\n", "```\n", "\n", "\n", "\n", "## Correlation Coefficient\n", "\n", "The correlation coefficient, denoted $r$, is a units-free measure of linear association, or clustering around a line.\n", "The coefficient falls between -1 and 1. It doesn't matter which of the two variables is thought of as the independent or dependent variable. The correlation coefficient shouldn't be confused with the slope of a trend line-it's more about the tightness of the scatter around some line. The correlation will be one if $x$ and $y$ are perfectly linearly related with a slope of 0.2 or a slope of 200. A correlation coefficient of 1 or -1 means that one of the two variables will perfectly predict the other in the data. More moderate correlation coefficients indicate a less predictive relationship. \n", "\n", "```{figure} images/slopecorrcomparison.svg\n", ":width: 89%\n", ":name: slopecorrcomparison\n", "\n", "The trend line on the left has a greater slope but the correlation coefficient is lower because $y$ is less predictable given $x$. \n", "```\n", "\n", "### Interactives \n", "\n", "You can drag around the data points and delete individual points in the plot below to see how the correlation coefficient responds. Notice some limitations: \n", "\n", "1. A correlation coefficient of 0.8 doesn't indicate an association twice as strong as a correlation of 0.4 in any natural sense. \n", "2. A correlaton coefficient of 0.8 doesn't mean 80% of the points fall on a trend line. For now, we don't say anything much deeper than 0.8 represents a stronger linear association than 0.4. \n" ] }, { "cell_type": "code", "execution_count": 1, "id": "f99a9a93", "metadata": { "tags": [ "remove-input" ] }, "outputs": [ { "data": { "application/javascript": [ "(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() {\n", " const el = document.getElementById(null);\n", " if (el != null) {\n", " el.textContent = \"BokehJS is loading...\";\n", " }\n", " if (root.Bokeh !== undefined) {\n", " if (el != null) {\n", " el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n", " }\n", " } else if (Date.now() < root._bokeh_timeout) {\n", " setTimeout(display_loaded, 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.3.4.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.3.4.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.3.4.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.3.4.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-3.3.4.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", " for (let i = 0; i < inline_js.length; i++) {\n", " inline_js[i].call(root, root.Bokeh);\n", " }\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(null)).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": "(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() {\n const el = document.getElementById(null);\n if (el != null) {\n el.textContent = \"BokehJS is loading...\";\n }\n if (root.Bokeh !== undefined) {\n if (el != null) {\n el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(display_loaded, 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.3.4.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.3.4.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.3.4.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.3.4.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-3.3.4.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 for (let i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\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(null)).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" }, { "data": { "text/html": [ "\n", "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "(function(root) {\n", " function embed_document(root) {\n", " const docs_json = {\"00620e17-3773-42e4-9305-4a972a246115\":{\"version\":\"3.3.4\",\"title\":\"Bokeh Application\",\"roots\":[{\"type\":\"object\",\"name\":\"Column\",\"id\":\"p1041\",\"attributes\":{\"children\":[{\"type\":\"object\",\"name\":\"Div\",\"id\":\"p1037\",\"attributes\":{\"width\":200,\"height\":30,\"text\":\"Correlation coefficient: 1\"}},{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p1004\",\"attributes\":{\"width\":450,\"height\":450,\"x_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1013\",\"attributes\":{\"end\":6}},\"y_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1014\",\"attributes\":{\"end\":6}},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1015\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1016\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p1011\"},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1034\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1001\",\"attributes\":{\"js_property_callbacks\":{\"type\":\"map\",\"entries\":[[\"change:data\",[{\"type\":\"object\",\"name\":\"CustomJS\",\"id\":\"p1038\",\"attributes\":{\"args\":{\"type\":\"map\",\"entries\":[[\"source\",{\"id\":\"p1001\"}],[\"div\",{\"id\":\"p1037\"}]]},\"code\":\"\\n const data = source.data;\\n const x = data['x'];\\n const y = data['y'];\\n const n = x.length;\\n\\n let mean_x = 0;\\n let mean_y = 0;\\n for (let i = 0; i < n; i++) {\\n mean_x += x[i];\\n mean_y += y[i];\\n }\\n mean_x /= n;\\n mean_y /= n;\\n\\n let num = 0;\\n let den_x = 0;\\n let den_y = 0;\\n for (let i = 0; i < n; i++) {\\n num += (x[i] - mean_x) * (y[i] - mean_y);\\n den_x += (x[i] - mean_x) ** 2;\\n den_y += (y[i] - mean_y) ** 2;\\n }\\n\\n const corr = num / Math.sqrt(den_x * den_y);\\n div.text = \\\"Correlation coefficient: \\\" + corr.toFixed(4);\\n\"}}]]]},\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1002\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1003\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",[1,2,3,4,5]],[\"y\",[1,2,3,4,5]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1035\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1036\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1031\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":20},\"line_color\":{\"type\":\"value\",\"value\":\"navy\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.5},\"fill_color\":{\"type\":\"value\",\"value\":\"navy\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.5},\"hatch_color\":{\"type\":\"value\",\"value\":\"navy\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.5}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1032\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":20},\"line_color\":{\"type\":\"value\",\"value\":\"navy\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"fill_color\":{\"type\":\"value\",\"value\":\"navy\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_color\":{\"type\":\"value\",\"value\":\"navy\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1033\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":20},\"line_color\":{\"type\":\"value\",\"value\":\"navy\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"fill_color\":{\"type\":\"value\",\"value\":\"navy\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_color\":{\"type\":\"value\",\"value\":\"navy\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p1012\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p1027\"},{\"type\":\"object\",\"name\":\"PointDrawTool\",\"id\":\"p1039\",\"attributes\":{\"renderers\":[{\"id\":\"p1034\"}]}},{\"type\":\"object\",\"name\":\"HoverTool\",\"id\":\"p1040\",\"attributes\":{\"renderers\":[{\"id\":\"p1034\"}],\"tooltips\":[[\"X\",\"@x\"],[\"Y\",\"@y\"]]}}],\"active_tap\":{\"id\":\"p1039\"}}},\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1022\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1023\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1024\"},\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1025\"}}}],\"below\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1017\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1018\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1019\"},\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1020\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1021\",\"attributes\":{\"axis\":{\"id\":\"p1017\"}}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1026\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"p1022\"}}}]}}]}}]}};\n", " const render_items = [{\"docid\":\"00620e17-3773-42e4-9305-4a972a246115\",\"roots\":{\"p1041\":\"e027b20c-7e97-4ef3-8ab5-4a76a9eac6b3\"},\"root_ids\":[\"p1041\"]}];\n", " 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": "p1041" } }, "output_type": "display_data" } ], "source": [ "from bokeh.io import output_notebook, show\n", "from bokeh.plotting import figure\n", "from bokeh.models import ColumnDataSource, PointDrawTool, CustomJS, Div, HoverTool\n", "from bokeh.layouts import column\n", "from IPython.display import HTML\n", "\n", "# Display plot within a notebook\n", "output_notebook(hide_banner = True)\n", "\n", "# Sample data\n", "data = {'x': [1, 2, 3, 4, 5], 'y': [1, 2, 3, 4, 5]}\n", "\n", "# Create ColumnDataSource\n", "source = ColumnDataSource(data)\n", "\n", "# Create a figure\n", "width = 450\n", "height = width #int((9/16)*width)\n", "p = figure(x_range=(0, 6), y_range=(0, 6), tools=\"save\", height=height, width=width)\n", "\n", "# Add circle glyph\n", "c1 = p.scatter('x', 'y', source=source, size=20, color=\"navy\", alpha=0.5)\n", "\n", "# Display for correlation\n", "div = Div(text=\"Correlation coefficient: 1\", width=200, height=30)\n", "\n", "# CustomJS for updating the correlation coefficient dynamically\n", "callback = CustomJS(args=dict(source=source, div=div), code=\"\"\"\n", " const data = source.data;\n", " const x = data['x'];\n", " const y = data['y'];\n", " const n = x.length;\n", "\n", " let mean_x = 0;\n", " let mean_y = 0;\n", " for (let i = 0; i < n; i++) {\n", " mean_x += x[i];\n", " mean_y += y[i];\n", " }\n", " mean_x /= n;\n", " mean_y /= n;\n", "\n", " let num = 0;\n", " let den_x = 0;\n", " let den_y = 0;\n", " for (let i = 0; i < n; i++) {\n", " num += (x[i] - mean_x) * (y[i] - mean_y);\n", " den_x += (x[i] - mean_x) ** 2;\n", " den_y += (y[i] - mean_y) ** 2;\n", " }\n", "\n", " const corr = num / Math.sqrt(den_x * den_y);\n", " div.text = \"Correlation coefficient: \" + corr.toFixed(4);\n", "\"\"\")\n", "\n", "# Add PointDrawTool to the figure\n", "tool = PointDrawTool(renderers=[c1], add=True)\n", "p.add_tools(tool)\n", "p.toolbar.active_tap = tool # Activate the draw tool\n", "\n", "\n", "# Add HoverTool to the figure\n", "hover = HoverTool(renderers=[c1], tooltips=[(\"X\", \"@x\"), (\"Y\", \"@y\")])\n", "p.add_tools(hover)\n", "\n", "# Attach the callback to the source\n", "source.js_on_change('data', callback)\n", "\n", "# Show plot\n", "# Define the CSS style\n", "style = \"\"\"\n", "\n", "\"\"\"\n", "\n", "# Apply the style\n", "display(HTML(style))\n", "\n", "\n", "# Show the plot and the correlation coefficient\n", "show(column(div, p))\n" ] }, { "cell_type": "markdown", "id": "f43858da", "metadata": {}, "source": [ "Below, you can adjust a random noise parameter and a slope parameter and observe how the correlation coefficient changes. The $y$-value is calculated as $\\text{slope} \\times (x + \\text{noise})$. \n", "\n", "Notice a few things. \n", "\n", "1. Increasing the noise will decrease the predictability of $y$ from $x$ (and $x$ from $y$). The correlation coefficient will tend to decrease. \n", "2. Changing the slope doesn't change the correlation coefficient unless we flip the sign of the relationship. This underscores that correlation is about the clustering around a line and not the effect size indicated by the slope." ] }, { "cell_type": "code", "execution_count": 2, "id": "aa09a2dd", "metadata": { "tags": [ "remove-input" ] }, "outputs": [ { "data": { "application/javascript": [ "(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() {\n", " const el = document.getElementById(null);\n", " if (el != null) {\n", " el.textContent = \"BokehJS is loading...\";\n", " }\n", " if (root.Bokeh !== undefined) {\n", " if (el != null) {\n", " el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n", " }\n", " } else if (Date.now() < root._bokeh_timeout) {\n", " setTimeout(display_loaded, 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.3.4.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.3.4.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.3.4.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.3.4.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-3.3.4.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", " for (let i = 0; i < inline_js.length; i++) {\n", " inline_js[i].call(root, root.Bokeh);\n", " }\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(null)).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": "(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() {\n const el = document.getElementById(null);\n if (el != null) {\n el.textContent = \"BokehJS is loading...\";\n }\n if (root.Bokeh !== undefined) {\n if (el != null) {\n el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(display_loaded, 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.3.4.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.3.4.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.3.4.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.3.4.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-3.3.4.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 for (let i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\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(null)).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" }, { "data": { "text/html": [ "\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "(function(root) {\n", " function embed_document(root) {\n", " const docs_json = {\"25e80052-d42e-46a1-9860-9f433ffa8330\":{\"version\":\"3.3.4\",\"title\":\"Bokeh Application\",\"roots\":[{\"type\":\"object\",\"name\":\"Column\",\"id\":\"p1093\",\"attributes\":{\"children\":[{\"type\":\"object\",\"name\":\"Column\",\"id\":\"p1092\",\"attributes\":{\"children\":[{\"type\":\"object\",\"name\":\"Slider\",\"id\":\"p1089\",\"attributes\":{\"js_property_callbacks\":{\"type\":\"map\",\"entries\":[[\"change:value\",[{\"type\":\"object\",\"name\":\"CustomJS\",\"id\":\"p1091\",\"attributes\":{\"args\":{\"type\":\"map\",\"entries\":[[\"source\",{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1042\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1043\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1044\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAAALsDv7u7u7u4rwN7d3d3d3SnAzMzMzMzMJ8C8u7u7u7slwKqqqqqqqiPAmZmZmZmZIcAQEREREREfwO7u7u7u7hrAzMzMzMzMFsCqqqqqqqoSwBAREREREQ3AyMzMzMzMBMAIERERERH5vwAREREREeG/EAAAAAAA4D+QiIiIiIj4P5CIiIiIiARA0MzMzMzMDECMiIiIiIgSQKyqqqqqqhZA0MzMzMzMGkDw7u7u7u4eQIqIiIiIiCFAnJmZmZmZI0CsqqqqqqolQL67u7u7uydAzszMzMzMKUDg3d3d3d0rQPDu7u7u7i1AAAAAAAAAMEA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"y\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAAALsDv7u7u7u4rwN7d3d3d3SnAzMzMzMzMJ8C8u7u7u7slwKqqqqqqqiPAmZmZmZmZIcAQEREREREfwO7u7u7u7hrAzMzMzMzMFsCqqqqqqqoSwBAREREREQ3AyMzMzMzMBMAIERERERH5vwAREREREeG/EAAAAAAA4D+QiIiIiIj4P5CIiIiIiARA0MzMzMzMDECMiIiIiIgSQKyqqqqqqhZA0MzMzMzMGkDw7u7u7u4eQIqIiIiIiCFAnJmZmZmZI0CsqqqqqqolQL67u7u7uydAzszMzMzMKUDg3d3d3d0rQPDu7u7u7i1AAAAAAAAAMEA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise0\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise1\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"N9Ka52hk2b9b9zaaUf3lv+U2lLPsC+u/c1dwKtl65b96nGOx5e+Jvxzv7dCA4PG/GI/lZVUBzj+PQ0i6jI76P/rBO2XTvuc/sjbNPxGOyL9gQXfbdGfsv1AKk4K46Oe/+Q+WRksU+z/z3kpaeQOqP0C2trFEYuS/TS95KetvyD8OdqOQUs0AQGPvOrO8wr4/CdplvCDA4z8tK9yS/TXTP9R7rfBCi9a/aXB5KcFH8r93+PaToVvWvwF2VdYLvcq/eXym/53F4j8eR4++89jqP0T2jZeWy+0/QqCHDxBH0j9EWxyQE1PsP/YCmCYHJOi/RNSOer8L9D8=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise2\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AtV6zOtp8D+XCXz48xPjv7RjuJ3hQ+8/Cprt86pYw78FvqRqJxsCQFwbJ3ArUQhAwQNw9Q58EUCAfJ6KDFgGwOha4BMXGwfAq7Xpl5Uk8L/cirY9GHzUP8DnvmeTCfw//ib461wz5D8MKr/Udy0QwBgkCbfYmOO/C0t9rcR++j8wl6+JvnPdP1UMVEVlYvg/JPe+oj913L+nMTu+cLLZv3XXfmA+4dc/hYubQ0k+6j8PDmCe4mHZPy4tr8FZd84/BrRIwRB29b/5vplMASroPzmJ3catL88/hXDdt10SAkAcRMyDxC4DQMx43po0s9c/plrUKqsE6L8=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise3\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"8+COILio/r/3ziMM5lP0P/VYV4zWss0/3vuYIkaB8L8xnHfTvr3AP0f7ywOSwv2/6ZwNdbXAAED7b4nYUHb1v78mLBZgYw1A1qOR9Bpe8z+QvKuU5H38P/sO42wjRwrAkl/wH75C4D8wNfeU+sUBQAiT5leJ4wbALw1UBJaO6b8c+UPiRwy5PydfgGY3ehDAOH6xcltB7j8l9eyez04EQFZWRq7doATAkx7lTILT8D+oWthVq34PwCQ2ZsDYt72/XceeFadjE8CiqNCK/ekKQF9DFN+RoPM/4Jk99ePnsr/msxLOl5oCwAfV6tj0kQ5AFnFLw++aF0A=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise4\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"LMIFMUu6HcAklTTvU8cTQGJZIYTbChpAefucz/uh9T9LSSCtMzATwKszAFyGoAtAINZNfmUo57/7DjhaUVMDwLDkjXBRrhPAAxGOzwCeAUASXyWBrF4JQLbSgLf28wPAtabZtI+oAEDdP77qOE8SwCtgenfYqAlAEe2WP6vXxz+z0mGuhOHnv4YCBHsEDNq/wjGJV+rNC0ALQXhFXwMIQNi/jkNh8QBAs3nHeDGg4T/hqVLfFezTP4HROGfFyQNAvdYVuGHC7T/OS0oMdtcFQO7eDAb02PO/VT+/OIx6I8AxQ7SLBp8QQC8tZi/vfiFAkqKvplA//D8=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise5\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"IyQsvVsG4L8TIXfWxtTlv+0k16N1DOO/esZ0BLdItj/9WF1jvHAWwLhohBgMrwTAo9nnAMfwE8C0nbIlaOfzP9xyBvc1u/e/ncTrxfbOA0ALToBn1/Prv5y540EJuhNAT9fhniwV8T+Jz3D5MOglQNRLLBiv9iLAiKiDSG3gCcAFFAzmnAcSQBayA4mDSClA9OOqTQrk878+RuBTuvLLPykycWrqGvK/Us5zdw+hGkD8DLmmEPz2v4rl8kfqMwtApEMmaImV+b94ZjA2gHMZwDQQmhJ1Ffk/iPEdzJwgBEAHVlwHUd0ZQJRzAAPpq+G/Jm25m8mxCMA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise6\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"cBzFVjUDC0CGI8nSWhz3P/yew/uf8fo/J2lGb0UT3L8E27nDHtkbQBlPbZVTvAFAtmSsjhzbJkCKqEcVVaoaQPzroGVnog9ApHDOln2HI8Bcwv2fTOkMQJ089H5tLARAyd0fsXx2E0B6APBeDREZQKHTo8D9PQPAdCfnxbDGE0ARVFzwm/0KwJD5naxidSdADRB104L3H8DIP3DT1SAlwJVQygYEzyPA4AJ+0ZJfFcA+Vn5S2NsawNKhXQsTeSdAK//mOQ1Y/7+5FdY0sxwgwFK4y93EvhpAXt/qxjQnDMCSnjQmOq8dwGye44QnBRVAjF5e2t/rDUA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise7\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"g0ha/IlbCMDo3pOUn7QjQC0r4XMz6+w/xDaJuSWjJkBg5q4USycMQKYAmVHC0iVAkRTWlZaB6D8AD/tckBMhwP32OMREJTFA40HL7TeQDsDcNMNGFEX2v6yDFtx0nBPA6fWWw7nH9r+ktYR20S37P6xItPjfmvY/wmgShDGCEkDaT0tTGBcpQJ90o5/r++q/i6oONYFDIcB+kz+cbY0gwMA5790gpBLA24erWVFwJ8BkUv1T0BkXQPRE/L9j5gvAfgyc2EdqAcAO7xa0xR2Lv9jhd9N8jSPADzOdaeodGMCByx0MVeQSQLWn2ECwURFATGiQE1DRCMA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise8\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"xvVGdfP3LEB7Rt7pQeQkwL3ZSTxFFAbABCOxHSiM/b/QntTyPFg2wLCemDYeAC9Apll71ftxB0BjrxBbo7YgwLr4O5/NaDBAsgIoPL69EkAb+Qo1W30LQG/Ln+eHbBPAX8PSlWkx6z9MsmXDL2kowJ+uYJDacBlALkFzI8z2B8D+GiXGfSjxPxBUEuGdOyNAfHLsI1A5AkC94aFBRMwAQC7+5CMqsgFAUhu6AvZ2F8Dqsij4jMAaQO04rlKZsShAYn3EziJIGECoM0JKLFEcQD9xJLGwEhzAMwfEtenEG8CEyJ4E1A0nwMao+f5OtyNAaDerontEAMA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise9\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"j0VoG3syKUBGAfYaGSYcwDXC5GIqgA/ABt5KNoB76z9GNgi7CpYgQDIhNY39fuE/g1HzKOdm/j/KL8WMLQrDP7utaB7Zg/k//geon7EYJMDQnIvil07nP2hW1EoM3vq/XN3kKY5d4L89b8WqX7kRQPt3IjchgRjAXEeym5tW6L/Wa7Jm+WgFwCtn+ua1Cw5AWwMDQnJAHECFAvp/mTIhwLD07iLAFxVA4qjAlJCXMkD7OkNTF3sqwBi5Xzvd4h3A6yaBNWezH8DI/a1GVBgEwGVJta0WNi1AItoGnrrDvj+F+RHSSwIZwEYaP4WKYhZAmuhRbsyXFcA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise10\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"30H8yd53JkBRlL913msIQORgL+6MxitAfpq1QCp0GsBi3mSE/k4+QP0PSo/ffSBAntJemOYuGkBmiYKNW2Hgv9Iq3k8dBh3A0brZwvlaIcDp7V+bocH1v+9GD+gK5B/AD3CW1jKdBkBo4AVtnoUgwIGYCAnj1xhAKToM11cfI0DrZCuKzjscwGUGlHuN2idAYTQgBA0JA8AsRyTwEhsnQBzyGMrShhFA6tWBLVJyJkC4SlHJvfAjwE8yZB1IFvG/HOlFXFEHLUDSnJSDsrgYwIiz/DE8XzTAQAz4PgdtM8D2FTbyfBA5wJ4oxndCJDXAweQxXi93EMA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise11\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"3BnGj6sgLEBoFFVGRXUTwMIAz5lseAxA9gMAzsZb87/pcrGL5hK4P4Nzs+5dmv2/sPSnnd6n/r+4lYlrjUoUQNARZ2gi3ynAvvmDSAk5JkDot/p+ij0kQJTKV3RAKgHAecvAy/m3IUC/SOiQ8dsewGfsULdHoxfA1XDwwJ+A+z9FGNqbTL0AwCMGq8+VvhPASk3NZ3SWHcAImh3cnocYwBZ8ZvtlqSRAt93hEWZgNcAULOc3/gQPQMIJXZ9zzgTAKOOJrgsDIEDC//YHyqkWQMwutPedmz7AQpWTnHW5GUDIDkAKQIkMQHXWsm1qyM4/jNJdUSSfFMA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise12\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"5SreUI96JECV60fdTdMTwABDDqdABDZAJgSF8yIXG0BEexlnaKc5QLwLACVS2iLAdBj0HDQSNcCKV1HTqichQKKidoUDdyRAEvtM9RMo2z/iWPU/LHcywBbMcmy8fxXA2kTMZc6pHUDQgcQ/Ua4BwON90WHnRPa/c3GSYRTYAMArGqy9+GkmwOJZ3vbAlRnAes4c1WAeMcDBmi9HLDc1QPLohcNh0RbAdN3WuN/sFkCQb0udd4YowNwKdN2UESNASgvlu1l6NsAv+4VgQhgmQChaC/KdKdu/ONl/WsdTOUDPZG9oWFsvwNPggbiBVO0/5LtAZougEUA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise13\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"DsW8qBYHMECaFRNmEv0VwKZKHIUO/PE/IwUgGCHaO8CSgg2dmpUlwChPR1rpexdA+m6GYmK1LEBiUhRJ8kwNwAIdNhqNuzpAVk5RAxziNkCK/HZtPzvpvxXpLFMjYD/APjqJq70bN8DwAlmobTkkwAa8hdUJAy1AgRfuPVgiEEA1J50fqDk7wAu6VVOpygfAm+p4Q0T5NEAmUzpmZn0TwBoC0zrMfyPAdY3E/Mm1OkAZ3H7r5jfmP9Z8gA+K6hjA3KIb22w1EkDZX70X5o/MP/47OvS9UBbA0CUePnxrL0DlPI93HAItQLSrqUfG3CVAwDEo34lm9b8=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise14\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"o67Vrn0OMECv/AUWSkTmv6UzzEHMIRpAaO8SrHfxLEBpEDHfy6UmQNpFsxR7DjlAppo1j5tFGUDISfXFq5M3wJ29RbYMPjDAGtMUaMjmMkBfP8CIRo0SwP9X5thspRVALjz+8DvXJ8CqqWRrUQYsQAw/soL0jBXAGPwvJNxpNEAqRVhfG84dwOIZYbrHTi9A2SZdPxLiIkBXK/LsGjokwMMLBBCbxS5A+R7LgOo+KcADjRLfcQcnwB3Ipf45NSRA9x9Pk3OCIcD2zXbHqqAgwGhF7xopQhPAuiP7djYBLMBKdgkahUItQJKT/1bVCSFAJwyuaCsP778=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise15\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"O3ytzZsD+r/b8kaAYwIbQH8naATjejpAA2MyTwwhKkD31xvO5oEewArJ3lmUUidAea8lAk2B/L8VDJhlOeEHwFb6RwVA/ztAtPP+1+IiGcBOhoDBR8AcwCAB4pQVSD3AlTulpPEINcBGbiSTPxEbQGrs3BX+2CTAevbpiMHsHkAziN3WGrkwwMTT24DwBCfAFXi8+bM8JEC390ul0+k1QO2R6OwwxiFAb/5xoav3MUBb8xRBpJE5QJ6ic3viMy9AZhErl56NK8D5VhYPYUj5v6Msrhrn5yJAcMswZAzkGMBAFk8h5B0bQI6hd8v1rzfATyqM5dzbKMA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise16\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"kcNZN5XsIEALaNycjeVBwG7rqr4wuTHAK1XbL8Ak0r+On9bHo4I7wK7QLJT2Pu0/0taDnuSVKcCDc9dgfKkSwIUfZdEskxDAYFJvbsI6CEB8SxysjgoiwHqkWDqw9fY/t9PRL608I8CZiX6sWsshQDjTs5XXGTtA47G5ZwczCUAcJyiYRr4FQBW7htLGnzLABpjrXQ4wJkBWFQpqFkIowPjjCYQT4inA+M9wQ4vWIUANuSkPRywHQBYqDJv9tjFAmLZAHgYWN0CgPn1EEkUhwEesIz+obgBA0WeNHKkqPEDaF8G44+0uQILi7z1M0SZAYH+5VDjmNEA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise17\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"RkSr2HaOJMABz0xu0qQlQOuftBwS9TdAb08P1DWOO0C0Z8hbCGkrwD+c7QQlHRHAAGFARU4GGkD/WJqh3aYTwHwswbK8pBrAsrXsLIxBJ0Amkxk2KQgYwMyXADX/ZD7Ahv05vwmbGECQgywMkt0cwGdy5uM+3yjAMtWZqReeOsD7Fr3GJzwxQCiWSXQy7kLAYLEF9n/jPMDPRUGi7cESwH9OWipq5DRAk9jkENdDNkBj+2sDfKIzwL9g/0lxKAjA4JutkoGtOcCQwZrsxTAxQK5KyC0AGjnAqpxryIB5A8ApF7qfi48xQLM68BqRPw7AlFTuRyP+OEA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise18\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"2s7C6/5RL8CQTjIy65QaQGJndT/Zty5Azh+gTlUeBMALfmTZIvQ4QCFpx++PuyNAgb8yI155PcCnps5wT9BRQLGY3FrmWSdAASp41DTq/j9rKnG+ui05wAj9FueTjPc/oqfxR9WOIMCUr98GXTInQFbIdnagwhpAAfVtd1WtQECV4HRg9HsEQL47x2x3fCJAPrh96x/RGkDp2/WX7WEFwDAAYmjdaArAHE/kr2jRM0CMynnmuhQsQOJ/BQ/vqCbALC8IrLYKNMAm9COeAWrzv+wM/Fnq5zRA7k2mEb+2378Yx/6okm8/QEPxXjoM5yvAnP/Y0G9lBEA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise19\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"GqRFp6bnR8AM6686qKImwHzNHK5DfhfAqullFWdqI0APRh5gVEBAQHZyHVnmPuU/RbLx6NqfO0AriAhh1SQpQBmiAvSdvTJA2K1zI8G2IcDmEK4PmVA6QBsD0vPlYjTAN6YGKefQIkApmKt+1BYywEmUYBqFsCPAoDjaYkTEO8CbuP1OCJ8jwJeoEJFUrxpA8XizFf7n9L+TNzJXh5s5wJjZ2ryt8TtA76emd/igGUAqe77yOiczQKxAT/6v1i1AxPg8adVDKcCsBBKtWnpCwO/QysafZDHAQoAFdihHN0CyEdi2cgQ0wPWb+hN5Ai9AWl2Wun5FJ8A=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise20\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"zj8AmeByH0DkgFcdPD1CwFLf9sJsVzdAIpzo31Fj6b+bO1qXbbcxQP5mSrC7YA5AVjkFWyzsL0CvR2jmIk8AwLRi0pP4uy1ARIvRGwMxPsC+0WkePZ01wKjaBZPaBC1Ai9LVKvcS6b/nJlGr4kwSwI7vLWrrvAzAysdIRaoRJEA0SBYN17snwGbZFL+MaSRA7d1BsdpQMsBe/6/LQkogwKR969rzsjNAjCxz+89sNUAvNr8pbvE1wMCz/FXPxTBAy2yaDZ3INMC3qqlrKFItQJBEoHj1/ELAEMKoU5tXNsDryrhJ4FskwHaQLMRDowrAIFqj5+d4PEA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise21\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"UxSHSeb7MkBTxLuU24pAQMZR/Fu5VjlAZSz2o7LCF8AOVtjjF18WwBjW35vKcjZACd7Uki0h6z/sVq7e+18KwAF9PsIMCjzAGMBkDKPiAcCkCX3GMk5NwBrLQAstKCPAhLCT1uOTNMC5qdYzjxYtQDnKtGevGiTACeslreyjG8DheXf6CUo8QIGKWMfJBzbAMZFR0W6ZGkDzTwhBeuZDwKtetscjJv4/xjwsYy07IUDUmIuVqg4yQBUjDCNS3zLAda0dI+fZGkDZOEOBlrkaQI9MXbfp2Nm/JJj4beYzCUCPQ3HI63cjQCGe4KQCtiBAWvxQ9o3qNMA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise22\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"0Y0GjxdPOsBLguwp15BLQOqJgpQiHkVAWU3RGAWePsBWyW2tQM8jQHzHZ4hzmytAhTDUA4iHMEBwoAgjqLUIQMqVBowkZDTAsdJPIZENEMAqbN6WCJwlwNoDdqtQpgdAhK6xZd6dF8BsnqbqxiwHwMKISM98aDZAH93d94ASO0Bmpg0b+fs5wEuqGxenPCTAciMFDMllMcD0qTrlAOw6QAgH1avC5fS/W2y8VLXgP0Cjo92CeAMlwKZo/azSTeI/WvZWv9urPcAe5PNQ4ac8QJ+E8NPs6B/AqL9aWDNWQMDRserhexEqwCUmp+meWknAuIOH1zdm5r8=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise23\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"6AzwY5+yBEB4CzYm0YAaQE/VwDRuOkFA3X0CI5ewG8AIfJfpTJIyQCfSennYuRxAru6cfBzJEcAI7UbrGuJHwMxxIQrjyjVAwbPxFswuJ8C6uZzEWm7aP6vO5Bl5OD3ARCwyXhwJGkCbRKIBr+ADQLuKSgbApuU//1D5qUvNCMBMY5YbzCE4QMoypsIbOTZAkWsnzDKyMEC82vW/oBhTQD9DweRAnCvAVfNbwTJ1IcCIQYoEKlc3wK+fD2csDiRARd2R/tmfL8DBLooa+gdPwM3B0Ici6DvAOARt+LSW+j/r1li5oDk3QD5bYc2i50HAy/8wVh4sLMA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise24\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"caZJgWvBCsCovMdjInwxwABDUtHwfilA5quTwseUuD8KpoJdbtceQLqJ73K4ZzHAPJlnVj1wQkA9br/Ds26Cv/8MbKGRCz9AWmsWPmcSJcCOKtypZ1IsQL69YUsiTjDAIXKh7WLSNsAqrqNHh+cwwCjk9/LgnPG/cH/N7pf/FMDP6KKlcXhCQBGfiYejkTvAHD8z6QkrOsAyrFJd+mZEQDrHQM27OC1Ahc4JtrGTRsBAzb9Tcd4nQMfBOTywyBZAapupa7u7ScAsbX/eLr0hwOTivPuQz9q/dldOsLyNMUCq5z/fa+g2QEAz9jElYgJAbhNxkIXNOEA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise25\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"GeuiEDFBDcB0BzPM+m81wKLvJIjDWjfA3IfqGdwhK0Agk2sdJHpIwASFrez38TBAUhBJUBGqO8DOo06EEfYhwKGzP2vjRClAbBAzX9JyPkBC9pPYLUJIwEQy6WGKJzTAQY4b1Oqf8z97U4Cz580twNB2C0pjijVA7nu2JnMUSsD0lqadDxciQJ9O/zvHSyVAqjKvKdWh8z88maSpUI47QF6j/nRGvT7AfRRAsiW3O0AIwsLJsJIxwLOZBPiFIzJAmbXrYtA1IMBrbGXIy1s0QEWX0+4BgzNA1IH+r/hMQsBbPrv58uUOwNPpteKIfALAAHH2VpvJF8A=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise26\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"WN1D/bClM8D4/BTXlRFIQLXKNWv9vhVAkW3d3Rc3REAxnJjCgZgtwJCM7blRmzvAa0HpAu6BC0D76qZAzkktwDGOD+BnEk9ArqzTTyOGGUCu+uIos/c9QBLUUZ4NUhfA9wC2MYf0IMD8Dvh44rfpv0/ESOVOfyJAYqVInNkWNkDJyrv9dGgJwHSy84G/szHAdYecV8nDO8C1SAmgC+b/v70vfqFHyy1AYY7SBDHQJ0DqSSGm/aXdv1NwxDUMNS/AYpY67fSGDkBgwQ3W3bstQHnJocXdoe6/rWngtGVfB0CBpbfoDU4PwJzbKymQzTdAwInka1LJJsA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise27\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"y8tfWLAJFEBXf9K1kkwlQJ2mKdrPljNA98muGscxREDRP0mavDwyQMnzywrDLTBAX59iriPZQ8AQqdXMdl8wQNX/pIsW905A0APbMglpNsCUJrTT64Y7wCa5otq/LhfAM8vU9t2SO0ASozCbJlYsQBlzBdnDwynA6AKMzXMY77+qse9wAwA8QOxJms8lKTJA+jt/chllUEDv5+xrTic7QBUh4pO2FyNAVhzI7vyYMEATYS+CW9giwFNj1fJdZjrATSqBUkWSEkABHggQhH0qQErQWR8Z1kLA8gs1Rw41LMCjXE/1l/AjwGDPTCx7sBxAG9eql10hHMA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise28\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"YEdrDOjsKEB9w8ANJvoFQNeSQHZtsD1APdcgLNP0R8AVEOF7IjNHQD8Z35Px2ENAwIQBF8SK9j9KN/1MhDUyQNMNyiq9+zBAJnOBXeSkNMDF/kTaRnESQHcUE9jzyTVAAm0OdohZIUCqcgIF3m89QOa2vvl0RwVAgD1ZrpUWAkBKzzEEnn81wBK1m3kEaiTAJkixPoO+KcDyxRDzc+BHQLiv7XLG7xpAh34aoOP7O8A07012TlImQJUKA0chgRXAQ1hdhFhgVcBmxDjhKd8qQBT4J1jfvEXAWDTB1m4yMEDcy/JkVuo6wBLWlIaiakTAMR7BxOGuK0A=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise29\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"0kFqf3KqRcCC12D7lugpwM90Nu0wtRdADxgz2TbBMUDw8x/WBZo1QD3U4Pai1fC/cUzS+7MjOMAgPbbuM+VLQBFOsSnOkjHAnTPOG+wmSkD57uI+Fz8qwN0gREex1kBATn/TlWwHP0DOnjTXC1I+wMNMGa1DmyRA8PrpyQfoNUD8qntdF1Q0QGqZkoKlExfA3aV/tICDIUBPycw1WuQmwBwqiXHF/UDAVySHjU6JPEAaQBgrEzswwDhihZOpAURAXtMVcph4MUCAAotHAuM5wNaS/f7xshLAGAXqQz6cIMBvnhZMeEE5wLeiOv85FS1AlxF5NnbCK8A=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise30\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"PxOLBrJ5SEA7nBcNpdM5QGoWsx3aZzrAp4/yc5E94r9YXei2EjYbwEbQ9My1d0fAWrM3KgvwO0AVjosdiH48QI+mnm3ZwztAPQDGX1VrK8BhyjP45whAQJuVgTScKxnA1h60WO8NPEB0TedXGzBLQOkKFvEs0BBA0uiNA4hJRcClJn01mgMjwCl2/33FOjNA8Hg/T1FMQkDbNSfswgFBwKi6y8mk3RbAibuzji0AHEAgbL8CkxkqQFkkLKMNUDtAu/RgPQR0PMB399RroGgpwJbDdrsuPT5AYXrlpEOKJ0Af/rN1IOcqQMG/GgM+4UBAVzy5Tgr5CEA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise31\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"mTZJMzxeMEBAKyXzwYAjwNaYTPD/2ETAKxxqUpUTRMBj56Cbdm4CQLykmP3avhjA/tpURe5KNMCNaJzdhbcjQGzJ+u0xmTvAolcBk5ScC0D+qmPwyl3jv1QgM+smCjrAwfuk9aPPUcCYv+ArgJNGQMm/aoyqoSNAcQ+XOKClVMA6f6ZnRnAqwLJ5K+kyaihA8DcjHBlKHMD99Snxf/0xQEb5m//ZKz7Ap/fVPoa4FUDHvOI2JYf6vxSqlaUesxbAe8/QaVdoG8BNXXzVKsUYQIAlYr8T6jxApXU13gdvMMCEt36ytj8pwHeoA6D56BNAgUkx5xTMDcA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise32\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"oWq4PLWtKEC0tWLaPPw2QPw967G1qERA0CqjoEjPDcCAOBcD6DdSwJ529e/p0gHAWe+eJdClJkD/Z+pYJO4XwDlXrRc+nRPA1XzoBcd1U8D9lRReaEEwQH81/xfyvCTAVplLql4tSMCOxxeHsOI7wAVIZtevrDvAexUEW996M0DWLhh18PgxQA7WpeVqPEhAWtTk0My7NEAOkRkbW6BFwKivugYfjEbAuF4neHMXQkC11syMJRFJQHo6HJmHbh7AJzDlzbbhMUA35f3hCBRIwBVJoLNNGk/A+7L3DM3IQsB3Q0ARKdwmwLB+h4cdrzDA7blvrGB0HcA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise33\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"wx58BRc0MMA96D9vvGo2QNADnlT1jUdAJD7uF70c8z8GCDHNWr9QQEegQHRz7zTAqowPzxJUMcDYbmA0KpcpQIzPzgyuaifAZwX8ZN5rQ0DSALstFCg1wF3ZYjQP00VAewca6Y+hGUASCmF8PCpVQPrHYHmvoS7Av6k8um7BGsA2/uu/3TkTQNnLxcBU/lHAY+BrkO/fM0CbQO48YLwvQDUVQhws3AxAdL+gHId7ScCM5U6ArIRJwONprNTAWzNAij83bPRjQ0DVCEnDBE9KQCLld6OwjD3ASRY1QxcCQcBeeMCOrfIhwO7Snve9TFDAajAjY0pvM8A=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise34\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"mcz+HPr1PEDqzRJDyslLQPyKVsOJ+yJAm+6pgbDjS0CxL//hefArQJc9fayGBhpAI91eeeVQF8DYNpByZmwZQHW3M+h6VCHAhC+f4fIpE8CJ4aJFG4E2wECUXzM6nSFAWmnVhpNw3z++VxzfISdJwDKUBkUdXiDAEotbiMMXPcDEhdBa4mhRwPipISm5czBAASnjSWl/SkDJNZJriCRUQPGqylimj0pAisIz63SbPcBw+J+MqvpDQGukLOvMCUNAr5UQXoTlUMAm6Ky9p0g9QB2AKezyUjVA58i/AFUkFkBe76ViPaAjQHymwI0euP8/3m/tTy++S0A=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise35\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"U2qcTw4gLMB1ci3u0/0bwEb4eYkjjdA/e51BdeZLI0CZ4IfuW9tOwK0NF2cfSkhApaEo0f+qH0AelaA7W+szQNfW7h3OnxtA3nMmHw4aGsDRkUmM7d0owL3FeDN26QpAOYFmT45JFUB5NSCakjdEQOloDdVaOShAJ+6H4TuwEsDGIbDl52FRQMC8KEXUY0bA0FSDGSN0R8D6VZABeNIoQBSuqWN1ux3ATyygpTAOT8C7HvDQJ9slwD2R0sd53zjArevtxHTLQ0DQTAB2ar41wOS1se3AYkJAEJJn36QXMEAnIApf5uIcwBSITP5ituc/ZAyPipABLkA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise36\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"XHodgrjFVMBYshRfhownQDunN8PuSyvAfVYL/mcuUED3NKkVvOI4wDw3PD7vkERAFY3T5mKiVsA8/xKKlVM9QGVk7z4g4SNA6LyqCQLJIcA3X6yqdmgRwO4oUR6nwiLAXvOKj8t0LkBVl/ln8FQTwFdTK5vyFlDA6E6gPrvBGsAK36CDzBxUQDJ6EQXB+/o/KxiLrc3vJEDTx51+OIovwL7H7wVYEBlAmI7z+MifGUDUtJtJec4iwEy4UeLVEz9A2ArgEIudQMAtYr4ihL8SwDFmLUyTLjJAGijcyGs5I8BfSpouowdGwGLmrYn2GDRAeYq2NcytQcA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise37\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"BLH8JOeMMMBDhWXGNqQ+wLCU6jRHYxDACARHsknGL8CXZ1KyUI8xwGfsiH47MjlACtDtndtNUECT8S7Qv3QqwHv0uf2WVjNAxVmMAvRMKsAEGTuYckkNQM3ATsYH3URAhQBsfArG/T/VQpFQ3Sw+wPJzOWjdATvAMNGld9LRNsBUaJUZIIHfvzcDGqAVvz9AFSjpB0MjScBoLk38mTBDwIsuvY6gGkHAU2TYj5cuUMCKPVDgkYdIQPvanZdBifW/o+w9oQuVUUAPo+fvpFlKwFJu8Fc/8UdA6G5E0AP2OcCcOs0YNiUuwIEeylS8S0LAF88cJI6SQcA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise38\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"ca0rm7ImScAsC5pZ+XAgQNteNhlG+EjATTBnQX9gIsB7ky7OzmDWv2ZeXevJVDlA64fWqeKEDkCkNn4lt2soQKII2hYyjDNAcrcPFyD65L99Tv4OTJ0rQP5AKOhbnULA7pdqwcZ3PcA4d2YMvwZSQHB+a8Sgidy/YELoJMD/OsAlpO5fvDdKQACX5kUP1xfALma9kBCROMCskaQX5YdLwFFOd5nlnj1A36FDgsSjRMDcQP18tXs0wEaer//NeThAarROtYzpG0DOaITEFUYKwLvTraVYQyDAMWASaMrFRUB6Q5zXBjBVQMZXmGhY2jTAgkDEikyeNUA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise39\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"1BqaGknOUkAL3RkfpwpFQLJ9HLNTyTrA+9RjVurLMMDk74wwHlI3wDKsDtXoz0HAoTHirBFVOMBsgBIrIW0kQOPJSsjl5DbAJ3DrXf0VQUBMXIuHVDoTQFn3HD7O+S7Ajsi9YlxHQUC1jQG7OuEoQGx8zHLgqCRAasEZOd9HREC2VPRze1s2QIIDohv4/BDAXk4oFkZIQkAWF0I3dSAoQAyGuEiacVxATofTKqdsRUA1tTtg1nxGQLKxro+jLElAj5XcDfPoCECD+iNR+ZlJQKE5Bj9KJu0/vruDtjc1QMC9FLg+1/41wA/FAe8OlzRAq4ZYSRxxTsA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise40\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"88NlXRGrIEAqaUkMTiI9wPcuZieJujxAuVSwnNHYPcCYqnyqGLlSQKaq8yd1tj5A6sKh0I5gScBdcRWHbJZRQN/t4qIhLiLA1bYa+VoZPcB+w2k92nlEwCa4+TLptTZALtWs5iYXTkCG6FWaFyM3wGoM/pbR80PAiPsKs0PLRsBsDqVemO1NQBUzTRoRtVBAOfoAX7DgK8CnDtqfGYI1QJpPi6x2wL2/PoDLmNVmA8COjZe+y0dDQPrly7JjozFAwQ1gW/RbKkBXi6U/BGgnwPlHF7TfT0BANLkKG3uPJsC6SvfpTPP/PybinSnmjiFAX2GOveoFSMA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise41\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"p0Ks/pmGKMBtciqXKaIpwIBi5Q7pmBBAqCFdQ9LKRsDGubr4BVNIwGhgV+32o1BACiWdGwS1R0Bdyw61rTlCQMOvKxJTtFJAHyRAVRI0MUBjcLb/st8NwJJJ8KnqxDNAR8nCwj9DU8D/YGSHvYJGwJKiv5SnGj9Ah8PYU1Bl9T8YyKQVCTFKwD3w3MQAADtABhvsYDx6REDcyi5aEGI7QPKq9oHr3/O/W5agcZYjQcAEbPoQRKURQHoY5Wz/gDFA3R+E/H5nLcBSnoQEd7k4QKVchx6OyClApfDPmr1QK0DKRmxoYtVUwOevh3aTKUZAf4mhys2sUUA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise42\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"g3Zb91TnMMA/b5EVzwNPwJRFbZ7E1TpAiG5eAMaOM8AWduKTqE5EwOqirk1xkklAMa9WIgwNTcBsRCzkyiE+QB1F/5HRM0rA+S28FSe1TkAWcoXc+LE1QEmsHKIFnyXAFTOaaBoYGUDwguOEmnI4QA84xh2DbUFA1uiA6zRiQUBbdyGecfY2QIj5/cDODDTAAQxs7C7kO0DsvXYMrolLwORz5igBFkVAvTuKhUdVQkCHxTNmlEZNQE1NIO+OujjAmAECvZdIH0BYeihCJQZCQHmwx0A3sypAIyu/0YbrMcDb/2jm2NApQEisOe/X2wZAGfwJhufoREA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise43\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"PzrOox0GO8BToO7cKTItQN7zGvIrMSlAyDvFgFVIQEANDkXELhMJwPJ+PgTr5RVAyzA0txxoCMA0O/7F82/3P0P9pmYhAdc/wHO4qJsZLMC2V+yhumReQD1ZVorjJELAOLlIuHI6ScAKxBH+IBtBwIbDYypCiD7A/CA6nTN53z+Ba5Cn2sNOQPnlvqJuJlJAcd7/5e5oJEAqnfPVFNtawBXMMBsHhzBAstoZvdctTMA45pISuYc1wOhweAATuEjAH1n220BNMkD45iTbsfE6wB/tCCi/mUBAuaNEECWGNEBBQvkfX6UkwELTFu53tgtATyIMeHq5Q0A=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise44\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"tF91o7FfMMB3dPH7wyREQDaQkX1qMuu/8i99Xvy0J0AgYRUYU5VBQPRMs/AwS01ADKlDuW3qNkA7slzYAYwEQE6XNW7OtT9AHmIgBfv/UMDoZybdUAdSQJ919LMqKU3ABqz4B7HhQ0A8HGAVvtI4wABlm42uUTZAoRLy1Q+EFMBs4cQkRbcqQI//61gInkHAUS32FVTEV8DFKla5keQxQLji6bMUbDrALwumuDuKPMBOfCoxCuo/wImJtSEa1FVAJSuszNCdOcBsxetaccIsQDvFn7adh0nAlZ8kVArBUECF2PxpzXk4wNxCEkdom1zAL3v40NnUXUA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise45\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"9g4xDFa1SMATXElDc3NNQMROkXl/fkBAVWzwARxZPUBap/wVadUkwCT0XaUjByFARaLQFN+JS0DucWeWcRUrwFo7PIYsniZA2r+LnvPiREDusFiAHQUOQMhiuXDOHzPAT5VV09VUUECSwoVcgcAuQMDNl9X0hxbATSK9eCd1QcBSHIpwPaBGwAyqWUoyHERAJfPNv8hbRUBwxIHZpWtYwOJGI7R2sjvAq3N7c8G1RUAossTIAEZbQNB08toEMVhAjif3LyYxRUC4S+MaZeZOQHOh2ETfuzfASQyEoFFtQUCN+9aUEdZLwLTuMsXQSDnA+hdweyzjLEA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise46\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"8/27H2juWEDomrwRAjRBQNHMs/YsMSlAL2kju51LH8BIBbFRi2pOwK10KJFQuztAO/ouaO0OMMDSwLgc+/0lQKdfTWNhdETAmdAU5ZdPFkBR5+9SA61RwBzbOOj/LTdAnN/G0YtaTkCYV2WnVwVFQIqlnd4YT1hAJ/uBaOLbLUCz9V7uKD83QEHBZF8MrzdAcYvGXNk7RMBVE6SMHsNYQOjGQ22/vEZAPfHEQQxXJsAKbJSQ38NEwL3AJHPavzpAiARZcD25Q0A6nwTH7V4ZQCcepVFtHiFA5QDKFIdOIcBGNGv8OS3AvzUPQOhPtU5A49I9R2sbUEA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise47\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"mrJyNYigUcBIxaxk9hsaQGirFqzfS0zANNjtOItjT8Bxw90VL4o7QCc/NpLhxkPAbt2ETKaGYsAuZnsKelI+QGMUA4FdIU5AnEk/QqT0V0DaJlxtM6AywLFYv0Tm+1BASzakxADMXsCBTJ2PF4VIwKnAWU49ZDhAU8aNFIApNkBEioFYogdPQC5S/qdxe0ZAOollk5qrDsBnPztC+vdRQCH5CivhIUBAZ3ulvgAtVEBYx4XHh+ZCwKAajPFNOSxAsYhxKOUwNMCJHWncX/BCQLXsRqhNoyTAuMsNP5KsJ8AdkoxmKSxPwKIEmNCf+CxAnygcucg2SkA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise48\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"eO3TlFoySEC9+3gIoBhiwKjNyDONb1PASEh9rMoPWEBs23zrGgMiwDyzJmHCmBzAyoDNKdL3S0AXVYw4weAiQMEWAIZEXT7APH/o1zIlJMBr86rfE8RWQLe0EzWik1DApPMCtLk6T0BPclo/Wf0twEYN8Ya3CSrAkmiOd95aVkAUzs53ods+wNd0oz2ZCkRAWm7ZZzNtMcDa3+NVTy9RwNZaHmk14B/A3hR8NuINTED/GM10fNghwLY+/J9LXzpASVgB4+IZIkA+F4q2tfsBQBgiRpc2CjTA8JAvF11NGUCkGZd2DGVYwGLkL/z5hDXAt7Y+/ralVcA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise49\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"2A0sZTRuKkBJccJz3GAxQKiUs9brgEPA9dVSI82hQ0CueyJmTGUzQAV5S/MixSxAk67wNHO1McAik/Umtyo3QHQVEY3800lAqu2kuEwuQMCaPZeMPwNEwOTeSbh5IU1A19ULepdmXMAvMKUu6QdgwHFECPH7OlbAPQBT2oTPIUAg+Ng5h90dQIhaaMEoVDhAMuG0GXnIDUA4wpMbOdVSQC8QsimoTVNA0P7xkVBlTEB3TMnmLVFMwMoClJO40DFA+EocvtI4RcCroOQr6Yg4wEAKKhmHEknAwzBqwg3M4D9FwMYUfqk6QEI27JLn2A5Ad+MA9c48TcA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise50\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"k6GnBlATU8DFqLK+Vw1DwAwfSq/icEPAvGEwKFmbQ0BYSDAJl+0vwIla+bfb3SLAOlxZTxNjH8DtAWUB1GtLQLsZEYKRc1RA9ggkallaNUACY74bodQowB3WFUABiFFAdzCKZX3pNUDOQeJFCg41wMmB9ferQ0lAuB+XLBa5JEBg2iD55exRwPntWZVmWD9AvCU+cYb7LUAkpDCnQDVXwBWSgI1W41rAsXKfiZxCG0AVYDPjehVBQCnTthvTbT5AIvh6oSIDUcBQC4UzulkxwOPGX+wsqkBAAAOeNWgyU8Dx9KAafQ4RQP0/LrM6VSVA6lybxwkYR0A=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise51\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"w8+v1YBJX8AGD0hz0ZMdQKIYclQmu1lAKEnjpnuuP8A1XOAW0iAwwFNckkmpU0hAbMeOfst1Q8AbjAf7mYBNQHtnq3EzkTtAn0OhkcYRVMCb900BZIUUQEMdMfsdmlLATwHBbjtKSEAIIduyuG1VwLJYfGqQGVfACXsGvVIATcD5vGJXdXpEwMG4pXv3w1BAAkOMJdrL7b+hw4/qta4tQGk8HxDyaEtAAqs+k03LQcB40hzdnn49wP/nEZArnEXA3a6eh9sDREBN1OJ3A9NUQDz6+bRIZCpAOFg7KYvJP8A069xk1Yk6wIVnOAwwXUzAolW1vuqkQkA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise52\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"xYppldqiS8BqHsTJWXsqwBg5aVGbZE7A9dMux2mxWMDyOc5cfIJgwNa3v3SVI0fA2Qx7Nh+uJkB6DAXFwoYwwG0DnjJ1QCfAYC90vxrbS8C8zhnBRTlIwIpwl3WgwkvAjagDj+L3JUB7XHNlmJ5aQG9X8zqQXRzAfMiYFvfMUcA5ebRaSotQQGd+NkN19knAnb2s4N/9PECsZuz5oAQ3wC2kML+E3RBAdUoHs/NPZkAstYPriG9DwKSU6NfjgT7A3NYgYyKDM0B5v/MwfELyv8STeaedHTXA+vI9ZQrmQcBYlUaDp7Q+QKk7GbgEA0xAGiEgUxLBSMA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise53\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"Nqms6Y8dTsAX29q9Cj9YQLMpZjYh4lLA9nRfdtL0QkCb6vmHFEY3QLWFo6CLOk3AMAqZj2cgREAG3849ODxNwAlSO8CD30zAg4iKulppUsBGMs36xhtGQBIKL3a50DfAR6MgT1jCTEBrEolu/XdFwPBN0/jeSUBApFEAzu+lUkDIzhIZIDwSwOz0RUkS003ABfTOpgAoMsC2ew5/2qZQQOJvxjgDlkNAHJ/IIRZ1NMBiAH096RxXwO/xxJgz9kJAHo0htQicVUAdaMj2B9hVQJZcFfEY8DZABcocgcQ/JMA+2Fr0C9VEwKfnqbsPWT7AYZja+fPbVcA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise54\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"IpqnmwLRXEBv7C1rF0z3v1lnRIhAGGBAzoB/uWgXEMA/vC8i6NhVwJldjqmRIVlAk6f01x83R8A86suipKU3wBfFRX9kQVZANwznLIWxU0Bv2W/CkVpbwDQPvCOLKa0/i3c+r91qTcBFGeb5Cx09QDL5sU/idlhAr0yUgMfxO8CUFb/3kyhUQNQKEgvKEknA8H5V7V1TXUCtxBJx60pGwAQECh8vBTnAdH2wfiMJMEAa6g9UdOhSwJ7QBL1y61RAhtiN8/TjTMC1XxwaopNAQB/JLcE7Z1HAzJc1y462F0BbDoBzcTDiv2NaDtQK9zTABgWXVPdqOkA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise55\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"x45sxH+2TsDQKP6t9+xUQCjK6eXqRCZAr/uVBvEwY8DsGrOlk5NbQAK9czI15jhAGKtEsYxcVUCBekaQiHYjwDqjQexnHF/AujvxqqAVN8ClUtkpxNtQwEphECCq7gDAANcjUsuMOsCo86Eqyf0mQNy43Gi3QljAWmcSzwyqB0CRG6qG6UY5wHBM+wbna0FAdu89rOdEV8CoMqjU/2A3wEiEJtCQzVZA+Cn+ZVc9UMDJCbjf5UtEQIN8p6thS1JAeEmryAvC4b9QLXprHS9LQIA4qiq8o0xAJJjIFYqVVUD1hCzQEzs0wLNESjOvtBjAdzr1XQYdRkA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise56\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"aiPay8bgRMCWmvHl1oYFQM+T4MBaj0PAtgrjRaRNYMCKOK/vV8EyQFPDtGCC1VdARlQUVevVNMDD6fUX8+ESQFsj1mu2XznA+tBQqTm/RMCXApM9xnweQHo29SXFCk5AdF6/H5UFX0CIjBIYLyRHQIyrw0QO60rALsMijGz6U8DT+C1KrktSQPpxHRZtvDFAF95378wXQcDDqdZRpJJNwD2vMQHBnUbAXiu5SZhEUUCsHpcMtAj0v4roTs5Im1PA3xVCbaVuSEByQkx9oV0xQGwClbmrTTDAxCG5VxoEQUD7hN2u1ixHwPxcxaVE/UpANF2jk7PyU8A=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise57\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"oWhEpIS/ScDfZ6WM3p5TwDmfewduvjfACXWC3FyWRcDDouivuqs0wLsHHvKeZNE/qxUYL6eXP0Ax4t5aZLQgQCSQUglGtixA/TXr4JLcVkC2ag+yQmEuwPuhCW8CyFTAvWa+HUgdS0Ak4sOJQClaQAZn20/VWSVA5hNc3z3tR0CMJwsdYa9CwA62z+C/KiVAzQMSmrwnQkAh8MfALJQ1QC/0d6VEwz7AXPdmmIk8V0BvEu3vdrMjQLRsMOK5gkpAY39LgSAhN0Ad0rK+U+ZIQMEM+hsEmUpAhcLumUWkKMDmdUNHhcJHQJtCh61XyV5AFk9kp1J8XEA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise58\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"KfwsVj4oRkCMHzplF3dYQFOKcIsw91LAPC6y+4hZVUBdq3aMCl8RQNfUFa4a6VnAgiaz9BcqI0CBe1ASBlBMQEGD6jZPL0TAtQnB5qEWXEB2csZIVZBTQPLMnQA5fVLAdMe1cXxDTUCQiLMnSPoZQFMFkydZ/z/AnG6vvFhdMsALzTUqSc85wPxoE0zMolHAGwzClLMAOsDdYz/BhRZEQJtcSMgYrVRAumWDFlolVUDWIThLoaBAwONkSvSSMxvA+jIJAPnrSMAilrQMvd5NQChJ/ZHx5VfAnLpYinvEU8BS6b6ghnBCwF6wWmLBKy1AlU+zu2egMsA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise59\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"JwoWEFs2/z9h3E8WtG8GQH0CkvvphitAfrTysUOETsC7QDGisAU0wKw3L9wgCkFAaOJrx5SIMEDyT6lqUyBQQCJAqlh8A0bAzqjREBa8SkCi5Nya+aFVQOH6zxZe0yDAFrPPwTdhL0BdKg++hZIqQJiSx8HEmj9AB4/NFynjNkC/zxMcyaxVQAjvSC7dST5A4vx2hLeASUA6xXk2YY8zQL0ry/xyu07ARKPAiXmROUBtUMTzgiIrwH565CAuvELA1gSFf0liSsCwTEUqHJ0QwIY1SaOR60HAoZQFb80VXkA1VMciaY1XQFsEyyxufy/AUBn9EY7rREA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise60\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"OHTBabxaUUDDRBIhoL0kwJj4fVQ3uVtAp/ypwM6pS0D0OfoIAmkYwMUqLQRP/VrAVsg+N4n6TMBMRasRHh8zQPOdQ/i7SzrAFIpwUlLs878CjplokZ5HwG6YeV93oS1A9jsX8YR/O8Cxxq77Y0pXwMSfUe2jfzTAZl4FqCgpQcDrwo+GXUZXwK486xkAWVVACp2vRJJAEsA/TVe4qZwzwLwSzejggkZA6/eCx6bSE8DmxzWn0ARHQIEzibe2NVbAk4g7XoQZT8AFtOQPWVtAQPKBGsjiYFZAxPrJ9qHP/D+Yq1VQ3PgpQPEHVpcMtEjAUxrxhAq9/L8=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise61\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"Fpxwu2CfRcD7gJCMjowjwKWjOS6QB0ZAheP4pyx7XsDs2UgwOP0pQCKiu1bciUjAfcRrkYO4Q8D3NogubVtRQGKnNPeVBTJAiuEPt8d5TEBCXhHIxuVawHF/NSPyBTnAOEv1P3esO8C3H8xRRPpBwObpm7ez2jpArhld3FpTS0ByLoFd3eBQwDhqOCR4XE3Au6UPTqQXU8BIozWnQYBRQAjyL70ZZj/AGc2GLKa8GMBibuJNzUM0wNYclAk7ZE3A+M685tfENkAo4jD8WF03QF0dFMPetUxAh+1R7FGAK8CuyAoyUR8ywDb39fjA20HA1eewZbSxVkA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise62\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"+T1nNQ08T0CFvILA8wcEwL6FXClBHkRAzpvZh0EpQsA7WybmJ9hfQH+zh3WrVkLAh0tXUGyKN8CZ5PIiAwE3wBnicRaAXlpAHEni4X1NIkBCWlUN+c5QQEAyw+/VTRvAhxb1rRXNUsBAx83tNQpIQM5ukCSPa0PAkJgbt+VvVMCNqyd388s5wBxNQqzUlENABIiE4K5YW0AG84gvg4FVwGtxj1nuCmHA6zqi1rnVTEC8SIPgaZoyQGPyp5S4d0HATaj5hj3wOUC0rEM43JxGQJY/sroWo11AXaI3BZMpIMD70LNAP9ZTQBlTtTJFAjzAbjsVVnaZP8A=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise63\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"4b6GLZ6yOkCdTcCJjI9RwFsp5LB/gVTAYXUsazBXTkCvzmphHutewOcKY5hSkBxA7CbQd3F1NMCUq1jVEYA3wBERk93a+1TAzpZkGmEIYMCmTinikNFEwJ4DMLMoWlLAZ+nJdCjNOsBmalJ3Yi8WQBH4KPSNXUfAouRYCWzkUMA81PqAyUUyQD9Fi1hv/0fAmluGJKo5TsDP16pzvtgywNL+6Odn/DFAQuQ1oTybYEBlYhVT4WlZQAZBSLPz5VPAps2ucl/bVMDvNLMPDE8QQP1YOrOji0FAyrCibEuYIMCxEU5EbBthQP3T+XbyiVJALnYsGLbUWUA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise64\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"W0lVZ2S+OsByboPRPLNMwGYmm53mH1HAlYKd4ckgHcC7edqFMyJUwDLx4kUGSETAh/WyPbuRO8C/vcCblDdOQHIER9mXQz7AH2UfqFWDVsDgTQ3wZqM8wE2TnyB8IyhAZOCTbQrzQUBvXiYhO35NwJlu2gRMt0RAkbizCHAwVkCnHnGCPVQ/QNOcPdfckC5AkeEHJN2tPMDCaTn2oYtDwECeJtdTPWDAQ/ceZkx0Q0ADKodOuKk2wIf8BU/KhyNA+gFejXEKQEAQ2rMkNipJwEMwokSdRVBAAgH7qdD0HEC5j+9JsfNXQFmqQN+/nyVAYzuG1VhkNEA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise65\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"SGmF3v7EMcDzpofY4f1XQLLWIdZDF2HA+3pccylRQcAL3qA0GdQzwHj1td2M3ljAjNdwEu3TScDqT5/mA6ZhwGklcVYWwChAQz8WIL/VVsDpR7xwego4QC7xxCMMBDHA2U5HKi0QS8AoQg5UvD9ZwB0X5kdLMUbAOfY4xscwNEB8Jdry4U4gwH+jM/4lp0VAMOjQZ+ieScBBkFjc7hhaQPFsW/YW7y7A7i/1pQZ4S8Dm59AsQ0pVQNgyEv95D1ZAknVwdKtxF8B0TlaHyXo/wLRLyizSk01A/TQTNjgPTcDmnS8ry2ROQD3MO8SrilbA7Nyi/6euFcA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise66\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"0BxHo9/T6D87lIwaA+9TQMOW9qyfLl7AyAQC8RXyLkCuMq+fGN4fwK6Vor23kcg/kThjdOwsTcAdg+ApNHtVwMPJfe4pkT7Ax8zzd03mL8BYcZzNLFdYQK1eevOdZx1ADE5YMhoQ0r/pCJoloQtHQJv6RVh5mFrAdR7SyD3YR0DF/Qz/GDVOQM0pGSiN701ASM9uhkT6NcCu7u0rsmFUwIALq4dWQFDA+Q6eBvtUMEBU6b3jlrZBQMePwXAlEFVATulyk4kaWUBD0bwzTsBMQEZeb3sW6gFAi3M0bBZ8MUDfNwr0rA8vwEte6qvDZ1FA6kjQ8mecQ0A=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise67\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"KxbAptnsLECpVA/eAwhVwKfcP4IViFFAfcqW6kmTWcBjdgfM4aFUQBDNSmAXflBAyGy54VmVWsCD/t4TFfoJwGhA+DwZy1TAO+wDagVhI8B1hdc/I5lCQMItSr47TyLAYjtyHkTYVsC5/A+ftXkxQF/tQq+7YjFAQFQOgRoy/b9DiwdRjoFRwBUNSH90bzfAZsaHKsf9MUAtVe091MYkwIeGFTp2sWFAt0tdRkYoMUDW+UylvbQrwJqUeZHCKkBAC6XWCxiEUsAFZFwOyzA8QGvgNUvQFFtApulCCzmbTcBdf3BFngU0QCtj3gzDsklAf7dlShRdXMA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise68\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"DqMK03HcW0AvQ70F1cNRwKz/K/yeyDbAk8rCw73iOUBNT6tQTaIvwL3UjMDCTEtAMQeWi56GJEC6cCqAHV9DQKYHDqiMZBRA9+CtqSYGWUDWHkdCuSFhwAoCvxMnwjhAVutfrxtxNMCiZjm/tU1QwCuQeedAmEvAumrQg4NyQ8Cwl2M9fKpDQJ5hXVjrd07AZnW5PmYxJsBCw9dGiLcyQIjXFVkBplPAoVtm+/DoUkAHbO7ZYJVkQPtAU4ql6kbA6yp2SN5CT0BP20uA5g41wHSNzypuIkJA8ECRgj+2KMDX8IM2DMZiQPWb/N73DTbAWFK/yl7+SkA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise69\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"CZEbA0L0REBCAVKZxLJSwKmDFvffoWLA+qTmj3/6Q0DgYYxvySJNQAMgLKguhELAIwZqDvfZRcBc1VYskNlQQAlMEo05bE1Ai1nxuSZ9UEBH9oDSZwkyQK0Tu8UOMkvAVHmqCJICVcCgTDpy2DBhwHjBA+Qf1w/AE0N1TYaNYEBxrZ7Ew3xAQL5C+WsgAhbAF7XRg507WsDv1H2JKAtHwDBjTB5Ez9U/69a205GqLsAbSNPFdFZPQPgzL41C4yXANiv0SvH8R0CRMkyUNIYfwOLJRi4YMCrAIYIua1W4VUAsrYL2dvFJwO6NNorYhzPArqV0drpMVsA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise70\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"Hyhg5UYWG0CqY91OXbdSQLHzBHJc2UdAHMja7b6wSUBxl349oW1SQHsd8nf04UVAicCzJwGKSkAU7i9HvEI8QBIWa529EVHANPtT5c9pQkDVBmIqko1QQN9I1bCCN0/Avi/+wfCEMEADY9CnAPNSQIRlaLWyJDrA7bEKtY4eV8AkbnBOwToRQOZtMRi241tAlv5Wr/3zT8CgOyA5XIIdwIqF0r48SUrAtpoNpLEgOcDMwX7yGW8wQKxm0P0f2FlAkEaoZiEVScBThcR6jM1IwKklmjKfiU7ApdTYYi4kU8CoJxjOdNtawIN+fS5Py03AOMS/9bGgHcA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise71\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"uguxdCc2B0CREILum89UQIpvPIi0Kk3AFHw84hOwS8DMoxEII95KwPaMPnLByytAKvHvDsqAJsD1Zg8GRpdLQGYZ2S62A0zA6/VZJdk1UECq/Nmbx7pQQMlneeqcojLAFmYe0Z4ZRsCUyG7W27kpQF+35Hd1GUzAibRaBkquYUBfWKoFiQEkQDFw66KzIUxABzGLTrx9VsAWr2dFcRNfwHVM3xHgZUhAA6d/5WBQQkDWaY5DYABLwDKKQmvbHkTAGpN6SlQjSMD8t6Vk+ywwQLwx/ev7ZVBA1exqRNhrW8C7ldjz1f5AQBzX5q1vCE/AW06/FBzZQsA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise72\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"kiQllEgaJ8Al/xmJlIFYwAvFEzlvmGlAkOv36SXTZUAQ5vFE6xRLQGZlU/7VnUdAubgsrfTIUsDP7GFsaWVlQAc8FjH7GfU/uk70IdrEIcBwmBmeAKxVQM74YhoRxzJA0HUjyy31S8DIxDbSUYYvwOp9a1kDFDvAkJuWWe+eEkCOgiF04fVDQCGuZ/PnLUNA9t+QNfBrV0ABkR/nK+jSv9EJh5zHPlFA3/FcOky4XkBjqgMegxFWwKM5UuEMp0lALBjbbU5NU8Dmcdi0miBbwBlV2mcfhlxAbQCQZE9wVEBqzW2xZ9dCQE9zt1ZmK0HA95Kr/WgQW0A=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise73\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"1DA4WWjzWMB/ZThrwa0TQMNJfcJ/tUFA7lILAHV9V0D5c8dfeNtbwEZ7pY7V9WvAwxc8sRTYIEA92E8kFCw3QMTUpU95WylApUxqUX8CUMCS/CVaN8oJwCgmE9o/G1zAfrEsnwy0PkCEE8RILEpQQKhPNh4buErA5Y9/PTVJYsAlDrqguPIiwINyQt8l+yzALlfWtoiJF8DuyVD0TcpXQL9hTwYlPCRAsRETz4IEY0AvpHFqVcs7QEjs90KO11PAp2jD+D2wVEAXZy4TbGEawE3uDCwT10HAA7ze03NlNEDIFmPkKMIgQJ1mlYfAcVzAhnFKSOcBT8A=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise74\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"7lCVMudPVUARP1RVjgkqQCl7i5Z5pEdAt75+Y3HfUkCJp4pi6JRgQNxUD6WFpUfAnN+32I4GSsC+VH45ehpRwCVdBbB3N0bAvkxAzALiUMAyFqkyyMLxvzr7SCC5BCDA7VEwKX2BRUBnFyKb7AZWwERFY6AGMUjAYKm1Y6GZOkAgPQj5l9lJQP29TvK/bWXAvDuBHNBGRsCy9k6slcQywLm1JP5z4WLAQaPH+xaaQEApqJd6v0ZWQOqjlWhC+WHAzLhZrYDzXMD0b2rYiJ1RQH7JEnL3AFVAjBQajN2LV8Dtcm0nX0VSwBP+79IDZkhAuGZXcdf7McA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise75\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"CxKhQqOMQ8B+kBgD3ONdQCPCdtW9VTZA0d9fXq0OYcBRm2iCoP8yQOSu1Jw8WVrAwFIUQL7TS0Bmr33OkWlSQBnIbPcxckBAK+gICYllUUD2+mxMRWpiQIxHPa8gQEtATldPgKHlO8DBGNXX239UwP13TEB01TBA8TVU5y5oU8BH9wox+vlawJ5V5VfBUUHA8ur0p/arYMDtuzgvRmJYwHraTvIZy0JA5TgdXHPSQcBcBNtOYf82wAUMFO5sGf+/Adyacw9SYsA5527o/e4rQDQaDeo7YtK/Jg8ouLYfC8AoE5MvprY5QC4Up3/TS2TAMNtcDWTsYUA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise76\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"EB9p0f8NN8De6RT5A0BbwHIDIsPZ8yBAdpjJtfUmWMChPIEK8i4UQMAS4X/6ikRAVtonOh0PWcAg9nR2JxBQQGJvx0YP7SNAM3RIrMWHOkA8bcmOjLU+QBWY75n1eENALGVIlnBJVUCvOnEcQFlQQPyjkfapgEJAndxG8n4LTcDh5Uah28I1QCRRUdSbMkXAaBOxJruGW8CC9N9VOigJwCQPC4foV1HALH8t5FORVUDqZyRUXO0GwJMnbD4HhQtAgJ7agjR1TUCQZs/eBMc/wAnJqj9PgDPATLKE5fUgVkB3RrB0NkpawFX9RsTeeFDA4GzPw0tSJMA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise77\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"B4xB3OE2TkCTmmDE6DszQLP6sTM+SFbALfWPaKW0UcBRluVEJk9gQGsws9FMWjhAJHvpT1vPR8DdX9ALCqVCwDt/DZX8/3FAAkdDJ9zMWUA59Lo+i4BfwNXJHKivqUHA3Wwh7yPUS0AeA7p5SDY1wCQTGjBB7VVAxQoOaBz7YEDayMPp+aDiP8wp2sLnsTZAw53TjFf5KcD3714Nb/5QQPgCs5ah31xAGiCcTbP8UUD5hl/k6dhUwILhWJ4AC01AUyZj4jJIRsCKOCTB9tNgQPzodNdAVkJAN03hWXVeVEAK0cw+9vH5v60aZzWP6wPA55Gfjb6VQEA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise78\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"ZcexJVM4A8DVAsIu8MleQHyIEQzYRVbAdg3rozK7SkA77M8eNuFGwAfRf8RXylBAjtJeDZqFYcCNxYicVxRZQPTM3st5ITjAuEqTEn8OWMAPuppLYPNLQM8t9c3M6i3A820Rf+idNUDJKmxguPFXQNPIhSc5R1XATCjEQ/23TMCbgOE/RxYZQBn4i+ASIkZAHObMVORwS8CJ+o5Iw+5OwA+Wc/UCFU5AmkRY+FIuU0BDE78nMD9bQI/T1R5DBTfAyXjjD0ItacDWCIlSh2lEQBZCJoApo01AER71k2GaXMDRBwbe2TIcQCOU2xBbeTVAk/AIODWMOkA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise79\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"+jtcj/1aQsAMJ7dmaV0aQOzEyWswt0dALns8nSqKYcAeozHLbv5RQLDvmTSu5jzAcxPbOqUyTkCpZFZw5cBLwMqHtnFX52DACNyPYNZTV0AEObLSyjRgQCDVxfRrX2LAwL0qJ8CFWcDwbb9VO8IdQOtbXNeQuVTAYZkUaaoHTkAyjlb/6HtPwHzVGDfGcUTAq+5ukQ+0MEBP2myUjYJlwHJbdEkdRjnASitRSAjlY0DyMIcblC5HQKI2FGl/u1PAJ6AHB6eoVEDseROYu19kQAKzTky5LFlAm+6StJUXR8CdE+W2nPlJwMQRfR6GRD3A9Y6wiQO4VMA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise80\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"zoAKGreyAkDIJTYbIR1UwIMr/8Q5gVHA3BKFUl6qOUCMPoBofYtGwMv0Nw7NWTDAz1T3F1Z7ZUBj9TuYInU9QBXv8Xd0zldAKK3BG0iEQUCradhQgR5IQEirYe3G+1rA4U49Df7gRcDieb6W9fo0wKV+cPd03UHAHmDF8JA7MMBmWblNk5UpQHD6NCYazzHAjr+oMW6VS0Ap+ryW5NIzwJULcInVrVVA9qNGuRrD8L/NhwghfMlHwLFhkeQeB1nANAwoAn3GTsB+rrOQSFg0wFB8iDuLClhAAL/+Iv5vWcCl5Jb/lM1UQK9XxZ1SXR3A+YIasv+gUMA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise81\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"FN5pPyu2WsAuDNRA+ztGQPg3Ap70TGPAxt0ga/ewQsA8qDAprNVBwM+5NMkebSrAXw6KurmJR0AStCvcmORIwKubM1fXfiNAoFyHXVCpWMDwUF6CNrESQJwOKbVto0hAq8pDyK58PMDXiATdptw9QIr7dcxP8yBAaaZWBy7jO8DAVNLRcbQTwFS+PuLnly/AMycoDUD9Y8DV/s8HqVtewI3qP9jPh0FARSsw2/4kZcCocxkdDXVXQNRXS1ZKjVzAoErFacfHA0AmiNHsGh9DQNY38TGryUnA5Oso6duKV0Af8l46gcJbwFGzUkmtXFJAvYge7e8QKEA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise82\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"Q78hs2LLKMDykt9cYb1UQI0YXxQCHEZAk5x4+xixWMC5IKKbLvFcQIw8sh75lFRA906l/UIGIUD4c3Iwe4woQPuO7P6RZFtAyHREQwv/YEAdsmSmdh5JQGl9FfJv1VfAiYjXB5W4I0BJSCDnds9QQEOo7H9yG1HApDrDuWO4WMC5MactM1PePzPAf9N7bSJAhX+gKWf7PkDGrPpnnDhZQJu65SqvXmbA7le0QZVgIED/qgY3lt0wwJuk9gq7qfQ/KO19jIR1K0A1L181IgdVQCXXstiO6kZA5nbmjKn6DcDc1cpQBTsdQI2AVCJTRyFAsIZudW/OJcA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise83\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AZ92h4luW0AppLWm59ZjwEkVoGy/FF3ADOXO4lKTYECcsLk9fs5HQDAorufvK0pA6u8u30kIWEBEfKtCwPBkwLFHKPCv3F1A/dt270E0WMCXO2w1T2RUwC+gNImFgFVAe6gVxCn7V8DaWG/IgQhGQG1noET5nV1Ay/2wJ0j1SsARHPw0Y3JIwAaaZKqh40tA4fjntUKZUkDXnp09+lw8QPzRNQkdaGDAIkm9rrO0YED34GDaYtVJQBUlRUzVc2jAMqJb0aurUsD+1iHp5v5VwIaMSDchI1DAsPK44ZlANUB3885SoK5NwNzUcSXrallADFQTqZ0BV0A=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise84\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"JSfiJb/yGEDf8A/xJR5WwE9k3x03Xaq/2O23BnsVQUDQcxv0XmlYQD5vlhYXgEPAOsZEQF3JGkCp9zcXee5UwEFrgIN7XEPAHARWafyIWEAUosxOmMJgQFqg7M9S+jzApqpNOAswNsCPjg29o/JPwMIjxzKPD2DAYk7cZtdPP0DKLh7FXdpDQGaHrNcDY0lAvaFXZYmPAUDQfix3FDpGQESiLKi+yCtAeSA5QDYiWkCY7XN84nY/QBdJPKlgel5AVKBidQSFVkA9rb+wSig+QHStcYibFlrADixDPra5RUBaJNxmqvE6QA1HRdE/JWRAKh8BF6gtT0A=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise85\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"vn4XiR0KWMBoyWHALdlQwGUnEB7Re1RAdC6icR9qMMBWqgu/uI9ZwKLJVNx720RA0iLkWOf6REAGBezc7yYkwAD2S2IVT1JAT3PLq0K4IcCqNTY4TNBjQLHkMg10UlfANmR4nRhLU0B5yTH79g5VQDfUXw3B61pAdFWQgRBLJcArfrjeYI1BwBmTT9yifmJAo4qB/as6R0CijI+XRd5IwHIBqG7+r1FAr6s6Td3cYEAoNfjTOVJMQESzg7qp2k7AzSSWaRLQVEBp/LhCGFZgwKtvrpvlgVBANGylERrKVECq0u8SC94ywBMIicxFjjdATUVL7zKMKUA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise86\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"HJ7M5AkKR8CQrf5uO3BSwOZsLdRy9zfAw96FGxy/SsDRkzL5FkZgQHy/CwVqI13ARK60T25XY0A1WErCzj40wCETLMXLk1DAZWyxGQ9nR8BXi46idWFWwLg2/UOG2GXA4IwsTTSLUUBZgaMlZm0qwPolEpXUBlLABh+s+E0TXMAg3FRDnzNIwBUdEbJA6FrAKTWvlFbrW0C+d6yOjmJkwISGwtoAmlTAxAiEzyb8UsD66IqzwG5EQNuGcS0b0zVAfG5iyYfnKMBZ1TAkaZ8twDOM22f5HUFAPKmxjBgaUcDAVD1vLsxEQFtY6f57cFzAmtgn4a47R0A=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise87\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"nt8U89AQRsDG/xbNz4pYQJybCbGdm1rAyQSM8jW6Q8DHo2wVzdpRwBZJkowjc1RAMpx7/xSyXsBjgiBX7zpTQPwmCRJjJkRAZus4eK2eSED1WEeQV+9NwD8nJFpkrURAj2XmbgIKY0DTPTFxaRJOwMs3LqEJBzZAnXmHfVjjNsBvWUuOuu5XwAso3tmj8FHAAeLqeL3URkC5x5oZFZYPwO8AQ8ztrGrAoeHLqI8nR0CBPnN5WaE7wP8QQxME9lNAQk/GlIL/S8A6B75LfBZpQIREGMaiolTAcesn8ViqUEC9EbMGKWRXwHdm/ysN9jBA0IgrBFb1WMA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise88\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"tbne5E6bW0CR/7RZ1Lb9vxZS5h9FcWBApWe0oE8fIcCqYQ3hMd5hwLqrU9JvjFLAFyO5LmRBQcAZWy7OmmReQB566VUqBm5AsaSn+nUXJMCHMvepSPw7QDKpjs6hgFtAEJg+NdkbWcDqlt666MU7wBeT0chKdk1AK+8QzmITP0AATFbZeK4dwOD4RYa4gFXAlSGGMGJWIkC+3x2T2V1PQCfYNC1LnE/AVHCerEc3GkAnPz7etfxmQAxCwFq4AEVAUClDoPEYSkCnIbFi0MtWwIE/jTUQPUjAeVF4veDvO8D8SIpgbnNSwC/EU16nmVrARNmV0jg5YcA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise89\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"nYa8j1WAMsAvAd1NvIdSQEO86zpdcktAwaOk7zIYTkDG250qP0tUQBYNgU7bG1PA2pwa7dFnTsCSG9xflfc0wPh2tn+a1FPAFguMIIE4NkAWv7zVq4JNwJ+aQScTyVhAZWAGDT6IU8Dj2P/aeQhJQPvR6A8crWJA4iMQiuwJW8CH191arIhIwCtUI0FuF1HAv60G1lGXV8Ct18++hjM3QNWuz9SjQ0ZA4fyyNxJOUMBeq9m6M85GwJxdUioWkzVARsb66U3xO0AVwkFWYbpYwAhHqxgOm2lAJWIOirjGNMBR4Vuc4F4fQFGGOlL28kvAZhmo5x0GN8A=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise90\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"RdPq2rNYVMAcc6vVU1FiQLcxdGjmx2TAbMlPvTulMMByv/LiCcBNQCyqNR7692HAl30kZue+REAHsmGuE59dQLTk73NbrDpAm5SJgYknRj/rx4gTvKEIwOcGbY2+VTnAtf3dfqUbSkAZmjXH6W1TwEfr6t/FaT1Al2Ya+aF3PsBJRIaUSyxKwCPpgDG5BFrAECKHqZBaTkDrfXQZPJRKwC+bbd2DPlhA6kXF5FQxBMD9Izu+sM/Rv/Svny6/s1jAPTLRoqqAVsAWX0Rra51IQO8PFTNUUCHA8l7S0LMlFUBi3Bzmr0tNQKu/Rwune0dA2qDnKTADQMA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise91\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"9T147jl2cEAY8l4BodRxQPR2VmDECERA5sHjGO9eYMDVtLatYlRUwH75p2cZeEpAcivrJ1E8SsAAECUcWL0dwBB98OOFtmbASxWXbaTYQ0AgMwNA+H1bQG/GFq6CoFvAa7RrNS1CP8CmM4w931VAwK+cM/MDRGzAQkTwQV+kRcBaHHT1oOVJwAdlCGYTtF/AzBQs8VLlU8CQWBadsXY2QI6FPM7/ED9AJvhlRiOQPUDshTnxsDRKwKCspHE+xFLAtfEpo+p1KkBYBIniUeNBwHDDMrkXlFdAVv/X/e58WkA3f+lo/4BFwEFVQMq2lGLA51sEjoyvMEA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise92\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"ZVrR1OnETsCfLP5lr+lSQNm8GZsvGlBAd3N25/wpWMCN4MdF+xtYQHTLMk/dAmBAp0hbJSzEQUD+GAdpFBFMQDSjY9ty9kfAvXNPhrzCU8An6z0extxcQPSdvBeaLjZAlPwzw0TeIMCmQuLJSV0ZwF0vGW9CUFFAEDtlxATXM8Cof56pfO1GwAaIiUdSCTzA+fzvpUTmLcA+ZsTHr2BGwN+UrjBzPiBAX+QGwBCdRsDssUjzOu1EwMBK8hNf2GZA9M+hJPdf5T/jQnKyT6RjQLN7s9MNHFfAVNkAZlxcUUCWqSG9/KjwP1Su219VcmNAIhj/zwhmRcA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise93\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"/v77BfTVZEAxiIE/Pl9LwPl/R2YEs+Y/WrxrAgbhWsAHzYsjwLQJwJ0PK2ELPDPATruefRDLWcAoYpqMr3VlwPAn0wNq11RAbvyfIx4GR0D6dchamzBQwIWWmvYV3SPA9mBVzWncUMARzA4WkK4pwCeAci4EQTdAbzXNIH1rQEDJ17byoEtHwJ68l8kFgzPA5vAD+9r/R0D7didAn6hOwNeoRhZa1UnA4tUXUsJyHkB2z8RZpgFHQKamj6WytkPADnhJifOEUkAzXYuMWBAawLM8kLtTSE/AvCOvHK+PIUB5C5s9HO9gwIhPM7OiV2XAEo8WooKHP0A=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise94\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"JzQyPC7fZMDvobt+g9hSwFvMS5QAeFdAyFduzuItP0AZ0NmSZvlTwFdwB8Csi/a/smOhiSjZYMC4jilyXsVawOEfhNW/jC/AwBKhaDGcS0B/3nhpVl0JwC6QrDfUsR/A1Y5BZ/GQTsDD9Ln00wQcQMqYgdrXtFJA2Rx76iXwWUCg0x7rPxxAQIIsjfeQ7iZAzDBxCnCxQECC31BPIrFIQCwYsru7pEbAbg8VkidZQcAzx8PmkS5PwH9TiPa2jU3AeO3dICcgZkCtY0RyL3JSQDNPuuFkF1DAZBTO4HzSD0CFD26Qa+c8QHeCC/qE6SDAyrd7SfKlVsA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise95\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"q/Vdc3ItYUD/5hUhnzlcwKdhvG+Cn1RALnaoEbeIFEDfX0qY6FFTwAvhyWSPry7AUMfxcYT5ZcBSLzM4VR86QAXrQJcQTVFA+W5qjIotScC0FpKh50s8QJdG+HqjrG3A+iqOEMU9ScA0z7bTZsNfwOgidm7H+VVANULUW7J1MkAdE/mJRfMRwLFvWLwK+jHATjLSqAsTN8B878ULLqVSQI0e32fbvVjAF3H2WBkkVkDxuYMfgJ1QQI50T4D8elhAUtJs7uiGQMC/TJ80b69ZQEiWGkfHxFdAwo6KoRtbRUCRpktNDKtaQIMtXl069kTAegOzsdPLG8A=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise96\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"sFC/btMrYECCtftZbDVoQOII2Eh2wmPADD5p4zF9VkAsfdc83TFewAcpgrofMDRAGPOthRc4TMBAv6KMA78zQCi4FVeDoTzAkW0l5F/qQkBHU+8QEDBPQPFDYX8jtkDAXDIcTKcLUECObJxmdZs7wHc3w96Hb1BAAfi2oEdCXEByi+sUQ7IvQFECDuX5YDZAlDe8TvahZcB7sMW+foZSwLoZtTs0403AYguqqjjtLMBGeorM3sxgwLfCNP+/OV/ALzQPG+ybHcAknGWGg/MzQAYskRIwq1dADbaJgG0xYUDqGpyNPVtJQBkAC8WwpkHAQ9921u6ZUEA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise97\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"rKMV+SJcU8AhAOKUhb00QMzAQdUVtGVAFQ9YNvndYUAuHUeV1VQ9wNUTnJMEiFdA4/i0smDQQsAKE1z+J9VNwBBrsxhig2PAYsBiPAcKSkBB/g4eH609QJdc1iW931dAmUQ1KSqLU0DK0LddsA09wPA20oEi7lRA2sOPy8nNZkBwCdlOL+drQNy1rddnu1JALhf16W77O0AFh+U+p9lCQKJhu+l2LSBAJ6yzZEPqS8CYsVia6R9jQM2p5OGjfVJAvtovspxrLEB1rghTkwliQOo6YZENXVRAZQHWovl2XsCd1savDf1dQOxp1qB/20PAgJd6nozzX8A=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise98\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"BkhFH/5nPEAqxSRHOGY+wPa14ltVPVLAfzk+GgFmY0ApJzdgPWkXQOLB1hrIeBTAwpWerz+iOMAncq4EkkFDwDtAqLgXgDJAUfW3rtp4P8AQEK3duNVzQBJoM0wK1VnA85lmPcv6JkCDFnulGwtHwPAKFpNVNlHAa2PBdE9dUMCkrnbaeq4FQJamkgZ00FZAWKJtuPFDXUCuJ7XsVRFRQL/hUQSqwkTAic0lJpKKZ0Cz55f5+MZlQAaVOa5DmWVAa403j+gZR8AKsVOyRnNOQElBCwG3ZlFAK7+cbWWpTEAU3iDNdd5LQBqLRdvw5kpAoS2ChmajPcA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise99\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"hRRhio/hXUCjIKilcgxhQACrGG79fk9AHjD6EtPlFUC5SqK2gxZEQOraNbA55l5ABrdys8k9KcD+SJrXn09RQDe3mgKMMlLAiChHKW3FQkBXrxLeQYxfwMLt9mh8I1zAiUOLc0/YaUDYgojz6RAqQL7eIhgjUVtAfHOu4h2QcMCW/1DYOog3wIbJGAoNZzHAA/ZtsP+hS8BqvoGH3KYrQFo8ItwpcVXACuNP3iIVX0AQte+v/05QQPV76VGjUlzA3fe/aYv9R0DnEbVCMSM/QJi/5MNF72NAa2xCxPshWkBDLSWrrK1bwKOSl84uPFPA5aAafL2cWEA=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}],[\"noise100\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"uJNxwteEYMCYYq8Cv/5NQFYYFHlt9VDAng34Nn9ySUAh3fQoyulKQJMFNOMHukJAAaj5XaGrUsBACEwjjtQKQIUPJ4JsgV5A6q9+dsF1MsDouuWMblVGQM3tlzH+m2RAZGZ0533eZ0Cg9R6eAW9jQA3/bYQ3jixAgebaKIiPJEB7OmKT9qgxwDvr1w13mknAtgoNHiBlMMAs/u1SF6NhwIu9uCK45kxAXcjl76h2PMBaBERdGEhcQIezHKIFQFpAWg9dgaZpYUA+PPuBlGtTwJU6HaLjqjbALhFMsFxBUsCMNdHBGn1jwCiEaYtMwVDA9xy7OYrRU8A=\"},\"shape\":[31],\"dtype\":\"float64\",\"order\":\"little\"}]]}}}],[\"slope\",{\"type\":\"object\",\"name\":\"Slider\",\"id\":\"p1088\",\"attributes\":{\"js_property_callbacks\":{\"type\":\"map\",\"entries\":[[\"change:value\",[{\"id\":\"p1091\"}]]]},\"title\":\"Slope\",\"start\":-10,\"end\":10,\"value\":1,\"step\":0.1}}],[\"noise\",{\"id\":\"p1089\"}],[\"div\",{\"type\":\"object\",\"name\":\"Div\",\"id\":\"p1090\",\"attributes\":{\"width\":400,\"height\":30,\"text\":\"Correlation coefficient: 1.00\"}}]]},\"code\":\"\\n const data = source.data;\\n const x = data['x'];\\n const m = slope.value;\\n const noiseKey = 'noise' + noise.value; // Correct key for noise data\\n const noiseArray = data[noiseKey]; // Access the correct noise array\\n const y = data['y'];\\n \\n // Apply slope and noise to y values\\n for (let i = 0; i < x.length; i++) {\\n y[i] = m * (x[i] + noiseArray[i]);\\n }\\n \\n // Calculate correlation coefficient\\n let mean_x = 0;\\n let mean_y = 0;\\n let num = 0;\\n let den_x = 0;\\n let den_y = 0;\\n for (let i = 0; i < x.length; i++) {\\n mean_x += x[i];\\n mean_y += y[i];\\n }\\n mean_x /= x.length;\\n mean_y /= x.length;\\n for (let i = 0; i < x.length; i++) {\\n num += (x[i] - mean_x) * (y[i] - mean_y);\\n den_x += (x[i] - mean_x) ** 2;\\n den_y += (y[i] - mean_y) ** 2;\\n }\\n const r = num / Math.sqrt(den_x * den_y);\\n div.text = \\\"Correlation coefficient: \\\" + r.toFixed(4);\\n \\n source.change.emit();\\n\"}}]]]},\"title\":\"Noise\",\"start\":0,\"end\":100,\"value\":0}},{\"id\":\"p1088\"},{\"id\":\"p1090\"}]}},{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p1045\",\"attributes\":{\"width\":450,\"height\":450,\"x_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1054\",\"attributes\":{\"start\":-17,\"end\":17}},\"y_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1055\",\"attributes\":{\"start\":-50,\"end\":50}},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1056\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1057\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p1052\"},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1085\",\"attributes\":{\"data_source\":{\"id\":\"p1042\"},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1086\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1087\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1082\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"line_color\":{\"type\":\"value\",\"value\":\"teal\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.99},\"fill_color\":{\"type\":\"value\",\"value\":\"teal\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.99},\"hatch_color\":{\"type\":\"value\",\"value\":\"teal\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.99}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1083\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"line_color\":{\"type\":\"value\",\"value\":\"teal\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"fill_color\":{\"type\":\"value\",\"value\":\"teal\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_color\":{\"type\":\"value\",\"value\":\"teal\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1084\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":10},\"line_color\":{\"type\":\"value\",\"value\":\"teal\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"fill_color\":{\"type\":\"value\",\"value\":\"teal\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_color\":{\"type\":\"value\",\"value\":\"teal\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p1053\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"p1068\"},{\"type\":\"object\",\"name\":\"WheelZoomTool\",\"id\":\"p1069\",\"attributes\":{\"renderers\":\"auto\"}},{\"type\":\"object\",\"name\":\"BoxZoomTool\",\"id\":\"p1070\",\"attributes\":{\"overlay\":{\"type\":\"object\",\"name\":\"BoxAnnotation\",\"id\":\"p1071\",\"attributes\":{\"syncable\":false,\"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\",\"line_color\":\"black\",\"line_alpha\":1.0,\"line_width\":2,\"line_dash\":[4,4],\"fill_color\":\"lightgrey\",\"fill_alpha\":0.5}}}},{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p1076\"},{\"type\":\"object\",\"name\":\"ResetTool\",\"id\":\"p1077\"},{\"type\":\"object\",\"name\":\"HelpTool\",\"id\":\"p1078\"}]}},\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1063\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1064\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1065\"},\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1066\"}}}],\"below\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1058\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1059\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1060\"},\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1061\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1062\",\"attributes\":{\"axis\":{\"id\":\"p1058\"}}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1067\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"p1063\"}}}]}}]}}]}};\n", " const render_items = [{\"docid\":\"25e80052-d42e-46a1-9860-9f433ffa8330\",\"roots\":{\"p1093\":\"b97bb2fc-72d3-49d4-860c-9ccbd7b88e9b\"},\"root_ids\":[\"p1093\"]}];\n", " 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": "p1093" } }, "output_type": "display_data" } ], "source": [ "from bokeh.io import output_notebook, show\n", "from bokeh.plotting import figure\n", "from bokeh.models import ColumnDataSource, Slider, CustomJS, Div\n", "from bokeh.layouts import column, row\n", "import numpy as np\n", "np.random.seed(1)\n", "\n", "output_notebook(hide_banner = True)\n", "\n", "# Generate 30 x values\n", "x = np.linspace(-15, 16, 31)\n", "y = x # Initial y values, assuming initial slope = 1 and no noise\n", "data={'x': x, 'y': y}\n", "\n", "noise_end = 100\n", "noise_step = 1\n", "noises = dict()\n", "for i in range(0, noise_end + 1):\n", " noises[i] = np.random.normal(0,i, size = len(x))\n", " data[f'noise{i}'] = noises[i]\n", " \n", "source = ColumnDataSource(data = data)\n", "\n", "# Create the figure\n", "p = figure(x_range=(-17, 17), y_range=(-50, 50), width=450, height=450) #, title=\"Interactive Scatter Plot\")\n", "p.scatter('x', 'y', source=source, size=10, color=\"teal\", alpha=0.99)\n", "\n", "# Slider for slope\n", "slope_slider = Slider(start=-10, end=10, value=1, step=0.1, title=\"Slope\")\n", "\n", "# Slider for noise\n", "noise_slider = Slider(start=0, end=noise_end, value=0, step=noise_step, title=\"Noise\")\n", "\n", "# Div for displaying the correlation coefficient\n", "div = Div(text=\"Correlation coefficient: 1.00\", width=400, height=30)\n", "\n", "# CustomJS callback to update the plot according to the sliders\n", "callback = CustomJS(args=dict(source=source, slope=slope_slider, noise=noise_slider, div=div), code=\"\"\"\n", " const data = source.data;\n", " const x = data['x'];\n", " const m = slope.value;\n", " const noiseKey = 'noise' + noise.value; // Correct key for noise data\n", " const noiseArray = data[noiseKey]; // Access the correct noise array\n", " const y = data['y'];\n", " \n", " // Apply slope and noise to y values\n", " for (let i = 0; i < x.length; i++) {\n", " y[i] = m * (x[i] + noiseArray[i]);\n", " }\n", " \n", " // Calculate correlation coefficient\n", " let mean_x = 0;\n", " let mean_y = 0;\n", " let num = 0;\n", " let den_x = 0;\n", " let den_y = 0;\n", " for (let i = 0; i < x.length; i++) {\n", " mean_x += x[i];\n", " mean_y += y[i];\n", " }\n", " mean_x /= x.length;\n", " mean_y /= x.length;\n", " for (let i = 0; i < x.length; i++) {\n", " num += (x[i] - mean_x) * (y[i] - mean_y);\n", " den_x += (x[i] - mean_x) ** 2;\n", " den_y += (y[i] - mean_y) ** 2;\n", " }\n", " const r = num / Math.sqrt(den_x * den_y);\n", " div.text = \"Correlation coefficient: \" + r.toFixed(4);\n", " \n", " source.change.emit();\n", "\"\"\")\n", "\n", "slope_slider.js_on_change('value', callback)\n", "noise_slider.js_on_change('value', callback)\n", "\n", "# Layout\n", "layout = column(column(noise_slider, slope_slider, div), p)\n", "\n", "# Show\n", "show(layout)\n", "\n", "\n" ] }, { "cell_type": "markdown", "id": "622ed37b", "metadata": {}, "source": [ "### Calculation\n", "\n", "The coefficient, $r$, is calculated as the average of the products of the standardized values, \n", "\n", "$$r = \\frac{1}{n} \\sum_{i=1}^{n} \\frac{x_i - \\text{average}_x}{\\text{SD}_x} \\times \\frac{y_i - \\text{average}_y}{\\text{SD}_y}. $$\n", "\n", "\n", "The product of two standardized values is positive if the data moves together. If $x$ is above its average when $y$ is above its average, this will increase the correlation. If the two variables move in opposite directions, $x$ goes up when $y$ goes down, then this decreases the correlation coefficient.\n", "\n", "```{figure} images/correlationQuadrants.svg\n", ":width: 89%\n", ":name: correlationQuadrants\n", "\n", "Points in the positive quadrants, where both $x$ and $y$ are above or below the average, push the correlation coefficient up. The data on the left is negatively correlated. The data on the right is positively correlated.\n", "```\n", "\n", "#### Example\n", "\n", "Consider the eight $x$-$y$ pairs in the table below. \n", "\n", "```{figure} images/tikz/correlationExample.svg\n", ":width: 44%\n", ":name: correlationExample\n", "\n", "```\n", "\n", "First, we must standardize the values. In this case, the data is already standardized because the average is zero and the SD is one. \n", "\n", "$$\\text{SD}_x = \\text{SD}_y = \\sqrt{ \\frac{1}{8}\\left( (-2-0)^2 + 0 + \\cdots + 0 + (2-0)^2 \\right) } = 1$$\n", "\n", "Then, the correlation coefficient is calculated by averaging the product of the paired standardized values,\n", "\n", "$$r = \\frac{1}{8} \\dfrac{ (-2-0)(-2-0) + (0-0)(2-0) + \\cdots + (2-0)(0-0) }{1\\times 1}$$\n", "\n", "$$r = \\frac{1}{2}.$$\n", "\n", "What if we considered the alternate data set below? \n", "\n", "```{figure} images/tikz/correlationExampleDouble.svg\n", ":width: 44%\n", ":name: correlationExampleDouble\n", "\n", "```\n", "\n", "\n", "```{dropdown} $x^{\\prime}$ \n", "\n", "Now, $\\text{SD}_x$ is 2 and $\\text{SD}_y$ is unchanged. \n", "\n", "$$\\text{SD}_x = \\sqrt{ \\frac{1}{8}\\left( (-4-0)^2 + (4-0)^2 \\right) } = \\sqrt{4} = 2$$ \n", "\n", "$$r = \\frac{1}{8} \\dfrac{ (-4-0)(-2-0) + (0-0)(2-0) + \\cdots + (4-0)(0-0) }{2\\times 1}$$\n", "\n", "$$ r = \\frac{1}{2}$$\n", "\n", "```\n", "\n", "## Exceptional Cases\n", "\n", "Per {cite}`freedman2007statistics`, the corrrelation coefficient is useful for \"football-shaped scatter diagrams.\" \n", "\n", "```{figure} images/football-noun-p.svg\n", ":width: 22%\n", ":name: AmericanFootball\n", "\n", "A football-shaped football.\n", "```\n", "This is meant to rule out anything obviously non-linear. A surprisingly precise football shape arises when $x$ and $y$ both follow a normal curve like in {numref}`footballScatter`. \n", "\n", "```{figure} images/footballScatter.svg\n", ":width: 75%\n", ":name: footballScatter\n", "\n", "A football-shaped scatter diagram. The football shape arises from the bell-shaped distributions for both variables. The tapering comes from there being fewer values at the extreme $x$ and $y$ values. \n", "```\n", "\n", "Anscombe's Quartet is a set of four data sets that demonstrate the limitations of a correlation coefficient. \n", "\n", "```{figure} images/AnscombeScatter.svg\n", ":width: 70%\n", ":name: AnscombeScatter\n", "\n", "```\n", "\n", "The top right panel shows an obvious pattern, and one stronger than the pattern in the top left, but the correlation coefficient rates the association at 0.82 in either case. This is because the correlation coefficient only measures the linear association. \n", "\n", "\n", "## Causation\n", "\n", "The phrase \"correlation does not imply causation\" is often uttered in recognition that a correlation between two variables doesn't mean one causes the other. Correlation only quantifies if there is a predictable linear relationship between two variables. \n", "\n", "When two variables are highly correlated without their being a causal relationship, that is often called a spurious correlation. Spurious correlation arise in observational data when there is a confounding third variable. Michael Luca gives a few examples of misinterpreted correlations in his Harvard Business Review article, *[Leaders: Stop Confusing Correlation with Causation](https://hbr.org/2021/11/leaders-stop-confusing-correlation-with-causation)*. \n", "\n", "One of Luca's examples is a classic case of spurious correlation. \n", "\n", "> [Economists at eBay] analyzed natural experiments and conducted a new randomized controlled trial, and found that these ads were largely a waste, despite what the marketing team previously believed. The advertisements were targeting people who were already likely to shop on eBay. The targeted customers’ pre-existing purchase intentions were responsible for both the advertisements being shown and the purchase decisions. eBay’s marketing team made the mistake of underappreciating this factor, and instead assuming that the observed correlation was a result of advertisements causing purchases. \n", "\n", "\n", "```{figure} images/tikz/ebayAdsHelv.svg\n", ":width: 80%\n", ":name: ebayDag\n", "\n", "Ads don't lead to higher sales if the people who receive targeted ads were targeted for their interest in the product and would have spent more regardless.\n", "```\n", "\n", "So, we know that correlation does not imply causation. Less appreciated sometimes is that no correlation need not imply no causation. Luca gives the example of police spending and crime, highlighting a chicken and egg problem in any observational study. \n", "\n", "> A 2020 Washington Post article examined the correlation between police spending and crime. It concluded that, \"A review of spending on state and local police over the past 60 years ... shows no correlation nationally between spending and crime rates.\" This correlation is misleading. An important driver of police spending is the current level of crime, which creates a chicken and egg scenario. Causal research has, in fact, shown that more police lead to a reduction in crime.\n", "\n", "For a similar example, consider the relationship between public assistance and poverty studied by Yule in the 1800s. Yule found a positive correlation between poverty and public assistance. A naive read of the data might suggest that increasing public assistance will cause poverty to go up, but there's nothing in the correlation by itself that should suggest this because of the same chicken and egg problem. \n", "\n", "\n", "```{figure} images/tikz/yulePoliceHelv.svg\n", ":width: 95%\n", ":name: yulePolice\n", "\n", "A positive, negative, or zero correlation can be misleading in either case.\n", "```\n", "\n", "\n", "## Exercises\n", "\n", "```{exercise-start}\n", ":label: corrPairing\n", "```\n", "\n", "A movie theater clerk wants to know the correlation between daily ticket sales for Matt Damon and Mark Wahlberg movies. He records the following data over three days. Find the correlation. \n", "\n", "| Day of Week | Matt Damon | Mark Wahlberg |\n", "|-------------|------------|---------------|\n", "| Monday | 0 | 3 |\n", "| Tuesday | 0 | 0 |\n", "| Wednesday | 6 | 3 |\n", "\n", "The clerk finds he mixed up Matt Damon and Wahlberg. This is the actual data, below. Does the correlation change? \n", "\n", "| Day of Week | Mark Wahlberg | Matt Damon |\n", "|-------------|------------|---------------|\n", "| Monday | 0 | 3 |\n", "| Tuesday | 0 | 0 |\n", "| Wednesday | 6 | 3 |\n", "\n", "Oops! The clerk messed up again. It turns out he initially corrected his error on Wednesday, so this is the actual data. Does the correlation coefficient change?\n", "\n", "| Day of Week | Mark Wahlberg | Matt Damon |\n", "|-------------|------------|---------------|\n", "| Monday | 0 | 3 |\n", "| Tuesday | 0 | 0 |\n", "| Wednesday | 3 | 6 |\n", "\n", "```{exercise-end}\n", "```\n", "\n", "\n", "```{exercise-start}\n", ":label: corrMental\n", "```\n", "\n", "A journalist is investigating bloat in colleges hiring more and more non-faculty employees. In particular, the journalist focuses on mental health professionals. They study many campuses and find no correlation between money spent on mental health and a trusted measure of mental health. The journalist writes an article accusing schools of wasting money and receives an award for data-driven journalism. Is the award merited? Why or why not? \n", "```{exercise-end}\n", "```\n" ] }, { "cell_type": "code", "execution_count": null, "id": "87a85245", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "celltoolbar": "Edit 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.11.5" } }, "nbformat": 4, "nbformat_minor": 5 }