diff options
Diffstat (limited to 'statistic')
-rw-r--r-- | statistic/.ipynb_checkpoints/try_HMC-checkpoint.ipynb | 225 | ||||
-rw-r--r-- | statistic/.ipynb_checkpoints/try_MH-checkpoint.ipynb | 215 | ||||
-rw-r--r-- | statistic/.ipynb_checkpoints/try_random_walk_MH-checkpoint.ipynb | 212 | ||||
-rw-r--r-- | statistic/try_HMC.ipynb | 225 | ||||
-rw-r--r-- | statistic/try_MH.ipynb | 215 | ||||
-rw-r--r-- | statistic/try_random_walk_MH.ipynb | 212 |
6 files changed, 1304 insertions, 0 deletions
diff --git a/statistic/.ipynb_checkpoints/try_HMC-checkpoint.ipynb b/statistic/.ipynb_checkpoints/try_HMC-checkpoint.ipynb new file mode 100644 index 0000000..bb11871 --- /dev/null +++ b/statistic/.ipynb_checkpoints/try_HMC-checkpoint.ipynb @@ -0,0 +1,225 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import seaborn as sns\n", + "import matplotlib.pyplot as plt\n", + "from collections import deque\n", + "from scipy import stats\n", + "import sys" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [], + "source": [ + "alpha = 11\n", + "_lambda = 13\n", + "B = 1\n", + "N = 100000 + B\n", + "epsilon = 0.01\n", + "L = 100" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [], + "source": [ + "def h(x):\n", + " return (_lambda * x) - ((alpha - 1) * np.log(x)) " + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [], + "source": [ + "def h_prime(x):\n", + " return _lambda - ((alpha - 1) / x)" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [], + "source": [ + "def leapfrog(theta, p):\n", + " half_next_p = p - (epsilon / 2) * h_prime(theta)\n", + " next_theta = theta + epsilon * half_next_p\n", + " next_p = half_next_p - (epsilon / 2) * h_prime(next_theta)\n", + " return (next_p, next_theta)" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [], + "source": [ + "def hamiltonian(theta, p):\n", + " return h(theta) + ((p ** 2) / 2)" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [], + "source": [ + "def r(theta1, p1, theta2, p2):\n", + " return (\n", + " np.exp(hamiltonian(theta1, p1) - hamiltonian(theta2, p2))\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "100000 / 100001 100.0 % \n", + "acceptance ratio: 0.999990000099999 \n" + ] + } + ], + "source": [ + "last_theta = 2.5\n", + "data = deque([last_theta])\n", + "accept_count = 1\n", + "\n", + "for i in range(2, N):\n", + " if not i % 1000: # 進捗用\n", + " sys.stdout.write(\"%s / %s %s %% \\r\" % (i, N, np.round(100 * (i / N), decimals=2)))\n", + "\n", + " start_p = p = np.random.normal()\n", + " start_theta = theta = data[len(data) - 1]\n", + " \n", + " for j in range(L):\n", + " p, theta = leapfrog(theta, p)\n", + " \n", + " if np.random.rand() < r(start_theta, start_p, theta, p):\n", + " data.append(theta)\n", + " accept_count = accept_count + 1\n", + " else:\n", + " data.append(start_theta)\n", + "\n", + " accept_count = accept_count + 1\n", + " \n", + "print(\"\\nacceptance ratio: %s \" % str(accept_count / N))" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<matplotlib.axes._subplots.AxesSubplot at 0x7fb932d0d510>" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "pd.Series(data).plot()" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<matplotlib.axes._subplots.AxesSubplot at 0x7fb933aad190>" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig = plt.figure()\n", + "ax = fig.add_subplot(1,1,1)\n", + "sns.distplot(list(data)[B:],bins=100, label='HMC', ax=ax)\n", + "arr = np.arange(0, 2.5, 0.01)\n", + "sns.lineplot(\n", + " data=pd.DataFrame(\n", + " data=stats.gamma.pdf(arr, alpha, scale=1/_lambda),\n", + " index=arr,\n", + " columns=['theoretical']\n", + " ),\n", + " ax=ax,\n", + " palette=['orange']\n", + ")" + ] + } + ], + "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.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/statistic/.ipynb_checkpoints/try_MH-checkpoint.ipynb b/statistic/.ipynb_checkpoints/try_MH-checkpoint.ipynb new file mode 100644 index 0000000..dcc5737 --- /dev/null +++ b/statistic/.ipynb_checkpoints/try_MH-checkpoint.ipynb @@ -0,0 +1,215 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import seaborn as sns\n", + "import matplotlib.pyplot as plt\n", + "from collections import deque\n", + "from scipy import stats\n", + "import sys" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "rand_mu = 1\n", + "rand_sigma = 0.5\n", + "rand_std = np.sqrt(rand_sigma)\n", + "alpha = 11\n", + "_lambda = 13\n", + "B = 1000\n", + "N = 100000 + B" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "def f(x):\n", + " return stats.gamma.pdf(x, alpha, scale=1/_lambda)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "def q(x):\n", + " return stats.norm.pdf(x, loc=rand_mu, scale=rand_std)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "def r(theta, a):\n", + " return (\n", + " (q(theta) * f(a))\n", + " / (q(a) * f(theta))\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "def rand():\n", + " return np.random.normal(rand_mu, rand_std)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "100000 / 101000 99.01 % \n", + "acceptance ratio: 0.4129108910891089 \n" + ] + } + ], + "source": [ + "data = deque([rand()])\n", + "accept_count = 1\n", + "for i in range(2, N):\n", + " if not i % 1000: # 進捗用\n", + " sys.stdout.write(\"%s / %s %s %% \\r\" % (i, N, np.round(100 * (i / N), decimals=2)))\n", + " a = rand()\n", + " prev = data[len(data) - 1]\n", + " if q(a) * f(prev) > q(prev) * f(a):\n", + " if np.random.rand() < r(prev, a):\n", + " data.append(a)\n", + " accept_count = accept_count + 1\n", + " else:\n", + " data.append(prev)\n", + " else:\n", + " data.append(a)\n", + " accept_count = accept_count + 1\n", + "print(\"\\nacceptance ratio: %s \" % str(accept_count / N))" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<matplotlib.axes._subplots.AxesSubplot at 0x7fa011009d90>" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "pd.Series(data).plot()" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<matplotlib.axes._subplots.AxesSubplot at 0x7fa0116ae550>" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig = plt.figure()\n", + "ax = fig.add_subplot(1,1,1)\n", + "sns.distplot(list(data)[B:],bins=100, label='MH', ax=ax)\n", + "arr = np.arange(0, 2.5, 0.01)\n", + "sns.lineplot(\n", + " data=pd.DataFrame(\n", + " data=f(arr),\n", + " index=arr,\n", + " columns=['theoretical']\n", + " ),\n", + " ax=ax,\n", + " palette=['orange']\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "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.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/statistic/.ipynb_checkpoints/try_random_walk_MH-checkpoint.ipynb b/statistic/.ipynb_checkpoints/try_random_walk_MH-checkpoint.ipynb new file mode 100644 index 0000000..073ff6e --- /dev/null +++ b/statistic/.ipynb_checkpoints/try_random_walk_MH-checkpoint.ipynb @@ -0,0 +1,212 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import seaborn as sns\n", + "import matplotlib.pyplot as plt\n", + "from collections import deque\n", + "from scipy import stats\n", + "import sys" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [], + "source": [ + "alpha = 11\n", + "_lambda = 13\n", + "B = 100\n", + "N = 100000 + B" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [], + "source": [ + "def f(x):\n", + " return stats.gamma.pdf(x, alpha, scale=1/_lambda)" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [], + "source": [ + "# 提案分布は不要\n", + "# def q(x):\n", + "# return stats.norm.pdf(x, loc=rand_mu, scale=rand_std)" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": {}, + "outputs": [], + "source": [ + "def r(theta, a):\n", + " return (\n", + " f(a) / f(theta)\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [], + "source": [ + "def rand_walk(cur):\n", + " return cur + np.random.normal()" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "100000 / 100100 99.9 % \n", + "acceptance ratio: 0.29137862137862136 \n" + ] + } + ], + "source": [ + "data = deque([4])\n", + "accept_count = 1\n", + "for i in range(2, N):\n", + " if not i % 1000: # 進捗用\n", + " sys.stdout.write(\"%s / %s %s %% \\r\" % (i, N, np.round(100 * (i / N), decimals=2)))\n", + " prev = data[len(data) - 1]\n", + " a = rand_walk(prev)\n", + " if f(prev) > f(a): # ∵ q(a|θ) = q(θ|a)\n", + " if np.random.rand() < r(prev, a):\n", + " data.append(a)\n", + " accept_count = accept_count + 1\n", + " else:\n", + " data.append(prev)\n", + " else:\n", + " data.append(a)\n", + " accept_count = accept_count + 1\n", + "print(\"\\nacceptance ratio: %s \" % str(accept_count / N))" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<matplotlib.axes._subplots.AxesSubplot at 0x7fb95c1e0e90>" + ] + }, + "execution_count": 62, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "pd.Series(data).plot()" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<matplotlib.axes._subplots.AxesSubplot at 0x7fb95989d410>" + ] + }, + "execution_count": 64, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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/M8UFhayc+dO3n333f4iBcjOzmbbtm384Ac/4O677wbgjjvu4KyzzmL79u2sXr26f87zrVu38l//9V9s2bKFjz/+mIceeojt27cDUFRUxE9+8hN27tzJvn37ePLJJ3n//fe5++67+fWvf/2ljKtWreK9996jubmZhIQEPvjgAwDef/99Vq5cicfj4cUXX2Tbtm2888473HTTTUNO8PXhhx+ybt06NmzYwIwZM4Iuc8UVV/Dss8/y4YcfsmTJki9MWgZw8803s3jx4v4vq2ih26TxyBZ8xkF3+vH/ZRpxUuVZzlLPDmpbu4b8h6dUJEybNo3ly5f3P1+/fj1LliwhPz+f3bt3f2Ha28svvxyApUuXUlpaCsDmzZv57ne/C8All1xCVlYWECjbyy67jJSUFFJTU7n88sv752uZPn06CxYswOFwMG/ePM477zxEhAULFvSvd6CVK1eyefNm3n//fS655BJaW1tpb2+ntLSUWbNmYYzh1ltvZeHChZx//vn90+oOtnfvXtauXcsrr7wy7BTg3/rWt3j22Wd56qmnuOqqL19sf9ddd7Fjx47+L6toodvENOygpGsSORljTujna5IKmOA4Qqqpo7Vr6Ft0KRVuA6e5LSkp4e6772bjxo3s3LmTSy655AvT0/YdqfZNrdsn2A0mhjtQGXjE63A4+p87HI6gt6w7/fTTKSws5L333mPVqlXk5+fz0EMPsXTpUuCL0+ru2LGD8ePHB51Wd+LEiXg8nv53CkOZMGECLpeLt956i/POO2/YZa2khW6TjM7dlPhmkuR2ntDP13oC/xCXJu+ltrXbymhKnbDm5mZSUlLIyMigqqqKN954Y8SfWbVqFU888QQAb7zxBg0NDf3ff+mll2hvb6etrY0XX3yRlStXnlAut9vNlClTWL9+PcuXL2flypXcfffd/esLdVrdzMxMXnvtNW699VY2bdo07DbvvPNOfvvb3+J0ntjv+InQYYt26KpnDMc47F9N8gmuoj5xAT5cLEnZxz79YFT1svt6hEWLFpGfn8+8efOYMWMGK1asGPFnbr/9dq666iqWLFnC2Wef3X8qY8mSJVx77bUsW7YMgOuvv578/Pygp1RCsXLlSjZu3EhycjIrV66koqKiv9CvvvpqvvGNb1BQUMDixYuHnVZ3/PjxvPLKK1x00UU88sgjnHHGGUGXO/PMM08o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\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig = plt.figure()\n", + "ax = fig.add_subplot(1,1,1)\n", + "sns.distplot(data,bins=100, label='random walk MH', ax=ax)\n", + "arr = np.arange(0, 2.5, 0.01)\n", + "sns.lineplot(\n", + " data=pd.DataFrame(\n", + " data=f(arr),\n", + " index=arr,\n", + " columns=['theoretical']\n", + " ),\n", + " ax=ax,\n", + " palette=['orange']\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "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.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/statistic/try_HMC.ipynb b/statistic/try_HMC.ipynb new file mode 100644 index 0000000..bb11871 --- /dev/null +++ b/statistic/try_HMC.ipynb @@ -0,0 +1,225 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import seaborn as sns\n", + "import matplotlib.pyplot as plt\n", + "from collections import deque\n", + "from scipy import stats\n", + "import sys" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [], + "source": [ + "alpha = 11\n", + "_lambda = 13\n", + "B = 1\n", + "N = 100000 + B\n", + "epsilon = 0.01\n", + "L = 100" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [], + "source": [ + "def h(x):\n", + " return (_lambda * x) - ((alpha - 1) * np.log(x)) " + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [], + "source": [ + "def h_prime(x):\n", + " return _lambda - ((alpha - 1) / x)" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [], + "source": [ + "def leapfrog(theta, p):\n", + " half_next_p = p - (epsilon / 2) * h_prime(theta)\n", + " next_theta = theta + epsilon * half_next_p\n", + " next_p = half_next_p - (epsilon / 2) * h_prime(next_theta)\n", + " return (next_p, next_theta)" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [], + "source": [ + "def hamiltonian(theta, p):\n", + " return h(theta) + ((p ** 2) / 2)" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [], + "source": [ + "def r(theta1, p1, theta2, p2):\n", + " return (\n", + " np.exp(hamiltonian(theta1, p1) - hamiltonian(theta2, p2))\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "100000 / 100001 100.0 % \n", + "acceptance ratio: 0.999990000099999 \n" + ] + } + ], + "source": [ + "last_theta = 2.5\n", + "data = deque([last_theta])\n", + "accept_count = 1\n", + "\n", + "for i in range(2, N):\n", + " if not i % 1000: # 進捗用\n", + " sys.stdout.write(\"%s / %s %s %% \\r\" % (i, N, np.round(100 * (i / N), decimals=2)))\n", + "\n", + " start_p = p = np.random.normal()\n", + " start_theta = theta = data[len(data) - 1]\n", + " \n", + " for j in range(L):\n", + " p, theta = leapfrog(theta, p)\n", + " \n", + " if np.random.rand() < r(start_theta, start_p, theta, p):\n", + " data.append(theta)\n", + " accept_count = accept_count + 1\n", + " else:\n", + " data.append(start_theta)\n", + "\n", + " accept_count = accept_count + 1\n", + " \n", + "print(\"\\nacceptance ratio: %s \" % str(accept_count / N))" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<matplotlib.axes._subplots.AxesSubplot at 0x7fb932d0d510>" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "pd.Series(data).plot()" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<matplotlib.axes._subplots.AxesSubplot at 0x7fb933aad190>" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig = plt.figure()\n", + "ax = fig.add_subplot(1,1,1)\n", + "sns.distplot(list(data)[B:],bins=100, label='HMC', ax=ax)\n", + "arr = np.arange(0, 2.5, 0.01)\n", + "sns.lineplot(\n", + " data=pd.DataFrame(\n", + " data=stats.gamma.pdf(arr, alpha, scale=1/_lambda),\n", + " index=arr,\n", + " columns=['theoretical']\n", + " ),\n", + " ax=ax,\n", + " palette=['orange']\n", + ")" + ] + } + ], + "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.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/statistic/try_MH.ipynb b/statistic/try_MH.ipynb new file mode 100644 index 0000000..dcc5737 --- /dev/null +++ b/statistic/try_MH.ipynb @@ -0,0 +1,215 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import seaborn as sns\n", + "import matplotlib.pyplot as plt\n", + "from collections import deque\n", + "from scipy import stats\n", + "import sys" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "rand_mu = 1\n", + "rand_sigma = 0.5\n", + "rand_std = np.sqrt(rand_sigma)\n", + "alpha = 11\n", + "_lambda = 13\n", + "B = 1000\n", + "N = 100000 + B" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "def f(x):\n", + " return stats.gamma.pdf(x, alpha, scale=1/_lambda)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "def q(x):\n", + " return stats.norm.pdf(x, loc=rand_mu, scale=rand_std)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "def r(theta, a):\n", + " return (\n", + " (q(theta) * f(a))\n", + " / (q(a) * f(theta))\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "def rand():\n", + " return np.random.normal(rand_mu, rand_std)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "100000 / 101000 99.01 % \n", + "acceptance ratio: 0.4129108910891089 \n" + ] + } + ], + "source": [ + "data = deque([rand()])\n", + "accept_count = 1\n", + "for i in range(2, N):\n", + " if not i % 1000: # 進捗用\n", + " sys.stdout.write(\"%s / %s %s %% \\r\" % (i, N, np.round(100 * (i / N), decimals=2)))\n", + " a = rand()\n", + " prev = data[len(data) - 1]\n", + " if q(a) * f(prev) > q(prev) * f(a):\n", + " if np.random.rand() < r(prev, a):\n", + " data.append(a)\n", + " accept_count = accept_count + 1\n", + " else:\n", + " data.append(prev)\n", + " else:\n", + " data.append(a)\n", + " accept_count = accept_count + 1\n", + "print(\"\\nacceptance ratio: %s \" % str(accept_count / N))" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<matplotlib.axes._subplots.AxesSubplot at 0x7fa011009d90>" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "pd.Series(data).plot()" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<matplotlib.axes._subplots.AxesSubplot at 0x7fa0116ae550>" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig = plt.figure()\n", + "ax = fig.add_subplot(1,1,1)\n", + "sns.distplot(list(data)[B:],bins=100, label='MH', ax=ax)\n", + "arr = np.arange(0, 2.5, 0.01)\n", + "sns.lineplot(\n", + " data=pd.DataFrame(\n", + " data=f(arr),\n", + " index=arr,\n", + " columns=['theoretical']\n", + " ),\n", + " ax=ax,\n", + " palette=['orange']\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "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.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/statistic/try_random_walk_MH.ipynb b/statistic/try_random_walk_MH.ipynb new file mode 100644 index 0000000..073ff6e --- /dev/null +++ b/statistic/try_random_walk_MH.ipynb @@ -0,0 +1,212 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import seaborn as sns\n", + "import matplotlib.pyplot as plt\n", + "from collections import deque\n", + "from scipy import stats\n", + "import sys" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [], + "source": [ + "alpha = 11\n", + "_lambda = 13\n", + "B = 100\n", + "N = 100000 + B" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [], + "source": [ + "def f(x):\n", + " return stats.gamma.pdf(x, alpha, scale=1/_lambda)" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [], + "source": [ + "# 提案分布は不要\n", + "# def q(x):\n", + "# return stats.norm.pdf(x, loc=rand_mu, scale=rand_std)" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": {}, + "outputs": [], + "source": [ + "def r(theta, a):\n", + " return (\n", + " f(a) / f(theta)\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [], + "source": [ + "def rand_walk(cur):\n", + " return cur + np.random.normal()" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "100000 / 100100 99.9 % \n", + "acceptance ratio: 0.29137862137862136 \n" + ] + } + ], + "source": [ + "data = deque([4])\n", + "accept_count = 1\n", + "for i in range(2, N):\n", + " if not i % 1000: # 進捗用\n", + " sys.stdout.write(\"%s / %s %s %% \\r\" % (i, N, np.round(100 * (i / N), decimals=2)))\n", + " prev = data[len(data) - 1]\n", + " a = rand_walk(prev)\n", + " if f(prev) > f(a): # ∵ q(a|θ) = q(θ|a)\n", + " if np.random.rand() < r(prev, a):\n", + " data.append(a)\n", + " accept_count = accept_count + 1\n", + " else:\n", + " data.append(prev)\n", + " else:\n", + " data.append(a)\n", + " accept_count = accept_count + 1\n", + "print(\"\\nacceptance ratio: %s \" % str(accept_count / N))" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<matplotlib.axes._subplots.AxesSubplot at 0x7fb95c1e0e90>" + ] + }, + "execution_count": 62, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "pd.Series(data).plot()" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<matplotlib.axes._subplots.AxesSubplot at 0x7fb95989d410>" + ] + }, + "execution_count": 64, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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/M8UFhayc+dO3n333f4iBcjOzmbbtm384Ac/4O677wbgjjvu4KyzzmL79u2sXr26f87zrVu38l//9V9s2bKFjz/+mIceeojt27cDUFRUxE9+8hN27tzJvn37ePLJJ3n//fe5++67+fWvf/2ljKtWreK9996jubmZhIQEPvjgAwDef/99Vq5cicfj4cUXX2Tbtm2888473HTTTUNO8PXhhx+ybt06NmzYwIwZM4Iuc8UVV/Dss8/y4YcfsmTJki9MWgZw8803s3jx4v4vq2ih26TxyBZ8xkF3+vH/ZRpxUuVZzlLPDmpbu4b8h6dUJEybNo3ly5f3P1+/fj1LliwhPz+f3bt3f2Ha28svvxyApUuXUlpaCsDmzZv57ne/C8All1xCVlYWECjbyy67jJSUFFJTU7n88sv752uZPn06CxYswOFwMG/ePM477zxEhAULFvSvd6CVK1eyefNm3n//fS655BJaW1tpb2+ntLSUWbNmYYzh1ltvZeHChZx//vn90+oOtnfvXtauXcsrr7wy7BTg3/rWt3j22Wd56qmnuOqqL19sf9ddd7Fjx47+L6toodvENOygpGsSORljTujna5IKmOA4Qqqpo7Vr6Ft0KRVuA6e5LSkp4e6772bjxo3s3LmTSy655AvT0/YdqfZNrdsn2A0mhjtQGXjE63A4+p87HI6gt6w7/fTTKSws5L333mPVqlXk5+fz0EMPsXTpUuCL0+ru2LGD8ePHB51Wd+LEiXg8nv53CkOZMGECLpeLt956i/POO2/YZa2khW6TjM7dlPhmkuR2ntDP13oC/xCXJu+ltrXbymhKnbDm5mZSUlLIyMigqqqKN954Y8SfWbVqFU888QQAb7zxBg0NDf3ff+mll2hvb6etrY0XX3yRlStXnlAut9vNlClTWL9+PcuXL2flypXcfffd/esLdVrdzMxMXnvtNW699VY2bdo07DbvvPNOfvvb3+J0ntjv+InQYYt26KpnDMc47F9N8gmuoj5xAT5cLEnZxz79YFT1svt6hEWLFpGfn8+8efOYMWMGK1asGPFnbr/9dq666iqWLFnC2Wef3X8qY8mSJVx77bUsW7YMgOuvv578/Pygp1RCsXLlSjZu3EhycjIrV66koqKiv9CvvvpqvvGNb1BQUMDixYuHnVZ3/PjxvPLKK1x00UU88sgjnHHGGUGXO/PMM08o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\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig = plt.figure()\n", + "ax = fig.add_subplot(1,1,1)\n", + "sns.distplot(data,bins=100, label='random walk MH', ax=ax)\n", + "arr = np.arange(0, 2.5, 0.01)\n", + "sns.lineplot(\n", + " data=pd.DataFrame(\n", + " data=f(arr),\n", + " index=arr,\n", + " columns=['theoretical']\n", + " ),\n", + " ax=ax,\n", + " palette=['orange']\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "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.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} |