{
"cells": [
{
"cell_type": "markdown",
"id": "6d87eac9",
"metadata": {},
"source": [
"[download source](./plot.ipynb)"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "007140c0-12d7-42d0-8b84-9275f7b96057",
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import matplotlib.ticker\n",
"import numpy as np\n",
"from scipy.stats import norm, lognorm\n",
"import math\n",
"import contextlib"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "11beb378-a796-42e4-b31e-d5f93dec5b70",
"metadata": {},
"outputs": [],
"source": [
"%config InlineBackend.figure_formats = ['svg']\n",
"matplotlib.rcParams['svg.hashsalt'] = '12345'"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "0caf2e2c-0bb1-418c-8b3d-a173c86653b1",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Median 60000.0\n",
"Top 1% 614428.4193787279\n",
"98923.27624200769 129671.84495370525\n",
"(array(98923.27624201), array(1.68147874e+10))\n",
"Norm top 1% 400585.0970730134\n"
]
}
],
"source": [
"# distribution chosen to be roughly similar to US household income:\n",
"# https://dqydj.com/average-median-top-household-income-percentiles/\n",
"ln_params = dict(loc=0, scale=60000, s=1)\n",
"print(\"Median\", lognorm.ppf(0.5, **ln_params))\n",
"print(\"Top 1%\", lognorm.ppf(0.99, **ln_params))\n",
"[mean, var] = lognorm.stats(**ln_params, moments='mv')\n",
"print(mean, math.sqrt(var))\n",
"n_params = dict(loc=mean, scale=np.sqrt(var))\n",
"print(norm.stats(**n_params, moments='mv'))\n",
"print(\"Norm top 1%\", norm.ppf(0.99, **n_params))"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "a00ac6f9-0a59-476f-a4c0-ff64b05e69a9",
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"\n",
"\n",
"\n"
],
"text/plain": [
"