{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "a747c570",
   "metadata": {},
   "source": [
    "# Point estimates\n",
    "\n",
    "We are trying to reveal some parameter of unknown distribution that we sample from. \n",
    "In this problem we are sampling from distribution $U(0,\\theta)$. \n",
    "To imagine a story about this: we play a game where the amount of time we get to play is random, \n",
    "generated by a device set up to generate a uniform random variable from interval $[0,\\theta]$ for some \n",
    "value of $\\theta$. How to decide the value of $\\theta$ from several observations? \n",
    "\n",
    "A discrete version of this is the \"German tank problem\". \n",
    "https://en.wikipedia.org/wiki/German_tank_problem"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 165,
   "id": "22947b08",
   "metadata": {},
   "outputs": [],
   "source": [
    "from scipy import stats\n",
    "from math import sqrt\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import seaborn as sns"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "684b3c14",
   "metadata": {},
   "source": [
    "The next function generates num numbers from the distribution $U(0,secretmax)$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 181,
   "id": "f884412e",
   "metadata": {},
   "outputs": [],
   "source": [
    "def sampleU(sample_size, secretmax):\n",
    "    \"\"\"\n",
    "        Returns a sample of num independent values from U(0,secretmax).\n",
    "    \"\"\"\n",
    "    return stats.uniform.rvs(loc=0,scale=secretmax,size=sample_size)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "434f722e",
   "metadata": {},
   "source": [
    "We present few variants of estimate. \n",
    "\n",
    "The first one is obtained by the moment method, the second by the maximum likelihood.\n",
    "\n",
    "(Can you find a better one? The best possible solution is not yet discovered.)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 166,
   "id": "85c3a944",
   "metadata": {},
   "outputs": [],
   "source": [
    "def my_estimate(x):\n",
    "    return 2*x.mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 167,
   "id": "b67cdc81",
   "metadata": {},
   "outputs": [],
   "source": [
    "def my_estimate2(x):\n",
    "    return x.max()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 168,
   "id": "db5eff5b",
   "metadata": {},
   "outputs": [],
   "source": [
    "def my_estimate3(x):\n",
    "    n = len(x)\n",
    "    return x.max()*(n+1)/n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5693cc6f",
   "metadata": {},
   "source": [
    "Now: how to test which estimate is better? \n",
    "\n",
    "We compute the bias and the mean squared error.\n",
    "\n",
    "Observe the results and think about what it means."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 210,
   "id": "f300b059",
   "metadata": {},
   "outputs": [],
   "source": [
    "def test_my_method(secret, sample_method, estimate_method, sample_size=5, num=10**4, image=True, eps=0.1):\n",
    "    if secret is None: secret  = 130\n",
    "    L = []\n",
    "    D = []\n",
    "    for _ in range(num):\n",
    "        data = sample_method(sample_size,secret)   # one experiment -- perform sample_size measurements, predict what it implies\n",
    "        D.append(data)\n",
    "        L.append(estimate_method(data))\n",
    "\n",
    "    estimates = np.array(L)\n",
    "    MSE = np.mean((estimates-secret)**2)\n",
    "    bias = estimates.mean()-secret\n",
    "    p = np.mean(abs(estimates-secret)>eps)\n",
    "    \n",
    "    print(f\"Mean: {estimates.mean():.3f}\")\n",
    "    print(f\"Bias: {bias:.3f}\")\n",
    "\n",
    "    print(f\"Mean squared error: {MSE:.3f}\")\n",
    "    print(f\"Var+Bias^2: {estimates.var()+bias**2:.3f}, \")    \n",
    "    print(f\"P(error > {eps}) = {p}\")\n",
    "    \n",
    "    if image:\n",
    "        sns.set_style('whitegrid')\n",
    "        sns.histplot(estimates)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 236,
   "id": "d5364554",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Mean: 129.905\n",
      "Bias: -0.095\n",
      "Mean squared error: 55.302\n",
      "Var+Bias^2: 55.302, \n",
      "P(error > 5) = 0.4987\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "test_my_method(130, sampleU, my_estimate, sample_size=100, num=10000, eps=5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 218,
   "id": "0a60e60c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Mean: 130.721\n",
      "Bias: 0.721\n",
      "Mean squared error: 1168.402\n",
      "Var+Bias^2: 1168.402, \n",
      "P(error > 10) = 0.776\n",
      "\n",
      "Mean: 129.917\n",
      "Bias: -0.083\n",
      "Mean squared error: 109.815\n",
      "Var+Bias^2: 109.815, \n",
      "P(error > 10) = 0.343\n",
      "\n",
      "Mean: 130.169\n",
      "Bias: 0.169\n",
      "Mean squared error: 11.394\n",
      "Var+Bias^2: 11.394, \n",
      "P(error > 10) = 0.006\n"
     ]
    }
   ],
   "source": [
    "test_my_method(130, sampleU, my_estimate, sample_size=5, num=10**3, image=False, eps=10); print()\n",
    "test_my_method(130, sampleU, my_estimate, sample_size=50, num=10**3, image=False, eps=10); print()\n",
    "test_my_method(130, sampleU, my_estimate, sample_size=500, num=10**3, image=False, eps=10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 237,
   "id": "c1cc7e36",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Mean: 128.721\n",
      "Bias: -1.279\n",
      "Mean squared error: 3.296\n",
      "Var+Bias^2: 3.296, \n",
      "P(error > 5) = 0.0204\n"
     ]
    },
    {
     "data": {
      "image/png": "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f/9+7d+/Xx6Pp8Ni5dLS0ogLAwAAiIawws769ev17LPPKi0tTSkpKXI4HNGuCwAAICrCCjvbtm1TaWmpbrvttiiXAwAAEF1hXWcnEAho2rRp0a4FAAAg6sIKO3//93+vXbt2RbsWAACAqAvrNFZLS4teeeUV7d+/X5MmTZLTGfoyTzzxRFSKAwAA51d70iePtyVkzN/a8S4HA1lYYefIkSOaPHmyJOno0aMhz7FYGQCAvuPxtmhF5aGQsSU3um2qJjaFFXZefPHFaNcBAADQK8JaswMAANBfhHVkZ968eec9XbVly5awCwIAAIimsMLOVVddFfK4tbVV77//vmpqarj2DgAAiClhhZ3CwsJOx9etW6fm5uaICgIAAIimqK7Z+eY3v6kdO3ZE8yUBAAAiEtWwU1VVpYSEhGi+JAAAQETCOo314IMPhjy2LEv19fU6ePCgHnjggagUBgAAEA1hhZ2kpKSQxw6HQ1deeaUeeugh5ebmRqUwAACAaAgr7JSWlka7DgAAgF4RVtg56+DBg/rDH/4gh8OhCRMmKDU1NVp1AQAAREVYYcfj8ejhhx/W22+/rYsvvliWZampqUkzZszQ2rVrdckll0S7TgAAgLCE9W2slStXyuv1avfu3Xr77bd14MABVVZWyuv1atWqVdGuEQAAIGxhhZ233npLy5Yt0/jx44NjEyZM0FNPPaXf/OY3USsOAAAgUmGFnfb2dsXHx3cYdzqdam9vj7goAACAaAkr7Fx77bUqKSlRbW1tcKy2tlalpaXKysqKWnEAAACRCmuBcnFxsR544AHNmjVLl156qRwOhz755BO53W6tWbMm2jUCAACELayw86UvfUmvvvqq9u7dqw8++ECWZWnChAnKzs6Odn0AAAAR6dFprP379+uWW26R1+uVJOXk5GjevHmaP3++0tPT9Y1vfEO/+93veqVQAACAcPQo7Lzwwgv69re/rcTExA7PJSUl6c4779TmzZujVhwAAECkehR2jhw5opkzZ3b5fE5Ojt57772IiwIAAIiWHoWdhoYGOZ1dL/NxOp369NNPIy4KAAAgWnoUdkaNGqWjR492+fyRI0eUkpIScVEAAADR0qOw89WvflU/+tGP1NLS0uE5n8+ndevW6frrr49acQAAAJHq0VfP77//fv3yl7/U17/+dd1111268sor5XA49Ic//EEVFRVq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/IUL9fD06dOS1OHba3FxcRzh7oJlWfL7/ZL69jOENTsD2KlTp/Txxx8HHx87dkzvv/++kpOTNXLkSD300EM6dOiQysvL1dbWpvr6eklScnKyEhISlJSUpLy8PJWVlWn48OFKTk5WWVmZ3G63srOz7dqtPhNp/7xer+6++26dPn1aa9askdfrldfrlSRdcskliouLs2W/+kqk/UtJSel0UfJll12myy+/vM/2wy6R9s/hcOiee+7RunXrNHnyZF111VV69dVX9cEHH+hHP/qRXbvVpyLt4Ze//GWNHTtWxcXFevzxxzVs2DD96le/0t69e1VeXm7XbvWZ8/Vv2LBh2rBhg2644QalpKTo888/V0VFhU6cOKGbbrpJkvr0M4S7ng9g//M//6P58+d3GL/99tv14IMPatasWZ1ut2XLluA3DVpaWvT9739flZWV8vl8ysrK0lNPPaUvfelLvVp7LIi0f11tL51ZjzJmzJio1htrovH+O9ekSZP07LPPDogFy9Hq309+8hO99NJLamxs1OTJk/Uv//Ivuuaaa3qt7lgSjR5+9NFH+sEPfqDf//73am5u1hVXXKG7775bt912W2+WHhPO17/ly5frkUce0TvvvKPPPvtMw4YNU3p6uu6//35NmTIlOLevPkMIOwAAwGis2QEAAEYj7AAAAKMRdgAAgNEIOwAAwGiEHQAAYDTCDgAAMBphBwAAGI2wAwAAjEbYAQAARiPsAAAAoxF2AACA0Qg7AADAaP8PLyQVfIRXBIcAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "test_my_method(130, sampleU, my_estimate2, sample_size=100, num=10000, eps=5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 238,
   "id": "53f3121b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Mean: 130.011\n",
      "Bias: 0.011\n",
      "Mean squared error: 1.673\n",
      "Var+Bias^2: 1.673, \n",
      "P(error > 5) = 0.0076\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "test_my_method(130, sampleU, my_estimate3, sample_size=100, num=10000, eps=5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "7c97bd87",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 140,
   "id": "cc7a56e8",
   "metadata": {},
   "outputs": [],
   "source": [
    "def sampleGeom(num, secretp):\n",
    "    \"\"\"\n",
    "        Returns a sample of num independent values from Geom(secretp).\n",
    "    \"\"\"\n",
    "    return stats.geom.rvs(secretp,size=num)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 208,
   "id": "f2d61b2f",
   "metadata": {},
   "outputs": [],
   "source": [
    "def sampleExp(num, secretp):\n",
    "    \"\"\"\n",
    "        Returns a sample of num independent values from Geom(secretp).\n",
    "    \"\"\"\n",
    "    return stats.expon.rvs(secretp,size=num)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "0c99e385",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 194,
   "id": "55006dc6",
   "metadata": {},
   "outputs": [],
   "source": [
    "def my_estimate4(x):\n",
    "    return 1/x.mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 206,
   "id": "6d2dc658",
   "metadata": {},
   "outputs": [],
   "source": [
    "def my_estimate5(x):\n",
    "    return x.mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6b8ea1fb",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 222,
   "id": "0e22b19c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Mean: 0.170\n",
      "Bias: 0.003\n",
      "Mean squared error: 0.001\n",
      "Var+Bias^2: 0.001, \n",
      "P(error > 0.05) = 0.0261\n"
     ]
    },
    {
     "data": {
      "image/png": "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gar3z//8z7V+/Xqlp6erublZ27Zt0w9+8AP913/9l8aOHWvp9/f999/XiRMnPK5Nitb3d8uWLbp06ZL+5m/+xtVm5f3XW71XstL+661eK++/V3t/rbL/3nrrrTp37pycTqfuv/9+ffe733X1hXL/tWw46mGz2dxeG4bh0TYQ6xyI7QZrboHavHmz9u7dq23btik+Pt7VPnPmTLdx2dnZ+uY3v6ndu3dr0aJFQdm2L8GuNzs7W9nZ2a7XkyZN0t13363t27fr0UcfHbDt9tZAbresrExpaWmaOHGiW3s0vr8VFRV69tln9dxzz3n8oLTi/uuv3h5W2n991WvV/bc3769V9t9XXnlFra2tOnLkiJ566imNGTNGc+bM6dM6g/H+WjYcpaSkyG63q76+3q29oaFBDocj4PU6HA6PdZ47d861zoHa7tUM9HZffvlllZaWauvWrbrpppv8jk1ISFBaWpo+/fTTfm/Xl1D9Ow8ZMkSZmZmuWqz6/l66dEl79+7VT37yk6uOjfT394033tDPfvYz/fznP3c7QiJZc//1V28PK+2/vam3hxX2397Ua6X997rrrpMkpaenq76+XiUlJa5wFMr917LXHMXFxWnChAnav3+/W/uBAweUk5MT8Hqzs7M91vnOO++41jlQ272agdzuSy+9pOeee04vvfSSMjMzrzq+o6NDH3/8sVJTU/u1XX9C9e9sGIY++OADVy1WfH8l6b//+7/V0dGhu+6666pjI/n9raio0PLly/XUU0/pG9/4hke/1fbfq9UrWWv/7U29ZtG+//a2Xqvsv1cyDEOdnZ2u1yHdf/t0+XaU6bml7z//8z+Njz76yFi3bp2RnZ1tnDp1yjAMw3jyySeNRx55xG2ZY8eOGceOHTPuvvtu48EHHzSOHTtm1NTUuPp///vfGzfffLNRWlpqfPTRR0ZpaanPWwl9bTea6n3xxReNCRMmGL/+9a/dbgVtbm52jdmwYYPxv//7v8bJkyeNw4cPG0uWLDFycnKist6SkhLjd7/7nXHy5Enj2LFjxvLly43x48cbR44c6fV2o6neHj/4wQ+MpUuXet1utLy/e/bsMcaPH29s377d7bN68eJF1xgr7b+9qddK+29v6rXS/tubentYYf/dvn278dvf/tb45JNPjE8++cQoKyszJk2aZDz99NOuMaHcfy17Wk2SZs+erfPnz+u5555TbW2t0tLS9OKLL2r06NGSpLq6On3xxRduy8ydO9f196NHj6qiokKjR4/WW2+9JenyOeynn35a//Zv/6ZnnnlG1113nTZt2qSsrKxebzea6t25c6c6Ozs9Dtfef//9KiwslCSdPXtWDz74oC5cuKCUlBRlZ2dr165dUVnvxYsXVVRUpLq6OiUlJWn8+PHavn2723l8K72/kvTJJ5/o97//vbZs2eJ1u9Hy/r722mvq6urS6tWrtXr1alf73XffrQ0bNkiy1v7bm3qttP/2pl4r7b+9qVeyzv7b3d2tp59+WqdOnZLdbtf111+vhx56SPn5+a4xodx/bYZhGP38NwAAALAMy15zBAAAEAjCEQAAgAnhCAAAwIRwBAAAYEI4AgAAMCEcAQAAmBCOAAAATAhHAAAAJoQjAAAAE8IRAACACeEIAADAhHAEAABg8v8BL0kvUqdxg6MAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "test_my_method(1/6, sampleGeom, my_estimate4, sample_size=50, num=10000, eps=0.05)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 223,
   "id": "0b25d841",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Mean: 0.169\n",
      "Bias: 0.003\n",
      "Mean squared error: 0.000\n",
      "Var+Bias^2: 0.000, \n",
      "P(error > 0.05) = 0.0292\n"
     ]
    },
    {
     "data": {
      "image/png": "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7qkBAIB+rt9/Gw4AACCU+v01SwAAAKFEWAIAADAgLAEAABgQlgAAAAwGXFh66aWXdNtttykjI0N333233n//fb9jKysr9dBDD+l73/uerrvuOq1Zs8bnuN/97neaPn260tPTNX36dO3fv79X2w2mYNe7e/du/f3f/70mTJigCRMm6Kc//akOHz7sNWbTpk1KS0vz+jN58uSg1+ZLsOv9r//6ry61pKWlqbm5ucfbDaZg1ztnzhyf9V767MX+8v6++eabmjdvniZOnKjx48frRz/6kd5+++0u4+yy/wZSr53230DqjfT9t7vbDqRmO+3D77//vvLz83XTTTcpMzNT3//+9/Uf//EfXcb1yT5sDSD79u2zbrjhBmv37t3WRx99ZK1evdrKzs62Pv/8c5/jT506Za1atcp65ZVXrJkzZ1qrV6/uMuZPf/qTdf3111vPPvus9dFHH1nPPvusNW7cOOvQoUM93m6whKLeBx980Nq+fbt19OhR66OPPrKWLl1q3XjjjdaXX37pGfPEE09Yd9xxh1VZWen5U1NTE7I6O4Si3uLiYmv8+PFetVRWVvZqu8ESinq//vprrzqPHz9uXX/99VZxcbFnTH95f1evXm0999xz1gcffGB98skn1oYNG6wbbrjBOnLkiGeMnfbfQOq10/4bSL2RvP/2ZNuB1GynffjIkSPW3r17rePHj1unTp2yXn31VSsrK8t6+eWXPWP6ah8eUGHphz/8oVVYWOjV9v3vf9/6zW9+c9ll/+Ef/sHnPy7/8i//Yv3sZz/zavvHf/xH64EHHgjKdnsjFPV21tbWZuXk5FivvPKKp+2JJ56w7rzzzm7Pt7dCUW9xcbF14403hmy7vdEX7+/WrVutnJwcq6GhwdPWH9/fDtOnT7c2bdrkeW3X/bdD53o7s8v+26FzvZG8/wZr25d7j+22D993333W4sWLPa/7ah8eMKfhWlpadOTIEeXl5Xm1T548WWVlZT1e76FDh7qsc8qUKZ51hmq7l9NX271w4YLa2tqUmJjo1X7y5Enl5eXptttu0wMPPKBTp04FbZu+hLLexsZG3Xrrrbr55pu1YMECHT16tE+2a9JX2y0uLtYdd9yhwYMHe7X3x/e3vb1dDQ0N+sY3vuFps/P+66vezuy0//qrNxL332BtO5D32E778NGjR1VWVqa//du/9bT11T5sizt4B+Lrr7+W2+3W8OHDvdqTkpJUVVXV4/VWV1d3Wefw4cM96wzVdi+nr7a7YcMGjRgxQrm5uZ62zMxMuVwujR07VjU1NXrmmWeUn5+vkpISDR06NGjbvlSo6r3mmmu0du1apaWlqb6+Xtu2bdOPf/xjvfbaaxo7dqyt39/Dhw/r+PHjXa5t6q/v75YtW3ThwgX94Ac/8LTZef/1VW9ndtp/fdUbqfuv1DfvsV324Ztvvllnz56V2+3W/fffr3vuucfT11f78IAJSx0cDofXa8uyurSFYp2h2G6w5tZTmzdv1r59+7Rt2zbFxsZ62qdOneo1Ljs7W9/97nf16quvat68eUHZtj/Brjc7O1vZ2dme1+PHj9esWbO0fft2/epXvwrZdgMVyu3u2bNHqampyszM9Grvj+9vSUmJnnzyST399NNdfmjacf811dvBTvuvv3ojff/tzbYDeY/tsg+/9NJLamxs1AcffKANGzZozJgxmjFjRrfW2dv3eMCEpaFDh8rpdKq6utqrvaamRklJST1eb1JSUpd1nj171rPOUG33ckK93RdeeEFFRUXaunWrrrvuOuPYwYMHKzU1VZ9++mmvt+tPX/09Dxo0SBkZGZ5a7Pr+XrhwQfv27dPPf/7zy46N9Pf39ddf1yOPPKJ///d/9zqCItlz/zXV28FO+28g9XaIlP23t9sOpGY77cOjR4+WJKWlpam6ulqbNm3yhKW+2ocHzDVLMTExuuGGG1RaWurVfuDAAeXk5PR4vdnZ2V3W+c4773jWGartXk4ot/v888/r6aef1vPPP6+MjIzLjm9padHHH3+s5OTkXm3XpK/+ni3L0ocffuipxY7vryT993//t1paWnTnnXdedmwkv78lJSVaunSpNmzYoFtuuaVLv93238vVK9lr/w2k3ktFyv7bm20HWrNd9uHOLMtSa2ur53Wf7cMBXwpuAx1fH/ztb39rffTRR9aaNWus7Oxs6/Tp05ZlWdZvfvMba8mSJV7LHD161Dp69Kg1a9Ys68EHH7SOHj1qnThxwtP/xz/+0br++uutoqIi66OPPrKKior8fm3R33b7U73PPfecdcMNN1hvvPGG19dO6+vrPWPWrVtn/c///I/12WefWYcOHbIWLFhg5eTk9Mt6N23aZP3hD3+wPvvsM+vo0aPW0qVLrXHjxlkffPBBwNvtT/V2+PGPf2wtWrTI53b7y/u7d+9ea9y4cdb27du9Pqvnz5/3jLHT/htIvXbafwOpN5L331DV3MEO+/D27dut3//+99Ynn3xiffLJJ9aePXus8ePHW48//rhnTF/twwPmNJwkTZ8+XV9//bWefvppVVZWKjU1Vc8995xGjRolSaqqqtIXX3zhtcxdd93l+f8jR46opKREo0aN0ltvvSXp4jnwxx9/XP/2b/+mJ554QqNHj9bGjRuVlZUV8Hb7U707d+5Ua2trl0O7999/vwoKCiRJX375pR588EGdO3dOQ4cOVXZ2tnbv3t0v6z1//rwKCwtVVVWlhIQEjRs3Ttu3b/e6BsBO768kffLJJ/rjH/+oLVu2+Nxuf3l/d+3apba2Nq1cuVIrV670tM+aNUvr1q2TZK/9N5B67bT/BlJvJO+/oapZss8+3N7erscff1ynT5+W0+nUX//1X+uhhx5Sfn6+Z0xf7cMOy7KsIPwdAAAA2NKAuWYJAACgJwhLAAAABoQlAAAAA8ISAACAAWEJAADAgLAEAABgQFgCAAAwICwBAAAYEJYAAAAMCEsAAAAGhCUAAAADwhIAAIDB/wEqwl8gf8+AkQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "test_my_method(1/6, sampleGeom, my_estimate4, sample_size=50, num=10000, eps=0.05)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "bf2e5f54",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 224,
   "id": "1c13a719",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Mean: 3.992\n",
      "Bias: 0.992\n",
      "Mean squared error: 1.182\n",
      "Var+Bias^2: 1.182, \n",
      "P(error > 0.05) = 1.0\n"
     ]
    },
    {
     "data": {
      "image/png": "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8vJUXFys1157TZ988onKysoiPTUAABDFRkUQuueee3Tx4kX95Cc/0fnz55Wdna3nn39eN954Y6SnBgAAoljM3zUGAAAQrJi/RggAACBYBCEAAGAsghAAADAWQQgAABiLIOTHtm3bdN9992n69OmaPn26HnroIf3qV78adJuDBw9qwYIFys/P1913363t27eHabbDF2i9v/nNb5STk+P156OPPgrjrEOjtrZWOTk5qqysHHRcLK/vZw2l3lhe340bN3rNe/bs2YNuE6trG2itsbyuA86dO6cnnnhCM2fOVGFhob72ta+psbFx0G1idX0DrTWW1/euu+7yOfeKigq/24RqXUfF7fMjYeLEiXriiSd08803S5J2796tRx55RG+88YaysrK8xp86dUrf+ta39PWvf13r16/Xb3/7W1VUVGjs2LH6yle+Eu7pByzQegfs27dPqamp7tdjx44d8bmG0pEjR/Taa68pJydn0HGxvr4DhlrvgFhd36ysLNXV1blfD/ZAylhf20BqHRCr69rW1qa/+7u/08yZM7V582aNHTtWp06d0nXXXed3m1hd32BqHRCL67tjxw73A1QlqampSUuWLNHf/M3f+BwfynUlCPlx1113ebx+7LHHtH37dh0+fNhnMHj11Vd1ww036Omnn5Yk3XbbbWpoaNCWLVui+odtQKD1Dhg3btyQfjCjkdPp1JNPPql169Zp06ZNg46N9fWVAqt3QKyur91uV0ZGxpDGxvraBlLrgFhd182bN2vixImqqqpyt2VmZg66TayubzC1DojF9b06rD3//PO6+eab9Vd/9Vc+x4dyXTk1NgQul0t79+5VR0eH38d2HD582OuQ9Jw5c9TY2Kje3t5wTDNkhlLvgPvvv1+lpaX65je/qf/6r/8K0wxD45lnntHcuXNVUlLyuWNHw/oGUu+AWF3fkydPqrS0VHfddZcee+wxnTp1yu/YWF/bQGodEKvr+u677yovL0/f/va3NWvWLN1///16/fXXB90mVtc3mFoHxOr6Dujp6dGbb76phQsX+n0QeijXlSNCgzh27JjKysrU3d2ta6+9Vs8995ymTJnic2xLS4vXQ17HjRunvr4+Xbx4UePHjw/HlIclkHozMjK0du1aTZs2TT09PfrZz36mf/iHf9BLL72kGTNmhHnmgdu7d69+97vfaceOHUMaH+vrG2i9sby+BQUFqqmp0eTJk9Xa2qpNmzaprKxMe/bs0ZgxY7zGx/LaBlprLK+rdOV0yPbt27VkyRKVl5fryJEjWrdunRITE3X//ff73CZW1zeYWmN9fQf88pe/1OXLl/XAAw/4HRPKdSUIDeKWW27R7t27denSJb399tv67ne/q5dfftlvOLg6uQ58abe/RBttAqn31ltv1a233up+XVxcrLNnz+rFF1+M+h+4Tz75RJWVldqyZYuSkpKGvF2srm8w9cby+s6dO9fjdVFRkb785S9r9+7dWrJkic9tYnVtA601ltdVurIueXl5evzxxyVJubm5+sMf/qDt27f7DQdSbK5vMLXG+voO2Llzp+644w5NmDBh0HGhWldOjQ0iMTFRkyZNUn5+vr7zne9o6tSp2rp1q8+xDodDzc3NHm0XLlxQfHy8rr/++jDMdvgCqdeXwsJCnTx5cgRnGBpHjx5Va2urFixYoNzcXOXm5urgwYN66aWXlJub63HB3oBYXt9g6vUlVtb3atdee62ys7N14sQJn/2xvLZX+7xafYmldc3IyNBtt93m0XbrrbfqzJkzfreJ1fUNplZfYml9JenPf/6zDhw4oAcffHDQcaFcV44IBcCyLPX09PjsKyoq0nvvvefR9v777ysvL08JCQnhmF7IDVavLx9++GHAF21Gwu2336633nrLo+173/uebr31Vi1dutTnXTexvL7B1OtLrKzv1Xp6evTRRx/pi1/8os/+WF7bq31erb7E0rpOnz5df/rTnzzaTpw4MegDtmN1fYOp1ZdYWl9J2rVrl8aNG6c777xz0HEhXVcLPv3Lv/yLdejQIevUqVPW73//e+vZZ5+1pk6dar3//vuWZVnWj370I+vJJ590j//444+twsJC6wc/+IH1hz/8wfr3f/93a9q0ada+ffsiVUJAAq23rq7Oeuedd6w//elP1vHjx60f/ehHVnZ2tvWLX/wiUiUMy9///d9b69atc78ebet7tc+rN5bXt7q62vrNb35jffzxx9bhw4etZcuWWcXFxdbp06ctyxpdaxtorbG8rpZlWf/zP/9j5ebmWps2bbJOnDhhvfnmm1ZhYaH1s5/9zD1mtKxvMLXG+vq6XC7rzjvvtNavX+/VN5LryhEhP1paWvTUU0/p/PnzSktLU05Ojl544QX3VerNzc365JNP3ONvuukmPf/886qqqtIrr7yi8ePH6+mnn47q2zM/K9B6e3t7VVNTo3Pnzik5OVlTpkzR888/73XNQqwabev7eUbT+p49e1aPP/64Pv30U40ZM0ZFRUV6/fXX3b9Jj6a1DbTWWF5X6crF4T/+8Y/17LPP6rnnnlNmZqZWrlyp+fPnu8eMlvUNptZYX98DBw7ozJkzWrhwoVffSK6rzbL+9+oiAAAAw3CxNAAAMBZBCAAAGIsgBAAAjEUQAgAAxiIIAQAAYxGEAACAsQhCAADAWAQhAABgLIIQAAAwFkEIAAAYiyAEAACMRRACAADG+v/i4g09zPEnqQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "test_my_method(3, sampleExp, my_estimate5, sample_size=5, num=10000, eps=0.05)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f6608835",
   "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": 5
}
