{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Pnorm and qnorm Tutorial" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Motivation for Normal Functions\n", "\n", "Distributions serve as indispensable tools for modeling existing data, enabling us to handle uncertainty, quantify variability, and make inferential statements. One of the most prevalent distributions is the Normal Distribution, characterized by its mean \\(μ > 0\\) and standard deviation \\(σ > 0\\). This distribution is frequently employed to model real-world phenomena characterized by data clustering around a central value, proving particularly valuable in describing the distribution of diverse variables such as heights, weights, test scores, and errors in measurements. \n", "\n", "To visualize these distributions, Probability Density Function (PDF) and Cumulative Distribution Function (CDF) are commonly employed. The PDF represents the probability distribution of a continuous random variable and for the normal distribution the PDF is bell-shaped. The CDF, derived from the integral of the PDF, provides the probability that a random variable is less than or equal to a specified value.\n", "\n", "The function pnorm and qnorm yield the cumulative probability for a specified quantile and vice versa. Additionally, these functions generate both the Probability Density Function (PDF) and Cumulative Distribution Function (CDF), providing a visual representation of the cumulative probability associated with a particular quantile. The CDF graph plots the cumulative probability against the specific quantile, while the PDF graph illustrates the cumulative probability up to that quantile through the area under the curve." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Usage of pnorm and qnorm\n", "\n", "Here we will demonstrate how to use `pnorm` and `qnorm` to answer simple statistical questions, via a dataset. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, let us take a look at our Palmer penguins dataset! The Palmer penguins dataset by Allison Horst, Alison Hill, and Kristen Gorman was made publicly available as an R package. We shall use the dataset to conduct exploratory data analysis and utilize our developed functions. " ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
speciesislandbill_length_mmbill_depth_mmflipper_length_mmbody_mass_g
0AdelieTorgersen39.118.7181.03750.0
1AdelieTorgersen39.517.4186.03800.0
2AdelieTorgersen40.318.0195.03250.0
3AdelieTorgersenNaNNaNNaNNaN
4AdelieTorgersen36.719.3193.03450.0
\n", "
" ], "text/plain": [ " species island bill_length_mm bill_depth_mm flipper_length_mm \\\n", "0 Adelie Torgersen 39.1 18.7 181.0 \n", "1 Adelie Torgersen 39.5 17.4 186.0 \n", "2 Adelie Torgersen 40.3 18.0 195.0 \n", "3 Adelie Torgersen NaN NaN NaN \n", "4 Adelie Torgersen 36.7 19.3 193.0 \n", "\n", " body_mass_g \n", "0 3750.0 \n", "1 3800.0 \n", "2 3250.0 \n", "3 NaN \n", "4 3450.0 " ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "from palmerpenguins import load_penguins\n", "\n", "penguins = load_penguins()\n", "penguins.iloc[:, :-2].head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us say that we want to answer 2 questions:\n", "1. What is the proportion of Adelie penguins that have flipper length longer than 200 mm?\n", "2. What is the flipper length above which could be considered in top 5 percentile for Adelie penguins? \n", "\n", "Now, let us look at the distribution of flipper lengths first for Adelie's penguins first. We can see that it closely resembles normal distribution. " ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "There are 152 Adelie penguins in our sample\n" ] }, { "data": { "image/png": "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XVI5L0oX/vjjD/j7++Py5csqr8arK3FxcXjrrbeQlpYGV1fXui6n2jgHiIjqrcePHyssl5WV4euvv4atrS28vb3rqCoyRM8+l1JSUrBr1y6VP6GiKz179kS/fv3w+eef19oxq2PRokWIiooyqPADcA4QEdVjH3zwAR4/fgw/Pz8UFxdj27ZtOHHiBBYuXKiTr3mg+qt58+aIiIhA8+bNcf36daxatQpmZmZqv2pCV1RNvK5rJ0+erOsSNMIARET1Vt++fbFkyRL8/vvvKCoqQsuWLfH1118rfOsxUXX0798fP/30E7KysmBubg4/Pz8sXLhQrz6KoprhHCAiIiKSHM4BIiIiIslhACIiIiLJ4RwgFcrLy3H79m3Y2NgY1A+7ERERSZkQAg8fPoSbm1uVPzLMAKTC7du31X4zLxEREem3GzduoEmTJpW2YQBSoeInDW7cuAFbW9s6roaIiIiqIz8/H02bNq3WTxMxAKlQ8bGXra0tAxAREZGBqc70FU6CJiIiIslhACIiIiLJYQAiIiIiyWEAIiIiIslhACIiIiLJYQAiIiIiyWEAIiIiIslhACIiIiLJYQAiIiIiyWEAIiIiIslhACIiIiLJYQAiIiIiyWEAIiIiIslhACIiIiLJManrAoiIVMnIyEBubq5O+nZ0dIS7u7tO+iYiw8AARER6JyMjA61be6Go6JFO+rewsEJychJDEJGEMQARkd7Jzc39b/jZCMBLy70noagoFLm5uQxARBLGAEREeswLgHddF0FE9RAnQRMREZHkMAARERGR5DAAERERkeQwABEREZHkMAARERGR5DAAERERkeQwABEREZHkMAARERGR5DAAERERkeQwABEREZHkMAARERGR5DAAERERkeQwABEREZHkMAARERGR5DAAERERkeQwABEREZHkMAARERGR5DAAERERkeQwABEREZHkMAARERGR5NRpADp69CgGDRoENzc3yGQyxMXFKWyXyWQqb4sXL1bb55w5c5Tat2nTRscjISIiIkNSpwGosLAQnTp1wsqVK1Vuz8zMVLitXbsWMpkMr7/+eqX9tmvXTmG/Y8eO6aJ8IiIiMlAmdXnw4OBgBAcHq93u4uKisLx9+3b06dMHzZs3r7RfExMTpX2JiIiIKhjMHKDs7Gzs3LkTkZGRVbZNSUmBm5sbmjdvjlGjRiEjI6MWKiQi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oaGhWi2GiIiIqDbUKACtW7dOV3UQERER1ZrnmgRNREREZIgYgIiIiEhyGICIiIhIcvQ+AHl6esovv3/6NmHCBJXtY2NjldpaWFjUctVERESkzzT6MdTadPr0aZSVlcmXL168iFdeeQVvvPGG2n1sbW2RnJwsX+Z3FREREdHT9D4AOTk5KSx/9tlnaNGiBXr37q12H5lMBhcXF12XRkRERAZK7z8Ce1pJSQk2btyIt99+u9KzOgUFBfDw8EDTpk0xePBgXLp0qRarJCIiIn1nUAEoLi4OeXl5iIiIUNumdevWWLt2LbZv346NGzeivLwc3bp1w82bN9XuU1xcjPz8fIUbERER1V8GFYC+//57BAcHw83NTW0bPz8/hIWFoXPnzujduze2bdsGJycnrFmzRu0+MTExsLOzk9+aNm2qi/KJiIhITxhMALp+/ToOHDiAd955p0b7mZqaokuXLkhNTVXbJjo6Gg8ePJDfbty48bzlEhERkR4zmAC0bt06ODs7Y+DAgTXar6ysDBcuXICrq6vaNubm5rC1tVW4ERERUf1lEAGovLwc69atQ3h4OExMFC9cCwsLQ3R0tHx53rx52LdvH65evYpz584hNDQU169fr/GZIyIiIqq/9P4yeAA4cOAAMjIy8Pbbbytty8jIgJHR/3Lc/fv3MXbsWGRlZcHBwQE+Pj44ceIE2rZtW5slExERkR4ziADUr18/CCFUbjt8+LDC8rJly7Bs2bJaqIqIiIgMlUF8BEZERESkTQxAREREJDkMQERERCQ5DEBEREQkOQxAREREJDkMQERERCQ5DEBEREQkOQxAREREJDkMQERERCQ5DEBEREQkOQxAREREJDkMQERERCQ5DEBEREQkOQxAREREJDkMQERERCQ5DEBEREQkOQxAREREJDkMQERERCQ5DEBEREQkOQxAREREJDkMQERERCQ5JnVdABER1V9JSUk66dfR0RHu7u466ZukgQGIiIh0IBOAEUJDQ3XSu4WFFZKTkxiCSGMMQEREpAN5AMoBbATgpeW+k1BUFIrc3FwGINIYAxAREemQFwDvui6CSAknQRMREZHkMAARERGR5DAAERERkeQwABEREZHkMAARERGR5DAAERERkeQwABEREZHkMAARERGR5DAAERERkeQwABEREZHkMAARERGR5Oh1AJozZw5kMpnCrU2bNpXu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JyMjIwN+fn61Wu/zqM5YVUlMTAQAuLq66rI8nbGzs4OTkxNSUlJw5swZDB48GED9eVyfpW68qujrYyuEQFRUFH777TccOnQIzZo1U9hencfOz88PFy5cUPhjuX//ftja2qJt27a1M5Bq0MZYVUlMTISDg4NenY2vaqzV4efnh7y8PJw9e1a+7tChQygvL5cHeq3S+rRqqnMPHz4UCQkJIiEhQQAQS5cuFQkJCeL69evyNg8ePBBWVlZi1apVSvufOHFCLFu2TCQmJoq0tDSxceNG4eTkJMLCwmpzGNVS1Vh79+4t2rVrJ+Lj48XVq1fFunXrhIWFhfjmm2/kfbz33nvC3d1dHDp0SJw5c0b4+fkJPz+/uhqSWs871tTUVDFv3jxx5swZce3aNbF9+3bRvHlz0atXr7oclkpVjXXLli0iPj5epKWlibi4OOHh4SGGDh2q0IehPK5CPP94DemxHT9+vLCzsxOHDx8WmZmZ8tujR4/kbap67J48eSLat28v+vXrJxITE8WePXuEk5OTiI6OroshqaWNse7YsUN899134sKFCyIlJUV88803wsrKSsyaNasuhqRWdcaamZkpEhISxHfffScAiKNHj4qEhARx9+5deZv+/fuLLl26iD///FMcO3ZMtGrVSowcOVInNTMA1UMVlxg+ewsPD5e3WbNmjbC0tBR5eXlK+589e1b4+voKOzs7YWFhIby8vMTChQtFUVFRLY6ieqoaa2ZmpoiIiBBubm7CwsJCtG7dWixZskSUl5fL+3j8+LF4//33hYODg7CyshJDhgwRmZmZdTQi9Z53rBkZGaJXr16iYcOGwtzcXLRs2VJMnz5dPHjwoA5HpVpVY/3yyy9FkyZNhKmpqXB3dxeffvqp0uXPhvK4CvH84zWkx1bVOAGIdevWydtU57FLT08XwcHBwtLSUjg6OoqpU6eK0tLSWh5N5bQx1t27d4vOnTuLBg0aCGtra9GpUyexevVqUVZWVgcjUq86Y509e3aVbe7evStGjhwpGjRoIGxtbcWYMWPEw4cPdVKz7L+FExEREUkG5wARERGR5DAAERERkeQwABEREZHkMAARERGR5DAAERERkeQwABEREZHkMAARERGR5DAAEUmMv78/Jk+eLF/29PTE8uXL66weQzZnzhx07ty5RvvExsYq/fo3EdU+BiCieiYiIgIymUzp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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "adelie_penguins = penguins[penguins['species']=='Adelie'].copy()\n", "print(f\"There are {adelie_penguins.shape[0]} Adelie penguins in our sample\")\n", "\n", "# Create a simple histogram to visualize the distribution\n", "plt.hist(adelie_penguins['flipper_length_mm'], bins=20, color='blue', edgecolor='black')\n", "plt.title(\"Distribution of Adelie Penguins' Flipper Length (mm)\")\n", "plt.xlabel('Flipper Length in mm')\n", "plt.ylabel('Frequency')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The distribution above closely resembles normal distribution. Hence, the self-developed `pnorm` and `qnorm` functions can be used to answer these statistical questions." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " Z-score Cumulative probability\n", "0 0.771678 0.779848\n" ] }, { "data": { "text/html": [ "\n", "\n", "
\n", "" ], "text/plain": [ "alt.HConcatChart(...)" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from mathdistops import pnorm\n", "df, fig = pnorm(195, mean=adelie_penguins['flipper_length_mm'].mean(),\n", " std_dev=adelie_penguins['flipper_length_mm'].std())\n", "print(df)\n", "fig" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Question 1: What is the proportion of Adelie penguins that have flipper length longer than 195 mm?\n", "\n", "Answer: The proportion would be `1-0.78 = 0.22`.\n", "\n", "The two charts (PDF/ CDF) helps to visualize our understanding. The quantile (X) at 195 is shown as a vertical dotted line on each chart. To the right, the CDF chart shows that the corresponding point where the vertical line intersects with the cumulative distribution curve has a cumulative probability value of 0.78." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " Quantile\n", "0 200.710093\n" ] }, { "data": { "text/html": [ "\n", "\n", "
\n", "" ], "text/plain": [ "alt.HConcatChart(...)" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from mathdistops import qnorm\n", "df, fig = qnorm(0.95, mean=adelie_penguins['flipper_length_mm'].mean(),\n", " std_dev=adelie_penguins['flipper_length_mm'].std())\n", "print(df)\n", "fig" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Question 2: What is the flipper length above which could be considered in top 5 percentile for Adelie penguins? \n", "\n", "Answer: The quantile value for 95-percentile (1-5%) is calculated to be 200.7 mm. Thus, 200.7mm is the minimum flipper length that would place an Adelie penguin in the top 5 percentile. The percentile is shown as the horizontal dotted line on the right chart. The CDF chart shows that the corresponding point where the horizontal line intersects with the cumulative distribution curve has a quantile value of 200.7." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The above example has demonstrated how the self-defined functions can be used to calculate the answers for statistical questions while also visualize the answers simulteneously." ] } ], "metadata": { "kernelspec": { "display_name": "Python [conda env:mathdistops]", "language": "python", "name": "conda-env-mathdistops-py" }, "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.9.18" } }, "nbformat": 4, "nbformat_minor": 4 }