Created
November 15, 2021 16:23
-
-
Save gaulinmp/915f04f79a965911a68f729f050e35c5 to your computer and use it in GitHub Desktop.
Normal dist question
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# Imports\n", | |
"import numpy as np\n", | |
"from scipy.stats import norm\n", | |
"import pandas as pd\n", | |
"from matplotlib import pyplot as plt" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# Set up constants\n", | |
"MEAN = 1000\n", | |
"VARIANCE = 2500\n", | |
"STD_DEV = np.sqrt(VARIANCE)\n", | |
"\n", | |
"TOLERANCE = .1" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# Solve Analytically\n", | |
"\n", | |
"The question asks what portion of resistors from a normal process: $\\Phi(1000, 2500)$ will lie within 10% of 1,000, or between 900 and 1,100.\n", | |
"Because the distribution does not have skewness and is symmetrical, this is the same as asking how many resistors would fall below 900, then multiplying by 2.\n", | |
"\n", | |
"Note: The variance is 2,500, meaning the standard deviation is 50, so 10% tolerance is outside 2 stdev. So knowing from significance testing that 95% is about 1.96 stdev, we can guess the answer will be about 5%." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Probability of a resistor being below 900 ohms: 0.023\n", | |
"Probability of a resistor being below 900 ohms OR greater than 1,100 ohms = *2: 0.046\n" | |
] | |
} | |
], | |
"source": [ | |
"# CDF is cumulative density, i.e. 'area to the left of X', which is what we want.\n", | |
"prob_below_900 = norm.cdf(MEAN - (TOLERANCE * MEAN), loc=MEAN, scale=STD_DEV)\n", | |
"\n", | |
"print(f\"Probability of a resistor being below 900 ohms: {prob_below_900:.3f}\")\n", | |
"print(f\"Probability of a resistor being below 900 ohms OR greater than 1,100 ohms = *2: {prob_below_900*2:.3f}\")" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# Solve empirically\n", | |
"\n", | |
"We can also simulate a bunch of these resistors, then just add up how many fail.\n", | |
"I prefer this method because I'm bad at math." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<div>\n", | |
"<style scoped>\n", | |
" .dataframe tbody tr th:only-of-type {\n", | |
" vertical-align: middle;\n", | |
" }\n", | |
"\n", | |
" .dataframe tbody tr th {\n", | |
" vertical-align: top;\n", | |
" }\n", | |
"\n", | |
" .dataframe thead th {\n", | |
" text-align: right;\n", | |
" }\n", | |
"</style>\n", | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: right;\">\n", | |
" <th></th>\n", | |
" <th>ohms</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <th>0</th>\n", | |
" <td>981.348547</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>\n", | |
"</div>" | |
], | |
"text/plain": [ | |
" ohms\n", | |
"0 981.348547" | |
] | |
}, | |
"execution_count": 4, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"simulated_resistors = pd.DataFrame(norm.rvs(loc=MEAN, scale=STD_DEV, size=100_000), columns=['ohms'])\n", | |
"simulated_resistors.head(1)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"simulated_resistors.ohms.hist(bins=20)\n", | |
"# Plot our bounds\n", | |
"plt.axvline((1 - TOLERANCE) * MEAN, color='black')\n", | |
"plt.axvline((1 + TOLERANCE) * MEAN, color='black')\n", | |
"plt.xlabel('Ohms')\n", | |
"plt.ylabel(\"Count\")\n", | |
"_ = plt.title(\"Histogram of Ohms for simulated resistors\")" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Now we can just count up what portion of the resistors fall outside the tollerance:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Number out of tolerance: 4,634\n", | |
"Portion out of tolerance: 0.046\n" | |
] | |
} | |
], | |
"source": [ | |
"# outside tolerance is just NOT inside tolerance :)\n", | |
"num_outside_tolerance = len(simulated_resistors[~simulated_resistors.ohms.between((1 - TOLERANCE) * MEAN, (1 + TOLERANCE) * MEAN)])\n", | |
"\n", | |
"print(f\"Number out of tolerance: {num_outside_tolerance:,d}\")\n", | |
"print(f\"Portion out of tolerance: {num_outside_tolerance / len(simulated_resistors):.3f}\")" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Same answer! Go simulations.\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [] | |
} | |
], | |
"metadata": { | |
"interpreter": { | |
"hash": "22b1d2e947589d08d1a8a0ceb6394177e0f3285f1d9bca1e991c833e07e20449" | |
}, | |
"kernelspec": { | |
"display_name": "Python 3.8.10 64-bit ('notebooks': conda)", | |
"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.8.10" | |
}, | |
"orig_nbformat": 4 | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment