Skip to content

Instantly share code, notes, and snippets.

@trycycle
Last active February 23, 2020 13:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save trycycle/604e5cd194f3ffc2db373e7f6f39d2ca to your computer and use it in GitHub Desktop.
Save trycycle/604e5cd194f3ffc2db373e7f6f39d2ca to your computer and use it in GitHub Desktop.
「Pythonで体験するベイズ推論」の1.4節「メッセージ数に変化はあるか?」のNumPyro実装
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# あるユーザが受信したメッセージ数のモデリング\n",
"本記事は,[Pythonで体験するベイズ推論](https://www.amazon.co.jp/dp/4627077912/ref=cm_sw_r_tw_dp_U_x_Yv5tEbKY5R82N )(原典:Bayesian Methods for Hackers - Probabilistic Programming and Bayesian Inference)の1.4節で用いられている例題「メッセージ数に変化はあるか?」の統計モデリングをNumPyroで行った例です.\n",
"\n",
"この例題では,あるユーザが一定期間中に受け取ったメッセージの数(メールの受信数のようなもの)を1日ごとに記録したデータに対して,統計モデリングを行っています.モデリングの方針を検討する前に,データを眺めてみましょう."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## データの準備"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"対象となるデータは著者の[GitHubリポジトリ](https://git.io/vXTVC)からダウンロードできます.本記事ではダウンロードしたデータを``data``ディレクトリに``message.csv``というファイル名で保存したとします.\n",
"\n",
"データを読み込むためのライブラリ(``pandas``),読み込んだデータを可視化するためのライブラリ(``bokeh``)を読み込みます.必要に応じて,``pandas``および``bokeh``をインストールしてください."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" <div class=\"bk-root\">\n",
" <a href=\"https://bokeh.org\" target=\"_blank\" class=\"bk-logo bk-logo-small bk-logo-notebook\"></a>\n",
" <span id=\"1001\">Loading BokehJS ...</span>\n",
" </div>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/javascript": [
"\n",
"(function(root) {\n",
" function now() {\n",
" return new Date();\n",
" }\n",
"\n",
" var 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",
" var JS_MIME_TYPE = 'application/javascript';\n",
" var HTML_MIME_TYPE = 'text/html';\n",
" var EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n",
" var CLASS_NAME = 'output_bokeh rendered_html';\n",
"\n",
" /**\n",
" * Render data to the DOM node\n",
" */\n",
" function render(props, node) {\n",
" var 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",
" var cell = handle.cell;\n",
"\n",
" var id = cell.output_area._bokeh_element_id;\n",
" var server_id = cell.output_area._bokeh_server_id;\n",
" // Clean up Bokeh references\n",
" if (id != null && id in Bokeh.index) {\n",
" Bokeh.index[id].model.document.clear();\n",
" delete Bokeh.index[id];\n",
" }\n",
"\n",
" if (server_id !== undefined) {\n",
" // Clean up Bokeh references\n",
" var cmd = \"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, {\n",
" iopub: {\n",
" output: function(msg) {\n",
" var id = msg.content.text.trim();\n",
" if (id in Bokeh.index) {\n",
" Bokeh.index[id].model.document.clear();\n",
" delete Bokeh.index[id];\n",
" }\n",
" }\n",
" }\n",
" });\n",
" // Destroy server and session\n",
" var cmd = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n",
" cell.notebook.kernel.execute(cmd);\n",
" }\n",
" }\n",
"\n",
" /**\n",
" * Handle when a new output is added\n",
" */\n",
" function handleAddOutput(event, handle) {\n",
" var output_area = handle.output_area;\n",
" var output = handle.output;\n",
"\n",
" // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n",
" if ((output.output_type != \"display_data\") || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n",
" return\n",
" }\n",
"\n",
" var 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",
" var bk_div = document.createElement(\"div\");\n",
" bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n",
" var script_attrs = bk_div.children[0].attributes;\n",
" for (var i = 0; i < script_attrs.length; i++) {\n",
" toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\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",
" var 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",
" var 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",
" var events = require('base/js/events');\n",
" var 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",
"\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",
" var NB_LOAD_WARNING = {'data': {'text/html':\n",
" \"<div style='background-color: #fdd'>\\n\"+\n",
" \"<p>\\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",
" \"</p>\\n\"+\n",
" \"<ul>\\n\"+\n",
" \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n",
" \"<li>use INLINE resources instead, as so:</li>\\n\"+\n",
" \"</ul>\\n\"+\n",
" \"<code>\\n\"+\n",
" \"from bokeh.resources import INLINE\\n\"+\n",
" \"output_notebook(resources=INLINE)\\n\"+\n",
" \"</code>\\n\"+\n",
" \"</div>\"}};\n",
"\n",
" function display_loaded() {\n",
" var el = document.getElementById(\"1001\");\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",
"\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() {\n",
" console.error(\"failed to load \" + url);\n",
" }\n",
"\n",
" for (var i = 0; i < css_urls.length; i++) {\n",
" var url = css_urls[i];\n",
" const element = document.createElement(\"link\");\n",
" element.onload = on_load;\n",
" element.onerror = on_error;\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 (var i = 0; i < js_urls.length; i++) {\n",
" var url = js_urls[i];\n",
" var element = document.createElement('script');\n",
" element.onload = on_load;\n",
" element.onerror = on_error;\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",
" };var element = document.getElementById(\"1001\");\n",
" if (element == null) {\n",
" console.error(\"Bokeh: ERROR: autoload.js configured with elementid '1001' but no matching script tag was found. \")\n",
" return false;\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",
" \n",
" var js_urls = [\"https://cdn.pydata.org/bokeh/release/bokeh-1.4.0.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-widgets-1.4.0.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-tables-1.4.0.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-gl-1.4.0.min.js\"];\n",
" var css_urls = [];\n",
" \n",
"\n",
" var inline_js = [\n",
" function(Bokeh) {\n",
" Bokeh.set_log_level(\"info\");\n",
" },\n",
" function(Bokeh) {\n",
" \n",
" \n",
" }\n",
" ];\n",
"\n",
" function run_inline_js() {\n",
" \n",
" if (root.Bokeh !== undefined || force === true) {\n",
" \n",
" for (var i = 0; i < inline_js.length; i++) {\n",
" inline_js[i].call(root, root.Bokeh);\n",
" }\n",
" if (force === true) {\n",
" display_loaded();\n",
" }} else if (Date.now() < root._bokeh_timeout) {\n",
" setTimeout(run_inline_js, 100);\n",
" } else if (!root._bokeh_failed_load) {\n",
" console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
" root._bokeh_failed_load = true;\n",
" } else if (force !== true) {\n",
" var cell = $(document.getElementById(\"1001\")).parents('.cell').data().cell;\n",
" cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
" }\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": "\n(function(root) {\n function now() {\n return new Date();\n }\n\n var 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\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 var NB_LOAD_WARNING = {'data': {'text/html':\n \"<div style='background-color: #fdd'>\\n\"+\n \"<p>\\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 \"</p>\\n\"+\n \"<ul>\\n\"+\n \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n \"<li>use INLINE resources instead, as so:</li>\\n\"+\n \"</ul>\\n\"+\n \"<code>\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"</code>\\n\"+\n \"</div>\"}};\n\n function display_loaded() {\n var el = document.getElementById(\"1001\");\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\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() {\n console.error(\"failed to load \" + url);\n }\n\n for (var i = 0; i < css_urls.length; i++) {\n var url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error;\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 (var i = 0; i < js_urls.length; i++) {\n var url = js_urls[i];\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\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 };var element = document.getElementById(\"1001\");\n if (element == null) {\n console.error(\"Bokeh: ERROR: autoload.js configured with elementid '1001' but no matching script tag was found. \")\n return false;\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 \n var js_urls = [\"https://cdn.pydata.org/bokeh/release/bokeh-1.4.0.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-widgets-1.4.0.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-tables-1.4.0.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-gl-1.4.0.min.js\"];\n var css_urls = [];\n \n\n var inline_js = [\n function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\n function(Bokeh) {\n \n \n }\n ];\n\n function run_inline_js() {\n \n if (root.Bokeh !== undefined || force === true) {\n \n for (var i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\n if (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n var cell = $(document.getElementById(\"1001\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));"
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import pandas as pd\n",
"from bokeh.io import output_notebook\n",
"from bokeh.plotting import figure, show\n",
"output_notebook()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"下記のコードを実行して,データを読み込みます.読み込んだ後,データに属性名(``day``と``frequency``)を付けておきます."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"df = pd.read_csv(\n",
" \"data/message.csv\", header=None\n",
").reset_index().rename(columns={\n",
" 'index': 'day', # 経過日数を示す列\n",
" 0: 'frequency' # 頻度を示す列\n",
"}).assign(\n",
" # 統計モデリングを行うときにポアソン分布を仮定するので,頻度情報の型をint型にしておく\n",
" frequency = lambda _df: _df.frequency.astype(int)\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"読み込んだデータを可視化してみましょう.ここでは,横軸にメッセージを受け取った時間(経過時間),縦軸に受け取ったメッセージの数(受信メッセージ数)としてプロットしてみます."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
" <div class=\"bk-root\" id=\"886e723f-aeba-4674-a2d1-451819126f7d\" data-root-id=\"1002\"></div>\n"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/javascript": [
"(function(root) {\n",
" function embed_document(root) {\n",
" \n",
" var docs_json = {\"18b1aa02-e1a2-4b0a-abee-071534ee03e0\":{\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1011\",\"type\":\"LinearAxis\"}],\"center\":[{\"id\":\"1015\",\"type\":\"Grid\"},{\"id\":\"1020\",\"type\":\"Grid\"}],\"left\":[{\"id\":\"1016\",\"type\":\"LinearAxis\"}],\"plot_height\":200,\"renderers\":[{\"id\":\"1037\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"1039\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"1027\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"1003\",\"type\":\"DataRange1d\"},\"x_scale\":{\"id\":\"1007\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"1005\",\"type\":\"DataRange1d\"},\"y_scale\":{\"id\":\"1009\",\"type\":\"LinearScale\"}},\"id\":\"1002\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"1025\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1026\",\"type\":\"HelpTool\"},{\"attributes\":{\"callback\":null},\"id\":\"1005\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1007\",\"type\":\"LinearScale\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"top\":{\"field\":\"top\"},\"width\":{\"value\":1.0},\"x\":{\"field\":\"x\"}},\"id\":\"1036\",\"type\":\"VBar\"},{\"attributes\":{\"callback\":null},\"id\":\"1003\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1009\",\"type\":\"LinearScale\"},{\"attributes\":{\"fill_color\":{\"value\":\"#1f77b4\"},\"line_color\":{\"value\":\"#1f77b4\"},\"top\":{\"field\":\"top\"},\"width\":{\"value\":1.0},\"x\":{\"field\":\"x\"}},\"id\":\"1035\",\"type\":\"VBar\"},{\"attributes\":{\"data_source\":{\"id\":\"1034\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"1035\",\"type\":\"VBar\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1036\",\"type\":\"VBar\"},\"selection_glyph\":null,\"view\":{\"id\":\"1038\",\"type\":\"CDSView\"}},\"id\":\"1037\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"axis_label\":\"\\u7d4c\\u904e\\u6642\\u9593\\uff08\\u65e5\\uff09\",\"formatter\":{\"id\":\"1043\",\"type\":\"BasicTickFormatter\"},\"ticker\":{\"id\":\"1012\",\"type\":\"BasicTicker\"}},\"id\":\"1011\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1012\",\"type\":\"BasicTicker\"},{\"attributes\":{\"source\":{\"id\":\"1034\",\"type\":\"ColumnDataSource\"}},\"id\":\"1038\",\"type\":\"CDSView\"},{\"attributes\":{\"ticker\":{\"id\":\"1012\",\"type\":\"BasicTicker\"}},\"id\":\"1015\",\"type\":\"Grid\"},{\"attributes\":{\"axis_label\":\"\\u53d7\\u4fe1\\u30e1\\u30c3\\u30bb\\u30fc\\u30b8\\u6570\",\"formatter\":{\"id\":\"1041\",\"type\":\"BasicTickFormatter\"},\"ticker\":{\"id\":\"1017\",\"type\":\"BasicTicker\"}},\"id\":\"1016\",\"type\":\"LinearAxis\"},{\"attributes\":{\"text\":\"\"},\"id\":\"1039\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1017\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1041\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"dimension\":1,\"ticker\":{\"id\":\"1017\",\"type\":\"BasicTicker\"}},\"id\":\"1020\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1043\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"1021\",\"type\":\"PanTool\"},{\"id\":\"1022\",\"type\":\"WheelZoomTool\"},{\"id\":\"1023\",\"type\":\"BoxZoomTool\"},{\"id\":\"1024\",\"type\":\"SaveTool\"},{\"id\":\"1025\",\"type\":\"ResetTool\"},{\"id\":\"1026\",\"type\":\"HelpTool\"}]},\"id\":\"1027\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"1045\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1046\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"callback\":null,\"data\":{\"top\":[13,24,8,24,7,35,14,11,15,11,22,22,11,57,11,19,29,6,19,12,22,12,18,72,32,9,7,13,19,23,27,20,6,17,13,10,14,6,16,15,7,2,15,15,19,70,49,7,53,22,21,31,19,11,18,20,12,35,17,23,17,4,2,31,30,13,27,0,39,37,5,14,13,22],\"x\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73]},\"selected\":{\"id\":\"1045\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"1046\",\"type\":\"UnionRenderers\"}},\"id\":\"1034\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"1047\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"1021\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1022\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"overlay\":{\"id\":\"1047\",\"type\":\"BoxAnnotation\"}},\"id\":\"1023\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1024\",\"type\":\"SaveTool\"}],\"root_ids\":[\"1002\"]},\"title\":\"Bokeh Application\",\"version\":\"1.4.0\"}};\n",
" var render_items = [{\"docid\":\"18b1aa02-e1a2-4b0a-abee-071534ee03e0\",\"roots\":{\"1002\":\"886e723f-aeba-4674-a2d1-451819126f7d\"}}];\n",
" root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
"\n",
" }\n",
" if (root.Bokeh !== undefined) {\n",
" embed_document(root);\n",
" } else {\n",
" var attempts = 0;\n",
" var 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": "1002"
}
},
"output_type": "display_data"
}
],
"source": [
"fig = figure(plot_width=600, plot_height=200)\n",
"fig.vbar(x=df.day, top=df.frequency, width=1.0, bottom=0)\n",
"fig.xaxis.axis_label = \"経過時間(日)\"\n",
"fig.yaxis.axis_label = \"受信メッセージ数\"\n",
"show(fig)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"引用元書籍でも述べられているように,可視化されたデータを観察すると,以下のことが考えられます.\n",
"* 受信するメッセージ数は経過時間によってまちまち\n",
"* 経過時間が40日以降くらいからメッセージの受信数が増えているようにも見える\n",
"\n",
"本記事では,引用元と同様,「**このユーザのメッセージ受信数はある日を境目に増加傾向になった**」という仮説を立て,傾向の変わり目となった経過時間を推定します."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---\n",
"## 統計的モデリング\n",
"### 準備\n",
"統計モデリングに必要なライブラリ[NumPyro](https://github.com/pyro-ppl/numpyro)を読み込んでおきます.また,事後分布の可視化のために[ArviZ](https://arviz-devs.github.io/arviz/)を読み込んでおきます.NumPyroを利用するには[JAX](https://github.com/google/jax)も必要となります.必要に応じて適宜インストールしてください."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"# 統計モデリング用\n",
"import numpyro\n",
"import numpyro.distributions as dist\n",
"from numpyro.infer import MCMC, NUTS\n",
"import jax.numpy as jnp\n",
"from jax import random\n",
"import numpy as np\n",
"\n",
"# 事後分布の可視化のためのライブラリ\n",
"import arviz as az\n",
"\n",
"# 統計モデリングにCPU/GPUのいずれを使うかの指定\n",
"numpyro.set_platform(\"cpu\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### モデル\n",
"一定時間内にイベントが発生する回数の確率を表現する分布としては[ポアソン分布](https://ja.wikipedia.org/wiki/ポアソン分布)が知られています.引用元書籍と同様,本記事ではメッセージの受信数$Z$はポアソン分布に従うと仮定します.\n",
"\n",
"データを観察した際,**「メッセージの受信数はある時期を境目に増加傾向になった」**と仮説を立てました.このことは,経過日数$t$がある時期$\\tau$までのメッセージ受信数$Z$はポアソン分布$Poi_1$に従い,ある時期$\\tau$以降の受信数は$Poi_2$に従うと言い換えることができます.ポアソン分布$Poi_1$,$Poi_2$のパラメータを$\\lambda_1$,$\\lambda_2$とすると,今回立てた仮説は以下のように定式化できます:\n",
"\n",
"$$ \n",
" Z \\sim\n",
" \\begin{cases}\n",
" \\mathit{Poi_1}(\\lambda_1) \\quad t < \\tau \\\\\n",
" \\mathit{Poi_2}(\\lambda_2) \\quad t \\geq \\tau \\\\\n",
" \\end{cases}\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"上記仮説をモデリングするポイントは,$\\lambda_1$,$\\lambda_2$および$\\tau$の事前分布をどう設定するかです.\n",
"\n",
"$\\lambda_1$および$\\lambda_2$については,引用元書籍ではその事前分布として指数分布を仮定していました.本記事でもそれに従います.また,指数分布のハイパーパラメータ$\\alpha$は,計測されたメッセージ数の平均値の逆数とします.\n",
"\n",
"$\\tau$については,情報がないため,無情報事前分布として一様分布を仮定しましょう.一様分布が取り得る範囲はメッセージの経過時間の取り得る範囲としましょう($[0, 70]$).\n",
"\n",
"以上の設定を踏まえると,今回の例題を以下の式でモデリングします:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$$\n",
" \\begin{align}\n",
" Z \\sim\n",
" \\begin{cases}\n",
" \\mathit{Poi_1}(\\lambda_1) \\quad t < \\tau \\\\\n",
" \\mathit{Poi_2}(\\lambda_2) \\quad t \\geq \\tau \\\\\n",
" \\end{cases} \\\\ \n",
" \\lambda_1 \\sim \\mathit{Exp}(\\alpha) \\\\\n",
" \\lambda_2 \\sim \\mathit{Exp}(\\alpha) \\\\\n",
" \\tau \\sim \\mathit{Uniform}(0, 70)\n",
" \\end{align}\n",
"$$\n",
"\n",
"もし,「メッセージの受信数の傾向は変わらない」場合は,$\\lambda_1$と$\\lambda_2$が等しくなり,それらの事後分布は同じような分布になるはずです.仮説が正しいかを確かめるために,以下,上式をNumPyroで記述し,各種パラメータの事後分布を推定します."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### モデルの記述"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"def model(days=None, freqs=None):\n",
" # lambdaの指数関数のハイパーパラメータ(計測データの平均の逆数)\n",
" alpha = 1 / jnp.mean(freqs)\n",
" \n",
" # ポアソン分布のパラメータ\n",
" lambda_1 = numpyro.sample(\"lambda_1\", dist.Exponential(alpha))\n",
" lambda_2 = numpyro.sample(\"lambda_2\", dist.Exponential(alpha))\n",
" numpyro.deterministic(\"delta_lambda\", lambda_1 - lambda_2)\n",
" \n",
" # 切替タイミング\n",
" tau = numpyro.sample('tau', dist.Uniform(0, 70))\n",
" \n",
" # ある日時以降については,ポアソン分布のパラメータを切り替える\n",
" # numpyroでサンプルされたデータは(j)numpy型なので,条件分岐はnp.whereを用いる\n",
" selected_lambda = jnp.where(days >= tau, lambda_2, lambda_1)\n",
" \n",
" numpyro.sample(\"obs\", dist.Poisson(selected_lambda), obs=freqs)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### MCMCサンプリング"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"sample: 100%|██████████| 4000/4000 [00:08<00:00, 464.57it/s, 1023 steps of size 1.77e-03. acc. prob=0.79]\n"
]
}
],
"source": [
"rng_key = random.PRNGKey(0)\n",
"rng_key, rng_key_ = random.split(rng_key)\n",
"\n",
"num_warmup, num_samples = 1000, 3000\n",
"kernel = NUTS(model)\n",
"mcmc = MCMC(kernel, num_warmup, num_samples)\n",
"mcmc.run(rng_key, df.day.values, df.frequency.values)\n",
"\n",
"samples = mcmc.get_samples()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### 事後分布の基本統計量"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
" mean std median 5.0% 95.0% n_eff r_hat\n",
" lambda_1 17.73 0.61 17.73 16.77 18.78 512.30 1.00\n",
" lambda_2 22.77 0.88 22.72 21.30 24.13 563.90 1.00\n",
" tau 43.88 0.82 44.05 42.72 45.00 474.88 1.00\n",
"\n",
"Number of divergences: 0\n"
]
}
],
"source": [
"# 推定パラメータの基本統計量\n",
"mcmc.print_summary()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"lambda_1's 95% HDP interval = [16.557, 18.976]\n",
"lambda_2's 95% HDP interval = [21.043, 24.437]\n",
"tau's 95% HDP interval = [42.258, 45.000]\n"
]
}
],
"source": [
"lambda1_hdpi = numpyro.diagnostics.hpdi(samples['lambda_1'], prob=.95)\n",
"lambda2_hdpi = numpyro.diagnostics.hpdi(samples['lambda_2'], prob=.95)\n",
"tau_hdpi = numpyro.diagnostics.hpdi(samples['tau'], prob=.95)\n",
"\n",
"print('lambda_1\\'s 95% HDP interval = [{:.3f}, {:.3f}]'.format(lambda1_hdpi[0], lambda1_hdpi[1]))\n",
"print('lambda_2\\'s 95% HDP interval = [{:.3f}, {:.3f}]'.format(lambda2_hdpi[0], lambda2_hdpi[1]))\n",
"print('tau\\'s 95% HDP interval = [{:.3f}, {:.3f}]'.format(tau_hdpi[0], tau_hdpi[1]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"$\\lambda_1$と$\\lambda_2$の平均値と中央値は5ポイント程度異なっていることが分かります.また,95%最高事後密度信用区間(HDP区間)は$\\lambda_1$が$[16.557, 18.976]$,$\\lambda_2$が$[21.043, 24.437]$となっており,95%HDP区間で両パラメータは重なっていません.このことから,**「メッセージの受信数はある時期を境目に増加傾向になった」**という仮説は支持されそうです.\n",
"\n",
"また,$\\tau$の平均値および中央値が43.88,44.05であることから,メッセージ数増加傾向の切り替わりタイミングは43-44日頃だということが予想されます."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### 事後分布の可視化\n",
"最後に$\\lambda_1$,$\\lambda_2$,および$\\tau$の事後分布を可視化しておきます."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
" <div class=\"bk-root\" id=\"a396db65-f8c8-45f9-9ef6-88327f1f3334\" data-root-id=\"1102\"></div>\n"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/javascript": [
"(function(root) {\n",
" function embed_document(root) {\n",
" \n",
" var docs_json = {\"c68972df-afcb-4612-afc4-fb28f3b81c31\":{\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1111\",\"type\":\"LinearAxis\"}],\"center\":[{\"id\":\"1115\",\"type\":\"Grid\"},{\"id\":\"1120\",\"type\":\"Grid\"},{\"id\":\"1152\",\"type\":\"Legend\"}],\"left\":[{\"id\":\"1116\",\"type\":\"LinearAxis\"}],\"plot_height\":200,\"renderers\":[{\"id\":\"1136\",\"type\":\"GlyphRenderer\"},{\"id\":\"1141\",\"type\":\"GlyphRenderer\"},{\"id\":\"1156\",\"type\":\"GlyphRenderer\"},{\"id\":\"1161\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"1143\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"1127\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"1103\",\"type\":\"DataRange1d\"},\"x_scale\":{\"id\":\"1107\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"1105\",\"type\":\"DataRange1d\"},\"y_scale\":{\"id\":\"1109\",\"type\":\"LinearScale\"}},\"id\":\"1102\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"label\":{\"value\":\"lambda_1\"},\"renderers\":[{\"id\":\"1141\",\"type\":\"GlyphRenderer\"}]},\"id\":\"1153\",\"type\":\"LegendItem\"},{\"attributes\":{\"callback\":null},\"id\":\"1105\",\"type\":\"DataRange1d\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"1121\",\"type\":\"PanTool\"},{\"id\":\"1122\",\"type\":\"WheelZoomTool\"},{\"id\":\"1123\",\"type\":\"BoxZoomTool\"},{\"id\":\"1124\",\"type\":\"SaveTool\"},{\"id\":\"1125\",\"type\":\"ResetTool\"},{\"id\":\"1126\",\"type\":\"HelpTool\"}]},\"id\":\"1127\",\"type\":\"Toolbar\"},{\"attributes\":{\"line_color\":\"blue\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1139\",\"type\":\"Line\"},{\"attributes\":{\"data_source\":{\"id\":\"1154\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"1155\",\"type\":\"Dash\"},\"hover_glyph\":null,\"muted_glyph\":null,\"view\":{\"id\":\"1157\",\"type\":\"CDSView\"}},\"id\":\"1156\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"overlay\":{\"id\":\"1151\",\"type\":\"BoxAnnotation\"}},\"id\":\"1123\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"source\":{\"id\":\"1138\",\"type\":\"ColumnDataSource\"}},\"id\":\"1142\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1109\",\"type\":\"LinearScale\"},{\"attributes\":{\"source\":{\"id\":\"1154\",\"type\":\"ColumnDataSource\"}},\"id\":\"1157\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1112\",\"type\":\"BasicTicker\"},{\"attributes\":{\"callback\":null,\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[200]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[200]}},\"selected\":{\"id\":\"1198\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"1199\",\"type\":\"UnionRenderers\"}},\"id\":\"1158\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_color\":\"green\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1159\",\"type\":\"Line\"},{\"attributes\":{\"callback\":null,\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[200]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[200]}},\"selected\":{\"id\":\"1171\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"1172\",\"type\":\"UnionRenderers\"}},\"id\":\"1138\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"ticker\":{\"id\":\"1112\",\"type\":\"BasicTicker\"}},\"id\":\"1115\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1121\",\"type\":\"PanTool\"},{\"attributes\":{\"formatter\":{\"id\":\"1145\",\"type\":\"BasicTickFormatter\"},\"ticker\":{\"id\":\"1117\",\"type\":\"BasicTicker\"}},\"id\":\"1116\",\"type\":\"LinearAxis\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1160\",\"type\":\"Line\"},{\"attributes\":{\"data_source\":{\"id\":\"1158\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"1159\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1160\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"1162\",\"type\":\"CDSView\"}},\"id\":\"1161\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"formatter\":{\"id\":\"1147\",\"type\":\"BasicTickFormatter\"},\"ticker\":{\"id\":\"1112\",\"type\":\"BasicTicker\"}},\"id\":\"1111\",\"type\":\"LinearAxis\"},{\"attributes\":{\"angle\":{\"units\":\"rad\",\"value\":1.5707963267948966},\"line_alpha\":{\"value\":0.35},\"line_color\":{\"value\":\"green\"},\"size\":{\"units\":\"screen\",\"value\":8},\"x\":{\"field\":\"y\"},\"y\":{\"value\":0.0}},\"id\":\"1155\",\"type\":\"Dash\"},{\"attributes\":{\"source\":{\"id\":\"1158\",\"type\":\"ColumnDataSource\"}},\"id\":\"1162\",\"type\":\"CDSView\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1140\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1117\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1171\",\"type\":\"Selection\"},{\"attributes\":{\"angle\":{\"units\":\"rad\",\"value\":1.5707963267948966},\"line_alpha\":{\"value\":0.35},\"line_color\":{\"value\":\"blue\"},\"size\":{\"units\":\"screen\",\"value\":8},\"x\":{\"field\":\"y\"},\"y\":{\"value\":0.0}},\"id\":\"1135\",\"type\":\"Dash\"},{\"attributes\":{},\"id\":\"1172\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"callback\":null,\"data\":{\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float32\",\"shape\":[3000]}},\"selected\":{\"id\":\"1149\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"1150\",\"type\":\"UnionRenderers\"}},\"id\":\"1134\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1173\",\"type\":\"Selection\"},{\"attributes\":{\"text\":\"\"},\"id\":\"1143\",\"type\":\"Title\"},{\"attributes\":{\"source\":{\"id\":\"1134\",\"type\":\"ColumnDataSource\"}},\"id\":\"1137\",\"type\":\"CDSView\"},{\"attributes\":{\"data_source\":{\"id\":\"1138\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"1139\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1140\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"1142\",\"type\":\"CDSView\"}},\"id\":\"1141\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1174\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"data_source\":{\"id\":\"1134\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"1135\",\"type\":\"Dash\"},\"hover_glyph\":null,\"muted_glyph\":null,\"view\":{\"id\":\"1137\",\"type\":\"CDSView\"}},\"id\":\"1136\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1124\",\"type\":\"SaveTool\"},{\"attributes\":{\"callback\":null},\"id\":\"1103\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1147\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"label\":{\"value\":\"lambda_2\"},\"renderers\":[{\"id\":\"1161\",\"type\":\"GlyphRenderer\"}]},\"id\":\"1176\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1126\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1149\",\"type\":\"Selection\"},{\"attributes\":{\"dimension\":1,\"ticker\":{\"id\":\"1117\",\"type\":\"BasicTicker\"}},\"id\":\"1120\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1122\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1198\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1150\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"callback\":null,\"data\":{\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float32\",\"shape\":[3000]}},\"selected\":{\"id\":\"1173\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"1174\",\"type\":\"UnionRenderers\"}},\"id\":\"1154\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1125\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1107\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1199\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"1151\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"1145\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"items\":[{\"id\":\"1153\",\"type\":\"LegendItem\"},{\"id\":\"1176\",\"type\":\"LegendItem\"}]},\"id\":\"1152\",\"type\":\"Legend\"}],\"root_ids\":[\"1102\"]},\"title\":\"Bokeh Application\",\"version\":\"1.4.0\"}};\n",
" var render_items = [{\"docid\":\"c68972df-afcb-4612-afc4-fb28f3b81c31\",\"roots\":{\"1102\":\"a396db65-f8c8-45f9-9ef6-88327f1f3334\"}}];\n",
" root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
"\n",
" }\n",
" if (root.Bokeh !== undefined) {\n",
" embed_document(root);\n",
" } else {\n",
" var attempts = 0;\n",
" var 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": "1102"
}
},
"output_type": "display_data"
}
],
"source": [
"fig = figure(plot_width=600, plot_height=200)\n",
"az.plot_dist(samples['lambda_1'], color='blue', label=\"lambda_1\",\n",
" ax=fig, backend=\"bokeh\", rug=True, show=False)\n",
"az.plot_dist(samples['lambda_2'], color='green', label=\"lambda_2\",\n",
" ax=fig, backend=\"bokeh\", rug=True, show=False)\n",
"show(fig)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
" <div class=\"bk-root\" id=\"573e1642-70f8-4e57-99bb-4308116d1f83\" data-root-id=\"1291\"></div>\n"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/javascript": [
"(function(root) {\n",
" function embed_document(root) {\n",
" \n",
" var docs_json = {\"201a615d-2c53-4c8b-ae3a-77bd38166093\":{\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1300\",\"type\":\"LinearAxis\"}],\"center\":[{\"id\":\"1304\",\"type\":\"Grid\"},{\"id\":\"1309\",\"type\":\"Grid\"}],\"left\":[{\"id\":\"1305\",\"type\":\"LinearAxis\"}],\"plot_height\":200,\"renderers\":[{\"id\":\"1325\",\"type\":\"GlyphRenderer\"},{\"id\":\"1330\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"1356\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"1316\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"1292\",\"type\":\"DataRange1d\"},\"x_scale\":{\"id\":\"1296\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"1294\",\"type\":\"DataRange1d\"},\"y_scale\":{\"id\":\"1298\",\"type\":\"LinearScale\"}},\"id\":\"1291\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"1306\",\"type\":\"BasicTicker\"},{\"attributes\":{\"source\":{\"id\":\"1323\",\"type\":\"ColumnDataSource\"}},\"id\":\"1326\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1298\",\"type\":\"LinearScale\"},{\"attributes\":{\"callback\":null,\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[200]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[200]}},\"selected\":{\"id\":\"1364\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"1365\",\"type\":\"UnionRenderers\"}},\"id\":\"1327\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"data_source\":{\"id\":\"1323\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"1324\",\"type\":\"Dash\"},\"hover_glyph\":null,\"muted_glyph\":null,\"view\":{\"id\":\"1326\",\"type\":\"CDSView\"}},\"id\":\"1325\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_color\":\"red\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1328\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1329\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1296\",\"type\":\"LinearScale\"},{\"attributes\":{\"data_source\":{\"id\":\"1327\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"1328\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1329\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"1331\",\"type\":\"CDSView\"}},\"id\":\"1330\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"callback\":null,\"data\":{\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float32\",\"shape\":[3000]}},\"selected\":{\"id\":\"1362\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"1363\",\"type\":\"UnionRenderers\"}},\"id\":\"1323\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1301\",\"type\":\"BasicTicker\"},{\"attributes\":{\"source\":{\"id\":\"1327\",\"type\":\"ColumnDataSource\"}},\"id\":\"1331\",\"type\":\"CDSView\"},{\"attributes\":{\"formatter\":{\"id\":\"1360\",\"type\":\"BasicTickFormatter\"},\"ticker\":{\"id\":\"1301\",\"type\":\"BasicTicker\"}},\"id\":\"1300\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1311\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"text\":\"\"},\"id\":\"1356\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1310\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1358\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"1310\",\"type\":\"PanTool\"},{\"id\":\"1311\",\"type\":\"WheelZoomTool\"},{\"id\":\"1312\",\"type\":\"BoxZoomTool\"},{\"id\":\"1313\",\"type\":\"SaveTool\"},{\"id\":\"1314\",\"type\":\"ResetTool\"},{\"id\":\"1315\",\"type\":\"HelpTool\"}]},\"id\":\"1316\",\"type\":\"Toolbar\"},{\"attributes\":{\"callback\":null},\"id\":\"1292\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1360\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"callback\":null},\"id\":\"1294\",\"type\":\"DataRange1d\"},{\"attributes\":{\"dimension\":1,\"ticker\":{\"id\":\"1306\",\"type\":\"BasicTicker\"}},\"id\":\"1309\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1363\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1364\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1362\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1365\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"1366\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"ticker\":{\"id\":\"1301\",\"type\":\"BasicTicker\"}},\"id\":\"1304\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1313\",\"type\":\"SaveTool\"},{\"attributes\":{\"overlay\":{\"id\":\"1366\",\"type\":\"BoxAnnotation\"}},\"id\":\"1312\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"angle\":{\"units\":\"rad\",\"value\":1.5707963267948966},\"line_alpha\":{\"value\":0.35},\"line_color\":{\"value\":\"red\"},\"size\":{\"units\":\"screen\",\"value\":8},\"x\":{\"field\":\"y\"},\"y\":{\"value\":0.0}},\"id\":\"1324\",\"type\":\"Dash\"},{\"attributes\":{},\"id\":\"1315\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1314\",\"type\":\"ResetTool\"},{\"attributes\":{\"formatter\":{\"id\":\"1358\",\"type\":\"BasicTickFormatter\"},\"ticker\":{\"id\":\"1306\",\"type\":\"BasicTicker\"}},\"id\":\"1305\",\"type\":\"LinearAxis\"}],\"root_ids\":[\"1291\"]},\"title\":\"Bokeh Application\",\"version\":\"1.4.0\"}};\n",
" var render_items = [{\"docid\":\"201a615d-2c53-4c8b-ae3a-77bd38166093\",\"roots\":{\"1291\":\"573e1642-70f8-4e57-99bb-4308116d1f83\"}}];\n",
" root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
"\n",
" }\n",
" if (root.Bokeh !== undefined) {\n",
" embed_document(root);\n",
" } else {\n",
" var attempts = 0;\n",
" var 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": "1291"
}
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"median of delta lambda = 44.053\n",
"95% HDP interval = [42.258, 45.000]\n"
]
}
],
"source": [
"fig = figure(plot_width=600, plot_height=200)\n",
"az.plot_dist(samples['tau'], color='red', \n",
" ax=fig, backend=\"bokeh\", rug=True, show=False)\n",
"show(fig)\n",
"\n",
"median = np.median(samples['tau'])\n",
"lower_hdpi, upper_hdpi = numpyro.diagnostics.hpdi(samples['tau'], prob=.95)\n",
"print('median of delta lambda = {:.3f}'.format(median))\n",
"print('95% HDP interval = [{:.3f}, {:.3f}]'.format(lower_hdpi, upper_hdpi))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"最後に,引用元書籍では行われていませんが,$\\lambda_1$と$\\lambda_2$の差分$\\Delta\\lambda$の事後分布を可視化してみます."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
" <div class=\"bk-root\" id=\"a8410942-8eb3-4c69-8a64-5801076c3c42\" data-root-id=\"1433\"></div>\n"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/javascript": [
"(function(root) {\n",
" function embed_document(root) {\n",
" \n",
" var docs_json = {\"d601ae6c-b6ab-4ac2-9b9e-177528265e3b\":{\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1442\",\"type\":\"LinearAxis\"}],\"center\":[{\"id\":\"1446\",\"type\":\"Grid\"},{\"id\":\"1451\",\"type\":\"Grid\"}],\"left\":[{\"id\":\"1447\",\"type\":\"LinearAxis\"}],\"plot_height\":200,\"renderers\":[{\"id\":\"1467\",\"type\":\"GlyphRenderer\"},{\"id\":\"1472\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"1509\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"1458\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"1434\",\"type\":\"DataRange1d\"},\"x_scale\":{\"id\":\"1438\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"1436\",\"type\":\"DataRange1d\"},\"y_scale\":{\"id\":\"1440\",\"type\":\"LinearScale\"}},\"id\":\"1433\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"1519\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"dimension\":1,\"ticker\":{\"id\":\"1448\",\"type\":\"BasicTicker\"}},\"id\":\"1451\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1456\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1455\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1457\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1440\",\"type\":\"LinearScale\"},{\"attributes\":{\"formatter\":{\"id\":\"1513\",\"type\":\"BasicTickFormatter\"},\"ticker\":{\"id\":\"1443\",\"type\":\"BasicTicker\"}},\"id\":\"1442\",\"type\":\"LinearAxis\"},{\"attributes\":{\"ticker\":{\"id\":\"1443\",\"type\":\"BasicTicker\"}},\"id\":\"1446\",\"type\":\"Grid\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"1452\",\"type\":\"PanTool\"},{\"id\":\"1453\",\"type\":\"WheelZoomTool\"},{\"id\":\"1454\",\"type\":\"BoxZoomTool\"},{\"id\":\"1455\",\"type\":\"SaveTool\"},{\"id\":\"1456\",\"type\":\"ResetTool\"},{\"id\":\"1457\",\"type\":\"HelpTool\"}]},\"id\":\"1458\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"1443\",\"type\":\"BasicTicker\"},{\"attributes\":{\"callback\":null,\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[200]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[200]}},\"selected\":{\"id\":\"1517\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"1518\",\"type\":\"UnionRenderers\"}},\"id\":\"1469\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_color\":\"orange\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1470\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"#1f77b4\",\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1471\",\"type\":\"Line\"},{\"attributes\":{\"data_source\":{\"id\":\"1469\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"1470\",\"type\":\"Line\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1471\",\"type\":\"Line\"},\"selection_glyph\":null,\"view\":{\"id\":\"1473\",\"type\":\"CDSView\"}},\"id\":\"1472\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1518\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"source\":{\"id\":\"1469\",\"type\":\"ColumnDataSource\"}},\"id\":\"1473\",\"type\":\"CDSView\"},{\"attributes\":{\"text\":\"\"},\"id\":\"1509\",\"type\":\"Title\"},{\"attributes\":{\"overlay\":{\"id\":\"1519\",\"type\":\"BoxAnnotation\"}},\"id\":\"1454\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1511\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1438\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1513\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"formatter\":{\"id\":\"1511\",\"type\":\"BasicTickFormatter\"},\"ticker\":{\"id\":\"1448\",\"type\":\"BasicTicker\"}},\"id\":\"1447\",\"type\":\"LinearAxis\"},{\"attributes\":{\"source\":{\"id\":\"1465\",\"type\":\"ColumnDataSource\"}},\"id\":\"1468\",\"type\":\"CDSView\"},{\"attributes\":{\"angle\":{\"units\":\"rad\",\"value\":1.5707963267948966},\"line_alpha\":{\"value\":0.35},\"line_color\":{\"value\":\"orange\"},\"size\":{\"units\":\"screen\",\"value\":8},\"x\":{\"field\":\"y\"},\"y\":{\"value\":0.0}},\"id\":\"1466\",\"type\":\"Dash\"},{\"attributes\":{},\"id\":\"1515\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1452\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1516\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1448\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1517\",\"type\":\"Selection\"},{\"attributes\":{\"callback\":null},\"id\":\"1434\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1453\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"data_source\":{\"id\":\"1465\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"1466\",\"type\":\"Dash\"},\"hover_glyph\":null,\"muted_glyph\":null,\"view\":{\"id\":\"1468\",\"type\":\"CDSView\"}},\"id\":\"1467\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"callback\":null,\"data\":{\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float32\",\"shape\":[3000]}},\"selected\":{\"id\":\"1515\",\"type\":\"Selection\"},\"selection_policy\":{\"id\":\"1516\",\"type\":\"UnionRenderers\"}},\"id\":\"1465\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"callback\":null},\"id\":\"1436\",\"type\":\"DataRange1d\"}],\"root_ids\":[\"1433\"]},\"title\":\"Bokeh Application\",\"version\":\"1.4.0\"}};\n",
" var render_items = [{\"docid\":\"d601ae6c-b6ab-4ac2-9b9e-177528265e3b\",\"roots\":{\"1433\":\"a8410942-8eb3-4c69-8a64-5801076c3c42\"}}];\n",
" root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
"\n",
" }\n",
" if (root.Bokeh !== undefined) {\n",
" embed_document(root);\n",
" } else {\n",
" var attempts = 0;\n",
" var 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": "1433"
}
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"median of delta lambda = -4.998\n",
"95% HDP interval = [-7.161, -3.019]\n"
]
}
],
"source": [
"fig = figure(plot_width=600, plot_height=200)\n",
"az.plot_dist(samples['delta_lambda'], color='orange',\n",
" ax=fig, backend=\"bokeh\", rug=True, show=False)\n",
"show(fig)\n",
"\n",
"median = np.median(samples['delta_lambda'])\n",
"lower_hdpi, upper_hdpi = numpyro.diagnostics.hpdi(samples['delta_lambda'], prob=.95)\n",
"print('median of delta lambda = {:.3f}'.format(median))\n",
"print('95% HDP interval = [{:.3f}, {:.3f}]'.format(lower_hdpi, upper_hdpi))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"上図によると,$\\Delta\\lambda$はその大半がゼロを超えています.95%HPD区間は$[2.775, 6.931]$となっていることからも,$\\lambda_1$と$\\lambda_2$は統計的に差があると言えそうです."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"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.6.6"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment