Skip to content

Instantly share code, notes, and snippets.

@coppeliaMLA
Created February 15, 2025 16:57
Show Gist options
  • Select an option

  • Save coppeliaMLA/c0a5346161d566b1838db5986c554132 to your computer and use it in GitHub Desktop.

Select an option

Save coppeliaMLA/c0a5346161d566b1838db5986c554132 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"\n",
"def simulate_ratio_distribution(baseline, lift, sigma_x, sigma_y, n_samples=10000):\n",
" \"\"\"\n",
" Simulates ratio distribution of two normal distributions and plots histogram.\n",
"\n",
" Args:\n",
" baseline (float): Mean of the baseline distribution\n",
" lift (float): Additional lift added to baseline for second distribution\n",
" sigma (float): Standard deviation for both distributions\n",
" n_samples (int): Number of samples to simulate (default 10000)\n",
" \"\"\"\n",
"\n",
"\n",
" # Generate random samples\n",
" X = np.random.normal(baseline, sigma_x, n_samples)\n",
" Y = np.random.normal(baseline + lift, sigma_y, n_samples)\n",
"\n",
" delta_X = sigma_x / baseline\n",
" delta_Y = sigma_y / (baseline + lift)\n",
"\n",
" # Print the coefficient of variation\n",
" print(f\"Coefficient of variation for X: {delta_X}\")\n",
" print(f\"Coefficient of variation for Y: {delta_Y}\")\n",
"\n",
" if delta_Y <= 0.1:\n",
" print(\"Z is approximately normal by Kuethe's criterion\")\n",
" else:\n",
" print(\"Z is not approximately normal by Kuethe's criterion\")\n",
"\n",
" if delta_X > 0.443 and delta_Y < 0.25:\n",
" print(\"Z is approximately normal by Marsaglia’s criterion\")\n",
" else:\n",
" print(\"Z is not approximately normal by Marsaglia’s criterion\")\n",
"\n",
" if delta_X > 0.19 and delta_Y < 0.09:\n",
" print(\"Z is approximately normal by Hayya's criterion\")\n",
" else:\n",
" print(\"Z is not approximately normal by Hayya's criterion\")\n",
"\n",
" # Required n\n",
"\n",
" n = baseline * (1-baseline) / (sigma_x**2)\n",
" print(f\"Required N for a standard deviation of {sigma_x}: {n}\")\n",
"\n",
" # Calculate ratios\n",
" Z = X / Y - 1\n",
"\n",
" return Z\n",
"\n",
"def plot_ratio_distribution(simulated_ratio_distribution, x_lims=None): \n",
"\n",
" # Create histogram using seaborn\n",
" plt.figure(figsize=(10, 6))\n",
" sns.histplot(data=simulated_ratio_distribution, edgecolor=\"black\")\n",
" plt.title(\"Histogram of Ratio Distribution (X/Y-1)\")\n",
" plt.xlabel(\"Ratio Value\") \n",
" plt.ylabel(\"Frequency\")\n",
" if x_lims is not None:\n",
" plt.xlim(x_lims)\n",
" plt.show()\n"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Coefficient of variation for X: 0.075\n",
"Coefficient of variation for Y: 0.06\n",
"Z is approximately normal by Kuethe's criterion\n",
"Z is not approximately normal by Marsaglia’s criterion\n",
"Z is not approximately normal by Hayya's criterion\n",
"Required N for a standard deviation of 0.0015: 8711.111111111111\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA1IAAAIjCAYAAAAJLyrXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABTTUlEQVR4nO3dd3QU9f7/8dembUJCEhJTRCCAAoKgKCrkilJEQtELwrUgInDxgkoREL3iRWle8YLSJNarwY7IF65XelHxJwRFRKUoCiIBIUVKQgK72WTn94ff7JclbWdJsinPxzl7dGfeM/OezEb3lZn5jMUwDEMAAAAAAI/5+boBAAAAAKhpCFIAAAAAYBJBCgAAAABMIkgBAAAAgEkEKQAAAAAwiSAFAAAAACYRpAAAAADAJIIUAAAAAJhEkAIAAAAAkwhSAGqNpk2batiwYb5uo9abM2eOmjdvLn9/f7Vv397X7bh07dpVXbt29WkPVfUZ/PXXX2WxWLR48WLXtGHDhiksLKzSt13EYrFo2rRpVba98z300EO65ZZbfLZ9bz3++OPq2LGjr9sAUAEIUgCqpcWLF8tisejrr78ucX7Xrl3Vtm3bC97O6tWrffplsKZZv369HnvsMd1www1KSUnRM888U2rtsGHDZLFYXC+r1aqWLVvqqaeeks1m82r7e/fu1bRp0/Trr796uQee69q1q6t3Pz8/hYeHq1WrVhoyZIg2bNhQYdupzp/B6trbwYMH9e9//1tPPPGEa9q///1vWSwWvfnmm8XqU1NT5efnp0mTJhWb9/HHH8vPz0/PPvusLBaL1q1bV+I2+/Tpo4iICB09erTE+S+99JLuuOMONWnSRBaLpdRAPX78eH333Xf673//68GeAqjWDACohlJSUgxJxvbt20uc36VLF+OKK65wm2az2Yz8/HxT2xk9erTBfwo99/e//93w8/Mz7HZ7ubVDhw41rFar8fbbbxtvv/22sWjRIuOWW24xJBn33HOPV9v/8MMPDUnGp59+Wmye3W73qC9PdenSxWjUqJGr/5dfftmYNGmS0bx5c0OSceeddxb7vFXVZ9DpdBpnz541CgoKXNOGDh1qhIaGmlrPhfR29uxZw+FwVOj2PPXwww8bLVu2dJvmdDqNzp07GxdddJHx+++/u6bn5+cbbdu2NZo0aWLk5uYWW9eoUaOMa6+91sjPzzfatWtnNG/e3Dhz5oxbzdKlSw1JRnJycqk9JSQkGFFRUUavXr2MgIAAY+jQoaXW3nnnncaNN97o4d4CqK44IwWg1rBarQoMDPR1G6bk5eX5ugVTMjMzFRISoqCgII/qAwICdO+99+ree+/V6NGjtW7dOnXq1Envv/++MjIyKrS3oKAgj/vyVEREhKv/UaNGac6cOfrpp5/00EMPaenSpZoyZYpbfWV/BgsKCpSfny+LxaLg4GD5+/tX2rbKExwcrICAgCrfrsPh0Lvvvqs777zTbbrFYtErr7yi7OxstzNPzz//vHbv3q1FixYpNDS02PpWr16tvn37KjAwUK+++qp+/fVXzZw50zX/9OnTGj9+vDp16qQHHnig1L42b96s33//XWvWrJHVai1zH+6880598cUX+uWXXzzdbQDVEEEKQK1x/v0pDodD06dPV4sWLRQcHKzo6Gh17tzZdVnWsGHDlJycLElul6AVycvL0yOPPKLGjRvLarWqVatWeu6552QYhtt2z549q3Hjxumiiy5S/fr19ec//1m//fZbsXtIpk2bJovFor179+qee+5RgwYN1LlzZ0nS999/r2HDhql58+YKDg5WfHy8/vrXv+r48eNu2ypax08//aR7771XERERiomJ0ZNPPinDMHT48GH169dP4eHhio+P1/PPP+/Rz66goEAzZ87UpZdeKqvVqqZNm+qJJ56Q3W531VgsFqWkpCgvL8/1szr3Hh1PWCwWde7cWYZhuH2JPHTokB566CG1atVKISEhio6O1h133OF2Cd/ixYt1xx13SJK6devm6uGzzz6TVPI9UpmZmRoxYoTi4uIUHBysq666qsRLv8zw9/fXwoUL1aZNGy1atEjZ2dmueRX5GSy6D+q5557T/PnzXcdm7969Jd4jVeSXX35RUlKSQkND1bBhQ82YMcPtM/vZZ5+5/dyKnL/O8n4/SrpHaufOnerdu7fCw8MVFhamm2++Wdu2bXOrKbpsd8uWLZo4caJiYmIUGhqq22+/XVlZWeX+/L/44gv9/vvv6tGjR7F5bdq00aOPPqrFixdr8+bNOnjwoGbMmKEBAwbotttuK1a/a9cuHT58WH379pUkV1h67rnntHfvXknSlClTlJmZqVdffVV+fqV/bUpISHD7+ZSlqPePPvrIo3oA1VPV/ykJAEzIzs7W77//Xmy6w+Eod9lp06Zp1qxZuv/++3X99dcrJydHX3/9tb755hvdcsstGjVqlI4ePaoNGzbo7bffdlvWMAz9+c9/1qeffqoRI0aoffv2WrdunR599FH99ttvmjdvnqt22LBhWrp0qYYMGaJOnTpp8+bNri9mJbnjjjvUokULPfPMM64vuBs2bNAvv/yi4cOHKz4+Xnv27NGrr76qPXv2aNu2bcW+oN11111q3bq1nn32Wa1atUpPP/20oqKi9Morr6h79+7617/+pXfffVeTJk3Sddddp5tuuqnMn9X999+vN998U3/5y1/0yCOP6Msvv9SsWbP0ww8/aMWKFZKkt99+W6+++qq++uor/fvf/5Yk/elPfyr3OJyvKBw1aNDANW379u3aunWr7r77bjVq1Ei//vqrXnrpJXXt2lV79+5VvXr1dNNNN2ncuHFauHChnnjiCbVu3VqSXP8839mzZ9W1a1ft379fY8aMUbNmzfThhx9q2LBhOnXqlB5++GHTvRfx9/fXoEGD9OSTT+qLL74o9XhfyGewSEpKimw2m0aOHCmr1aqoqCg5nc4SawsLC9WrVy916tRJs2fP1tq1azV16lQVFBRoxowZpvbRk97OtWfPHt14440KDw/XY489psDAQL3yyivq2rWrNm/eXGyAhbFjx6pBgwaaOnWqfv31V82fP19jxozRBx98UOZ2tm7dKovFoquvvrrE+VOmTNGSJUs0atQoJSQkKCAgQAsXLiyxdvXq1YqNjdW1117rmjZr1iz95z//0ahRozR//nwlJyfr0UcfVbt27cr9GXgqIiJCl156qbZs2aIJEyZU2HoBVDFfXlcIAKUpukeqrNf590glJCS43Zdw1VVXGX379i1zO6XdA/Kf//zHkGQ8/fTTbtP/8pe/GBaLxdi/f79hGIaxY8cOQ5Ixfvx4t7phw4YZkoypU6e6pk2dOtWQZAwaNKjY9s6/J8MwDOP99983JBmff/55sXWMHDnSNa2goMBo1KiRYbFYjGeffdY1/eTJk0ZISEiZ92oYhmF8++23hiTj/vvvd5s+adIkQ5LxySefuKaZuQ+nqDYrK8vIysoy9u/fbzz33HOGxWIx2rZtazidzjL3PzU11ZBkvPXWW65pZd0j1aVLF6NLly6u9/PnzzckGe+8845rWn5+vpGYmGiEhYUZOTk5ZfZf0n1451qxYoUhyViwYIFrWkV+Bg8ePGhIMsLDw43MzMwS56WkpLimDR061JBkjB071jXN6XQaffv2NYKCgoysrCzDMAzj008/LfFnWNI6y7pH6vzPd//+/Y2goCDjwIEDrmlHjx416tevb9x0002uaUW/2z169HD7DEyYMMHw9/c3Tp06VeL2itx7771GdHR0mTXr1q1z/Xdi/vz5pdbdeOONJf5+LFu2zJBkREVFlXjPVHlCQ0PL/b3r2bOn0bp1a1PrBVC9cGkfgGotOTlZGzZsKPa68sory102MjJSe/bs0c8//2x6u6tXr5a/v7/GjRvnNv2RRx6RYRhas2aNJGnt2rWS/hiK+Vxjx44tdd0l3WcREhLi+nebzabff/9dnTp1kiR98803xervv/9+17/7+/vr2muvlWEYGjFihGt6ZGSkWrVqVe59GKtXr5YkTZw40W36I488IklatWpVmcuXJS8vTzExMYqJidFll12mSZMm6YYbbtBHH33kdpbt3P13OBw6fvy4LrvsMkVGRpa4/55YvXq14uPjNWjQINe0wMBAjRs3Trm5udq8ebPX+yXJNdT46dOnS625kM9gkYEDByomJsbj+jFjxrj+3WKxaMyYMcrPz9fGjRu97qE8hYWFWr9+vfr376/mzZu7pl988cW655579MUXXygnJ8dtmZEjR7p9Bm688UYVFhbq0KFDZW7r+PHjbmczSxIVFeW6DK9nz54l1pw6dUqpqaklnk0cOHCg+vTpoxMnTig5Odnt81lRGjRoUOLZdgA1B0EKQLV2/fXXq0ePHsVe5X2RkqQZM2bo1KlTatmypdq1a6dHH31U33//vUfbPXTokBo2bKj69eu7TS+6jKzoy96hQ4fk5+enZs2audVddtllpa77/FpJOnHihB5++GHFxcUpJCREMTExrrpz78Ep0qRJE7f3ERERCg4O1kUXXVRs+smTJ0vt5dx9OL/n+Ph4RUZGlvvFtizBwcGu8JuSkqLWrVu7Bqw419mzZ/XUU0+57ke76KKLFBMTo1OnTpW4/544dOiQWrRoUey+lvOPobdyc3Mlqdhn5FwX8hksUtLnpTR+fn5uQUaSWrZsKUmVOmR8VlaWzpw5o1atWhWb17p1azmdTh0+fNht+vmf4aLf6fI+r5KK3ad4rsLCQo0cOVINGzZUZGRksT+GFCka5ry0oHXddddJkttlf1lZWUpPT3e9ij4D3jAMw+N7qgBUTwQpALXWTTfdpAMHDuiNN95Q27Zt9e9//1vXXHON6/4eXynpr9t33nmnXnvtNT3wwANavny51q9f7zrbVdL9MCWN1lbaCG5lfek8V2V8qfP393eF32HDhmnTpk1KT0/XqFGj3OrGjh2rf/7zn7rzzju1dOlSrV+/Xhs2bFB0dHSp9wP52u7duyWVHZor4jNY0WdDSjvOhYWFFbqd8nj7eY2Oji4zbC1YsEA7d+7UokWL9M9//lMbN27Ue++9V6xu9erVuuGGGxQREeFxz9ddd50uvvhi1+u5557zeNnznTx5stgfPgDULAQpALVaVFSUhg8frvfff1+HDx/WlVde6TbSWGlfKhMSEnT06NFil239+OOPrvlF/3Q6nTp48KBb3f79+z3u8eTJk9q0aZMef/xxTZ8+XbfffrtuueWWYmcWKkvRPpx/+VlGRoZOnTrl2teKcPHFF2vChAn6+OOP3UZzW7ZsmYYOHarnn39ef/nLX3TLLbeoc+fOOnXqlNvyZsJeQkKCfv7552JB7Pxj6I3CwkK99957qlevnmvkxdJ4+xn0htPpLHYp508//STpjxEFpf8783P+z7akM3Se9hYTE6N69epp3759xeb9+OOP8vPzU+PGjT1aV3kuv/xynTx5ssQzlYcPH9bUqVPVr18/9evXTw888ICuv/56TZw40a3eMAytXbu2zEFhSvLuu++6XWJ83333eb0fBw8eLHWgFAA1A0EKQK11/tDhYWFhuuyyy9yG9C56rsz5Xyr79OmjwsJCLVq0yG36vHnzZLFY1Lt3b0lSUlKSJOnFF190q3vhhRc87rPoL/Pn/yV+/vz5Hq/jQvTp06fE7c2dO1eSTH/ZLM/YsWNVr149Pfvss65p/v7+xfb/hRdeKHaWpLTjVZI+ffooPT3dbRS4goICvfDCCwoLC1OXLl286r+wsFDjxo3TDz/8oHHjxik8PLzU2gv5DHrr3M+sYRhatGiRAgMDdfPNN0v6I0D6+/vr888/d1vu/M+wmd78/f3Vs2dPffTRR26XEGZkZOi9995T586dy/w5mZGYmCjDMLRjx45i88aOHSvDMFy/f35+fnr55Zf1+++/64knnnDVbd++XZmZmaY/2zfccIPbJcbe/rEjOztbBw4c8GrUSwDVB8OfA6i12rRpo65du6pDhw6KiorS119/rWXLlrndjN+hQwdJ0rhx45SUlCR/f3/dfffduu2229StWzf94x//0K+//qqrrrpK69ev10cffaTx48fr0ksvdS0/cOBAzZ8/X8ePH3cNf150FsCTv+iHh4frpptu0uzZs+VwOHTJJZdo/fr1xc5yVZarrrpKQ4cO1auvvqpTp06pS5cu+uqrr/Tmm2+qf//+6tatW4VuLzo6WsOHD9eLL76oH374Qa1bt9att96qt99+WxEREWrTpo1SU1O1ceNGRUdHuy3bvn17+fv761//+peys7NltVrVvXt3xcbGFtvOyJEj9corr2jYsGHasWOHmjZtqmXLlmnLli2aP39+mfc2FcnOztY777wjSTpz5oz279+v5cuX68CBA7r77rvdHtxakgv5DHojODhYa9eu1dChQ9WxY0etWbNGq1at0hNPPOEasCIiIkJ33HGHXnjhBVksFl166aVauXKlMjMzi63PTG9PP/20NmzYoM6dO+uhhx5SQECAXnnlFdntds2ePdur/SlJ586dFR0drY0bN6p79+6u6StWrNBHH32k559/3u3s19VXX63Ro0dr0aJFGjZsmK677jqtWrVKTZs2VZs2bSqsr48//ljfffedpD8GTPn+++/19NNPS5L+/Oc/uw2Qs3HjRhmGoX79+lXY9gH4gE/GCgSAchQNkbx9+/YS55c0NPX5Q08//fTTxvXXX29ERkYaISEhxuWXX27885//NPLz8101BQUFxtixY42YmBjDYrG4DfV8+vRpY8KECUbDhg2NwMBAo0WLFsacOXPchmw2DMPIy8szRo8ebURFRRlhYWFG//79jX379hmS3IYjLxq6vGgY6nMdOXLEuP32243IyEgjIiLCuOOOO4yjR4+WOoT6+esobVjy8obwLuJwOIzp06cbzZo1MwIDA43GjRsbkydPNmw2m0fbKUlZtQcOHDD8/f1dx+vkyZPG8OHDjYsuusgICwszkpKSjB9//LHYMTUMw3jttdeM5s2bG/7+/m7DeJ8//LlhGEZGRoZrvUFBQUa7du3chvcuS5cuXdyG2w8LCzNatGhh3Hvvvcb69etLXKYiP4NFw5HPmTOn2HZKG/48NDTUOHDggNGzZ0+jXr16RlxcnDF16lSjsLDQbfmsrCxj4MCBRr169YwGDRoYo0aNMnbv3l1snWX9fpz/2TQMw/jmm2+MpKQkIywszKhXr57RrVs3Y+vWrW41pf1ulzYse0nGjRtnXHbZZa73p0+fNho1amS0b9/eKCgoKFafk5NjNGzY0LjmmmuMgoIC49prrzUeeuihMrdR1u9rSYqGny/pdf5n7q677jI6d+7s0XoBVF8Ww/DwLmQAgMe+/fZbXX311XrnnXc0ePBgX7cD1Cq//PKLLr/8cq1Zs8Z1yaKnMjIydPHFF2vlypWuy1qrUnp6upo1a6YlS5ZwRgqo4bhHCgAu0NmzZ4tNmz9/vvz8/HTTTTf5oCOgdmvevLlGjBjhdp+dp7Kzs/XUU09V+CWrnpo/f77atWtHiAJqAc5IAcAFmj59unbs2KFu3bopICBAa9as0Zo1a1z36AAAgNqHIAUAF2jDhg2aPn269u7dq9zcXDVp0kRDhgzRP/7xDwUEMKYPAAC1EUEKAAAAAEziHikAAAAAMIkgBQAAAAAmcfG+JKfTqaNHj6p+/foePTwTAAAAQO1kGIZOnz6thg0bys+v9PNOBClJR48edXsKOgAAAIC67fDhw2rUqFGp8wlSkurXry/pjx9WeHi4j7sBAAAA4Cs5OTlq3LixKyOUhiAluS7nCw8PJ0gBAAAAKPeWHwabAAAAAACTCFIAAAAAYBJBCgAAAABMIkgBAAAAgEkEKQAAAAAwiSAFAAAAACYRpAAAAADAJIIUAAAAAJhEkAIAAAAAkwhSAAAAAGASQQoAAAAATCJIAQAAAIBJBCkAAAAAMIkgBQAAAAAmEaQAAAAAwCSCFAAAAACYRJACAAAAAJMIUgAAAABgUoCvGwAAuLPZbLLb7R7VWq1WBQcHV3JHAADgfAQpAKhGbDabGjVJ0PGsTI/qo2NidSTtEGEKAIAqRpACgGrEbrfreFambp21XIEhYWXWOs7mauXkAbLb7T4PUpxFAwDUNQQpAKiGAkPCFFROkKouOIsGAKiLCFIAgAtSU8+iAQBwIXw6at+0adNksVjcXpdffrlrvs1m0+jRoxUdHa2wsDANHDhQGRkZbutIS0tT3759Va9ePcXGxurRRx9VQUFBVe8KANR5RWfRynqVF7QAAKgpfH5G6oorrtDGjRtd7wMC/q+lCRMmaNWqVfrwww8VERGhMWPGaMCAAdqyZYskqbCwUH379lV8fLy2bt2qY8eO6b777lNgYKCeeeaZKt8XAAAAAHWDz4NUQECA4uPji03Pzs7W66+/rvfee0/du3eXJKWkpKh169batm2bOnXqpPXr12vv3r3auHGj4uLi1L59e82cOVN///vfNW3aNAUFBVX17gAAAACoA3z+QN6ff/5ZDRs2VPPmzTV48GClpaVJknbs2CGHw6EePXq4ai+//HI1adJEqampkqTU1FS1a9dOcXFxrpqkpCTl5ORoz549pW7TbrcrJyfH7QUAAAAAnvJpkOrYsaMWL16stWvX6qWXXtLBgwd144036vTp00pPT1dQUJAiIyPdlomLi1N6erokKT093S1EFc0vmleaWbNmKSIiwvVq3Lhxxe4YAAAAgFrNp5f29e7d2/XvV155pTp27KiEhAQtXbpUISEhlbbdyZMna+LEia73OTk5hCkAAAAAHvP5pX3nioyMVMuWLbV//37Fx8crPz9fp06dcqvJyMhw3VMVHx9fbBS/ovcl3XdVxGq1Kjw83O0FAAAAAJ6qVkEqNzdXBw4c0MUXX6wOHTooMDBQmzZtcs3ft2+f0tLSlJiYKElKTEzUrl27lJn5fw+B3LBhg8LDw9WmTZsq7x8AAABA3eDTS/smTZqk2267TQkJCTp69KimTp0qf39/DRo0SBERERoxYoQmTpyoqKgohYeHa+zYsUpMTFSnTp0kST179lSbNm00ZMgQzZ49W+np6ZoyZYpGjx4tq9Xqy10DAAAAUIv5NEgdOXJEgwYN0vHjxxUTE6POnTtr27ZtiomJkSTNmzdPfn5+GjhwoOx2u5KSkvTiiy+6lvf399fKlSv14IMPKjExUaGhoRo6dKhmzJjhq10CAAAAUAf4NEgtWbKkzPnBwcFKTk5WcnJyqTUJCQlavXp1RbcGAAAAAKXy+QN5AQAXJjs726M6q9Wq4ODgSu4GAIC6gSAFADVUoSNf8vNXQkKCR/XRMbE6knaIMAUAQAUgSAFADeUscEjOQvWeuUzB9ct+jIPjbK5WTh4gu91OkAIAoAIQpACghgsMCVVQSJiv2wAAoE6pVs+RAgAAAICagCAFAAAAACZxaR8A1CGejvAnMcofAABlIUgBQB1gdoQ/iVH+AAAoC0EKAOoAMyP8SYzyBwBAeQhSAFCHMMIfAAAVgyAFACiVJ/dUmbnvCgCA2oIgBQAoxpt7qgynsxI7AgCgeiFIAQCKMXNP1ZmTGVo3fYicTqOKugMAwPcIUgCAUnlyT5XjbF4VdQMAQPXBA3kBAAAAwCSCFAAAAACYRJACAAAAAJMIUgAAAABgEoNNAACqnKfPnrJarQoODq7kbgAAMI8gBQCoMmafTxUdE6sjaYcIUwCAaocgBQCoMmaeT+U4m6uVkwfIbrcTpAAA1Q5BCgBQ5Tx5PhUAANUZg00AAAAAgEkEKQAAAAAwiUv7AMBLNptNdrvdo1pGnwMAoHYhSAGAF2w2mxo1SdDxrEyP6hl9DgCA2oUgBQBesNvtOp6VqVtnLVdgOYMmMPocAAC1D0EKAC5AYEgYo88BAFAHMdgEAAAAAJhEkAIAAAAAkwhSAAAAAGASQQoAAAAATCJIAQAAAIBJBCkAAAAAMIkgBQAAAAAmEaQAAAAAwCSCFAAAAACYFODrBgCgrsjOzq6QGgAA4HsEKQCoZIWOfMnPXwkJCR4vYzidldgRAAC4UAQpAKhkzgKH5CxU75nLFFw/vMzaMycztG76EDmdRhV1BwAAvEGQAoAqEhgSqqCQsDJrHGfzqqgbAABwIRhsAgAAAABMIkgBAAAAgEkEKQAAAAAwiSAFAAAAACYx2AQAoFrz9NlaVqtVwcHBldwNAAB/IEgBAKols8/fio6J1ZG0Q4QpAECVIEgBAKolM8/fcpzN1crJA2S32wlSAIAqQZACAFRrnjx/CwCAqsZgEwAAAABgEkEKAAAAAEwiSAEAAACASQQpAAAAADCJIAUAAAAAJhGkAAAAAMAkghQAAAAAmESQAgAAAACTCFIAAAAAYBJBCgAAAABMIkgBAAAAgEkEKQAAAAAwiSAFAAAAACYRpAAAAADAJIIUAAAAAJhEkAIAAAAAkwhSAAAAAGASQQoAAAAATCJIAQAAAIBJBCkAAAAAMIkgBQAAAAAmEaQAAAAAwCSCFAAAAACYRJACAAAAAJMIUgAAAABgUoCvGwCA6sRms8lut5dbl52dXQXdAACA6qranJF69tlnZbFYNH78eNc0m82m0aNHKzo6WmFhYRo4cKAyMjLclktLS1Pfvn1Vr149xcbG6tFHH1VBQUEVdw+gNrDZbGrUJEGRkZHlvhISEiRJhtPp464BAIAvVIszUtu3b9crr7yiK6+80m36hAkTtGrVKn344YeKiIjQmDFjNGDAAG3ZskWSVFhYqL59+yo+Pl5bt27VsWPHdN999ykwMFDPPPOML3YFQA1mt9t1PCtTt85arsCQsDJrz5zM0LrpQ+R0GlXUHQAAqE58fkYqNzdXgwcP1muvvaYGDRq4pmdnZ+v111/X3Llz1b17d3Xo0EEpKSnaunWrtm3bJklav3699u7dq3feeUft27dX7969NXPmTCUnJys/P99XuwSghgsMCVNQOa/A4LKDFgAAqN18HqRGjx6tvn37qkePHm7Td+zYIYfD4Tb98ssvV5MmTZSamipJSk1NVbt27RQXF+eqSUpKUk5Ojvbs2VPqNu12u3JyctxeAAAAAOApn17at2TJEn3zzTfavn17sXnp6ekKCgpSZGSk2/S4uDilp6e7as4NUUXzi+aVZtasWZo+ffoFdg8AAACgrvLZGanDhw/r4Ycf1rvvvqvg4OAq3fbkyZOVnZ3teh0+fLhKtw8AAACgZvNZkNqxY4cyMzN1zTXXKCAgQAEBAdq8ebMWLlyogIAAxcXFKT8/X6dOnXJbLiMjQ/Hx8ZKk+Pj4YqP4Fb0vqimJ1WpVeHi42wsAAAAAPOWzIHXzzTdr165d+vbbb12va6+9VoMHD3b9e2BgoDZt2uRaZt++fUpLS1NiYqIkKTExUbt27VJmZqarZsOGDQoPD1ebNm2qfJ8AAAAA1A0+u0eqfv36atu2rdu00NBQRUdHu6aPGDFCEydOVFRUlMLDwzV27FglJiaqU6dOkqSePXuqTZs2GjJkiGbPnq309HRNmTJFo0ePltVqrfJ9AgAAAFA3VIvnSJVm3rx58vPz08CBA2W325WUlKQXX3zRNd/f318rV67Ugw8+qMTERIWGhmro0KGaMWOGD7sGAAAAUNtVqyD12Wefub0PDg5WcnKykpOTS10mISFBq1evruTOAAAAAOD/+Pw5UgAAAABQ0xCkAAAAAMAkghQAAAAAmESQAgAAAACTCFIAAAAAYFK1GrUPAIALkZ2d7XGt1WpVcHBwJXYDAKjNCFIAgBqv0JEv+fkrISHB42WiY2J1JO0QYQoA4BWCFACgxnMWOCRnoXrPXKbg+uHl1jvO5mrl5AGy2+0EKQCAVwhSAIBaIzAkVEEhYb5uAwBQBzDYBAAAAACYRJACAAAAAJMIUgAAAABgEkEKAAAAAExisAkAtZrNZpPdbveo1swziAAAQN1GkAJQa9lsNjVqkqDjWZmmljOczkrqCAAA1BYEKQC1lt1u1/GsTN06a7kCPRgS+8zJDK2bPkROp1EF3QEAgJqMIAWg1gsMCfPo2UKOs3lV0A0AAKgNGGwCAAAAAEwiSAEAAACASQQpAAAAADCJIAUAAAAAJhGkAAAAAMAkghQAAAAAmESQAgAAAACTeI4UAKDOys7O9qjOarUqODi4krsBANQkBCkAQJ1T6MiX/PyVkJDgUX10TKyOpB0iTAEAXAhSAIA6x1ngkJyF6j1zmYLrh5dZ6zibq5WTB8hutxOkAAAuBCkAQJ0VGBKqoJAwX7cBAKiBGGwCAAAAAEwiSAEAAACASQQpAAAAADCJIAUAAAAAJhGkAAAAAMAkghQAAAAAmESQAgAAAACTCFIAAAAAYBJBCgAAAABMIkgBAAAAgEkEKQAAAAAwKcDXDQAAUBNkZ2d7VGe1WhUcHFzJ3QAAfI0gBQBAGQod+ZKfvxISEjyqj46J1ZG0Q4QpAKjlCFIAAJTBWeCQnIXqPXOZguuHl1nrOJurlZMHyG63E6QAoJYjSAEA4IHAkFAFhYT5ug0AQDXBYBMAAAAAYBJnpABUCzabTXa73aNabuYHAAC+RpAC4HM2m02NmiToeFamR/XczA8AAHyNIAXA5+x2u45nZerWWcsVWM49KNzMDwAAqgOCFIBqIzAkjJv5AQBAjUCQAlAjefJwVE8foAoAAGAWQQpAjWL24aiSZDidldgRAACoiwhSAGoUMw9HPXMyQ+umD5HTaVRRdwAAoK4gSAGokTx5OKrjbF4VdQMAAOoaHsgLAAAAACYRpAAAAADAJIIUAAAAAJhEkAIAAAAAkwhSAAAAAGASQQoAAAAATCJIAQAAAIBJBCkAAAAAMIkgBQAAAAAmEaQAAAAAwCSCFAAAAACYRJACAAAAAJMIUgAAAABgEkEKAAAAAEwiSAEAAACASQQpAAAAADCJIAUAAAAAJhGkAAAAAMAkghQAAAAAmESQAgAAAACTCFIAAAAAYBJBCgAAAABMIkgBAAAAgEleBalffvmlovsAAAAAgBrDqyB12WWXqVu3bnrnnXdks9m83vhLL72kK6+8UuHh4QoPD1diYqLWrFnjmm+z2TR69GhFR0crLCxMAwcOVEZGhts60tLS1LdvX9WrV0+xsbF69NFHVVBQ4HVPAAAAAFAer4LUN998oyuvvFITJ05UfHy8Ro0apa+++sr0eho1aqRnn31WO3bs0Ndff63u3burX79+2rNnjyRpwoQJ+vjjj/Xhhx9q8+bNOnr0qAYMGOBavrCwUH379lV+fr62bt2qN998U4sXL9ZTTz3lzW4BAAAAgEe8ClLt27fXggULdPToUb3xxhs6duyYOnfurLZt22ru3LnKysryaD233Xab+vTpoxYtWqhly5b65z//qbCwMG3btk3Z2dl6/fXXNXfuXHXv3l0dOnRQSkqKtm7dqm3btkmS1q9fr7179+qdd95R+/bt1bt3b82cOVPJycnKz88vdbt2u105OTluLwAAAADw1AUNNhEQEKABAwboww8/1L/+9S/t379fkyZNUuPGjXXffffp2LFjHq+rsLBQS5YsUV5enhITE7Vjxw45HA716NHDVXP55ZerSZMmSk1NlSSlpqaqXbt2iouLc9UkJSUpJyfHdVarJLNmzVJERITr1bhxYy/2HgAAAEBddUFB6uuvv9ZDDz2kiy++WHPnztWkSZN04MABbdiwQUePHlW/fv3KXceuXbsUFhYmq9WqBx54QCtWrFCbNm2Unp6uoKAgRUZGutXHxcUpPT1dkpSenu4WoormF80rzeTJk5Wdne16HT582OSeAwAAAKjLArxZaO7cuUpJSdG+ffvUp08fvfXWW+rTp4/8/P7IZc2aNdPixYvVtGnTctfVqlUrffvtt8rOztayZcs0dOhQbd682Zu2PGa1WmW1Wit1GwAAAABqL6+C1EsvvaS//vWvGjZsmC6++OISa2JjY/X666+Xu66goCBddtllkqQOHTpo+/btWrBgge666y7l5+fr1KlTbmelMjIyFB8fL0mKj48vNshF0ah+RTUAAAAAUNG8urTv559/1uTJk0sNUdIfAWno0KGm1+10OmW329WhQwcFBgZq06ZNrnn79u1TWlqaEhMTJUmJiYnatWuXMjMzXTUbNmxQeHi42rRpY3rbAAAAAOAJr85IpaSkKCwsTHfccYfb9A8//FBnzpzxOEBNnjxZvXv3VpMmTXT69Gm99957+uyzz7Ru3TpFRERoxIgRmjhxoqKiohQeHq6xY8cqMTFRnTp1kiT17NlTbdq00ZAhQzR79mylp6drypQpGj16NJfuAQAAAKg0XgWpWbNm6ZVXXik2PTY2ViNHjvQ4SGVmZrpG94uIiNCVV16pdevW6ZZbbpEkzZs3T35+fho4cKDsdruSkpL04osvupb39/fXypUr9eCDDyoxMVGhoaEaOnSoZsyY4c1uAQBQIbKzsz2qs1qtCg4OruRuAACVwasglZaWpmbNmhWbnpCQoLS0NI/XU949VMHBwUpOTlZycnKpNQkJCVq9erXH2wQAoLIUOvIlP38lJCR4VB8dE6sjaYcIUwBQA3kVpGJjY/X9998XG5Xvu+++U3R0dEX0BQBAjeMscEjOQvWeuUzB9cPLrHWczdXKyQNkt9sJUgBQA3kVpAYNGqRx48apfv36uummmyRJmzdv1sMPP6y77767QhsEAKCmCQwJVVBImK/bAABUIq+C1MyZM/Xrr7/q5ptvVkDAH6twOp2677779Mwzz1RogwAAAABQ3XgVpIKCgvTBBx9o5syZ+u677xQSEqJ27dp5fE04AAAAANRkXgWpIi1btlTLli0rqhcAAAAAqBG8ClKFhYVavHixNm3apMzMTDmdTrf5n3zySYU0BwAAAADVkVdB6uGHH9bixYvVt29ftW3bVhaLpaL7AgAAAIBqy6sgtWTJEi1dulR9+vSp6H4AAAAAoNrz82ahoKAgXXbZZRXdCwAAAADUCF4FqUceeUQLFiyQYRgV3Q8AAAAAVHteXdr3xRdf6NNPP9WaNWt0xRVXKDAw0G3+8uXLK6Q5AAAAAKiOvApSkZGRuv322yu6FwAAAACoEbwKUikpKRXdBwAAAADUGF7dIyVJBQUF2rhxo1555RWdPn1aknT06FHl5uZWWHMAAAAAUB15dUbq0KFD6tWrl9LS0mS323XLLbeofv36+te//iW73a6XX365ovsEAAAAgGrDqzNSDz/8sK699lqdPHlSISEhrum33367Nm3aVGHNAQAAAEB15NUZqf/3//6ftm7dqqCgILfpTZs21W+//VYhjQEAUBdkZ2d7VGe1WhUcHFzJ3QAAPOVVkHI6nSosLCw2/ciRI6pfv/4FNwUAQG1X6MiX/PyVkJDgUX10TKyOpB0iTAFANeFVkOrZs6fmz5+vV199VZJksViUm5urqVOnqk+fPhXaIAAAtZGzwCE5C9V75jIF1w8vs9ZxNlcrJw+Q3W4nSAFANeFVkHr++eeVlJSkNm3ayGaz6Z577tHPP/+siy66SO+//35F9wgAQK0VGBKqoJAwX7cBADDJqyDVqFEjfffdd1qyZIm+//575ebmasSIERo8eLDb4BMAAAAAUBt5FaQkKSAgQPfee29F9gIAAAAANYJXQeqtt94qc/59993nVTMAAAAAUBN4FaQefvhht/cOh0NnzpxRUFCQ6tWrR5ACAAAAUKt59UDekydPur1yc3O1b98+de7cmcEmAAAAANR6XgWpkrRo0ULPPvtssbNVAAAAAFDbVFiQkv4YgOLo0aMVuUoAAAAAqHa8ukfqv//9r9t7wzB07NgxLVq0SDfccEOFNAYAAAAA1ZVXQap///5u7y0Wi2JiYtS9e3c9//zzFdEXAAAAAFRbXgUpp9NZ0X0AAAAAQI1RofdIAQAAAEBd4NUZqYkTJ3pcO3fuXG82AQAAAADVlldBaufOndq5c6ccDodatWolSfrpp5/k7++va665xlVnsVgqpksAAAAAqEa8ClK33Xab6tevrzfffFMNGjSQ9MdDeocPH64bb7xRjzzySIU2CQAAAADViVf3SD3//POaNWuWK0RJUoMGDfT0008zah8AAACAWs+rIJWTk6OsrKxi07OysnT69OkLbgoAAAAAqjOvgtTtt9+u4cOHa/ny5Tpy5IiOHDmi//mf/9GIESM0YMCAiu4RAAAAAKoVr+6RevnllzVp0iTdc889cjgcf6woIEAjRozQnDlzKrRBAAAAAKhuvApS9erV04svvqg5c+bowIEDkqRLL71UoaGhFdocAAAAAFRHF/RA3mPHjunYsWNq0aKFQkNDZRhGRfUFAAAAANWWV0Hq+PHjuvnmm9WyZUv16dNHx44dkySNGDGCoc8BAAAA1HpeBakJEyYoMDBQaWlpqlevnmv6XXfdpbVr11ZYcwAAAABQHXl1j9T69eu1bt06NWrUyG16ixYtdOjQoQppDAAAAACqK6/OSOXl5bmdiSpy4sQJWa3WC24KAAAAAKozr4LUjTfeqLfeesv13mKxyOl0avbs2erWrVuFNQcAAAAA1ZFXl/bNnj1bN998s77++mvl5+frscce0549e3TixAlt2bKlonsEAAAAgGrFqzNSbdu21U8//aTOnTurX79+ysvL04ABA7Rz505deumlFd0jAAAAAFQrps9IORwO9erVSy+//LL+8Y9/VEZPAAAAAFCtmT4jFRgYqO+//74yegEAAACAGsGrS/vuvfdevf766xXdCwAAAADUCF4NNlFQUKA33nhDGzduVIcOHRQaGuo2f+7cuRXSHAAAAABUR6aC1C+//KKmTZtq9+7duuaaayRJP/30k1uNxWKp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ceKEBg8erPDwcEVGRmrEiBHKzc31aFnDMNS7d29ZLBb95z//qdxG4TFvjumoUaN06aWXKiQkRDExMerXr59+/PHHKuoY5TF7TE+cOKGxY8eqVatWCgkJUZMmTTRu3DhlZ2dXYdcojTe/o6+++qq6du2q8PBwWSwWnTp1qmqaRamSk5PVtGlTBQcHq2PHjvrqq6/KrP/www91+eWXKzg4WO3atdPq1aurqFN4wszx3LNnjwYOHKimTZvKYrFo/vz5VdcoTCNIodIMHjxYe/bs0YYNG7Ry5Up9/vnnGjlypEfLzp8/XxaLpZI7hFneHNMOHTooJSVFP/zwg9atWyfDMNSzZ08VFhZWUdcoi9ljevToUR09elTPPfecdu/ercWLF2vt2rUaMWJEFXaN0njzO3rmzBn16tVLTzzxRBV1ibJ88MEHmjhxoqZOnapvvvlGV111lZKSkpSZmVli/datWzVo0CCNGDFCO3fuVP/+/dW/f3/t3r27ijtHScwezzNnzqh58+Z69tlnFR8fX8XdwjQDqAR79+41JBnbt293TVuzZo1hsViM3377rcxld+7caVxyySXGsWPHDEnGihUrKrlbeOJCjum5vvvuO0OSsX///spoEyZU1DFdunSpERQUZDgcjspoEx660OP56aefGpKMkydPVmKXKM/1119vjB492vW+sLDQaNiwoTFr1qwS6++8806jb9++btM6duxojBo1qlL7hGfMHs9zJSQkGPPmzavE7nChOCOFSpGamqrIyEhde+21rmk9evSQn5+fvvzyy1KXO3PmjO655x4lJyfzl5hqxttjeq68vDylpKSoWbNmaty4cWW1Cg9VxDGVpOzsbIWHhysgoFY8473GqqjjCd/Jz8/Xjh071KNHD9c0Pz8/9ejRQ6mpqSUuk5qa6lYvSUlJSaXWo+p4czxRsxCkUCnS09MVGxvrNi0gIEBRUVFKT08vdbkJEyboT3/6k/r161fZLcIkb4+pJL344osKCwtTWFiY1qxZow0bNigoKKgy24UHLuSYFvn99981c+ZMjy/bReWpiOMJ3/r9999VWFiouLg4t+lxcXGlHsP09HRT9ag63hxP1CwEKZjy+OOPy2KxlPnydiCB//73v/rkk0+4sbKKVeYxLTJ48GDt3LlTmzdvVsuWLXXnnXfKZrNV0B7gfFVxTCUpJydHffv2VZs2bTRt2rQLbxwlqqrjCQAwh+swYMojjzyiYcOGlVnTvHlzxcfHF7uRsqCgQCdOnCj1kr1PPvlEBw4cUGRkpNv0gQMH6sYbb9Rnn312AZ2jNJV5TItEREQoIiJCLVq0UKdOndSgQQOtWLFCgwYNutD2UYKqOKanT59Wr169VL9+fa1YsUKBgYEX2jZKURXHE9XDRRddJH9/f2VkZLhNz8jIKPUYxsfHm6pH1fHmeKJmIUjBlJiYGMXExJRbl5iYqFOnTmnHjh3q0KGDpD+CktPpVMeOHUtc5vHHH9f999/vNq1du3aaN2+ebrvttgtvHiWqzGNaEsMwZBiG7Ha71z2jbJV9THNycpSUlCSr1ar//ve/Cg4OrrDeUVxV/47Cd4KCgtShQwdt2rRJ/fv3lyQ5nU5t2rRJY8aMKXGZxMREbdq0SePHj3dN27BhgxITE6ugY5TFm+OJGsbXo12g9urVq5dx9dVXG19++aXxxRdfGC1atDAGDRrkmn/kyBGjVatWxpdfflnqOsSofdWK2WN64MAB45lnnjG+/vpr49ChQ8aWLVuM2267zYiKijIyMjJ8tRs4h9ljmp2dbXTs2NFo166dsX//fuPYsWOuV0FBga92A//Lm//uHjt2zNi5c6fx2muvGZKMzz//3Ni5c6dx/PhxX+xCnbdkyRLDarUaixcvNvbu3WuMHDnSiIyMNNLT0w3DMIwhQ4YYjz/+uKt+y5YtRkBAgPHcc88ZP/zwgzF16lQjMDDQ2LVrl692Aecwezztdruxc+dOY+fOncbFF19sTJo0ydi5c6fx888/+2oXUAaCFCrN8ePHjUGDBhlhYWFGeHi4MXz4cOP06dOu+QcPHjQkGZ9++mmp6yBIVS9mj+lvv/1m9O7d24iNjTUCAwONRo0aGffcc4/x448/+mgPcD6zx7RoiOySXgcPHvTNTsDFm//uTp06tcTjmZKSUvU7AMMwDOOFF14wmjRpYgQFBRnXX3+9sW3bNte8Ll26GEOHDnWrX7p0qdGyZUsjKCjIuOKKK4xVq1ZVcccoi5njWfQ7ev6rS5cuVd84ymUxDMOowhNgAAAAAFDjMWofAAAAAJhEkAIAAAAAkwhSAAAAAGASQQoAAAAATCJIAQAAAIBJBCkAAAAAMIkgBQAAAAAmEaQAAAAAwCSCFACgVvnss89ksVh06tQpn/Yxbdo0tW/f3qc9AAAqD0EKAFDlhg0bJovFIovFosDAQDVr1kyPPfaYbDabqfV07dpV48ePd5v2pz/9SceOHVNERIRXvT3//PNq0KBBib2cOXNG4eHhWrhwoVfrBgDUHgQpAIBP9OrVS8eOHdMvv/yiefPm6ZVXXtHUqVMveL1BQUGKj4+XxWLxavkhQ4YoLy9Py5cvLzZv2bJlys/P17333nuhbQIAajiCFADAJ6xWq+Lj49W4cWP1799fPXr00IYNG1zzjx8/rkGDBumSSy5RvXr11K5dO73//vuu+cOGDdPmzZu1YMEC19mtX3/9tcRL+/7nf/5HV1xxhaxWq5o2barnn3++1L5iY2N122236Y033ig274033lD//v0VFRWlv//972rZsqXq1aun5s2b68knn5TD4Sh1vSWdPevfv7+GDRvmem+32zVp0iRdcsklCg0NVceOHfXZZ5+V/kMEAPgMQQoA4HO7d+/W1q1bFRQU5Jpms9nUoUMHrVq1Srt379bIkSM1ZMgQffXVV5KkBQsWKDExUX/729907NgxHTt2TI0bNy627h07dujOO+/U3XffrV27dmnatGl68skntXjx4lL7GTFihD755BMdOnTINe2XX37R559/rhEjRkiS6tevr8WLF2vv3r1asGCBXnvtNc2bN++Cfg5jxoxRamqqlixZou+//1533HGHevXqpZ9//vmC1gsAqHgBvm4AAFA3rVy5UmFhYSooKJDdbpefn58WLVrkmn/JJZdo0qRJrvdjx47VunXrtHTpUl1//fWKiIhQUFCQ6tWrp/j4+FK3M3fuXN1888168sknJUktW7bU3r17NWfOHLezQedKSkpSw4YNlZKSomnTpkmSFi9erMaNG+vmm2+WJE2ZMsVV37RpU02aNElLlizRY4895tXPIy0tTSkpKUpLS1PDhg0lSZMmTdLatWuVkpKiZ555xqv1AgAqB0EKAOAT3bp100svvaS8vDzNmzdPAQEBGjhwoGt+YWGhnnnmGS1dulS//fab8vPzZbfbVa9ePVPb+eGHH9SvXz+3aTfccIPmz5+vwsJC+fv7F1vG399fQ4cO1eLFizV16lQZhqE333xTw4cPl5/fHxdzfPDBB1q4cKEOHDig3NxcFRQUKDw83IufxB927dqlwsJCtWzZ0m263W5XdHS01+sFAFQOghQAwCdCQ0N12WWXSfrj3qOrrrpKr7/+uuvSuTlz5mjBggWaP3++2rVrp9DQUI0fP175+flV0t9f//pXzZo1S5988omcTqcOHz6s4cOHS5JSU1M1ePBgTZ8+XUlJSYqIiNCSJUvKvPfKz89PhmG4TTv3nqrc3Fz5+/trx44dxcJdWFhYBe4ZAKAiEKQAAD7n5+enJ554QhMnTtQ999yjkJAQbdmyRf369XONkOd0OvXTTz+pTZs2ruWCgoJUWFhY5rpbt26tLVu2uE3bsmWLWrZsWeLZqCKXXnqpunTpojfeeEOGYahHjx5KSEiQJG3dulUJCQn6xz/+4ao/936qksTExOjYsWOu94WFhdq9e7e6desmSbr66qtVWFiozMxM3XjjjWWuCwDgeww2AQCoFu644w75+/srOTlZktSiRQtt2LBBW7du1Q8//KBRo0YpIyPDbZmmTZvqyy+/1K+//qrff/9dTqez2HofeeQRbdq0STNnztRPP/2kN998U4sWLXK7/6o0I0aM0PLly7VixQrXmbKi3tLS0rRkyRIdOHBACxcu1IoVK8pcV/fu3bVq1SqtWrVKP/74ox588EG3kQVbtmypwYMH67777tPy5ct18OBBffXVV5o1a5ZWrVpVbq8AgKpFkAIAVAsBAQEaM2aMZs+erby8PE2ZMkXXXHONkpKS1LVrV8XHx6t///5uy0yaNEn+/v5q06aNYmJilJaWVmy911xzjZYuXaolS5aobdu2euqppzRjxoxSB5o418CBA2W1WlWvXj23bf/5z3/WhAkTNGbMGLVv315bt251DWZRmr/+9a8aOnSo7rvvPnXp0kXNmzd3nY0qkpKSovvuu0+PPPKIWrVqpf79+2v79u1q0qRJub0CAKqWxTj/gm0AAAAAQJk4IwUAAAAAJhGkAAAAAMAkghQAAAAAmESQAgAAAACTCFIAAAAAYBJBCgAAAABMIkgBAAAAgEkEKQAAAAAwiSAFAAAAACYRpAAAAADAJIIUAAAAAJj0/wE3YD121g1p0QAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 1000x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"simulated_ratio_distribution = simulate_ratio_distribution(0.02, 0.005, 0.0015, 0.0015)\n",
"plot_ratio_distribution(simulated_ratio_distribution)"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Coefficient of variation for X: 0.4\n",
"Coefficient of variation for Y: 0.32\n",
"Z is not approximately normal by Kuethe's criterion\n",
"Z is not approximately normal by Marsaglia’s criterion\n",
"Z is not approximately normal by Hayya's criterion\n",
"Required N for a standard deviation of 0.008: 306.25\n"
]
},
{
"data": {
"image/png": "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adOmacaMGXrggQd04403KjMzU59//rm++OIL3XbbbRo+fLjS0tK0detWvfHGGx7rGoahf/7zn/roo480bNgwtW3bVps3b9bEiRP13//+V/PmzXMvGx8fr9WrV2vw4MHq1KmTduzY4b5Y86Z///5q0qSJnn32WfdF79atW/Xjjz9q6NChioyM1MGDB/XSSy/p4MGD2rNnT76LtnvvvVctWrTQzJkztX79ej399NMKDw/XsmXL1LVrVz333HN66623NGHCBN1www265ZZbCv2sHnjgAS1fvlx33323xo8fr08//VQzZszQt99+q7Vr10qS3njjDb300kv67LPP9Morr0iS/vGPf1zy53CxvMBUvXp1d9vevXu1e/du3XfffapTp46OHz+uJUuWqHPnzjp06JCCg4N1yy23aPTo0Vq4cKEef/xxtWjRQpLc/3uxP//8U507d9aRI0c0cuRINWzYUGvWrFF8fLzOnDmjMWPGFLv2PDabTQMGDNATTzyhXbt2FfjzvpxzME9SUpIuXLigBx98UEFBQQoPD5fL5fK6rNPp1O23365OnTpp1qxZ2rRpk6ZOnSqHw6Hp06cX6xiLUtvfHTx4UDfffLNCQ0P1yCOPKCAgQMuWLVPnzp21Y8eOfJM4jBo1StWrV9fUqVN1/PhxzZ8/XyNHjtTbb79d6H52794ti8Wi66+/3mv/5MmTtWrVKg0fPlz169eX3W7XwoULvS67YcMG1apVSx06dHC3zZgxQ++9956GDx+u+fPna/HixZo4caJatWp1yc+gqMLCwnTttdfqk08+0bhx40zbLoBSwJ/PJAJAQfLGXBX2unjMVf369T3GObRp08bo3bt3ofspaEzJe++9Z0gynn76aY/2u+++27BYLMaRI0cMwzCMffv2GZKMsWPHeiwXHx9vSDKmTp3qbps6daohyRgwYEC+/V08xsMwDGPlypWGJGPnzp35tvHggw+62xwOh1GnTh3DYrEYM2fOdLf//vvvRuXKlQsd+2EYhvHVV18ZkowHHnjAo33ChAmGJOPDDz90txVnXE/esqdPnzZOnz5tHDlyxHj++ecNi8VitGzZ0nC5XIUef0pKiiHJeP31191thY25uvXWW41bb73V/X7+/PmGJOPNN990t+Xk5BjR0dFGlSpVjMzMzELr9zau7+/Wrl1rSDIWLFjgbjPzHDx27JghyQgNDTVOnTrltS8pKcndFhcXZ0gyRo0a5W5zuVxG7969jcDAQOP06dOGYRjGRx995PUz9LbNwsZcXXx+9+3b1wgMDDSOHj3qbktLSzOqVq1q3HLLLe62vN/t7t27e5wD48aNM2w2m3HmzBmv+8szaNAgo0aNGoUus3nzZve/E/Pnzy9wuZtvvtnr78c777xjSDLCw8O9jsG6lJCQkEv+3vXo0cNo0aJFsbYLoPTjsUAApdrixYu1devWfK/WrVtfct1q1arp4MGD+uGHH4q93w0bNshms2n06NEe7ePHj5dhGNq4caMkadOmTZL+mhb670aNGlXgtr2N26hcubL7vy9cuKBffvlFnTp1kiR98cUX+ZZ/4IEH3P9ts9nUoUMHGYahYcOGudurVaumZs2aXXJcx4YNGyRJiYmJHu3jx4+XJK1fv77Q9QuTlZWlmjVrqmbNmmrcuLEmTJigm266Se+//77H3bi/H39ubq5+/fVXNW7cWNWqVfN6/EWxYcMGRUZGasCAAe62gIAAjR49WufPn9eOHTt8Pi5J7mnPz507V+Ayl3MO5unXr59q1qxZ5OVHjhzp/m+LxaKRI0cqJydH27Zt87mGS3E6ndqyZYv69u2rRo0auduvvvpq3X///dq1a5cyMzM91nnwwQc9zoGbb75ZTqdTP/30U6H7+vXXXz3uenoTHh7ufoSvR48eXpc5c+aMUlJSvN517Nevn3r16qXffvtNixcv9jg/zVK9enWvd+UBlG2EKwCl2o033qju3bvne13q4kqSpk+frjNnzqhp06Zq1aqVJk6cqG+++aZI+/3pp59Uu3ZtVa1a1aM97xG0vAvAn376SVarVQ0bNvRYrnHjxgVu++JlJem3337TmDFjFBERocqVK6tmzZru5f4+pidPvXr1PN6HhYWpUqVKuuqqq/K1//777wXW8vdjuLjmyMhIVatW7ZIXu4WpVKmSOxAnJSWpRYsW7kkx/u7PP//UlClT3OPbrrrqKtWsWVNnzpzxevxF8dNPP6lJkyb5xslc/DP01fnz5yUp3znyd5dzDubxdr4UxGq1eoQbSWratKkkXdHp60+fPq0//vhDzZo1y9fXokULuVwunThxwqP94nM473f6UuerpHzjHv/O6XTqwQcfVO3atVWtWrV8fyDJkzflekHh64YbbpAkj0cGT58+rfT0dPcr7xzwhWEYRR6jBaDsIFwBKLduueUWHT16VK+99ppatmypV155Re3atXOPF/IXb38Fv+eee/Tyyy/roYce0rvvvqstW7a474p5G1/jbZa4gmaOK+xC9O+uxIWezWZzB+L4+Hht375d6enpGj58uMdyo0aN0jPPPKN77rlHq1ev1pYtW7R161bVqFGjwPFF/nbgwAFJhQdpM85Bs++aFPRzdjqdpu7nUnw9X2vUqFFoAFuwYIG+/PJLLVq0SM8884y2bdumFStW5Ftuw4YNuummmxQWFlbkmm+44QZdffXV7tfzzz9f5HUv9vvvv+f7YwiAso9wBaBcCw8P19ChQ7Vy5UqdOHFCrVu39pjhrKALzfr16ystLS3fI1/fffeduz/vf10ul44dO+ax3JEjR4pc4++//67t27frscce05NPPqk777xTt912W747EFdK3jFc/OhaRkaGzpw54z5WM1x99dUaN26cPvjgA49Z5N555x3FxcVpzpw5uvvuu3XbbbcpJiZGZ86c8Vi/OAGwfv36+uGHH/KFs4t/hr5wOp1asWKFgoOD3TM+FsTXc9AXLpcr32Og33//vaS/ZjKU/t8doos/W2938opaW82aNRUcHKzDhw/n6/vuu+9ktVpVt27dIm3rUpo3b67ff//d6x3NEydOaOrUqerTp4/69Omjhx56SDfeeKMSExM9ljcMQ5s2bSp04hlv3nrrLY/Hk4cMGeLzcRw7dqzAyVgAlF2EKwDl1sXTmFepUkWNGzf2mF4873tvLr7Q7NWrl5xOpxYtWuTRPm/ePFksFvXs2VOSFBsbK0l68cUXPZZ74YUXilxn3l/wL/6L/fz584u8jcvRq1cvr/ubO3euJBX7AvRSRo0apeDgYM2cOdPdZrPZ8h3/Cy+8kO9uSkE/L2969eql9PR0j9nnHA6HXnjhBVWpUkW33nqrT/U7nU6NHj1a3377rUaPHq3Q0NACl72cc9BXfz9nDcPQokWLFBAQoG7dukn6K1TabDbt3LnTY72Lz+Hi1Gaz2dSjRw+9//77Ho8fZmRkaMWKFYqJiSn0cyqO6OhoGYahffv25esbNWqUDMNw//5ZrVYtXbpUv/zyix5//HH3cnv37tWpU6eKfW7fdNNNHo8n+/oHkLNnz+ro0aM+zbYJoHRjKnYA5VZUVJQ6d+6s9u3bKzw8XJ9//rneeecdjwH/7du3lySNHj1asbGxstlsuu+++3THHXeoS5cu+s9//qPjx4+rTZs22rJli95//32NHTtW1157rXv9fv36af78+fr111/dU7Hn3S0oyl/+Q0NDdcstt2jWrFnKzc3VNddcoy1btuS7G3altGnTRnFxcXrppZd05swZ3Xrrrfrss8+0fPly9e3bV126dDF1fzVq1NDQoUP14osv6ttvv1WLFi30P//zP3rjjTcUFhamqKgopaSkaNu2bapRo4bHum3btpXNZtNzzz2ns2fPKigoSF27dlWtWrXy7efBBx/UsmXLFB8fr3379qlBgwZ655139Mknn2j+/PmFjpXKc/bsWb355puSpD/++ENHjhzRu+++q6NHj+q+++7z+LJZby7nHPRFpUqVtGnTJsXFxaljx47auHGj1q9fr8cff9w9KUZYWJj69++vF154QRaLRddee63WrVunU6dO5dtecWp7+umntXXrVsXExOjhhx+W3W7XsmXLlJ2drVmzZvl0PN7ExMSoRo0a2rZtm7p27epuX7t2rd5//33NmTPH4y7Z9ddfr4SEBC1atEjx8fG64YYbtH79ejVo0EBRUVGm1fXBBx/o66+/lvTXpCzffPONnn76aUnSP//5T49JeLZt2ybDMNSnTx/T9g+glPDLHIUAcAl50zXv3bvXa7+3abIvngb76aefNm688UajWrVqRuXKlY3mzZsbzzzzjJGTk+NexuFwGKNGjTJq1qxpWCwWj2mnz507Z4wbN86oXbu2ERAQYDRp0sSYPXu2x/TRhmEYWVlZRkJCghEeHm5UqVLF6Nu3r3H48GFDksfU6HnTqOdNif13P//8s3HnnXca1apVM8LCwoz+/fsbaWlpBU7nfvE2Cpoi/VLTiefJzc01nnzySaNhw4ZGQECAUbduXWPSpEnGhQsXirQfbwpb9ujRo4bNZnP/vH7//Xdj6NChxlVXXWVUqVLFiI2NNb777rt8P1PDMIyXX37ZaNSokWGz2TymFL94KnbDMIyMjAz3dgMDA41WrVp5TDVemFtvvdVj6v8qVaoYTZo0MQYNGmRs2bLF6zpmnoN5U6PPnj07334Kmoo9JCTEOHr0qNGjRw8jODjYiIiIMKZOnWo4nU6P9U+fPm3069fPCA4ONqpXr24MHz7cOHDgQL5tFvb7cfG5aRiG8cUXXxixsbFGlSpVjODgYKNLly7G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/no5nU6dOnVKN998c6HbAgCUTkxoAQAoFfr37y+bzabFixdLkpo0aaKtW7dq9+7d+vbbbzV8+HBlZGR4rNOgQQN9+umnOn78uH755Re5XK582x0/fry2b9+up556St9//72WL1+uRYsWeYznKsiwYcP07rvvau3ate47anm1paamatWqVTp69KgWLlyotWvXFrqtrl27av369Vq/fr2+++47jRgxwmNGw6ZNm2rgwIEaMmSI3n33XR07dkyfffaZZsyYofXr11+yVgCA/xGuAAClgt1u18iRIzVr1ixlZWVp8uTJateunWJjY9W5c2dFRkaqb9++HutMmDBBNptNUVFRqlmzplJTU/Ntt127dlq9erVWrVqlli1basqUKZo+fXqBk1n8Xb9+/RQUFKTg4GCPff/zn//UuHHjNHLkSLVt21a7d+92T5hRkH/961+Ki4vTkCFDdOutt6pRo0buu1Z5kpKSNGTIEI0fP17NmjVT3759tXfvXtWrV++StQIA/M9iXPwAOAAAAACg2LhzBQAAAAAmIFwBAAAAgAkIVwAAAABgAsIVAAAAAJiAcAUAAAAAJiBcAQAAAIAJCFcAAAAAYALCFQAAAACYgHAFAAAAACYgXAEAAACACQhXAAAAAGCC/w9cs3onxu6hWAAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 1000x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"simulated_ratio_distribution = simulate_ratio_distribution(0.02, 0.005, 0.008, 0.008)\n",
"plot_ratio_distribution(simulated_ratio_distribution, x_lims=(-1, 5))\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "autome",
"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.12.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment