Skip to content

Instantly share code, notes, and snippets.

@bstancil
Last active March 12, 2018 04:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bstancil/be3d6a76e8f3b620ee654030eea88f77 to your computer and use it in GitHub Desktop.
Save bstancil/be3d6a76e8f3b620ee654030eea88f77 to your computer and use it in GitHub Desktop.
Payments generated with probability distribution functions
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"## MODEL PARAMETERS\n",
"SAMPLE_SIZE = 20000 # Number of samples\n",
"EXPENSE_COUNT = 8 # Number of expenses you can sample from. Keep below 20.\n",
"MAX_INCLUDED = 8 # Number of expenses allowed choose from the sample.\n",
"DIST = 'gamma' # Distribution to use for generating random data."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"## Import various stuff\n",
"import itertools\n",
"\n",
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Generated 160000 random values...\n"
]
}
],
"source": [
"from scipy.stats import exponpow\n",
"from scipy.stats import recipinvgauss\n",
"from scipy.stats import gengamma\n",
"from scipy.stats import exponweib\n",
"from scipy.stats import beta\n",
"from scipy.stats import gamma\n",
"\n",
"vars_to_generate = SAMPLE_SIZE * EXPENSE_COUNT\n",
"\n",
"if DIST == 'exponpow':\n",
" b = 0.5\n",
" loc = 1021\n",
" scale = 14460\n",
" r = exponpow.rvs(b, size=vars_to_generate)\n",
"\n",
"elif DIST == 'recipinvgauss':\n",
" mu = 737550\n",
" loc = 1021\n",
" scale = 9320\n",
" r = recipinvgauss.rvs(mu, size=vars_to_generate)\n",
"\n",
"elif DIST == 'gengamma':\n",
" a = 1.16\n",
" c = 0.58\n",
" loc = 1021\n",
" scale = 4991\n",
" r = gengamma.rvs(a, c, size=vars_to_generate)\n",
"\n",
"elif DIST == 'exponweib':\n",
" a = 1.76\n",
" c = 0.47\n",
" loc = 1021\n",
" scale = 2782\n",
" r = exponweib.rvs(a, c, size=vars_to_generate)\n",
" \n",
"elif DIST == 'beta':\n",
" a = 0.59\n",
" b = 1015\n",
" loc = 1021\n",
" scale = 11907999\n",
" r = beta.rvs(a, b, size=vars_to_generate)\n",
"\n",
"elif DIST == 'gamma':\n",
" a = 0.59\n",
" loc = 1021\n",
" scale = 15099\n",
" r = gamma.rvs(a, size=vars_to_generate)\n",
"\n",
"r = (r * scale + loc)\n",
"print 'Generated %i random values...' % len(r)"
]
},
{
"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>0</th>\n",
" <th>1</th>\n",
" <th>2</th>\n",
" <th>3</th>\n",
" <th>4</th>\n",
" <th>5</th>\n",
" <th>6</th>\n",
" <th>7</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>4053.397884</td>\n",
" <td>2568.637747</td>\n",
" <td>10040.963082</td>\n",
" <td>5739.976795</td>\n",
" <td>9293.174484</td>\n",
" <td>1099.042888</td>\n",
" <td>2499.953565</td>\n",
" <td>10715.697627</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>4284.459083</td>\n",
" <td>24184.625920</td>\n",
" <td>10886.759148</td>\n",
" <td>4094.237658</td>\n",
" <td>19636.195263</td>\n",
" <td>10684.035708</td>\n",
" <td>11044.747328</td>\n",
" <td>1680.279604</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1082.280778</td>\n",
" <td>2814.822831</td>\n",
" <td>18863.122137</td>\n",
" <td>37539.052201</td>\n",
" <td>1937.318687</td>\n",
" <td>1101.377792</td>\n",
" <td>10387.269596</td>\n",
" <td>17978.688672</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>9116.731391</td>\n",
" <td>5967.763536</td>\n",
" <td>8914.177982</td>\n",
" <td>11857.717556</td>\n",
" <td>11911.752004</td>\n",
" <td>8480.724936</td>\n",
" <td>5092.228718</td>\n",
" <td>4644.603398</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2099.959374</td>\n",
" <td>4130.031960</td>\n",
" <td>5175.956147</td>\n",
" <td>1140.401332</td>\n",
" <td>4851.869009</td>\n",
" <td>27743.943191</td>\n",
" <td>19664.587000</td>\n",
" <td>1820.357459</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 0 1 2 3 4 \\\n",
"0 4053.397884 2568.637747 10040.963082 5739.976795 9293.174484 \n",
"1 4284.459083 24184.625920 10886.759148 4094.237658 19636.195263 \n",
"2 1082.280778 2814.822831 18863.122137 37539.052201 1937.318687 \n",
"3 9116.731391 5967.763536 8914.177982 11857.717556 11911.752004 \n",
"4 2099.959374 4130.031960 5175.956147 1140.401332 4851.869009 \n",
"\n",
" 5 6 7 \n",
"0 1099.042888 2499.953565 10715.697627 \n",
"1 10684.035708 11044.747328 1680.279604 \n",
"2 1101.377792 10387.269596 17978.688672 \n",
"3 8480.724936 5092.228718 4644.603398 \n",
"4 27743.943191 19664.587000 1820.357459 "
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sample = pd.DataFrame()\n",
"start = 0\n",
"\n",
"for i in range(0,SAMPLE_SIZE):\n",
" end = start + EXPENSE_COUNT\n",
" row = pd.DataFrame(r[start:end]).transpose()\n",
"\n",
" sample = sample.append(row)\n",
" \n",
" start += EXPENSE_COUNT\n",
"\n",
"sample = sample.reset_index()\n",
"sample = sample.drop(columns=['index'])\n",
"sample.head()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Number of samples: 8\n",
"Number of combinations: 256\n"
]
}
],
"source": [
"## Build a matrix of every possible combination\n",
"## for number of expenses set by EXPENSE_COUNT.\n",
"\n",
"## This also removes all combinations that use more than\n",
"## the number of expenses set by MAX_INCLUDED.\n",
"\n",
"options = []\n",
"combinations = []\n",
"\n",
"for i in range(0,EXPENSE_COUNT):\n",
" options.append([0,1])\n",
"\n",
"for t in itertools.product(*options):\n",
" combinations.append(t)\n",
"\n",
"combinations = [c for c in combinations if sum(c) <= MAX_INCLUDED]\n",
"m = np.transpose(combinations)\n",
"\n",
"print 'Number of samples: %i' % len(m)\n",
"print 'Number of combinations: %i' % len(m[0])"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Completed 1000 samples...\n",
"Completed 2000 samples...\n",
"Completed 3000 samples...\n",
"Completed 4000 samples...\n",
"Completed 5000 samples...\n",
"Completed 6000 samples...\n",
"Completed 7000 samples...\n",
"Completed 8000 samples...\n",
"Completed 9000 samples...\n",
"Completed 10000 samples...\n",
"Completed 11000 samples...\n",
"Completed 12000 samples...\n",
"Completed 13000 samples...\n",
"Completed 14000 samples...\n",
"Completed 15000 samples...\n",
"Completed 16000 samples...\n",
"Completed 17000 samples...\n",
"Completed 18000 samples...\n",
"Completed 19000 samples...\n",
"Completed 20000 samples...\n"
]
}
],
"source": [
"## Multiply combinations by sample data to find difference\n",
"## between every combination and #130,000.\n",
"\n",
"columns = ['sample','delta','abs_delta','combination']\n",
"results = pd.DataFrame(columns=columns)\n",
"all_sums = pd.DataFrame()\n",
"\n",
"for row in sample.iterrows():\n",
" index, data = row\n",
" s = data.tolist()[0:EXPENSE_COUNT]\n",
" sums = np.dot(s,m)\n",
" \n",
" sum_df = pd.DataFrame(sums, columns=['sum'])\n",
" sum_df['delta'] = sum_df['sum'] - 130000\n",
" sum_df['abs_delta'] = abs(sum_df['delta'])\n",
" sum_df = sum_df.sort_values(by='abs_delta')\n",
" \n",
" best = sum_df.iloc[0]\n",
" delta = best.delta\n",
" abs_delta = best.abs_delta\n",
" combo = best.name\n",
"\n",
" row = pd.DataFrame([[index,delta,abs_delta,combo]], columns=columns)\n",
" results = results.append(row)\n",
" all_sums = all_sums.append(sum_df)\n",
" \n",
" if index % 1000 == 999:\n",
" print 'Completed %i samples...' % (index + 1)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2.9103830456733704e-11"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"## Produces a check if the values are accurate by calculating\n",
"## actual sum from combination and sample data. Result should\n",
"## always be 0 or extremely close.\n",
"\n",
"checksum = []\n",
"\n",
"for row in results.iterrows():\n",
" index, data = row\n",
" expenses = sample.iloc[data['sample']][0:EXPENSE_COUNT]\n",
" combo = combinations[data.combination]\n",
" check = 130000 - sum(pd.Series(combo) * expenses) + data.delta\n",
"\n",
" checksum.append(check)\n",
"\n",
"max(checksum)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"5120000"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(all_sums)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10e3c1ed0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"## Distribution of all expenses\n",
"deltas = all_sums['delta']\n",
"\n",
"plt.figure(figsize=(18, 10))\n",
"plt.hist(deltas, bins=200, rwidth=.9, color='#67a9cf')\n",
"plt.title('Distribution of spend or all possible combinations of spend\\nDifference from $130,000')\n",
"plt.ylabel('Number of samples');\n",
"plt.xlabel('Difference from $130,000');"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10e326c10>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"## Distribution of differences from best combination\n",
"\n",
"deltas = results['delta']\n",
"\n",
"plt.figure(figsize=(18, 10))\n",
"plt.hist(deltas, bins=200, rwidth=.9, color='#67a9cf')\n",
"plt.title('Distribution of spend for closest combination spend\\nDifference from $130,000')\n",
"plt.ylabel('Number of samples');\n",
"plt.xlabel('Difference from $130,000');"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10f241c90>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"## Same as above, but trims out worst ~10 percent.\n",
"\n",
"p = .5\n",
"\n",
"p_val = results.quantile(p).abs_delta\n",
"p_df = results[results.abs_delta <= p_val]\n",
"deltas = p_df['delta']\n",
"\n",
"plt.figure(figsize=(18, 10))\n",
"plt.hist(deltas, bins=200, rwidth=.9, color='#67a9cf')\n",
"plt.title('Distribution of spend for closest combination spend\\nTop %i Percent\\nDifference from $130,000' % (p*100))\n",
"plt.ylabel('Number of samples');\n",
"plt.xlabel('Difference from $130,000');"
]
},
{
"cell_type": "code",
"execution_count": 12,
"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>abs_delta</th>\n",
" <th>One in</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Percentile</th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0.00001</th>\n",
" <td>0.254846</td>\n",
" <td>100000.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0.00010</th>\n",
" <td>0.405705</td>\n",
" <td>10000.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0.00020</th>\n",
" <td>0.767079</td>\n",
" <td>5000.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0.00100</th>\n",
" <td>4.598585</td>\n",
" <td>1000.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0.00500</th>\n",
" <td>26.090394</td>\n",
" <td>200.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0.01000</th>\n",
" <td>50.719541</td>\n",
" <td>100.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0.02000</th>\n",
" <td>113.950508</td>\n",
" <td>50.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0.03000</th>\n",
" <td>195.197718</td>\n",
" <td>33.333333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0.04000</th>\n",
" <td>285.832401</td>\n",
" <td>25.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0.05000</th>\n",
" <td>409.847776</td>\n",
" <td>20.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0.10000</th>\n",
" <td>7030.809253</td>\n",
" <td>10.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0.20000</th>\n",
" <td>25563.017356</td>\n",
" <td>5.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0.30000</th>\n",
" <td>37591.004096</td>\n",
" <td>3.333333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0.40000</th>\n",
" <td>47031.220829</td>\n",
" <td>2.500000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0.50000</th>\n",
" <td>55282.599163</td>\n",
" <td>2.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" abs_delta One in\n",
"Percentile \n",
"0.00001 0.254846 100000.000000\n",
"0.00010 0.405705 10000.000000\n",
"0.00020 0.767079 5000.000000\n",
"0.00100 4.598585 1000.000000\n",
"0.00500 26.090394 200.000000\n",
"0.01000 50.719541 100.000000\n",
"0.02000 113.950508 50.000000\n",
"0.03000 195.197718 33.333333\n",
"0.04000 285.832401 25.000000\n",
"0.05000 409.847776 20.000000\n",
"0.10000 7030.809253 10.000000\n",
"0.20000 25563.017356 5.000000\n",
"0.30000 37591.004096 3.333333\n",
"0.40000 47031.220829 2.500000\n",
"0.50000 55282.599163 2.000000"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"## Spend difference for best results difference by percentile\n",
"\n",
"percentiles = [0.00001,0.0001,0.0002,0.001,0.005,0.01,0.02,0.03,0.04,0.05,0.1,0.2,0.3,0.4,0.5]\n",
"\n",
"percent_df = pd.DataFrame(results['abs_delta'].quantile(percentiles))\n",
"percent_df.index.name = 'Percentile'\n",
"percent_df['One in'] = 1/percent_df.index\n",
"percent_df"
]
},
{
"cell_type": "code",
"execution_count": 14,
"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>abs_delta</th>\n",
" <th>One in</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Percentile</th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0.000001</th>\n",
" <td>0.954923</td>\n",
" <td>1000000.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0.000010</th>\n",
" <td>12.435548</td>\n",
" <td>100000.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0.000100</th>\n",
" <td>123.083541</td>\n",
" <td>10000.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0.001000</th>\n",
" <td>1255.662489</td>\n",
" <td>1000.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0.005000</th>\n",
" <td>6209.230351</td>\n",
" <td>200.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0.010000</th>\n",
" <td>12018.254107</td>\n",
" <td>100.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0.020000</th>\n",
" <td>21532.833172</td>\n",
" <td>50.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0.030000</th>\n",
" <td>28762.933280</td>\n",
" <td>33.333333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0.040000</th>\n",
" <td>34321.946369</td>\n",
" <td>25.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0.050000</th>\n",
" <td>38815.438974</td>\n",
" <td>20.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0.100000</th>\n",
" <td>53822.459588</td>\n",
" <td>10.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0.200000</th>\n",
" <td>70327.598877</td>\n",
" <td>5.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0.300000</th>\n",
" <td>80876.068357</td>\n",
" <td>3.333333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0.400000</th>\n",
" <td>88952.413694</td>\n",
" <td>2.500000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0.500000</th>\n",
" <td>95769.472277</td>\n",
" <td>2.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" abs_delta One in\n",
"Percentile \n",
"0.000001 0.954923 1000000.000000\n",
"0.000010 12.435548 100000.000000\n",
"0.000100 123.083541 10000.000000\n",
"0.001000 1255.662489 1000.000000\n",
"0.005000 6209.230351 200.000000\n",
"0.010000 12018.254107 100.000000\n",
"0.020000 21532.833172 50.000000\n",
"0.030000 28762.933280 33.333333\n",
"0.040000 34321.946369 25.000000\n",
"0.050000 38815.438974 20.000000\n",
"0.100000 53822.459588 10.000000\n",
"0.200000 70327.598877 5.000000\n",
"0.300000 80876.068357 3.333333\n",
"0.400000 88952.413694 2.500000\n",
"0.500000 95769.472277 2.000000"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"## Spend difference for all results difference by percentile\n",
"\n",
"percentiles = [0.000001,0.00001,0.0001,0.001,0.005,0.01,0.02,0.03,0.04,0.05,0.1,0.2,0.3,0.4,0.5]\n",
"\n",
"percent_df = pd.DataFrame(all_sums['abs_delta'].quantile(percentiles))\n",
"percent_df['One in'] = 1/percent_df.index\n",
"percent_df.index.name = 'Percentile'\n",
"percent_df"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.14"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment