Skip to content

Instantly share code, notes, and snippets.

@shotahorii
Created March 17, 2019 22:46
Show Gist options
  • Save shotahorii/9857d4cfe1ddd834d13bc2f485bd0ca4 to your computer and use it in GitHub Desktop.
Save shotahorii/9857d4cfe1ddd834d13bc2f485bd0ca4 to your computer and use it in GitHub Desktop.
Bayesian inference
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Bayesian inference\n",
"\n",
"[ここ](https://gist.github.com/shotahorii/7355db2bc49aa746abe85dc24fa70838#file-likelihood-ipynb)で最尤推定(Maximum Likelihood Estimation)、[ここ](https://gist.github.com/shotahorii/386f75acb7efac0f6518c096293e08b9#file-map_estimation-ipynb)でMAP推定について書いた。 \n",
"内容についてざっくりおさらいする。\n",
"- 最尤推定では、ある観測データDが与えられた時にその観測データのみに基づいて最もそのデータが生起しやすい(尤もらしい)パラメータを推定パラメータとする。例えばコインを10回投げて3回表であったら、そのコインのパラメータ(表の出る確率)は0.3、というように。 \n",
"- MAP推定では、観測データDの他に、(パラメータの)事前分布というものを利用する。例えばそのコインがたった今銀行から受け取ったコインだとしたら、イカサマコインである確率はかなり少なく、つまりパラメータが0.5である確率はパラメータが0.1である確率よりずっと高いと考えられる。これがパラメータの事前分布である。MAP推定では観測データの情報とこの想定した事前分布を用いてパラメータを推定する。\n",
"\n",
"ここで、最尤推定にしてもMAP推定にしても推定パラメータはただ一つバシッと算出された。ここで問題となり得るのは、推定パラメータがどの程度確信度の高いものであるのか、についてはどちらも教えてくれないということ。 \n",
"\n",
"具体例で考えてみる。\n",
"例えば、10回投げて3回表だったコインと、1000回投げて333回表だったコインとをα=β=2でMAP推定するとどちらも推定パラメータは1/3となる。直感としては後者のコインの推定パラメータの方が信用できるだろう、とわかるが、MAP推定ではこれらは区別されず、同じパラメータとして算出される。 \n",
"\n",
"そこで、最も尤もらしいパラメータだけでなく、取り得る可能なパラメータとそれぞれのパラメータとなる確率も算出したい、という場合に考えられるのが**ベイズ推定**である。別の言い方をすれば、MAP推定ではargmaxして最大となるパラメータだけを算出したP(θ|D)について、argmaxせず全て出しましょう、ということ。\n",
"\n",
"#### ベイズ推定 - 二項分布を例に\n",
"- [藤井四段で学ぶ最尤推定、MAP推定、ベイズ推定](https://qiita.com/jyori112/items/80b21422b15753a1c5a4)\n",
"- [条件付き確率、同時確率、周辺確率](https://www.iwanttobeacat.com/entry/2018/02/06/220000)\n",
"- [ベータ関数の積分公式](https://mathtrain.jp/beta)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false,
"scrolled": false
},
"outputs": [
{
"data": {
"text/latex": [
"例として、二項分布のパラメータをベイズ推定する。\n",
"<br><br>\n",
"事後分布$$P(\\theta|D)$$が最大となる$$\\theta$$を推定パラメータとして選んだMAP推定に対し、ベイズ推定では\n",
"事後分布$$P(\\theta|D)$$そのものを情報として算出する。<br>\n",
"まず、ベイズの定理より事後分布は以下のように書ける。\n",
"<br><br>\n",
"$$P(\\theta|D) = \\frac{P(D|\\theta)P(\\theta)}{P(D)}$$\n",
"<br><br>\n",
"ここで、MAP推定の場合これを最大化するパラメータだけを知りたかったので、以下のように$$P(D)$$\n",
"を無視できた。<br><br>\n",
"$$argmax_\\theta P(\\theta|D) = argmax_\\theta \\frac{P(D|\\theta)P(\\theta)}{P(D)} \n",
"= argmax_\\theta P(D|\\theta)P(\\theta)$$\n",
"<br><br>\n",
"が、ベイズ推定では無視できない。$$P(D)$$を計算する。<br>\n",
"一般に、周辺確率P(X)は同時確率P(X, Y)を周辺化することで得られる。式としては以下。\n",
"<br><br>\n",
"$$P(X) = \\sum_Y P(X,Y)$$<br>\n",
"あるいは<br>\n",
"$$P(x) = \\int_y P(x,y) dy$$<br><br>\n",
"ここで、二項分布のパラメータ$$\\theta$$の取り得る範囲は$$0\\leq \\theta \\leq 1$$\n",
"である点に注意すると、$$P(D)$$は以下のように書ける。\n",
"<br><br>\n",
"$$P(D) = \\int_0^1 P(D,\\theta)d\\theta$$<br>\n",
"$$=\\int_0^1 P(D|\\theta)P(\\theta)d\\theta$$<br><br>\n",
"ここで、二項分布における試行回数をN、そのうち成功回数をnとおくと$$P(D|\\theta)$$は以下のように表される。<br>\n",
"$$P(D|\\theta) = \\left(\\begin{array}{cc} N \\\\ n \\end{array} \\right) \\theta^n (1-\\theta)^{N-n}$$\n",
"<br><br>\n",
"また、二項分布の共役事前分布はベータ分布であるので、パラメータ$$\\theta$$の事前分布$$P(\\theta)$$\n",
"は以下のようにベータ分布で表される。(α,βはハイパーパラメータで正の実数。)<br><br>\n",
"$$P(\\theta)=\\frac{\\Gamma(\\alpha+\\beta)}{\\Gamma(\\alpha)\\Gamma(\\beta)}\\theta^{\\alpha-1}(1-\\theta)^{\\beta-1} $$\n",
"<br><br>\n",
"$$P(D)$$の式に戻る。<br><br>\n",
"$$P(D)=\\int_0^1 P(D|\\theta)P(\\theta)d\\theta$$<br>\n",
"$$=\\int_0^1 \\left(\\begin{array}{cc} N \\\\ n \\end{array} \\right) \\theta^n (1-\\theta)^{N-n} \n",
"\\frac{\\Gamma(\\alpha+\\beta)}{\\Gamma(\\alpha)\\Gamma(\\beta)}\\theta^{\\alpha-1}(1-\\theta)^{\\beta-1} d\\theta$$<br>\n",
"$$=\\left(\\begin{array}{cc} N \\\\ n \\end{array} \\right) \\frac{\\Gamma(\\alpha+\\beta)}{\\Gamma(\\alpha)\\Gamma(\\beta)}\n",
"\\int_0^1 \\theta^{n+\\alpha-1} (1-\\theta)^{N-n+\\beta-1} d\\theta$$"
],
"text/plain": [
"<IPython.core.display.Latex object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%%latex\n",
"例として、二項分布のパラメータをベイズ推定する。\n",
"<br><br>\n",
"事後分布$$P(\\theta|D)$$が最大となる$$\\theta$$を推定パラメータとして選んだMAP推定に対し、ベイズ推定では\n",
"事後分布$$P(\\theta|D)$$そのものを情報として算出する。<br>\n",
"まず、ベイズの定理より事後分布は以下のように書ける。\n",
"<br><br>\n",
"$$P(\\theta|D) = \\frac{P(D|\\theta)P(\\theta)}{P(D)}$$\n",
"<br><br>\n",
"ここで、MAP推定の場合これを最大化するパラメータだけを知りたかったので、以下のように$$P(D)$$\n",
"を無視できた。<br><br>\n",
"$$argmax_\\theta P(\\theta|D) = argmax_\\theta \\frac{P(D|\\theta)P(\\theta)}{P(D)} \n",
"= argmax_\\theta P(D|\\theta)P(\\theta)$$\n",
"<br><br>\n",
"が、ベイズ推定では無視できない。$$P(D)$$を計算する。<br>\n",
"一般に、周辺確率P(X)は同時確率P(X, Y)を周辺化することで得られる。式としては以下。\n",
"<br><br>\n",
"$$P(X) = \\sum_Y P(X,Y)$$<br>\n",
"あるいは<br>\n",
"$$P(x) = \\int_y P(x,y) dy$$<br><br>\n",
"ここで、二項分布のパラメータ$$\\theta$$の取り得る範囲は$$0\\leq \\theta \\leq 1$$\n",
"である点に注意すると、$$P(D)$$は以下のように書ける。\n",
"<br><br>\n",
"$$P(D) = \\int_0^1 P(D,\\theta)d\\theta$$<br>\n",
"$$=\\int_0^1 P(D|\\theta)P(\\theta)d\\theta$$<br><br>\n",
"ここで、二項分布における試行回数をN、そのうち成功回数をnとおくと$$P(D|\\theta)$$は以下のように表される。<br>\n",
"$$P(D|\\theta) = \\left(\\begin{array}{cc} N \\\\ n \\end{array} \\right) \\theta^n (1-\\theta)^{N-n}$$\n",
"<br><br>\n",
"また、二項分布の共役事前分布はベータ分布であるので、パラメータ$$\\theta$$の事前分布$$P(\\theta)$$\n",
"は以下のようにベータ分布で表される。(α,βはハイパーパラメータで正の実数。)<br><br>\n",
"$$P(\\theta)=\\frac{\\Gamma(\\alpha+\\beta)}{\\Gamma(\\alpha)\\Gamma(\\beta)}\\theta^{\\alpha-1}(1-\\theta)^{\\beta-1} $$\n",
"<br><br>\n",
"$$P(D)$$の式に戻る。<br><br>\n",
"$$P(D)=\\int_0^1 P(D|\\theta)P(\\theta)d\\theta$$<br>\n",
"$$=\\int_0^1 \\left(\\begin{array}{cc} N \\\\ n \\end{array} \\right) \\theta^n (1-\\theta)^{N-n} \n",
"\\frac{\\Gamma(\\alpha+\\beta)}{\\Gamma(\\alpha)\\Gamma(\\beta)}\\theta^{\\alpha-1}(1-\\theta)^{\\beta-1} d\\theta$$<br>\n",
"$$=\\left(\\begin{array}{cc} N \\\\ n \\end{array} \\right) \\frac{\\Gamma(\\alpha+\\beta)}{\\Gamma(\\alpha)\\Gamma(\\beta)}\n",
"\\int_0^1 \\theta^{n+\\alpha-1} (1-\\theta)^{N-n+\\beta-1} d\\theta$$"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/latex": [
"上の式を<br>\n",
"$$P(\\theta|D) = \\frac{P(D|\\theta)P(\\theta)}{P(D)}$$<br>\n",
"に代入すると以下が得られる。\n",
"<br><br>\n",
"$$P(\\theta|D) = \n",
"\\frac{\\left(\\begin{array}{cc} N \\\\ n \\end{array} \\right) \\frac{\\Gamma(\\alpha+\\beta)}{\\Gamma(\\alpha)\\Gamma(\\beta)}\n",
"\\theta^{n+\\alpha-1} (1-\\theta)^{N-n+\\beta-1}}\n",
"{\\left(\\begin{array}{cc} N \\\\ n \\end{array} \\right) \\frac{\\Gamma(\\alpha+\\beta)}{\\Gamma(\\alpha)\\Gamma(\\beta)}\n",
"\\int_0^1 \\theta^{n+\\alpha-1} (1-\\theta)^{N-n+\\beta-1} d\\theta}$$\n",
"<br><br>\n",
"$$=\\frac{\\theta^{n+\\alpha-1} (1-\\theta)^{N-n+\\beta-1}}\n",
"{\\int_0^1 \\theta^{n+\\alpha-1} (1-\\theta)^{N-n+\\beta-1} d\\theta}$$\n",
"<br><br>\n",
"ここで、ベータ関数の積分公式より以下が成り立つ。<br>\n",
"$$\\int_0^1 x^{p-1} (1-x)^{q-1}dx = \\frac{\\Gamma(p)\\Gamma(q)}{\\Gamma(p+q)}$$\n",
"<br><br>\n",
"ゆえに、上の式は以下のように書き換えられる。\n",
"<br><br>\n",
"$$P(\\theta|D)=\\frac{\\Gamma(N+\\alpha+\\beta)}{\\Gamma(n+\\alpha)\\Gamma(N-n+\\beta)}\\theta^{n+\\alpha-1} (1-\\theta)^{N-n+\\beta-1}$$"
],
"text/plain": [
"<IPython.core.display.Latex object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%%latex\n",
"上の式を<br>\n",
"$$P(\\theta|D) = \\frac{P(D|\\theta)P(\\theta)}{P(D)}$$<br>\n",
"に代入すると以下が得られる。\n",
"<br><br>\n",
"$$P(\\theta|D) = \n",
"\\frac{\\left(\\begin{array}{cc} N \\\\ n \\end{array} \\right) \\frac{\\Gamma(\\alpha+\\beta)}{\\Gamma(\\alpha)\\Gamma(\\beta)}\n",
"\\theta^{n+\\alpha-1} (1-\\theta)^{N-n+\\beta-1}}\n",
"{\\left(\\begin{array}{cc} N \\\\ n \\end{array} \\right) \\frac{\\Gamma(\\alpha+\\beta)}{\\Gamma(\\alpha)\\Gamma(\\beta)}\n",
"\\int_0^1 \\theta^{n+\\alpha-1} (1-\\theta)^{N-n+\\beta-1} d\\theta}$$\n",
"<br><br>\n",
"$$=\\frac{\\theta^{n+\\alpha-1} (1-\\theta)^{N-n+\\beta-1}}\n",
"{\\int_0^1 \\theta^{n+\\alpha-1} (1-\\theta)^{N-n+\\beta-1} d\\theta}$$\n",
"<br><br>\n",
"ここで、ベータ関数の積分公式より以下が成り立つ。<br>\n",
"$$\\int_0^1 x^{p-1} (1-x)^{q-1}dx = \\frac{\\Gamma(p)\\Gamma(q)}{\\Gamma(p+q)}$$\n",
"<br><br>\n",
"ゆえに、上の式は以下のように書き換えられる。\n",
"<br><br>\n",
"$$P(\\theta|D)=\\frac{\\Gamma(N+\\alpha+\\beta)}{\\Gamma(n+\\alpha)\\Gamma(N-n+\\beta)}\\theta^{n+\\alpha-1} (1-\\theta)^{N-n+\\beta-1}$$"
]
},
{
"cell_type": "code",
"execution_count": 94,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/latex": [
"具体例で試してみる。最初に出したコインの例(ガンマ関数の計算数値が大きいのでコインBの回数を少し変えている)。\n",
"10回中3回表が出たコイン(A)と、100回中33回表が出たコイン(B)について、\n",
"パラメータを推定してみる。α=β=2とする。<br><br>\n",
"MAP推定の場合、推定パラメータは以下のように計算される。<br><br>\n",
"$$\\theta = \\frac{n+\\beta-1}{N+2(\\beta-1)}$$<br><br>\n",
"\n",
"ゆえに、コインAの推定パラメータは$$\\frac{3+2-1}{10+2(2-1)}=\\frac{1}{3}$$<br>\n",
"コインBの推定パラメータは$$\\frac{33+2-1}{100+2(2-1)}=\\frac{1}{3}$$である。\n",
"<br><br>\n",
"\n",
"ベイス推定の場合は以下である。<br>\n",
"コインAの$$P(\\theta|D)$$は<br><br>\n",
"$$P(\\theta|D)=\\frac{\\Gamma(10+2+2)}{\\Gamma(3+2)\\Gamma(10-3+2)}\\theta^{3+2-1}(1-\\theta)^{10-3+2-1}\n",
"=\\frac{\\Gamma(14)}{\\Gamma(5)\\Gamma(9)}\\theta^4(1-\\theta)^8$$\n",
"<br><br>\n",
"コインBの$$P(\\theta|D)$$は<br><br>\n",
"$$P(\\theta|D)=\\frac{\\Gamma(100+2+2)}{\\Gamma(33+2)\\Gamma(100-33+2)}\\theta^{33+2-1}(1-\\theta)^{100-33+2-1}\n",
"=\\frac{\\Gamma(104)}{\\Gamma(35)\\Gamma(69)}\\theta^{34}(1-\\theta)^{68}$$"
],
"text/plain": [
"<IPython.core.display.Latex object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%%latex\n",
"具体例で試してみる。最初に出したコインの例(ガンマ関数の計算数値が大きいのでコインBの回数を少し変えている)。\n",
"10回中3回表が出たコイン(A)と、100回中33回表が出たコイン(B)について、\n",
"パラメータを推定してみる。α=β=2とする。<br><br>\n",
"MAP推定の場合、推定パラメータは以下のように計算される。<br><br>\n",
"$$\\theta = \\frac{n+\\beta-1}{N+2(\\beta-1)}$$<br><br>\n",
"\n",
"ゆえに、コインAの推定パラメータは$$\\frac{3+2-1}{10+2(2-1)}=\\frac{1}{3}$$<br>\n",
"コインBの推定パラメータは$$\\frac{33+2-1}{100+2(2-1)}=\\frac{1}{3}$$である。\n",
"<br><br>\n",
"\n",
"ベイス推定の場合は以下である。<br>\n",
"コインAの$$P(\\theta|D)$$は<br><br>\n",
"$$P(\\theta|D)=\\frac{\\Gamma(10+2+2)}{\\Gamma(3+2)\\Gamma(10-3+2)}\\theta^{3+2-1}(1-\\theta)^{10-3+2-1}\n",
"=\\frac{\\Gamma(14)}{\\Gamma(5)\\Gamma(9)}\\theta^4(1-\\theta)^8$$\n",
"<br><br>\n",
"コインBの$$P(\\theta|D)$$は<br><br>\n",
"$$P(\\theta|D)=\\frac{\\Gamma(100+2+2)}{\\Gamma(33+2)\\Gamma(100-33+2)}\\theta^{33+2-1}(1-\\theta)^{100-33+2-1}\n",
"=\\frac{\\Gamma(104)}{\\Gamma(35)\\Gamma(69)}\\theta^{34}(1-\\theta)^{68}$$"
]
},
{
"cell_type": "code",
"execution_count": 98,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import math\n",
"import numpy as np\n",
"\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 95,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"gamma_a = math.gamma(14)/(math.gamma(5)*math.gamma(9))\n",
"gamma_b = math.gamma(104)/(math.gamma(35)*math.gamma(69))"
]
},
{
"cell_type": "code",
"execution_count": 97,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"theta = np.linspace(0,1,1000)\n",
"coin_a = list(map(lambda x: gamma_a*(x**4)*((1-x)**8) , theta))\n",
"coin_b = list(map(lambda x: gamma_b*(x**34)*((1-x)**68) , theta))"
]
},
{
"cell_type": "code",
"execution_count": 100,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nrnPu9OjLKm6ffy4deaT99Jvon3pfesluW0Iy9O1rd0C+807oSoI6/HAbPfaPf0g//rHdnAEAGZxV\nFzNr1tgZdHvuKf3pT6GrqYd166T27W27rmPH0NUgW1dcYePpr78+dCXBrVolnXee9Pbb0qOP2qlB\nANKDs+pSwHvpggvsSLfrrgtdTT29+abUrRuhKWl++ENLCfwQpObNbVjmxRdbv/xDD4WuCEAcEJxi\n5NZb7aam+++XGjQIXU09jR1rt7gjWfr3t9XC994LXUksOGd32z37rPTrX9sPNqtXh64KQEgEp5h4\n8klbZXrySally9DV5MGYMQSnJHLOGnvuvTd0JbHSv7/03/9KixfbTLWpU0NXBCAUepxiYPx4awYf\nPdp6mxJvwQJp112lJUtSsHRWhKZPl/bdV5o/X2rUKHQ1seK9bd9dfrkduP3znydwvhoASfQ4JdaM\nGXbr8513piQ0STaBesgQQlNS9eol9expryO+wzmbrfbaa3bX3bHH2l2wAIoHwSmgTz+1I8JGjJCO\nOCJ0NXk0apTd043kOu006Z57QlcRW71722DaHj2k3XcvmvORAYitumBWrbLZkAceKF17behq8mjZ\nMjuvYt48qVWr0NWgrr76Sura1c77adcudDWx9vzztgp12GE2ey0VPYpAEWCrLkHWrLG7vnv1kv74\nx9DV5Nno0XbgF6Ep2Vq3tiRw332hK4m9gw+W3n9fWrvWWvvGjQtdEYAoEZwKrKLCblpq0sT6mlLX\nWPrII5YKkXznniv97W82EBOb1aqVdMcdNlLklFNsbMHKlaGrAhAFglMBeW934XzxhfTAAym8YWnl\nSumFF+xgXyTfvvvaFEgaeLJ2+OG2+vTVV9Iuu9BfD6QRwalAvJcuucROIHniCalp09AVReCpp6SB\nA+mJSQvnpAsvlG65JXQlidKmjfSvf9li3TnnSCeeKH3ySeiqAOQLwalArr7aFmPGjLEjVVLpnnuk\nU08NXQXy6cQT7dDfjz8OXUniHHqo/aDUtautPv397+x6AmnAXXUR895C00MPSS+9JHXoELqiiCxc\nKPXta8MvmzcPXQ3y6Te/kZYutQYe1Mn770tnn23B6bbbbIQBgLC4qy6GvJeuusr6pceNS3Fokuzu\nq2OPJTSl0QUX2AGKixaFriSxdtlFevVV6ac/tZWoM8+041sAJA/BKSLe2w/qo0ZZaNpmm9AVRch7\n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\n5Ltv8+ZZk+JHH9nqUq9eFo4GDLCepV12ofdU69bZafWLF9v/tEWLrAt+2jRbO//gA6lzZ1uCu/hi\nG9xy3XWEJhReixbSiSfaW0WFTR+fMMF+Eho50uaDbLmlTavffnv7rtm+vS1DtG9v3yW32GL9W4sW\ndCcnSEnJ+lA1cOCmH1NRYeEpE6QWLbIbNb/4wlrnMu9v+KtknzYtW65/22KL7/4+89asmR2M3KSJ\n/Vr9rfqfN25sn2ING9pbzLpTUCDZBKdtJc3b4PfzZWFqI+PbHyF5Sd7LS5K337qq33v/3fclyVd6\nVayzfyAVFV6+cv0nZpMmXp0bS9s3kZo0lpo28WreXGq+g9SksZfLVDNf0qMbfAZX/2ze3O/r+ndx\nuE5FhR2yunKlva1aZcGpRQv75tKhg32z6dTJZjD9+MfWsUm3JuKmQQO7PWv33a0RUbIliUWL7M6O\nmTPtB4HyctvqW7zYfrpasWL928qV9t2teXP7AtKo0fq3DX/fsKE9n3Mbv0l1+7O6+vhj6Z136v7x\nKddAUoeqt91retAWVW9d7ftNZYW0dp1Usc6+HK6rkCo+l9YtXv/7dVV/X1Fpj6+sXP9+RaX9fk2F\ntLpS+mKDP/eV9mW40tuv0/3Hevr378g5qSTz6VCy8adL5u/kZN+3Mp9CVf8J334Kbfjnbv3fb/Lj\nNvP3hRZsVmqg/+hae5yccz+UNMR7f1bV738saYD3/sJqjyN7AwCAxIikx0nSAkkbdm1uV/Vn9X5y\nAACAJMmmdXqCpJ7Oua7OucaSTpD0ZLRlAQAAxE+tK07e+wrn3PmSntP6cQQfRl4ZAABAzORtACYA\nAEDa5TTlyDk31Dk3zTn3sXPuVzU85hbn3HTn3HvOuX75KRP5UNvr55w7yTk3qertNefcLiHqxMay\n+bdX9bg9nXNrnXPHFrI+bF6WXztLnXMTnXMfOOfGFbpG1CyLr51bOueerPq+975z7icBysQmOOfu\ncM4tds5N3sxjcsst3vus3mQha4akrpIaSXpP0o7VHnOopNFV7+8l6a1sr89btG9Zvn4DJbWqen8o\nr1883rJ57TZ43IuSnpZ0bOi6ecv+9ZPUStIUSdtW/X6r0HXzltPr92tJ12VeO0mfS2oYunbevCTt\nK6mfpMk1/H3OuSWXFadvB2F679dKygzC3NBRku6VJO/9eEmtnHPb5PAciE6tr5/3/i3v/dKq374l\nm+GF8LL5tydJF0h6RNKSQhaHWmXz+p0k6VHv/QJJ8t5/VuAaUbNsXj8vKTPmvqWkz7336wpYI2rg\nvX9N0pebeUjOuSWX4LSpQZjVv7FWf8yCTTwGYWTz+m3oTEljI60I2ar1tXPOdZJ0tPf+dgWcR4dN\nyubf3g6S2jrnxjnnJjjnTilYdahNNq/frZL6OOcWSpok6aIC1Yb6yzm3cOwtNuKcO0DS6bIlTiTD\nTZI27L0gPCVLQ0n9JR0oqYWkN51zb3rvZ4QtC1kaImmi9/5A59z2kp53zu3qvV8RujDkXy7BKZtB\nmAskda7lMQgjq0GmzrldJY2UNNR7v7nlTRRONq/dHpIecM45WY/Foc65td57Zq6Fl83rN1/SZ977\n1ZJWO+dekbSbrLcGYWXz+p0u6TpJ8t7PdM7NlrSjJM7Tib+cc0suW3XZDMJ8UtKpkuScGyjpK+/9\n4hyeA9Gp9fVzznWR9KikU7z3MwPUiE2r9bXz3veoeusu63M6l9AUG9l87RwlaV/nXAPnXHNZkyrz\n8uIhm9dvjqSDJKmqP2YHSbMKWiU2p+qkwE3KObdkveLkaxiE6Zz7uf21H+m9H+OcO8w5N0PSSlkK\nRwxk8/pJ+q2ktpJuq1q5WOu93+SBziicLF+773xIwYtEjbL82jnNOfespMmSKiSN9N5PDVg2qmT5\n7+8aSXdvcMv7cO/9F4FKxgacc/dLKpXUzjk3V9LvJDVWPXILAzABAACylNMATAAAgGJGcAIAAMgS\nwQkAACBLBCcAAIAsEZwAAACyRHACAADIEsEJAAAgS/8Pd4LYglx3wIIAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x108b55d68>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots(1,1,figsize=(10,7))\n",
"vis_a = plt.plot(theta, coin_a,'b')\n",
"vis_b = plt.plot(theta, coin_b,'r')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### 正規分布で\n",
"- [PRML 第1章の「ベイズ推定によるパラメータフィッティング」の解説(その1)](http://enakai00.hatenablog.com/entry/2015/04/08/181522)\n",
"- [正規分布の事後分布の平均と分散【ベイズ】](https://to-kei.net/bayes/bayes-normal-distribution/)\n",
"- [共役事前分布の意味といくつかの例](https://mathwords.net/kyoyakujizen#i-3)"
]
},
{
"cell_type": "code",
"execution_count": 145,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/latex": [
"$$P(\\theta|D) = \\frac{P(D|\\theta)P(\\theta)}{P(D)}$$<br>\n",
"$$=\\frac{P(D|\\theta)P(\\theta)}{\\int P(D,\\theta)d\\theta}$$<br>\n",
"とするところまでは上の二項分布の例と同様。(ただし積分範囲が0-1ではなくなっている。これは推定するパラメータ\n",
"θの取り得る範囲が異なるため。)<br><br>\n",
"ここで、二項分布のベイズ推定で分母の$$P(D)=\\int P(D,\\theta)d\\theta$$\n",
"まで求めたのに対し、ここでは分母は$$\\theta$$に依らない値として計算しない。すなわち以下のように式を変える。\n",
"<br><br>\n",
"$$P(\\theta|D) \\propto P(D|\\theta)P(\\theta)$$\n",
"<br><br>\n",
"これは、あくまで私たちの興味があるのは確率$$P(\\theta|D)$$の絶対的な値ではなく、パラメータ$$\\theta$$\n",
"の取り得る値とその確率(確信度)の分布であるためである。"
],
"text/plain": [
"<IPython.core.display.Latex object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%%latex\n",
"$$P(\\theta|D) = \\frac{P(D|\\theta)P(\\theta)}{P(D)}$$<br>\n",
"$$=\\frac{P(D|\\theta)P(\\theta)}{\\int P(D,\\theta)d\\theta}$$<br>\n",
"とするところまでは上の二項分布の例と同様。(ただし積分範囲が0-1ではなくなっている。これは推定するパラメータ\n",
"θの取り得る範囲が異なるため。)<br><br>\n",
"ここで、二項分布のベイズ推定で分母の$$P(D)=\\int P(D,\\theta)d\\theta$$\n",
"まで求めたのに対し、ここでは分母は$$\\theta$$に依らない値として計算しない。すなわち以下のように式を変える。\n",
"<br><br>\n",
"$$P(\\theta|D) \\propto P(D|\\theta)P(\\theta)$$\n",
"<br><br>\n",
"これは、あくまで私たちの興味があるのは確率$$P(\\theta|D)$$の絶対的な値ではなく、パラメータ$$\\theta$$\n",
"の取り得る値とその確率(確信度)の分布であるためである。"
]
},
{
"cell_type": "code",
"execution_count": 173,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/latex": [
"ここで、正規分布の共役事前分布は正規分布である。この事前分布のパラメータである平均,分散をそれぞれ\n",
"$$\\mu_0, \\beta_0$$とおくと、事前分布$$P(\\theta)$$は以下のように表せる。\n",
"<br><br>\n",
"$$P(\\theta) = \\frac{1}{\\sqrt{2\\pi\\beta_0}}exp(-\\frac{(\\theta-\\mu_0)^2}{2\\beta_0})$$\n",
"<br><br>\n",
"次に、データ$$D=\\{x_1,x_2,...,x_n\\}$$を得た時の尤度$$P(D|\\theta)$$は以下である。\n",
"<br><br>\n",
"$$P(D|\\theta) = P(x_1|\\theta)P(x_2|\\theta)...P(x_n|\\theta)$$<br>\n",
"$$=\\prod_{i=1}^n \\frac{1}{\\sqrt{2\\pi\\beta}}exp(-\\frac{(x_i-\\theta)^2}{2\\beta})$$<br>\n",
"$$=(\\frac{1}{\\sqrt{2\\pi\\beta}})^n exp(-\\frac{1}{2\\beta}\\sum_{i=1}^n(x_i-\\theta)^2)$$<br><br>\n",
"ここで少しテクニカルな変形をする。<br><br>\n",
"$$=(\\frac{1}{\\sqrt{2\\pi\\beta}})^n \n",
"exp(-\\frac{1}{2\\beta}\\{n\\theta^2-2\\theta(x_1+x_2+...+x_n)+(x_1^2+x_2^2+...+x_n^2)\\})$$<br>\n",
"$$=(\\frac{1}{\\sqrt{2\\pi\\beta}})^n \n",
"exp(-\\frac{1}{2\\beta}\\{n(\\theta^2-2\\theta\\frac{(x_1+x_2+...+x_n)}{n})+(x_1^2+x_2^2+...+x_n^2)\\})$$\n",
"<br>\n",
"$$=(\\frac{1}{\\sqrt{2\\pi\\beta}})^n \n",
"exp(-\\frac{1}{2\\beta}\\{n(\\theta^2-2\\theta\\overline{x})+(x_1^2+x_2^2+...+x_n^2)\\})$$<br>\n",
"$$=(\\frac{1}{\\sqrt{2\\pi\\beta}})^n \n",
"exp(-\\frac{1}{2\\beta}\\{n(\\theta-\\overline{x})^2 - n\\overline{x}^2 +(x_1^2+x_2^2+...+x_n^2)\\})$$\n",
"<br><br>\n",
"ここで、標本分散$$S^2=\\overline{x^2} - \\overline{x}^2$$であることを考え以下のように変形する。\n",
"<br><br>\n",
"$$=(\\frac{1}{\\sqrt{2\\pi\\beta}})^n exp(-\\frac{1}{2\\beta}\\{n(\\theta-\\overline{x})^2 \n",
"- n\\{\\overline{x}^2 - \\frac{(x_1^2+x_2^2+...+x_n^2)}{n}\\} \\})$$<br>\n",
"$$=(\\frac{1}{\\sqrt{2\\pi\\beta}})^n exp(-\\frac{1}{2\\beta}\\{n(\\theta-\\overline{x})^2 \n",
"+ n\\{\\overline{x^2} - \\overline{x}^2\\} \\})$$<br>\n",
"$$=(\\frac{1}{\\sqrt{2\\pi\\beta}})^n exp(-\\frac{1}{2\\beta}\\{n(\\theta-\\overline{x})^2+nS^2\\})$$<br>\n",
"$$=(\\frac{1}{\\sqrt{2\\pi\\beta}})^n exp(-\\frac{1}{2\\beta}\\{n(\\theta-\\overline{x})^2\\})\n",
"exp(-\\frac{1}{2\\beta}nS^2)$$<br>"
],
"text/plain": [
"<IPython.core.display.Latex object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%%latex\n",
"ここで、正規分布の共役事前分布は正規分布である。この事前分布のパラメータである平均,分散をそれぞれ\n",
"$$\\mu_0, \\beta_0$$とおくと、事前分布$$P(\\theta)$$は以下のように表せる。\n",
"<br><br>\n",
"$$P(\\theta) = \\frac{1}{\\sqrt{2\\pi\\beta_0}}exp(-\\frac{(\\theta-\\mu_0)^2}{2\\beta_0})$$\n",
"<br><br>\n",
"次に、データ$$D=\\{x_1,x_2,...,x_n\\}$$を得た時の尤度$$P(D|\\theta)$$は以下である。\n",
"<br><br>\n",
"$$P(D|\\theta) = P(x_1|\\theta)P(x_2|\\theta)...P(x_n|\\theta)$$<br>\n",
"$$=\\prod_{i=1}^n \\frac{1}{\\sqrt{2\\pi\\beta}}exp(-\\frac{(x_i-\\theta)^2}{2\\beta})$$<br>\n",
"$$=(\\frac{1}{\\sqrt{2\\pi\\beta}})^n exp(-\\frac{1}{2\\beta}\\sum_{i=1}^n(x_i-\\theta)^2)$$<br><br>\n",
"ここで少しテクニカルな変形をする。<br><br>\n",
"$$=(\\frac{1}{\\sqrt{2\\pi\\beta}})^n \n",
"exp(-\\frac{1}{2\\beta}\\{n\\theta^2-2\\theta(x_1+x_2+...+x_n)+(x_1^2+x_2^2+...+x_n^2)\\})$$<br>\n",
"$$=(\\frac{1}{\\sqrt{2\\pi\\beta}})^n \n",
"exp(-\\frac{1}{2\\beta}\\{n(\\theta^2-2\\theta\\frac{(x_1+x_2+...+x_n)}{n})+(x_1^2+x_2^2+...+x_n^2)\\})$$\n",
"<br>\n",
"$$=(\\frac{1}{\\sqrt{2\\pi\\beta}})^n \n",
"exp(-\\frac{1}{2\\beta}\\{n(\\theta^2-2\\theta\\overline{x})+(x_1^2+x_2^2+...+x_n^2)\\})$$<br>\n",
"$$=(\\frac{1}{\\sqrt{2\\pi\\beta}})^n \n",
"exp(-\\frac{1}{2\\beta}\\{n(\\theta-\\overline{x})^2 - n\\overline{x}^2 +(x_1^2+x_2^2+...+x_n^2)\\})$$\n",
"<br><br>\n",
"ここで、標本分散$$S^2=\\overline{x^2} - \\overline{x}^2$$であることを考え以下のように変形する。\n",
"<br><br>\n",
"$$=(\\frac{1}{\\sqrt{2\\pi\\beta}})^n exp(-\\frac{1}{2\\beta}\\{n(\\theta-\\overline{x})^2 \n",
"- n\\{\\overline{x}^2 - \\frac{(x_1^2+x_2^2+...+x_n^2)}{n}\\} \\})$$<br>\n",
"$$=(\\frac{1}{\\sqrt{2\\pi\\beta}})^n exp(-\\frac{1}{2\\beta}\\{n(\\theta-\\overline{x})^2 \n",
"+ n\\{\\overline{x^2} - \\overline{x}^2\\} \\})$$<br>\n",
"$$=(\\frac{1}{\\sqrt{2\\pi\\beta}})^n exp(-\\frac{1}{2\\beta}\\{n(\\theta-\\overline{x})^2+nS^2\\})$$<br>\n",
"$$=(\\frac{1}{\\sqrt{2\\pi\\beta}})^n exp(-\\frac{1}{2\\beta}\\{n(\\theta-\\overline{x})^2\\})\n",
"exp(-\\frac{1}{2\\beta}nS^2)$$<br>"
]
},
{
"cell_type": "code",
"execution_count": 206,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/latex": [
"これらを、元の式に代入していく。\n",
"<br><br>\n",
"$$P(\\theta|D) \\propto P(D|\\theta)P(\\theta)$$<br><br>\n",
"$$P(\\theta|D) \\propto (\\frac{1}{\\sqrt{2\\pi\\beta}})^n exp(-\\frac{1}{2\\beta}\\{n(\\theta-\\overline{x})^2\\})\n",
"exp(-\\frac{1}{2\\beta}nS^2)\n",
"\\frac{1}{\\sqrt{2\\pi\\beta_0}}exp(-\\frac{(\\theta-\\mu_0)^2}{2\\beta_0})$$\n",
"<br><br>\n",
"ここで、$$\\theta$$に関して定数とみなせるものは比例式から取り除けるため、以下のように変形できる。\n",
"<br><br>\n",
"$$P(\\theta|D) \\propto exp(-\\frac{1}{2\\beta}\\{n(\\theta-\\overline{x})^2\\})\n",
"exp(-\\frac{(\\theta-\\mu_0)^2}{2\\beta_0})$$<br>\n",
"$$\\propto exp(-\\frac{n(\\theta-\\overline{x})^2}{2\\beta}-\\frac{(\\theta-\\mu_0)^2}{2\\beta_0})$$\n",
"<br><br>\n",
"ここで、指数部分を以下のように変形していく。\n",
"<br><br>\n",
"$$-\\frac{n(\\theta-\\overline{x})^2}{2\\beta}-\\frac{(\\theta-\\mu_0)^2}{2\\beta_0}$$<br>\n",
"\n",
"$$=-\\frac{n\\beta_0(\\theta-\\overline{x})^2+\\beta(\\theta-\\mu_0)^2}{2\\beta\\beta_0}$$<br>\n",
"\n",
"$$=-\\frac{\\theta^2(n\\beta_0+\\beta)-2\\theta(n\\beta_0\\overline{x}+\\beta\\mu_0)\n",
" +n\\beta_0\\overline{x}^2+\\beta\\mu_0^2}{2\\beta\\beta_0}$$<br>\n",
"\n",
"$$=-\\frac{(n\\beta_0+\\beta)\\{\\theta^2-2\\theta\\frac{n\\beta_0\\overline{x}+\\beta\\mu_0}{n\\beta_0+\\beta}\n",
"+(\\frac{n\\beta_0\\overline{x}+\\beta\\mu_0}{n\\beta_0+\\beta})^2\n",
"-(\\frac{n\\beta_0\\overline{x}+\\beta\\mu_0}{n\\beta_0+\\beta})^2\\}\n",
"+n\\beta_0\\overline{x}^2+\\beta\\mu_0^2}{2\\beta\\beta_0}$$<br>\n",
"\n",
"$$=-\\frac{n\\beta_0+\\beta}{2\\beta\\beta_0}(\\theta-\\frac{n\\beta_0\\overline{x}+\\beta\\mu_0}{n\\beta_0+\\beta})^2\n",
"+\\frac{n\\beta_0+\\beta}{2\\beta\\beta_0}(\\frac{n\\beta_0\\overline{x}+\\beta\\mu_0}{n\\beta_0+\\beta})^2\n",
"- \\frac{n\\beta_0\\overline{x}^2}{2\\beta\\beta_0} - \\frac{\\beta\\mu_0^2}{2\\beta\\beta_0}$$<br>\n",
"\n",
"$$=-\\frac{n\\beta_0+\\beta}{2\\beta\\beta_0}(\\theta-\\frac{n\\beta_0\\overline{x}+\\beta\\mu_0}{n\\beta_0+\\beta})^2\n",
"+\\frac{(n\\beta_0\\overline{x}+\\beta\\mu_0)^2-(n\\beta_0+\\beta)(n\\beta_0\\overline{x}^2+\\beta\\mu_0^2)}\n",
"{2\\beta\\beta_0(n\\beta_0+\\beta)}$$<br>\n",
"\n",
"$$=-\\frac{n\\beta_0+\\beta}{2\\beta\\beta_0}(\\theta-\\frac{n\\beta_0\\overline{x}+\\beta\\mu_0}{n\\beta_0+\\beta})^2\n",
"+\\frac{2n\\beta\\beta_0\\overline{x}\\mu_0-n\\beta\\beta_0\\overline{x}^2-n\\beta\\beta_0\\mu_0^2}\n",
"{2\\beta\\beta_0(n\\beta_0+\\beta)}$$<br>\n",
"\n",
"$$=-\\frac{n\\beta_0+\\beta}{2\\beta\\beta_0}(\\theta-\\frac{n\\beta_0\\overline{x}+\\beta\\mu_0}{n\\beta_0+\\beta})^2\n",
"-\\frac{n(\\mu_0-\\overline{x})^2}{2(n\\beta_0+\\beta)}$$"
],
"text/plain": [
"<IPython.core.display.Latex object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%%latex\n",
"これらを、元の式に代入していく。\n",
"<br><br>\n",
"$$P(\\theta|D) \\propto P(D|\\theta)P(\\theta)$$<br><br>\n",
"$$P(\\theta|D) \\propto (\\frac{1}{\\sqrt{2\\pi\\beta}})^n exp(-\\frac{1}{2\\beta}\\{n(\\theta-\\overline{x})^2\\})\n",
"exp(-\\frac{1}{2\\beta}nS^2)\n",
"\\frac{1}{\\sqrt{2\\pi\\beta_0}}exp(-\\frac{(\\theta-\\mu_0)^2}{2\\beta_0})$$\n",
"<br><br>\n",
"ここで、$$\\theta$$に関して定数とみなせるものは比例式から取り除けるため、以下のように変形できる。\n",
"<br><br>\n",
"$$P(\\theta|D) \\propto exp(-\\frac{1}{2\\beta}\\{n(\\theta-\\overline{x})^2\\})\n",
"exp(-\\frac{(\\theta-\\mu_0)^2}{2\\beta_0})$$<br>\n",
"$$\\propto exp(-\\frac{n(\\theta-\\overline{x})^2}{2\\beta}-\\frac{(\\theta-\\mu_0)^2}{2\\beta_0})$$\n",
"<br><br>\n",
"ここで、指数部分を以下のように変形していく。\n",
"<br><br>\n",
"$$-\\frac{n(\\theta-\\overline{x})^2}{2\\beta}-\\frac{(\\theta-\\mu_0)^2}{2\\beta_0}$$<br>\n",
"\n",
"$$=-\\frac{n\\beta_0(\\theta-\\overline{x})^2+\\beta(\\theta-\\mu_0)^2}{2\\beta\\beta_0}$$<br>\n",
"\n",
"$$=-\\frac{\\theta^2(n\\beta_0+\\beta)-2\\theta(n\\beta_0\\overline{x}+\\beta\\mu_0)\n",
" +n\\beta_0\\overline{x}^2+\\beta\\mu_0^2}{2\\beta\\beta_0}$$<br>\n",
"\n",
"$$=-\\frac{(n\\beta_0+\\beta)\\{\\theta^2-2\\theta\\frac{n\\beta_0\\overline{x}+\\beta\\mu_0}{n\\beta_0+\\beta}\n",
"+(\\frac{n\\beta_0\\overline{x}+\\beta\\mu_0}{n\\beta_0+\\beta})^2\n",
"-(\\frac{n\\beta_0\\overline{x}+\\beta\\mu_0}{n\\beta_0+\\beta})^2\\}\n",
"+n\\beta_0\\overline{x}^2+\\beta\\mu_0^2}{2\\beta\\beta_0}$$<br>\n",
"\n",
"$$=-\\frac{n\\beta_0+\\beta}{2\\beta\\beta_0}(\\theta-\\frac{n\\beta_0\\overline{x}+\\beta\\mu_0}{n\\beta_0+\\beta})^2\n",
"+\\frac{n\\beta_0+\\beta}{2\\beta\\beta_0}(\\frac{n\\beta_0\\overline{x}+\\beta\\mu_0}{n\\beta_0+\\beta})^2\n",
"- \\frac{n\\beta_0\\overline{x}^2}{2\\beta\\beta_0} - \\frac{\\beta\\mu_0^2}{2\\beta\\beta_0}$$<br>\n",
"\n",
"$$=-\\frac{n\\beta_0+\\beta}{2\\beta\\beta_0}(\\theta-\\frac{n\\beta_0\\overline{x}+\\beta\\mu_0}{n\\beta_0+\\beta})^2\n",
"+\\frac{(n\\beta_0\\overline{x}+\\beta\\mu_0)^2-(n\\beta_0+\\beta)(n\\beta_0\\overline{x}^2+\\beta\\mu_0^2)}\n",
"{2\\beta\\beta_0(n\\beta_0+\\beta)}$$<br>\n",
"\n",
"$$=-\\frac{n\\beta_0+\\beta}{2\\beta\\beta_0}(\\theta-\\frac{n\\beta_0\\overline{x}+\\beta\\mu_0}{n\\beta_0+\\beta})^2\n",
"+\\frac{2n\\beta\\beta_0\\overline{x}\\mu_0-n\\beta\\beta_0\\overline{x}^2-n\\beta\\beta_0\\mu_0^2}\n",
"{2\\beta\\beta_0(n\\beta_0+\\beta)}$$<br>\n",
"\n",
"$$=-\\frac{n\\beta_0+\\beta}{2\\beta\\beta_0}(\\theta-\\frac{n\\beta_0\\overline{x}+\\beta\\mu_0}{n\\beta_0+\\beta})^2\n",
"-\\frac{n(\\mu_0-\\overline{x})^2}{2(n\\beta_0+\\beta)}$$"
]
},
{
"cell_type": "code",
"execution_count": 222,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/latex": [
"これを元の比例式に代入すると以下となる。\n",
"<br><br>\n",
"$$P(\\theta|D) \\propto exp(-\\frac{n\\beta_0+\\beta}{2\\beta\\beta_0}\n",
"(\\theta-\\frac{n\\beta_0\\overline{x}+\\beta\\mu_0}{n\\beta_0+\\beta})^2\n",
"-\\frac{n(\\mu_0-\\overline{x})^2}{2(n\\beta_0+\\beta)})$$<br>\n",
"\n",
"$$\\propto exp(-\\frac{n\\beta_0+\\beta}{2\\beta\\beta_0}\n",
"(\\theta-\\frac{n\\beta_0\\overline{x}+\\beta\\mu_0}{n\\beta_0+\\beta})^2)\n",
"exp(-\\frac{n(\\mu_0-\\overline{x})^2}{2(n\\beta_0+\\beta)})$$\n",
"<br><br>\n",
"\n",
"ここで、2つめのexpの指数は定数であるため、これを比例式から取り除く。\n",
"<br><br>\n",
"$$P(\\theta|D) \\propto exp(-\\frac{n\\beta_0+\\beta}{2\\beta\\beta_0}\n",
"(\\theta-\\frac{n\\beta_0\\overline{x}+\\beta\\mu_0}{n\\beta_0+\\beta})^2)$$\n",
"<br><br>\n",
"\n",
"ここで以下のようにおく。<br><br>\n",
"$$\\mu_{posterior} = \\frac{n\\beta_0\\overline{x}+\\beta\\mu_0}{n\\beta_0+\\beta}$$<br>\n",
"$$\\beta_{posterior} = \\frac{\\beta\\beta_0}{n\\beta_0+\\beta}$$\n",
"<br><br>\n",
"すると上の式は以下のように書ける。\n",
"<br><br>\n",
"$$P(\\theta|D) \\propto exp(-\\frac{(\\theta-\\mu_{posterior})^2}{2\\beta_{posterior}})$$\n",
"<br><br>\n",
"ということで、事後分布は平均が$$\\mu_{posterior}$$,分散が$$\\beta_{posterior}$$の正規分布に従うことがわかる。"
],
"text/plain": [
"<IPython.core.display.Latex object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%%latex\n",
"これを元の比例式に代入すると以下となる。\n",
"<br><br>\n",
"$$P(\\theta|D) \\propto exp(-\\frac{n\\beta_0+\\beta}{2\\beta\\beta_0}\n",
"(\\theta-\\frac{n\\beta_0\\overline{x}+\\beta\\mu_0}{n\\beta_0+\\beta})^2\n",
"-\\frac{n(\\mu_0-\\overline{x})^2}{2(n\\beta_0+\\beta)})$$<br>\n",
"\n",
"$$\\propto exp(-\\frac{n\\beta_0+\\beta}{2\\beta\\beta_0}\n",
"(\\theta-\\frac{n\\beta_0\\overline{x}+\\beta\\mu_0}{n\\beta_0+\\beta})^2)\n",
"exp(-\\frac{n(\\mu_0-\\overline{x})^2}{2(n\\beta_0+\\beta)})$$\n",
"<br><br>\n",
"\n",
"ここで、2つめのexpの指数は定数であるため、これを比例式から取り除く。\n",
"<br><br>\n",
"$$P(\\theta|D) \\propto exp(-\\frac{n\\beta_0+\\beta}{2\\beta\\beta_0}\n",
"(\\theta-\\frac{n\\beta_0\\overline{x}+\\beta\\mu_0}{n\\beta_0+\\beta})^2)$$\n",
"<br><br>\n",
"\n",
"ここで以下のようにおく。<br><br>\n",
"$$\\mu_{posterior} = \\frac{n\\beta_0\\overline{x}+\\beta\\mu_0}{n\\beta_0+\\beta}$$<br>\n",
"$$\\beta_{posterior} = \\frac{\\beta\\beta_0}{n\\beta_0+\\beta}$$\n",
"<br><br>\n",
"すると上の式は以下のように書ける。\n",
"<br><br>\n",
"$$P(\\theta|D) \\propto exp(-\\frac{(\\theta-\\mu_{posterior})^2}{2\\beta_{posterior}})$$\n",
"<br><br>\n",
"ということで、事後分布は平均が$$\\mu_{posterior}$$,分散が$$\\beta_{posterior}$$の正規分布に従うことがわかる。"
]
},
{
"cell_type": "code",
"execution_count": 232,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/latex": [
"ここで、この事後分布の平均と分散からは重要な性質が見て取れる。<br>\n",
"以下のように少し変形する。(平均は分母分子共に$$\\beta\\beta_0$$で割り、分散は$$n$$で割る)\n",
"<br><br>\n",
"$$\\mu_{posterior} = \\frac{n\\beta_0\\overline{x}+\\beta\\mu_0}{n\\beta_0+\\beta}\n",
"= \\frac{\\frac{n}{\\beta}\\overline{x}+\\frac{1}{\\beta_0}\\mu_0}\n",
"{\\frac{n}{\\beta}+\\frac{1}{\\beta_0}}$$\n",
"<br><br>\n",
"$$\\beta_{posterior} = \\frac{\\beta\\beta_0}{n\\beta_0+\\beta}\n",
"= \\frac{\\frac{\\beta}{n}\\beta_0}{\\frac{\\beta}{n}+\\beta_0}$$\n",
"<br><br>\n",
"まず、平均について、$$\\frac{n}{\\beta}$$を$$w_1$$,\n",
"$$\\frac{1}{\\beta_0}$$を$$w_2$$とおくと、<br><br>\n",
"$$\\mu_{posterior} = \\frac{w_1\\overline{x}+w_2\\mu_0}{w_1+w_2}$$<br><br>\n",
"となり、標本平均と事前平均の重み付けをしていることがわかる。\n",
"<br><br>\n",
"次に分散については、$$\\frac{\\beta}{n}$$が$$Var(\\overline{x})$$であるので、<br><br>\n",
"$$\\beta_{posterior} = \n",
"\\frac{Var(\\overline{x})\\beta_0}{Var(\\overline{x})+\\beta_0}$$\n",
"<br><br>\n",
"となる。"
],
"text/plain": [
"<IPython.core.display.Latex object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%%latex\n",
"ここで、この事後分布の平均と分散からは重要な性質が見て取れる。<br>\n",
"以下のように少し変形する。(平均は分母分子共に$$\\beta\\beta_0$$で割り、分散は$$n$$で割る)\n",
"<br><br>\n",
"$$\\mu_{posterior} = \\frac{n\\beta_0\\overline{x}+\\beta\\mu_0}{n\\beta_0+\\beta}\n",
"= \\frac{\\frac{n}{\\beta}\\overline{x}+\\frac{1}{\\beta_0}\\mu_0}\n",
"{\\frac{n}{\\beta}+\\frac{1}{\\beta_0}}$$\n",
"<br><br>\n",
"$$\\beta_{posterior} = \\frac{\\beta\\beta_0}{n\\beta_0+\\beta}\n",
"= \\frac{\\frac{\\beta}{n}\\beta_0}{\\frac{\\beta}{n}+\\beta_0}$$\n",
"<br><br>\n",
"まず、平均について、$$\\frac{n}{\\beta}$$を$$w_1$$,\n",
"$$\\frac{1}{\\beta_0}$$を$$w_2$$とおくと、<br><br>\n",
"$$\\mu_{posterior} = \\frac{w_1\\overline{x}+w_2\\mu_0}{w_1+w_2}$$<br><br>\n",
"となり、標本平均と事前平均の重み付けをしていることがわかる。\n",
"<br><br>\n",
"次に分散については、$$\\frac{\\beta}{n}$$が$$Var(\\overline{x})$$であるので、<br><br>\n",
"$$\\beta_{posterior} = \n",
"\\frac{Var(\\overline{x})\\beta_0}{Var(\\overline{x})+\\beta_0}$$\n",
"<br><br>\n",
"となる。"
]
},
{
"cell_type": "code",
"execution_count": 239,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/latex": [
"上で、事後分布の平均が標本平均と事前平均の重み付けとなっていることを書いたが、もう少し深く見てみる。\n",
"<br><br>\n",
"$$\\mu_{posterior} = \\frac{n\\beta_0\\overline{x}+\\beta\\mu_0}{n\\beta_0+\\beta}\n",
"= \\frac{\\frac{n}{\\beta}\\overline{x}+\\frac{1}{\\beta_0}\\mu_0}\n",
"{\\frac{n}{\\beta}+\\frac{1}{\\beta_0}}$$\n",
"<br><br>\n",
"であったが、例えば事前分布の分散$$\\beta_0$$を非常に大きくとったと仮定する。これは事前分布の正規分布が非常に\n",
"幅広い裾野を持って広がっている状態である。意味としては、事前にわかっているパラメータの情報に確信度があまりない、\n",
"ということになる。<br><br>\n",
"\n",
"仮に$$\\beta_0=\\infty$$とすると、$$\\mu_{posterior} = \\overline{x}$$\n",
"となり、事後分布の平均は標本平均と一致する。つまり最尤推定による推定量と同じになる。<br><br>\n",
"\n",
"逆に、$$\\beta_0$$が非常に小さい値(つまり事前情報の確信度が非常に高い)であれば、事後分布の平均は事前分布の平均\n",
"$$\\mu_0$$に近づいていくことがわかる。<br><br>\n",
"\n",
"また、標本数nが非常に大きければ、事前分布の影響が少なくなっていくことも見て取れる。仮に$$n=\\infty$$\n",
"とすると、$$\\mu_{posterior} = \\overline{x}$$となり標本平均と一致する。"
],
"text/plain": [
"<IPython.core.display.Latex object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%%latex\n",
"上で、事後分布の平均が標本平均と事前平均の重み付けとなっていることを書いたが、もう少し深く見てみる。\n",
"<br><br>\n",
"$$\\mu_{posterior} = \\frac{n\\beta_0\\overline{x}+\\beta\\mu_0}{n\\beta_0+\\beta}\n",
"= \\frac{\\frac{n}{\\beta}\\overline{x}+\\frac{1}{\\beta_0}\\mu_0}\n",
"{\\frac{n}{\\beta}+\\frac{1}{\\beta_0}}$$\n",
"<br><br>\n",
"であったが、例えば事前分布の分散$$\\beta_0$$を非常に大きくとったと仮定する。これは事前分布の正規分布が非常に\n",
"幅広い裾野を持って広がっている状態である。意味としては、事前にわかっているパラメータの情報に確信度があまりない、\n",
"ということになる。<br><br>\n",
"\n",
"仮に$$\\beta_0=\\infty$$とすると、$$\\mu_{posterior} = \\overline{x}$$\n",
"となり、事後分布の平均は標本平均と一致する。つまり最尤推定による推定量と同じになる。<br><br>\n",
"\n",
"逆に、$$\\beta_0$$が非常に小さい値(つまり事前情報の確信度が非常に高い)であれば、事後分布の平均は事前分布の平均\n",
"$$\\mu_0$$に近づいていくことがわかる。<br><br>\n",
"\n",
"また、標本数nが非常に大きければ、事前分布の影響が少なくなっていくことも見て取れる。仮に$$n=\\infty$$\n",
"とすると、$$\\mu_{posterior} = \\overline{x}$$となり標本平均と一致する。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### 実装\n",
"\n",
"男子バスケットボール選手の平均身長を調べたい。事前情報として、男子身長の事前分布μ~N(170,5^2)を持っている。\n",
"バスケットボール選手の身長の分布は正規分布に従っているものとする。\n",
"なお、分散βは標本分散を用いると標本数に大きく影響されてしまうので、事前に10^2と目星をつけているものとしてそれを使うことにする。"
]
},
{
"cell_type": "code",
"execution_count": 367,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import math\n",
"import numpy as np\n",
"from scipy.stats import norm\n",
"\n",
"from matplotlib import pyplot as plt\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 368,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# visualize range\n",
"x_range = np.arange(100,250,0.5)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"ここで、真の分布をμ~N(195,8^2)としてデータを1000人分作る。"
]
},
{
"cell_type": "code",
"execution_count": 380,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"mu_true = 195\n",
"beta_true = 8**2\n",
"norm_true = norm(loc=mu_true, scale=np.sqrt(beta_true))\n",
"data = norm_true.rvs(size=1000)"
]
},
{
"cell_type": "code",
"execution_count": 381,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAmAAAAGnCAYAAAAQbutBAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl8VfWd//H3JwuBsISwy5IAQcClFKSytFJT7SBaC7Zj\n+7NTq7WtS+tCrdPaZToy08d0tLZWHTtqZ9CqrYO7oBWlVaNWAVEWIRAgCNlkDwmEJSHJ9/dHrjZm\nITfJvfd77z2v5+ORB7nnfu/NO99HcvLm3HPP15xzAgAAQOyk+A4AAAAQNBQwAACAGKOAAQAAxBgF\nDAAAIMYoYAAAADFGAQMAAIixsAqYmc0xsyIz22JmN7cz5m4z22pma81sSrPtO8xsnZmtMbO3IxUc\nAAAgUaV1NMDMUiTdI+lcSR9IWmVmi51zRc3GnC8pzzl3splNl3SvpBmhuxsl5TvnDkQ8PQAAQAIK\n5wjYNElbnXMlzrnjkhZJmtdizDxJD0uSc26lpCwzGxq6z8L8OgAAAIEQTjEaIams2e3y0LYTjalo\nNsZJ+ouZrTKzK7saFAAAIFl0+BJkBHzGObfTzAarqYhtcs79reUgM2NNJAAAkDCcc9bVx4ZzBKxC\nUk6z2yND21qOGdXWGOfcztC/eyU9o6aXNNvknOOj2cctt9ziPUM8fjAvzEsQ56WhsUHT/mea+t/a\nX99Z/B0dqj0U+DmJ9Afzwrx05qO7wilgqySNM7NcM+sh6RJJS1qMWSLpMkkysxmSqpxzu80s08z6\nhLb3ljRb0oZupwaAgEmxFK349gptuW6Lao7X6MrnrozIHwEAfnRYwJxzDZKuk7RMUqGkRc65TWZ2\ntZldFRrzgqTtZlYs6X5J3ws9fKikv5nZGkkrJD3nnFsWhe8DAJKemWlw78F6YO4DKtpXpN+t+p3v\nSAC6KKxzwJxzL0qa0GLb/S1uX9fG47ZLmtydgEGWn5/vO0JcYl7axry0LRnnpVd6Lz3xlSf0yzd+\nKeeczDp3GkoyzkkkMC9tY16iw+LlELaZuXjJAgDxoKGxQakpqb5jAGiDmclF+SR8AECMrd65Wp/9\nw2d9xwAQJRQwAIhDt791u7488cu+YwCIEl6CBIA4U3WsSrl35qr0+6XK6pnlOw6ANvASJAAkmSWb\nl+hzoz9H+QKSGAUMAOLM44WP66unfTXs8feuule/fuvXUUwEINIoYAAQRxpdo5ycvjj+i2E/5rQh\np+mP7/0xiqkARBrngAFAgmtobNDI347Ua998TeMHjvcdBwgEzgEDgIBLTUnVRRMu0pLNLVeJAxCv\nKGAAkARm583Wy9tf9h0DQJgoYACQBPJH52vj3o1qdI2+owAIA+eAAUCSaHSNSjH+Xw3EAueAAUCS\nuHPFndpds7vLj6d8AYmD31YAiANHjh/Rz1/9uTLTM31HARADFDAAiANvlr6pTw79pPpm9PUdBUAM\nUMAAIA68WfamZuXM8h0DQIxQwAAgDiwvX66Zo2Z2+3l21+zW+t3rI5AIQDRRwADAs0bXqJXlKzVj\n5IxuP9fy8uX60V9/FIFUAKKJAgYAnjU0NujBeQ9qSO8h3X6uGSNnaGX5Sq4HBsQ5ChgAeJaemq4v\nnfKliDzXsD7DlNUzS1v2b4nI8wGIDgoYACSZmSNnannZct8xAJwABQwAkszMkTO1onyF7xgATiDN\ndwAAQGSdM+Yc1TbU+o4B4ARYCxIAAKCTWAsSABLYwtULddeKu3zHABBjFDAA8Oj10tdZ/xEIIAoY\nAHi0ZucanXHSGb5jAIgxChgAeHKs/piKK4t1+pDTfUcBEGMUMADwZMOeDTp54MnKSMuI+HM757Sg\nYIEaGhsi/twAuo8CBgCerNm5RlOGTYnKc5uZ/rT+T9q8f3NUnh9A91DAAMCTb07+pu44746oPf+U\nYVO0ZueaqD0/gK6jgAGAJ+mp6RrQa0DUnn/KsClas4sCBsQjChgAJKlJQydp/Z71vmMAaAMFDACS\n1GlDTlPhnkLfMQC0gQIGAEkqJytHt5x9i1jmDYg/rAUJAB7U1tdG5fITAGKDtSABIAFd+dyVenjd\nw75jAPCEAgYAHmzYs0ETB030HQOAJxQwAIixhsYGFe0r0qmDT/UdBYAnFDAAiLH3D7yvoX2Gqk+P\nPr6jAPCEAgYAMbZhz4aYLsB9xeIrtOfwnph9PQAdo4ABQIztrNkZtTUg27KtcpvW7+aCrEA8SfMd\nAACC5ntnfi+mX+/UwaeqaF+Rzh17bky/LoD2cQQMAJLchIETVLSvyHcMAM1QwAAgyU0cNFFF+ylg\nQDyhgAFAkps4aKI279vsOwaAZliKCACSXENjg5aXL9dZOWf5jgIkje4uRUQBA4AY+uDQB+qV1kvZ\nvbJ9RwHQDawFCQAJ5Jdv/JI1IAFQwAAglor2FbEGJAAKGADEUtG+Ik0YNMF3DACeUcAAIEYO1R5S\n5dFK5WTl+I4CwDMKGADEyJb9WzR+4HilWOx3vXUNdZp07yQ1usaYf20ArVHAACBGjhw/otl5s718\n7R6pPVR5tFJl1WVevj6Aj2MtSACIkVm5szQrd5a3rz9uwDgVVxYrt3+utwwAmnAEDAACYtyAcdp2\nYJvvGABEAQOAwMjLzlNxZbHvGABEAQOAwPjwJUgA/rEUEQAExOG6w6ptqNWAXgN8RwESHksRAUAC\n2Ht4r1aWr/SaoXeP3pQvIE5QwAAgBl4veV23vnmr7xgA4gQFDABioLiyWOOyx/mOASBOUMAAIAaK\nK4uVNyDPdwwAcYICBgAxUHygWOMGxMcRMN7wBPhHAQOAGCiujI8C9vSmp3XpM5f6jgEEHgUMAKKs\n0TVqVs4sjeo3yncUjeg7Qpv3bfYdAwg8rgMGAAGy/8h+5d2dpwM3H5BZly9hBAQe1wEDAIRtQK8B\nMjNVHq30HQUINAoYAASImbEkERAHwipgZjbHzIrMbIuZ3dzOmLvNbKuZrTWzyS3uSzGz1Wa2JBKh\nAQBdl5edp5LqEt8xgEDr8BwwM0uRtEXSuZI+kLRK0iXOuaJmY86XdJ1z7gtmNl3SXc65Gc3uv1HS\nVEn9nHNz2/k6nAMGADFQ31ivtJQ03zGAhBaLc8CmSdrqnCtxzh2XtEjSvBZj5kl6WJKccyslZZnZ\n0FDAkZIukPS/XQ0JAInsD2v/oCPHj/iO8RHKF+BfOAVshKSyZrfLQ9tONKai2ZjfSvqhJA5vAQic\n4w3Hdc3z11B6AHxMVPcIZvYFSbudc2vNLF/SCQ/VLViw4KPP8/PzlZ+fH814ABB1JdUlGt53uHqk\n9vAdBUA3FBQUqKCgIGLPF845YDMkLXDOzQnd/rEk55y7rdmY+yS96px7LHS7SNLZkuZLulRSvaRe\nkvpKeto5d1kbX4dzwAAknReLX9Rvlv9Gf/nGX3xHARBBsTgHbJWkcWaWa2Y9JF0iqeW7GZdIuiwU\naIakKufcbufcT51zOc65saHHvdJW+QKAZLWtcpvGZftfgqilI8eP6Fj9Md8xgMDqsIA55xokXSdp\nmaRCSYucc5vM7Gozuyo05gVJ282sWNL9kr4XxcwAkDDiZQ3Ili59+lI9v+V53zGAwArrHDDn3IuS\nJrTYdn+L29d18ByvSXqtswEBIJFNHzk9LgsYF2MF/OJtOQAQRZecfonvCG3Ky87TOx+84zsGEFgs\nRQQAATS6/2jtqN7hOwYQWBQwAAigMdljtP3Adt8xgMCigAFAAOVk5UiSuPwP4EeH1wGLFa4DBgAA\nEkUsrgMGAOiCZduW6bUdvPkbQGsUMACIkqc2PqXCvYW+YwCIQxQwAIiSHdU7NLr/aN8xAMQhChgA\nRMmOqh0a03+M7xgA4hAFDACioNE1qqSqRLn9c31HaVdtfa227N/iOwYQSBQwAIiCXTW71L9nf2Wm\nZ/qO0q7yg+U674/n+Y4BBBIFDACiICM1Q7d9/jbfMU5oVNYofXDoA9U31vuOAgQOBQwAomBg5kBd\nPvly3zFOqEdqDw3tPVTlB8t9RwEChwIGAAE2uv9oliQCPKCAAUCAjckeox1VO3zHAAKHAgYAAXbm\n8DOVYvwpAGKNtSABAAA6ibUgASDONDQ26KrnrhL/qQTQHgoYAERYxaEK/Xnrn2XW5f8cA0hyFDAA\niDCWIALQEQoYAETYjioW4QZwYhQwAIiw7Qe2J1QB27Bng3Ye2uk7BhAoFDAAiLAd1Yn1EuQdy+/Q\nn7f+2XcMIFDSfAcAgGTz7Snf1qh+o3zHCBtXwwdijyNgABBhZ+Wcpdz+ub5jhG1M/zHaUb3Ddwwg\nUChgABBwHAEDYo8CBgABx3qQQOxRwAAg4E7qc5Kmj5yuRtfoOwoQGKwFCQAA0EmsBQkAceQPa/+g\nxwsf9x0DQJyjgAFABL1R8oaqj1X7jgEgzlHAACCCSqpLEuoSFAD8oIABQASVVpcqJyvHdwwAcY4C\nBgAR0ugaVXawLCELWOXRSr2w9QXfMYDAoIABQITsPbxXfXr0UWZ6pu8onbb/yH5d98J1vmMAgUEB\nA4AI6ZfRT4svWew7RpeMyhqlikMVamhs8B0FCAQKGABESK/0Xvr0qE/7jtElPdN6akCvAdpVs8t3\nFCAQKGAAAElSTlaOSqtLfccAAoECBgCQJOVm5aqkusR3DCAQKGAAAEnS3AlzNbT3UN8xgEBgLUgA\nAIBOYi1IAIgT5zx0jg7VHvIdA0ACoIABQATU1NVoRfkK9enRx3cUAAmAAgYAEfDhEkRmXX5FAkCA\nUMAAIAJKqliEG0D4KGAAEAGl1aXK6Zd4a0C29NiGx1RxsMJ3DCDppfkOAADJoKQ6OY6APbTuIWWm\nZ2pEvxG+owBJjQIGABEwf/p83xEigouxArFBAQOACBjaJzkuYMpyREBscA4YAOAjuf05AgbEAgUM\nAPCR3KxcjoABMUABAwB8ZMKgCbr4lIt9xwCSHmtBAgAAdBJrQQKAZ08UPqGbXrrJdwwACYQCBgDd\ntLVyq9JSeFM5gPBRwACgm0qrS5PiIqwAYocCBgDdVFJdopysxF+GCEDsUMAAoJtKq0uVm5U8R8DW\n716vR9c/6jsGkNQoYADQDc45lVQl1xGwnTU79cCaB3zHAJIaBQwAumnbDduU1TPLd4yIYTkiIPoo\nYADQDWaWNOtAfignK0dlB8vU6Bp9RwGSFgUMAPAxmemZ6tOjj/Ye3us7CpC0KGAAgFZys1iUG4gm\nChgAoJWfnPUTDeszzHcMIGmxFiQAdINzTmZdXg4OQIJiLUgA8GjWg7P07gfv+o4BIMFQwACgG4or\ni3VS35N8xwCQYChgANBFx+qP6cCxA5wrBaDTKGAA0EVl1WUa2W+kUoxdKYDOCWuvYWZzzKzIzLaY\n2c3tjLnbzLaa2VozmxzalmFmK81sjZmtN7NbIhkeAHxK9kW45y+dr5q6Gt8xgKTUYQEzsxRJ90g6\nT9Jpkr5mZhNbjDlfUp5z7mRJV0u6T5Kcc7WSPuecmyJpsqTzzWxaZL8FAPCj4mBFUi3C3dKy95ep\npIprgQHREM4RsGmStjrnSpxzxyUtkjSvxZh5kh6WJOfcSklZZjY0dPtIaEyGpDRJXGsCQFK4fPLl\n+p8v/o/vGFHDxViB6AmngI2QVNbsdnlo24nGVHw4xsxSzGyNpF2S/uKcW9X1uAAQX9JT031HiJqc\nrByOgAFRkhbtL+Cca5Q0xcz6SXrWzE51zm1sa+yCBQs++jw/P1/5+fnRjgcAaEduVq5Kq0t9xwDi\nQkFBgQoKCiL2fOEUsApJzc8yHRna1nLMqBONcc4dNLNXJc2R1GEBAwD4lZOVo6XFS33HAOJCywND\n//Zv/9at5wvnJchVksaZWa6Z9ZB0iaQlLcYskXSZJJnZDElVzrndZjbIzLJC23tJ+gdJRd1KDACI\nic+N+Zyunnq17xhAUurwCJhzrsHMrpO0TE2FbaFzbpOZXd10t/u9c+4FM7vAzIolHZZ0RejhJ0l6\nKPROyhRJjznnXojOtwIAsVPfWK+GxgZlpGX4jhI1I/uN1Mh+I33HAJISi3EDQBesKF+hG5beoLev\nfNt3FAAesBg3AHhQUpXcF2EFEF0UMADogtLq0qS+CCuA6KKAAUAXJPsyRACiiwIGAF1QWl0aiAL2\neOHjemTdI75jAEmHAgYAXXD4+GHl9k/+lyArj1bqjdI3fMcAkg4FDAC64OXLXtYZJ53hO0bU5WTl\nsB4kEAUUMABAu1iOCIgOChgAoF05WTkqrS4V12kEIosCBgBoV9+MvspIzdD+o/t9RwGSCgUMAHBC\niy9ZrN7pvX3HAJIKSxEBQCftrtmtvhl9lZme6TsKAE9YiggAYmz+i/P1zKZnfMcAkMAoYADQSSXV\nJYG4BhiA6KGAAUAnlVSVsA4kgG6hgAFAJ9TW12r/0f0a3ne47ygAEhgFDAA6oexgmYb3Ha7UlFTf\nUWKm+li1Zj8y23cMIKlQwACgEw7WHtTMkTN9x4ipvhl99XrJ6zpy/IjvKEDS4DIUAIAOnfxfJ+v5\nrz2vCYMm+I4CxAUuQwEAiDoW5QYiiwIGAOgQi3IDkUUBAwB0KDcrVyVVHAEDIoVzwAAAHdpVs0uS\nNKzPMM9JgPjAOWAAECMNjQ1aVbHKdwwvhvUZRvkCIogCBgBh2lmzU3MXzfUdA0ASoIABQJhYgghA\npFDAACBMLMINIFIoYAAQJo6AAYgUChgAhKmkOtgF7KaXbtJTG5/yHQNIChQwAAjT4MzBOn3I6b5j\neJNiKdpaudV3DCAppPkOAACJ4hfn/MJ3BK9y++eqcE+h7xhAUuAIGAAgLDlZOSo9yHJEQCRQwAAA\nYWE5IiByKGAAgLDkZOWopLpELBsHdB9rQQIAwuKc066aXRrWZ5jMurwEHpAUursWJAUMAMKwae8m\npaema9yAcb6jAIgDLMYNADFw/7v3a8nmJb5jAEgSFDAACEPQL8IKILIoYAAQhpIq1oEEEDkUMAAI\nQ0l1iXKycnzHiAucrwt0HwUMADpQU1ejo8ePanDmYN9RvFu7a61mPTjLdwwg4VHAAKADh+sO61tT\nvsWlFySd1Ockbd6/2XcMIOFxGQoAQNicc+r9y97a88M96tOjj+84gDdchgIAEDNmptz+LEkEdBcF\nDADQKaP7j9aOqh2+YwAJjQIGAOiU0VmjVVpd6jsGkNA4BwwA0Cl1DXVKT0nnTQkINM4BA4Aoe2Td\nI6qtr/UdI270SO1B+QK6iQIGACdQ11Cn7zz3HaWlpPmOAiCJUMAA4ATKqss0vO9wpaak+o4CIIlQ\nwADgBFiEG0A0UMAA4AR2VO1gEe421DXUqa6hzncMIGFRwADgBEqqOALWlosWXaRl25b5jgEkLM4q\nBYAT+MTQT2hQ5iDfMeIOF2MFuocCBgAncPGpF/uOEJcoYED38BIkAKDTKGBA91DAAACdRgEDuocC\nBgDotNH9R+vw8cO+YwAJi7UgAQAAOom1IAEgSt4qe0uvbH/FdwwASYgCBgDtWFy0WCvKV/iOASAJ\nUcAAoB3vV72vMf3H+I4BIAlRwACgHdsPbNeYbAoYgMijgAFAO7ZXbdfY7LG+Y8St2vpalVWX+Y4B\nJCQKGAC04WDtQdXW12pw5mDfUeLWe7vf00WPXeQ7BpCQKGAA0IZG16jbPn+bzLr8LvOkx8VYga7j\nOmAAgC5xzqnvf/ZVxQ8qlNUzy3ccIKa4DhgAwAsz09jssdpetd13FCDhUMAAAF02NnustlVu8x0D\nSDgUMABAl505/EzVNdT5jgEkHM4BAwAA6KSYnANmZnPMrMjMtpjZze2MudvMtprZWjObHNo20sxe\nMbNCM1tvZjd0NSgAxIpzTjcsvUENjQ2+owBIUh0WMDNLkXSPpPMknSbpa2Y2scWY8yXlOedOlnS1\npPtCd9VL+oFz7jRJMyVd2/KxABBv9hzeo0fXP6rUlFTfUQAkqXCOgE2TtNU5V+KcOy5pkaR5LcbM\nk/SwJDnnVkrKMrOhzrldzrm1oe01kjZJGhGx9AAQBdurWIIIQHSFU8BGSGq+1kS5WpeolmMqWo4x\ns9GSJkta2dmQABBL2w9sZxFuAFGVFosvYmZ9JD0paX7oSFibFixY8NHn+fn5ys/Pj3o2AGhpexUF\nrDM279us/j37a2ifob6jAFFTUFCggoKCiD1fh++CNLMZkhY45+aEbv9YknPO3dZszH2SXnXOPRa6\nXSTpbOfcbjNLk/S8pKXOubtO8HV4FySAuHDlkis1dfhUXfOpa3xHSQjfWvwtzRw5U1dOvdJ3FCBm\nYvEuyFWSxplZrpn1kHSJpCUtxiyRdFko0AxJVc653aH7HpC08UTlCwDiyaWTLtXsvNm+YySMvOw8\nvX/gfd8xgITS4UuQzrkGM7tO0jI1FbaFzrlNZnZ1093u9865F8zsAjMrlnRY0jclycw+I+nrktab\n2RpJTtJPnXMvRun7AYBuO3v02b4jJJSx2WP1TNEzvmMACSWsc8BChWlCi233t7h9XRuPe1MS7+MG\ngCQ2NnssR8CATmIpIgBAt+QN4CVIoLMoYACAbhnYa6Bm5c5SbX2t7yhAwmAtSAAAgE6KyVqQABAU\n9666V0u3LvUdA0CSo4ABQDMvbntRR+uP+o4BIMlRwACgmeLKYo0bMM53DABJjgIGACGNrlHvH3hf\nedl5vqMASHIUMAAIqThYoeye2erdo7fvKAmntr5WT218yncMIGFQwAAghJcfuy7FUvRPT/+Tjjcc\n9x0FSAgUMAAImTR0ku6aw7K1XZGemq7hfYertLrUdxQgIVDAACBkYOZATTlpiu8YCSsvO0/bDmzz\nHQNICBQwAEBEsCYkED4KGAAgIvKy81RcWew7BpAQKGAAgIiYlTtLpww6xXcMICGwFiQAAEAnsRYk\nAETA2xVv66rnrvIdA0BAUMAAQNLGvRtZAxJAzFDAAEDStsptGpfNRVgBxAYFDAAkFR/gKvgAYocC\nBgBiGaJIKdxTqCWbl/iOAcQ9ChiAwHPOaev+rRSwCCipLtE9b9/jOwYQ9yhgACBp1ZWrNKDXAN8x\nEt74geO1tXKr7xhA3KOAAQg8M9PJA0+WWZcv6YOQ0f1Ha+ehnTpWf8x3FCCuUcAAABGTlpKm3P65\nrAkJdIACBgCIqPEDx2vL/i2+YwBxLc13AABAcrnqjKuUk5XjOwYQ11gLEgAAoJNYCxIAuqHRNWrE\nHSN09DjLEAGIHQoYgEArP1guk6lXei/fUQAECAUMQKAV7SvShEETfMcAEDAUMACBVrSvSBMHTvQd\nA0DAUMAABBpHwKLjj+/9UW+UvOE7BhC3KGAAAq24slgTB3EELNI27d2kV3e86jsGELe4DhiAQFv6\n9aVy4hI4kXbywJP18vaXfccA4hZHwAAEWmpKqtJS+L9opHE1fODEKGAAgIj7sIBxgW2gbRQwAEDE\nDew1UKmWqj2H9/iOAsQlChgAIOLMTH+46A/qmdbTdxQgLrEWJIDAqjpWpayMLJl1eTk3AAHFWpAA\n0EVnPXCW1u1e5zsGgACigAEIpPrGem07sE3jB473HQVAAFHAAATSjqodGtp7qDLTM31HARBAFDAA\ngbR532augA/AGwoYgEAq2ldEAYuBH/3lR1pZvtJ3DCDuUMAABNKhukOaNHSS7xhJ78DRA1q9c7Xv\nGEDcYf0NAIG0IH+B7wiBcNqQ01S4t9B3DCDucAQMABA1pw4+VRv3bvQdA4g7FDAAQNRQwIC2UcAA\nAFEzou8IHa0/qv1H9vuOAsQVliICAERV4Z5CjR84Xump6b6jABHT3aWIKGAAAmfj3o0a0XeEsnpm\n+Y4CIEGxFiQAdNJVz12lNbvW+I4BIMAoYAACxTmnDXs26LTBp/mOAiDAKGAAAqXiUIV6pvXU4N6D\nfUcBEGAUMACBUrinUKcN4egXAL8oYAACZcOeDTp98Om+YwTORYsu0vKy5b5jAHGDAgYgUPpm9FX+\n6HzfMQInu1e2NuzZ4DsGEDdYCxJAoFw19SrfEQLp9MGnU8CAZjgCBgCIuklDJ2nd7nW+YwBxgwIG\nAIi6Tw77pNbtXicuuA00oYABAKJuSO8h6pXWSx8c+sB3FCAusBQRACAmjtUfU8+0nr5jABHBUkQA\nEKanNz2tvYf3+o4RWJQv4O8oYAAC4/ql1+vw8cO+YwAABQxAMOw7sk81dTXKzcr1HQUAKGAAguG9\n3e9p0tBJMuvyKRsAEDEUMACBsG7XOk0aMsl3jMCrqatRTV2N7xiAdxQwAIGwetdqTR0+1XeMwJu/\ndL7++N4ffccAvGMpIgCBcM7oc3T26LN9xwi8M046Q6t3rvYdA/AurCNgZjbHzIrMbIuZ3dzOmLvN\nbKuZrTWzKc22LzSz3Wb2XqRCA0BnXTHlCo3NHus7RuBNHT5V7+5813cMwLsOC5iZpUi6R9J5kk6T\n9DUzm9hizPmS8pxzJ0u6WtK9ze5+MPRYAEDATRo6SZv2blJdQ53vKIBX4RwBmyZpq3OuxDl3XNIi\nSfNajJkn6WFJcs6tlJRlZkNDt/8m6UDkIgMAElVmeqbGZo9V4Z5C31EAr8IpYCMklTW7XR7adqIx\nFW2MAQBA5487X3uPsCIBgi2uTsJfsGDBR5/n5+crPz/fWxYAQHTcPvt23xGATisoKFBBQUHEnq/D\nxbjNbIakBc65OaHbP5bknHO3NRtzn6RXnXOPhW4XSTrbObc7dDtX0nPOuXYvwsNi3ACi4Vj9MX3/\nxe/r3i/cy0VYAURMLBbjXiVpnJnlmlkPSZdIWtJizBJJl4UCzZBU9WH5+jBn6AMAYuq93e9pRfkK\nyheAuNJhAXPONUi6TtIySYWSFjnnNpnZ1WZ2VWjMC5K2m1mxpPslfe/Dx5vZo5LekjTezErN7Ioo\nfB8A0KaV5Ss1bcQ03zEA4GM6fAkyVngJEkA0fOOZbyg/N1/fPuPbvqMASCKxeAkSABIWR8Di057D\ne1Swo8B3DMAbChiApFV5tFI7a3bq1MGn+o6CFsoPluvaF671HQPwhgIGIGn1SuulpV9fqtSUVN9R\n0MInhnxCO6p26GDtQd9RAC8oYACSVq/0Xjor5yzfMdCG9NR0TR42We988I7vKIAXFDAAgBfTR0zX\n2xVv+46YTJtlAAAOlklEQVQBeEEBAwB4MW3ENK0oX+E7BuBFXC1FBAAIjs/mflal1aW+YwBecB0w\nAACATuI6YADQhutfuF6PFz7uOwYAtIkCBiApvbz9ZY0bMM53DABoEwUMQNLZf2S/yg+Wa9LQSb6j\nAECbKGAAks5bZW9p+sjpSkvhfUYA4hMFDEDSebPsTX1m1Gd8x0CYfv/u7/VGyRu+YwAxRQEDkHTW\n7V7HFfATyK6aXVqyeYnvGEBMcRkKAEmn0TXKOccakAni9ZLXddOym7TqylW+owBh4zIUANBCiqVQ\nvhLI9BHTVbSvSNXHqn1HAWKGAgYA8CojLUPTR0zXG6WcB4bgoIABALzLH52vV7e/6jsGEDOcAwYA\n8G7noZ2qa6hTbv9c31GAsHT3HDAKGICkUVZdJiennKwc31EAJDlOwgeAkDtX3KmH1j7kOwYAdIgC\nBiBpvLTtJZ037jzfMQCgQxQwAEmh/GC5dtXs0tSTpvqOAgAdooABSAovFb+kz4/9PNf/SnCNrlHH\n6o/5jgFEHQUMQFJ4adtLOi+Plx8T3fyl83X/O/f7jgFEHQUMQFKYNHQS538lgbNHn62Xtr3kOwYQ\ndVyGAgAQNw4cPaDcO3O16593KTM903ccoF1chgIAkDSye2Vr6vCpevn9l31HAaKKAgYAiCvzJszT\n4s2LfccAoooCBgCIK3MnzNWhukO+YwBRxTlgAAAAncQ5YAAC7bvPf1fFlcW+YwBAp1DAACSsXTW7\ntKhwkUb2G+k7CgB0CgUMQMJ6cuOTunD8heqZ1tN3FADoFAoYgIT1WOFj+uqpX/UdAwA6jQIGICGV\nHyxX4Z5Czc6b7TsKouTo8aO6+S83izdoIRlRwAAkpKVbl2rexHnKSMvwHQVR0jOtp57d/KxWfbDK\ndxQg4rgMBYCE5JzT0fqjLFeT5BYULFDl0Urdff7dvqMAH9Pdy1BQwAAAcWv7ge2a9r/TVH5jOUc7\nEVe4DhgAIGmNyR6j04ecrue3PO87ChBRFDAAQFy7YvIVevi9h33HACKKlyABAHHt6PGjOnz8sAZl\nDvIdBfgIL0ECCJSFqxfqYO1B3zEQQ73Se1G+kHQoYAASRtG+Iv30lZ8qI5WTsQEkNgoYgITxu7d/\npyvPuJJ3wwFIeGm+AwBAOA7WHtSf1v9J7333Pd9RAKDbOAIGICHc9859mjNujkb2G+k7Cjx6o+QN\nrdm5xncMoNsoYADiXn1jve5aeZd+ctZPfEeBZ5v2bdLPXvmZ7xhAt3EZCgAJoay6TKOyRvmOAc9q\n62s19u6xev5rz2vKSVN8x0GAcRkKAIFA+YIkZaRl6KaZN+kXr//CdxSgWyhgAICEcs2nrtHbFW9r\nZflK31GALqOAAQASSmZ6pm45+xb9ZvlvfEcBuoxzwAAACae+sV51DXXKTM/0HQUBxTlgAJLSlv1b\ndO2fr/UdA3EqLSWN8oWERgEDEHecc7r2hWuVNyDPdxQAiAoKGIC48+j6R7W7ZrdumH6D7ygAEBUs\nRQQgrpRVl+nGl27U0q8vVVoKuyiE5+jxo0pLSVN6arrvKEBYOAIGIG40ukZdsfgKzZ8+X1OHT/Ud\nBwnkh3/5of79tX/3HQMIGwUMQNxoaGzQ+ePO181n3ew7ChLMv3z2X7RwzUK9WPyi7yhAWLgMBQAg\nKbxR8oYufuJivfWtt3gDB6KOy1AAACBpVu4sLTh7gS78vwu178g+33GAE+IIGAAgqfz05Z+qf8/+\n+tFnfuQ7CpJYd4+AUcAAeLNx70YNzhyswb0H+46CJPLh3xKzLv9tBDrES5AAEtLysuU656FztLKC\nBZURWWZG+ULco4ABiLkH1zyoeYvmaeHchbpw/IW+4wBAzFHAAMRM1bEqfeOZb+jWN2/Va998TV8Y\n/wXfkRAQu2p26fY3b1dDY4PvKIAkChiAGHpgzQPq26OvVl+1WqcMPsV3HARIo2vUi9te1MyFM7Wq\nYpXvOAAn4QOIHecc5+bAm0bXqEfWPaIfv/xjnTvmXP3r2f+q8QPH+46FBMVJ+ADizuG6wzrecLzV\ndsoXfEqxFF0++XJtvm6zThl0imY9OEt7Du/xHQsBFVYBM7M5ZlZkZlvMrM01QszsbjPbamZrzWxy\nZx6LthUUFPiOEJeYl7b5npdDtYf0eOHj+soTX9HwO4brnQ/e8ZrnQ77nJR4FfU76ZfTTzz77M5Xd\nWKYhvYd8tD3o89Ie5iU6OixgZpYi6R5J50k6TdLXzGxiizHnS8pzzp0s6WpJ94X7WLSPH/q2MS9t\n8zUvj6x7RGfcf4aG/WaYFq5ZqPPyztO2G7Zp5qiZXvK0xM9La8xJkx6pPT52+8N5+Vvp3zT7kdn6\n+Ss/19Obntb2A9sV5FNk+HmJjrQwxkyTtNU5VyJJZrZI0jxJRc3GzJP0sCQ551aaWZaZDZU0JozH\nAogjlUcrtaNqh6qOVenA0QOqPFqpikMVOuOkMzR3wtxW4z8x9BO654J7NPWkqcpIy/CQGIisTw79\npK4981q9u/NdPbj2QV2/83pVHavStWdeq1/9w69ajd97eK/2Hdmnvhl9lZmeqcz0TGWkZvCSO04o\nnAI2QlJZs9vlaiplHY0ZEeZjP3Lhox+/HtCF4y/UNZ+6ptW4JZuX6P5372+1/Yvjv9ju+HvfubfN\n8d8783utti8uWtzm+LkT5rY7/nerftdq+7wJ83TttGtbbX+26Nl2x1837bpW25/Z9IzuWXVPq+0X\nTbhI10+/vs3x//X2f7UeP/Ei3TD9hlbbn970dJvjvzTxS+2Ov2vlXa22f3nilzV/xvxW25/a+FTb\n40/5sr4/4/uttj+58UndueLOVtv/8ZR/1I0zb2xz/G9X/LbN8T+Y+YNW258ofEJ3rLij1faLT7lY\nN336pjbH/2b5b1pt/8qpX2lz/OOFj7c7/p8//c+ttj+24TH9evmvW23/6qlf1Q8/88M2x9/+1u2t\ntmeXZrfaJkmLNizS7W/dLuecahtqVVtfq9qGWl026TL9x7n/0Wr881ue1x3L71B2r2xl92z6GN53\nuPpl9Gvz+ScPm9zmdiBR9c3oq3kT52nexHkfbTtYe1BHjx9tc3zBjgL9/NWfq6auRkeOH9GR40dU\n11CnG6bfoDvntN6XLdqwSLf+7ValpaQpNSVVqZaqtJS0dveJi4sWf+xvgKmp2M2dMLfNvxnPbX5O\n//3Of7caf+H4C9v8G/b8lufb/Jt6wbgL9N0zv9tq+5+3/Fn3vXtfzMZnpGboya8+2WpcouvwXZBm\n9o+SznPOXRW6famkac65G5qNeU7Sfzrn3grd/qukH6npCNgJH9vsOYJ7fBcAACSc7rwLMpwjYBWS\ncprdHhna1nLMqDbG9AjjsZK6900AAAAkknDeBblK0jgzyzWzHpIukbSkxZglki6TJDObIanKObc7\nzMcCAAAESodHwJxzDWZ2naRlaipsC51zm8zs6qa73e+dcy+Y2QVmVizpsKQrTvTYqH03AAAACSBu\nroQPAAAQFDG5Er6ZLTSz3Wb2XrNt2Wa2zMw2m9lLZpbV7L6fhC7qusnMZsciow/tzMuvQt/3WjN7\nysz6NbsvsPPS7L6bzKzRzAY025b089LenJjZ9aHve72Z3dpse9LPidTu79AnzWy5ma0xs7fN7FPN\n7gvKvIw0s1fMrDD0s3FDaHtg97ttzMn1oe2B3ue297PS7P6g7nPbnZeI7Xedc1H/kHSWpMmS3mu2\n7TZJPwp9frOkW0OfnyppjZpeHh0tqVihI3XJ9tHOvHxeUkro81vV9O7SwM9LaPtISS9K2i5pQGjb\nKUGYl3Z+VvLV9PJ+Wuj2oCDNyQnm5SVJs0Ofny/p1dDnQfodGiZpcujzPpI2S5oY5P3uCeYk0Pvc\n9uYldDvI+9z2fl4itt+NyREw59zfJB1osXmepIdCnz8k6aLQ53MlLXLO1TvndkjaqhNcOyyRtTUv\nzrm/OucaQzdXqOkXQAr4vIT8VlLLC2PNUwDmpZ05+a6a/oDWh8bsC20PxJxI7c5Lo6QPj+z019/f\neR2k36Fdzrm1oc9rJG1S074ksPvdduZkRND3ue3NS+juIO9z25uXiO13fS7GPcQ1vVNSzrldkj5c\nkKvlxVsr9PcfhqD5lqQXQp8Hel7MbK6kMufc+hZ3BXlexkv6rJmtMLNXzWxqaHuQ50SSbpT0azMr\nlfQrST8JbQ/kvJjZaDUdJVwhaSj73Y/NycoWdwV6n9t8Xtjn/l2Ln5eI7XfDuQ5YrPBugGbM7GeS\njjvn/s93Ft/MrJekn0r6B99Z4kyapGzn3AwzO1PSE5LGes4UD74rab5z7lkzu1jSAwroz46Z9ZH0\npJrmo8ZaX/A6cPvdlnPSbHug97nN50VSg9jnSmrzdyhi+12fR8B2W9N6kTKzYZL2hLa3d1HXwDCz\nb0q6QNI/Ndsc5HnJU9Nr6uvMbLuavvfVZjZE4V0oOFmVSXpakpxzqyQ1mNlABXtOJOly59yzkuSc\ne1LSmaHtgfodCv2heFLSI865xaHNgd7vtjMngd/ntjEv7HPV7s9LxPa7sSxgFvr40BJJ3wx9frmk\nxc22X2JmPcxsjKRxkt6OVUgPPjYvZjZHTa+5z3XO1TYbF9h5cc5tcM4Nc86Ndc6NUdOaolOcc3vU\nNC//LyDz0vJ36FlJ50iSmY2X1MM5t1/BmhOp9bxUmNnZkmRm56rpXAwpeL9DD0ja6JxrvhBr0Pe7\nreaEfa6kFvPCPvcjbf0ORW6/G6N3Ezwq6QNJtZJK1XSh1mxJf1XTOwuWSerfbPxP1PQOgk0KvZsp\nGT/amZetkkokrQ59/Dfzoita3P++Qu/ICcq8tPOzkibpEUnrJb0j6ewgzckJ5uXToflYI2m5mv5w\nBG1ePqOml5HWhuZhtaQ5kgYEdb/bzpycH/R9bns/Ky3GBHGf297vUHqk9rtciBUAACDGfJ4DBgAA\nEEgUMAAAgBijgAEAAMQYBQwAACDGKGAAAAAxRgEDAACIMQoYAABAjP1/8LKunhvQniYAAAAASUVO\nRK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10fa8c5c0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots(1,1,figsize=(10,7))\n",
"vis_true = ax.plot(x_range,norm_true.pdf(x_range),'g--')"
]
},
{
"cell_type": "code",
"execution_count": 382,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# params of prior distribution\n",
"mu_prior = 170\n",
"beta_prior = 5**2\n",
"norm_prior = norm(loc=mu_prior, scale=np.sqrt(beta_prior))"
]
},
{
"cell_type": "code",
"execution_count": 383,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x110734400>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots(1,1,figsize=(10,7))\n",
"vis_prior = ax.plot(x_range,norm_prior.pdf(x_range),'r--')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"まずサンプル数5の場合"
]
},
{
"cell_type": "code",
"execution_count": 384,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"n = 5\n",
"sample = np.random.choice(data, n, replace=False)\n",
"mu_sample = np.mean(sample)\n",
"#beta_sample = np.var(sample,ddof=1)\n",
"beta_sample = 10**2"
]
},
{
"cell_type": "code",
"execution_count": 385,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"mu_post = (n*beta_prior*mu_sample + beta_sample*mu_prior)/(n*beta_prior+beta_sample)\n",
"beta_post = (beta_sample*beta_prior)/(n*beta_prior+beta_sample)\n",
"norm_post = norm(loc=mu_post, scale=np.sqrt(beta_post))"
]
},
{
"cell_type": "code",
"execution_count": 386,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\ndsCccw1mdqWkZfIC253OubfNbKH3trvDObfUzOaZ2XpJByRd0dm+gV0NAABAAsRmJXwAAIBcEclK\n+Gb2VTN7y8xWmtlvzKzQzAab2TIze8fM/mhmbb8ukjBmdqeZ7TCzlc22dXidZna9ma0zs7fN7Pxo\nqs5cB9f9g9R1LTezh8ysqNl7WXvdzd77v2bWaGZDmm3L6us2s6tS1/ammd3YbHvWXreZHW9mL5jZ\nG2b2spmd3Oy9bLnuMWb2jJmtSv3ZXp3antWfbe1c91Wp7Vn92dbRn3ez97Pys62z6/btsy2TVVx7\n8iNptKQNkgpTr++X9HlJN0n6emrbdZJuDLu2AK71DEknSFrZbFu71ynpGElvyJsWniBpvVIdyqT9\ndHDd50rKS/1+o7xvzWb9dae2j5H0pKSNkoakth2dzdctqVTerQcFqdfDcuS6/yjp/NTvF0h6NvV7\nNv09P0qpp51IGiDpHUkzsv2zrZPrzurPto6uO/U6az/bOvnz9u2zLapnQeZL6m9mBZL6yvtm5AJJ\nv069/2tJn4ioNt845/4qaV+rzR1d50WS7nPO1TvnNsl7rFMi10xr77qdc0855xpTL1+U9w+ulOXX\nnfITSf/WatsCZfd1f1nev4DrU2N2p7Zn+3U3Smrq/BTrg299Z9Pf8+3OueWp32skvS3vn+es/mzr\n4LpLsv2zraPrTr2dtZ9tnVy3b59toQcw59w2Sf8pabO8D6f9zrmnJI103jcn5ZzbLmlE2LWFZEQH\n19l60doKffCXPNt8UdLS1O9Zfd1mdpGkLc65N1u9ldXXLWmapI+a2Ytm9qyZNS0/n+3X/VVJPzKz\nzZJ+IOn61PasvG4zmyCvC/iiOv4Mz7prb3bdL7V6K6s/25pfdy59trX68/btsy30ZWTNrFheUhwv\nab+kB8zsckmtvw2QK98OyJXrlCSZ2bck1Tnn7o26lqCZWV9J35R0XtS1RKBA0mDn3Klm9mFJD0ia\nFHFNYfiypGucc4+Y2SWS7lKW/vmb2QBJD8q73hpru5h2Vn62tb7uZtuz+rOt+XVLalCOfLa18/fc\nt8+2KKYgz5W0wTm31znXIOlhSadJ2mHe8yNlZkdJ2hlBbWHo6Do7Wsw2a5jZFyTNk/SZZpuz+bon\ny7sXYIWZbZR3ba+b2Qilt8Bxkm2R9HtJcs69IqnBzIYq+6/78865RyTJOfegpA+ntmfV3/PUv4Qe\nlPS/zrlHU5uz/rOtg+vO+s+2dq47Jz7bOvjz9u2zLYoAtlnSqWbWx8xM0jmSVstboPULqTGfl/Ro\n+7snjkktHnXW0XUukXSped8InShpiqSWD9dKlhbXbWZz5d0rcJFz7kizcVl73c65t5xzRznnJjnn\nJsp7FuqJzrmd8q7777PxulMekXS2JJnZNHlfutmj7L/uCjP7mCSZ2Tny7gORsu/v+V2SVjvnbmm2\nLRc+29pcd458trW47hz6bGvv77l/n21hf7Mg9W2BG+Td0LZS3s2avSQNkfSUvG8aLJNUHEVtPl/n\nbyVtk3REXvC8QtLgjq5T3v0i61P/35wfdf0+X/c6SeWSXk/9/HcuXHer9zco9U2hbL9ueVOQ/yvp\nTUmvSvpYjlz3aanrfUPSC/L+pZRt1326vCmo5anrfF3S3M4+w7Ph2ju47guy/bOtoz/vVmOy7rOt\nk7/nvfz6bGMhVgAAgJBFtQwFAABAziKAAQAAhIwABgAAEDICGAAAQMgIYAAAACEjgAEAAISMAAYA\nABCy/x/Dac00vQyD4wAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10f1986a0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots(1,1,figsize=(10,7))\n",
"vis_sample = ax.scatter(sample,[0.001]*n)\n",
"vis_true = ax.plot(x_range,norm_true.pdf(x_range),'g--')\n",
"vis_prior = ax.plot(x_range,norm_prior.pdf(x_range),'r--')\n",
"vis_sample = ax.plot(x_range,norm_post.pdf(x_range),'b')\n",
"ylim = ax.set_ylim(0,)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"サンプル数30"
]
},
{
"cell_type": "code",
"execution_count": 387,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"n = 30\n",
"sample = np.random.choice(data, n, replace=False)\n",
"mu_sample = np.mean(sample)\n",
"#beta_sample = np.var(sample,ddof=1)\n",
"beta_sample = 10**2"
]
},
{
"cell_type": "code",
"execution_count": 388,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"mu_post = (n*beta_prior*mu_sample + beta_sample*mu_prior)/(n*beta_prior+beta_sample)\n",
"beta_post = (beta_sample*beta_prior)/(n*beta_prior+beta_sample)\n",
"norm_post = norm(loc=mu_post, scale=np.sqrt(beta_post))"
]
},
{
"cell_type": "code",
"execution_count": 389,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nWf16tL3watu2bVqzZo2OPvpoVWcF0Kbjffr00fr16yVJI0aM0N69ew+XXbZMuvxy6cwzpR//uM0A\n21TPs8+eqHXr+uiRR9pu69KlSzVz5kwNHTpU559/vqqrq7Vt2zYtWrRIknT66ae3at/LL7+sd999\nV0OGDFG/fv00YMCAQ23s06dPs7Zed51UVRXkxfZ+DtnXknTodat+d/Kz6+j9pUuXasGCBRo/frxO\nPPHENn/ebV0rFw2NDaqpr1HfHn3zOg/dV6EBTM65Tr8kTZG0TNJySTe1U+Y/Ja2Q9Iakcfmcmynn\nuqOXX3457ibEgn6nVG2tcwcO5H1aWvq9ec9m96s3fuU+8cQnXL+7+rnzHz7fLd++vM2yjz32uKus\nrHL9+3/YVVZWuccee7zZ8crKY51U7qReThrjpEpXWXlMs7Ju717nvvlN50491bnGxjbr79fvbCdt\ndt///h/bbMcNN3zdST0y1xntysr6uhtu+JqrqOifuW4vV17ep1n7ysr6OmmYkyqdNDrzZ/C6vHxo\npq2nHGrrhg3OVVU5t3Zt2z+H7GuVlFS6kpLKQ6+limZ1dfSz6+hnG/Sz0knHOanS3XDD11r8vE9p\n+2eco4UbF7q+3+vrLn70YnffgvvcqvdXucYWv5POpOXvedi6a78zuSWnHNXWVy7hq0TSu5JGSSrP\nBKwTWpS5RNJ/Z76fIGlerudm1VHsn1Ui3XrrrXE3IRb0O0X27XPuhRec+/rXnauudu655/KuIg39\nvnnGzW7g3QPdlU9c6R5e9LDbundru2W3bt3qKiurnLTYBZufLXaVlVVuyZIlmeMvO2mAk3o2KyMF\n71VWVrmtW7Pq37Onk/p3tT7HObdkyZLMNQa2uE5lpg1Nrwe6nj0HuCVLlriePQdm3qtqs20tz226\n7ne+49zUqc7V1XXUzqbz/6nZtaWtbfyMFre6Rns/2549B2Tqbd7H2bNntyrb7s84B7trd7sn//qk\n+9zvP+eG/XCYO/KeI92P5vwo5/PT8Pe8GLprvwsNYGU5DJKNl7TCObdWkszscUmXZUa1mlwm6ZFM\nippvZv3NbKikY3I4F0ASTZsWTI299po0bpw0eXKwEnz06LhblpM1u9Zo0eZF2lW7S1v3bdW63eu0\n/oP1umTMJfryWV9uVf6Wc2/RnRfcqRLr/LNJa9asUUXF0dq//9TMkVNVXj5KCxYsyBzvLWmopN2S\nDpeRjpLUW+Xlo7RmzZrD02R9mq9HWr16jUpKLtVRGqBeWqYL9KK2aIC2zJyp6o9/XBo0SCor04IF\nCyQNkTS4zescfn20Skv3acGCBTIbnnnv6BbnjMocb35uU1tvvrlan/2sdN550g9/GHwgYM2aNSop\nGZFVT29JIzJ9P3xtaY2ks1r8jE5tdY3q6uo2f7ZB/6xVH6dPn95G2VFt/4xz0K9HP1019ipdNfYq\nOee0Ztca1TXUtVn2qSVPacbKGRrRf4SG9RmmgT0HatXOVdrwwQYd1S/ihXpIpU7XgJnZJyRd7Jy7\nLvP67yWNd859LavMHyTd5Zybk3k9Q9JNCgJYh+dm1eE6a4tvJp/1ppa9+e8a2fPzzY43Vg9S1Qkf\nPvS66ceya+07snXrWtXTUD1YVSecrpY/vqD8+lblD1YPVtXx41od37WueXmnYGq7YfCgNsvvXrdc\ntn69Wk6BN1RXaeBxbdS/drlsw0ZJ0oYDD+uoimsy9Vdp4HGHP0nW1I/d61aoZMOG1u3PlG/Z393r\nV6gkU3+z8oOqNOBDp7Y6vnv9CpVu2NTsmJPp4KCBGvCh1huJfrD+XZVs3JQpl1V/VUflNzc7trH+\nFxoy7BsaMKZ5eeekDzasVOmm5uWD+geo/5iTD5U7VP+GlSrb9F6r8vVV/dVv9Mmtju/ZuFKlm7ZI\ncipxUklj0JHaqn7qe1zr9u/csUE7d2/Rvp4lash6+vPgXoM1vO/wVuW312zTxg82tTo+qNdgNe56\nUCNG3NasvztqtmvjntblB/capCMz9Wf3t6m8U6ManZNzjWp0jRrSe4hG9h/V6u/Dzv3va1vNdpWV\nlKqspFw9SitUUVahyrLe6lHa+T5lHd2ODh6s1+LFb8u54yX1klQjs+UaO/Z4LVnyjpwbrWDw/35J\nPz5UJliJMVpmK3XKKSeprKy8Vd319dKaNY3au3eNhrp9ukyzdZL+pLElT+ljx41R2Y4d0ve+J33x\ni1q6dKnGjv2wpEpJs3Sz/lt/qyfUqLfUqJPVqIFqVI3u0VK91LNMr78+Rx/+8ETV1v5e0id0g76k\nKXpL0h5J8yR9WNJC3avv6QXdJOlNVVaer7Vrl6m6ulqN//ET3fdAuX6x4SKtrDlCI3pskfZt1maN\n0k4Nl/S+pAWSXpF0l0Zpqaq1StIgSY0y7VRVVZXe2LlbW9w5kvpJ+kAlJXN1wQWTVLFpkxq3bNH2\n7TvkNFBSmaSDWme7tdVJ0sRD50iv6vxjRmrv6jXNyko7tVYnaEfJu0GdFVm/6zVrgg+MtHT0KKl6\nSOvjHZTf06+n3t//vvYfrNWBhjrVN9br4Iqf6NTyf1RlWWWr8itKdmnN7rUqsRKVWIlKrUTDd9Tr\nyLqKNsuvq9ivjXs2SrLM/6Sh22s1bH+pepb1bFV+fUWdNu9tfv8Yuq1GQ/Mpv71GQ2vyL7+u9hEd\n1+e6ZuU39KjT5j3Nyw/Zvl9Da0rarD/f8p/86hB9vvk/nZEr+iL8LgawmZJuVJ4BrKudAAAAiFoh\nASyXKciNkkZmvT4qc6xlmRFtlKnI4VxJhXUCAAAgTXLZiHWhpDFmNsrMKiRdLWlaizLTJH1ekszs\nbEm7nHNbcjwXAACgW+l0BMw512BmN0iariCwPeScW2pm1wdvuwecc8+b2aVm9q6kfZKu7ejcovUG\nAAAgBRKzESsAAEB3EcuzIM3sX83sbTN708x+Y2YVZjbQzKab2Ttm9j9m1j+OtoXJzB4ysy1m9mbW\nsXb7aWbfNrMVZrbUzCbH0+rCtdPvH2T69YaZ/c7M+mW9522/s977ppk1mllV1jGv+21m/5zp21tm\ndnfWcW/7bWanmdlcM1tkZgvM7Mys93zp91Fm9pKZ/TXzu/1a5rjX97Y2+v3PmeNe39va+31nve/l\nva2jfod2bytkE7GufEk6UtIqSRWZ109I+gdJ35d0Y+bYTZLujrptRejrRyWNk/Rm1rE2+ylprKRF\nCqaFj1bwGXaLuw8h9vtCSSWZ7+9W8KlZ7/udOX6UpBckrZZUlTl2os/9ljRJwdKDsszrwd2k3/8j\naXLm+0skvZz53qe/58OUedqJpD6S3pF0gu/3tg767fW9rb1+Z157e2/r4Pcd2r0tlhEwSaWSeptZ\nmYINbDYq2KD1V5n3fyXp8pjaFhrn3GxJO1scbq+fUyU97pw76Jxbo+CxTuOjaGfY2uq3c26mc64x\n83Kegv9wJc/7nfFjSf+7xbHL5He/v6zgH+CDmTLbM8d973ejpKaRnwE6/Klvn/6ev+eceyPz/V5J\nSxX89+z1va2dfg/3/d7WXr8zb3t7b+ug36Hd2yIPYM65TZLukbROwc1pt3NupqShLvjkpJxz7ynY\n3tlHQ9rp53BJ2bumbtThv+S++YKk5zPfe91vM5sqab1z7q0Wb3ndb0nHSTrPzOaZ2ctmdkbmuO/9\n/ldJPzSzdZJ+IOnbmeNe9tvMjlYwCjhP7d/Dvet7Vr/nt3jL63tbdr+7072txe87tHtbLvuAhcrM\nBihIiqMUPKfjSTP7rJpvLq42Xvuqu/RTkmRm/yap3jn3X3G3pdjMrFLSLZIuirstMSiTNNA5d7aZ\nnSXpSUnHxtymKHxZ0tedc8+Y2VWSfiFPf/9m1kfSUwr6u9dab6bt5b2tZb+zjnt9b8vut6QGdZN7\nWxt/z0O7t8UxBXmhpFXOufedcw2SnpZ0jqQtFjw/UmY2TNLWGNoWhfb62d5mtt4ws2skXSrpM1mH\nfe73aAVrARab2WoFfXvdzIYotw2O02y9pN9LknNuoaQGMxsk//v9D865ZyTJOfeUpLMyx736e575\nR+gpSY86557NHPb+3tZOv72/t7XR725xb2vn9x3avS2OALZO0tlm1tPMTNIFkpYo2KD1mkyZf5D0\nbNunp45lvpq0189pkq624BOhx0gao+ChamnVrN9mNkXBWoGpzrnsp9t622/n3NvOuWHOuWOdc8dI\n2iDpdOfcVgX9/pSP/c54RtLHJcnMjlPwoZsd8r/fG83sY5JkZhcoWAci+ff3/BeSljjn/iPrWHe4\nt7Xqdze5tzXrdze6t7X19zy8e1vUnyzIfFrgVgUL2t5UsFizXFKVpJkKPmkwXdKAONoWcj8fk7RJ\nUp2C4HmtpIHt9VPBepF3Mz+byXG3P+R+r5C0VtLrma+fdod+t3h/lTKfFPK93wqmIB+V9Jak1yR9\nrJv0+5xMfxdJmqvgHyXf+j1RwRTUG5l+vi5pSkf3cB/63k6/L/H93tbe77tFGe/ubR38PS8P697G\nRqwAAAARi2sbCgAAgG6LAAYAABAxAhgAAEDECGAAAAARI4ABAABEjAAGAAAQMQIYAABAxP4/8bse\niPe6cEkAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x11073c048>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots(1,1,figsize=(10,7))\n",
"vis_sample = ax.scatter(sample,[0.001]*n)\n",
"vis_true = ax.plot(x_range,norm_true.pdf(x_range),'g--')\n",
"vis_prior = ax.plot(x_range,norm_prior.pdf(x_range),'r--')\n",
"vis_sample = ax.plot(x_range,norm_post.pdf(x_range),'b')\n",
"ylim = ax.set_ylim(0,)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"サンプル数100"
]
},
{
"cell_type": "code",
"execution_count": 390,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"n = 100\n",
"sample = np.random.choice(data, n, replace=False)\n",
"mu_sample = np.mean(sample)\n",
"#beta_sample = np.var(sample,ddof=1)\n",
"beta_sample = 10**2"
]
},
{
"cell_type": "code",
"execution_count": 391,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"mu_post = (n*beta_prior*mu_sample + beta_sample*mu_prior)/(n*beta_prior+beta_sample)\n",
"beta_post = (beta_sample*beta_prior)/(n*beta_prior+beta_sample)\n",
"norm_post = norm(loc=mu_post, scale=np.sqrt(beta_post))"
]
},
{
"cell_type": "code",
"execution_count": 392,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n2r3Pzvtqur+mr9Wa/M95Z57fXYX29zsx7t7mj6JgtVjS3pLKJc2RtH+TNuMl/Wfu9mGSpreyL++J\nJk6cmHbMSHzkAAALO0lEQVQXUsG4u7GGhuinA7rTuBsaGvyj9R/5tHen+U3/c5Nf+h+X+vq69Tse\nnzJlqldVDfT+/cd4VdVAnzJlaov7mTDhRy6VutTbpaFeVraLT5kydcfzv1e1j89TiS+W+Q3q73+l\ncq9UL5e+6lJl7id6rllvlypc2sOlKpd2zf3eL/e7j0vlOz1HOtOlt10anGszNPe7Iteub+5342O9\nc/crco/l77+3S4tdOmdHm4MOOiTvuU33U+JSWW78+fupcOmLLbxmpZeX9/UpU6bm/tyqcn8OVT5h\nwuU+ZcpUr6jo79Iwl3rvaNvSe1JevotXVPRv9f350wNTvHLvfl55wh5ecn6ZV/2/Kp/4wsSd2hT6\nHjfV+Dnv7PO7q+7097uYcrml3azU2k8hIetwSU/n3b9a0lVN2twu6dt59xdIGtzCvmL+48imnvrh\nZNzdxDvvuD//vPsdd7j/9Kfup57qPnCg+wcfdGg3aY27oaHB67bV+bq6db503VKfv2K+v/TBS75h\ny4YW24//03jv96t+Pui6QX7svcf6JU9e4jdOv9HX1a1zd/eVK1d6VdVAl+Z6dFKDuV5VNdBXrly5\n037eeustl3rlfj5vW1k5wHv1GpDbttKlAT5aU/1nutr/olJfr96+h+a61D8XpD5/bi/1y217NBdC\nPn/s89fKf84Wl05r1odo371z2wc0eWzXXGBruv8ql953aatLI13aJa/NymZ9jfZd2cJ+BrTymv1d\n6u8VFX1beE4vr6xs/pxevQb4ypUrm7wnzfuS//609P716r2rv7fsvR3v3U5tjvyN6/ujvfTbFX7J\no5f4b1/+rd8z6x5fuGphi5+ff/qnfyr4MxKSbndcK5Kuhqx2T+FgZn8r6SR3/0Hu/ncljXP3y/Pa\nPCnpV+7+Su7+NEk/dfdZTfbl7b1eaGbMkL51/AXap/Q7zR6rPPgQVfXfrdn2T2e+qNLNW5ptrzho\ntKoGNJ+SXvNa1L7pt0yj9s33v+a1l1S6ufGSIJ8/p3xkK+1ff0llef3x3HPKR45qsf+fvf4XlW7e\noqVbJ+vLFefveE75yINbbV9W13y8ZSNHqVe/FtrPenmn/nzePtp/04/Y2lkvq2zz1mbtS0cetKM/\n+c9ZO+sVldW10P7AkTv1v/E5a2e/ulP/l227T3uWf0+lI0a2ON61s15tcf8lIw5ssf262a+qtG5b\n8/YHHKiq/s2Xr9bNnq7yuq073qdcb1VywIHq1UL7DbNelerrtaW8RFvKS1VXUaLaXiUa+sUD1Lu8\n+bmeFq5eqE3bNjXbvsumhzXsK9e22H5zC+2/Omh/9S7v3Wz7258u1Kb8b+9JkruG77a/qsqat5/z\nyRxt2lYrsxKVWalKS8pUVlKq/QZ9VVVlVc0+D3X1dSorKVVZSXmzfUnSxo0b9Oab72n79lE7tpWW\nztWIEUPVt2/fHdtWrVqpxYuXSrpL0f8zI2ZzZCY1NIyWtFHSe5IO3nG7RCPUoM2S3lW0UHDwjueO\n1f+oVK4GlWi7XNtVKZfpTY1Ug+bmWpVLOkiSdKb+XRfpQkn1ko7d8Z7/jZaqTislVUkaqGgBQnpY\n31Iv/ZekOkXVIsdJkv5WD6tOoyT9TNL5kjZIWqoDtEaV6q0y1cm0TlL0+XldY9WgiySdk9tPVB81\nRq+pVKskuaTPP8uva7MatD3351Mv9+g5UfsGSatyfxb5+39ZpaX1OuKIMZKk6dPn6eD63irVFknr\nd7SVpLmlmzXuiFEaMGCA1q5dq+nT56m+/tgd+zf7VLsO6Kfy8ug9XztsqKbPeFP19cdKpXVSRa1K\nKmbrKCtRiaJ/HCvLeqmytCL3xoyVSqPTRbw061Kt63uq1CCN+dhU6pLcZNukXXfpH71GXvt3P3tX\nn2z8WJJp/yUbVZL7PPYu763K0spm+1+y9n2t2LhCkrTf++tluQ9w6+2XaEVtY/t1sob226/MtR/2\n/jpZQ2N/qtpov1IbP75Lo+vOUklu/1XttG/cf5faf+FLuv35YameVqSrp3BIPGR1tqMAAABJ60rI\nKqTwfbmkvfLu75nb1rTNl9tp06WOAgAAdCeFnCdrpqRhZra3mVVIOlvSE03aPCHpPEkys8MlrXX3\nFUXtKQAAQDfS7kyWu283swmSntPnp3BYYGaXRA/7ne7+lJmdYmaLFZ3C4YJ4uw0AAJBtiV67EAAA\noKeI7bI6ZvYPZvaGmc0zswfMrMLMdjWz58zsbTN71sz6x/X6STKze8xshZnNy9vW6ljN7P+Y2SIz\nW2BmJ6bT665rZdy/yY1rjpk9bGb98h4Ldtx5j/3EzBrMbGDetqDHbWaX5cY238x+nbc92HGb2Sgz\ne9XMZpvZDDP7Wt5j3X7cZranmf3ZzN7Mva+X57YHfVxrYdyX5bYHfVxr7f3OezzI41pb4y7aca0r\n539o7UfSHoq+t1yRu/9vir4XfJ2ibx1K0lWSfh3H6yf9I+loSaMlzcvb1uJYJY2QNFvRUu0+ik70\nammPoYjjPkFSSe72rxV96zT4cee27ynpGUnvSxqY23ZAyOOWVK2olKAsd3+3HjLuZyWdmLs9XtIL\nudtBfM4lfVHS6NztvpLelrR/6Me1NsYd9HGttXHn7gd7XGvj/S7acS3OC0SXSupjZmWKTtayXNIZ\nkibnHp8s6Zsxvn5i3P0vkj5rsrm1sZ4uaaq717v7EkmLJI1Lop/F1tK43X2au+fOvKLpiv6CSoGP\nO+d3kv53k21nKOxxX6roH9r6XJvVue2hj7tBUuMszgB9/m3qID7n7v6J5y6N5u4bFZ1gek8Fflxr\nZdxDQj+utTbu3MPBHtfaGHfRjmuxhCx3/0jSv0j6UNHBZ527T1N0FvgVuTafSPpCHK+fEV9oZaxD\nJC3Na7dcn3+YQ/N9SU/lbgc9bjM7XdJSd5/f5KGgxy3pq5KONbPpZvaCmY3NbQ993P8g6Xoz+1DS\nbyT9n9z24MZtZvsomsmbrtaP4SGP+3+aPBT0cS1/3D3puNbk/S7aca2gC0R3lJkNUJT49pa0TtKD\nZnauotMA5+tJVfc9aawys59J2ubu/5p2X+JmZlWS/lHSX6XdlxSUSdrV3Q83s0MlPSjpKyn3KQmX\nSvqRuz9mZmdK+qMCfP/NrK+khxSNdaM1P6F0kMe1puPO2x70cS1/3JK2q4cc11r4nBftuBbXcuEJ\nkt5z9zXuvl3So5KOlLTCzAZLkpl9UdLKmF4/C1oba0Enbu3OzOx7kk6RlH8toZDHPVTR+vxcM3tf\n0dhmmdkXVNjJfLuzpZIekSR3nylpu5kNUvjjPt/dH5Mkd39I0qG57cF8znP/0Dwk6X53fzy3Ofjj\nWivjDv641sK4e8RxrZX3u2jHtbhC1oeSDjezXmZmkr4h6S1FJy39Xq7N+ZIeb/np3ZJJO10srrWx\nPiHpbIu+bbmvpGGSZiTVyRjsNG4zO1nR+v3p7p5/gcFgx+3ub7j7F939K+6+r6Rlkg5x95WKxv3t\nEMed85hyF64zs68q+rLLpwp/3MvN7DhJMrNvKKrNkML6nP9R0lvufmPetp5wXGs27h5yXNtp3D3o\nuNbS57x4x7UYq/YnKioim6eoQLJc0ZVKpymq4H9O0oC4Xj/JH0lTJH0kaYuigHmBpF1bG6ui+o3F\nuT+fE9Puf5HHvUjSB5Jm5X5u7QnjbvL4e8p9Cyf0cStaLrxf0nxJr0k6roeM+8jceGdLelXRPz7B\njFvSUYqWi+bkxjhL0sltHcMDHvf40I9rrb3fTdoEd1xr43NeXqzjGicjBQAAiEGcp3AAAADosQhZ\nAAAAMSBkAQAAxICQBQAAEANCFgAAQAwIWQAAADEgZAEAAMTg/wOdSsITxWE9gQAAAABJRU5ErkJg\ngg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x110ba8860>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots(1,1,figsize=(10,7))\n",
"vis_sample = ax.scatter(sample,[0.001]*n)\n",
"vis_true = ax.plot(x_range,norm_true.pdf(x_range),'g--')\n",
"vis_prior = ax.plot(x_range,norm_prior.pdf(x_range),'r--')\n",
"vis_sample = ax.plot(x_range,norm_post.pdf(x_range),'b')\n",
"ylim = ax.set_ylim(0,)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"サンプル数が多くなるにつれ、事前情報よりも観測データの情報によるようになり、さらに確信度が上がり分散が小さくなっているのがわかる。"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.2"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment