{ "cells": [ { "cell_type": "markdown", "id": "1b44b778", "metadata": {}, "source": [ "# 正規分布モデルの共役事前分布によるベイズ統計\n", "\n", "* 黒木玄\n", "* 2022-09-03~2022-09-06\n", "$\n", "\\newcommand\\ds{\\displaystyle}\n", "\\newcommand\\op[1]{{\\operatorname{#1}}}\n", "\\newcommand\\R{{\\mathbb R}}\n", "\\newcommand\\var{\\op{var}}\n", "\\newcommand\\cov{\\op{cov}}\n", "\\newcommand\\ybar{{\\bar y}}\n", "\\newcommand\\sigmahat{{\\hat\\sigma}}\n", "$" ] }, { "cell_type": "markdown", "id": "d2a4064a", "metadata": { "toc": true }, "source": [ "

目次

\n", "
" ] }, { "cell_type": "code", "execution_count": 1, "id": "99b985ad", "metadata": {}, "outputs": [], "source": [ "ENV[\"COLUMNS\"] = 120\n", "\n", "using Distributions\n", "using LinearAlgebra\n", "using Random\n", "Random.seed!(4649373)\n", "using StatsPlots\n", "default(fmt=:png, size=(500, 350),\n", " titlefontsize=10, tickfontsize=6, guidefontsize=9,\n", " plot_titlefontsize=10)\n", "using SymPy\n", "using Turing" ] }, { "cell_type": "code", "execution_count": 2, "id": "261c1066", "metadata": {}, "outputs": [], "source": [ "# Override the Base.show definition of SymPy.jl:\n", "# https://github.com/JuliaPy/SymPy.jl/blob/29c5bfd1d10ac53014fa7fef468bc8deccadc2fc/src/types.jl#L87-L105\n", "\n", "@eval SymPy function Base.show(io::IO, ::MIME\"text/latex\", x::SymbolicObject)\n", " print(io, as_markdown(\"\\\\displaystyle \" *\n", " sympy.latex(x, mode=\"plain\", fold_short_frac=false)))\n", "end\n", "@eval SymPy function Base.show(io::IO, ::MIME\"text/latex\", x::AbstractArray{Sym})\n", " function toeqnarray(x::Vector{Sym})\n", " a = join([\"\\\\displaystyle \" *\n", " sympy.latex(x[i]) for i in 1:length(x)], \"\\\\\\\\\")\n", " \"\"\"\\\\left[ \\\\begin{array}{r}$a\\\\end{array} \\\\right]\"\"\"\n", " end\n", " function toeqnarray(x::AbstractArray{Sym,2})\n", " sz = size(x)\n", " a = join([join(\"\\\\displaystyle \" .* map(sympy.latex, x[i,:]), \"&\")\n", " for i in 1:sz[1]], \"\\\\\\\\\")\n", " \"\\\\left[ \\\\begin{array}{\" * repeat(\"r\",sz[2]) * \"}\" * a * \"\\\\end{array}\\\\right]\"\n", " end\n", " print(io, as_markdown(toeqnarray(x)))\n", "end" ] }, { "cell_type": "code", "execution_count": 3, "id": "555cb306", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "confint_ttest (generic function with 2 methods)" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# One sample t-test\n", "\n", "function pvalue_ttest(x̄, s², n, μ)\n", " t = (x̄ - μ)/√(s²/n)\n", " 2ccdf(TDist(n-1), abs(t))\n", "end\n", "\n", "function pvalue_ttest(x, μ)\n", " x̄, s², n = mean(x), var(x), length(x)\n", " pvalue_ttest(x̄, s², n, μ)\n", "end\n", "\n", "function confint_ttest(x̄, s², n; α = 0.05)\n", " c = quantile(TDist(n-1), 1-α/2)\n", " [x̄ - c*√(s²/n), x̄ + c*√(s²/n)]\n", "end\n", "\n", "function confint_ttest(x; α = 0.05)\n", " x̄, s², n = mean(x), var(x), length(x)\n", " confint_ttest(x̄, s², n; α)\n", "end" ] }, { "cell_type": "code", "execution_count": 4, "id": "3b74b77e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "preddist_ttest (generic function with 2 methods)" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Bayesian analogue of one sample t-test\n", "\n", "posterior_μ_ttest(n, x̄, s²) = x̄ + √(s²/n)*TDist(n-1)\n", "posterior_μ_ttest(x) = posterior_μ_ttest(length(x), mean(x), var(x))\n", "\n", "preddist_ttest(n, x̄, s²) = x̄ + √(s²*(1 + 1/n))*TDist(n-1)\n", "preddist_ttest(x) = preddist_ttest(length(x), mean(x), var(x))" ] }, { "cell_type": "code", "execution_count": 5, "id": "6d84ea92", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\begin{verbatim}\n", "PowerPos(p::Real)\n", "\\end{verbatim}\n", "The \\emph{positive power distribution} with real-valued parameter \\texttt{p} is the improper distribution of real numbers that has the improper probability density function\n", "\n", "$$f(x) = \\begin{cases}\n", "0 & \\text{if } x \\leq 0, \\\\\n", "x^p & \\text{otherwise}.\n", "\\end{cases}$$\n" ], "text/markdown": [ "```\n", "PowerPos(p::Real)\n", "```\n", "\n", "The *positive power distribution* with real-valued parameter `p` is the improper distribution of real numbers that has the improper probability density function\n", "\n", "$$\n", "f(x) = \\begin{cases}\n", "0 & \\text{if } x \\leq 0, \\\\\n", "x^p & \\text{otherwise}.\n", "\\end{cases}\n", "$$\n" ], "text/plain": [ "\u001b[36m PowerPos(p::Real)\u001b[39m\n", "\n", " The \u001b[4mpositive power distribution\u001b[24m with real-valued parameter \u001b[36mp\u001b[39m is the improper distribution of real numbers that has\n", " the improper probability density function\n", "\n", "\u001b[35m f(x) = \\begin{cases}\u001b[39m\n", "\u001b[35m0 & \\text{if } x \\leq 0, \\\\\u001b[39m\n", "\u001b[35mx^p & \\text{otherwise}.\u001b[39m\n", "\u001b[35m\\end{cases}\u001b[39m" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Jeffreys事前分布などのimproper事前分布を定義するために以下が使われる.\n", "\n", "\"\"\"\n", " PowerPos(p::Real)\n", "\n", "The *positive power distribution* with real-valued parameter `p` is the improper distribution\n", "of real numbers that has the improper probability density function\n", "\n", "```math\n", "f(x) = \\\\begin{cases}\n", "0 & \\\\text{if } x \\\\leq 0, \\\\\\\\\n", "x^p & \\\\text{otherwise}.\n", "\\\\end{cases}\n", "```\n", "\"\"\"\n", "struct PowerPos{T<:Real} <: ContinuousUnivariateDistribution\n", " p::T\n", "end\n", "PowerPos(p::Integer) = PowerPos(float(p))\n", "\n", "Base.minimum(d::PowerPos{T}) where T = zero(T)\n", "Base.maximum(d::PowerPos{T}) where T = T(Inf)\n", "\n", "Base.rand(rng::Random.AbstractRNG, d::PowerPos) = rand(rng) + 0.5\n", "function Distributions.logpdf(d::PowerPos, x::Real)\n", " T = float(eltype(x))\n", " return x ≤ 0 ? T(-Inf) : d.p*log(x)\n", "end\n", "\n", "Distributions.pdf(d::PowerPos, x::Real) = exp(logpdf(d, x))\n", "\n", "# For vec support\n", "function Distributions.loglikelihood(d::PowerPos, x::AbstractVector{<:Real})\n", " T = float(eltype(x))\n", " return any(xi ≤ 0 for xi in x) ? T(-Inf) : d.p*log(prod(x))\n", "end\n", "\n", "@doc PowerPos" ] }, { "cell_type": "code", "execution_count": 6, "id": "b0ce984f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "MyInverseGamma (generic function with 1 method)" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 以下は使わないが,\n", "# Flat() や PowerPos(p) と正規分布や逆ガンマ分布の関係は次のようになっている.\n", "\n", "MyNormal(μ, σ) = σ == Inf ? Flat() : Normal(μ, σ)\n", "MyInverseGamma(κ, θ) = θ == 0 ? PowerPos(-κ-1) : InverseGamma(κ, θ)" ] }, { "cell_type": "markdown", "id": "3bf9efe2", "metadata": {}, "source": [ "## 正規分布モデルの共役事前分布とその応用" ] }, { "cell_type": "markdown", "id": "85fccf38", "metadata": {}, "source": [ "### 逆ガンマ正規分布\n", "\n", "平均 $\\mu\\in\\R$, 分散 $v=\\sigma^2\\in\\R_{>0}$ の正規分布の確率密度函数を次のように表す:\n", "\n", "$$\n", "p_\\op{Normal}(y|\\mu, v) =\n", "\\frac{1}{\\sqrt{2\\pi v}}\\exp\\left(-\\frac{1}{2v}(y-\\mu)^2\\right)\n", "\\quad (y\\in \\R).\n", "$$\n", "\n", "分散パラメータ $\\sigma^2$ を $v$ に書き直している理由は, $\\sigma^2$ を1つの変数として扱いたいからである.\n", "\n", "パラメータ $\\kappa, \\theta > 0$ の逆ガンマ分布の確率密度函数を次のように書くことにする:\n", "\n", "$$\n", "p_\\op{InverseGamma}(v|\\kappa,\\theta) =\n", "\\frac{\\theta^\\kappa}{\\Gamma(\\kappa)}\n", "v^{-\\kappa-1}\\exp\\left(-\\frac{\\theta}{v}\\right)\n", "\\quad (v > 0).\n", "$$\n", "\n", "$v$ がこの逆ガンマ分布に従う確率変数だとすると, \n", "\n", "$$\n", "\\begin{aligned}\n", "&\n", "\\frac{1}{v} \\sim\n", "\\op{Gamma}\\left(\\kappa,\\, \\frac{1}{\\theta}\\right) =\n", "\\frac{1}{2\\theta}\\op{Gamma}\\left(\\frac{2\\kappa}{2},\\, 2\\right) =\n", "\\frac{1}{2\\theta}\\op{Chisq}(2\\kappa),\n", "\\\\ &\n", "E[v] = \\frac{\\theta}{\\kappa - 1}, \\quad\n", "\\var(v) = \\frac{E[v]^2}{\\kappa - 2}.\n", "\\end{aligned}\n", "$$\n", "\n", "$A$ と $B$ が $\\mu, v$ に関する定数因子の違いを除いて等しいことを $A\\propto B$ と書くことにする.\n", "\n", "逆ガンマ正規分布の密度函数を次のように定義する:\n", "\n", "$$\n", "\\begin{aligned}\n", "p_\\op{InverseGammaNormal}(\\mu,v|\\mu_*, v_*, \\kappa, \\theta) &=\n", "p_\\op{Normal}(\\mu|\\mu_*, v_* v) p_\\op{InverseGamma}(v|\\kappa, \\theta)\n", "\\\\ &\\propto\n", "v^{-(\\kappa+1/2)-1}\n", "\\exp\\left(-\\frac{1}{v}\\left(\\theta + \\frac{1}{2v_*}(\\mu-\\mu_*)^2\\right)\\right).\n", "\\end{aligned}\n", "$$\n", "\n", "この逆ガンマ正規分布の密度函数に従う確率変数を $\\mu,v$ と書くと,\n", "\n", "$$\n", "E[v] = \\frac{\\theta}{\\kappa-1}, \\quad\n", "\\var(v) = \\frac{E[v]^2}{\\kappa-2}, \\quad\n", "\\cov(\\mu, v) = 0, \\quad\n", "E[\\mu] = \\mu_*, \\quad\n", "\\var(\\mu) = v_* E[v].\n", "$$\n", "\n", "この逆ガンマ正規分布が正規分布の共役事前分布になっていることを次の節で確認する. " ] }, { "cell_type": "markdown", "id": "f2b2902e", "metadata": {}, "source": [ "### 共役事前分布のBayes更新\n", "\n", "データの数値 $y_1,\\ldots,y_n$ が与えられたとき, 正規分布モデルの尤度函数は\n", "\n", "$$\n", "\\prod_{i=1}^n p_\\op{Normal}(y_i|\\mu,v) \\propto\n", "v^{-n/2}\\exp\\left(-\\frac{1}{2v}\\sum_{i=1}^n(y_i-\\mu)^2\\right)\n", "$$\n", "\n", "の形になる. このとき,\n", "\n", "$$\n", "\\ybar = \\frac{1}{n}\\sum_{i=1}^n y_i, \\quad\n", "\\sigmahat^2 = \\frac{1}{n}\\sum_{i=1}^n (y_i - \\ybar)^2.\n", "$$\n", "\n", "とおくと, \n", "\n", "$$\n", "\\sum_{i=1}^n(y_i-\\mu)^2 = n(\\mu - \\ybar)^2 + n\\sigmahat^2\n", "$$\n", "\n", "なので, 尤度を最大化する $\\mu, v$ は $\\mu=\\ybar$, $v=\\sigmahat^2$ になることがわかる.\n", "\n", "さらに, 次が成立することもわかる:\n", "\n", "$$\n", "\\begin{aligned}\n", "&\n", "\\prod_{i=1}^n p_\\op{Normal}(y_i|\\mu,v)\\times\n", "p_\\op{InverseGammaNormal}(\\mu,v|\\mu_*, v_*, \\kappa, \\theta)\n", "\\\\ &\\propto\n", "v^{-n/2}\\exp\\left(-\\frac{n}{2v}\\left((\\mu-\\ybar)^2 + \\sigmahat^2\\right)\\right)\\times\n", "v^{-(\\kappa+1/2)-1}\n", "\\exp\\left(-\\frac{1}{v}\\left(\\theta + \\frac{1}{2v_*}(\\mu-\\mu_*)^2\\right)\\right)\n", "\\\\ &=\n", "v^{-(\\kappa+n/2+1/2)-1}\n", "\\exp\\left(-\\frac{1}{v}\\left(\n", "\\theta + \\frac{n}{2}\\left(\\sigmahat^2 + \\frac{(\\ybar - \\mu_*)^2}{1+nv_*}\\right) +\n", "\\frac{1+nv_*}{2v_*}\\left(\\mu - \\frac{\\mu_*+nv_*\\ybar}{1+nv_*}\\right)^2\n", "\\right)\\right).\n", "\\end{aligned}\n", "$$\n", "\n", "ゆえに共役事前分布から得られる事後分布のパラメータは次のようになる:\n", "\n", "$$\n", "\\begin{alignedat}{2}\n", "&\n", "\\tilde\\kappa = \\kappa + \\frac{n}{2} =\n", "\\frac{n}{2}\\left(1 + \\frac{2\\kappa}{n}\\right), \n", "\\\\ &\n", "\\tilde\\theta =\n", "\\theta + \\frac{n}{2}\\left(\\sigmahat^2 + \\frac{(\\ybar - \\mu_*)^2}{1+nv_*}\\right) =\n", "\\frac{n\\sigmahat^2}{2}\\left(1 + \\frac{2\\theta}{n\\sigmahat^2} + \\frac{(\\ybar - \\mu_*)^2}{(1+nv_*)\\sigmahat^2}\\right),\n", "\\\\ &\n", "\\tilde\\mu_* = \\frac{\\mu_*+nv_*\\ybar}{1+nv_*} =\n", "\\ybar\\frac{1+\\mu_*/(nv_*\\ybar)}{1+1/(nv_*)}, \n", "\\\\ &\n", "\\tilde v_* = \\frac{v_*}{1+nv_*} =\n", "\\frac{1}{n}\\frac{1}{1+1/(nv_*)}.\n", "\\end{alignedat}\n", "$$" ] }, { "cell_type": "code", "execution_count": 7, "id": "11a49d23", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "bayesian_update (generic function with 2 methods)" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "function bayesian_update(μstar, vstar, κ, θ, n, ȳ, σ̂²)\n", " μstar_new = (μstar/vstar + n*ȳ)/(1/vstar + n)\n", " vstar_new = 1/(1/vstar + n)\n", " κ_new = κ + n/2\n", " θ_new = θ + (n/2)*(σ̂² + ((ȳ - μstar)^2/vstar)/(1/vstar + n))\n", " μstar_new, vstar_new, κ_new, θ_new\n", "end\n", "\n", "function bayesian_update(μstar, vstar, κ, θ, y)\n", " n, ȳ, σ̂² = length(y), mean(y), var(y; corrected=false)\n", " bayesian_update(μstar, vstar, κ, θ, n, ȳ, σ̂²)\n", "end" ] }, { "cell_type": "code", "execution_count": 8, "id": "9a5b37b7", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(n, ȳ, v̂, μ, v, μ0, v0, κ, θ)" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "@vars n ȳ v̂ μ v μ0 v0 κ θ" ] }, { "cell_type": "code", "execution_count": 9, "id": "f678bcce", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle \\frac{n \\log{\\left(v \\right)}}{2} + \\frac{n \\left(v̂ + \\left(- ȳ + μ\\right)^{2}\\right)}{2 v}$\n" ], "text/plain": [ " / 2\\\n", "n*log(v) n*\\v̂ + (-ȳ + μ) /\n", "-------- + -----------------\n", " 2 2*v " ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "negloglik = n/2*log(v) + n/(2v)*((μ - ȳ)^2 + v̂)" ] }, { "cell_type": "code", "execution_count": 10, "id": "d8c78a40", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle \\left(κ + \\frac{3}{2}\\right) \\log{\\left(v \\right)} + \\frac{θ + \\frac{\\left(μ - μ_{0}\\right)^{2}}{2 v_{0}}}{v}$\n" ], "text/plain": [ " 2\n", " (μ - μ0) \n", " θ + ---------\n", " 2*v0 \n", "(κ + 3/2)*log(v) + -------------\n", " v " ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "neglogpri = (κ + 1//2 + 1)*log(v) + 1/v*(θ + 1/(2v0)*(μ-μ0)^2)" ] }, { "cell_type": "code", "execution_count": 11, "id": "110ec5dc", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle \\left(\\frac{n}{2} + κ + \\frac{3}{2}\\right) \\log{\\left(v \\right)} + \\frac{\\frac{n \\left(v̂ + \\frac{\\left(ȳ - μ_{0}\\right)^{2}}{n v_{0} + 1}\\right)}{2} + θ + \\frac{\\left(μ - \\frac{n v_{0} ȳ + μ_{0}}{n v_{0} + 1}\\right)^{2} \\left(n v_{0} + 1\\right)}{2 v_{0}}}{v}$\n" ], "text/plain": [ " / 2\\ 2 \n", " | (ȳ - μ0) | / n*v0*ȳ + μ0\\ \n", " n*|v̂ + ---------| |μ - -----------| *(n*v0 + 1)\n", " \\ n*v0 + 1/ \\ n*v0 + 1 / \n", " ----------------- + θ + -----------------------------\n", "/n 3\\ 2 2*v0 \n", "|- + κ + -|*log(v) + -----------------------------------------------------\n", "\\2 2/ v " ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "neglogpost = (κ + n/2 + 1//2 + 1)*log(v) + 1/v*(\n", " θ + n/2*(v̂ + (ȳ - μ0)^2/(1+n*v0)) +\n", " (1 + n*v0)/(2v0)*(μ - (μ0 + n*v0*ȳ)/(1 + n*v0))^2)" ] }, { "cell_type": "code", "execution_count": 12, "id": "124b680f", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle 0$\n" ], "text/plain": [ "0" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "simplify(negloglik + neglogpri - neglogpost)" ] }, { "cell_type": "code", "execution_count": 13, "id": "cdcb1a8e", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\left[ \\begin{array}{r}\\displaystyle \\frac{n ȳ + \\frac{μ_{0}}{v_{0}}}{n + \\frac{1}{v_{0}}}\\\\\\displaystyle \\frac{1}{n + \\frac{1}{v_{0}}}\\\\\\displaystyle \\frac{n}{2} + κ\\\\\\displaystyle \\frac{n \\left(v̂ + \\frac{\\left(ȳ - μ_{0}\\right)^{2}}{v_{0} \\left(n + \\frac{1}{v_{0}}\\right)}\\right)}{2} + θ\\end{array} \\right]$\n" ], "text/plain": [ "4-element Vector{Sym}:\n", " (n*ȳ + μ0/v0)/(n + 1/v0)\n", " 1/(n + 1/v0)\n", " n/2 + κ\n", " n*(v̂ + (ȳ - μ0)^2/(v0*(n + 1/v0)))/2 + θ" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bayesian_update(μ0, v0, κ, θ, n, ȳ, v̂) |> collect" ] }, { "cell_type": "markdown", "id": "b6975ac3", "metadata": {}, "source": [ "### μの周辺事前・事後分布および事前・事後予測分布\n", "\n", "確率密度函数\n", "\n", "$$\n", "p(\\mu|\\mu_*,v_*,\\kappa,\\theta) =\n", "\\int_{\\R_{>0}} p_\\op{InverseGammaNormal}(\\mu,v|\\mu_*,v_*,\\kappa,\\theta) \\,dv\n", "$$\n", "\n", "で定義される $\\mu$ の周辺事前分布は次になる:\n", "\n", "$$\n", "\\mu \\sim\n", "\\mu_* + \\sqrt{\\frac{\\theta}{\\kappa}v_*}\\;\\op{TDist}(2\\kappa).\n", "$$\n", "\n", "なぜならば, $v\\sim \\op{InverseGamma}(\\kappa, \\theta)$ のとき,\n", "\n", "$$\n", "\\frac{1}{v} \\sim\n", "\\op{Gamma}\\left(\\kappa,\\, \\frac{1}{\\theta}\\right) =\n", "\\frac{1}{2\\theta}\\op{Gamma}\\left(\\frac{2\\kappa}{2}, 2\\right) =\n", "\\frac{1}{2\\theta}\\op{Chisq}(2\\kappa)\n", "$$\n", "\n", "より,\n", "\n", "$$\n", "\\begin{aligned}\n", "\\mu &\\sim \\mu_* + \\sqrt{v_*v}\\;\\op{Normal}(0,1)\n", "\\\\ &\\sim\n", "\\mu_* + \\sqrt{\\frac{2\\theta v_*}{\\op{Chisq}(2\\kappa)}}\\;\\op{Normal}(0,1)\n", "\\\\ &=\n", "\\mu_* + \\sqrt{\\frac{2\\theta v_*}{2\\kappa}}\n", "\\frac{\\op{Normal}(0,1)}{\\sqrt{\\op{Chisq}(2\\kappa)/(2\\kappa)}}\n", "\\\\ &=\n", "\\mu_* + \\sqrt{\\frac{\\theta}{\\kappa}v_*}\\;\\op{TDist}(2\\kappa).\n", "\\end{aligned}\n", "$$\n", "\n", "$y_\\op{new}$ の事前予測分布は, 確率密度函数\n", "\n", "$$\n", "\\begin{aligned}\n", "p_*(y_\\op{new}|\\mu_*,v_*,\\kappa,\\theta) &=\n", "\\iint_{\\R\\times\\R_{>0}}\n", "p_\\op{Normal}(y_\\op{new}|\\mu,v)\n", "p_\\op{InverseGammaNormal}(\\mu,v|\\mu_*,v_*,\\kappa,\\theta)\n", "\\,d\\mu\\,dv\n", "\\end{aligned}\n", "$$\n", "\n", "によって定義される. このとき\n", "\n", "$$\n", "\\begin{aligned}\n", "\\int_\\R\n", "p_\\op{Normal}(y_\\op{new}|\\mu,v) p_\\op{Normal}(\\mu|\\mu_*, v_* v)\n", "\\,d\\mu &=\n", "p_\\op{Normal}(y_\\op{new}|\\mu_*, v+v*v)\n", "\\\\ &=\n", "p_\\op{Normal}(y_\\op{new}|\\mu_*, v(1+v_*))\n", "\\end{aligned}\n", "$$\n", "\n", "であることより,\n", "\n", "$$\n", "\\begin{aligned}\n", "p_*(y_\\op{new}|\\mu_*,v_*,\\kappa,\\theta)\n", "&=\n", "\\int_{\\R_{>0}}\n", "p_\\op{InverseGammaNormal}(y_\\op{new},v(1+v_*)|\\mu_*,v_*,\\kappa,\\theta)\n", "\\,dv.\n", "\\end{aligned}\n", "$$\n", "\n", "ゆえに, $\\mu$ の周辺事前分布の場合の計算より,\n", "\n", "$$\n", "y_\\op{new} \\sim\n", "\\mu_* + \\sqrt{\\frac{\\theta}{\\kappa}(1+v_*)}\\;\\op{TDist}(2\\kappa).\n", "$$\n", "\n", "パラメータをBayes更新後のパラメータ\n", "\n", "$$\n", "\\begin{alignedat}{2}\n", "&\n", "\\tilde\\kappa = \\kappa + \\frac{n}{2} =\n", "\\frac{n}{2}\\left(1 + \\frac{2\\kappa}{n}\\right), \n", "\\\\ &\n", "\\tilde\\theta =\n", "\\theta + \\frac{n}{2}\\left(\\sigmahat^2 + \\frac{(\\ybar - \\mu_*)^2}{1+nv_*}\\right) =\n", "\\frac{n\\sigmahat^2}{2}\\left(1 + \\frac{2\\theta}{n\\sigmahat^2} + \\frac{(\\ybar - \\mu_*)^2}{(1+nv_*)\\sigmahat^2}\\right),\n", "\\\\ &\n", "\\tilde\\mu_* = \\frac{\\mu_*+nv_*\\ybar}{1+nv_*} =\n", "\\ybar\\frac{1+\\mu_*/(nv_*\\ybar)}{1+1/(nv_*)}, \n", "\\\\ &\n", "\\tilde v_* = \\frac{v_*}{1+nv_*} =\n", "\\frac{1}{n}\\frac{1}{1+1/(nv_*)}.\n", "\\end{alignedat}\n", "$$\n", "\n", "に置き換えればこれは $\\mu$ の周辺事後分布および事後予測分布になる.\n", "\n", "その事後分布を使った区間推定の幅は\n", "\n", "* $n$ が大きいほど狭くなる.\n", "* $\\kappa$ が大きいほど狭くなる.\n", "* $\\theta$ が大きいほど広くなる.\n", "* $|\\ybar - \\mu_*|/\\sigmahat$ が大きいほど広くなる.\n", "* $|\\ybar - \\mu_*|/\\sigmahat$ が大きくても, $v_*$ がさらに大きければ狭くなる." ] }, { "cell_type": "code", "execution_count": 14, "id": "c1b8a0ba", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "preddist (generic function with 1 method)" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "posterior_μ(μstar, vstar, κ, θ) = μstar + √(θ/κ*vstar)*TDist(2κ)\n", "preddist(μstar, vstar, κ, θ) = μstar + √(θ/κ*(1 + vstar))*TDist(2κ)" ] }, { "cell_type": "markdown", "id": "b7bce02e", "metadata": {}, "source": [ "### Jeffreys事前分布の場合\n", "\n", "\n", "パラメータ空間が $\\{(\\mu, v)=(\\mu, \\sigma^2)\\in\\R\\times\\R_{>0}\\}$ の $2$ 次元の正規分布モデルのJeffreys事前分布 $p_\\op{Jeffreys}(\\mu,v)$ は\n", "\n", "$$\n", "p_\\op{Jeffreys}(\\mu,v) \\propto v^{-3/2}\n", "$$\n", "\n", "になることが知られている. ただし, 右辺の $(\\mu,v)\\in\\R\\times\\R_{>0}$ に関する積分は $\\infty$ になるので, この場合のJeffreys事前分布はimproperである.\n", "\n", "逆ガンマ正規分布の密度函数\n", "\n", "$$\n", "p_\\op{InverseGammaNormal}(\\mu,v|\\mu_*, v_*, \\kappa, \\theta) \\propto\n", "v^{-(\\kappa+1/2)-1}\n", "\\exp\\left(-\\frac{1}{v}\\left(\\theta + \\frac{1}{2v_*}(\\mu-\\mu_*)^2\\right)\\right).\n", "$$\n", "\n", "と比較すると, Jeffreys事前分布に対応する共役事前分布のパラメータ値は形式的に次になることがわかる:\n", "\n", "$$\n", "\\kappa \\to 0, \\quad\n", "\\theta \\to 0, \\quad\n", "v_* \\to \\infty.\n", "$$\n", "\n", "そのとき, Bayes更新後のパラメータの公式は次のようにシンプルになる:\n", "\n", "$$\n", "\\tilde\\kappa = \\frac{n}{2}, \\quad\n", "\\tilde\\theta = \\frac{n\\sigmahat^2}{2}, \\quad\n", "\\tilde\\mu_* = \\ybar, \\quad\n", "\\tilde v_* = \\frac{1}{n}.\n", "$$\n", "\n", "さらに, 前節の公式から, $n\\to\\infty$ のとき, 一般のパラメータ値に関するBayes更新の結果は, $n\\to\\infty$ のとき漸近的にこのJeffreys事前分布の場合に一致する.\n", "\n", "さらに, Jeffreys事前分布の場合には\n", "\n", "$$\n", "\\frac{\\tilde\\theta}{\\tilde\\kappa} = \\sigmahat^2, \\quad\n", "\\tilde v_* = \\frac{1}{n}, \\quad\n", "2\\tilde\\kappa = n.\n", "$$\n", "\n", "ゆえに, $\\mu$ に関する周辺事後分布は\n", "\n", "$$\n", "\\mu \\sim\n", "\\ybar + \\frac{\\sigmahat}{\\sqrt{n}}\\;\\op{TDist}(n)\n", "$$\n", "\n", "になり, 事後予測分布は次になる:\n", "\n", "$$\n", "y_\\op{new} \\sim\n", "\\ybar + \\sigmahat\\sqrt{1+\\frac{1}{n}}\\;\\op{TDist}(n).\n", "$$" ] }, { "cell_type": "code", "execution_count": 15, "id": "47ae0c2e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "preddist_jeffreys (generic function with 2 methods)" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "prior_jeffreys() = 0.0, Inf, 0.0, 0.0\n", "\n", "posterior_μ_jeffreys(n, ȳ, σ̂²) = ȳ + √(σ̂²/n)*TDist(n)\n", "\n", "function posterior_μ_jeffreys(y)\n", " n, ȳ, σ̂² = length(y), mean(y), var(y; corrected=false)\n", " posterior_μ_jeffreys(n, ȳ, σ̂²)\n", "end\n", "\n", "preddist_jeffreys(n, ȳ, σ̂²) = ȳ + √(σ̂²*(1+1/n))*TDist(n)\n", "\n", "function preddist_jeffreys(y)\n", " n, ȳ, σ̂² = length(y), mean(y), var(y; corrected=false)\n", " preddist_jeffreys(n, ȳ, σ̂²)\n", "end" ] }, { "cell_type": "code", "execution_count": 16, "id": "039e8eb2", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "dist_true = Normal(μ_true, σ_true) = Normal{Float64}(μ=10.0, σ=3.0)\n", "n = 5\n" ] }, { "data": { "text/plain": [ "5-element Vector{Float64}:\n", " 12.53108543491323\n", " 10.859953860136164\n", " 9.647916540030597\n", " 14.29645219454655\n", " 5.808917945819022" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "μ_true, σ_true, n = 10, 3, 5\n", "@show dist_true = Normal(μ_true, σ_true) n\n", "y = rand(Normal(μ_true, σ_true), n)" ] }, { "cell_type": "code", "execution_count": 17, "id": "dfb0f3ce", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(5, 10.62886519508911, 8.263437992021275)" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "n, ȳ, σ̂² = length(y), mean(y), var(y; corrected=false)" ] }, { "cell_type": "code", "execution_count": 18, "id": "a87c8c79", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "LocationScale{Float64, Continuous, TDist{Float64}}(\n", "μ: 10.62886519508911\n", "σ: 1.285568978469944\n", "ρ: TDist{Float64}(ν=5.0)\n", ")\n" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "post_μ = posterior_μ(bayesian_update(prior_jeffreys()..., y)...)" ] }, { "cell_type": "code", "execution_count": 19, "id": "4bffce4a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "true" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "posterior_μ_jeffreys(y) ≈ post_μ" ] }, { "cell_type": "markdown", "id": "4ab8dd20", "metadata": {}, "source": [ "### Jeffreys事前分布の場合の結果の数値的確認" ] }, { "cell_type": "code", "execution_count": 20, "id": "2ba2a0b3", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "plot_preddist (generic function with 1 method)" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# プロット用函数\n", "\n", "function plot_posterior_μ(chn, y, postμ_theoretical;\n", " xlim = quantile.(postμ_theoretical, (0.0001, 0.9999)), kwargs...)\n", " postμ_ttest = posterior_μ_ttest(y)\n", " plot(legend=:outertop)\n", " if !isnothing(chn)\n", " stephist!(vec(chn[:μ]); norm=true,\n", " label=\"MCMC posterior of μ\", c=1)\n", " end\n", " plot!(postμ_theoretical, xlim...;\n", " label=\"theoretical posterior of μ\", c=2, ls=:dash)\n", " plot!(postμ_ttest, xlim...;\n", " label=\"ȳ+√(s²/n)TDist(n-1)\", c=3, ls=:dashdot)\n", " plot!(; xlim, kwargs...)\n", "end\n", "\n", "function plot_preddist(chn, y, pred_theoretical;\n", " xlim = quantile.(pred_theoretical, (0.0001, 0.9999)), kwargs...)\n", " pdf_pred(y_new) = mean(pdf(Normal(μ, √σ²), y_new)\n", " for (μ, σ²) in zip(vec(chn[:μ]), vec(chn[:σ²])))\n", " pred_ttest = preddist_ttest(y)\n", "\n", " plot(legend=:outertop)\n", " if !isnothing(chn)\n", " plot!(pdf_pred, xlim...; label=\"MCMC prediction\", c=1)\n", " end\n", " plot!(pred_theoretical, xlim...;\n", " label=\"theoretical prediction\", c=2, ls=:dash)\n", " plot!(pred_ttest, xlim...;\n", " label=\"ȳ+√(s²(1+1/n))TDist(n-1)\", c=3, ls=:dashdot)\n", " plot!(; kwargs...)\n", "end" ] }, { "cell_type": "code", "execution_count": 21, "id": "fa578753", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "normaldistmodel_jeffreys (generic function with 2 methods)" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "@model function normaldistmodel_jeffreys(y)\n", " σ² ~ PowerPos(-3/2)\n", " μ ~ Flat()\n", " y ~ MvNormal(fill(μ, length(y)), σ²*I)\n", "end" ] }, { "cell_type": "code", "execution_count": 22, "id": "cd5e5d1d", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "dist_true = Normal(μ_true, σ_true) = Normal{Float64}(μ=10000.0, σ=100.0)\n", "n = 5\n" ] }, { "data": { "text/plain": [ "5-element Vector{Float64}:\n", " 9871.967706849937\n", " 9979.570383530274\n", " 10101.128050729112\n", " 10191.06138205461\n", " 9903.360736211474" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "μ_true, σ_true, n = 1e4, 1e2, 5\n", "@show dist_true = Normal(μ_true, σ_true) n\n", "y = rand(Normal(μ_true, σ_true), n)" ] }, { "cell_type": "code", "execution_count": 23, "id": "ad458a4a", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "┌ Info: Found initial step size\n", "│ ϵ = 0.0001953125\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n", "┌ Info: Found initial step size\n", "│ ϵ = 9.765625e-5\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n", "┌ Info: Found initial step size\n", "│ ϵ = 9.765625e-5\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n", "┌ Info: Found initial step size\n", "│ ϵ = 0.0001953125\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n", "┌ Info: Found initial step size\n", "│ ϵ = 0.0001953125\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n", "┌ Info: Found initial step size\n", "│ ϵ = 4.8828125e-5\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n", "┌ Info: Found initial step size\n", "│ ϵ = 4.8828125e-5\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n", "┌ Info: Found initial step size\n", "│ ϵ = 9.765625e-5\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n", "┌ Info: Found initial step size\n", "│ ϵ = 0.0001953125\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n", "┌ Info: Found initial step size\n", "│ ϵ = 9.765625e-5\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n" ] } ], "source": [ "L = 10^5\n", "n_threads = min(Threads.nthreads(), 10)\n", "chn = sample(normaldistmodel_jeffreys(y), NUTS(), MCMCThreads(), L, n_threads);" ] }, { "cell_type": "code", "execution_count": 24, "id": "a0663248", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Chains MCMC chain (100000×14×10 Array{Float64, 3}):\n", "\n", "Iterations = 1001:1:101000\n", "Number of chains = 10\n", "Samples per chain = 100000\n", "Wall duration = 30.2 seconds\n", "Compute duration = 259.5 seconds\n", "parameters = σ², μ\n", "internals = lp, n_steps, is_accept, acceptance_rate, log_density, hamiltonian_energy, hamiltonian_energy_error, max_hamiltonian_energy_error, tree_depth, numerical_error, step_size, nom_step_size\n", "\n", "Summary Statistics\n", " \u001b[1m parameters \u001b[0m \u001b[1m mean \u001b[0m \u001b[1m std \u001b[0m \u001b[1m naive_se \u001b[0m \u001b[1m mcse \u001b[0m \u001b[1m ess \u001b[0m \u001b[1m rhat \u001b[0m \u001b[1m ess_per_sec \u001b[0m\n", " \u001b[90m Symbol \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m\n", "\n", " σ² 24032.5834 31054.6236 31.0546 54.8659 302335.5550 1.0000 1165.0651\n", " μ 10009.4698 69.0766 0.0691 0.1128 377614.2969 1.0000 1455.1555\n", "\n", "Quantiles\n", " \u001b[1m parameters \u001b[0m \u001b[1m 2.5% \u001b[0m \u001b[1m 25.0% \u001b[0m \u001b[1m 50.0% \u001b[0m \u001b[1m 75.0% \u001b[0m \u001b[1m 97.5% \u001b[0m\n", " \u001b[90m Symbol \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m\n", "\n", " σ² 5626.9990 10937.4676 16624.8592 27029.5096 86415.2164\n", " μ 9871.6226 9970.3075 10009.4220 10048.4509 10147.3769\n" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "chn" ] }, { "cell_type": "code", "execution_count": 25, "id": "218f5a84", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "confint_ttest(y) = [9842.326560237438, 10176.508743512724]\n" ] } ], "source": [ "@show confint_ttest(y);" ] }, { "cell_type": "code", "execution_count": 26, "id": "cbcc669a", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAfQAAAFeCAIAAAD8M3pVAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nOzdd2AT5f8H8M9lNWm696J7L1qgLWWVLRtkFwSKTBUUFWUoylAUAfk6QKasfllVoEwRAWXP7r0X3Ttt0sz7/XH8Yr9tKQXaXJp8Xn8ll8vd59r03SfPPfccQZIkIIQQ0iwMugtACCHU+TDcEUJIA2G4I4SQBsJwRwghDYThjhBCGgjDHSGENBCGO0IIaSAMd4QQ0kAY7gghpIEw3BFCSAOx6C5A1fbs2XPt2jW6q0CawNDQcN++fXRXgVDbCG2bW+bNN990c3MLCgqiuxDUvZEkOXPmTIVCQXchCLVN61ruANCvX79JkybRXQXq3qhwp7sKhJ4L+9wRQkgDYbgjhJAGwnBHCCENhOGOEEIaCMMdIYQ0EIY7QghpIAx3Ffnpp5/WrFkjFouVS/bu3bt69er6+nrqqVAo3LlzZ3h4+KxZs7766quSkhIASE1NXb169cWLF5Xvys3NXb169enTp5VLHj16tHz58qlTp7733nvnzp3r3AsXmpqa4uPjX+otly5dmjx5cifWkJGRERYWZmlpefjw4U7cLEKaDcNdRQ4fPvzzzz+fO3eOelpTU/PZZ59t2bKloaEBAKqrq0NCQk6ePDly5Mhp06Y1NDQMGzYMALKysnbu3Pnpp58qt7Nnz56dO3f+8ccfyqdDhgwxMTGZN2+ev7//1q1bDx061IllFxQUDB8+/KXe4uHh8dZbb3ViDVu2bBk6dGhZWdm8efM6cbMIaTZtvIiJLlOmTDl8+PC0adMA4Pjx4+PGjVMG8Zo1a4yMjG7cuMFkMgHgzTffXLFiBfWSg4MDj8d79OhRUFCQXC4/ceLEhAkTqJcKCgqWL19+4cKFkSNHUksWLVpUWVnZfKcNDQ1RUVEjR448cuQIl8udNWuWpaUl9VJSUtLFixdZLNakSZNcXFwAQKFQREdHx8bGstns/v37Dx069OzZs01NTXv37gWAWbNm6enplZSUnDlzpqqqatiwYf369QOA0tLSmzdv9unT5/jx4wEBAT4+Plwul9qFTCY7efJkZmamp6fntGnTqKP7/fffg4KCrl+/np2dvWnTpubVikSiY8eOFRYW9u7de/z48QBw8eLFR48eAcDevXupAqg1JRLJoUOHFi1aRBAEAFy5csXJycnd3b2zflkIdXfYcledUaNGJSQkUP0thw4dioiIoJaTJPnbb78tX76cyj6KlZWV8nFERATVI3HlyhUfH58ePXpQy8+ePevm5qZMdgBgMBgWFhbNd1pVVfXOO++Eh4cbGRllZWWFhITU1tYCwB9//DF06FCCIAQCQUhICBWg33333datW52cnExMTC5fvgwAAoGAJMmampqamhqFQpGcnBwaGlpaWmpqarpw4cKDBw8CQHZ29rJly+bPn8/j8RgMRkxMzNatW6njGjNmzNGjRy0tLffu3avsq9m0adO4ceOSk5MNDQ2blyoWi0NDQ//8809LS8v169e/9957ANDQ0CCRSBobG2tqapr3ODU1NS1ZskR59f8vv/xy9+7dV/7VIKR5tL3lHlNJrnok74otfxvE7G1GNF/CZDJnzpwZGRk5duzYxsZG5fw2DQ0N1dXVVNu5TeHh4b6+vtu3bz906NC8efNiYmKo5fn5+c7Ozi+sRCwWb9u2LTg4GAAKCwv379+/cuXKzz///Ntvv3377bcBgM1mb9y48fz58/fv3587d+78+fOV750zZ87u3btXrVpFPf38888/+uij999/HwAGDBgwfvx4auXa2toTJ05YW1sDgPJ8wLVr11JTU7OzszkcTkREhIODw+3btwcMGAAA06ZNW7duXYs6jx8/zmKxTp48CQCTJ092cnJauXLljBkzjhw5Mm7cuM7t6kFI42l7uDvqE6v8mS9e75W23HphRETEtGnTysvLlc12ANDR0WEwGAKB4HmbMjExGTBgwOHDh2/fvn3kyBFluPN4vHbepcRms/v06UM97tevX1JSEkmSKSkpVM4CwMCBA6nZDZcsWRIeHn748OExY8YsWLDAxsamxaZiYmKKiorOnz8PAAqForCwUCgUAkCPHj2oZG8uKSkpODiYw+FQpfbp0ycpKYnaaZsTtyUnJ/fv3596bGlp6erqmpyc7OTk9MIDRAi1pu3hbqIDw23bSOEu4u3tzefz9+7dm5aWplzI4XD8/f3v3LkzePDg571x/vz506ZNmzdvnrI7GwCCgoJ27dolEAj09fXb2alMJpNKpTo6OgAgEol4PB5BEFwut6mpiVpBJBLp6uoCwOjRo0tKSv7+++9jx4717t07Jyenxaa4XO6KFStCQ0ObLwEAauMt6OrqKnfRfC/PW5/H4ynHDilLbee4AEChUFB9Wc2HISGEAPvcVe/nn38+cOBAi3buqlWrtm3bpuw1FolE27dvb77CyJEjd+zYsXLlyuYLx44da2tru2zZMmWG3rt3r/Vs9SRJUn0dYrH4zJkzYWFhABAWFhYZGUmtcPToUWphVVUVj8cbPXr0gQMHamtrKysrjYyMqF5vas1Ro0ZduHDBwcHB2dnZ2dnZ0NCQwXjuR2jAgAG3bt0qKioCgKysrEePHikb5m0aNGjQhQsXqFMC9+7dq6io6NWrVzvrAwD1JUYgEMTExMhksvZXRkiraHvLXfWCg4Op7u/mZs6cWVVVNW7cOFtbW0NDw/T09PDw8OYrMJnMRYsWtXgXi8W6dOnS3LlzbW1tfX19S0pKWCzWkSNHWqzG5/NPnz598uTJ7OxsX19farjOtm3bxo8f/+DBA5FIBABUT8vMmTPr6+sdHBxSU1Pfeust6sztxIkTXVxcLC0tL1y4sGnTprfeesvb29vX17eoqEh53rVN3t7en3/+eXBwcO/evR89erR58+Z2zisAwPDhw6dPn+7v7+/v7//48ePdu3cbGxu3/8Ncu3Ytj8fLzs4ODAzctGnTgAEDPD09238LQlpCG2/WMW/ePNXP515fX8/lcqkOaApJkrW1tc0bv2KxOCkpSaFQuLu7UyNJpFKpSCQyMDBovimRSESSpLKLAwAKCgoKCwutrKycnJxaNKXz8/P9/Pzq6uoSEhK4XK67uzs1dhAAZDJZWloai8Vyc3OjOjdIkszIyKisrLS3t1eOyQGApqYmkUikLPXp06f5+flWVlbU6VyZTCYUCpVFisVioVCozOWqqqqsrCx3d3flkvr6el1dXRar7YZFaWlpYWGhh4eHcoMNDQ0cDqf5j47aiKGhoVAoTE1NdXR05PP5ycnJAQEB7XyT6FwkSTKZTLxZB1JbGO4ajgr35n3ZmoEKd5lM1nz8qCphuCM1h33uGs7Q0PDDDz+ku4rOp6Ojs2rVKuW3EIRQC9hyR+hVYMsdqTlsuasISZJ//fWXXP7sgqnDhw83H+reRYqKihITE5VPR48efeHChZfawuzZs1ufoX1N8fHxxcXFL/WWnj17Kkf3d4oVK1Y4OTlRE/ggpJEw3FVEJpONGDGCuuQHAMRicWNjY1fv9Ny5c5s3b1Y+XbZsmZ+f30ttQSQSSaXSzq1q/fr1yonPOuizzz6zt7fvrAJSUlJOnjyZmpraetgoQhoDh0KqyNmzZwHg4MGDXC6XmhILAO7du3f69GkbG5ulS5cqL9i5fv36tWvX9PX1Z8+erRyy8vjx4/Pnz7PZ7DfffNPHxwcAsrOz09PTzc3No6KixowZM3jw4CdPnly6dEmhUEyePNnPz6+ysvLOnTvZ2dl79+41MjKaPn26WCxWfnV4+vTpiRMniouL3dzc5syZw+fz79y5c/369bq6up49e86aNaudE5XXrl2ztLR89OhRamrqwIEDlYcjFAoPHTqUl5fn7+8/a9YsauBKenr6iRMnamtre/ToMXfu3KKiory8vH/++Ucmk/n4+PTv358kyaioqJiYGGtr6/nz51ODZKKjo319fa9evZqWlrZ9+/ampiZlB8jDhw8vXrzIZrMnT57s7e0NAFlZWZmZmSYmJr/99tv48eMHDRrUvNobN25cvXrV0NAwPDzc3t7+6dOnv/76K5PJPHLkCFWAcs1bt27p6+sHBAQAQGlp6a1bt6hhowh1R9hyp82jR4927Njh7e196dKlhQsXUgs3bdq0atUqNzc3kiRDQ0MLCwsB4Ny5c2PHjjUzM+NwOGFhYXfu3KHevnjx4i+++MLJyYnH4x0/fjw8PNzc3NzMzGzs2LFtzqL1448/JiQkAEBiYmKvXr0qKyt79eqVm5tbUFAAAJGRkebm5gEBAZGRkQsWLGin8n379o0bNy49Pd3Ly+vjjz/+8ccfAUAqlfbv3//OnTs+Pj779++fNWsWAJSVlYWFhRkZGfXt27ehoSEvL6/11mbMmBEZGenr61tQUBAaGkpdkPXdd9+NGzeusLCQGhq/cePG/Px8ADhz5syECRPMzc3ZbPagQYPu378PAA8ePFi8ePGGDRtcXFyaX8ELALt27Xr77bednJwEAkHv3r2zsrLaOa5jx44pv1JkZ2dv2LChnZURUnPa3nKXFKTXRv3cernekCm6vQYrn9ZdOChOb6PP1/yD7wkWm3qsaBJW7lylfMloynscx38vqKFO4c6fP185VYCOjs6JEycYDEZYWBjVWiwvL//uu+/y8vJMTU0BoL6+fteuXd9888369eu3bt06d+5cACBJ8quvvqIuHZJIJGfOnKHibNKkSefOnaPmbNHT09u6deuZM2f69++vUCgWL17couwvvvjivffe++KLLwBg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" }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "postμ_theoretical = posterior_μ_jeffreys(y)\n", "plot_posterior_μ(chn, y, postμ_theoretical)" ] }, { "cell_type": "code", "execution_count": 27, "id": "94f259ff", "metadata": {}, "outputs": [ { "data": { "image/png": "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n7BbBj2JIUOG4EVLhPQZJncDs3Hjxvj4+AcfpaRj+AxrhPQcJndde+ONNy5evAgACQkJ27Zt69S2TU1NZWVlb775JgBUVVWNHDny9u3bDz7aoqGhYfny5QKBICEh4b333qN7wN9//303N7c33nhDo9EcPnz41q1bTU1NH374oadnhx4NnpOT8+eff+bm5iYlJc2ZM6f1S3/++adYLH7YxcypU6fOnj2b/jLg8/mDBg26desWj8f78ccftdPFaPXq1eu5556je3vMzMy8vLwiIyNHjx5NXyQoKyuLi4ujh+g86Nq1a25ubgEBAdqSadOmTZ8+/bnnnuvIAVZXVx8/fjwjI8PFxWXlypV0oVgs7t2799WrV1tf+UDIIOAva1378ssvb9y4cePGjS1btrR56erVq/fu3XvEtnv27HnhhRfo5dWrV//3v/9t96FF1tbWGzdu3L9//8mTJ3NycgCgrq5ux44d8+fPBwCxWLx582aSJH/66ad2E2VBQcH58+fbFB4+fDgtLS0rK+vChQttXvrmm29aP86pjffee2/58uX0srOz84gRI+jHcEdHR48YMWLEiBG1tbUVFRX0cmxsbENDw7Zt25599ln6Dth33303KSmpvr6e3vzB/zSt9evXnz17Vrt6586dnJycDmZ2ALhy5cqZM2dqa2sPHDigLbS2tp48efKGDRs6uBOE9AhzN8cy5sHpB3Tj9OnTFy5c0K6ePHny4sWLrSssXrz4m2++ecQeZsyYQZIkRVEtLS30c6jp8qysrHfffXf+/Pkff/xxZWUlXZiWljZ48GCVSkVR1Nq1axcsWNBmbywWSzvPQWspKSmzZ89uN4D3339/5syZrUskEomrq6tcLi8qKtqxY0dqauobb7yxYsWK+vp6bZ3o6OgrV67Qy7du3QoODm69h9dff33evHna1dTUVC6Xq11VKpW9e/eeNWsWRVHNzc0bNmygy+/du7d06dL58+d/+umnNTU1N27ciI6Onjhx4po1a06fPk1R1IIFC9auXatt9OjRo2fOnFm0aNHnn39OT/nQrr1790ZHR7cuKSgo8PT0VKvVD9sEpx9A+gnP3HVHrVYvWrSIXiZJcuHChdohiQ9TWFj42Wef0TMm5ubmRkRE0H0sly5dCgoKomcmaGpqGjZsmLe394QJE6ytrSsqKgDgzp07y5YtO3jwIH0j68mT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yc/Pz8nJkclk3AvJU6dOffHFFxKJxNvbGwAsFsv27du///77UaNGsclFqqurMzIyNBrNmDFjBm1WhtvBI/c7kZeXt3bt2tmzZ+fk5OzZswcA9u7de+DAgSeffHLx4sX19fUAsGDBAtbRp6enA4BWq33hhRfi4+Nzc3N37dplYwN+O7t27dq3b19KSsr69evPnj0LANnZ2SKRKCAggF22hhCaPXt2eHi4wWB48803AaCwsPC9995LSkrauHHjDz/8YFv9+8+lS5euXbv20UcfcZKXXnpJLBb7+/unpaUBQGdnZ3p6+tSpU/Py8jIyMgAgOzt73759CQkJS5YsUavVALBw4UKVSjV8+PD58+fbypD+891331VVVW3cuJGTzJ07d+TIkQRBLF26FADKysp+/PHHgICAgIAANqPfunXriouLJ02alJqaajQaEUIpKSlspu433njDZpb0m2PHjpWUlGRlZbGHZrN5//79x48fv3z5Miv59ttvN2/enJiYuHLlymvXrgHA66+/bjabQ0JC5s6dixAyGAypqalxcXFFRUXr16+3mSX3gO0Wxz4EvPfee3v27EEIXb9+/fHHH0cIxcfHV1RUIIQ2b9788ccft7S0xMTEsJUnTpzY0NDwySefbNiwASFUV1c3ZcoUm6l+r6Snp+fn5yOEjh49+tJLLyGEFixYcOjQIS69xMWLF5955hmEEMMwgYGBNE2//fbbBw8eRAh9//33L774ou10vxcCAgLYQk9PT3h4OFtOSEioqKjYuXPn2rVrEUJtbW3jxo1DCE2fPv3mzZsIoS1btqxfv76trS06Opr9SFxcXH19vQ0M+I1YLJbRo0ez5dLS0hkzZrDl0NBQk8n01VdfLV26tKioiPXjrNxgMCCE3nnnnYMHDxYUFKSmprKngoKCKIoacAt+Mzdv3kxKSuorWbt27eeff86WFyxYcPbsWYRQdnb2ypUrrVZrUFAQe2ru3LmFhYX79+//05/+hBDS6/VcD3kowCP3O+Hv719QUAAAly5dqqurAwCNRsMGK/z8/NRqdX19PfsoBwC+vr5qtZqr4O3tzQ7tHy44kwsKCliTIyIizp07t2rVqrS0NISQRqPx8fEBAIIgXF1d29ra1Gp133tiW/3vmaamJm5ViJ+fX11dHdeULi4u7e3tcFvrNzQ0cK3PfsRGut8jnDkA4Onp2dTUxAZeduzYMX78+KqqKgAwGo0ymQx+MrnvR9zc3Owg/cYtvbelpYVLlHKLyXK53GAw2FLX3wh27nfi+eefZxgmJSWltLRUpVIBgEQisVgsAGA2m2UymVQq5VJSkCTJStgKFEUN/iDs7fz5z3++cuXKnDlz2traHBwcWMmGDRsOHDig1+sLCwvvYDJ7T2yp/e/gDnYBABtcvmvr20Lxe+d2/WNjYzMzMzdv3rxixYpt27bBT4azFaRS6cNu8u3c0nv7NjpnMie56/4Yg4qHSdeBRygUbtq06ciRIzExMVOnTgWAyMhIbmAbERHh5+dXXV1N0zTDMJWVlYGBgX0rPIxr1h0dHbOysg4fPuzr6/vEE0/0PWWxWNhNVK5cuQIAer2epmmFQnHLPbGN3r8bdujKJi4tLS0NDg6OjIxkI7PFxcVsajzO0suXL0dERPj6+tbW1lIUxTBMeXl5UNCdE4IPOkJCQq5evYoYf63RAAADGUlEQVQQIkmyo6Nj2LBh3CmLxcK6dW9v75qaGgC4fPlyZGQk1/oGg4EkSXbE81ATERHRt/c6Ojrq9Xp2hF5UVBQWFsZ1g6qqqocsJYONw0KDG7VanZqaunDhwvj4+NbWVoTQ9evXx48fv3Tp0oSEBJIkEUJbtmyZPn16UlLSxx9/jBCyWCyJiYlLliyZMGHC4M9afDvnz59PT0+fN29eamqqyWRCCCUmJr788svx8fGvvPIKW+edd95JS0ubPHnygQMHEELt7e1xcXHLli179NFHGxoabKn9b+HixYtpaWlyuTwtLe2bb75BCO3YsWPatGnJyclsWmOappOTkxcvXjxhwoRLly4hhG7cuDFhwoSlS5fGx8ezNycjIyMhIWHGjBnsi5ZBTk5OTmpqqlKpTEtLKywsRAitXr06JSVl6tSpu3fvRgh9+OGHzz777PPPPx8VFaVWqxFCeXl5sbGxL7744vz589mLrFix4umnn548eXJ2drYNbekn27dvT0xM9PDwSEtLa2xsRAgtWrQoLCwsJiZmxYoVCCGNRhMbG7ts2bLJkyd3dXUhhPbt2zdlypTU1NRVq1axF5k3b96iRYtiY2PPnDljQ1t+Kzj9wF1oa2sjSZILrQKA1WrVarVs3Jmlq6uLYRhux1cA0Gg0Hh4eD+l2dE1NTTwej4s8ms1mtVrt7Ozs4sJtlwktLS0ymUyh6N2jimGY+vp6Ly+vwT83jsNqter1vfsvymQyNobW09NjsVj6ZqxraGhwdXXlImwURTU1Nd259QctJEmaTL3btSsUCrZ/trW1iUQiNgQHABqNhqZpHx+fvgGZjo6OvmmqWltbJRKJUqkcWPXvBaPRaDb37lTs4ODA5/NZDw4AfD6ftZqm6YaGBh8fH26ao06nI0my76NMY2Ojs7OzRCIZcAvuHezcMRgMxg7BMXcMBoOxQ7Bzx2AwGDsEO3cMBoOxQ7Bzx2AwGDsEO3cMBoOxQ7Bzx2AwGDsEO3cMBoOxQ7Bzx2AwGDsEO3cMBoOxQ7Bzx2AwGDsEO3cMBoOxQ7Bzx2AwGDvk/wHMKRc16D/ZIQAAAABJRU5ErkJggg==" }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pred_theoretical = preddist_jeffreys(y)\n", "plot_preddist(chn, y, pred_theoretical)" ] }, { "cell_type": "markdown", "id": "b258a6b7", "metadata": {}, "source": [ "### 平均と対数分散について一様な事前分布の場合\n", "\n", "平均 $\\mu$ と分数の対数 $\\log v = \\log\\sigma^2$ に関する一様な事前分布は\n", "\n", "$$\n", "p_\\op{flat}(\\mu, v) \\propto v^{-1}\n", "$$\n", "\n", "になる. ただし, 右辺の $(\\mu,v)\\in\\R\\times\\R_{>0}$ に関する積分は $\\infty$ になるので, この事前分布はimproperである.\n", "\n", "逆ガンマ正規分布の密度函数\n", "\n", "$$\n", "p_\\op{InverseGammaNormal}(\\mu,v|\\mu_*, v_*, \\kappa, \\theta) \\propto\n", "v^{-(\\kappa+1/2)-1}\n", "\\exp\\left(-\\frac{1}{v}\\left(\\theta + \\frac{1}{2v_*}(\\mu-\\mu_*)^2\\right)\\right).\n", "$$\n", "\n", "と比較すると, 平均と対数分散について一様な事前分布に対応する共役事前分布のパラメータ値は形式的に次になることがわかる:\n", "\n", "$$\n", "\\kappa \\to -\\frac{1}{2}, \\quad\n", "\\theta \\to 0, \\quad\n", "v_* \\to \\infty.\n", "$$\n", "\n", "このとき, Bayes更新後のパラメータの公式は次のようになる:\n", "\n", "$$\n", "\\tilde\\kappa = \\frac{n-1}{2}, \\quad\n", "\\tilde\\theta = \\frac{n\\sigmahat^2}{2}, \\quad\n", "\\tilde\\mu_* = \\ybar, \\quad\n", "\\tilde v_* = \\frac{1}{n}.\n", "$$\n", "\n", "この場合には\n", "\n", "$$\n", "\\frac{\\tilde\\theta}{\\tilde\\kappa} = \\frac{n\\sigmahat^2}{n-1} = s^2, \\quad\n", "\\tilde v_* = \\frac{1}{n}, \\quad\n", "2\\tilde\\kappa = n-1.\n", "$$\n", "\n", "ここで, $s^2$ はデータの数値 $y_1,\\ldots,y_n$ の不偏分散\n", "\n", "$$\n", "s^2 = \\frac{1}{n-1}\\sum_{i=1}^n(y_i - \\ybar)^2 =\n", "\\frac{n\\sigmahat^2}{n-1} > \\sigmahat^2\n", "$$\n", "\n", "であり, $s$ はその平方根である.\n", "\n", "ゆえに, $\\mu$ に関する周辺事後分布は\n", "\n", "$$\n", "\\mu \\sim\n", "\\ybar + \\frac{s}{\\sqrt{n}}\\;\\op{TDist}(n-1)\n", "$$\n", "\n", "になり, $y_\\op{new}$ に関する事後予測分布は次になる:\n", "\n", "$$\n", "y_\\op{new} \\sim\n", "\\ybar + s\\sqrt{1+\\frac{1}{n}}\\;\\op{TDist}(n-1).\n", "$$\n", "\n", "したがって, 前節の結果と比較すると, Jeffreys事前分布の事後分布と予測分布による区間推定よりもこの場合の区間推定は少し広くなる." ] }, { "cell_type": "code", "execution_count": 28, "id": "0d486453", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "preddist_flat (generic function with 2 methods)" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "prior_flat() = 0.0, Inf, -1/2, 0.0\n", "\n", "posterior_μ_flat(n, ȳ, s²) = ȳ + √(s²/n)*TDist(n-1)\n", "\n", "function posterior_μ_flat(y)\n", " n, ȳ, s² = length(y), mean(y), var(y)\n", " posterior_μ_flat(n, ȳ, s²)\n", "end\n", "\n", "preddist_flat(n, ȳ, s²) = ȳ + √(s²*(1+1/n))*TDist(n-1)\n", "\n", "function preddist_flat(y)\n", " n, ȳ, s² = length(y), mean(y), var(y)\n", " preddist_flat(n, ȳ, s²)\n", "end" ] }, { "cell_type": "code", "execution_count": 29, "id": "f8160523", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "dist_true = Normal(μ_true, σ_true) = Normal{Float64}(μ=10000.0, σ=100.0)\n", "n = 5\n" ] }, { "data": { "text/plain": [ "(5, 11.1106880662252, 21.104519098898074)" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y = rand(Normal(10, 3), 5)\n", "@show dist_true = Normal(μ_true, σ_true) n\n", "n, ȳ, s² = length(y), mean(y), var(y)" ] }, { "cell_type": "code", "execution_count": 30, "id": "a8afe198", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "LocationScale{Float64, Continuous, TDist{Float64}}(\n", "μ: 11.1106880662252\n", "σ: 2.0544838329321586\n", "ρ: TDist{Float64}(ν=4.0)\n", ")\n" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "post_μ = posterior_μ(bayesian_update(prior_flat()..., y)...)" ] }, { "cell_type": "code", "execution_count": 31, "id": "5b233727", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "true" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "posterior_μ_flat(y) ≈ post_μ" ] }, { "cell_type": "markdown", "id": "9c29fb43", "metadata": {}, "source": [ "### 平均と対数分散について一様な事前分布の場合の結果の数値的確認" ] }, { "cell_type": "code", "execution_count": 32, "id": "1d5eee02", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "normaldistmodel_flat (generic function with 2 methods)" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "@model function normaldistmodel_flat(y)\n", " σ² ~ PowerPos(-1)\n", " μ ~ Flat()\n", " y ~ MvNormal(fill(μ, length(y)), σ²*I)\n", "end" ] }, { "cell_type": "code", "execution_count": 33, "id": "514f8bc1", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "dist_true = Normal(μ_true, σ_true) = Normal{Float64}(μ=10000.0, σ=100.0)\n", "n = 5\n" ] }, { "data": { "text/plain": [ "5-element Vector{Float64}:\n", " 10108.020838164251\n", " 10155.518276574256\n", " 10025.63825824536\n", " 9873.923285032452\n", " 9922.184234799222" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "μ_true, σ_true, n = 1e4, 1e2, 5\n", "@show dist_true = Normal(μ_true, σ_true) n\n", "y = rand(Normal(μ_true, σ_true), n)" ] }, { "cell_type": "code", "execution_count": 34, "id": "a8d4e4b5", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Info: Found initial step size\n", "│ ϵ = 0.0001953125\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Info: Found initial step size\n", "│ ϵ = 0.0001953125\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Info: Found initial step size\n", "│ ϵ = 0.000390625\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n", "┌ Info: Found initial step size\n", "│ ϵ = 0.000390625\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Info: Found initial step size\n", "│ ϵ = 0.0001953125\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n", "┌ Info: Found initial step size\n", "│ ϵ = 0.0001953125\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Info: Found initial step size\n", "│ ϵ = 9.765625e-5\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Info: Found initial step size\n", "│ ϵ = 4.8828125e-5\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Info: Found initial step size\n", "│ ϵ = 4.8828125e-5\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n", "┌ Info: Found initial step size\n", "│ ϵ = 4.8828125e-5\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, true, true, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "\u001b[32mSampling (10 threads): 100%|████████████████████████████| Time: 0:00:01\u001b[39m\n" ] } ], "source": [ "L = 10^5\n", "n_threads = min(Threads.nthreads(), 10)\n", "chn = sample(normaldistmodel_flat(y), NUTS(), MCMCThreads(), L, n_threads);" ] }, { "cell_type": "code", "execution_count": 35, "id": "ebc62a8f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Chains MCMC chain (100000×14×10 Array{Float64, 3}):\n", "\n", "Iterations = 1001:1:101000\n", "Number of chains = 10\n", "Samples per chain = 100000\n", "Wall duration = 17.9 seconds\n", "Compute duration = 163.47 seconds\n", "parameters = σ², μ\n", "internals = lp, n_steps, is_accept, acceptance_rate, log_density, hamiltonian_energy, hamiltonian_energy_error, max_hamiltonian_energy_error, tree_depth, numerical_error, step_size, nom_step_size\n", "\n", "Summary Statistics\n", " \u001b[1m parameters \u001b[0m \u001b[1m mean \u001b[0m \u001b[1m std \u001b[0m \u001b[1m naive_se \u001b[0m \u001b[1m mcse \u001b[0m \u001b[1m ess \u001b[0m \u001b[1m rhat \u001b[0m \u001b[1m ess_per_sec \u001b[0m\n", " \u001b[90m Symbol \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m\n", "\n", " σ² 29227.7665 180014.2432 180.0142 532.8373 114731.9787 1.0001 701.8448\n", " μ 10016.9103 77.8501 0.0779 0.1765 182480.9275 1.0000 1116.2825\n", "\n", "Quantiles\n", " \u001b[1m parameters \u001b[0m \u001b[1m 2.5% \u001b[0m \u001b[1m 25.0% \u001b[0m \u001b[1m 50.0% \u001b[0m \u001b[1m 75.0% \u001b[0m \u001b[1m 97.5% \u001b[0m\n", " \u001b[90m Symbol \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m\n", "\n", " σ² 5117.1201 10598.1820 16998.3379 29745.5589 118351.6627\n", " μ 9868.0050 9977.5443 10017.0374 10056.6491 10165.3243\n" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "chn" ] }, { "cell_type": "code", "execution_count": 36, "id": "b1dbf10f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "confint_ttest(y) = [9868.825378827085, 10165.288578299132]\n" ] } ], "source": [ "@show confint_ttest(y);" ] }, { "cell_type": "code", "execution_count": 37, "id": "3c63555a", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAfQAAAFeCAIAAAD8M3pVAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nOzdZ2AU1doH8Ge2t+ym996AJIQeOqEbuvQSqoKigKKigO0CKl4FL/cqIFKUdqm+IKGJCIgIiKEkoYSQ3ns2m02278z7YbzrmoQQyGYn2X1+n3ZnZ8882/6ZnDlzhqAoChBCCNkWFtMFIIQQsjwMd4QQskEY7gghZIMw3BFCyAZhuCOEkA3CcEcIIRuE4Y4QQjYIwx0hhGwQhjtCCNkgDHeEELJBHKYLsLZvvvnmwoULTFeBbIFMJtuxYwfTVSDUOMLe5paZOHFiWFhYr169mC4EtW8URc2YMYMkSaYLQahxdrfnDgD9+vV7/vnnma4CtW90uDNdBUKPhX3uCCFkgzDcEULIBmG4I4SQDcJwRwghG4ThjhBCNgjDHSGEbBCGu5V89dVXq1ev1mq1piXbt29ftWpVTU0NfVelUm3ZsmXmzJmzZs36+OOPi4uLASA1NXXVqlWnT582PSs7O3vVqlXHjh0zLUlMTFy2bNmUKVOWLFmSkJBg2RMXNBpNcnLyUz3lzJkzkyZNsmANjx49io2N9fDw2LNnjwWbRci2YbhbyZ49ezZv3pyQkEDflcvl77333meffVZbWwsAVVVVvXv3Pnz48MiRI6dOnVpbWzts2DAAyMjI2LJlyzvvvGNq55tvvtmyZcuPP/5oujtkyBBnZ+d58+ZFR0dv2LBh9+7dFiw7Ly9v+PDhT/WUDh06zJ4924I1fPbZZ0OHDi0tLZ03b54Fm0XIttnjSUxMmTx58p49e6ZOnQoABw8eHDt2rCmIV69e7ejoeOnSJTabDQATJ05cvnw5/VBAQIBQKExMTOzVq5fRaDx06ND48ePph/Ly8pYtW3bq1KmRI0fSSxYtWlRRUWG+0dra2qNHj44cOXLv3r0CgWDWrFkeHh70Q/fu3Tt9+jSHw3n++edDQkIAgCTJEydO3Llzh8vl9u/ff+jQoT/88INGo9m+fTsAzJo1SyKRFBcXHz9+vLKyctiwYf369QOAkpKSX3/9tWfPngcPHuzatWtkZKRAIKA3YTAYDh8+nJ6e3rFjx6lTp9Kv7v/+7/969ep18eLFzMzMjz76yLxatVp94MCB/Pz8Hj16jBs3DgBOnz6dmJgIANu3b6cLoNfU6XS7d+9etGgRQRAAcO7cuaCgoPDwcEt9WAi1d7jnbj1xcXEpKSl0f8vu3bvnz59PL6co6vvvv1+2bBmdfTRPT0/T7fnz59M9EufOnYuMjPTz86OX//DDD2FhYaZkBwAWi+Xu7m6+0crKyldeeWXmzJmOjo4ZGRm9e/eurq4GgB9//HHo0KEEQSiVyt69e9MB+vnnn2/YsCEoKMjZ2fns2bMAoFQqKYqSy+VyuZwkyfv37/ft27ekpMTFxWXhwoXfffcdAGRmZi5dunTBggVCoZDFYt2+fXvDhg306xo9evS+ffs8PDy2b99u6qv56KOPxo4de//+fZlMZl6qVqvt27fvTz/95OHhsWbNmiVLlgBAbW2tTqerq6uTy+XmPU4ajebll182nf3/9ddfX7t27Zk/GoRsj73vud+uoFYmGluj5X/2YvdwJcyXsNnsGTNm7N+/f8yYMXV1dab5bWpra6uqquh950bNnDkzKirqiy++2L1797x5827fvk0vz83NDQ4OfmIlWq1248aNMTExAJCfn79z584VK1a8//77//znP1944QUA4HK569atO3ny5O+//z537twFCxaYnjtnzpxt27atXLmSvvv++++/+eabr732GgAMGDBg3Lhx9MrV1dWHDh3y8vICANPxgAsXLqSmpmZmZvJ4vPnz5wcEBPz2228DBgwAgKlTp37wwQf16jx48CCHwzl8+DAATJo0KSgoaMWKFdOnT9+7d+/YsWMt29WDkM2z93APdCBWRrOfvN4ztdxw4fz586dOnVpWVmbabQcAPp/PYrGUSuXjmnJ2dh4wYMCePXt+++23vXv3msJdKBQ28SwTLpfbs2dP+na/fv3u3btHUdSDBw/onAWAgQMH0rMbvvzyyzNnztyzZ8/o0aNffPFFb2/vek3dvn27oKDg5MmTAECSZH5+vkqlAgA/Pz862c3du3cvJiaGx+PRpfbs2fPevXv0RhuduO3+/fv9+/enb3t4eISGht6/fz8oKOiJLxAh1JC9h7szH4b7NJLCrSQiIkIsFm/fvv3hw4emhTweLzo6+urVq4MHD37cExcsWDB16tR58+aZurMBoFevXlu3blUqlQ4ODk1s1GAw6PV6Pp8PAGq1WigUEgQhEAg0Gg29glqtFolEADBq1Kji4uJffvnlwIEDPXr0yMrKqteUQCBYvnx53759zZcA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" }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "postμ_theoretical = posterior_μ_flat(y)\n", "plot_posterior_μ(chn, y, postμ_theoretical)" ] }, { "cell_type": "code", "execution_count": 38, "id": "4015869a", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAfQAAAFeCAIAAAD8M3pVAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nOzdd1xTV/sA8OdmkYQAAcIeMlUQEHCBC7Vqsa5aEau2VWsVX2vtcLS+tdr6e1tXW7V9ra2jTlzV2rrHax211lkHMhRlySYQIHve3x/XNy9FxICQm/F8P/5xc3LuOc+NycPNybnnEiRJAkIIIdvCoDsAhBBCbQ+TO0II2SBM7gghZIMwuSOEkA3C5I4QQjYIkztCCNkgTO4IIWSDMLkjhJANwuSOEEI2CJM7QgjZIBbdAdBAo9FMmzZNrVbTHQiyEcOGDZs6dSrdUSD0N4Qdri0jFotDQkI2b95MdyDIFvzxxx+VlZW7du2iOxCE/sYez9wBwMHBYdy4cXRHgWyBTqc7fPgw3VEg1BiOuSOEkA3C5I4QQjYIkztCCNkgTO4IIWSDMLkjhJANwuSOEEI2CJO7+Wzfvv2jjz6qrKw0luzbt++jjz4qKiqiHmq12q1bt77++uuvvvrqokWLHj58CAClpaUfffRRw2nUNTU1H3300Y8//mgsycnJmT9/fkpKSlpaWnp6uk6na4/4z549+8ILLwCAwWDw9PSUy+VNVpPL5ZmZmcaHixcvXrlyZXvEgxBqBiZ38zl48OC6det27NhBPdTpdHPnzl27dm1paSkAqFSqIUOGrF69un///hMnTuRwOL179zYYDJWVlatXr543b55Go6F23L1797p163766Sfq4aFDh7p3767X6ydNmtSrV6/du3d/8cUX7RG/VquVSqUAQBDExx9/zOFwmqx2586dsWPHGh8OHjy4f//+7REPQqgZdnoRE13GjRu3devWuXPnAsCJEydiY2MvX75MPfXVV1+VlJRkZGRwuVwAGDVqVFpaGkEQAODg4JCYmHjkyJFXXnkFALZu3ZqSklJeXg4AUql0ypQpa9aseeutt6h23nzzTeqphjZs2DBy5Mhdu3bp9frU1NSgoCAAuHnzJnX2ffLkyYkTJ0ZERFy+fPns2bN8Pj81NdXHx4fa99q1a8ePH/fz8/P29jY26OjoaNy+e/fuiRMnZDJZQkJCcnLyr7/+Wltbu2HDBioYBwcHNptN1ayurt63b19VVVX//v0HDBgAABqNZuvWrWPHjt26datarX711VdDQkLa8hVHyF7hmbtZdenShcPh/PXXXwCwdevWKVOmGJ/av3//zJkzqcxO8fLyopI7AEyZMmXr1q0AkJmZqVQqu3XrRpWfOXOGJMlGC5s0zMIAQJJkWlramDFj2Gx2bW1tr1698vPzAeDYsWNTp05dtWqVSCTS6/Vr1qyZPn26s7NzTU1Nz549i4uLAeD48eMjRoxwdnYuLCycN28e1aDBYJg+fbpKpQKA9PT0oUOHajQaLy+vPXv2AIBUKjUYDBKJRCKRkCS5Z8+eX375BQDEYnFcXFxGRoarq+u0adNWrVoFACqVKi0tbeLEiQBQWVmZmJhIfTlACD0nPHMHAPjnNf01cduvsTOjM2NccOM/n1SaDgoKunTpUnp6urG8sLAwNDT0aU0NGzZs1qxZ5eXlW7ZsaZjKCwsLO3TowGQynxnMvHnzUlJSAKCurm7NmjVr164FAB6P98svvxAEIZFIFi9enJOT4+vrCwBarfbf//738uXLly5d+uWXX77++usAoFQqz58/37BNg8Hw7rvv7t+/nzoN/8c//gEAr7322pkzZz788MNGAXz77be9evX67rvvAKBv3779+vWbPXs29dSnn36amJgIABcvXvz9999feumlZx4OQqh5mNwBAMaFMAb5tn2z4S5NFE6aNCkqKiowMDAlJcXBwcFYzuVymzlpZbFY48eP3759+969e69du7Z//36qnMfjmXiqm5CQQG307t3b+GNsjx49qC8HWVlZGo1m8uTJVHlZWVlYWBgA3L17t+GOjZJ7UVGRVCrt16+fKQFkZmb27duX2o6LiyMIIi8vLyAgAADi4+Opcj8/v6qqKlNaQwg1D5M7AECcO2G2vtzc3Hr37v3pp582SpQ9evS4ePEidY7cpClTpiQkJAwcOLDhqEv37t2LiooePXpEZclmUKMoAKBUKnk8HrVt/OvC5XIFAsEPP/xgrM/n8wGAx+M13LFRm3w+X6fTabVaU746NGxKr9drNBpjGMbdCcIelylFqD3gmDsNli5d+u9//9s4bk6ZN2/e9u3bjesL6nS6FStWGAwGY4WoqKj169c3mgkTHx8/aNCgGTNm1NbWUiVZWVk///zzk51SA+IGg2Hfvn1PTl/p0qULn8+/detWSEhISEhIcHAwNRmmf//+1I4kSe7du7fRXp6enl27dv3++++ph9R8HqFQKJFIGkZO6d+//08//UQto79n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" }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pred_theoretical = preddist_flat(y)\n", "plot_preddist(chn, y, pred_theoretical)" ] }, { "cell_type": "markdown", "id": "5876cd35", "metadata": {}, "source": [ "### 通常の信頼区間と予測区間との比較\n", "\n", "通常の $t$ 分布を使う平均の信頼区間と次の値の予測区間の構成では以下を使う:\n", "\n", "$$\n", "\\frac{\\ybar - \\mu}{s\\big/\\!\\sqrt{n}} \\sim\n", "\\op{TDist}(n-1), \\quad\n", "\\frac{y_\\op{new} - \\ybar}{s\\sqrt{1+1/n}} \\sim\n", "\\op{TDist}(n-1).\n", "$$\n", "\n", "ここで, $s^2$ はデータの数値の不偏分散であり, $s$ はその平方根である.\n", "\n", "したがって, 前節の結果と比較すると, 通常の信頼区間と予測区間は, 平均と対数分散に関する一様事前分布に関する事後分布と予測分布を用いた区間推定に一致する." ] }, { "cell_type": "markdown", "id": "3f5eb700", "metadata": {}, "source": [ "### データの数値から事前分布を決めた場合\n", "\n", "$a,b>0$ であると仮定する.\n", "\n", "データの数値から共役事前分布のパラメータを次の条件によって決めたと仮定する:\n", "\n", "$$\n", "E[\\mu] = \\mu_* = \\ybar, \\quad\n", "E[v] = \\frac{\\theta}{\\kappa-1} = \\sigmahat^2, \\quad\n", "\\var(\\mu) = v_* E[v] = a\\sigmahat^2, \\quad\n", "\\var(v) = \\frac{E[v]^2}{\\kappa-2} = b\\sigmahat^4.\n", "$$\n", "\n", "これは次と同値である:\n", "\n", "$$\n", "\\mu_* = \\ybar, \\quad\n", "v_* = a, \\quad\n", "\\kappa = 2 + \\frac{1}{b}, \\quad\n", "\\theta = \\sigmahat^2\\left(1 + \\frac{1}{b}\\right).\n", "$$\n", "\n", "このパラメータ値に対応する共役事前分布を以下では __適応事前分布__ (adaptive prior)と呼ぶことにする(注意: ここだけの用語).\n", "\n", "これのBayes更新の結果は以下のようになる:\n", "\n", "$$\n", "\\begin{alignedat}{2}\n", "&\n", "\\tilde\\kappa = 2 + \\frac{1}{b} + \\frac{n}{2} =\n", "\\frac{n}{2}\\left(1 + \\frac{2(2+1/b)}{n}\\right)\n", "& &\n", "\\to 2 + \\frac{n}{2},\n", "\\\\ &\n", "\\tilde\\theta =\n", "\\sigmahat^2\\left(1 + \\frac{1}{b} + \\frac{n}{2}\\right) + \\frac{n}{2}\\frac{(\\ybar - \\ybar)^2}{1+na} =\n", "\\frac{n\\sigmahat^2}{2}\\left(1 + \\frac{2(1+1/b))}{n}\\right)\n", "& &\n", "\\to \\sigmahat^2\\left(1 + \\frac{n}{2}\\right),\n", "\\\\ &\n", "\\tilde\\mu_* = \\frac{\\ybar+nv_*\\ybar}{1+nv_*} =\n", "\\ybar\n", "& &\n", "\\to \\ybar,\n", "\\\\ &\n", "\\tilde v_* = \\frac{a}{1+na} =\n", "\\frac{1}{n}\\frac{1}{1+1/(na)}\n", "& &\n", "\\to \\frac{1}{n}.\n", "\\end{alignedat}\n", "$$\n", "\n", "以上における $\\to$ は $a\\to\\infty$, $b\\to\\infty$ での極限を意味する.\n", "\n", "適応事前分布の構成のポイントは, $\\mu_* = \\ybar$ となっているおかげで, $\\tilde\\mu_*$ も $\\tilde\\mu_* = \\ybar$ となってバイアスが消え, さらに, $\\tilde\\theta$ の中の $\\ds\\frac{n}{2}\\frac{(\\ybar - \\mu_*)^2}{1+na}$ の項が消えて, 区間推定の幅が無用に広くならずに済むことである.\n", "\n", "ただし, 適応事前分布の場合には \n", "\n", "$$\n", "\\frac{\\tilde\\theta}{\\tilde\\kappa} =\n", "\\sigmahat^2\\frac{1 + 2(1+1/b)/n}{1 + 2(2+1/b)/n} < \\sigmahat^2, \\quad\n", "v_* = \\frac{1}{n}\\frac{1}{1+1/(na)} < \\frac{1}{n}\n", "$$\n", "\n", "なので, 区間推定の幅はJeffreys事前分布の場合よりも少し狭くなる.\n", "\n", "しかし, $n$ が大きければそれらの違いは小さくなる." ] }, { "cell_type": "code", "execution_count": 39, "id": "031f8dbf", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "posterior_adaptive (generic function with 2 methods)" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "function prior_adaptive(n, ȳ, σ̂²; a = 2.5, b = 2.5)\n", " μstar = ȳ\n", " vstar = a\n", " κ = 2 + 1/b\n", " θ = σ̂²*(1 + 1/b)\n", " μstar, vstar, κ, θ\n", "end\n", "\n", "function prior_adaptive(y; a = 2.5, b = 2.5)\n", " n, ȳ, σ̂² = length(y), mean(y), var(y; corrected=false)\n", " prior_adaptive(n, ȳ, σ̂²; a, b)\n", "end\n", "\n", "function posterior_adaptive(n, ȳ, σ̂²; a = 2.5, b = 2.5)\n", " μstar = ȳ\n", " vstar = 1/(1/a + n)\n", " κ = 2 + 1/b + n/2\n", " θ = σ̂²*(1 + 1/b + n/2)\n", " μstar, vstar, κ, θ\n", "end\n", "\n", "function posterior_adaptive(y; a = 2.5, b = 2.5)\n", " n, ȳ, σ̂² = length(y), mean(y), var(y; corrected=false)\n", " posterior_adaptive(n, ȳ, σ̂²; a, b)\n", "end" ] }, { "cell_type": "code", "execution_count": 40, "id": "287c5712", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "dist_true = Normal(μ_true, σ_true) = Normal{Float64}(μ=10000.0, σ=100.0)\n", "n = 5\n" ] }, { "data": { "text/plain": [ "5-element Vector{Float64}:\n", " 10139.744551661583\n", " 10060.228608645126\n", " 10072.121209420195\n", " 9760.871797333557\n", " 10019.941184983956" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "μ_true, σ_true, n = 1e4, 1e2, 5\n", "@show dist_true = Normal(μ_true, σ_true) n\n", "y = rand(Normal(μ_true, σ_true), n)" ] }, { "cell_type": "code", "execution_count": 41, "id": "112b0382", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(5, 10010.581470408884, 17075.520891126696)" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "n, ȳ, σ̂² = length(y), mean(y), var(y; corrected=false)" ] }, { "cell_type": "code", "execution_count": 42, "id": "a5df102c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(ȳ, σ̂², a * σ̂², b * σ̂² ^ 2) = (10010.581470408884, 17075.520891126696, 42688.80222781674, 7.289335342582606e8)\n" ] }, { "data": { "text/plain": [ "(true, true, true, true)" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "μstar, vstar, κ, θ = prior_adaptive(y)\n", "a, b = 2.5, 2.5\n", "@show ȳ, σ̂², a*σ̂², b*σ̂²^2\n", "(ȳ, σ̂², a*σ̂², b*σ̂²^2) .≈ (μstar, θ/(κ - 1), (θ/(κ - 1))*vstar, (θ/(κ - 1))^2/(κ - 2))" ] }, { "cell_type": "code", "execution_count": 43, "id": "49ba49c0", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(10010.581470408884, 0.18518518518518517, 4.9, 66594.53147539412)" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "posterior_adaptive(n, ȳ, σ̂²)" ] }, { "cell_type": "code", "execution_count": 44, "id": "e7111516", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(10010.581470408884, 0.18518518518518517, 4.9, 66594.53147539412)" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bayesian_update(prior_adaptive(y)..., y)" ] }, { "cell_type": "code", "execution_count": 45, "id": "633f1d86", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(10010.581470408884, 0.18518518518518517, 4.9, 66594.53147539412)" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "posterior_adaptive(y)" ] }, { "cell_type": "code", "execution_count": 46, "id": "6b131f11", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(true, true, true, true)" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "posterior_adaptive(y) .≈ bayesian_update(prior_adaptive(y)..., y)" ] }, { "cell_type": "markdown", "id": "704d6372", "metadata": {}, "source": [ "### n = 5 では適応事前分布の場合と無情報事前分布の場合の結果が結構違う." ] }, { "cell_type": "code", "execution_count": 47, "id": "fa920a14", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "normaldistmodel_adaptive (generic function with 2 methods)" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "@model function normaldistmodel_adaptive(y; a = 2.5, b = 2.5)\n", " μstar, vstar, κ, θ = prior_adaptive(y; a, b)\n", " σ² ~ InverseGamma(κ, θ)\n", " μ ~ Normal(μstar, √(vstar * σ²))\n", " y ~ MvNormal(fill(μ, length(y)), σ²*I)\n", "end" ] }, { "cell_type": "code", "execution_count": 48, "id": "3af7c8ad", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "dist_true = Normal(μ_true, σ_true) = Normal{Float64}(μ=10000.0, σ=100.0)\n", "n = 5\n" ] }, { "data": { "text/plain": [ "5-element Vector{Float64}:\n", " 9933.804443506962\n", " 9928.461031727456\n", " 10090.805438322303\n", " 9961.11410617526\n", " 10159.51959338753" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "μ_true, σ_true, n = 1e4, 1e2, 5\n", "@show dist_true = Normal(μ_true, σ_true) n\n", "y = rand(Normal(μ_true, σ_true), n)" ] }, { "cell_type": "code", "execution_count": 49, "id": "7b9e23f8", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Info: Found initial step size\n", "│ ϵ = 0.0001953125\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Info: Found initial step size\n", "│ ϵ = 9.765625e-5\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n", "┌ Info: Found initial step size\n", "│ ϵ = 0.000390625\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Info: Found initial step size\n", "│ ϵ = 9.765625e-5\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n", "┌ Info: Found initial step size\n", "│ ϵ = 0.000390625\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n", "┌ Info: Found initial step size\n", "│ ϵ = 9.765625e-5\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n", "┌ Info: Found initial step size\n", "│ ϵ = 9.765625e-5\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Info: Found initial step size\n", "│ ϵ = 9.765625e-5\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n", "┌ Info: Found initial step size\n", "│ ϵ = 4.8828125e-5\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n", "┌ Info: Found initial step size\n", "│ ϵ = 4.8828125e-5\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n", "\u001b[32mSampling (10 threads): 100%|████████████████████████████| Time: 0:00:01\u001b[39m\n" ] } ], "source": [ "L = 10^5\n", "n_threads = min(Threads.nthreads(), 10)\n", "chn = sample(normaldistmodel_adaptive(y), NUTS(), MCMCThreads(), L, n_threads);" ] }, { "cell_type": "code", "execution_count": 50, "id": "9e67a8cc", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Chains MCMC chain (100000×14×10 Array{Float64, 3}):\n", "\n", "Iterations = 1001:1:101000\n", "Number of chains = 10\n", "Samples per chain = 100000\n", "Wall duration = 19.27 seconds\n", "Compute duration = 169.31 seconds\n", "parameters = σ², μ\n", "internals = lp, n_steps, is_accept, acceptance_rate, log_density, hamiltonian_energy, hamiltonian_energy_error, max_hamiltonian_energy_error, tree_depth, numerical_error, step_size, nom_step_size\n", "\n", "Summary Statistics\n", " \u001b[1m parameters \u001b[0m \u001b[1m mean \u001b[0m \u001b[1m std \u001b[0m \u001b[1m naive_se \u001b[0m \u001b[1m mcse \u001b[0m \u001b[1m ess \u001b[0m \u001b[1m rhat \u001b[0m \u001b[1m ess_per_sec \u001b[0m\n", " \u001b[90m Symbol \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m\n", "\n", " σ² 8721.2039 5089.0278 5.0890 7.0544 493919.9453 1.0000 2917.2521\n", " μ 10014.7144 40.2007 0.0402 0.0509 636961.0189 1.0000 3762.0992\n", "\n", "Quantiles\n", " \u001b[1m parameters \u001b[0m \u001b[1m 2.5% \u001b[0m \u001b[1m 25.0% \u001b[0m \u001b[1m 50.0% \u001b[0m \u001b[1m 75.0% \u001b[0m \u001b[1m 97.5% \u001b[0m\n", " \u001b[90m Symbol \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m\n", "\n", " σ² 3365.9838 5525.6441 7442.9868 10367.6196 21678.5083\n", " μ 9934.5279 9989.6082 10014.6436 10039.7659 10095.0421\n" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "chn" ] }, { "cell_type": "code", "execution_count": 51, "id": "29f56b0b", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "confint_ttest(y) = [9885.081467238768, 10144.400378009035]\n" ] } ], "source": [ "@show confint_ttest(y);" ] }, { "cell_type": "code", "execution_count": 52, "id": "34c3393b", "metadata": { "scrolled": false }, "outputs": [ { "data": { "image/png": "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" }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ "postμ_theoretical = posterior_μ(posterior_adaptive(y)...)\n", "plot_posterior_μ(chn, y, postμ_theoretical)" ] }, { "cell_type": "code", "execution_count": 53, "id": "c48a30bc", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAfQAAAFeCAIAAAD8M3pVAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nOzdZ0BT19sA8JNNwgbZe28BQcGBqLjFvbWibdVKndXWorW1ddXW1ldtba2zzqLgwlnrwIWCsrfsvTchISS574frP6XMMJKbhOf36Y5zz30uJE9uTs45l4RhGAIAAKBYyEQHAAAAoP9BcgcAAAUEyR0AABQQJHcAAFBAkNwBAEABQXIHAAAFBMkdAAAUECR3AABQQJDcAQBAAUFyBwAABUQlOgDpSUhI2LNnD9FRAMWhrq5+4sQJoqMAoGMDKLknJiaWlJRs2LCB6ECAIsAwbNGiRZDcgcwaQMkdIWRmZjZ//nyiowCKAE/uREcBQKegzR0AABQQJHcAAFBAkNwBAEABQXIHAAAFBMkdAAAUECR3AABQQJDcJS48PDwoKOjt27eiLa9fvw4KCnrx4oVoy71791atWjVv3rzNmzdHRETgG3fs2LF///7WVe3Zs+fbb78VrVZUVOzbt2/+/PnLly8/fPhwfX29JOJvaGjQ0tISCAQIoYkTJz59+rSzktHR0XgxhNDNmzcXLFggiXgAAOKA5C5xr1+/Pnr06I8//ijasnfv3qNHj4rS/aZNm1asWGFvb79ixQpTU9OPP/44KioKIfTzzz/v3bs3OTkZLxYdHf3DDz8cPnwYX01LSxs8eHBsbOzcuXOnTp2akpKydOlSScSPYVhNTQ2+/NFHH1laWnZWzNPTU/QB4+jouGTJEknEAwAQx8AaxEQUPz+/ly9fVlVVaWtrl5WVxcXFjRw5Et/18OHDY8eOpaSkiJLmmjVruFwuvjx37txz58798MMPCKE///xz3rx5N27cwHetXr162rRpJ0+exFcXLlxYWlra5rw3btwYPHhweHh4QUHBlClThg0bhhAqKiqKjIx0cXEJDg728vKaOHFiVlbWrVu3OByOv7+/i4sLfmxubu6VK1coFMrcuXNFFTKZTAqFgi+XlJTcuHGjuLjYwcFh7ty5d+/eRQidPXuWxWL5+/tTqVQlJSW8ZEtLS3BwcFZWlqOj47x588hkMkIoJCRk+PDhDx48yMvLmzJlire3d//9vQEAcOcuFQwGY9asWZcvX0YInTt3bvHixTQaDd8VGho6Y8aM1rfDSkpKGhoa+HJAQMClS5f4fD6Px7t27drChQvx7aWlpc+fP//ss89an0VfX7/Neffv3z916tTc3Fx1dfXp06fj+TctLW3t2rUrV65UUVEhkUiPHz/28/PjcrksFmv69On//PMPQig3N9fb27u2tpZGoy1evFhU4e7du/FvEnFxce7u7pmZmaamps+ePSsqKmpoaEAI1dbW1tTUtLS0REVFHTx4ECGEYdikSZOCg4P19PSOHj0quoRvv/121qxZeXl5SkpKkydPjo6O7qc/NgAAoQF+5z7noaChBev3aqcYkze7tP3UXL58+fr16z/99NPz589fvHhx+/bt+Pa8vDxXV9fOqtLT03N1df3777+bmppGjhw5aNAg0VEIoc5aSFrz9/fftWsXQkhbW/u7776bOnUqQqi2tvbq1at4bW5ubr/88sv06dMRQubm5nv37p0wYcLhw4fnzZu3b98+hJCRkdG8efPaVLtt27ZNmzYFBQUhhFatWoUQsrCwWL58+caNGzU1NRFCr1+/xkvev38/JycnIyODSqUGBASYmppGRUXh3yE++OCDTZs2IYQKCwtv3rzp4eHR7eUAAMQ0oJP7Ridyi7D/qzVS7mDjsGHDOBzOqVOnlJSURE0fCCElJSX8nrczy5cvP3v2bFNTU2BgoGgjk8lECDU2NuILXRg+fDi+MGLEiDVr1uDLlpaWeGbn8XhJSUkHDhw4cuQIQojNZufk5CCEkpKSVqxYITqwfbVxcXH4Z0a3kpKSvLy8qFQqQkhZWXnIkCFJSUl4cnd3d8fLGBsb5+fni1MbAEBMAzq5+xqQpHm6gICAjRs3tv5lFSE0dOjQkJAQDMNIpI6DmTFjxsaNGykUyqRJk+Li4vCNdnZ2qqqqL168mD17dtcnFTXfczgc0ScBg8HAFygUCo1G2717t4mJCb4FbxBnMpmtD2xfLYvF6nB7e62rwmtjsViis4tTAwCgF6DNXXpWrFhx8ODBNn1IPv7448LCwj179giF779EXLt2LSUlRVSAwWCcOXPmzz//xG9+RRs3bdr05ZdfZmRk4FsqKyuPHTvW/qSXL1/GMAwhFBwc7Ovr22YvhUKZMGHCnTt3LP9HVVUVITR69OgrV67gIQUHB7evduLEiceOHcMLCIVCPp9PIpHU1dWrq6vblPTx8Xny5ElxcTFCKC0tLS4uTvRlAgAgOQP6zl3KBg0atHr16jYb9fT07t+/v3z58j/++MPa2jonJ8fY2Bj/6VVk0qRJ7Wv75ptvuFyuh4eHra0tmUzOy8sTteO3RqPRvL29VVVVs7KyHjx40L7Ab7/9tnDhQjc3Nysrq6ysLG9v72PHjgUGBt6+fdvDw0NHR0dLS6v9UXv27Jk/f76Li4utrW1ycvK9e/esrKzWrl07cuRIY2Pj33//XVTS1dX1yy+/9PT09PDwiIqKOnDggJmZmTh/LgBAX5Dw27qB4OLFi/fu3btw4YKUz8vlcgUCgbLyf1riGxsbaTSaqHkEIfTu3buKigozMzNjY2N8S21traqqauu2C4FA0NDQIOpLgxBqaGhITk5mMpm2trbt29+9vb137tzp4uJSUlLi4uKC903k8/lNTU1qamqiYhiG5ebmlpSUmJqais4uEAhSUlKoVKq9vX1tbS3+M2l1dbWKigqdTsePysnJKS0ttbOz09bWxo/i8XhsNltVVVUgEHA4HFGolZWVWVlZtra2eD0Iofr6ehaLhX8d4XK5QqFQ1FwjFzAMo1Aoou9bAMgaSO6KDE/uU6ZMIToQBQTJHcg4aHNXZMuWLROnuyQAQPFAm7siW7t2LdEhAACIAXfu0hAfH493F0EI1dXVaWlpSfrrPI/He/TokWj1xIkTH330UY9qCA0N7bafZa9t2bLl0KFDCKHr16/PnDmzs2IZGRmZmZmiVUdHx6SkJAmFBICCgeQuDd9+++39+/fx5dbzcElOXV1d6z42I0eOXLZsWY9qaGlpEbMney80NTXhnd/d3NxEQ6vaO3HixOnTp0Wr33zzjaGhoYRCAkDBQLOMxMXFxeXm5j59+pTP5zs5OTk5OSGEysrKTp06xeFwli9fbmtri5fE5+qqra2dOHHimDFj8I1VVVVnz54tLy8fPnw4fpOLYdiJEyemTZt27tw5BoOxefPmqqqqixcvFhUVeXl5zZkzByF048YNDMOOHz+OEJo3b55AIODxeHiFLS0tly5dSkpK0tDQWLBggY2NTUFBwY0bN3Jzc/X19QMCAvT09Dq7lpycnOTk5EGDBl29etXExGTlypV4F5dr1665ubndu3cvKyvr4MGDPB7v4sWLqampNjY2y5cvx3vXCASCs2fPJicn+/n5iSpsHZhQKLxy5UpsbKyysvLs2bNVVFTi4+PJZPLx48dNTEymTJmCd6rBC79+/fru3bsMBmPu3Ln29vYIofT09NzcXA0NjdDQUAMDgzVr1shX9xsA+hfcuRPjww8/1NHREQgEI0aMwKfJffv2LT7IyNbWdt26dfgda01Njbu7e25urp2d3TfffIPP5YJh2CeffLJgwQIGg2FgYFBcXOzp6VlWVubi4nLkyBG8TBvPnj07e/YsQojP548dOzY0NHTw4MFMJhOfU/7evXuNjY1Dhw6tqqry8PDoYl746Ojo1atX79q1y9XV9cWLF5MnT8Z7W+3du9ff37+srMzCwoLP548ZM+b58+eDBw9++fLl1KlT8TKrVq06f/68u7v7xYsX8SnMEEIxMTFHjx7FL2rWrFnHjx93cHDQ0tIKDw9vf/adO3cWFRUhhEJCQubMmaOvr08mk0eNGoVPnhwREbF69eoDBw44Ojo+ePBANH0CAAPTgL5zrzj6JcZtarORZmipufjf2Rab38XV3TrV/li1yR8oOXmJVmtDf+XlpePLSi4j1Cb+O5Oim5ububm5r68v3updW1uLENq3b9+QIUMQQg8fPoyIiJg8efJXX321c+dOvIyrq+v8+fM/+uijY8eOubq64hO/+Pr6Ojo6bt26Fe88vmPHDryP44YNGxYsWLB3716EkL+/v5GR0c6dO2fNmhUYGNh+zNTly5fr6+ufPXuGTzOAw4sJBIJJkyYlJCTcvXt30aJFnf3Rmpqarly5oqKisnjxYmtr6ydPnowbNw4htHjx4q+//hohdO7cOSUlJfzDaenSpS4uLq9evTIyMgoJCcnPz9fU1Fy6dKmjo2Obav/555/4+Ph379617vvv6upKpVLbX8U333xz+PDh+fPnI4R4PN6+ffuuXbuGEKJQKMHBwVQqdfz48XZ2dl1M6gCAwhvQyV1j1ieYUNBmI5nxn6FANGNrjQUb2h9L1fpP24WK72zh/z4nKMrq3Z5aNHeYgYFBZWUlQig2Nrauru6vv/5qbm5uaGjIycnh8/mpqamiic4tLS01NTUzMjKGDh2KEBLNoRgXF1dTUxMTE9PS0tLY2NjS0pKTk6Ojo9PheRMSEkaPHt06syOEwsPDN27cyOPxlJWV8/LyWjebtOfg4KCiooIQolAoHh4eKSkpeHJvHU9WVtaECRMwDKutrS0qKsrIyGhoaLCyssJHMJFIJPwS2gTm7e3dOrN3hs/nZ2RkiOYwGD58+KVLl/BlR0dHfFSUoaEhh8NpbGzEZ1MAYAAa0MmdZtR9H3AyS4XOsum2GFXHqEenFo07JZHejyNTVlbeuXNn62dWUCgUZWXlpqb3nxkYhjU1NeGJFSGEN2TjB86fP/+DDz4QHaimptZ+jhecqqpq+2d6rFix4tSpU3hOxxvou4iczWa3XhaNvG0dj5+f388//ywqxmKx3rx50+bA9oF1ODtm+0F2FApFSUlJVAObzRb9TWAmMgBEoM1dGjQ1NSsqKrou4+/vf/bsWVVVVU1NTU1NTQ6HQyKRxo0bFxISgme9kJAQdXV1G5u2nzTTpk27ePEinU4XHUihUNTV1TEMa5/ip0yZcuvWrdzcXHwV/+SoqqrCH/SRl5fX4fwzrSUnJ8fExOCFX758OXr06DYFpk6deufOncbGRjwehJBAIHB1da2urn716hVCqLi4+OHDh22OGj9+/IsXLxITE1sH1uHfjUQijR07Fm/2EQqFf/75Z9dfNQAYmAb0nbvUfPTRR0uXLj1+/Dg+62+HZfbu3fvhhx/a2NjY29vn5+c7Oztfvnx53rx5jx8/dnR0tLa2fvfu3YULF+h0eps+8oGBgenp6TY2NoMHD66srBQKhTExMXQ6fePGjU5OTiwW686dO6LCHh4eu3btGjZsmKura1VV1bx587Zv375169bx48e7ubmVl5d3+7g7V1fX9evXKysrx8bGfvvtt1ZWVm0KDB8+fOfOncOGDXNycuJyuQUFBREREUZGRn/88ceMGTPc3d3Ly8vx+dxbs7Ky+u2338aPH+/s7NzY2Dhy5MiDBw8uWLBg6tSplpaWvr6+Z86cERU+fPjwzJkznz59Wl9fb2BgsG3btm7/BQAMNDC3jPSw2WwSicRkMkXzcCGEGhsb6XS6qE2juro6Pz/f0NBQV1dXdGB1dXVpaamNjY3o4Xw1NTUaGhqtfy1saGjIzs7W1tYWzfyFEMJbvdXU1IRCoUAgED3UlMPhZGRkaGtrGxm9b00qKiqqqqpydHTk8XhkMllJSYnP57e0tLSZjCw0NPT3339/8OBBSkqKkZGRaMLI+vp6JpMpCg8hxOPxMjIyGAyGhYWFqLWksbExOzvbzs5OIBB0eBYej/fu3TtVVdXWM0dyOByBQKCiosJms5lMJv6DAYZh2dnZdDpdNBM9j8fj8XiiJpr2f6L+BXPLABkHyR30AJ7cW499HbAguQMZB23uoAfs7Oy66CUJAJAd0OYuH65fv85ms1t3iSGEi4tL6wfAAgBkFiR3KTl58iQ+FolGo0VHR/f08LCwMPwXRT6fP2zYsKtXr1pYWLQvtmXLlqKiIg0NjZ9++glvfQ4LC7t8+fLFixcRQuHh4S9evCgoKAgICBg5cqQ45y0tLb1z5058fLy6uvru3btb78rMzLx58+aWLVs6PPDgwYN1dXXfffcdQgjDsKFDh547d87R0fHRo0fnzp1rU1hbW/vgwYOBgYFCoZBEIunr61tbW8+YMUP0RBFDQ8PHjx/j0wy0kZ6e3tDQ4OnpKdpy6NChysrKPXv2iHOBbDb75s2bsbGx9fX1v/zyi+jHjzFjxvz888+izvsAyB1olpGSFStWREZGRkZGvnz5ss2urKys9l0DW4uJiXFzc8OXz5496+rq2mFmRwht27YtODiYxWKFhoYihDAM2759u+jxe8ePHy8tLf3777/T0tLaH1tfX//XX3+12RgZGXnv3r2Kioo2T/5DCAUHBzc2NnYWc2Bg4KlTp/DxWSQS6fPPP8cTvYmJycSJEydOnKiiovLkyRN8Ge9PefLkSRsbm7Fjx6qpqZ05c8bGxubNmzd4bb/++mtnU4aFhYW1fnhsU1PTgQMHNm/e3FlgbeTn51+4cKGpqen48eN8Pl+0fevWrTt27BCzEgBkETZgXLhwYenSpdI/b2Ji4sWLF0Wr8fHxly5dal0gJCRkyZIlXdSwefPm0tJSfNnT0/Phw4f4cllZ2Z49e1avXh0UFBQTE4NvrKio8PLyKi4uxjDs6dOn7u7ubWobMWLEyZMn258lKyvL3t6+wwDCwsJsbGzabPT09IyNjeVwOPv37y8pKfnyyy+3bNmSkJAgKrBy5cqffvoJX+ZwOFpaWiUlJaK9Fy5ccHFxaV0hlUqNi4sTrX766af29vZCoRDDsF9++aWyshLDsJKSkl27dq1evXrbtm3x8fEFBQVTp04dOnTo/v37z5w5g2HYmTNn5syZg9dQXFx87Nix9PT0TZs2BQUF5efnd3h1GIbl5eUhhNhstmgLn8/X19fPysrq7BD8S0ZnewEgHNy5S5yenl5gYKBoMM53331XUlLS9SGVlZVHjx7FpzJvaWmpq6vDZ2osLy9PSEgYMWIEXszf37+urm7WrFl4L3i8wKJFi06ePGlgYIAQunfvXvtBRv2iuLi4srLS1dW1qakpKCho7dq1jo6Oampqvr6++OQ5CKExY8aIJjpWUlJyd3fv+gtKG59//nlaWhp+XXv27CkvL0cITZo0icPhzJo1y9LSMiMjQ0lJSUtLS1VV1dLSEu/Wee/ePXz+NYRQYWFhUFDQjh07PD096+vrx48f3/Xg29YoFMqIESNE8QMgdwZ0m/umh181tbSdstxK0/xL7/eTybQI+afiL6xxX4GvVnKqt4d30JI7ztxnkcP751pk1uRk1GRPsfx3zKSOjs6UKVPOnz+P34A/ePAAb0YoKioqKytDCOXk5OCTwyCEGAyGk5NTdXV1cnJycXHx3r177927J3oIampqqpGRkahXeHJy8qlTp1r/wjlmzBgHB4cLFy5MmjRp7NixycnJEydO7PqPUFNTk5OTg8fD5XLxMBBCrq6uXYzmv3nz5vTp00W9yL/77jtnZ2eEUFhY2OvXrydPnowQsra2Tk5OFh1ibW2dkpLSdTCtmZqaUiiU4uJiOzs7fItAIEhNTQ0JCRFNkowQGjx4MIPBwCcRQwglJycvX75ctJfD4Rw/flxDQ2Px4sU6OjrZ2dnth/h2pqcBAyBTBnRyX+exUoC1vZVjUv8dtkMhUWbYTBatqtNVt3h92r4eTSUN0bKRqoFWq1VcYGDgJ5988tlnn50+fXrmzJn4rF6hoaH475w1NTU1NTX4MyuMjIyuX79ua2u7fv36KVOm7N69+9atW7/++iteT1NTk2ggEkJo9+7dI0aMcHZ2nj59+tq1a9XV1e/cuYNhGEIIH17E4XBal+9QVFQUPptjc3NzaWmp6NEZjx8/Fg0Iau/mzZtffPGFaFU0y6Oenl5VVRW+zGQyRRPjIIRYLFb7KWW6UFdXh49dEm2hUCi7du0aMmSIq6vrjBkzPv300/bzgrW5ZENDQ3wSTTKZrKurW1VVRSaT169fjxBSU1MLDg7uIgAmk4l/XQBAHg3o5G6t2fHPkiJkEslQRV+0SqPQ7LSsuz6ESVViUtvmU19fXxqN9uzZs9OnT4seLbRx40Z8KoLQ0NDr16/jiV7EwcFBW1s7LCxMVVVVNFeinp4e/hMlbvPmzYGBgU+ePDly5MirV69u3brV5odWPJ11HfCkSZPwZzZlZ2dPmzYtKiqq6/IIocbGxri4OB8fH9EW0TSTrUeEVlZWtn7uR0VFRfuZfrsQHh6uoqKCfyEQCQoK2rBhw+PHjw8dOvTmzZvQ0FDRzGu41p8urQMT0dfXx6craD2etkOVlZX4lDsAyCNoc5eS1atXr1y5kk6nt86JXVu2bNnq1asXLlwo2uLi4tLU1IQ/sKKlpaWgoIDJZE6dOnXdunX4T4JteHt7x8fH90v8rd29e9fPz0/Ua7AzcXFxrWeqiY+P73biGlx1dfWFCxcCAwN37NjRev6D5ubmoqIiFovl7+8fGBiIXzL+O62ojLe3d1xcXBeVKysr+/j4+Pj4dBuM+AEDIIMguUtJQEBAcXHx6tWrxZ/tZMmSJTo6Oq3n2KLRaHPmzMEnAmtubvby8nJ3dx87duy6des67NaNzzvW3NyMr86ZM4dEIkVERKxcuZJEIrWeUKwzUVFRJBJpxowZGRkZJBIJ/2S6efNmF0+1Frl165ZoOGteXl5VVdWoUaO6PmT06NGqqqo2NjanT58+cuTIl19+2Xovm80eOnTokCFDxo4du2XLll27diGEZs6cWVVVZWpqOn36dITQggULwsLCuo1NpLm5mUQi4VPZKCsri3rWV1RUpKenT5gwQfyqAJAtRHfXkR6iukLicnJy1NTUqqqqOtyLd/jr8Kg2W2JjYz09PfHyQqGwsLAwIyOjubm5s/MuX768dUfMrgkEgm7L8Hg8PT29urq6roulpqYOHjxYVOG2bdt+/PHH1gXwucx6GphQKCwoKMjMzOTxeJ0V9vHxiYiIELPmznz//fc7duzoogB0hQQyDu7cpeH8+fNLlixZvXq1aBrFNjq7nTc3N2+zxc3NbenSpXiLBIlEMjIysra27qKFZM+ePcXFxWLG2b6FusNQ37x5I7rD7UxSUtLRo0dFMzhiGIb/jNm6HnFO1yYwEolkbGxsZWXVRYv5kSNH0tPTxay5M2w2e+vWrX2sBAACwayQ0vD777+zWKzFixd3204N5AUGs0IC2Tage8tITWBgINEhAAAGFmiWAQAABQTJHQAAFBAkdwAAUECQ3AEAQAENoB9UzczMHj16ZGVlRXQgQEF0O4EBAAQaQF0hEUIFBQUtLS1ERwEUBJPJxKdWBkAGDazkDgAAAwS0uQMAgAKC5A4AAAoIkjsAACggSO4AAKCAILkDAIACguQOAAAKCJI7AAAoIEjuAACggGQiuZ8/f37jxo1ER9G9xsZGokOQKrhexcbhcAQCAdFRSE9LSwuPxyM6CumRieTe3Nzc1NREdBTdG2ijeeF6gSLBH/dIdBTSIxPJHQAAQP+C5A4AAAoIkjsAACggSO4AAKCABtDDOgAQH0+IIsuxIjamySD56JNY8EYB8gZeswD8R3ML/+8r179pHkHX1rNQJVVwhB8+5Bxr+NPng+WammpERweAuCC5A/CvwtKq9N92KTFUQgLG2Ji8f3dUNDBenKfl71uTs2jbEA8XYiMEQEzQ5g7Ae0Vl1YWHvuBaDZu4fY+NiY5ou44qffana+pnfU79a29kxFsCIwRAfJDcAUAIodoGTvnp72tcJk9bvhSRSO0L+Iwcwl38DfPaT2mpmdIPD4CeguQOAMIQevbbz7V6tlOWLuii2DAPx5IJn7L/3FVdUy+12ADoHUjuAKCwsMcajSUjP1jRbclJk0bnWfg8On9e8kEB0CfwgyoY6PIasbW1Xo9WudDpNHHKT1qxwvs6j5mP+Zt20HoDgIyAO3cw0G16JQwczLQz1em+KEIIIWUl2q9jWGsjBE18icYFQJ9AcgcD2sMiLKkG+9ylZ28EXwPSCD3Sz4lCCUUFQN9BcgcDlxBDW6ME+4eSGZQeH/u9J/lIsqC0aQBNIQvkCyR3MHA9eRq1oCBkjkVv3gXmqqTdzMg3p37p96gA6BeQ3MHAhT35a6STca9/FZ07ztUy93lxUVl/xgRAP+lBck9PTz979mxmZtsRHDwe79q1a2FhYaJHdhUWFp47dy4uLq51saSkpIiIiD6GC0B/efo8WrmlcdS4Ub2uQUdTNd12cuzN0H6MCoD+Im5yj4+PX7VqFYvFWrFiRWpqautdAQEB2dnZsbGx69atQwiVlZXNnj1bSUlp27Ztjx49wsvU1dV9+OGHP/30U/9GD0CvNT/+q3n0IlJHg1HF5zV7jnlWeHV1bX9FBUB/Ebef+8mTJ7du3erv708mk0+fPn3gwAF8e0lJSUFBQXBwMELI1dW1sbHxr7/++uCDDxYsWGBra7tr1y4/Pz+E0LZt2zZt2nT16lUJXQYAPRKTkKHFKR8yYUwf6zHS1YwyHZV3+87UgKX9ERcA/Ubc5J6dnW1lZYUQsrGxuXjxomh7Tk6OpaUlvmxqalpQUJCVlTVp0iSEkLW1dVZWFkLo8ePHenp6Tk5OXST3yMjIlStX4sv6+vo7duzo1eVIFpfLpdHEGueiGBT4evMe3KA7TeW1tKCWFtHG3l2v6bhplPPfNDTMpNHkbEggl8sVCoUUSs+7CsknHo+nMM/IptPpZHI37S7ivhwpFIpQKEQI8fn81m8AKpWKb0cICQQCKpUq2iIQCGg0GpfL3bdv34ULF969e8fj8ZqamlgsVvv6tbS0PDw88GVNTU3ZfMFRKBTZDExCFPV6Syrr7UojBwV81Obqene9g0fnCSUAACAASURBVO3NHqqYVT975TNxTL+FKBWU/yE6ECmhUCgYhinG9YrTnChucre3t09OTnZyckpJSbG3txdtt7KySk9PRwhhGJafn29sbIyXnDFjRnJysr29PZvN1tLS2rBhQ21tbUpKyrlz59asWdO+fhsbm8DAQDGDIQqNRlPUO9kOKer1XshnMLy/2KKr3WZ7r6+3Zca6X/JUx8nb3wq/UVOMZCcO/LZdIV/SHRI3ua9Zs2bJkiVZWVk3b94MCQlBCM2ZM2f37t1OTk4+Pj5r1qxpampauHAhk8lctGjR5MmTEUJ37tw5fPiwtrb2lStXEEJxcXG7du3qMLMDIDUCDP2WrXR/8rB+rHPyYKPVyS2Z9Zi1Gsw2A2QFSfwWqNra2qSkJBcXF3V1dYRQXl6evr4+g8HAMCwhIYFKpTo5OeElm5qaYmNjbWxsdHV1RYc3NTWVlJTgDfdtnDx5MjIy8sSJE32+HMlqaGhQVVUlOgrpUcjrvVuA7YoVvJ7RwW1NX67380gBg4L2esrTXTCHw6HT6QPnzh1vc2cwGEQHIiU9+AlIQ0Nj1Kh/OwWbmZnhCyQSydXVtXVJFos1cuTINoezWKwOMzsA0nTmnfBD2/4fu7fKnjz2Dv/bIRQajAsEsgFeiWAAqWrgxuZVL7Ts/5e9nTrJk14dHpfd7zUD0DuQ3MEAEnH/4ZGqExp0iVS+RilJeP+MRKoGoOcguYMBRCnpsaa3n4QqH+E7wrQqtaa6TkL1A9AjkNzBQJFVUKbHLh463ENC9WuoMjP0PN6GP5NQ/QD0CCR3MFAkPnlSYDGSSpXgOFLloeMoCU8kVz8A4oPkDgYK7bQnRsPHSvQUI0d5DmKXFBaUSPQsAIgDkjsYEBJScpT5Ta7uThI9ixKNkmUyIvHpU4meBQBxQHIHA0LWq2fF1qP7OMGvOAYNHU3LjJL0WQDolpzNYwdA7+xmzjzjI43pAL2HDTZ/t/s1GzNRhqkIAJHgzh0ovrgqrJai4mqiKYVz0SikiRZK13MVYV5ZINcguQPFdzVXON9CevfRc83JV3OEUjsdAB2C5A4U39UcbK6F9F7qE4xIiTVYcRPcvAMiQXIHCi6tuE61sWyojvTu3BkU9IF22Ys3qd0XBUBiILkDBZce/vDrhlAp/7g5U6lA69lZ6Z4TgP+A5A4UHDPj1SC34VI+6TBvD+OazPq6RimfFwARSO5AkZVXN5jU57oPc5PyeVVZ9Ewdl9hXkVI+LwAikNyBIot+8TpXz5XBkMwkv11zGM5OfE3AeQFACEFyB4qNn/Ka4eRNyKmHjPK2KI1t4bUQcnYAILkDhdXEbbGuiHcf4UXI2Q0HqRcqm8a+jSfk7ABAcgcK683bhFJVE01NNaICYFsPLUuMIersYICD5A4U1jWBQ/qELQQGYDR+9lfaKwgMAAxkkNyBwgorpfs6GREYgIeBUnkzKbcBhqoCAkByB4opqQYjIeSgQeTUjGQSmmxMvlsAyR0QAJI7UEx38rFpJsRPujvVhHS3ACYRAwSA5A4U09uMkqkmxL+8JxqT2VnJTWwO0YGAAYf4Vz8A/a6e3bzn1XpfLS7RgSANOtpadTk2CvrMAGmD5A4UUHRUXIGGNUuZSXQgCCHUbOVRmxxNdBRgwIHkDhRQbXJ0i5UH0VG8Z+HuqV/wlugowIADyR0oIIPCt1ZDPImO4r3BDmYYhuXmFBAdCBhYILkDRZOWU8IScmztLIkO5D0SQgWGHulvoWUGSBUkd6BoMt68LTDwQCTi+0GKKDt6kt5BywyQKkjuQNGQs6KVHWWlwR3nPszdrDqF18wjOhAwgEByBwqlWYAOqs109R5KdCD/oaOhvNXz0OtqKtGBgAEEkjtQKC/LMK6pi6a6CtGBtOVobfSwGOYhANIDyR0olH+KhBOM+tTaLsAE+fWFotVqTs23L34MTbtVyanuS7UTjMgPiiC5A+mB5A4UyoMibKJRn17VJET+J+epaFWJqjTK2CuzNufD2+t3v/y5sKG4d9WO0iel1mDVzX0JDYAegOQOFEdlkyC3XjhUp0937mQS6WPXpaJVFo053tw3yHvDldmnzNVN1v795V8p14RYj+cCo5PRGN2W55lVfYkNAPFBcgeKI/Z5xJnSA7QevqgxhF1IDg1JC+u6GJOqtMx5wR9Tfn5dHP3diwO9CO/jhkfUf8704kAAegF+vgeKg50Wo2Rm36NDhBj2c9TR7Nrc3T7bkKD78vrKugf9dmXX5vUiPGuPIby3wb04EIBegDt3oDgMSmKthgwRv7wQE37/6v+KGkoO+u0ZxNIW8ygKiWKj2Zvhrw5WRi0kSnZmbz4YAOgpSO5AQWTklbEEzTbW5uIf8kv0iSpOzQ9jdzKpSr07KYfPZbc0iVmYhFChvntmbGzvzgVAj0ByBwoiPTo638BN/FkHglOvx5cl7x69jUGh9/qkD3OfFjWUiF+eaeeGZcf1+nQAiA+SO1AQwsxYJVt3MQuXssuvpd/+cexOZRqrLyedbj3JVstK/PKDhw0xK08U8Pl9OSkA4oDkDhSBQIiZlyc4e4qb3PWVdc/6HxW/nb2/GA5SL2fqpiS9k/J5wQAEyR0ogpgyXqjZAj19HfEP6XU7e4eqOTVl7ApxSr4a9ukTrl4/nhqADkFyB4rgYTmtcegsAgMIz4/Y9fKAOIOb7Fyd7tSoSyEkMMD1ILmXl5dfvHjxzZs37XeFh4cHBwc3NDTgqw0NDZcvX378+DG+WlZWdvny5dOnT6elpfU9YgDae1wsHGvY/U+p7JamH1//IokAZttNZVAYl5KvdltyrAH5VTnWLEafegD6Qtzk3tjYOG3aNITQvn37rl79zyv4//7v/y5evIgXEAqFGIZNnz69vr7+8uXLBw4cQAglJSXV1tbS6fQlS5ZERkb2+zWAAa5ZgCLLMV+D7l/MyjTWZ0PXSCIGEiJ96b0hJC0sv76o65LqdOSgQXpdDpOIAckSd4TqjRs3Jk+evHTpUh8fn2XLls2dO1e06/jx47GxsUpKSs+ePYuIiKBQKEZGRqtWrQoICHBzc/viiy/8/Pz8/PwQQrm5uQkJCV5eXhK5FDBQRZRjzpokNZpYhWkU8cr1nJ6yToDLgp8ifz08YR8JdfU1ws+Q9KRI4GsA48OBBIn78srOzra2tkYImZqaFhb+OyFqS0uLUChUUlJCCNnY2GRmZlKpVLwkg8GgUChcLldJSenixYshISENDQ1hYR3P4BEbG/v555/jy7q6uhs2bOjLVUkIl8ul0SSVGmSQvFxv2YOw1XRVLndsH+vp+/VOMR3/IPtJWNr9SeZdBTMBy8Fu/cF13t+Xc/Udl8sVCoUUCoXYMKSGx+NhGIZhivCdiU6nk8ndfFUVN7mTyWShUIgQwjCsdaWtlwUCAZVKpVAoeEmEkOilM2fOHF9f36CgoGvXri1btqzDWLW0tPBlDQ0N2XzBUSgU2QxMQuTlerVyolT85ncd6qnEi9MsJ+gr63ZRpu/XS0Fok+ear57vHW0yXIWu3FkxDyfzksv5bDZHTY3Ih4pQ/ofAGKSJQqFgGKYY10sSY7CeuMnd3t4eby7PyMiwsvp31AaFQmEwGPX19WpqasnJyf7+/hQKJSQkBCHEZrOpVCp+K8RkMo2NjWfNmvXq1asOk7uTk9P27dvFDIYoNBpNLu5k+4tcXG8Du9msPsvEw7WLUKNL458WRHzkuqTrNpl+uV4HHdvPhq5hMpRo1E6rotFoLzXsKxNSRo4d2cfT9QWfz6fRaIqR7MSB37bL/ku6v4ib3KdPn3748OF9+/b9888/X3/9NUJo7969pqamy5Yt27p169KlS93c3Jqbmz09PRFCQqHwq6++SkxM3LJlC16yubmZTCZfv3797NmzkrsYMADFRCcK1K3sWJ12Whdggl/enljr8TG9D9MM9IiPyfBuyzSbu9WmxiNCkztQbCTxW6A4HE5MTIy5ubmRkRFCqKysjE6na2pqIoSysrIqKys9PDyoVCpCiM/nR0dHa2tr443vbDY7JiYGwzA3Nzc1NbX2NZ88eTIyMvLEiRP9dlmS0dDQoKqqSnQU0iMX13v9j5N0BmPaig6+DuLCMu6H57886Le726qkeb1v49+1XDkwfC+Rr3kOh0On0wfOnTve5s5gMIgOREp68Hs9k8kcOfLfGw09vX9H2VlZWbVuq6FSqa27xCgrK/v4+PQtTgA6plkYpzG7096NXD73bGLw/rHfSDMkHIawuuZ6DUbH45XcnG1Sz9dVlFfp6Ep7CgQwQMAIVSDHymoaDZqKnQd3+oCOy6k33PUG92769T6KKU2ILonvbC+VQsrVdk6O6bQAAH0EPW2BHIvMqakw97ejdvwyrm9uCE2/dWLK/0k5KpyHvmvXBerdpqY0U8dIJRgwAMGdO5Bjt5sM2eNWdLZXlaHyf357uu7+SCCnYR5neM5ERwEUFiR3IMeeFGPjOp9ShoRI1poW0oynRwZrkaqasUK2IoypATIIkjuQV/mNWEML5qQp7qOXCNHAa9wWvocv7GCeMDIJjTUgPy6G5A4kApI7kFePirFxhuQOU3s9r0H8R5tKlCpdpVnQ/E9ueId7xxqSnpRAcgcSAckdyCve8xszadkd7qpsqn6S90LK8XQmwGXhhaSQDqd69xvE9X/0NVKI2U6ArIHkDuSVx7sbQw06HpBiqWHmbz1RyvF0xk3XWZup+SjvWftdtjos4+birKw86UcFFB4kdyCX0nOKaUK+pZUp0YGIZbnLovNJIcKO7tCL9d2yYuOkHxJQeJDcgVzKjI0vNOimI7ns8NB3VaaxnhVEtN/FtHEVZsFQJtD/ILkDuSTIimPYdJDcr6TeeF7wSvrxdGup07wOH8LnNNTNtDIRE3b/8FUAegSSO5A/GIaZlSfYu7u12c7hcy8mXzVXl8W2mpHGwz71+Kj9dhNdzWqaVmpqhvRDAooNkjuQP0npec0UhrGxfpvttzMfuOu7mKgZERJV10iI5Kbb8XjUCiO3vDhomQH9DJI7kD8pmUVFpm2fxMsXCkLSwhY7ziEkpL5gOXtlNhIdBFA4kNyB/DlP8xJM+aTNxif5z41U9e20rAkJSXzNAl6bLe5eHt8wZwugszvoV5DcgZzhC9GLMmyMwX9euhjCglOuy/5tuxAT/hR5tM2AJl0mMlUhRVdCdgf9CZI7kDNvKjELVdKg/z5WL6Y0QYgJhxq4ExSUuMgk8lcjPiOT2r7vxhmSYJIZ0L8guQM50+FMkCZqRl94rSchmZ5ErAvjDEmPi6E3JOhPkNyBnGmKfjxBi91moy5rkOMgW0Li6Rej9cnD485yOFyiAwGKA5I7kCccHn9Zym/DdeX7dSvABH8m/tW65V2djkY2pybGJhEYFVAw8v0mAQNNbExKibKxurqKaAuG5K+pmkKivC2Jf17wuvVGtplrRXIsUSEBxQPJHciT8uTYRtP/DEyNKU24mn6bqHh6bb79jND0W6236Du7q+bDDGKg30ByB/JEJT9Oz/k/XWI89F3n2vkTFU+v+Zh4VzRVplX9O+vAEDcHnaay2pp6AqMCigSSO5AbtQ0c08ZcFzcnogPpB2QSeZbt1Gvv7oi2MGiUbC2HxBiYhwD0D0juQG7Evo3P07BVUqITHUj/8Lea+KrwTTWnRrSFb+FWnwotM6B/QHIHcqMmPbHF4t8G9/z6wsSKFALj6SMVuvI4c58bGfdEW8xc3UkV+QSGBBQJJHcgN77RDjAcP0u0ej4pJLkyncB4+m6u3XQ65d8vIi6Olsus95XIxJO9gdyD5A7kQ3ETVsolD9Zj4qtVnJrXRW/9rWTlQam9Y6pm9IHTPNEqhYR8DchPSmCoKugHkNyBfHhYhI0zJJP/N7/AzYy74y18VejKhAbV//wMSY+K5K/nPpBBkNyBfHhUjPkZvU/tLYKWW5kPZttOIzYkSfAzJD2EGcRAf4DkDuRDxbtUP4P3y//kPrXTsjKVyScu9UJJY9mF5FB82V6D5FkXl1VYQWxIQAFAcgdyID27eF/G99bq71+uoWlh8+1nEhtSP9Jias62nSpa/YDzIvPVSwLjAYoBkjuQA5mxsUX6g/HlGm6tiZrRkP+tKgAGha5MY4lWle3cscwYAuMBigGSO5ADwswYpp0HvqyppPGdz5fyO3V7t1yHuVtUJrXwWogOBMg3SO5A1vH5QsvyBKehQ4gORLIwhFVyqhFCetpqxUyjpIRUoiMC8g2SO5B1MfHpNUxtPV0togORrJTK9M8e7sBnMK4xG1KcAC0zoE8guQNZV5zwttbUAyHE4XND0sKIDkdSnAbZ0yn0NyWxCCFd5yEquZDcQZ9AcgeyTiUvdpCTO0KIQWG46DgQHY4EzbPzv5p2GyE0ZIiTPruwrr6R6IiAHIPkDmRaLQ/t0PvEzWMwQohMItlr2xAdkQSNN/d9V5OVX1/EYlCDRp98WsPq/hgAOgHJHci0h0VCLUsrhZnmt2s0Cm2q1fibGXcRQt7mGv/APASgDyC5A5n2TxE2wYiMEGoRDIiugbNspjzIDm9q4Uw0JkFyB30ByR3ItH+KsIlGpOLG0uV31snjs7B7Soc1yMPA9XnBKzdtUg0Py21Q/EsGEkIlOgAAOpVRycVahI6arKPRt31NRijwwKXWtnqtZ9GYCKHpOuxXqWzzYQoyhQ6QMrhzB7Lr3bPHv5T/yuVz/85+MtN2CtHhSAme2RFCc3kxmo9PEhsMkF+Q3IHsEmbEsGzd7mU9GqI/WF9Zl+hwpG3wMHfTykShQEB0IEAuQXIHMorPF1pUJDh6ul9/d2eOnT/R4UhbfXMDS41crqSXEA/zEIDe6EFyb2pqCg0NffjwYftd8fHxly5dKikpwVcFAsGtW7fCwsL4fD5CqLm5+cGDB2fOnElJkePHGQMpi01Ir2No5mMFdArdVdeJ6HCk7XVxdA23ttrMsyj2LdGxALnUg+Q+e/bs0tLSGzdu7N69u/X2Bw8eBAUFIYRmzJhRXV2NEAoMDIyOjk5MTFy5ciVC6PLlyy9fvqRSqcuXL+/wswGA9ori3tSYD72efmfuwLttRwhNtBhjqWGmP9hDNTea6FiAXBK3t0x8fLySktK6desEAoGDg8PXX38t2vXrr78eOHDA2dm5qKjo8uXLixcvfvPmTWxsLELIy8ursrIyICBAVPjJkyfjx4/v32sACkk1N1p92opNzsaaSupEx0IYTw+nzJCS6upaLS0NomMBckbc5J6dnW1jY4MQolAoGhoa1dXVWlrvZ+nLysqytrZGCNnY2Dx//jwvL8/c3BzfZWlpmZOTM2jQIISQUCg8d+7crl27Oqw/Njb2888/x5d1dXU3bNjQ+2uSGC6XS6PRiI5Cegi83spatlFjoaGDNZ1CE7YIuS1cKZxUNv+/2drOxa8iR/n59nvNXC5XKBRSKJR+r1k28Xg8DMMwTBGGDtDpdDK5m3YXcZM7mUwWCoX4skAgoFKp7Xfh2ykUSvuSGIatWbNm2rRpw4cP7yxW0aeFhoaGbL7gKBSKbAYmIQRe79Ny8jv3z3YwlaR5Uhn8/17PuPtu6PASoaevBAKj/E+/1yybKBQKhmGKcb0kUvdjPsRN7vb29r///jtCiMfjNTU1qamptd6VkpLi6emZmppqb29vZmaWnZ2N78rMzLSwsMAwbMOGDRYWFps2beqsficnp+3bt4sZDFFoNJoM3tlJDoHXe69abcQQVymfXQb/v1osjSLhwxsV436l0fp9BBefz6fRaIqR7MSB37bL2r9YcsT9QdXOzk5DQyMoKGjJkiXr169HCN24cWPbtm0Ioc2bN3/22Wc//PDDnTt35s2bp6qq6u/vv3LlysDAwHHjxmloaPzxxx83b96sq6sLCgq6evWqBK8GKAQBhv4uFGK8+3l1BUTHQrAxpqPK2YXatIK4KkVoTADSRBK/BUogELx580ZdXd3BwQEhVFdXx2azDQ0NEUIlJSXv3r3z9PRUVlbGC8fGxmIY5u7uTiKRiouLRb0kBw0aZGZm1qbmkydPRkZGnjhxon+uSWIaGhpUVVWJjkJ6iLreV+XYmheC+DnSnhtDNv+/F5JCrmWXeJiu+8qtn0elcDgcOp0+cO7c8TZ3BoNBdCBS0oP3D4VC8fb2Fq2qq6urq7/vxmBgYGBgYNC6sLu7u2jZ0NAQ/wwAQBz38gXTTAbENDLimGE7+ULymheZ05GbBdGxAHkCI1SBzPG5tXUWPZvoKGSFGl11nNkIv9zN1dW1RMcC5AkkdyBbSqvq01g5BmbKRAciQxY4zHisS45++YroQIA8geQOZMvzl0/uGJI0WQN34FJ75uomPso+7LQoogMB8gSSO5Atb0ruOzMcVOhw5/4fy0YF2JYl4pM1ASAOSO5AhtQ2sVOUilZ4B3RfdIAx1tMqZRrGRycSHQiQG5DcgQw58fScKUfZ2dSO6EBkUb3l0NJYaJkB4oLkDmSFEBM+r3w6hNXxBBXAzGN4OP9RDRf6zACxQHIHsuJpfkSzUHPkiDlEByKj3FysikjrqprVui8KACR3IDvKmxn5jDUO1sZEByKjSCSSiuvI2wN9RgYgLkjuQFZksD0mmzsTHYVMm2FKvpUvJDoKIB8guQNZcTNPONMMXpBd8TMkRVdij/NjGniNRMcCZB28l4BMKGJjOQ3YKD2YUqYrTCoaY0C+nPr0+rs7RMcCZJ20J94DoL2/Uq6x0xoPNQqp5BVExyLrVgle1yaVhTTGLrCfpUQdKBMcgl6AO3dAvIUOs/XS3hlbmRMdiBzwGu7mUZzhoGV7NwueNQ+6AskdEK+hkWtTmeo5YhjRgciBQerKeZq2g3n2f6Vc5QsFRIcDZBckd0C81y8i8wY5qKiwiA5EPvAcRqglZxupGjzOe050LEB2QXIHRIorS+TwubzECLLzSKJjkRuuI4abFb9daDf7UnKoUOwnqYGBBpI7IEw9r+HrZ/vLG2qtymM8RsGsA+IyNRxUxjIk5SP7QbbV3BqiwwEyCnrLAMKEpoWNNh2eHZcjULNw1NIgOhx50mg3ihP9ImjDJqIDAbIL7twBMRp57Jvv7i91mvdPrXqd93yiw5EzTr5jj9N9hNAkAzoHd+6AGFfSbowy8dJm6v/RqJ0ymUZ0OHLG2lg7T1f9ZRnmow/DvkDH4M4dEKCB13jj3b2lTvP+LhS6apH0mEQHJIfmWZCv5goRQveyHiZWpBIdDpA5kNwBAULSwkYaDzNU0b+Sgy2whBdhbyywJF3JFgox5G001FnHnuhwgMyB9xUgQH1zwzLnBc0CdK9AONscXoS9YadO0mOgVwVNmkrqJASNM6AteF8BAmwa+omhiv6r55G/lhyGNple+7rlbvXNE0RHAWQUJHdAmPq3T7Ss4HGpvec+arh5fgSfL0AINfAas2vziI4IyBBI7oAYDexm69K3nmN9iA5EjlkY65YzDd68jkEIpVa+2/l8vxCDR3mA9yC5A+lpauEcjPodX3717FWBpp02jF3qmybHMVVR4QihYYZD1BnqD3OfEh0RkBWQ3IH0sGjMT9yX48stceFUtzGEhqMIPP3GWBVFNjVxEUIr3T44k/AXTBUJcJDcgVQp01gIocraRquKxGGjRxAdjtwz0NHI07CNevYKIeSm62ysangn6wHRQQGZAMkdECDy0dMsgyGqqspEB6IQ3MZyY8PxxTVDVvyZGMxuaSI0ICATILkDacipy2/dl+Myx1x5HMwn0z+Gjxm1X2NedTNCCFlpmA8zcL+ceoPooADxILkDaTgUdSylMg1fzqzHHpBsR7nbEhuSwlBXZRrYO17Jft9P5mPXD5r5zcSGBGQBJHcgcc8KXtU2102xGo+vns8QLrEiU+Gl138CrMlnM94nd13WoMAhHxIbD5AF8A4DksUXCv6IPbvOYyWFREEICTF0LhMLsIEXXn+aYETKa8Te1cEUwOBf8B4DknXt3W1jVcOhBu746tNcthYNc9OGuVD6E5WMllmim9H5RAcCZAgkdyBB9byGS8mha4as+HfL9d+/E/5NXEQKa6Vu2cR72wSCfzu5/xF7Nr++iMCQALEguQMJOpPw12iTERbqpvhqXQPHtui1ly88C7v/2VgaVyjrv3oeJdqyym2ZqZoRgSEBYkFyBxJkpWG+0vUD0erLh+F5Oi46OpoEhqTAWoZMbnx1X7RKJsG7e0CDfz+QIH/riWoMVdGqUsw9tZFTCIxHsY3yG21SmVJaXk10IEAmQHIHUhKXnK3RXOM9wpPoQBSWqrJShumot/fvt95Yyi4/n3SFqJAAgSC5g/7H4XN5Al6bjbmPbpc4TSZT4CUnQeZ+/oZJ94SCfyf+1WCo38588LYkjsCoACHgnQb6X0F90a3M/3SJqWdzbfKee0yeTFRIA4Sbs1UdQ/NlVKJoixKV8dmwNQff/N7+4xYoNkjuoP/ZalnNtZveesu5PPofo3/U19MmKqSBI3f+3p8bnVtv8Tb0tNG0PJ8UQlRIgBCQ3IHEYQgdTREu8DInOpABYaGjakSZMKfhP6NVN3quvpV5P7eugKiogPRBcgf9qcMnRTwqwigkNEofRqVKA4uKltmQj6X+53l7WkzN5S6Lfo76TYjBFAUDRQ+Se0NDw5UrV168eNF+19u3b4ODg6uqqvBVHo938+bN+/fvY/97JeXk5Dx8+LCxsbHvEQOZlVtXsPLuRgHWNr8fTRFucILbCOlZ60g+807I4f9n40ybqRgmDM/v4P0LFJK4bzmhUDht2rTa2toTJ04cPXq09a7Q0NC9e/c2NzdPmTKFw+EghJYtW5aenv7kyZPPP/8cIRQdHb1169bAwMCcnJx+vwAgI4QYdiDyl9l20/AJwkSyC8tbMmM/sIbkLj2WqqTF9PQHjyNbbySTSPt8d4wxHUVUVEDKxH3LPX/+3MrKavXq1b///vuxY8da7zp06NCvv/66fPlyPz+/sLCwgoKC0tLSb0KgQQAAIABJREFUrVu3/vDDD/fv3+dyuR4eHiEhIU5OThKIH8iKkLSbVBJ1unXb/jDxt65/Qo1jUQkJauBaZCrUe/yHUPifRhg1hiqZBI1jA4W477msrCxra2uEEIvF4vF4AoGAQnl/g1ZSUmJkZIQQsrGxyczM1NfXt7KywncZGxsXFRWJVrsQGxuL3+YjhHR1dTds2NDTK5ECLpdLo9GIjkJ6xL/evPrCC0khR8bt4zX/5zERtY0c66xHymt/5nK5komxPynS/9fdzTbitsqzJxHeIz06K8PlcoVCoeiNrPB4PB6GYZhC/OpAp9PJ5G5uzcVN7mQyWSh8/xMNhmGkjj7/BQIBlUolk8miPx++RcxYtbS08GUNDQ3ZfMFRKBTZDExCxLzeFiH/hzdHPnFbbqxm2GZX5N8PqXpuE431JRNgP1Ow/y/Pewb5ZRhl9LD2uy6lXptkMZZFUVKwS+4ahULBMEwxrrfDDNyGuMndzs7uwYMHCKH6+nplZeXWHxrm5uY5OTkWFhapqamjR4+2sbFJT09HCGEYVlxcbGBgIE79Tk5O27dvFzMYotBoNIW5sxOHmNd7OvaSoaqBv83ENtu5PL5xfBhzxTfy8kdTsP/v2EljEp+fS03LHuxi12bXZKuxesq6HA6HRqMpRrITB37brkj/4q6J2+bu7e1dU1Pz3XffLVmyZMuWLQihs2fPHjhwACH0xRdfrFy5cv/+/VFRUVOnTtXX13d2dv7ss89WrFixZMkSOp1eW1sbFBSUkpJy6NChq1evSvBqgNRhCMMQ9rnXp+13Pbn7sErNxNHRRvpRAYQQg0YtdZ9deK+DiWX0lHWlHw+QMpL4LVA8Hi8qKkpXV9fW1hYhVFVV1dLSoq+vjxDKzc3Nzc318vJiMpkIIaFQGBUVxWQyXV1d8QMTE9+Phx40aJCZmVmbmk+ePBkZGXnixIn+uioJaWhoUFVV7b6coujL9QqF2Ksdqxkz13p6ufVvVJKjeP/fxqbm7G+WMz/5wcam7ZsOIcThcOh0+sC5c8fb3BkMBtGBSEkPOjHQ6fRRo/7tR6Wt/e9QcnNzc3Nzc9EqmUz29vZufaCHR6e/6gCFdCOpkqNut1R+MrtCUmExkrw+Skvl7Ork69MvMSc+cJo/iAXTQigg6H0MeimrNrezXUIMfZupOWjpFimGAzo2debEY/VWbWYjENFiaO6OOCjEhB3uBXINkjvopejS+Prmhg53heYIWVQ0yRi6VBNPg44+cSB/H99x+l7sOJdCIp+KvyDlqIAUQHIHvbTAfmbrpyyJCDG0J074jftAacmVfZ85U67lCHM7unknk0jf+mx9nPficd5z6QcGJAqSO+hnIelsNRqaagK37bJCi4HWOpKPvCjqcK8aXXX36G1H3h7Prs2TcmBAoiC5g555nPe8iyZaPl9gcm7jj6aQJmTLFgfB8sdfpGXkdrjXWtNivceqr57ured13M4G5BEkd9ADV9JuXky+yhO0dFbgwe1/2EraI1y7n3ACSJMai54/ZF7O1T87K+BnPnqa1YRydoUUgwKSBckdiOt5wavLqTf2+X6lRO24p3Ajm6sfcUF/1odSDgyIw2/WdJ2a7LdvEzsr8IHzfGtNS2mGBCQKkjsQS3pV5k+Rv+0ZvU1PWaezMo8uXynRc3YZbC/NwICYWEx6te+Kppu/K8bMWaBbkNxB94obS7c93R00fKODtm1nZQpLKi1Tbg9euEKKcYGemTBlrABRH9173HWxyqaqiKIo6YQEJAeSO+hGFafm88c7V7gsHm7k2UWxmIsn8xymmsjJBJADE4lEUp21WjP8Tzab00WxJj7XTM1EalEBCYHkDrqRW5c/w2byDJu2T+Fo7UlWA7Wuwm/pEqlFBXrH08M53Wz0Hy8LuyhjqmZkpCrWZK5AlkFyB93w0Hdd5DC7iwI8Ifo0lomt/ompRJdaVKDX/D5atb/cPK1WrJZ3eKC2/ILkDvrqQILQQYM0DUYtyQk9JtruRlkbIeg2bbcI+Wvub8moyZZGWKC/QXIHHTsZf6FZwOu2WHYDdjhJcMgbXkjyZL0TuZ6Hzmd183lMI1OXOc/f+uS79OpM6QQG+hG8J0HHJluOo1O6eWaNUIh9dS8/yJViqgK37fKEQkInR1POvC4srajpuqSPyfAtwz798sl3iRWp0okN9BdI7qBjxqqGJNRNyr4bcvPD1F83OcOrSP64apG+xJ7FnznabclRxl7fjtr69bPv35TESiEw0F/gbQn+VdhQXNdcL2bh9Oxi0zfBVgEbyXDXLp/8Fi1gsSsf3HrQbUk3PZfdo7ftjTgYnv9SCoGBfgHJHbyXWJG6/p9tyZVp4hTm84WFf/5Y7L3EysJY0oEBCaFRKdpLPtN/ejq/oKzbwi46Dj+N2/VPTjg82UNeQHIHCCH0rODV18/2BXlvGGE0TJzyd85fFNCUJs2dLunAgEQ52pnleczPPPk9r4XfbWFrTYu9vl+RSZA05AP8nwY6DGFnE4N/jT75s99uL0OxHnX76nWsWep9l1VfkEjQIiP3/BfN4TI17p8529MDoQu8jIPkPqCxW5q2h++NLo3/Y/LPVhrm4hxSUFbDvHqAP/9LA314qrIiIJFIw1ZvNsx6+uR1svhHVTRV/hp9UnJRgb6D5D6g7Y04aKCid9Bvj6aShjjlW4RocaRK/NSvPYcOlnRsQGoGaamRVh5YlGmTKt6wVYSQDmvQOo+PJRoV6CMq0QEAIn098nMmVUn88oEvBfrK5ICxDpILCRDCw0Zvt0A4/5EgYgZVrZvhDe+1bnxvEfJpZEgmsgXu3Aec1r0depTZ98YJY6uwP0dToKFdIa22J481IC14xOf3sDtMVm3uitvrUqveSSYu0EuQ3Aecn6N+68WjMm9GZZ9MF96eSFUR77YOyKNDwylUEvrpZkyPjrLSMF/tFrAtfM/5pCt8oUBCsYGeguQ+4GwZ9qkaXbVHh0RGJVhc2X7Xq8qAJaGggEygkNCl0djwmDNhp3vWecbXdMSJKQcTK1I/ub8FJqKREZDcB4TW77ee9lN++zaZdWUvZ96XDuZ6/R0XkDlqTJrjpj06Gc/u/HW1RwfqsAb9OHbnQodZQeG7j8X+yeU3SyhCICZI7goupy5/y+Nvfoo82iLsfpRKe2/fJjOCdzXM/sLL273fYwOySUdb3Xj994Pib9+6GNLTYydajDkz7UhFU1VceadP4gbSAT9wK6y65vrTCZee5kcEOC+caTuZQqL0tIaExHfq135onLF5xMiuHrAHFI+JoS5180H+oS+vneLM+TigR8dqMNS/HrlFQoEB8cGduwLi8pv/SrkWcGstjUw9P/23OXbTepHZIyJi1K79WD97q/dob0kECWScga6m1aYf9LJe3Dh9vi9DUet5DSFpYf0WFhAbJHcFtPbB1rSqjF8m7l/nsVKVrtKLGk6kCY9F19XP/gLu2QcyfV1N2y0HXrboLw8XNPe2FwyVRO360epAQqBZRgEdmfC9Mq2X/VowhL6LEVzIxO4EjDEkN/ZvYEDu6Gir71454eNngrF3+DcmUHWZPa6BRWOyaP8e9rzglbWmpYEK/DgvcXDnrghSq969KIwUrfY6s9fy0Jx/BI+LsciZVDt1GKsEEEJIiYIujKWMMSCNuMVPqO7rZGF5dYWf3N+y5+XBTHg0q4TBnbsisFA3U2eo9bGSmLjU2Du3zMdtDh5HZfS4iR4oMhJC+4ZSXLSEj38/UmhvPXXutF5X9YHz/Nl208Iy7geF7zFQ0ZtjO83HZDiVDC+4/gd37vKH3dJ0O/PBjmffi+ZcVaIyDFX0e12hUIjduhhCvbjLevjI/xsOmR10bLEVefriuSpxd27/sLu6tvdNdso01mLHOZdnnZhnN/1Gxr2FN1dGl8b3Y5wAB3fuckOICWPLEu9nP4ooejNEb/B064n9Um3Ku7ySS4eZJLLmpkODjaAlFHTFytLY+OvDf586lbtvTdyET8ZN8Ol1VRQSxdd0hK/piJy6fPVWQ6YxhHX78F4gDkjucqCwofhq+u3w/Je6rEETLcas91ilxujZ/AEd4vD494NDrRJucD0XTlkwiwzPQgViYNBpMwLXJMb5MEMO34t64BSwztSkT/cEFuqmrVd3vfjp65Fb4HlPfQfJXQ5w+c1aShpHJ/7Ql7aX1oQY+itLKAj+UZsu1Nn622BdrX6pFgwcLm5OPKff/r50Jf333X/MOrTVjapO75+at4/4TJTZBZjgduYDL0MPfWXd/qn9/9s787CojmyBn95XmoZmtdlElgg0m5HFKBgTUWOiGMW4oBGjRhOTMY5Gk5f3YuZ7zygZJ/k0yMvopxPjG/Uz5mHGx8QNMyoGVASDAuKG0N1AQy/Q++2+t94fV1tkHEWDNEv9Pv64VV23+px7bx/qnjp1aiiBjXt/xOa0/+lC4cfpq+hihNfwCK/hvdX5CRX68DzJZcHmBasyQ3EmMMxTwuWwX3tznso4+/vLjKiDjtVxrN/FMfm/ecKma154s8NS216/+9e/evGlY+Sj0+UpI30in2JF3tCEgfrBRog7d+4sLy/fsWOHuwV5DEaj0cOjF/wh3VAa1VWtV27ob68a/barkiAJLquXxkIAAEBS6NTZS592JHQQsPF55rTQx7/2PiN9+y1DTV+r1crlclmsXrCVNQb08QXqYjva7HHhlYx4L4not/fpgkKoTltfqjpfpqpoNrXE+Y5cpJgT4xP9pP0QBIEQ4vF4vShbfwaP3N2AnSSu625d012vaa+vaq1mMpiJ/opE/zgKUa4X0l607EaT9XTxUb+KIgbfa83cyGnRErzdBqZ3iZEyiiayLmupO9+Wqk/96XTEy4pXpoWHBvZK50wGI8YnOsYnemnCgk7C+KumRsr3dH16pa1uuDTkqdd2DGKwce8LHKSDAsS7Z6/3VO+/2HL5OVnk6MCkJQm5z2i1HkWh8+er2s6dGKEuR/5J7LnrXkrE2+NhniEJMmbC6jUqtYb5t8Pmr1cdF4dQyVkvTBgnFj3Bhl+PRsL1GBuU2rVGZVRHeIW5imeafhFxRFHeI8Tc3nx7GIhg4977OCmyyajis3guq12qOs9hcl4ISqGLSxMXLn1m304hKNOgU1fVk39ab+dKmHEv+yxcGuPTo/2vMZjfjnyYn/ztpXZHnu50maX8WOM/vtmX+m/xzydMCWI+i228JoVP6Fq806k6r664rr8l4ojCPIPDpaGhnsGRXuFR3iN6/7v7N9jn/gQ81CdrJ4nLrVeUxmalUa00qlXG5jZLu7/Id17srCnhL/WZbM0a/TmTuFjJPNJEBQoY00PgDYkyJirst/Q51HzQQ03fXvS5P4LWNn1xC/egmlfagsYFMCbKmRPYTbFRIc869LbFrGnoaLxtaGzoaGQz2WtTV9I+dw6X+4/G0hdDxz7Tb+8P4JH740GATITZlV4RAfq+7m85z02jizan7UBdkVwcGOQR+HxgQpDHsECRP4fVFzuN3rilvHmlhrhZ7dt6VeLs/GnMHxOjQ/4jmR0qpn82YX0gAwbzaPx9vfJ8IU8BHQQcVVJnm2yjf/rPWsLQ6BNDhsUHxSriYiLY7N6Pag8Q+QWI/NKGdU9ISZAEu0tAzp2Opv8696WfyMdP6Osv8vUT+viJfPyEPlK+tGvczkAEj9yBRGTX4Kpjt39WGtUGW0e7VauzGtqsWoPNEOU9onDSH10ju0stvyYHxPexnAQFtQZUo0ea+rqoqgPDdPUkg6X2i2OGxg6Pj4uODOv1odBQG8kONX37ZuT+UFrb9DWXfjVdr/ZurpZZ25WSsJrnprHjx8V5MxReDK9nE8/y0GgZgiRuGxo1lrZWc3urWaOxtGssbRqLds7IGa4B3DXtDWBAtHcEXdTbOgiS8ORJ+Ox+HXjzBP+alErl2bNnk5KSoqMfCEJCCB0/ftxut0+aNInL5QKATqc7ceJEREREcnIy3ebq1avV1dXjx48PCOidZTg9pKlTpTQ2mxwmE2G+++cwGwnTmpR3XYs8N5zJ/2zcOleYitaqYwBjhFdY6rBRXnypn1Am5Uu7JTZ6ppadIqmWNp2mta1DqzO3t5GGdi3BzA9Y2GBC4R6MWC9GmtibP3qi93PvBAf5Jz87OTCYZ4a/r5f/pEyYlAkAeoOxs+6mlJSW6tD/3KSu6JCEy1ht+CGcamd7+wt9A2QBfsPkAT5ez+T/LpfFjZZFRMsiHtFGwOF3HeyfVZbtqT7QYe8EAE+exJMnEXNFYq54RdIiucfdAKFr2hth0hBXDIXVaWMzWH3zQu+ipyN3pVI5c+bMlStX7tq1a9OmTamp9yes16xZw2AwZDJZVVXV/v37rVZrZmbmihUrDh8+nJubO2vWrJKSkk2bNuXm5m7btu2nn36SyWTdOu/hyL2ho+mc6rzdSRAkYSRMdtJuc9rNDsvCuNmJ/gq6zV9rDil8Ryp8Y+jioWtHytUVHlyxmCsSc0VijsiDKxJzxeny0bwnjzXsrZGd3mAyGc0mi8VkNN3hDbsDXk1mpDKD2oLWXvi3BOPVDrbEwJdZRDKHhx9T4s0PCA4YNSZayuD27ZLsoTaSHWr6unHk/mgajKjh6hVzww1S38LpaBWbWn2sbUyg1AJ5/tgv/QQMXz4MEzIC2NZQba3U20siEXtKJRLxY5LN93qcu81p67AbO+yd9KhxVECCKyLzx+s/vRSW4Sp+emZzqbKcQkjIEQg5QgGbx2PzPLmSLyZscPV29FZJt8nh30hPjfvGjRt9fX2XLl16+vTpXbt2/eUvf7mrns2WnJxcU1MDAJmZmXv37j137lxlZeWmTZtUKtWcOXPOnDmTnZ29YcOGxMTELVu28Pn8d999t1vnPTTuN/S3Tjac4bK4PDZXzBHx2TweiyfmisKloV78vogGUapbhQKRjSDsfIkDWEYHAIDeDqLGKrvZTFGU026jHA7KQZBWi47nfS44y0BAJ4E6HaBQly67uUNEWkSkxcgSm9lCG0tg54qOx7/lkD8XLGLIRSAXMoKZnf5SEZfTL5x9Q83YDTV9+61xfyiGDpOqRdskCtFYUZsN1Bbk1GpeubRNZNUKHBYP0sSj7J0ssYUt+r+Q7F+GT/XgMIRsELEhSVM2rPM2g8Nj8njAYAo8JADAEQiJEAWPxxWwgcUACRcY+mYPDwkTQCTm857ND9BJkVan1eywWJ02u9NuddqS7o1KAeDnxtLxIS/04tf1VIebN2+OGTMGAKKiom7cuOGqV6vVQUFB9HFkZOSNGzdu3rwZGRkJAHK5vLm5mT6XromKiiopKXlo/5WVlWvXrqWPfX19f/e73/1zG/0tc8BZPYtyMB02CgEBQAAYAQ4Mn3bL635M6ys1u+Qd3fcBIFi8rxI/AQCLEwiK4WdrW1+z8f5VIAkOSQDAEf+s3QE55ns7ir2v2rOk5f4G8EaWuJMBDgZ7RdyWNoGfhAMA4MlBH1T9L4PFAiaTZPOBzUEsNvCEXA92gpSUcJCEw5BwwTMxQUJuFokFXh4i3y6CjQUAcHap4COKtD/1nma9it1up/1sQ4QhqC9CaKAYdwGfExEWEAFElzpveOlTV8HpJDmdZo7R9AoI0rlUpwNZSYbFCXwdC5EOZDWRdiuDIi0OKwCwCct2xXAt08NGMpwUmAi0r+pjK2kCACFpY6O7P8lj0jFrRnxEH7MZaHrHmaWN39FFG0eI7vlyd45YUuMZK2AhOl32wrr/DjCrusnfKfQ7kPA+AA+ABwAyS8trdftVUORqQHKFh5kXUNToKRMevyshl8tlMB4zx9ZT485kMimKAgCSJLs+Da5610dda+iv/1fndpPVy8uLPpZKpUzmQxwQnlLPNvkIisVh8Pj8Lp+n+/smdxlvycTjBM7uvmghg7k2mAEAQjbwWMBwerJH3n+B4PC4fB4XABbwhItEIL53VRjUPKng/tbvwnsju3880DcDJv37Q5W6++ldRAADbFUFk8l86I0YrAxNfQeNylwu09dH6nt/Sce9n170KIBR8E9umQfjlBkw6yGeg+lWx6v3Lo+DYpgtzzMsUXTRbLK4DN17XoGIBxYngx6VCX0mMAlrt65YTnJW8P0i2y7i8x5ImOywWhBJin28e+uO9NS4R0dH19bWTpgwoa6uruuEamBgoEqlQggxGIz6+vrIyEitVnv27FkAaGhoCAkJcZ2bkpLS7dyuxMbGfvzxx4+WIWpESNSIkEe3AQCIiOmBQhwI6slyzQcmQDgcDofTp1Mi7gXrO7hxOp0cDmegjNx/OwghhNAT3WJZt8YSTwDPf9G2C6FxPejbG2LH91ySp6Cnxn3BggXTpk2z2+2HDh0qLCwEgJUrV+bk5GRmZs6bN2/x4sXe3t6xsbGBgYFTp07dsmXL5s2bjx8/TntaVq9evWbNmunTpxcVFR09evQZaoPBYDAYAHiiOHeDwVBRUREbG0uHMzY0NMhkMtpNUVVVZbVaU1NT6RcKi8VSXl4eFhY2fPjdRLUqlaquri4lJeWhE1YDYoWq3W5PSEioq6tztyB9R2pq6o8//ujvP1S2Z8rJyVm7dm1KSoq7Bekjfv/736emps6ePdvdgvQRW7dutdlsH374obsF6SOeYFJYKpW+9NJ9P1VYWJjrODExsWtLoVD44osvdq2Ry+VyufwpZewfIITu3Lnjbin6FKVS6XQ6H99usNDc3Gyz2dwtRd/R3t5uNBrdLUXfodfr7Xa7u6XoOwbJXAoGg8FgutIv4ql5PF5NTc369evdLcijoEN9+rmQvYvdbv/888/FYrG7Bekj1Gr1jh07iouL3S1IH/Hrr7/qdLrr16+7W5A+ory83Ol0Do6f8Pvvvz9s2LBHt+kXuWUAYPv27UPqDRGDwWCemry8PD+/x+wr21+MOwaDwWB6Eexzx2AwmEEINu4YDAYzCMHGHYPBYAYhrA0bNrhbhn5EY2Pj119/feXKlfj4eDabDQCdnZ07d+48cuSITCajl/McOnTohx9+8PX19fX1BYCOjo7t27dfvHhRoVAMuMXrer2+oKCgrKwsOjpaIBAAAL2a7PLlyyNHjuTz+QBw8uTJvXv38vl8OkMcQRA7duw4depUVFSUSDQwsuUolcri4uILFy4kJSXRNW1tbdu3b6+urk5ISKDX35eXl+/atYskSXrlHUVRe/bsKS4uDg0N9fT0BICWlpaCgoLa2tqEhIR+no+lvb396NGjR48eTUtLo2ssFkthYeG5c+diY2N5PJ5Go9m7d29RUZHFYomKupsspaio6Pvvv5fJZPRMndFoLCwsLC8vj4uL6+f51IxG48mTJ3/88cfExET6N0iS5O7du48dOxYeHu5aOOlwOL766qvQ0FCJRAIAP//887fffsvj8YKDgwHA6XTu3Lnz5MmTERERgyNCrF8/o32MyWR69dVXx4wZIxKJFi9eDAAOh2Pq1KkSiSQrK4te3rJjx45jx45NmDAhNze3vb0dAGbPnh0cHCwWixctWuRe+Z+CKVOmhIeHjxw5cubMmQDQ0NCwbNmy1157TSAQ5OXlAcCJEye2bt06efLkdevWVVdXA8DKlSsJghg5cuSMGTMGymz88ePH6+vrt27dShcRQtnZ2TExMTab7b333gOAy5cvr1u3bvLkyV999RWduPSzzz67ceNGWlpadna23W4nSXL69OmJiYk6nc6VvrTf8ssvv9TU1OTn57tqFi5c6OnpKZfL33jjDQA4f/48j8ebMmVKQUHBvn37AGDPnj2HDx9++eWXFy1a1NLSAgBz58718/OTyWS5ubnuUqSHXL16taysrKCgwGQy0TUfffRRS0vLqFGjpk+f7lqIl5+fX1hYSC9FPH36dH5+/pQpUz755JNLly4BwAcffNDZ2alQKLKzs10ZwQY2CHOPc+fOzZ07lz6OiooyGAz79u1bv379tWvXmpqa6Pq0tLTm5maE0MaNG//85z/fvn17/Pjx9EdJSUl6vd4tkj8dra2tKSkp9HFWVlZVVVVFRQVtspubm9PT0xFC8+fPP3v2LELowIED69atczgcERER9CkzZsyorKx0k+xPTEdHR2JiIn188eLFmTNn0scRERFOp3Pt2rUHDx5ECJ0+fXrBggUIoejoaDoj7rvvvltcXHzmzJn58+cjhEiSdF2Bfk54eDh9oNVqk5OT6eOMjIzGxkZXm++++27dunUIofHjxzc0NCCEtmzZsm3bNpVKRT8ACKHU1FSNRtOnoj8VaWlpra2t9DF9WxFCeXl5p06dQgjV1NSsXLly/vz5paWlCKHFixefPHkSIVRUVLRq1SqKosLDwymKQgjNmTOnrKzMXVr0Injkfp+QkJDa2lq73a5SqZqampRKZW1t7d///vfdu3cvXryYTn3T0tJCp9YJDQ1tbGxsamqi3+kAICgoSKlUulOBJ8TLy0un0+l0OpPJVFtb29jYmJycLJPJ0tLSMjMz6XFfY2MjndozJCSksbFRo9G4Us3QV8CdCjwtXe+an5+fRqNxqUkrRZIkSZK0L8J1o+kGTCZTIpEYDAY3yv+kqFQqV/KP0NBQVxYNm822fft2emCuVCpptxutr1KpdF0i+ta7Q/CnxGKx8Pl82ttGq0NR1CeffPKHP/zB1abbHdfpdN7e3nSK8oH7YHejX6xQ7SfI5fIPPvhgxowZAQEB0dHREomEy+VmZmZ+/vnnnZ2dqampS5cu5XA49FJVu90uEAgEAoHD4aBPt9lsQqHQvSo8ERwOp6CgIDc319PTk9a3tLS0ubm5pKSkvr5++fLlZWVlAoGAIAgAsNvtQqHQVQQAm81Gu+kHHP9817qpyWKxXDsh2Gw2f3//rqfY7XZ6NmKg8NCnlCCIuXPnrlq1Ki4uDgB4PJ7D4aAfbPqCDNwHm8vlulwx9FNaWFgYExNz69YtnU537dq15OTkQflgdwOP3B9g4cKFxcXF+fn5LBZLLpcnJSXRj7jT6aTnVxXeluB7AAADs0lEQVQKRWVlJQBUVFQkJCRERkbW1tZSFOV0OlUqlWtTqoFCVlZWcXHxt99+q9Vqk5KSrl+/npiYKBQKFQoFvYtWQkLCxYsXAaCioiI+Pl4qlZpMJovFAgCXL1+OjY11swJPRVxcHH0TzWazzWbz9PR0qXnx4sX4+HgA8PHxUavVcO9GKxQKuoHBYGCz2QPLuAcHB9+5c8fpdFIUde3atcjISJIk8/LyXn/9dVdKyISEhIqKCrh3BcLDw+vr6+k3mFu3bnXNEtj/YbPZQqFQq9XCvec2ODjY4XAcPHjwzp07JSUlRqOx2x0XCoUURXV2dgJAZWWlQqF4zHcMCNztF+pfvPXWW0uWLElNTaUdzSRJzpw58+23387IyKB9spcuXUpNTV2yZMnUqVNpp97mzZtfffXViRMnfvPNN26W/slZv379smXL0tLSaO3a29tHjx79zjvvZGVlffrppwihpqamtLS05cuXZ2RkGAwGhND+/fszMzNff/31jz76yL3C95xDhw5lZ2dLpdKcnJyrV68ihD788MNZs2ZlZGQcOHAAIaTX6zMyMpYvX56enq5UKhFCx48fT09PX7BgwZtvvkl38t57773xxhtjx449fPiw+1TpEWfOnMnJyRGJRDk5OSUlJQihwsLCiRMnTp069YsvvkAIbdmyJTAwMCcnJycnp6CgACFUXV2dkpKybNmyyZMn0zsWffnll5MnT540adK2bdvcq85jqa+vz8nJkclk06ZN27dvH0LoyJEjL7zwwrx581asWNG1pcvnrlar09PTly9fPnbsWK1WixA6dOjQuHHjZs+evXr1ardo0evg9AMPYLFYWlpaQkNDu25Po1arPTw8XAFVBEFoNJqug3StVstms+mAuYEFQRC089EV60aSZFNTk4eHh0wmc9WoVKrg4GCXp8JoNNpsNjoSdEBgs9ms1rvbnnl4eNAvYW1tbXw+33VbEUJNTU1yudx1661Wq8FgCAwMdPXT2toqFov7fwAoQRBms5k+FgqF9MZyBoOBoihvb2948IJwuVxaI4fD0dLS4nK1A4BerwcA1/6X/Ran0+nKTMXn82mnitlsNplM3XYjMJvNPB6PfgDoBzsoKMgV2Eq/lT42Z8tAARt3DAaDGYRgnzsGg8EMQrBxx2AwmEEINu4YDAYzCMHGHYPBYAYh2LhjMBjMIAQbdwwGgxmEYOOOwWAwgxBs3DEYDGYQgo07BoPBDEKwccdgMJhBCDbuGAwGMwjBxh2DwWAGIf8Pq+83ZBHWd08AAAAASUVORK5CYII=" }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pred_theoretical = preddist(posterior_adaptive(y)...)\n", "plot_preddist(chn, y, pred_theoretical)" ] }, { "cell_type": "markdown", "id": "f8fe4547", "metadata": {}, "source": [ "以上のように $n=5$ の場合には, 適応事前分布の場合の結果は無情報事前分布の場合の結果(緑のdashdotライン)とかなり違う." ] }, { "cell_type": "markdown", "id": "4894a3aa", "metadata": {}, "source": [ "### n = 20 ではデフォルト事前分布の場合と無情報事前分布の場合の結果が近付く." ] }, { "cell_type": "code", "execution_count": 54, "id": "cf98818f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "dist_true = Normal(μ_true, σ_true) = Normal{Float64}(μ=10000.0, σ=100.0)\n", "length(y) = 20\n", "mean(y) = 9987.869164116411\n", "var(y) = 10349.825335803103\n" ] } ], "source": [ "μ_true, σ_true, n = 1e4, 1e2, 20\n", "@show dist_true = Normal(μ_true, σ_true)\n", "y = rand(dist_true, n)\n", "@show length(y) mean(y) var(y);" ] }, { "cell_type": "code", "execution_count": 55, "id": "84d8fcb2", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Info: Found initial step size\n", "│ ϵ = 9.765625e-5\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Info: Found initial step size\n", "│ ϵ = 9.765625e-5\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n", "┌ Info: Found initial step size\n", "│ ϵ = 9.765625e-5\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Info: Found initial step size\n", "│ ϵ = 9.765625e-5\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n", "┌ Info: Found initial step size\n", "│ ϵ = 4.8828125e-5\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n", "┌ Info: Found initial step size\n", "│ ϵ = 4.8828125e-5\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n", "┌ Info: Found initial step size\n", "│ ϵ = 2.44140625e-5\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n", "┌ Info: Found initial step size\n", "│ ϵ = 4.8828125e-5\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n", "┌ Info: Found initial step size\n", "│ ϵ = 4.8828125e-5\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n", "┌ Info: Found initial step size\n", "│ ϵ = 4.8828125e-5\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n", "\u001b[32mSampling (10 threads): 100%|████████████████████████████| Time: 0:00:03\u001b[39m\n" ] } ], "source": [ "L = 10^5\n", "n_threads = min(Threads.nthreads(), 10)\n", "chn = sample(normaldistmodel_adaptive(y), NUTS(), MCMCThreads(), L, n_threads);" ] }, { "cell_type": "code", "execution_count": 56, "id": "966a6849", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Chains MCMC chain (100000×14×10 Array{Float64, 3}):\n", "\n", "Iterations = 1001:1:101000\n", "Number of chains = 10\n", "Samples per chain = 100000\n", "Wall duration = 18.42 seconds\n", "Compute duration = 148.11 seconds\n", "parameters = σ², μ\n", "internals = lp, n_steps, is_accept, acceptance_rate, log_density, hamiltonian_energy, hamiltonian_energy_error, max_hamiltonian_energy_error, tree_depth, numerical_error, step_size, nom_step_size\n", "\n", "Summary Statistics\n", " \u001b[1m parameters \u001b[0m \u001b[1m mean \u001b[0m \u001b[1m std \u001b[0m \u001b[1m naive_se \u001b[0m \u001b[1m mcse \u001b[0m \u001b[1m ess \u001b[0m \u001b[1m rhat \u001b[0m \u001b[1m ess_per_sec \u001b[0m\n", " \u001b[90m Symbol \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m\n", "\n", " σ² 9828.4697 3038.8520 3.0389 3.6317 712632.4480 1.0000 4811.4755\n", " μ 9987.8811 21.9403 0.0219 0.0250 791733.7360 1.0000 5345.5431\n", "\n", "Quantiles\n", " \u001b[1m parameters \u001b[0m \u001b[1m 2.5% \u001b[0m \u001b[1m 25.0% \u001b[0m \u001b[1m 50.0% \u001b[0m \u001b[1m 75.0% \u001b[0m \u001b[1m 97.5% \u001b[0m\n", " \u001b[90m Symbol \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m\n", "\n", " σ² 5550.7652 7703.6085 9287.0791 11336.5365 17241.9121\n", " μ 9944.3997 9973.4862 9987.8736 10002.2964 10031.1712\n" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "chn" ] }, { "cell_type": "code", "execution_count": 57, "id": "492f8473", "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "confint_ttest(y) = [9940.25614375669, 10035.482184476134]\n" ] } ], "source": [ "@show confint_ttest(y);" ] }, { "cell_type": "code", "execution_count": 58, "id": "20719a80", "metadata": { "scrolled": false }, "outputs": [ { "data": { "image/png": "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" }, "execution_count": 58, "metadata": {}, "output_type": "execute_result" } ], "source": [ "postμ_theoretical = posterior_μ(posterior_adaptive(y)...)\n", "plot_posterior_μ(chn, y, postμ_theoretical)" ] }, { "cell_type": "code", "execution_count": 59, "id": "584acb2e", "metadata": {}, "outputs": [ { "data": { "image/png": "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" }, "execution_count": 59, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pred_theoretical = preddist(posterior_adaptive(y)...)\n", "plot_preddist(chn, y, pred_theoretical)" ] }, { "cell_type": "markdown", "id": "7841dd6c", "metadata": {}, "source": [ "### n = 20 で事前分布とデータの数値の相性が悪い場合" ] }, { "cell_type": "code", "execution_count": 60, "id": "b5336c7e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "normaldistmodel (generic function with 2 methods)" ] }, "execution_count": 60, "metadata": {}, "output_type": "execute_result" } ], "source": [ "@model function normaldistmodel(y, μstar, vstar, κ, θ)\n", " σ² ~ InverseGamma(κ, θ)\n", " μ ~ Normal(μstar, √(vstar * σ²))\n", " y ~ MvNormal(fill(μ, length(y)), σ²*I)\n", "end" ] }, { "cell_type": "code", "execution_count": 61, "id": "40bd42b5", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "μstar = 0.0\n", "vstar = 25.0\n", "κ = 2.04\n", "θ = 1.04\n", "\n", "Eμ = 0.0\n", "Ev = 1.0\n", "var_μ = 25.0\n", "var_v = 24.99999999999998\n" ] } ], "source": [ "# 固定された事前分布の設定\n", "\n", "a, b = 5.0^2, 5.0^2\n", "μstar, vstar, κ, θ = 0.0, a, 2 + 1/b, 1 + 1/b\n", "@show μstar vstar κ θ\n", "println()\n", "\n", "Eμ, Ev = μstar, θ/(κ - 1)\n", "var_μ, var_v = vstar*Ev, Ev^2/(κ - 2)\n", "@show Eμ Ev var_μ var_v;" ] }, { "cell_type": "markdown", "id": "c86e016b", "metadata": {}, "source": [ "以下では以上のようにして定めた事前分布を使う.\n", "\n", "この事前分布における $\\mu$ の平均と分散はそれぞれ $0$ と $5^2$ であり, $v=\\sigma^2$ の平均と分散はそれぞれ $1$ と $5^2$ である." ] }, { "cell_type": "code", "execution_count": 62, "id": "a68a1407", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "dist_true = Normal(μ_true, σ_true) = Normal{Float64}(μ=10000.0, σ=100.0)\n", "length(y) = 20\n", "mean(y) = 10018.197822009017\n", "var(y) = 17010.479215472027\n" ] } ], "source": [ "μ_true, σ_true, n = 1e4, 1e2, 20\n", "@show dist_true = Normal(μ_true, σ_true)\n", "y = rand(dist_true, n)\n", "@show length(y) mean(y) var(y);" ] }, { "cell_type": "markdown", "id": "00ca0137", "metadata": {}, "source": [ "平均と分散がそれぞれ $10000$, $100^2$ の正規分布でサイズ $20$ のサンプルを生成している.\n", "\n", "平均 $10000$ と分散 $100^2$ は上で定めた事前分布と極めて相性が悪い." ] }, { "cell_type": "code", "execution_count": 63, "id": "c1588ee3", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Info: Found initial step size\n", "│ ϵ = 9.765625e-5\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Info: Found initial step size\n", "│ ϵ = 9.765625e-5\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Info: Found initial step size\n", "│ ϵ = 4.8828125e-5\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n", "┌ Info: Found initial step size\n", "│ ϵ = 4.8828125e-5\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n", "┌ Info: Found initial step size\n", "│ ϵ = 4.8828125e-5\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n", "┌ Info: Found initial step size\n", "│ ϵ = 4.8828125e-5\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Info: Found initial step size\n", "│ ϵ = 4.8828125e-5\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n", "┌ Info: Found initial step size\n", "│ ϵ = 2.44140625e-5\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n", "┌ Info: Found initial step size\n", "│ ϵ = 2.44140625e-5\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "┌ Info: Found initial step size\n", "│ ϵ = 2.44140625e-5\n", "└ @ Turing.Inference D:\\.julia\\packages\\Turing\\szPqN\\src\\inference\\hmc.jl:191\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, true, true, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "┌ Warning: The current proposal will be rejected due to numerical error(s).\n", "│ isfinite.((θ, r, ℓπ, ℓκ)) = (true, false, false, false)\n", "└ @ AdvancedHMC D:\\.julia\\packages\\AdvancedHMC\\iWHPQ\\src\\hamiltonian.jl:47\n", "\u001b[32mSampling (10 threads): 100%|████████████████████████████| Time: 0:00:00\u001b[39m\n" ] } ], "source": [ "L = 10^5\n", "n_threads = min(Threads.nthreads(), 10)\n", "chn = sample(normaldistmodel(y, μstar, vstar, κ, θ), NUTS(), MCMCThreads(), L, n_threads);" ] }, { "cell_type": "code", "execution_count": 64, "id": "d7a4e78c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Chains MCMC chain (100000×14×10 Array{Float64, 3}):\n", "\n", "Iterations = 1001:1:101000\n", "Number of chains = 10\n", "Samples per chain = 100000\n", "Wall duration = 16.31 seconds\n", "Compute duration = 158.74 seconds\n", "parameters = σ², μ\n", "internals = lp, n_steps, is_accept, acceptance_rate, log_density, hamiltonian_energy, hamiltonian_energy_error, max_hamiltonian_energy_error, tree_depth, numerical_error, step_size, nom_step_size\n", "\n", "Summary Statistics\n", " \u001b[1m parameters \u001b[0m \u001b[1m mean \u001b[0m \u001b[1m std \u001b[0m \u001b[1m naive_se \u001b[0m \u001b[1m mcse \u001b[0m \u001b[1m ess \u001b[0m \u001b[1m rhat \u001b[0m \u001b[1m ess_per_sec \u001b[0m\n", " \u001b[90m Symbol \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m\n", "\n", " σ² 196157.5206 61791.6263 61.7916 74.2261 765686.0192 1.0000 4823.3709\n", " μ 9998.4619 98.7598 0.0988 0.1105 855541.1202 1.0000 5389.4051\n", "\n", "Quantiles\n", " \u001b[1m parameters \u001b[0m \u001b[1m 2.5% \u001b[0m \u001b[1m 25.0% \u001b[0m \u001b[1m 50.0% \u001b[0m \u001b[1m 75.0% \u001b[0m \u001b[1m 97.5% \u001b[0m\n", " \u001b[90m Symbol \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m \u001b[90m Float64 \u001b[0m\n", "\n", " σ² 109753.9613 152862.6346 184995.6745 226723.7485 347574.4600\n", " μ 9803.6408 9933.5464 9998.4054 10063.3379 10193.2900\n" ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" } ], "source": [ "chn" ] }, { "cell_type": "code", "execution_count": 65, "id": "29dd94c7", "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "confint_ttest(y) = [9957.157404419688, 10079.238239598346]\n" ] } ], "source": [ "@show confint_ttest(y);" ] }, { "cell_type": "code", "execution_count": 66, "id": "3599932e", "metadata": { "scrolled": false }, "outputs": [ { "data": { "image/png": "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gkgkkkqlmo1q7dq1yoHP1LRq1SonJydNBZCUlHTixInk5OTa3UYRajOwK6SWnDt3DgAOHjyor69PDYkFAHFxcWfOnLG3t583b57yhZ2bN2/euHHDyMho8uTJyi4rDx48uHDhApvNHjVqlJ+fHwCkp6enpKRYWVmdOnVq8ODBffr0SUhIuHz5skKhiIyM7NChQ0lJyZ07d9LT0/ft22dqajpu3DixWKz86fD69evjx4/n5eV5enpOnTqVx+PduXPn5s2bb9686dix46RJk+p5UHnjxg0bG5v79+8nJyf36tVLeTlCofDQoUNZWVkBAQGTJk2iOq6kpKQcP368oqLC0dFx2rRpr169ysrK+uuvv2QymZ+fX48ePUiSPHXq1MOHD+3s7GbOnEl1komJifH397927dqLFy+2b99eXV2tbAC5d+/epUuX2Gx2ZGRk+/btASAtLS01NdXc3Pz06dPDhg3r3bu3arR//PHHtWvXTExMJk6c6OTk9Pr16wMHDjCZzCNHjlABKPe8deuWkZFRYGAgABQUFNy6dYvqNopQa4Q1d9rcv3//u+++a9++/eXLl2fPnk2t3LBhw7Jlyzw9PUmS7N69e25uLgCcP39+yJAhlpaWHA4nLCzszp071OFz585ds2aNq6urgYFBdHT0xIkTraysLC0thwwZUucoWt9///3Tp08B4NmzZ507dy4pKencuXNmZmZOTg4AHDt2zMrKKjAw8NixY++//349kUdFRQ0dOjQlJcXX1/ezzz77/vvvAUAqlfbo0ePOnTt+fn779++fNGkSABQWFoaFhZmamnbr1q2qqiorK6t2aePHjz927Ji/v39OTk737t2pF7K2bNkydOjQ3Nxcqmv8+vXrs7OzAeDs2bPDhw+3srJis9m9e/e+e/cuAMTHx8+dO3fdunXu7u6qb/ACwO7du2fNmuXq6srn87t06ZKWllbPdf3yyy/KnxTp6enr1q2rZ2eEWjhdr7lLclIqTu2svd6w72hu5z7Kj28uHhSn1NHma/XxtwSLTS0rqoUlu5YpN5mOXsBx+feFGuoR7syZM5VDBejp6R0/fpzBYISFhVG1xaKioi1btmRlZVlYWABAZWXl7t27v/7667Vr127dunXatGkAQJLkV199Rb06JJFIzp49S6WzkSNHnj9/nhqzxdDQcOvWrWfPnu3Ro4dCoZg7d26N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" }, "execution_count": 66, "metadata": {}, "output_type": "execute_result" } ], "source": [ "postμ_theoretical = posterior_μ(bayesian_update(μstar, vstar, κ, θ, y)...)\n", "plot_posterior_μ(chn, y, postμ_theoretical)" ] }, { "cell_type": "code", "execution_count": 67, "id": "58aa290b", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAfQAAAFeCAIAAAD8M3pVAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nOzdd0AUR9sA8NlrXAWO3puggoAoiIoIVhRsxG6iUWNv0WjsGkv002g0rzFGk1gToyYm9q6JNXYEFbDQezvqcb3s98f6Xu4FxBPubuHu+f21uzc789xxPAyzs7MYjuMIAACAaaGQHQAAAAD9g+QOAAAmCJI7AACYIEjuAABggiC5AwCACYLkDgAAJgiSOwAAmCBI7gAAYIIguQMAgAmC5A4AACaIRnYAxvPgwYNt27aRHQUwHQ4ODt999x3ZUQDQMDNK7omJiVVVVdOmTSM7EGAKpFLp7NmzIbmDFsuMkjtCqE2bNqNGjSI7CmAKamtrZ8+eTXYUALwVjLkDAIAJguQOAAAmCJI7AACYIEjuAABggiC5AwCACYLkDgAAJgiSu8FduXJl2bJlz58/1xy5devWsmXLHj16ROziOH727NkpU6aMGjVq0aJFxHG1Wr1s2bJvvvlGcxaO42vWrNm0aZPmSHFx8fr160eOHDl58uRdu3bV1tYaIv6SkhIXFxdiOzIy8vHjxw0WU6lUCQkJmkfyHjlyZPLkyYaIBwCgC0juBnf79u1du3Zpp+k1a9bs2rXr6dOnxO706dNnzpwZHBw8ceJEV1fXsWPHpqam4jj+1VdfrVmzJjs7myh269at7du3f//998Tu06dPAwMDX79+PWrUqJiYmISEhClTphgifrVaXVVVRWzPmDHDzc2twWJisTgsLEypVBK7ISEhI0eONEQ8AABdmNdNTGSJjY29ePFibW0tl8vNzs7Oycnp3Lkz8dLp06ePHj366tUrV1dX4sjMmTNVKhWxPXz48J9//vmLL75ACB08eHDkyJHXrl0jXpo8efL48eP/85//ELvjxo0rLi6u0+7x48fDw8MvX75cUlIyePDgTp06IYRycnKePn3q6+v7xx9/REVF9erV69WrV+fPn1coFEOHDvX39yfOTU9P/+OPP5hM5sCBAzUVstlsCuVNhyAvL+/MmTMlJSUdOnQYPnz4qVOnEEJ79+6lUqnx8fE0Go3JZBIlZTLZ0aNHs7OzO3bsGB8fj2EYQujIkSO9evU6d+5cYWHhkCFDQkND9fd5AwCg524UXC43JibmxIkTCKGDBw9OnDhRkyL/+OOPUaNGaTI7QojNZvN4PGJ70qRJhw4dwnFcJBJdunRp+PDhxPH09PTExMQFCxZot+Lk5FSn3XXr1sXGxpaUlLBYrAEDBly/fh0hlJSUNGfOnDlz5hCtnD9/fuDAgSqVik6nDxgw4M6dOwihly9fRkRESCQSHMcnTJigqXDVqlUZGRkIoXv37oWFheXl5bm5uV27dk0gEAiFQoRQZWVlZWWlUqkk/l9BCCmVyujo6NOnTzs6Om7ZskUzVrN8+fIPPvigpKSESqX27t37xYsX+vmsAQAIITPvuQ+8pFTh+q92uBdlln/dv5qTJk368ssvJ0yYcPjw4StXrty4cYM4npOTExMT87aqvL293d3db926lZmZGRsbq0n6OTk5dDrdw8PjncGMHj169erVCCEul7thw4bevXsjhGpqak6fPm1paYkQatu27b59+/r06YMQcnJy2rx587lz57Zt2zZ58uR169YhhGxtbWfOnFmn2iVLlqxevXru3LkIoenTpyOEJkyYMGfOnMWLF9PpdO2SJ0+erKmpuXv3LoVCGTt2rIeHx+LFizt06IAQmjp1KrHUT0ZGxtmzZzX/NAAAms+sk/viYCpugOTuwW3gYK9evaZNm7Z//34PDw8fHx/NcSaTSfR532bixImHDh3KzMxct26d5nIli8VSKpUSiYTD4TQeTPfu3YmNiIiINWvWENvt27cnMntNTU1aWtqXX35JXKcVCoUCgQAhlJycvHTpUs2J9atNSkr68ccfG2+akJKSEhERQfynwufzAwMDk5OTieSuGZtydXUtKyvTpTYAgI7MOrn3dcGM1haGYePHj58/fz4xWKHRpUuXmzdvNnLiqFGjli5damlpGRUVpSkZFBTEYDD++eefRnr9BKlUSmxIJBIWi0VsW1hYEBsMBoNKpW7ZssXW1pY4QqPREEIsFkv7xPrVstnsBo/Xp10VURubzSa2qVQqsUGMwgMA9AjG3I1n5syZ27dvrzOHZObMmcnJydu2bdOeRJiZmakpwOVyDxw4sH//fu0MyOPxZs+evWjRIs1cmuLi4r1799Zv9NixY8TG0aNHo6Oj67zKZDKjo6MvXrzo81/EvwJRUVHHjh0jQjp69Gj9agcMGLB7926igFqtViqVHA6HTqdXVFTUKRkVFXXp0iXiH4LExMSMjIwuXbq845MCADSbWffcjczJyYkYntbm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" }, "execution_count": 67, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pred_theoretical = preddist(bayesian_update(μstar, vstar, κ, θ, y)...)\n", "plot_preddist(chn, y, pred_theoretical)" ] }, { "cell_type": "markdown", "id": "88422a61", "metadata": {}, "source": [ "### n = 200 で事前分布とデータの数値の相性が悪い場合\n", "\n", "前節の続き" ] }, { "cell_type": "code", "execution_count": 68, "id": "c49e27c4", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "dist_true = Normal(μ_true, σ_true) = Normal{Float64}(μ=10000.0, σ=100.0)\n", "length(y) = 200\n", "mean(y) = 9997.8544461325\n", "var(y) = 10989.56551724728\n" ] } ], "source": [ "μ_true, σ_true, n = 1e4, 1e2, 200\n", "@show dist_true = Normal(μ_true, σ_true)\n", "y = rand(dist_true, n)\n", "@show length(y) mean(y) var(y);" ] }, { "cell_type": "code", "execution_count": 69, "id": "c7e169b0", "metadata": {}, "outputs": [ { "data": { "image/png": "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" }, "execution_count": 69, "metadata": {}, "output_type": "execute_result" } ], "source": [ "postμ_theoretical = posterior_μ(bayesian_update(μstar, vstar, κ, θ, y)...)\n", "plot_posterior_μ(nothing, y, postμ_theoretical)" ] }, { "cell_type": "code", "execution_count": 70, "id": "6ae60f5a", "metadata": {}, "outputs": [ { "data": { "image/png": "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275E+iWVSps1ayaRSAy3CwCaAoo7aACyuJ8/f57qINSD4g5MHAzLgAYIDQ2lOgIAoF6guJuH8+fPK5VK3U1DVAkPD3/noDwAwBRAcTeSHTt2kNew29nZ6eaZqb+zZ8/u378fIaTRaKKioqKjo93carma/rPPPisoKPD19f3uu+/I+Qb+/PPPGzdu/Prrrwih27dv379//9mzZ7Nnz37zSvNaFRcXX716NTEx0cnJaeXKldXfSk9Pj4uLW7x4ca0brl+/nsvlfvTRRwghDMOioqJOnjzp5eUVGxtL3nxbXbNmzb788kvynlIGg+Hi4hIeHj5kyBDd5ZUeHh6PHz+udcK1nJwcjUYTGBioW7Np0yaCID777LP6HKBUKo2NjX306FF5efmOHTvIlQRB9O/ff8eOHeRFRACYI7gU0kimTp0aExMTExNz4sSJGm89e/bs3r17dWx79+7dzp07k8t79uzp0KFDrZUdIbRkyZLjx4+XlpZGR0cjhHAcX758ue5G/LVr12ZkZERHRz9//vzNbSsqKmJiYmqsvHr16vHjx7Oysv78888abx05coScTaFWs2fP/umnn8hpAxgMxv/+97/vv/8eIeTu7k6e/kul0ri4OHI5ODgYw7Bdu3a1bNmyQ4cOTCZz7dq1bdq0ycjIIHtbt26d7iPoGg4dOrRt2zbdy6qqqo0bN86ePfttwWpIT0/funVrQUEBOQ8PiUajzZ49+5tvvqlnJwCYIqpujTW+N6cfMI7U1NRLly7pXqakpFR/SRDE/v37586dW0cPixYtIu+3JAgiJCTkzp075HJpaen69es/+eST7777LiMjg1xZVlbWqVOnkpISgiCuXLnSpUuXGr21b9/++PHjb+4lKSmpY8eOtQY4evQoOR1CdSEhIenp6RKJZN++fXl5eatWrfr6669zcnJ0DSZMmLBnzx5yuaKiwsnJqbKyUvfujh07unbtqntJ/p549uwZ+RLDsIkTJ+rCb9++nZwtp6Sk5Keffvrkk0++//777OzsV69eDR8+vG/fvjt37iQnJNi+ffv7779PblVQUHD69OmnT58uX7587dq15J3AtUpLSyPvJtORy+UCgaC4uPhtm8D0A8DEwZm7wXG53Pfff588h0UIffHFFzk5OXVvUl5evmfPnsLCQoQQebGgs7MzQigvLy8nJ0c38UD//v1LSkq6detm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" }, "execution_count": 70, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pred_theoretical = preddist(bayesian_update(μstar, vstar, κ, θ, y)...)\n", "plot_preddist(nothing, y, pred_theoretical)" ] }, { "cell_type": "markdown", "id": "cfee5b7f", "metadata": {}, "source": [ "### n = 2000 で事前分布とデータの数値の相性が悪い場合\n", "\n", "前節の続き" ] }, { "cell_type": "code", "execution_count": 71, "id": "ebbb373e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "dist_true = Normal(μ_true, σ_true) = Normal{Float64}(μ=10000.0, σ=100.0)\n", "length(y) = 2000\n", "mean(y) = 10002.394067284347\n", "var(y) = 9627.127072443118\n" ] } ], "source": [ "μ_true, σ_true, n = 1e4, 1e2, 2000\n", "@show dist_true = Normal(μ_true, σ_true)\n", "y = rand(dist_true, n)\n", "@show length(y) mean(y) var(y);" ] }, { "cell_type": "code", "execution_count": 72, "id": "707b9b92", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAfQAAAFeCAIAAAD8M3pVAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nOzdd1xTV/8H8JObHRL2RtkgqDhABCwiQ8S9raNaq48dVqs+1dYuq3W0tmrtlNZaW7XO6uMAF6LiQMSJMgQFRECQHbL3/f1x/aWUjSa5JPm+X/6Re3Jy74cIXy4n955DwXEcAQAAMC0Y2QEAAADoHhR3AAAwQVDcAQDABEFxBwAAEwTFHQAATBAUdwAAMEFQ3AEAwARBcQcAABMExR0AAEwQFHcAADBBNLIDGIJSqZw/f75cLic7CDAFFApl8+bNPXv2JDsIAO0xi+IuFAqPHTu2c+dOsoMAU7BmzZqioiIo7qCbM4vijhBiMBjTpk0jOwUwBdu2bSM7AgAdgzF3AAAwQVDcAQDABEFxBwAAEwTFHQAATBAUdwAAMEFQ3AEAwARBcde7+/fvS6VS4nFaWlpMTIy+j9jY2Jifn6/dXLJkya+//tqlPaxevfrrr7/WbaqysrKKioouvWTatGlJSUk6zPDTTz/16tXL0dFRh/sEoHuC4q53o0ePLiwsJB4rlUqhUKjvI6anp8+bN0+7OW7cuLCwsC7tQSgUikQi3ab69ttvu/o7ZtasWYGBgboKIBaLV6xYkZaWVl1drat9AtBtmctNTGQ5d+6cWCw+fPhwRkZGdHQ00VhYWLhv3z5LS8v58+dbWloSjdnZ2WfOnEEITZkyxdvbm2gsKSk5evSoXC4fOXLkgAEDEELV1dUXL14cPHjwvn37+vXrN27cuCdPnhw/flwkEo0cOTI4OFgul585c6aqqmr79u0Yhi1YsIDJZNJoz/+jRSLRoUOHHj9+7O7uPm3aNGtr64KCgpSUlKqqKj8/v5kzZzIYjLa+lszMTIQQn89PT08fMGDA5MmTiXaNRnP48OG8vDwfH58ZM2bQ6XQi5/79+589e+bm5jZp0iSZTJadnc1isbZv3+7u7j5y5EiE0KVLl65cuWJtbT1z5kw7OzuE0IULFxwdHQsLC2/cuLFixQoWi0WlUomjFBcXHzt2TKFQjB49ul+/fgihZ8+eXb58edCgQfv37x8wYMCYMWOaps3JyTl58iSNRpswYYKvr29jY+O2bdsoFEpSUpKHh0dCQoK2Z1ZWllAoHDp0KEJILBYfPHhw/vz5L/5fDkD3AGfu+iUWizUajUAgaGhoUCgUCKGKiorFixfb2tqmpaWNHz+e6HbgwIHJkyfTaDSNRjNs2LCsrCyE0L1790JDQ+vr66lUakJCwvHjxxFCjx8/XrRo0dy5c9lsNoZhGRkZUVFRAoGAx+NNmzbt+PHjOI6LRCK1Wt3Q0MDn8xFCO3fuPHfuHEKopqamf//+ly5dcnd3f/To0e3btxFC27dvl0gknp6ex44d0+Zp1dGjR2fNmrVnzx43N7d169Z98sknRPurr766bds2Jyen/fv3JyQk4DiuUqkiIiIqKioCAwPr6uru3LmjUChkMplMJmtoaCD+Jli9evWKFSvs7OzKy8uJL5OIOmXKlKSkJAcHB5VKtWXLllu3biGE7ty5ExYWxufzqVTq8OHDibGaoqKixYsXz5s3j81mUyiUplHPnj0bGxuLEBIKheHh4ZmZmRqNprGxEcdxbQCtM2fO7N27l3jM5/Pfe++9l/s/B6B7wM1AXV2dra1t0xbhpWPVP3/U8p9ayG/arSbxk5Z9+Ek7m/aR5t1s+qzs0f1mR3dzc7t//3ljSkoKj8cjqoxYLKbT6XV1dWq12tHR8fbt20Sfn3/++bXXXsNxfOrUqatWrSIa9+7d26dPHxzHr1+/TqPRysvLifZXXnll3759xOPU1NSQkBAcx0+ePBkeHq4NMHfu3G+//RbH8eXLlxN7bpVarXZ1dS0uLsZx/L///e9nn33WrMPKlSuJ/eM4XlJSwmaz6+vrMzMz7ezsRCIRjuNKpdLDw+PkyZNPnz61tLQUCoVNX75s2bLPP/+ceFxaWmptbd3Q0EBsvvPOOxs3bsRx/LXXXnv11Ve1L4mLizt06BCO45MmTVqzZg3RuGvXrn79+uE4fvXqVTqdXlFR0fJrCQ0N3bFjB/H4yy+/HD16NI7jjx8/trS0bNn5q6++evvtt4nH5eXlHA6nrbeIEB0dffHixfb7AEA6Mx2WYfUKpju7t2ynMNlNN3mx0xDCm/XBOJZNN+muXpbDX9Vu0px6tH9ob29vYiiGw+HY2trW1NSIRKKampoPP/yQOP2sr68nHuTm5i5YsIB41dChQ/Pz85VKJULI1dXVzc0NIYTj+N27d3/66SdiTjS5XF5QUNDOoe/evTt79uxmjfv27fvyyy9VKhWHw+Hz+WVlZV5eXm3tISIignjg4eFhb2//8OHD3NzcAQMGWFhYIIRoNFp4eHhOTs6oUaPGjx/v5uY2evTo8ePHT58+HcP+9TfivXv3VCqVdraf0tLSIUOGEI9DQ0NbHjc3N3fRokXat2LBggVqtRoh1LNnTxcXl1b7R0ZGavsnJia287YAYJLMtLjTnHrSnDqe1Y/pP6DDPlQrO6qVXRcOTfvnPadQKDiOs1gsDMN++OEHFotFtBMD32w2WyaTES1SqZTBYBCvZTKZ2pczmcxPP/00ICBA29LOoS0sLLTX7RCqq6sXLlyYlZVFFHQvLy+iaLZFm4d4zOFwOBxO00apVMrhcCgUyp49e0pLS5OTk9etW3f//v2vvvqq6X5YLJajo2PTz1e5XC7xQPvVNdXsrWAymcRvi1Y7t+zP4XDa+aIQQtqvmhg6A8AEwJi73llbWxMDym1xdHTs379/amqq9/9js9kIoWHDhu3duxfHcYTQnj17oqKiWtbukSNHnjx50svLi3gh8TeBtbV1XV1dywONGDHizz//1NZ3hUJRW1vLYDCIvwMuX7785MmT9r+WU6dOCQQChFBqaiqVSvX39w8PD8/Kynr48CFC6OnTp2lpaUOHDpVIJFKp1N3d/d13312yZElubi5CyMrKSptq0KBBQqGwpKSEiO3p6Ul8DNuWqKiov/76q/23omV/4vGePXuGDRvW/teVlZWl0WgQQmlpaWq1mjgQAEbNTM/cDemdd96ZOnWqh4fHmjVr2jrT3LNnz4wZM/bv3+/s7FxQUDBjxozPP//8008/HT9+fGhoKI/He/r0aatXfG/dunXmzJlBQUG9evUqKSnp3bv3nj17Bg0aZG9v7+vr6+DgkJGR0TTJjRs3AgMDBw4cWFxcvGHDhtGjR4eEhISGhrq7u4tEIl9f3/a/lj59+kRFRbm7u2dkZPz+++9MJtPT03PTpk1RUVGhoaG3b99euXJl//79c3NzY2JiQkNDGQzGnTt3/vjjD4TQtGnTRo4ceeXKldjY2K1bt+7bt++NN97w9/fncDjZ2dmbNm2aOnVqW8ddtWrV+PHjBw8ebGFh8ezZsxMnTrSfc/PmzePGjcvMzJTL5TiOd9hfLpeHhoba29vjOM7lcufNm/fnn3+2/xIAujmKOZyk1NfX+/n5tXoyaxgqlUooFFpYWFAoFKlUqr38sbGxkcvlElf7qdXqx48fV1dX+/r6au+y0Wg0hYWFMpksMDCQOLdVqVRisdjKyqrp/p88efL06dMePXq4u//zQYJYLFYoFDY2NgKBgEajaYcmKioqSkpK3N3de/ToQRyC+Ly3f//+IpGIw+HQaDSRSEShUIiRdK2PPvoIIfTxxx/n5eUFBATY2Nhon2poaHj48KGPj4+9vT3RIhKJ8vPzcRzv3bt30/00NjZSqVRiEEahUBQUFMhkMn9/f+IrEovFNBpN+yuQz+ez2WxiU6PRPHr0SC6XN30rJBKJ9s1s+Z7n5+fTaDQ/Pz/iHSYuW7K2tm7Wc+PGjSUlJV988UVlZWXfvn0rKiooFEo7a3HExMSsXr1ae2ErAN0TFHfQWURx37hxI9lBdIwo7r/88ksn+0NxB0YBhmVAZ3U4cm2kwsPDe/XqRXYKAHQMirsR2LFjh6+vL+mniqNGjSI3gJ6Q/sYCoA9Q3A3ho48+SktLQwgFBQX99ttvXXqtQCC4f/8+ccF7VVXVxIkTL1++3PLakvr6+lWrVlVXV4eHhy9fvpxolEgkq1at2rJlS6t7Tk1N3bdvH3GN/CeffNLQ0NCsw4wZMxQKxeHDhxFCHA6nR48e8fHxxK3/CKF9+/adOHHiwIEDre780qVLoaGh2oF+hUIxbNiw48ePd3LSrvz8/LS0tJycnMjIyBkzZhCNmZmZmzdv/vvvvzuzBwDMHFwKaQiffvppcnJycnLy5s2bmz11+/btvLy8dl576NAh7WUk69evnzlzZqtXDbJYrPXr1+/fv//o0aPEpYcIoZSUlNLS0rb2HBcXd/v27Xv37iGEgoKCgoODg4ODk5KSVCoV8djBweHevXvp6ekhISHe3t6lpaWRkZFvvfUWcdVgaGjof/7zn7Z2PnXq1PLycu3mjh07Bg4c2PnpGH///fe0tLTMzMxr165pG8PCwioqKq5evdrJnQBgzuDMXb/S09OpVGp4eDiPx0MIEXfMN52j8dChQy4uLr17925rD5cvXyZqqFgs3rt3r/Ye1OLi4r1799bX17u6us6ePdvFxYXD4Tx48AAh5O/vT/Q5fvz4hAkTEEJ79uyJjY09ePBgVVXVpEmTwsPDEUIUCmX27Nm//PJLYmLizJkziZf8+OOPMTExs2bNIjZPnTrVs2fPt956i9hcvnx5cHDw0KFD58yZo1ar5XI50X7x4sWUlBSlUhkYGDh37tzU1FSZTHbw4EEnJ6e4uDgfH5/ExMTt27cTnc+dO+fm5nbnzp27d+9GRES0egXkpk2bEEKLFy9u1v76669v27ZNe/cpAKAtcOauX3w+X1sZcRyfP3++RCJp/yXl5eXff/89MdNAcXGxt7c3ccPOlStXPDw8HBwcEEICgSAyMpLFYkVERCiVSmJK4fz8/MWLFx8+fJg4tVer1WfOnCEGylesWDF16lQKhWJnZxcfH0/cc4QQio6OPnnyZOe/HHd39ylTphw9ehQhlJmZSQwxnTt3bsGCBb169Ro4cGBOTk7LmzzLysqKi4u18wps37598uTJOTk5AQEBy5cv37VrV+cDREdHnz17lvjTAQDQDjM9c9+be/hS6bWW7V/HfG7Den4d9LY7O98Z+AZGef7776uM7x7zmw9x8JjcLbFrtZs/3d6xOGRB0w6jRo167733MjIyIiIiUlNTNRoN8fFdaWkpUeWJSR+JtTUsLS1dXV3Lysr+/vtvb2/vcePG/fXXX3PmzCF2lZub6+fnRzwuLS3FMGzhwoXau/YrKipiYmJmz569a9eu6dOne3p6Xrt2LTAwkJhKFyG0dOlSYvA6Kyvr9OnTxNm9n59fWVmZQCBo62rxlnx8fIhJK7WysrLCw8Nff/11DMNee+01hNDIkSNZLNb06dOJo5w6dcrb27vpvAuxsbHEJZUqlSopKWnu3LmdPLqvry+fz6+oqCAu0gcAtMVMi/twz2GDXFqZN4bL4GofT/Qf3fQe99f6TJWqZM36UynUppuT/Mc064Bh2FtvvfXbb79FRERs37594cKFxD4///xzYjLbqqoqGo1G3EI5atSoTZs2RUREzJs3b+/evWPHji0uLvbx8SF2JRaLiWkJEEK9e/d+5ZVXXF1d4+PjJ0+ePHPmTGtr6+TkZOJZW1tb1GRMhhAUFEQ8cHFxqa2tJR4TtxcJhcLOF/eGhoZmU7VMnz59165dHh4eo0ePfuONN7STi2k1TU7Qfirr6upKhNm6dWt6ejpCaM6cOU1jN0OlUplMpgEWPAHA2JlpcXeycHCycGi/jyvXuemmu2XHp4puvFZmKFywYIG/v/+HH3545syZbdu2EY3au9tXrlzp4uKybNmypi+ZNm3aBx98kJyc3HRw2dHR8caNG8RjDMMOHjxYWVl54sSJtWvXlpaWfvzxxyEhIU13kpSURKz+QdCuetH0N1ZtbS2VStXeVtohjUaTmppKTJWu5e7unpOTk52dfeTIkYSEhLS0tODg4KYdHBwcms2u02ySSIRQXFwc8cFD+5ecE7PWODk5dTIwAGbLTIu7Idnb248aNWrKlCnjxo0jRsw7ZGlpGR8fv3Tp0rt372obBw8evGHDBuIxn89nMBguLi5vv/12VVXVo0ePmu0hNzeXzWa3M3kv4d69ewMGDGhrxptmSktL165dW1JSsmTJkqbtlZWVzs7OQUFBQUFBZ8+eLS4uDg4OtrGxqampIYZlQkJCOhz86devn/Z0vv3Avr6+xJ8mAIB2wAeqhvDOO+/k5eW9/fbbnX/J7Nmzw8LCms4hM3DgQA6Hc//+fYTQgwcPvLy8YmNj4+Pjd+/evXTp0mYvbzYm05ZTp069+uqr7fc5f/68ra0th8MJCwtTKpWZmZnELJJaO3bs8PLyGjt2bEhICIfDIT7CXbZs2dSpU318fJKTk3k8XkJCQtM/Izq0adMmW1vbHTt2bN++3dbWVnup/smTJ6dPn975/QBgvshZI8SwWq7EZGBJSUmBgYEajablU3K5XKFQtGxXKBSlpaXNGhMTExctWkQ8lkgkOTk5eXl5SqWy5csHDx6sXdoJx/GGhgaVSqV9oUQiwXFcKBR6e3vX1tY2faFYLG66Q6lUWl9fX19f3/IoSqVSKpUSj2tra+/evfvkyZNmffh8PjEvY1paWlxcHNEoEolkMpn2yxQIBC3za49LIA4kk8n8/Py0q1CRBVZiAkYBhmX0SyqV/v777z/88MOqVatanYK8rQWp6XR6y4kJFyxY8NlnnymVSjqdzmaz+/Tp09ZxDxw44Onpqd1sOhWi9rPN7OzsDRs2aC+nITT7sJTFYmmXEGmGRqNpL4Cxs7Nrth+C9i+PYcOGXb16tbq62tHRsekkkXQ6va17sloe98GDB5988kmzvxsAAK2CWSH1SyQSffnll/3794fBBJMBs0ICowBn7vrF5XK//PJLslMAAMwOfKAKAAAmCIo7AACYICjuAABggqC4AwCACTKLD1QZDIajo+OgQYPIDgJMwcOHD5tOggZA92QWl0IihMrKyqqrq8lOAUwBhmH9+/dvOT0OAN2KuRR3AAAwK3D2AQAAJgiKOwAAmCAo7gAAYIKguAMAgAmC4g4AACYIijsAAJggKO4AAGCCoLgDAIAJIqG4P378OCQkxPDHbUYqlWo0GrJTmB2ZTKZSqchOYXbkcrlSqSQ7hdlRKBQKhYKso5NQ3DUaTWNjo+GP2wyxzCDZKcwOvOcAGAYMywAAgAmC4g4AACYIijsAAJggKO4AAGCCoLgDAIAJggVlAGhFdk3e9ae3smseVIiqZCoZQsiObbOg/5yhPcPJjgZAp0BxB6C5CtGzLTcSo3pGvBE0043nwqGzEUI1kjorpqW2j0qjpmFU8jIC0AEo7gA058p1/nPMj80aeQxu082vr/+wfPC7LBrTgLkA6AIYcwcAIYRSHqcVNhR3vv/HEcugsoPuDM7cAUAIoXDXrk2JgVEo2seNckHTERsAugM4cwcAIYQsmTxLJu/FXrvm6jeJd/7AEcysALoRKO7AfFWInt1+du/l97N26Ef3a3J/vLUD6jvoPqC4AzNVLal9//yqStGzl98Vj8HdHLs2r7Zg250/Xn5vAOgEFHdgjkQK8YoLq6f0GjfWN0EnO7SgczbHfnGr8u6hB8d0skMAXhIUd2B2NLhm/bUtg10GTgsYr8PdchkWm2LWHC5IulyWocPdAvBioLgDs/PT7d9xHL0bPF/ne7bn2K2P+iS15JLO9wxAV8GlkMC8pJWmX6+49duorRhFL2c2/rY+a4d+pI89A9AlcOYOzMujhuI1kR9a0DlkBwFAv+DMHZiXN/vPMdixxEoJ/BYBZIEzdwD0gi9v/DP7ANkpgPmC4g7MgkAuNPARrZlWi/TwmS0AnQTFHZiF9Kc3sqqyyU4BgOHAmDswC6O840g8uhpXUykw+TswKDhzB0C/zpWkbcz4nuwUwOxAcQcmjvTJvIb2iLhfnZdVnUNuDGBuoLgDU3b72b3VV74mNwOLxlwYPO/HW79pcA25SYBZgeIOTJYaV/90e0eCVyzZQVC0+ytcBjep8CzZQYAZgQ9Ugck6/vCMLdvmlR6DO+ypEQvkhffkRTmq6nJVQzVSqRBCFLaF0/vfIx2tgv1eyIIVF1bHeURxGRY62SEA7YPiDkyTWCnZnXPw27h1neksPH9IWVXO9A1iBYZSbR0pNDpCCJdKmlZ2jVSEyyRUG8cXy+Nr4/VKj8H78o68NeD1F9sDAF0CxR2YpgN5R8Ncg72tPTrT2Wr8gg77KMsK63Z9ye4faZnwGtXK7gUizQua+cmlDf/p/xpcFgkMAMbcgQmqldYfe3Rqfr/XWn1WVfesYd8WXC7t0j6Z/gOcP92JsblVm94VXT6ONF3+dNSeY/frqC1Q2YFhQHEHJujc47TR3sOdLBxaPiW5faF66zKaU09Eo3d1txiHazVuvuPSb6X302u2rVTza7u6BwqidPUlALwYGJYBJmhm78lKjapZI65W8Q/9qHjywGHRRrqL5wvvnObg5rDoa+GFv6u/fc/uP6sZHgEvlRUA/YDiDkwTHfvX97ZGLKjbuQ6zsHR8/wcKg/Wye6dQeHGvMrz60BzcXuDVKY8v+tv6elr1fNkYALQNijswferGupptH7H7RliNnYcoOhsYYXr3ebEX9rL17Wn5Ir8VAOg8GHMHJuVyWYZYKWnWSKEzLeNetRo3X4eV/WV4WPXU0yJ/AGjBdxgwKZYMLo43n0wG43A5g+P1elzF4zzBmb/0eggAugSKOzApA5yCSLkFlObYQ3rvquDc/s6/RK5W8OWN+osEzBwUd2CacKVCUfbIYIfDLCztF34luZ4iuXGuky859vDUz7d36jUVMGdQ3IGJ+Ne1jzhe/9cmcfpJQwagWtrYv7W2MWmn/FFWZ/qP9R2RWXH7mbha38GAeYLiDkyBSCGedfwtqUpGbApO79aI+dbTFhs4Bs2pp+3cj+t3f62qreywswWdM9Z3xMEHxwwQDJghKO7AFBx7eCrEuT+bxkIISXOui2+dt3vjMwqVhCt9mb79LEfOrvv9C1wh67DztIDxqSWXYOQd6AMUd2D0FGrF/x4mT+89CSGkqi5vOPCd3bzPMK4VWXksXhnDi5+BOvGrxYZlPaznkKMFpwyQCpgbKO7A6KU8vtjL1tfLyh1XKup2fWk1Zi6jpz+5kTjB0Z38u2F64MTjj07J1Qp9RwLmBoo7MG44wv/OP/Fq4ESEkOT2BbpjT4uIUWSH6oKelm59HQLvVt0nOwgwNV0YlKyoqDh79mzv3r3DwsKatgsEgjt37mAYFhUVhRBSKpXHjj3/jGjQoEFeXl46jAtAMzcq7tAx+kCnIISQRfhIzqA4shO1gOPt3xn7xdCVMA8w0LnOnrnz+fzx48dzudyNGzdqazfh22+/3bVr1/r164lNqVS6atWqhoaGhoYGhQL+2AT6daQgmThtJ1C6PpGvXokzUxpP7Gi/D1R2oA+dPXM/fPjwpEmTpk2bFhwc/M4770yc+M+P05o1a4qKihYuXKhtcXZ2HjdunJOTE4bBsA/Qr48jlvEYXLJTtIndb0jVmb9YfcKZvkFkZwHmpbPFvbi4uF+/fgghLy+vkpKSdnpSKBQcxz/44IN79+4lJiZGRka27CMQCBYs+Gdhs6+++orH43UhtS7IZDIcx6lUOGkyKJlMplaraTSdXaTIRkx5xROVnUs3mRSsOQrNYvyb9fu2WC/7rv2phsuET5lUpiPHXh8p5HI5hmFqtVofOwdtIYYuNF1ftKtDDAajw1Pnzv6M0Wg04jtDo9G0XxB5PN6lS5cQQtnZ2YsXLyYeN0On00NCQrSbTCbT8EWW+v8MfFwzp/O3XSNqFGz/1Pqt9TQnd13tU7fYfcMVudel5/bz2l2p9Zm02svKQ0/fkFQqFcMw+G43MOIN18fbTunEqUxni3tgYGB2djZCKC8vLyCgU0vPWFlZyWSt38fBZrObDuOQgk6n0+l0+HY3MJVKRafTdXLm3iDj27Cs60/8xgmNZ/fwefkd6o/t5HeqNr7NDR7G8OrdVp+h7hH6C6DRaDAMo9O71wcSJo+YoJSst72zY+ITJ068cuXK2rVrFy1a9MEHHyCEPvvss/379yOEDh48+Nlnn+Xl5b399tuVlZWpqanvvvvuunXrpkyZsmLFCj1mB+bt3OO0h3dOK8oLLUfOJjtLBzAOz2riWw2HfsDVzRf/A0BPKC0nv26LTCa7d++el5eXo6MjQqimpobJZFpaWtbV1TU2Pr9/ukePHhiG5eTkNDY2BgYGEj2bKSoqSkhIKCws1NXX8GIkEgkpw0FmTiqV6urMHVfIq75+x2b6Eqb/wJffmwE07NvCjZ1GdyZh+IgYc4czdwMjxtwZDAYpR+/CzxiLxWp6hbuDw/Ol5e3s7Ozs7Jr2HDBggE7CAdAOQco+hmeAsVR2hJDNrOUd9vn17q5BLgNCnPsbIA8wbXCpIjBKqupy8fUzVhPeIjuIjrnxXI4UJJGdApgCKO7A+JwsOlfYWGozdTHV0obsLDo23HNYTk1+paiK7CDA6EFxB0ZGqVb+lrXH0sWbPWAo2VlekKq2ArVx7TOLxhzpHXvi0RkDRwKmB4o7MDIXS9P9bL1duc5kB3lx/CPbxBmn23p2ov/o08WpSrXSkJGA6YHiDozM8UenJvqNJjvFS7Ga8Jbg7F6NVNTqs65cZ08r9/SnNwycCpgYKO7AmDyqzK3iV0S4DSI7yEuhO7uz+oYLzx1oq8M4v5EwMgNeEhR3YEwOp22LR04Yxei/b61Gvy6+cU5V87TVZ6N6RsR5Rhk4EjAxRv9DAsyHsLLoqrJ8UtwSsoPoAMa15sVMbUz6vdVn6RhtjE+8gSMBEwPFHRiNsrN/jrfq52jnQXYQ3eAOm6goL1Q8ziM7CDBNJCwPD8ALUJTk25SUvPVa66e6xohCo1uN+4+KX0POzQHb4eAAACAASURBVOnA1MGZOzAOjSf/sBw1m0I3qUrIGTiMM3BYW8+WCsq3Z+02ZB5gSqC4AyMge3BLI2ywCDWvYegePNcF/eeQnQIYKyjuwAioaNSk8AAc65ZrLekNRsGw7rm8FDAGMOYOjADXb2Ccgy0FmWylUwsbqBaWCIMJqIHOwJk7MA5e1iZykUyrGg58J85MafUpqUpWK6kzcB5gAqC4A0A+y4RZgpT9uKqV+WTOFl/4+c5Ow0cCxg6KO+jGNBpF6UM1riY7h94x3HvRXTzF18+2fCrOM+pG5R2BQmj4VMCoQXEH3Zfk9sX6o7/OSXq3VlpPdha9sxr9uvDcflypaNbOY3DDXEPOl1wmJRUwXlDcQXelUQtS9hW+EmHF5NmzbclOo3f0Hr6Mnn7i663MFzbae/jpovOGjwSMGhR30E1JbqdRrexSZcUjvePIzmIgvITXhOcPtRx5D3buz5c3FjY8JiUVMFJQ3EG3pNEIzu1HwyfdrLwb62GsKy51FaOnH8MzUFn2sFk7RqEkeMWeLb5ASipgpKC4g+5IknUZ4/DSsYYwl2Aeg0t2HMOxe+NThleflu2jfOLOP7mswXHDRwJGCoo76H5wXHjugOXI2aeLz4/0MZcxmfa5cp3/GPMj3LAKOg+KO+h21A01dGePSheHWmn9IOcBZMfpLqyYlmRHAMYEph8A3Q7V1tF27sd0hWhN5IcmsOgSAKSAnxzQTfEY3CCHQLJTkEPdUF3z80rU2gi7WCkxfB5gjKC4A9DtUG0ccblMmp3RrL2IXwILZ4NOgmEZ0J3gOILPDBFCCPGGTxemHmD3G9K00cfa08fak6REwMjAmTvoRup+/0L+KEupUa2+8jWOzPqyP3ZQhEYukz/MIjsIMFZQ3EF3oax4rCh9yPDsTcdoXwxdacKzt3cKhcKLmyZIPUh2DmCsoLiD7kJ4/hA3erKJrZL6MjghMaqap4oWN6zm1ubfr84lJRIwIlDcQbegqnsmy7/NfWUM2UG6EQqVxoueLLpwpFl7pajqr9zDpEQCRgSKO+gWRJeOWkSMojDZxfwncnXzaW/NlkV4guWo5mtkD+0Z8aD2Yb20gZRIwFhAcQfk00hEklsXuEPHa3B85cUvngoryU7UXVCYbJpjj2aNTCojsmdYasklUiIBYwHFHZBPnHGK3TecamV3t+q+Dcva26SXS9WJBK+Ys4/TyE4BujW4zh2Qjxs5TqOQIYTOPr6Y4B1Ddhwj0N+pr1gpLuKXwGXvoC1w5g7IR2GyqTwbmUp2rfyG+cze3iWSm+ebLuJBQZThnsNSii+SGAl0c1DcQXdxqfRaP8feNixrsoN0R5K7lyS3/rVYxwivmKci+HACtAmKO+guzj6+mOAVS3aKbooXO1V44e+mU4m5W7qtj/qExEigm4PiDsgkSk/G5VKEUIOssaihZIhbKNmJuimmbz+MyZHl3SA7CDAaUNwBaRRlD4XnDiAaHSFkw7LaO/4XOpVOdqjuixs7RXgR7l0CnQXFHZBGdOEIL3oyhfr8ki0uw4LcPN0cp/9QNb9WUZLftLFWWl/ELyEpEejWoLgDcqjqq2QFdzjhCWQHMR4Yxo2aKEz712wEdZJ6pVrZ1iuAOYPiDsghunTMIjwBY1kghEQKMdlxjINFeAIFw5BGo23pZecbYOdHYiTQbUFxByTQSESSm+e4UROIzb25h2sldeRGMgoUBsv29Y8RBj+2oGNwhyoggfjaSVbfCKq1A7H59sC55OYBwPTAKQAgBy96MtkRTMfO+/sK6grJTgG6FyjugAS84dPprl5kpzByTW5oomO008XnScwCuiEo7oBMd6uyH9YXkZ3C+PD//kly+5+JZUZ4xVx4ckWpUZEYCXQ3UNwBmXbe31crhY9Su4zVJ0yY9j/tppOFg7e1x/WnN0mMBLobKO7AoHD1P2eXVeLqMkH5YJcQEvMYKVbgIFwplxdma1tGeMWkwAzvoAko7sBwVDVPG3/4r3aw+EzxhViPKBpGJTeVUaJQeFETRZeOahuGuQ+5U3W/US4gMRToVqC4A8MRXTrKDBqCKBRiM7XkUoIXLM3xgjihw+WP81S1z2f9taBzwl0HXXxyldxUoPuA4g4MRCMRSe5cYoaNJDbzagsQovSy8yU3lfGiMJgW4Qmiy8e0LRP9R3HobBIjgW4FijswEHHGaVafMIxnQ2yeKb4Ap+0viTt0vOTWBY3s+eQNQQ69R8BbCv4fFHdgEBq16MoJ3rBJ2oYy4dN4r2jyApkCqpWdw3ubMCaH7CCgO4LpB4AhSLKu0Bxc6T18VFIp0bI1bj25kUwD3cWT7Aigm4Izd2AIosvHuU1O24H+XC7LKKiHqQgAnLkDg7Cds5Jm60R2CrPgbe3hyLEnOwUgXxfO3GUyWU5Ojlwub/lUXV1dXd0/9xmqVKrc3FyRSKSDgMAk0OyctVdAFjc+gcuxdUtRkq989oR43IPnyqAyyM0DuoPOFvfy8vKYmJi//vorJibm2bNnTZ8aO3ZsVFTUxo0biU2xWBwbG7t79+74+Pjc3Fwd5wXGT6wQPxNXk53CpChKCwRn95KdAnQvnS3uiYmJixYt2rhx44IFC3bs2NH0qeTk5LVr12o3Dx48GBcX9/XXX2/cuHHz5s26DAtMQpBD7162cHm7LlmEjZA/zFLX//MrU9Nkzkhgnjo75p6dnT1r1iyE0IABA86ePdt+z5iYGKJndnZ2q32kUukvv/yi3Zw9ezabbeibL9RqtVqtNvBBzQ0ul0qzrnDCRmhb1Go1hmGU/x+iAbpBY3AGxwsvH+ON+w9CSIPj808v2RKz1o79/K4CtVqN4zgGSzgZFlFh9FFnOvND1NnirlQqqVQqQohOpysUis70pNFobfVUKpU3b/4zg93kyZMN/21HfHhARAV6Iks/qS5/RB0wTNsil8s1Gg38WtU52uCRjT++Tx82hcJkI4QCbHxTii9O9h1DPCuXyzEM0zRZfBUYAFEAcT38FcVisXRW3D09PUtKSgICAoqLi7282ltmgeiJEHr8+HFbPS0tLX///fdOHlp/mEwmFHc90mgE18/YzlnJ4Dy/yyarOifn2YMZvSfRaHCZlq5xOPJeA/HsqxZRExBCY/xH/Hjrt9n9phFPUqlUDMPodDqpEc0O8X3OYJDz+XZnz5fnzZu3adOmc+fObd26de7cuQihlStXFhcXI4SSkpLOnTt37949Yix+xowZu3btSklJWbVq1Ztvvqm/6KCbk+ZkYJY2DM8AbUvSo7N0DOqLvvCGTRJdOoo0GoRQf8c+YqWkiF9CdihAms4W98GDB2/atCkvL+/777/v378/Qig+Pt7G5vmIXnBw8NSpU4nHPXr02Lt3b35+/vvvvz927Fh9hAZGQZR2tOl8A2Kl5HrFreieQ0iMZNoYnoEM7z7qxlqEEAVR4j2jU4ovdvgqYKoo+hgPal9RUVFCQkJhIck30UkkEhiW0R9F2aO6P9a5fPYH+v/p2k8Wnbv+9NYnocvodDoMyxhAmeDp0tRP/p60k0qhEmPuMCxjYMSYe3cflgGgS0Rp/+NGTURNFuI4U3xhpHcciZHMTU9LN2cLp5uVd8kOAsgBJ1BAD3AcYZhFeIK2oUL0rEzwNMw1RClv71IroFuLQ/5jzbIiOwUgBxR3oAcUiu1rHzRtOFN8YbhnFA2jKsmKZJZ62/ciOwIgDQzLAEOwZlqN9oknO4W5EGecFpzeTXYKQDIo7sAQJvca423tQXYKc8H0HyhKP4krZGQHAWSC4g50CscRzGpCNpqdM9Ort+TWBWLz+1u/1krr2n8JMD1Q3IEuyfIy6/d8TXYKgLjDJgkvHSN+0b4X8qY9247sRMDQoLgDXRKmHWX1DW/acqsy6/aze2TlMVtM334YgyXLv40QwijwY26O4H8d6IyyskRVXc7uH9m0sa9DQA+eC1mRzBk3arzo0lGyUwDSQHEHOiO8eIQbNYFC/df1tSway8nCkaxI5owdHK2sLFFWliCEcIQ/EZSTHAgYFhR3oBtqQYMs57pFxGiyg4DnKFSa/Ztf0OxcEEJylXzZhU/rpQ1khwKGA8Ud6Ib46glOcDTG4WpbcITDekDkovfwpTCYCCEWjTXEbfC5kktkJwKGA8Ud6ACuVIgzznCHTWzamF2dt/LiF2RFAs0keMacLj5PdgpgOFDcgQ5Q6Az7d7+iObg1bTxVlBrqOpCsSKCZIIdAhVpRUEfybKzAYKC4A92gu3g23ZSqZOnlN0Z4RZOTBjSh5tcqH+dSECXBKxZO3s0HFHegF+dLLg10DrJmwpSE5FML6oUHv0Ma9WifuPMll+VqmJjTLEBxB3pxquj8aJ/hZKcACCHEcPfHrOzk2RkOHHt/O58bFXfITgQMAYo7eCnKp8WKx7nNGp80llVJaga7BJMSCbTEjpoovnQUIbQ68oPInmFkxwGGAMUdvBTBmT3KyifNGk8VpY7yjoO73rsPZu8wjVwiL86xZPAoiEJ2HGAI8OMHXpyq5qmiJJ8T2nz4Jd5r2ES/UaREAq2jUDiR40QXj5CdAxgOFHfw4oQXj1hEjqXQm6//62vjbc+BaQi7F/ag4fLHD5RVpQghkUIM95eZPCju4AVpRHxp1hVu5Diyg4BOodAZvLhpqupyhNCenEONcgHZiYB+wRqq4AWJrpzgBA/DLCzJDgI6ixczhXiwMHgeuUmAAcCZO3gRuEIuvnaaGz25WXtaafqZ4gukRAIANAVn7uBFqBuqOYPjafauzdqj3V8hJQ8AoBk4cwcvgubU02rcfLJTgBeF40q1cnfOQRzBx6omC4o7AOZFza+t2ryYTqFeKs24V5VDdhygL1DcgW40yPiPGorJTgE6RrW2x1gcSdbl0T7DkwpTyI4D9AWKO+gaXK1qtf3Eo7PJUCmMBC/uVeH5QyM8h2VW3BbIhWTHAXoBxR10Td2ONbIHt5o1anDNyaJz43xHkBIJdBUrcBBCiF5cENkj7FRxKtlxgF5AcQddoHxapKwsYfoPaNZ+veK2Hdva18ablFSgyygUXuw04flD4/1GnXh0Bj5WNUlQ3EEXCFIO8GKmUKjNr6A99vDURD9YGtuYcAYOU/NrfIUqLt3iVmUW2XGA7kFxB52lqi6XF2VbRDSfEaxSVFVQVxjjEUlKKvCCMIwbPVl48cj0wIkNMj7ZaYDuwU1MoLOE5//mDh1HYbCatR9/dHqUTxyD2nz6MNDNWYQlsPuExdk4kh0E6AWcuYNOUfNrpdnprU4Tdrcqe7zfSMNHAi+JQmdQobKbLjhzB50iSk+2CEtodZqwX0ZuhvUfAOhuoLiDTrFMeA1XKVt9Ciq7CciqzkEIDXDsS3YQoDMwLAM6hUKjYywO2SmAXogzTlsrNH5wJatpgeIOXtz96ly5WkF2CvCyVLWV1plXLejwy9ukQHEHL65GWi9RSslOAV4WL2ay5PZFdWMd2UGALkFxB+3RyMT8Y9vbejbOY6gNy8qQeYA+YFxrTmic6NJRHOFKTetzBwGjA8UdtEd0+YRGAhNLmT5ezFRxZkpi5vbD+SfIzgJ0A4o7aBMul4ouH7eMn0F2EKB3VGt7zsCo8ErR0Ycn1bia7DhAB6C4gzYJLx9jBYbQHNxaPrXm6jelgnLDRwL6wxsxy/lmpiPT+mpZJtlZgA5AcQet08gkokvHLEfMavnUo4bi7JoHrlwXw6cC+kO1tLUa/59J7rFHCpLIzgJ0AIo7aJ3o0lFW78GtnrYfzj8xpddYGkY1fCqgVxZhCdG9R1aKqgrqC8nOAl4WFHfQCo1MLLpyotXR9gZZY3r5jbE+sC6HaaJSqBP8Rx99eIrsIOBlQXEHraBQMJtXl7Z62n7s4alo91csmTzDpwKGMc53RHpZZqNcQHYQ8FKguINWUJhsdr8hLdvlasXxR6dfDZxo+EjAYKwYvJ8HLrVitjJJHDAiUNxBF5wuSu3rEOBu2coZPTAZahGf9sdmNb+W7CDgpUBxB10w0Cnozf5zyE4B9IvKs7GIGCU4u5fsIOClQHEH/yLLva6RSdp61sOqp4dVT0PmAaTgxU6TZl+rrcjX4Bqys4AXBMUd/ENdX12/71ukgokezR3G4fKiJx84/wN8rGq8oLiDfzSe2cMdOh7jWrd8Cs7gzA132KQpRUJuLYy8Gyso7uA5VXW5/MEtbvTkVp898ejMrcosA0cCJKLQGbz46Y0n/yQ7CHhBsMweeK4xaSc3dmpbyy1N9B9t4DyAdBbhIxVF2bhCRmGwyM4CugzO3AFCCClKHiifFnEjx5EdBHQjFCrN9vWP9zw8/qihmOwsoMuguAOEcJx//DfLMW9Q6Ayyo4Buh01j78k5RHYK0GVQ3AHClQpWwCBOcHSrzyYXplRL4FM18zXONyG75sHjxlKyg4CugeIOEIXBtEyYhSiUlk/VSxt+zdrFpMIZvfli0ZjTAsb/dQfuaTIynS3uOI4vXrx4zJgxCQkJ5eX/WqXh1q1b0dHR8fHx33//PUJIKBS6ubkNGjRo0KBBx48f131kYED78/43yjsOphkxc+MdQm+WXn9S9YjsIKALOlvcL168KBAITp48uXTp0rVr1zZ9aunSpX/++efZs2f3799fUVGB43ivXr1u3bp169atCRMm6CEzMJAGWeOZxxdgmjDAdXAfzfTedek7soOALuhscb927VpMTAxCKCYmJiMjQ9uuUqlqa2s9PT0xDIuMjLx58yZCKD8/f9q0aWvXrhWJRK3uTa1WFzehVsOajeSQP8rCVcq2nt2Xd2SEV7Q929aQkUD3NCvhg5vS8vLyHLKDgM7q7HXuAoHA398fIcRms8VisbZdLBaz2WziMZfLFQgEbDb77Nmzrq6uiYmJy5cv//XXX1vuraGhIS4uTruZlpZma2voCiKVShUKBZVqvssJqWvKxX9+yXtvK8WilVGXehn/dFHqz9FfC4VCHR5UKpXS6XQaDW6wMCi5XI5hGJ1Of+E9UGi8pdavyE8fEM5YqcNgpk2hUCCEGAzdf2TF4XA6rF2d/RlzdnauqqpCCNXU1Dg4OGjbLS0tBYLns088e/YsMjKSTqcHBQUhhN57772oqKhW92Zvb19YSPI6XlQqlclkmnNxr9231yrhNa5z6/P3/vnwwCif4R4OOp4mjEajQXE3PAaD8ZLFHSEUN/b9qo1v058+ZAWE6CqYadNfce+Mzg7LTJgwYf/+/fX19YmJiZMnT0YInT59+u7duxQKZciQIX///feTJ08yMjIiIyNLSkry8vJqa2t/+OGH8PBwfYYHL06ac11VX23xypi2Onhauc/q3fpUBMA8Uag0qwlv8o/+iqtVZGcBHetscffx8Vm9evXSpUuZTOaKFSsQQnK5XKlUIoQSExNv3ry5du3a3bt3s1gsuVy+ZcuWRYsWUanUb7/9Vo/ZwYvCVcrGY9utJ79DobZ5Bj3ON8GG1coMYsCcsfuGs/z6iesqyA4COkbBcdzAhywqKkpISCB9WEYikZjtsIww9aDiSYHdfz43/KFhzJ0ULz/mrnW5LEOlUcV6DH35XZk8codl4GfM7Kgb64QXjzj+9/u2OmhwHGvthiYAEEJRPSPIjgA6Be5QNT+4xnryQpq9S6tPylSy9de2GDgRAEDnoLibHaq1Ayckpq1nWTTW56+sMGQeYKQUZY+QBu5Q6b6guAMAuqxB1vjlhQ2CtP+RHQS0CYo7AKDLrFmW1fbWZ24dUNU9IzsLaB0Ud3OhfFYquZPWTofMittXyzMNFQcYNwqiLBz81iF3Rs3/tpGdBbQOirt5wHH+3z9qJK1P9YMQUqqV3938lU2D1dRAZwU59A50CUpSFknvp5OdBbQCirtZEKUn42oVt+37UQ8+OOZj4xXi3N+QqYCxWxgyP8lO8+T4zxqJLicgAjoBxd30qeqrBKf32Mz4b6vLcSCEaqX1h/KPvxs8z8DBgLFz5TrH+8Qe87flH21lfkBALijupg7HGw5s5cW9Snd2b6vLr3d3jfNLcOU6GzIXMA3z+s3MpAlqfX3IDgKagztUTZz42ilcLuNFtzkFWF5twd2q7D3j4GMx8CJ4DO7PCd+4cJ3IDgKagzN3U6aRSQRn/rKZ+T7C2vyP/vH2b28NeB0+SgUvzJXrTEEwX0W3A2fupgxjcRw/3Ebl2bTT54Ow97ys2xyxAQAYKThzN3HtV3aEkLe1B5x2gZcnVcmulF6r371RLWwgOwtACIo7AEAnlBolh2FBc3Bt2LsZGXwicdASFHcThCvkuELWfp+82oIKEdw4DnTGksELce5vmfCaRiYWXTlBdhwAxd0U8Y/9Kji7t/0+VkxLgRxuPAG6hlFtZ68UpOxTVpaQHcXcQXE3NdLsDPnDu5YjZrXfzY3nEmDnZ5hIwKwILFjSUdPqd2/ElQqys5g1KO4mRd1Qzf/7B9vZKylMNtlZgJm69vTmZlEm1cWDf/QXsrOYNSjupgNXKev+2MCNnsLwDGirj0wlL6gnefVaYNrG+MYzqYzzwX4asUAjk5Adx3xBcTcd/P8lUq3seDFT2unza9afRwqSDRYJmCEKonwY/t6+/OPSqfMxFofsOOYLiruJkNy+IC/KsZ39QVuzgyGEblbeTS+/sSTkTUMGA2bIlev8Rr8Z69K3qGAdPvJAcTcRrF7B9gtWtzPULlKIN2X+/FH4Ui7DwpDBgHma6D/anm37+72/yA5ivqC4mwiMa01zcGunw7c3tkX1DA927mewSMCcEYMz50ou3avOVZTkCy8eITuR2YHibhaSCs8+bix9c8DrZAcBZsSKabkpZnUvW1+ag6s4PVly+wLZicwLFHdjhuOq2soOe1WInu3I+uuLoR8xqQwDhAJAy8vag0VjYhaWdv9ZzT+6XVHygOxEZgSKuxETpOxrOPh9h91cuc4/J3ztbtneoA0AekV38bSdtbzuj/Wq+iqys5gLKO7GSnr3suTGOdvXV3amcw+eq77zANCOcyVpT5xteHGv1m1fpZG2uVA70CEo7kZJXpzD/1+i3ZtrO5zRF4DuoI99gJ+NDzdqAtNvQN3O9TAzgQFAcTc+yvLCup3rbeesbGdZVIRQhejZn9n7DZYKgHa4cp0xCgUhZD15Ibt/ZDtLgwFdgZWYjIyqurz2t9U2Uxcx/Qe039OV6zyl1zjDpAKgsygUbuRYskOYBfj9aWREl49bTXiTPWBoZzrzGFx95wGgS04WnduTc4jsFGYBiruRsZ66iBMc3U4HpVqpgXVwQHcV4TroVFHqqaJUYlNRWkBuHhMGxd2kaHB8/bVvjz48SXYQAFpny7bZFLtmx709157exNWqhkM/NJ7YQXYo0wTF3QjgcmmnuiF8y42fG+WC8b4J+o4EwAvrwXPdMOzTb67/8KChyOHdjfJH9/lHf4FlV3UOint3p3xW+mzj26raig57/nhrR0lj6VfRq+hUugGCAfDCAu38P45Y9unlL8tVjfaLvlI8KeAf/hnqu25Bce/WlOWFtds+shr7Bs2+g7uQtmftzql98E3MGjaNZZhsALyMMNeQhQPnLT//uYyKOSz8UvnsSf1f3+AqJdm5TAcU9+5Llnez5pdPract5oTEtt9zV/bBjKc3N8d8YUGHtRGA0RjhFb11+HoOnU1hsu3f2YCrlLW/foarVWTnMhFwnXs3JbqaLEzZZ7/gi3bWzCNUS2ovl2V8G7fOkskzTDYAdEU7MQaFzrB741PZg5sUKhQl3YD3sTtqPP6bNO+Gw9ItNDuXDjs7cux/G7UVa3sBJgC6Pw2ueSqs7Nl7MNlBTAcU9+6I5uzuGD8T43T2FiSo7MDYPaovrhA969l07lIcb2fNSNAhGHPvjizCEjqs7H9m75epZIbJA4C+9bLzjfGIbNoiSNnPP/wTDMG/MCju3YZG06XucR5RDFh8A5gipUaFI5w7bKK6sb7mpw/V9dVkJzJKUNzJp5GI6nd9JUg92KVX9bR0wyjw3wdM0J/3962+8rWUiuzmr+L0j6z6donkThrZoYwPVAeSyR9lVW16l8K24EVPbr8njvDD+UkNMr5hggFAljeCZlozrd45s/yxoIwbPdlh8dfC1IN1f27QSGCVjy6A4k4aXC7l/y+xfu8W25n/tXl1CYXBbKezQCH8/PLG808uq/Gujd4AYHToVPr7gxfO7jNt2blPU0su0Z09HP/7PdXCqmbbSriLtfPgahlyyHKvNxzZxvIb6PRhYoefnd6svPv19R9jPCI/j/yAjsF/GTALCd6xvrbeX1zddO3pzWWhb1tPW6wRNcL1M50HZ+4k0MjEgnMHbWetsJn53/Yru1yt+P7W9k2ZP30SsWxR8Hyo7MCs+Fh7/jZqqy3L+pO09QghjGtFdiJjAsWCBBjLwnHZ1g67PW4s/SRtfV+HgJ2jf+AyLAwQDIDuhkllLA5ZIG1x1a9aUF+34wursW8w/QeSEqz7g+JuCLhapXxazHD379KrXCwcV4QtCnHur6dUABiLptPhlTSWuVu6US1tefHTGw79SHNytxozl+7qRWK87gmGZfRMoxZnnq36coHw/N+d6S5VybTrKLFoLKjsADRzvuQy8YAdNMTp4+0s/wG1v3xa98cGZWUJmbG6Hwpu8E+fi4qKEhISCgsLDXzcZiQSCZPJpFKpeto/rpCJM1NEaUepdk5Wo15nePXuzKuOPTzla+Pd16GDycKMl1QqpdPpNBr8yWhQcrkcwzA63TQn+scVctG1k6ILf7N6D7aZ8V+y4/xDoVAghBgMcm42hJ8x3dOIBaK0o6KMU0zvvrazP+hkWSdM9B+tv2AAmJhD+cfvV+e91mdKYPRk7pDRinKSTxm7FSjuuocrFRqpyHHZ1g5X2ODLG489PHWrMuvHERspCK7xAqBrJvqNolKwNVe+cbRwmB44cYjXvyaVlD24RXdyp9o6khWPXDAso4NhGWVlCdXaHmN3dhJHNa7OrLh9quj83ar70e6vzAic9K/JxtFLzgAAEH1JREFU8EwaDMuQwrSHZdS4+nJpxoEHR4UK0VjfESO9Ym3ZNgghwZm/RFdOMHr6cQbFsYMiKEy2gYOROywDxf3Fi7uyskSakyG9c0kjl9jN/YTh0fFA+TNx9ZGC5NSSS25cl1E+cdHur5jb2klQ3Elh2sVd60Hdw+TCFDaNtThkAdGCKxXS7GvSO2nywmym/wD2wChW4CCMZaALi2HM3ZjgapX80T3Zg1uynOsIIVbfMJtX32N49u7kjXN8WSOTyvgx/ivtAjQAAF0JtPMPtPvXBcf5ghKWj7dXcLRGKpLevya5maqqKrMcOZushIYExb1rcIVMmLKfFTjIbsFquotnh/2VGlXinT+WDHqT2Ayw8wuw89NvRABAEzwGFyGEsbkWYSM0A4c0ux9QdDUJY3IYngE0B1MbGoXi3hocV1aVKp4UKJ7kK57k273xqfY/HmNzHZZsbut1z8TV+XWPnjSWzQ2aQbTQMdqsPlMMkRkA0EKzE/mvr/94rzqnj32vPvYBQQ6BAXZ+GMtClpvZeHoXLpMy3P0ZHr0Y7v50915Ung1ZmXUFivs/FE/yxRmnlc+eqJ6VYjwbhkcvhkeARfhImp1zWy+plzY8qHtUUP/oQd2jgrpCOpUeYOvby85XjauplOej+fZsW0N9BQCA9qyP+rhe2pBbm59d8+C3e3sKG0rcLd0ig8Pnzv1YI+IrnhQoSh+KriZTaGft/rNa+yqNTIw0GoxjZAvQd7a4azSaDRs2XL9+PTIy8qOPPqI0GWLOyspat24dhmEbNmzw9/dHCP3yyy/Jycm9evX66quvyPowoRU4rhY2qOur1fwaVUO1vKZCybO2GjVH+zyFwWJ4BFiEjaA5e7R16UtBXaEt29qBY09sJhel5NYU9LLzneQ/upetnx3b6H/bA2DabNk2Q3tGDO0ZgRBSqpUPG4r4MgFCCONas/qEafz7HX5wdH6/WURnpUYlUoiZeXf5f/+EqFS6kzvNwZVq7UC1caBa2TM8AzFW970gorPFfd++fbW1tSdPnnznnXeOHDkydepUol2j0cydO/fUqVNSqXT27NnXr1+/du3ayZMnT5w4sWXLlq1bt65cuVJv4f8fjmukYlwhxRVyjUSkETeqxQJ271CMa63tUv3dMmV5EcbhUq0dqTYOVBtHzMaJ0dOn6W4U9o6PMKFAIRA8Ta+TNtRJG2qldXXShlcDJsR5RhF9lBqVRCnVvuT1vtP1/tUBAPSDTqX3sf/XRW4MKmOMz3DtZjG/5IMLa6QqmUOEnT3T2h4xbZV8nrQ+qL7YXSC3mvAm5uKp1KioFAyjYPz/JSKEMA4Ps7DELCwxDk/DtMB41si+zT/99aqzxf3UqVNLlixBCM2cOXP37t3a4p6fn+/u7u7m5oYQotPplZWVp0+fnjFjBoZhM2fOnD17dqvF3ZlDV5Q9QgghHMdlYoQQrlbhchkrKIJCfR5JIhepr55CCGmkYoTjAoVApBDjChnd2dPilTEihRhHOAOj29+91Xj8N4zDpTBYpRZUL6o1xrXELKyo7r3OPcsUKyUaXCNXKeThAVKKvxxX+dl4Tek1DiEkkUhqlQ2Xcv6e3XcaccRyQcUf9/fzmDwrJs+Obetj4xnmGmLLtna37KFNbsITAwAAaBjVyeKfm5562fqemPqXXK2oFtfUSuurxTU10vpGuYDiFmrvFET0uVSazqQyh/YMZ3r3VQvqU+rvpTUUM9Q4U6lmKtUWTC63XySLxhrjG2/PtpU9uNV4YsdjNupBs2IzLSgMJoXJrmYiVa8gmmNPYodcuoWi6L5aJHDlOlEQhcJgUWg0qUbBYVtpr7fGEd7hbY+dLe61tbV2dnYIIXt7++rq6pbtxFM1NTVt9WzKebJL/OXlLdsPuf5swXk+svHNze/f49shhDC2BaJQNkizGzA5YlOQsAydy+AyLCiIYsuy/nzwcuvQBOIldx783SfweaWWadQ5hQ8s6BwKojBpDBbLyprKZFKZPTmuIpEIISSRSCwY7DjXocQmQsiN6bwh4pOWqXC5RiSH9b10A65zJ4WZXOeuPzaYlY2FlZ/FP3NPautGuH3I803fgQihEFmwo/CpTC2Xq+RCuUiikmIUTCKTiERClpqBnDxZU5eUVV5z43hhKgqulOEKeXL9tbz8fErR8xFskVKskYmRSvWDrDcFUZBSjqtUP3ArlgidufPXEH1UVLU1u4PZ7Tv7M2ZjY9PY2IgQ4vP5tra2Ldu1TzXtqa37zdzZXXL79m3tprW1NaXFdeJrYz5tuvkL6vjS1IWh85pufhy5rJ3OGIbpdeIw0CoqlQrF3fDodDoUd8Pgcrke9s/PwVu7iYmLbO2n+fxrvqnlaFKHu/2y60k6O+VvTExMUlISQig5OTk2NhYhdO3aNYFAEBAQUFhYyOfzq6qqGhsb3dzcYmJikpOTiZ4xMTGtHxXDbJpoWdkBAAC8jM4W9/nz59fU1IwdO1YsFs+aNQshtH///qqqKjqd/t13382YMeONN95ITEykUCjDhw/38vIaM2bM5cuXV6xYoc/wAAAAWme+c8vMmDFjzJgxc+bM6bgr0J0FCxaEhIQsXLiQ7CDm5f3333dycjLEpWugic8//xzH8XXr1pFydFiJCQAATBAUdwAAMEEkXLSAYZhGo/noo48Mf+imHjx4IJPJcnNzyY1hbrKysioqKp48eUJ2EPNy/fp1DofT0NBAdhDzkpGRgeO4PmrdkiVLXF07mFmWhDF3hFBycjJUVQAAeDHz5s1zdOxghSlyijsAAAC9gjF3AAAwQVDcAQDABEFxBwAAE0Rds2YN2Rn0BcfxgwcPHjlyxNLS0sXFBSFUX1//008/ZWZmBgQEsNlshNCtW7e2b99eXV3dp08fhNCdO3d2796dnp6enp4+ZMgQmBeh8+rq6lJSUk6ePDlkyBCiRSqV/vrrr1evXg0MDGSxWAihgoKCX375paqqini3EUJJSUmHDh2ysbFxcnJCCInF4sTExIyMjL59+zKZTLK+FiMiEokuXLhw/Phx7Tum0Wh27959+vRpT09PKysrhFBlZeW2bdvy8/P79++PYRhC6OrVq3/88QeVSvXw8EAIHT58OCkpKT09vby8vG/fvuR+RUZBIBCkpqaeOHFi4MCBxIw9arV6586dKSkpPj4+PB4PIVRWVrZt27aioqJ+/fpRKBQ+n0+8JDQ0lJjSSqlU7tix48KFC35+fhYWul+z25TP3L/55pv09PRx48Z98MEHDx48wHF81KhRvr6+AQEBU6ZMQQjl5OQsWrRo7Nixt2/f/u677xBC165dKy0t9fb29vb2Jju+kblx40Z2dvY333yjbZk/fz6LxfLw8Jg2bRpCqL6+fubMmbGxsRcvXkxMTEQIHThw4NChQ/Hx8QsWLCgrK0MIzZkzx8bGxsXFZebMmWR9IcaloKDg6tWr27dv5/P5RMuaNWuKi4vDwsImTpyoUCjUavWECRMGDhxYU1PzwQcfIIQyMzPXrl07atSoDRs2ZGRkIIR27dplY2Pj7e1NnAOBDuXk5GRmZv78888SiYRo+fDDD2tqaoKDgydMmKBWqxUKxcSJE8PCwh4/frx69WqE0L17927durV161ZiNjGE0NKlS8Vicd++fSdOnKiXC1tw0xUTE1NcXIzj+I4dOz7++ONnz56FhYURT8XHx9+7d+/777/funUrjuO1tbV9+vTBcfzHH39ct25ddna2UqkkMbnx8vLyIh4IBIKgoCDi8fDhwwsL/6+9uwtpqo0DAP43dPPMNXEuS/IDmTQT3RIaKBRGYEGKNNBBhUsQRe1CEBRMFLfq0hs/LoMuhOymiyAt6Morxa/KL/xanW3pnMu5D5c7bud5Lx44DHvfel+zV3b6/64Osgef8z+HPzv/8+z5rz19+tRsNhNCtre39Xo9IeTGjRsrKyuEkP7+/t7e3u3t7cuXL9MhV65ccTgcJ3ACsenatWssy9LjCxcuhEIhQkhTU9Po6OjY2FhNTQ0hJBKJ5ObmEkKam5tfv35NCHnz5k1jYyMhpKKi4t27d+vr6yd2ArFJr9e73W56rFarI5EIIcRkMo2NjY2OjtLYhkIhjUYjDCkoKAgEAoSQSCSiVqt5nieEVFdXT05OHvv0xPzNPScnZ2pqCgCmpqZYllUqlV+/fvV4PIFAYGlpyWaz5eTk0J2HJycnP3/+DADnz593uVx9fX3FxcX4i49fsbGxIfzIIjs7m2VZu92elZUFACqVyu12A4Dwl+zsbJvN9uXLl4yMDGGIzWY7obnHsHA4TAihe8zSGApBPnXqlFwu9/l8NpstOuwAoNfr375929LSUldXd7Lzj1F+v18ul9OS16Gw02txcHBwaIjb7VapVLTw+5vudjFvq/348ePW1tbh4WGlUpmcnJyQkDAwMHDv3r3k5GSNRqNQKK5evTo+Pl5ZWZmXl3fu3DkAMBgMBoMBAMxm8/DwMO5vdWQMwwg39P7+vkwmYxiGPpASQuh+7omJiRzHSaXSUChEP3BoyElNPnZF9yfY399nGCY6qhzHJSYmCheChh0Auru76QdKSkqsVivWJP8rqVQafesyDEMIEcovPM9/38BAuArCkGOflZi/uaenpz9//py+UKU7y9+8eXNkZOTZs2c7OzuXLl2Ki4t78uTJq1evKioqiouLo8eGQiHs4/Er0tPTNzY2OI4jhCwuLmo0Gp1OR5+TPnz4kJ+fDwA6nU54tNJqtVlZWZ8+fQqHwzzPr66uqtXqn/wP9J24uDilUrm5uQkA09PTOp2usLCQBtnj8UgkEolEcijswliaj7CPyhHQwNJn/ZmZGa1Wq9VqaZCdTmdqaur3SzNOnz7NcRxt5/T+/fvf8R5bzBdyZGTkxYsXXq83NTWVvkHt6OjY2dn5+PFjZ2enQqHw+/30DZ7Vah0aGgKAlpYWr9cbDAZdLtfDh3/Tcg/9k4mJid7eXpfLZTQa6+vry8rK2trabt26JZPJqqqqUlJSysrKBgcH6+vr5+bmBgcHAaC9vb22traoqMhqtZrNZqlU+uDBg/Ly8vj4+Pv378vl8pM+pxjAsmxbW9vCwkJzc7PRaDSZTI8ePaqqqlKr1SqViubu/Pz8O3fu2O12s9kMAA0NDQaDYXZ2dm5u7uXLlwBQWlqq0WhWVlauX79Oiwnox5aXl7u6utbX1+vq6u7evWs0Gi0WS2VlZWZm5sWLF3NzcwHgzJkzJpNpbW3NYrEAwPz8vMVisdvtNTU1JpPp9u3bPT095eXlZ8+eLSkpyczMPPZJinz7AbvdnpSUJPQF5DiOFhyFxlcej8fv9ws3NM/zLMtKJBLa8hv9exzH7e3t0WOZTEaX5Xm93nA4HN1t0eFwpKWlCfE/ODhwOp3Rd/bu7i7P89GtHNEPRCIRn89Hj2nJBQCCwaDP56OVRmpra0sulwvr7XiedzgcGRkZtEz87ds3h8OhUqlSUlL+9zOISeFw2O/302Mh7Ht7e4FAgC7qpZxOp0KhoLWv6CEMw9DFwYFAIBgM/nSXmKMReXJHCKE/k5hr7ggh9MfC5I4QQiKEyR0hhEQIkztCCIkQJneEEBIhTO4IISRCmNwRQkiEMLkjhJAIYXJHCCERwuSOEEIihMkdIYRECJM7QgiJ0F+sVcvlP0xh3AAAAABJRU5ErkJggg==" }, "execution_count": 72, "metadata": {}, "output_type": "execute_result" } ], "source": [ "postμ_theoretical = posterior_μ(bayesian_update(μstar, vstar, κ, θ, y)...)\n", "plot_posterior_μ(nothing, y, postμ_theoretical)" ] }, { "cell_type": "code", "execution_count": 73, "id": "6128660d", "metadata": {}, "outputs": [ { "data": { "image/png": "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" }, "execution_count": 73, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pred_theoretical = preddist(bayesian_update(μstar, vstar, κ, θ, y)...)\n", "plot_preddist(nothing, y, pred_theoretical)" ] }, { "cell_type": "markdown", "id": "5052ec4f", "metadata": {}, "source": [ "### n = 20000 で事前分布とデータの数値の相性が悪い場合\n", "\n", "前節の続き" ] }, { "cell_type": "code", "execution_count": 74, "id": "9de537a5", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "dist_true = Normal(μ_true, σ_true) = Normal{Float64}(μ=10000.0, σ=100.0)\n", "length(y) = 20000\n", "mean(y) = 9999.328496504879\n", "var(y) = 10061.296670416541\n" ] } ], "source": [ "μ_true, σ_true, n = 1e4, 1e2, 20000\n", "@show dist_true = Normal(μ_true, σ_true)\n", "y = rand(dist_true, n)\n", "@show length(y) mean(y) var(y);" ] }, { "cell_type": "code", "execution_count": 75, "id": "0861c07a", "metadata": {}, "outputs": [ { "data": { "image/png": "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6eklJSWtV6yoqLhx44ZYLG69KfLyoE59fX16enpBQYFGo9HNlMvlTU1NarVaKpU2Nzfr5gsEgqtXr967d083p7i4OCMjQyaTSSQSmUxGrkteOG3t0KFDUVFRCoXi2rVrFRUVrRdJpdKbN28+fPhQN0epVObm5qalpZEXgXXEYrFuyxqNpri4OD09vbq6Wpe59ZGKxWKRSKSbLC8vf+aPQker1T548CArK4vsliE1NzfrrtbqkBdUhULhzZs3yfua7ty588RtkuCCKjAtcOZuWLpugdb9A1wut3Wb7t27d+/evc2Kj898vIfB0dHR0dGxzUwmk0n2R5M947r5tra24eHhrVv6+vr6+vo+cd3HMRiMwYMHt5nJZrPJy5s6dDq9T58+j6/e+soqlUpts+s2+21zGdbDw8PDw6P1nHY6WygUiu4ZAh0+n/+09jwejzwEDodDXjQGwDxAnzt4hp49e86ePRt3Cv3z9PQku5IAMEtw5m68UlJSampqWj9UiUVQUFBQUBDeDIbg4+MD79cFZgyKuwHt2bNn06ZNCCEqlZqRkdHZ1X///XfymVWtVjtixIjdu3d7eXk93mzt2rUPHjxwc3P7/PPPdTeffPzxx0uXLu3Wrdvj7WtqahISEi5dukSn07dt25adnd2mweDBgyMjI7/99luEEJPJdHJyioiIiIqKIu96LCoqGjt2bElJyRMz375929nZ2dX1n7v+X3755fnz548YMaIjh1xdXX3u3Llbt245Ojq+//775Mzm5uYxY8ZcunSp/fsaAQCtQbeMAU2bNu348ePHjx9PTk5us6i8vPzSpUvtrHv37l1d5/Uff/zh7u7+xMqOEHrjjTf27dun1Wr/+OMPck5VVdXOnTsf744nubi4BAUF7dq1CyHk4+MTGhoaGhqan59fWFhIfu7Ro0dNTc3vv/8eFhbWq1cvuVw+f/784cOHk4/vOzk5tX5qv41169alpqbqJrOysu7cudPByo4QSklJ2b9///3793VjriGEbG1thw0btnnz5g5uBACA4MzdQIqKigoKCiZNmkSebBYWFmZkZMTFxekaZGVl7d+/n7w3/Il2796tG0xxy5YtH374IflZIBD89ttvZWVltra2CQkJffr0cXd3b2lpyczMXLFiBdkmOTl58uTJFArlzJkzXl5e169fz83NHTp0aEJCAtkgMTFx2bJl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" }, "execution_count": 75, "metadata": {}, "output_type": "execute_result" } ], "source": [ "postμ_theoretical = posterior_μ(bayesian_update(μstar, vstar, κ, θ, y)...)\n", "plot_posterior_μ(nothing, y, postμ_theoretical)" ] }, { "cell_type": "code", "execution_count": 76, "id": "c8dc8e71", "metadata": {}, "outputs": [ { "data": { "image/png": "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" }, "execution_count": 76, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pred_theoretical = preddist(bayesian_update(μstar, vstar, κ, θ, y)...)\n", "plot_preddist(nothing, y, pred_theoretical)" ] }, { "cell_type": "code", "execution_count": null, "id": "ccd6194f", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "@webio": { "lastCommId": null, "lastKernelId": null }, "jupytext": { "formats": "ipynb,md" }, "kernelspec": { "display_name": "Julia 1.8.1", "language": "julia", "name": "julia-1.8" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", "version": "1.8.1" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": true, "title_cell": "目次", "title_sidebar": "目次", "toc_cell": true, "toc_position": {}, "toc_section_display": true, "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 5 }