{ "metadata": { "name": "simulation" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Simulation Basics -- equivalent in Python" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import numpy as np\n", "import scipy.stats as s" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "# normal distribution\n", "# normal(mean, stdev, size)\n", "heights = np.random.normal(188, 3, 10)\n", "print heights" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[ 182.67139438 192.17804988 190.09008635 186.57278872 194.03622068\n", " 191.88272193 183.61975607 186.97670622 187.82621993 189.9658577 ]\n" ] } ], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "# binomial distribution\n", "# binomial(n, p, size)\n", "coinFlips = np.random.binomial(10, 0.5, 10)\n", "print coinFlips" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[4 6 5 6 7 3 4 6 5 6]\n" ] } ], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "# normal density\n", "x = np.linspace(-5, 5, num=10)\n", "normalDensity = s.norm.pdf(x, 0, 1)\n", "print np.around(normalDensity, decimals=2)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[ 0. 0. 0.01 0.1 0.34 0.34 0.1 0.01 0. 0. ]\n" ] } ], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "# binomial density\n", "x = np.arange(0, 11, 1) # note that it's (0, 11, 1) instead of (0, 10, 1)\n", "binomialDensity = s.binom.pmf(x, 10, 0.5)\n", "print np.around(binomialDensity, decimals=2)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[ 0. 0.01 0.04 0.12 0.21 0.25 0.21 0.12 0.04 0.01 0. ]\n" ] } ], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "# 'sample' draws a random sample with and without replacement --> numpy.random.choice in numpy 1.7\n", "heights = np.random.normal(188, 3, 10)\n", "\n", "# with replacement\n", "print 'random sampling with replacement:'\n", "print np.random.choice(heights, size=10, replace=True, p=None)\n", "\n", "# without replacement\n", "print '\\nrandom sampling without replacement'\n", "print np.random.choice(heights, size=10, replace=False, p=None)\n", "\n", "# sample according to a set of probability\n", "probs = [0.4, 0.3, 0.2, 0.1, 0, 0, 0, 0, 0, 0]\n", "print '\\nrandom sampling with replacement according to a set of probability:'\n", "print probs\n", "print '\\nsum of probabilities:'\n", "print sum(probs)\n", "print '\\nsampled:'\n", "print np.random.choice(heights, size=10, replace=True, p=probs)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "random sampling with replacement:\n", "[ 188.51730245 187.57465384 187.7094007 187.34057076 189.44858637\n", " 187.57465384 188.51730245 184.62068782 187.57465384 189.4947812 ]\n", "\n", "random sampling without replacement\n", "[ 187.57465384 187.7094007 189.92494462 186.40851384 188.8397573\n", " 189.44858637 188.51730245 187.34057076 189.4947812 184.62068782]\n", "\n", "random sampling with replacement according to a set of probability:\n", "[0.4, 0.3, 0.2, 0.1, 0, 0, 0, 0, 0, 0]\n", "\n", "sum of probabilities:\n", "1.0\n", "\n", "sampled:\n", "[ 189.44858637 189.44858637 184.62068782 189.44858637 189.44858637\n", " 184.62068782 189.44858637 186.40851384 189.44858637 189.44858637]\n" ] } ], "prompt_number": 8 }, { "cell_type": "code", "collapsed": false, "input": [ "# setting a seed\n", "np.random.seed(12345)\n", "print np.random.normal(0, 1, 5)\n", "print '-------------------------------------------------------------'\n", "\n", "np.random.seed(12345)\n", "print np.random.normal(0, 1, 5)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[-0.20470766 0.47894334 -0.51943872 -0.5557303 1.96578057]\n", "-------------------------------------------------------------\n", "[-0.20470766 0.47894334 -0.51943872 -0.5557303 1.96578057]\n" ] } ], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }