Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save jakab922/949b9c481ef6db3504d7c09f131a590a to your computer and use it in GitHub Desktop.
Save jakab922/949b9c481ef6db3504d7c09f131a590a to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Task 0: Setting up the notebook"
]
},
{
"cell_type": "code",
"execution_count": 169,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"JACK, QUEEN, KING, ACE = range(11, 15)\n",
"values = {i:i for i in xrange(2, 11)}\n",
"for name in (JACK, QUEEN, KING):\n",
" values[name] = 10\n",
"values[ACE] = 1"
]
},
{
"cell_type": "code",
"execution_count": 170,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"%matplotlib inline \n",
"from random import shuffle, randint as ri\n",
"from itertools import product\n",
"from math import sqrt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Task 1: Showing the histogram of card values(for 1 color since it's the same for all)"
]
},
{
"cell_type": "code",
"execution_count": 171,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nxUqiNRWIWAAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f32572ce5d0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"pd.Series(values.values()).hist()\n",
"vv = values.values()\n",
"vv_mean = np.mean(vv)\n",
"vv_var = np.var(vv)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Task 2: Taking 100000 samples of size 3 from the cards and storing the sum of the sample values"
]
},
{
"cell_type": "code",
"execution_count": 172,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"cards = range(2, 15)\n",
"lc = len(cards)\n",
"draws = []\n",
"sums = []\n",
"sample_count = 100000\n",
"sample_size = 3\n",
"for _ in xrange(sample_count):\n",
" shuffle(cards)\n",
" firstx = [cards[ri(0, lc - 1)] for _2 in xrange(sample_size)]\n",
" draws.append(tuple(firstx))\n",
" cs = sum(map(lambda x: values[x], firstx))\n",
"# cs /= float(sample_size)\n",
"# cs -= vv_mean\n",
"# cs *= sqrt(sample_size)\n",
" sums.append(cs)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Task 3: Derive descriptive statistics for the sample"
]
},
{
"cell_type": "code",
"execution_count": 173,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Mean of the sample: 19.62205\n",
"Median of the sample: 20.0\n",
"Variance of the sample: 29.6544837975\n",
"Standard deviation of the sample: 5.44559306205\n"
]
}
],
"source": [
"s_mean, s_median, s_var, s_std = np.mean(sums), np.median(sums), np.var(sums), np.std(sums)\n",
"print \"Mean of the sample: %s\" % s_mean\n",
"print \"Median of the sample: %s\" % s_median\n",
"print \"Variance of the sample: %s\" % s_var\n",
"print \"Standard deviation of the sample: %s\" % s_std"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Task 4: Showing the histogram of the sample"
]
},
{
"cell_type": "code",
"execution_count": 174,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f32536a1e50>"
]
},
"execution_count": 174,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nHwAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f32564e3b90>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"ssums = pd.Series(sums)\n",
"ssums.hist()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The original distribution was a negatively skewed distribution as it's histogram shows this.\n",
"\n",
"I would expect the sample distribution to be normal approximately but it seems negatively skewed just as the original one. The mean is 3 times the size of the original mean. The median is approximately the same as the mean. The variance is also 3 times the size of the original variance which can be deduced from the following equation(just multiply both sides by $n^2$):\n",
"\n",
"$$Var\\left(\\frac{1}{n}\\sum_{i = 1}^{n}X_{i}\\right) = \\frac{\\sigma^2}{n}$$"
]
},
{
"cell_type": "code",
"execution_count": 175,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"3 times the original mean: 19.6153846154, sample mean: 19.62205\n",
"3 times the original variance: 29.8224852071, sample variance: 29.6544837975\n"
]
}
],
"source": [
"print \"3 times the original mean: %s, sample mean: %s\" % (vv_mean * 3.0, s_mean)\n",
"print \"3 times the original variance: %s, sample variance: %s\" % (vv_var * 3.0, s_var)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Task 5: Estimating the values of future draws"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For estimating the range where 90% of the values fall I will use Chebyshev's inequality to give an estimation on the sum of future draws. The inequality goes as follows:\n",
"\n",
"$$P(|X - \\mu| \\geq k \\cdot \\sigma) \\leq \\frac{1}{k^2}$$\n",
"\n",
"and since we want to know where 90% of the values fall in we have to choose $k$ so that $\\frac{1}{k^2} \\approx 0.1$. So $k = \\sqrt{10}$. From this we can deduce that at least 90% of the values fall within $(\\mu - k \\cdot \\sigma, \\mu + k \\cdot \\sigma)$ which is approximately:"
]
},
{
"cell_type": "code",
"execution_count": 176,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(2.4015727134960052, 36.842527286503994)\n"
]
}
],
"source": [
"sqrt10 = sqrt(10)\n",
"print (s_mean - sqrt10 * s_std, s_mean + sqrt10 * s_std)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"It's easy to see that this is a really bad estimate since the sums take value from the $[3, 30]$ range. The following algorithm will give a better estimate:"
]
},
{
"cell_type": "code",
"execution_count": 177,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(12, 29)\n"
]
}
],
"source": [
"counts = [0 for _ in xrange(31)]\n",
"for s in sums:\n",
" counts[s] += 1\n",
"sc = float(sum(counts))\n",
"low, high = 0, 30\n",
"while sum(counts[low:(high + 1)])/sc > 0.9:\n",
" if counts[low] <= counts[high]:\n",
" low += 1\n",
" else:\n",
" high -= 1\n",
"print (low, high)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The above pair is an approximate value for the range. There is no exact range since the values are from a discrete set and there is no such pair of numbers such that the measure outside that range is exactly $0.1$. Also even if the measure was continuous since the sample's distribution is not symmetric the range that we are looking for would not be unique."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we need to give a probability of drawing a 3 cards whose sum is at least 20. That's quite easy to do using the sampled values:"
]
},
{
"cell_type": "code",
"execution_count": 179,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.52679\n"
]
}
],
"source": [
"print sum(counts[20:]) / sc"
]
}
],
"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.11"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment