Bayesian example for body height

This commit is contained in:
Jacob.Fritsche committed 2025-02-02 17:16:47 +00:00
1 parent d8285de5c7
commit 0ac7916fdd
1 file changed
+201
+201
View File
@@ -0,0 +1,201 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 12,
"id": "ad2d0815-9390-468e-bf1a-cfcac0411376",
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from scipy.stats import norm, skewnorm"
]
},
{
"cell_type": "markdown",
"id": "686ba9f8-33fe-49f1-820b-861b19e85412",
"metadata": {},
"source": [
"Random variables <br>\n",
"A = Mean height of people (our belief) <br>\n",
"B = Observed heights in the sample (our sample) <br>\n",
"Prior distrubtion P(A) represents the initial beliefs about the parameter before observing any data. <br>\n",
"This distribution reflects your initial belief about the heights of people before considering any new data. The negative skewness indicates that you believe there are more people shorter than 178 cm than taller"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "bbaac9a1-8c61-4889-b6f5-ab4fe3bafbc5",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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DR06VKeccop7e6NGjXTttddqyZIlysvL83jNrbfe6tEb06NHD5WUlGjr1q0nPVePHj20ePFiSeZn//PPP+vWW29Vw4YN3dsXL16sxMREnX766VV+T23btlWPHj3cj5OSktSqVStt2rTppK+LiYnR999/rwceeECSOSzwpptuUqNGjXTXXXepqKio1GsWLFigAQMG6IILLtDMmTPd12MZhqFPP/1UQ4YMkWEY2rdvn/tnwIABOnjwoFatWuX+XEpKSrRs2TL3Z9CjRw+Pz+vXX39Vbm6ux/tyuf322z0e9+jRw+O9fvzxx6pbt6769evnUUenTp0UFxenBQsWSDLbvCR9+eWXcjgcZX5GiYmJKigoqNHZKQEEP4ITgJAzefJkZWVlacGCBfr999/d1+QcLyIiQk2aNKnwWFu3blVaWpri4+M9truGXJ34R3jz5s2rWf0xrmtETjz38Z544gnl5ubqtNNO0xlnnKEHHnjA4/qcyvCm5rCwMI/gIkmnnXaaJNXKtNsue/fuVWFhoVq1alXquTZt2sjpdGr79u0e25s2berxuF69epJU6nqZE/Xo0UO7du3Shg0btGzZMtlsNnXr1s0jICxevFjnnXee1zMcnqw+V40V1SeZk4o899xz2rJli7Zs2aJ33nlHrVq10iuvvKInn3zSY98jR45o8ODB6tixoz766CNFRka6n9u7d69yc3P15ptvKikpyeNnxIgRkqQ9e/ZIks466yzFxsZ6fAY9evRQz5499eOPP+rIkSPu57p37+5RQ3R0dKlwfuJ7/eOPP3Tw4EElJyeXqiU/P99dR69evXTZZZdp3LhxatiwoS6++GJNnTrVIzDeeeedOu200zRw4EA1adJEN954Y5WuNwQQWrjGCUDI6dy5s3tWvfJERUVV64/e8sTExNTYsX799VdJUsuWLcvdp2fPntq4caNmzZqluXPn6u2339YLL7yg119/XTfffHOlzlOTNUsq95qbEycCqG3h4eFlbjdOmNTjRK4/+hctWqRNmzbprLPOUp06ddSjRw+99NJLys/P108//aSnn37akvpO1KxZM91444265JJLdMopp2jGjBl66qmn3M9HRUVp0KBBmjVrlubMmeNx413XtWx//etfNWzYsDKP77rWy263q0uXLlq0aJE2bNig3bt3q0ePHkpJSZHD4dD333+vxYsXq3Xr1qVCUnnv9XhOp1PJycmaMWNGmc+7jmmz2fTJJ5/oP//5j/7v//5P33zzjW688UZNmDBB//nPfxQXF6fk5GRlZ2frm2++0ddff62vv/5aU6dO1Q033KB33323wloAhCaCEwBUQ7NmzTRv3jwdOnTIo+dn7dq17udrQ0lJid5//33FxsaW+tfLine truncated
"text/plain": [
"<Figure size 1000x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Define the parameters for the prior distribution\n",
"mu_prior = 178\n",
"sigma_prior = 0.5\n",
"skewness_prior = 2.6\n",
"\n",
"# Create a range of x values\n",
"x = np.linspace(175, 185, 1000)\n",
"\n",
"# Calculate the prior distribution with skewness\n",
"prior = skewnorm.pdf(x, skewness_prior, mu_prior, sigma_prior)\n",
"\n",
"# Plot the prior distribution\n",
"plt.figure(figsize=(10, 6))\n",
"plt.plot(x, prior, label='Prior', color='blue')\n",
"plt.xlabel('Height (cm)')\n",
"plt.ylabel('Density')\n",
"plt.title('Prior Distribution with Skewness')\n",
"plt.legend()\n",
"plt.grid(True)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "26bf7387-13a4-46a0-a3e3-e9b959dd640d",
"metadata": {},
"source": [
"P(B|A) represents the probability of observing the data given a specific parameter value. <br>\n",
"The likelihood is combined with the prior distribution to update our beliefs and form the posterior distribution. <br>\n",
"The likelihood distribution shows how likely it is to observe the given data for different parameter values, the likelihood distribution represents the distribution of the observed data."
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "a9695aaf-44b0-48fe-a4a8-ab247ab781b0",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA04AAAIjCAYAAAA0vUuxAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAasNJREFUeJzt3Xd8lfX9/vHrnJNNckKATAgJqyggU6YDUQQBUVyl2ipQZ5WipraCWhBHab8VpLZW3IijxYkWkBIZoohFQcDBJiSMJICQTZKTnPv3R37nQEwgOclJ7nNOXs8+8ijnPvd4n3M+JrnyGbfFMAxDAAAAAIAzsppdAAAAAAD4OoITAAAAANSB4AQAAAAAdSA4AQAAAEAdCE4AAAAAUAeCEwAAAADUgeAEAAAAAHUgOAEAAABAHQhOAAAAAFAHghMA+Jn9+/fLYrFo4cKF7m2TJ09WZGRkk53/0UcflcViqbafxWLR1KlTvXJNb1i7dq0sFovWrl3r9XPX9vqbyiWXXKJLLrnE/dj1ut59991muf7kyZOVmpraLNcCAH9CcAIAH7Jw4UJZLBZ9/fXXZpcSsFzvsesrLCxMSUlJGj16tJ555hkVFhZ65TqHDx/Wo48+qi1btnjlfN7ky7UBgK8iOAGAn0lJSdHJkyd18803N9s1H3nkEZ08ebLZrtccHnvsMb3++ut67rnn9Nvf/laSdN999+m8887Ttm3bqu3bkNd/+PBhzZ492+NwsnLlSq1cudKjYzx1ttpefPFF7dy5s0mvDwD+KMjsAgAAnnH1kjSnoKAgBQUF1o+MMWPG6Pzzz3c/njFjhlavXq0rr7xSV111lbZv367w8HBJzfP6S0pKFBERoZCQkCa9Tl2Cg4NNvT4A+Cp6nADAz9Q2B6k2W7ZsUWxsrC655BIVFRVJkg4dOqRf//rXio+PV2hoqHr27KlXXnmlzmuebY7PkiVL1KtXL/f5VqxYUWOfb775RmPGjJHdbldkZKQuu+wyffnllzX227dvn2644Qa1adNGERERGjJkiJYtW1Zjv4MHD2rChAlq1aqV4uLidP/996usrKzO11GXSy+9VH/84x+VmZmpN954w729ttefnp6uCy+8UK1bt1ZkZKS6d++uhx56SFLVvKSBAwdKkqZMmeIeFuj6zC655BL16tVLmzZt0sUXX6yIiAj3sT+d4+RSWVmphx56SAkJCWrVqpWuuuoqHThwoNo+qampmjx5co1jTz9nXbXVNsepuLhYv/vd75ScnKzQ0FB1795dTz31lAzDqLafa95bfdoEAPibwPrzIQBAkvTVV19p9OjROv/88/Xhhx8qPDxcubm5GjJkiPuX29jYWH388ce69dZbVVBQoPvuu8/j63z++ed6//33dffddysqKkrPPPOMrrvuOmVlZalt27aSpO+//14XXXSR7Ha7/vCHPyg4OFjPP/+8LrnkEn366acaPHiwJCk3N1fDhg1TSUmJpk2bprZt2+q1117TVVddpXfffVfXXHONJOnkyZO67LLLlJWVpWnTpikpKUmvv/66Vq9e7ZX37uabb9ZDDz2klStX6vbbb691n++//15XXnmlevfurccee0yhoaHas2eP1q9fL0k699xz9dhjj2nmzJm64447dNFFF0mShg0b5j7Hjz/+qDFjxugXv/iFfvWrXyk+Pv6sdT355JOyWCx68MEHdeTIEc2fP18jR47Uli1b3D1j9VGf2k5nGIauuuoqrVmzRrfeeqv69u2r//73v/r973+vQ4cO6emnn662f33aBAD4JQMA4DNeffVVQ5Lx1VdfnXGfjIwMQ5Lx6quvurdNmjTJaNWqlWEYhvH5558bdrvdGDdunFFaWure59ZbbzUSExONY8eOVTvfL37xCyM6OtooKSk54/lnzZpl/PRHhiQjJCTE2LNnj3vb1q1bDUnG3//+d/e2CRMmGCEhIcbevXvd2w4fPmxERUUZF198sXvbfffdZ0gyPvvsM/e2wsJCo1OnTkZqaqpRWVlpGIZhzJ8/35BkvP322+79iouLja5duxqSjDVr1pzxvTOM+r3H0dHRRr9+/c74+p9++mlDknH06NEznuOrr76q8T66DB8+3JBkLFiwoNbnhg8f7n68Zs0aQ5LRvn17o6CgwL397bffNiQZf/vb39zbUlJSjEmTJtV5zrPVNmnSJCMlJcX9eMmSJYYk44knnqi23/XXX29YLJZqn3992wQA+COG6gFAAFmzZo1Gjx6tyy67TO+//75CQ0MlVfUavPfeexo/frwMw9CxY8fcX6NHj1Z+fr42b97s8fVGjhypLl26uB/37t1bdrtd+/btk1Q1vGzlypWaMGGCOnfu7N4vMTFRN910kz7//HMVFBRIkpYvX65BgwbpwgsvdO8XGRmpO+64Q/v379cPP/zg3i8xMVHXX3+9e7+IiAjdcccdHtd/JpGRkWddXa9169aSpA8//FBOp7NB1wgNDdWUKVPqvf8tt9yiqKgo9+Prr79eiYmJWr58eYOuX1/Lly+XzWbTtGnTqm3/3e9+J8Mw9PHHH1fbXlebAAB/RXACgABRWlqqcePGqV+/fnr77berLTJw9OhR5eXl6YUXXlBsbGy1L9cv70eOHPH4mh07dqyxLSYmRidOnHBft6SkRN27d6+x37nnniun0+mep5OZmXnG/VzPu/6/a9euNeYc1XZsQxUVFVULKT81ceJEXXDBBbrtttsUHx+vX/ziF3r77bc9ClHt27f3aCGIbt26VXtssVjUtWtX7d+/v97naIjMzEwlJSXVeD9++rm41NUmAMBfMccJAAJEaGioxo4dqw8//FArVqzQlVde6X7O9Qv9r371K02aNKnW43v37u3xNW02W63bjZ8sGuBPDh48qPz8fHXt2vWM+4SHh2vdunVas2aNli1bphUrVmjx4sW69NJLtXLlyjO+Lz89h7edaQGPysrKetXkDYHYJgBAIjgBQMCwWCx68803dfXVV+uGG27Qxx9/7F5JLTY2VlFRUaqsrNTIkSObrabY2FhFRETUel+gHTt2yGq1Kjk5WVLV/anOtJ/redf/f/fddzIMo1pQ8Na9h15//XVJ0ujRo8+6n9Vq1WWXXabLLrtM8+bN05/+9Cc9/PDDWrNmjUaOHHnGENNQu3fvrvbYMAzt2bOnWuCNiYlRXl5ejWMzMzOrDZX0pLaUlBR98sknKiwsrNbr9NPPBQACHUP1ACCAhISE6P3339fAgQM1fvx4bdy4UVJVL8B1112n9957T999912N444ePdok9dhsNo0aNUoffvhhtSFlubm5euutt3ThhRfKbrdLksaOHauNGzdqw4YN7v2Ki4v1wgsvKDU1VT169HDvd/jwYb377rvu/UpKSvTCCy80ut7Vq1fr8ccfV6dOnfTLX/7yjPsdP368xra+fftKkntZ9FatWklSrUGmIRYtWlRt3tW7776r7OxsjRkzxr2tS5cu+vLLL1VeXu7etnTp0hrLlntS29ixY1VZWal//OMf1bY//fTTslgs1a4PAIGMHicA8EGvvPJKrfe+uffee+s8Njw8XEuXLtWll16qMWPG6NNPP1WvXr305z//WWvWrNHgwYN1++23q0ePHjp+/Lg2b96sTz75pNYw4A1PPPGE+55Hd999t4KCgvT888+rrKxM//d//+feb/r06frXv/6lMWPGaNq0aWrTpo1ee+01ZWRk6L333pPVWvW3vttvv13/+Mc/dMstt2jTpk1KTEzU66+/roiICI/q+vjjj7Vjxw5VVFQoNzdXq1evVnp6ulJSUvTRRx+d9SbDjz32mNatW6dx48YpJSVFR44c0T//+U916NDBvbhFly5d1Lp1ay1YsEBRUVFq1aqVBg8erE6dOjXgXZTatGmjCy+8UFOmTFFubq7mz5+vrl27Vlsy/bbbbtO7776rK664Qj//+c+1d+9evfHGG9UWa/C0tvHjx2vEiBF6+OGHtX//fvXp00crV67Uhx9+qPvuu6/GuQEgYJm4oh8A4CdcS2Wf6evAgQN1LkfucuzYMaNHjx5GQkKCsXv3bsMwDCM3N9e45557jOTkZCM4ONhISEgwLrvsMuOFF15wH+fJcuT33HNPjddQ25LYmzdvNkaPHm1ERkYaERERxogRI4wvvviixrF79+41rr/+eqN169ZGWFiYMWjQIGPp0qU19svMzDSuuuoqIyIiwmjXrp1x7733GitWrPBoOXLXV0hIiJGQkGBcfvnlxt/+9rdqS36f6fWvWrXKuPrqq42kpCQjJCTESEpKMm688UZj165d1Y778MMPjR49ehhBQUHV3tPhw4cbPXv2rLW+My1H/q9//cuYMWOGERcXZ4SHhxvjxo0zMjMzaxw/d+5co3379kZoaKhxwQUXGF9//XWNc56ttp8uR24YVcvC33///UZSUpIRHBxsdOvWzfjrX/9qOJ3Oavt50iYAwN9YDIPZmgAAAABwNsxxAgAAAIA6EJwAAAAAoA4EJwAAAACoA8EJAAAAAOpAcAIAAACAOhCcAAAAAKAOLe4GuE6nU4cPH1ZUVJQsFovZ5QAAAAAwiWEYKiwsVFJSkvtG62fS4oLT4cOHlZycbHYZAAAAAHzEgQMH1KFDh7Pu0+KCU1RUlKSqN8dut5tcDc7E4XBo5cqVGjVqlIKDg80uB36ANgNP0WbgKdoMPEWb8X0FBQVKTk52Z4SzaXHByTU8z263E5x8mMPhUEREhOx2O99oUC+0GXiKNgNP0WbgKdqM/6jPFB4WhwAAAACAOhCcAAAAAKAOBCcAAAAAqEOLm+MEAAAA1MYwDFVUVKiystIr53M4HAoKClJpaanXzgnPBQcHy2azNfo8BCcAAAC0eOXl5crOzlZJSYnXzmkYhhISEnTgwAHuH2oii8WiDh06KDIyslHnITgBAACgRXM6ncrIyJDNZlNSUpJCQkK8EnScTqeKiooUGRlZ581V0TQMw9DRo0d18OBBdevLine truncated
"text/plain": [
"<Figure size 1000x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Define the parameters for the likelihood distribution\n",
"mu_likelihood = 180\n",
"sigma_likelihood = 0.4\n",
"\n",
"# Create a range of x values\n",
"x = np.linspace(175, 185, 1000)\n",
"\n",
"# Calculate the likelihood distribution\n",
"likelihood = norm.pdf(x, mu_likelihood, sigma_likelihood)\n",
"\n",
"# Plot the likelihood distribution\n",
"plt.figure(figsize=(10, 6))\n",
"plt.plot(x, likelihood, label='Likelihood', color='green')\n",
"plt.xlabel('Height (cm)')\n",
"plt.ylabel('Density')\n",
"plt.title('Likelihood Distribution')\n",
"plt.legend()\n",
"plt.grid(True)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "ab435d49-644e-4028-a2ba-00da4ad90d51",
"metadata": {},
"source": [
"P(A|B) represents our updated beliefs about the parameter after considering the new data. It is the result of combining the prior distribution and the likelihood distribution. <br>\n",
"The posterior distribution is obtained by combining the prior distribution (with a mean of 178 cm, a standard deviation of 0.5 cm, and a skewness of -0.6) and the likelihood distribution (with a mean of 180 cm and a standard deviation of 0.4 cm). The posterior distribution reflects the updated estimate of the parameter (mean height) after taking into account both the initial beliefs and the new data. <br>\n",
"It is a more accurate estimate of the mean height of people, taking into account both the prior knowledge and the observed data"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "df650039-05dd-4c63-ade9-d119114c22de",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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 truncated
"text/plain": [
"<Figure size 1000x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Define the parameters for the prior distribution\n",
"mu_prior = 178\n",
"sigma_prior = 0.5\n",
"skewness_prior = -0.6\n",
"\n",
"# Define the parameters for the likelihood distribution\n",
"mu_likelihood = 180\n",
"sigma_likelihood = 0.4\n",
"\n",
"# Create a range of x values\n",
"x = np.linspace(175, 185, 1000)\n",
"\n",
"# Calculate the prior distribution with skewness\n",
"prior = skewnorm.pdf(x, skewness_prior, mu_prior, sigma_prior)\n",
"\n",
"# Calculate the likelihood distribution\n",
"likelihood = norm.pdf(x, mu_likelihood, sigma_likelihood)\n",
"\n",
"# Calculate the posterior distribution using Bayes' theorem\n",
"posterior = prior * likelihood\n",
"posterior /= np.trapezoid(posterior, x) # Normalize the posterior\n",
"\n",
"# Plot the distributions\n",
"plt.figure(figsize=(10, 6))\n",
"plt.plot(x, prior, label='Prior', color='blue')\n",
"plt.plot(x, likelihood, label='Likelihood', color='green')\n",
"plt.plot(x, posterior, label='Posterior', color='red')\n",
"plt.xlabel('Height (cm)')\n",
"plt.ylabel('Density')\n",
"plt.title('Bayesian Inference: Prior, Likelihood, and Posterior Distributions')\n",
"plt.legend()\n",
"plt.grid(True)\n",
"plt.show()"
]
}
],
"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.12"
}
},
"nbformat": 4,
"nbformat_minor": 5
}