2025-01-17 02:33:02 -05:00
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Learning goals\n",
"\n",
"Understand the following:\n",
"\n",
"- Probability distribution\n",
"- Probability density function (PDF)\n",
"- Gaussian distribution\n",
"- Histogram\n",
"- Mean\n",
"- Standard deviation\n",
"- Variance\n",
"- Mode\n",
"\n",
"We will discuss these as we work through this example"
]
},
{
"cell_type": "code",
2025-01-24 02:16:44 -05:00
"execution_count": 1,
2025-01-17 02:33:02 -05:00
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import scipy.stats as stats"
]
},
{
"cell_type": "code",
2025-01-24 02:16:44 -05:00
"execution_count": 17,
2025-01-17 02:33:02 -05:00
"metadata": {},
"outputs": [],
"source": [
"sample_size = 30\n",
"\n",
"true_mean = 10.0\n",
"true_variance = 4.0\n",
"true_std = np.sqrt(true_variance)\n",
"\n",
"rng = np.random.RandomState(123)\n",
"fish_sample = rng.normal(loc=true_mean, scale=true_std, size=sample_size)"
]
},
{
"cell_type": "code",
2025-01-24 02:16:44 -05:00
"execution_count": 8,
2025-01-17 02:33:02 -05:00
"metadata": {},
2025-01-24 02:16:44 -05:00
"outputs": [
{
"data": {
"text/plain": [
"array([ 7.82873879, 11.99469089, 10.565957 , 6.98741057, 8.8427995 ,\n",
" 13.30287307, 5.14664151, 9.14217474, 12.53187252, 8.2665192 ,\n",
" 8.6422277 , 9.81058206, 12.98277925, 8.72219601, 9.11203608,\n",
" 9.13129745, 14.41186017, 14.37357218, 12.0081078 , 10.7723728 ,\n",
" 11.47473715, 12.98146406, 8.12833226, 12.35165809, 7.49223866,\n",
" 8.724497 , 11.81421039, 7.1426386 , 9.71986256, 8.27649021])"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
2025-01-17 02:33:02 -05:00
"source": [
"fish_sample"
]
},
{
"cell_type": "code",
2025-01-24 02:16:44 -05:00
"execution_count": 9,
2025-01-17 02:33:02 -05:00
"metadata": {},
2025-01-24 02:16:44 -05:00
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
2025-01-17 02:33:02 -05:00
"source": [
"x=plt.hist(fish_sample)\n",
"plt.xlabel(\"fish length (cm)\")\n",
"plt.ylabel(\"counts\");"
]
},
{
"cell_type": "code",
2025-01-24 02:16:44 -05:00
"execution_count": 10,
2025-01-17 02:33:02 -05:00
"metadata": {},
2025-01-24 02:16:44 -05:00
"outputs": [
{
"data": {
"text/plain": [
"(array([1., 1., 3., 7., 4., 2., 2., 5., 3., 2.]),\n",
" array([ 5.14664151, 6.07316338, 6.99968524, 7.92620711, 8.85272897,\n",
" 9.77925084, 10.7057727 , 11.63229457, 12.55881644, 13.4853383 ,\n",
" 14.41186017]),\n",
" <BarContainer object of 10 artists>)"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
2025-01-17 02:33:02 -05:00
"source": [
"x"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## What is the mean of the sample of fish lengths?"
]
},
{
"cell_type": "code",
2025-01-24 02:16:44 -05:00
"execution_count": 11,
2025-01-17 02:33:02 -05:00
"metadata": {},
2025-01-24 02:16:44 -05:00
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"10.089427941923741\n"
]
}
],
2025-01-17 02:33:02 -05:00
"source": [
"sample_mean = np.mean(fish_sample)\n",
"print(sample_mean)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## What is the [mode](https://en.wikipedia.org/wiki/Mode_(statistics)) of the sample of fish lengths? (\"[modus](https://de.wikipedia.org/wiki/Modus_(Statistik))\" in German.)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## What is the sample variance of fish lengths?\n",
"\n",
"We put the result in the variable `length_variance`. We use the `ddof=1` keyword argument to `np.var()` because we are estimating variance from a sample here."
]
},
{
"cell_type": "code",
2025-01-24 02:16:44 -05:00
"execution_count": 18,
2025-01-17 02:33:02 -05:00
"metadata": {},
2025-01-24 02:16:44 -05:00
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"5.637780974408914\n"
]
}
],
2025-01-17 02:33:02 -05:00
"source": [
"sample_variance = np.var(fish_sample, ddof=1)\n",
"print(sample_variance)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Probability Density Functions (PDFs)\n",
"\n",
"- for working with continuous variables (vs. probability mass functions for discrete variables)\n",
"- here, the area under the curve gives the probability (in contrast to probability mass functions where we have probabilities for every single value)\n",
"- the area under the whole curve is 1. In other words, some outcome must happen.\n",
"\n",
"## Normal Distribution (Gaussian Distribution)\n",
"\n",
"- unimodal and symmetric\n",
"- many algorithms in machine learning & statistics have normality assumptions\n",
"- two parameters: mean (center of the peak) and standard deviation (spread); $N(\\mu, \\sigma)$\n",
"- we can estimate parameters $\\mu$ and $\\sigma$ by the sample mean ($\\bar{x})$ and sample variance ($s^2$)\n",
"- univariate Normal distribution:\n",
"\n",
"$$N(\\mu, \\sigma) = f(x \\mid \\mu, \\sigma^2) = \\frac{1}{\\sqrt{2\\pi\\sigma^2}} \\; \\exp\\bigg(-\\frac{(x-\\mu)^2}{2\\sigma^2}\\bigg)$$\n",
"\n",
"- standard normal distribution with zero mean and unit variance, $N(0, 1)$:"
]
},
{
"cell_type": "code",
2025-01-24 02:16:44 -05:00
"execution_count": 19,
2025-01-17 02:33:02 -05:00
"metadata": {},
"outputs": [],
"source": [
"def univariate_gaussian_pdf(x, mean, variance):\n",
" return (1. / np.sqrt(2*np.pi*variance) * \n",
" np.exp(- ((x - mean)**2 / (2.*variance))))"
]
},
{
"cell_type": "code",
2025-01-24 02:16:44 -05:00
"execution_count": 20,
2025-01-17 02:33:02 -05:00
"metadata": {},
2025-01-24 02:16:44 -05:00
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
2025-01-17 02:33:02 -05:00
"source": [
"mean = 0\n",
"stddev = 1\n",
"x = np.arange(-5, 5, 0.01)\n",
"y = univariate_gaussian_pdf(x, mean, stddev**2)\n",
"plt.plot(x, y)\n",
"plt.xlabel('x')\n",
"plt.ylabel('Probability Density Function (PDF)')\n",
"plt.show()"
]
},
{
"cell_type": "code",
2025-01-24 02:16:44 -05:00
"execution_count": 21,
2025-01-17 02:33:02 -05:00
"metadata": {},
2025-01-24 02:16:44 -05:00
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
2025-01-17 02:33:02 -05:00
"source": [
"mean = 10\n",
"stddev = 2.0\n",
"x = np.arange(5, 15, 0.01)\n",
"y = univariate_gaussian_pdf(x, mean, stddev**2)\n",
"plt.plot(x, y)\n",
"plt.xlabel('fish length (cm)')\n",
"plt.ylabel('Probability Density Function (PDF)')\n",
"plt.show()"
]
},
{
"cell_type": "code",
2025-01-24 02:16:44 -05:00
"execution_count": 22,
2025-01-17 02:33:02 -05:00
"metadata": {},
2025-01-24 02:16:44 -05:00
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
2025-01-17 02:33:02 -05:00
"source": [
"plt.hist(fish_sample, density=True, label='samples')\n",
"\n",
"x = np.linspace(5.0, 15.0, 100)\n",
"y = univariate_gaussian_pdf(x, true_mean, true_variance)\n",
"plt.plot(x, y, lw=5, label='theoretical (mean=%.1f, variance=%.1f)'%(true_mean,true_variance))\n",
"\n",
"sample_mean = np.mean(fish_sample)\n",
"sample_variance = np.var(fish_sample, ddof=1) # for a sample variance, always use ddof=1. Here is one explanation why https://mortada.net/computing-sample-variance-why-divide-by-n-1.html\n",
"y2 = univariate_gaussian_pdf(x, sample_mean, sample_variance)\n",
"plt.plot(x, y2, label='empirical (mean=%.1f, variance=%.1f)'%(sample_mean,sample_variance))\n",
"\n",
"plt.xlabel(\"length (cm)\")\n",
"plt.ylabel(\"probability\");\n",
"plt.legend();\n",
"# plt.savefig('fish-gaussian.png');"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Discussion points\n",
"\n",
"Here are a few questions you should be able to answer:\n",
"\n",
" - what is plotted on the x axis?\n",
" - what is plotted on the y axis?\n",
" - what is the area under the curve from -∞ to ∞?\n",
" - according to our Guassian distribution, what is the most likely fish length?\n",
" - according to our histogram, what is the most likely fish length?"
]
}
],
"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.11.10"
}
},
"nbformat": 4,
"nbformat_minor": 4
}