{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# TMVN Sampling\n", "Comparing the TMVN sampler to other samplers..." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import hopsy\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import numpy as np" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[0.6]\n", " [1. ]]\n", "[[0.6]\n", " [1. ]\n", " [4.4]\n", " [4. ]]\n" ] } ], "source": [ "A = np.array([[-1., 0.],[ 0.,-1.],[ 1. , 0.],[ 0. , 1.]\n", " # ,[ 1., -1.],[ 1., -1.],[ 1., -1.],[ 1., -1.]\n", " ])\n", "b = np.array([[ 0., 0., 5., 5.,\n", " # 0., 0., 0., -0.\n", " ]]).T\n", "mean = np.array([[0.6, 1.0]]).T\n", "\n", "print(mean)\n", "print(b-A.dot(mean))\n", "# print(b-A*mean)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Set parameter Username\n", "Academic license - for non-commercial use only - expires 2023-11-30\n" ] } ], "source": [ "model = lambda dim: hopsy.Gaussian(dim)\n", "dims = np.array([2])\n", "# Problem = lambda dim: hopsy.add_box_constraints(hopsy.Problem(np.ones((1, dim)), 5000 * np.ones(1), model(dim)), -10, 100)\n", "Problem = lambda dim: hopsy.add_box_constraints(\n", " hopsy.Problem(np.array([[1, 0], [0, 1]]),\n", " 1000*np.ones(2), \n", " model(dim)), -10, 10)\n", "\n", "proposals = [\n", " # hopsy.GaussianHitAndRunProposal,\n", " hopsy.GaussianProposal,\n", " hopsy.TruncatedGaussianProposal,\n", " hopsy.UniformCoordinateHitAndRunProposal,\n", " hopsy.CSmMALAProposal,\n", " hopsy.BilliardMALAProposal,\n", " # hopsy.DikinWalkProposal,\n", "]\n", "\n", "accrates = np.zeros((len(dims), len(proposals)))\n", "\n", "chains = {}\n", "for i, dim in enumerate(dims):\n", " chains[dim] = {}\n", " for k, Proposal in enumerate(proposals):\n", " problem = Problem(dim)\n", " mc = hopsy.MarkovChain(problem, Proposal, starting_point=[.001]*dim)\n", " rng = hopsy.RandomNumberGenerator(seed=42)\n", "\n", " accrate, _ = hopsy.sample(mc, rng, 250_000)\n", " chains[dim][Proposal] = _\n", "\n", " accrates[i, k] = accrate[0]\n" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[-1. 0.]\n", " [ 0. -1.]\n", " [ 1. 0.]\n", " [ 0. 1.]]\n", "[10. 10. 10. 10.]\n" ] } ], "source": [ "print(Problem(dim).A)\n", "print(Problem(dim).b)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "\n", "0.003717328432895571\n", "0.9993054829707392\n", "\n", "\n", "-0.0007920047053880569\n", "0.9989467812622056\n", "\n", "\n", "0.00407619332020888\n", "0.9984964219897617\n", "\n", "\n", "0.004213253764616939\n", "0.9990148075099534\n", "\n", "\n", "0.0035644886495046573\n", "1.0030206724358808\n" ] }, { "data": { "image/png": "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CiIqKgoAX1/fC9pnZGQwZswY9uzZg2VZFBQUANCtWzeee+45jhw5wsiRI2nVqhWhoaE8+uijPP744wwbNowePXpcNt/IkSMB6NSpEx9++CEAGzZs4IMPPgCgb9++pKamcvr0aQCGDx+Op6cnnp6e9OnTh02bNhEVFcX48eMpKChgxIgRREREONquXr2adu3aUVBQQGhoqON516xZw7hx4/Dy8gKgTp06ZGRkkJ6eTq9evQAYM2YMd955p6PN3Xff7ThvCQkJDBgwAICioiKCgoIueZypqan069ePnJwcHnroIR577DESEhJ4+umnSU9PJysri0GDBl1yH2UdZ8uWLdm/fz+TJ09m6NChDBw48IJ269at4+9//zs5OTmkpaURHBzMbbfddsH5T0xMdLRZv349HTp0wMnJiSeeeILg4GDef/99br/9djw9PQHYuHGj4zW7//77mTlzpqP9XXfdhZOTE61ataJly5bs2rWLDRs2MHnyZADatm1Ls2bN+OWXX8p8LwG8+uqrfPTRRwAcPnyYPXv2ULfuxS9rd3d355577uGee+7h0KFDTJo0iZkzZ7J//34aNmx4yXMrVY8u8RURERGpglasWEGjRo0YOXIkc+bM4eDBg1fUftasWfTp04eEhAQ++eQTx1QQ9957L6tWrcLT05MhQ4awdu1aWrduzdatWwkNDeXpp58u132Q7u7uADg7O1NYWHjZ7X892qdlWfTs2ZPvvvuORo0aMXbsWN566y0AJkyYwOLFi1m0aBHjxo27ouMuy7n7G40xBAcHExsbS2xsLNu2beOrr766YPvg4GC2bt0KQN26dYmNjeWhhx4iKysLKLkU9l//+hfbtm3j2WefdZxbFxcXiouLASguLiY/Px+gzOP09/cnLi6O3r17M2/ePCZMmFAqQ15eHo888ggrVqxg27ZtPPjgg6Wm87jY+e/Rowc///wzW7ZsYeLEiRecg8sp63W6mLLeS9HR0axZs4aNGzcSFxdHhw4dyjUNycmTJ/l//+//cdttt1FUVMQ777xD/fr1y5VZqhYVqCIiIiJV0MCBA1m+fDnr16/Hz8+P4cOH079/fxITE2nTpg1JSUmOe/YyMzMvKBIzMjJo1KgRAIsXL3Ys379/Py1btmTKlCkMHz6c+Ph4jh07hpeXF/fddx8zZsxwFGdXqkePHixduhQoGVE2ICDA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mTO89dZbV5W5vBkiIyOJjCxzWstyef7553nyySevuj3A7bffzu233w6UFKjDhg2jffv2jvVff/01rVu35v333+evf/0rZ2uXq+Lp6UlsbCwAY8aM4fXXX+epp5666v2tW7eOgIAAnnzySZ5//nleffVVxzpjDMYYnJwqzwyhp06dwt/f/7rsuzxHuRloZVlWC8uy3CgZ9GjVuZXGmAxjTIAxprkxpjkll/TeboyJObvdPZZluVuW1QJoBWyq8KMQERG5jk6nnOSTl//Gv8bfzXt//h++ffs/HNm1nTqNmnDLXffRc+goRox9hOFjJtLjN3dw6+Dh3Hb/Q9wxfhK9hv2WsC49qB1Qj9STScRt/JZ1q97jw/+8xneffkBmxjUOsCQC7Ny5k0cffZQ2bdo4pmDZvHkz3bt3Jzw8nM6dO5OZmVmqzaZNm+jWrRsdOnSge/fu7N5d8oHK9u3b6dy5MxEREYSFhbFnzx6ys7MZOnQo4eHhhISEsHz58gsy+Pn54ebm5nj82muv0bFjR0JDQ9m1axcAaWlpjBgxgrCwMLp27Up8fMnl8bNnz+b++++nW7dutGrVivnz5wOQlJREz549HT1V69evZ+HChUybNs3xPPPnz2f69OmlsrzwwguEhoYSHh7u6C2LjY2la9euhIWFcccdd3DqVMnPXu/evZk2bRqRkZG88sorbNmyhV69etGpUycGDRpEUlLSFb0WiYmJtGvXjgcffJDg4GAGDhzo6CEdO3YsK1asYMGCBbz33nvMmjWL3/3udxhjmDFjhqPH89z5jY6OpkePHtx+++20b9+e6OhoevXqxfDhw2nZsiVPPPEES5cupXPnzoSGhrJv3z4A/vrXv/LSSy/RsGFDANzd3XnwwQcveR6u5PyEh4cTHh7O66+/7jju83syZ8+ezfjx4+nduzctW7YsVWyNGDGCTp06ERwczJtvvgnAE088QW5uLhEREfzud78D4L///a/jffiHP/yBoqLLj7G6ePFiJk2axA8//MCqVauYMWMGERERjvOybNkypk6dStOmTdm4caOjXfPmzXn22WcveL+mpqYycOBAgoODmTBhAsaU3Y/WrVs3jh496jhfMTExAKSkpNC8eXNHtpEjRzJ48GBatWrFzJkzy9xXz5492bt3L4mJibRp04YHHniAkJAQDh8+fNH3SM+ePRk6dCht2rRh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hQsXMm3aNMfzzJ8/n+nTp5fK8sILLxAaGkp4eDhPPPEEALGxsXTt2pWwsDDuuOMOTp06BZRM0zFt2jQiIyN55ZVX2LJlC7169aJTp04MGjSIpKSkC47173//O0899RRt27YFwNnZmYcfftiRuXHj//t9ExoaCsDixYsZMWIEAwYMoHnz5vzrX//iH//4Bx06dKBr166kpaU52txzzz2OcxwdHc0tt9xSqkDMyspiw4YN/Oc//+Hdd9+9IF9ZPvzwQ2677Tbuueeei7Zp164dLi4upKSkXHBevvnmGzp06EBoaCjjx4/nzJkzQElv+cyZMwkNDaVz587s3bsXKOn97Nu3L2FhYfTr149Dhw4B8P777xMSEkJ4eDg9e/Z0bNujRw86duxIx44d+eGHHy7I5ubmhp+fHwAbNmygTZs2zJ4927FfqT5UoIqISJWWn1yrzK/UtXs5c/wUvh0jca3d6qLbVXUeQQ0ZPuMpUg4l8uW/X8EYY3ckuUGys7NZtGgRt956Kw8++CDt27cnPj6eDh06kJ+fz913380rr7xCXFwca9aswdPTs1T7tm3bsn79en7++WfmzJnDk08+CcC8efOYOnUqsbGxxMTE0LhxY7744gsaNmxIXFwcCQkJDB48+II8r7zyCt27d3c8DggIYOvWrTz88MO89NJLADz77LN06NCB+Ph4nn/+eR544AHH9vHx8axdu5aNGzcyZ84cjh07xjvvvMOgQYOIjY0lLi6OiIgI7rrrLj755BMKzg4StmjRIsaPH+/Yz+eff87KlSv56aefiIuLY+bMmQA88MADvPDCC8THxxMaGlqq1zE/P5+YmBimTJnC5MmTWbFiBVu2bGH8+PE89dRTFxxrQkICnTp1KvN1mT59On379uU3v/kNL7/8Munp6aXaffjhh2zevJmnnnoKLy8vfv75Z7p168Zbb73l2K5169YkJydz6tQpli1bxj333FPqOVauXMngwYNp3bo1devWZcuWLWVmOd+yZcsYPXo0o0ePZtmyZWVu89NPP+Hk5ERgYGCp8/LHP/6RsWPHsnz5crZt20ZhYSH//ve/He38/PzYtm0bkyZNcnx4MHnyZMaMGUN8fDy/+93vmDJlCgBz5szhyy+/JC4uznE5cb169fj666/ZunUry5cvd2x7vu7du/PKK68AMHToUDZu3Iifnx+33347gwcP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uTFkyBCef/55lixZwsSJE8nJyaFly5YsWrTognxubm6sWLGCKVOmkJGRQWFhIdOmTSM4OJh58+YBOEbpXb58ORs2bKC4uJjGjRuXKvLLa/DgwcybN4927drRpk0bunbtWuZ2QUFBzJ49m27dulG7dm0iIiLK3O7cZbznW7Zs2QWX/I4aNYp///vfPPDAA+Tk5NC4cWPHukceeYQvvvjCcbxQ0jN666238sknn5T72C51vj08POjQoQMFBQUsXLgQuPh745///Cfr1q3DycmJ4OBgfvOb35CZmcltt91GaGgokZGRtG176RHdnZ2def755+ncuXO584t9rMo2F1pkZKQ5f84mERGp3vZ+/MMl12/98ROOHNxOn8ET8PELuGB97C9XflldddOuruflNypDbm4uG77/geYdoxgxY1YFp6redu7cSbt27eyOUW3Mnj0bb29vHnvssXK3GTZsGNOnT6dfv37XMZlUtN69e/PSSy8RGRlpdxS5Qcr6fWlZ1hZjTJlvAvWgiohIpZVy8hCHD2yjVfvuZRanUuLU6aud87IWDRu3Y1/MT+yN+YmbI7tUaC6R6yE9PZ3OnTsTHh6u4lSkGlKBKiIilVJxcRHxm7/As5YfrYNvsTtOtdWgwU3kFGeydtE8moWE4+rhYXckqYFmz55d7m1r167tmOtVqp7o6Gi7I0glpwJVRETslba/zMX7Duwk83QKXTr0wOX04RscquZwcnKi/4RHWD77CTZ++C497x1rdyQREanBNIqviIhUOjm52ezel0CDeo1oUK+R3XGqvcbtQgju1Z8tqz8i9cghu+OIiEgNph5UERGpdLbtKplKIrRtR5uTVA3HC1KueR897xvHvpgfWfOf/+WuZ/56yXkJRURErhf1oIqISKVy/ORRjp88SpubQvDyvNrBf+RKefn60eN3YzmyI4Ed3621O46IiNRQKlBFRKTSKCwqJH7nFnxq+XJTs9Z2x6lxQvsMJKhVG77970LysrLsjiOXkJqaSkREBBERETRo0IBGjRoRERFB7dq1ad++vd3xRESuWrkKVMuyBluWtduyrL2WZT1RxvqJlmVtsywr1rKsDZZltT+7vLllWblnl8daljXvwr2LiIiU+GXfdnLzcghrH4mTk7PdcWocy8mJ/hP+SF5mJhveXWJ3HLmEunXrEhsbS2xsLBMnTmT69OmOx05O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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "for dim in dims:\n", " plt.figure(figsize=(16, 8))\n", " bins = None\n", " for chain, samples in chains[dim].items():\n", " print(str(chain))\n", " \n", " # print(samples[:,:,1].shape)\n", " # print(samples[:,:,1])\n", " # plt.plot(samples[:,:,0].flatten())\n", " # plt.hist(samples[:,:,0].flatten())\n", " # plt.hist(samples[:,:,1].flatten())\n", " # plt.scatter(samples[:,:,0].flatten(), samples[:,:,1].flatten())\n", " # plt.hist(samples[:,:,0].flatten(), density=True, histtype='step')\n", " if bins is None:\n", " _, bins, _ = plt.hist(samples[:,:,0].flatten(), bins=50, density=True, histtype='stepfilled', label=str(chain), alpha=0.25)\n", " else:\n", " plt.hist(samples[:,:,0].flatten(), bins=bins, density=True, histtype='stepfilled', label=str(chain), alpha=0.25)\n", " print(str(chain))\n", " print(np.mean(samples[:,:,0]))\n", " print(np.std(samples[:,:,0], ddof=1))\n", " xs = np.arange(-3, 3, 0.1)\n", " plt.plot(xs, [np.exp(-hopsy.Gaussian(1).compute_negative_log_likelihood(np.array([[x]]))) for x in xs], label='Theory')\n", " # , samples[:,:,1].flatten())\n", " plt.legend()\n", " # plt.plot(samples[:,:,1].flatten())" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.6" } }, "nbformat": 4, "nbformat_minor": 4 }