Skip to content

Instantly share code, notes, and snippets.

@benjaminrose
Last active December 16, 2015 14:08
Show Gist options
  • Save benjaminrose/3b22fc50c47cc0bec4fa to your computer and use it in GitHub Desktop.
Save benjaminrose/3b22fc50c47cc0bec4fa to your computer and use it in GitHub Desktop.
import numpy as np
import matplotlib.pyplot as plt
data = np.random.randn(100)
data = np.sort(data)
cdf = (np.arange(len(data))+1.0)/len(data)
'''C.D.F.
C.D.F. is the number of points smaller then the current value.
For each value in the data, increment up by 1/len(data).
'''
plt.figure()
plt.plot(data, cdf)
plt.show()
Display the source blob
Display the rendered blob
Raw
{
"metadata": {
"name": "",
"signature": "sha256:ee8e469e14ab92c28feda1e4366ed99446af59bdc4782b377027c1dd4ad10649"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Cumulative distribution function (cdf)\n",
"If you have coninuous data, do not use historgrams. Present them with cdf's. Here is a simple way to plot a cdf."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"%pylab inline"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Populating the interactive namespace from numpy and matplotlib\n"
]
}
],
"prompt_number": 1
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"data = np.random.randn(100)\n",
"data = np.sort(data)\n",
"cdf = (np.arange(len(data))+1.0)/len(data)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 2
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Cdf is the number of points smaller then the current value. For each value in the data, increment up by 1/len(data). This makes sences: at half way, the probability of getting that value or less should be `.5`; at the end of the list, the probability of getting that value or less should be `1`."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"plt.figure()\n",
"plt.plot(data, cdf)\n",
"plt.show()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAXIAAAEACAYAAACuzv3DAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAGlRJREFUeJzt3XmUlNWd//H31xb3XQwq4oa4EGRRAWfcemTVGUHNqMFR\no4miZlzmTBIRRWUmxxhOcqLRqEEDakgUNUiCwQgotIgLguzQIEh0WH7KEgmGrWn6+/vjttK23V0F\nPFW36qnP65w6dtkP3Z866udc73PvfczdERGR4rVb7AAiIrJrVOQiIkVORS4iUuRU5CIiRU5FLiJS\n5FTkIiJFLmORm9lwM/vUzOY2cc3DZrbYzGabWadkI4qISFOyGZE/BfRu7JtmdiFwgru3AfoDjyeU\nTUREspCxyN39TeCzJi7pAzxTe+1U4CAza5FMPBERySSJOfKWwLI675cDRyXwc0VEJAtJ3ey0eu+1\n719EJE92T+BnrABa1Xl/VO3f+wozU7mLiOwEd68/WP6KJEbkY4BrAMzsTGCdu3/aSJjUvu67777o\nGfT59NlK7fO9/75z0kn3ccYZTsuWTrNmzqGHOu3aOd27O1df7dxxh/Pgg85zzzkVFc6iRc769fGz\nZ/vKRsYRuZk9B5wHNDezZcB9QLPaYh7q7q+Y2YVmtgTYAFyX1W8WEdkF06fDv/4rnHEG3HsvHHEE\ntGgBe+4ZO1n+ZSxyd++XxTW3JBNHRKRh7rB6NSxZAvPnw6BB8OSTMGMGdO0aO11cScyRC1BeXh47\nQk6l+fOl+bNBcX0+d1i7FhYvDoW9ePFXX2Vl0KZNeP3+99C9OxxwQHns2NFZtnMwu/yLzDxfv0tE\nCltNDcycCZWVXy9s9+1l/cXrhBPCXw89NHby/DMzPMPNThW5iOTFtm0wZQq8+CK89BIcdBC0b//1\nsm7eHKzJ2iot2RS5plZEJGe2bYPJk7eX9+GHw2WXwaRJcNJJsdOlh4pcRBK1aRNMmAB/+hO8/DIc\ndVQo7zffDCNuSZ6mVkRkl61ZA3/+cyjviRPhtNPg4ouhTx847rjY6Yqb5shFJKdWrYKrr4Z334Ue\nPaBv37C2+5BDYidLD82Ri0jOrFoF3brBRReFkfhee8VOVLr0hCAR2SE1NfDGG6HEL7kE7r9fJR6b\nRuQikpXFi2HEiPDabz+49Va44QYtFSwEKnIRaVRVFTz1FDzzDHz4IVx5JYweDR06qMALiW52ikij\n+veHhQvhjjugVy9o1ix2otKjm50istOefDLsxJw6FfbfP3YaaYqKXEQA+Nvfwi7MiorwWrkybOJR\niRc+Ta2IlKj6xb10KfzzP0N5eXidfrqmUgqBNgSJyNcsXAjXXgsLFsBZZ20v7tNOU3EXIs2Ri8hX\njB0L110X1n5fe62KOy1U5CIlYNkyeOSR8DCGP/0J/umfYieSJGlnp0hKVVeH0wcvugg6doQNG2Da\nNJV4GmlELpIyn30Gv/wlDBsWjpDt3x9GjoR9942dTHJFRS6SIq+9FubAe/UK8+Ht28dOJPmgIhdJ\ngU2bYOBAGDUKhg8PR8pK6VCRi6TAY4/B7NnhpbPAS49udoqkwPr1cN55KvFSpSIXSYGlS2GffWKn\nkFhU5CJF7vnn4e23w9ngUpq0RV+kiH30EXTuDOPHQ6dOsdNILmSzRV8jcpEi9pvfhIcfq8RLm0bk\nIkWqpgaOPz5sue/QIXYayRWNyEVSbMwYOOwwlbioyEWKkjs88ADceWfsJFIIVOQiRcYdBgwIh2Jd\ncknsNFIItLNTpIjU1MB//idMnx5WquymoZigEblIUfj88/Aw5C5dwpN9Xn8dDj00diopFCpykQLl\nDu+8A9/7Hhx9NPzlL/C//wsTJ8IBB8ROJ4VEUysiBWj69HAc7ebNcP31UFkJhx8eO5UUqowjcjPr\nbWYLzWyxmQ1o4PvNzexVM5tlZvPM7NqcJBUpEWPHwgUXwKBB8MEH4camSlya0uSGIDMrAxYB3YEV\nwDSgn7tX1rlmMLCnuw80s+a117dw9+p6P0sbgkQyGD4c7r4bRo+GM8+MnUYKQRIbgroAS9z9I3ff\nCowE+ta75v8BX8zYHQCsrV/iIpLZ2LGhxN94QyUuOybTHHlLYFmd98uBrvWueRKYaGYrgf2By5OL\nJ1Ia5syBa68NuzVPPDF2Gik2mYo8m7mQu4BZ7l5uZq2BCWbWwd0/r3/h4MGDv/y6vLyc8vLyHYgq\nkk5//ztceml4YLKecC8VFRVUVFTs0J/JNEd+JjDY3XvXvh8I1Lj7kDrXvALc7+5v1b5/HRjg7tPr\n/SzNkYvU4w7f/nZYE/7YY7HTSCHKZo4804h8OtDGzI4FVgJXAP3qXbOQcDP0LTNrAZwELN2ZwCKl\nZsoUmDUrPGtTZGc1WeTuXm1mtwDjgDJgmLtXmtmNtd8fCvwEeMrMZhNunt7h7n/LcW6RVKishHPO\ngb32ip1EipnOIxeJxD08FOKb34SBA2OnkUKl88hFCtj//A/Mmwc33RQ7iRQ7bdEXieCxx2DkSJg8\nGQ4+OHYaKXaaWhHJM3c49tjwiLaOHWOnkUKnqRWRAjRzJuyxhx7RJslRkYvk2bRpcO65YE2OsUSy\npyIXybN16/RQCEmWilwkj/78Z3j8cWjbNnYSSROtWhHJg6VL4fbbw/niTzwBPXvGTiRpohG5SA5V\nV8OQIeFZm2edFU45VIlL0jQiF8mRhQvD0bT77hse3XbssbETSVppRC6SMHd4+GE4+2y45hqYMEEl\nLrmlEblIgjZsgBtuCIdhTZ0KrVvHTiSlQCNykYR8/HF4RFuzZvD22ypxyR9t0RdJwObN4ek+l18O\nd96pzT6SnGy26KvIRRJw882wdi08/7xKXJKVxBOCRCSDUaNg/HiYMUMlLnFoRC6yC5Yvh9NPhzFj\noGvX2GkkjTS1IpJjffpA585wzz2xk0haaWpFJIfefjs8NPnFF2MnkVKn5YciO2HTJvjhD+Hee2HP\nPWOnkVKnqRWRHbRxI1x8cTiKdsQI2F3/Xys5pCcEiSSsqgouughatFCJS+HQv4YiO+DZZ2HbNnj6\naSgri51GJNDUikiWamqgXbtwIFb37rHTSKnQ1IpIgh55BA4+GLp1i51E5Ks0IhfJwsyZ4YEQU6fC\n8cfHTiOlRCNykYTceiv8/OcqcSlMGpGLZLB2LRx3HKxerTXjkn8akYsk4I034JxzVOJSuFTkIhms\nXg0tW8ZOIdI4FblIBlu2aDQuhU1FLpLBunVw0EGxU4g0TkUuksEnn4Qt+SKFSkUuksFf/wpHHx07\nhUjjVOQiTXCH99+H006LnUSkcRmL3Mx6m9lCM1tsZgMauabczGaa2Twzq0g8pUgkq1aFQ7K0akUK\nWZOnH5pZGfAroDuwAphmZmPcvbLONQcBjwK93H25mTXPZWCRfProo7AZSA9VlkKWaUTeBVji7h+5\n+1ZgJNC33jVXAqPcfTmAu69JPqZIHHPnalu+FL5MRd4SWFbn/fLav1dXG+AQM5tkZtPN7OokA4rE\nUlUFP/0p3HRT7CQiTcv0YIlsDkdpBpwGdAP2Ad4xs3fdffGuhhOJafhwaN0azj8/dhKRpmUq8hVA\nqzrvWxFG5XUtA9a4+yZgk5lNBjoAXyvywYMHf/l1eXk55eXlO55YJA+qq2HIEHjuudhJpNRUVFRQ\nUVGxQ3+mydMPzWx3YBFhtL0SeA/oV+9m58mEG6K9gD2BqcAV7r6g3s/S6YdSNJ59FoYODQdmicSU\nzemHTY7I3b3azG4BxgFlwDB3rzSzG2u/P9TdF5rZq8AcoAZ4sn6JixSb116DK6+MnUIkOzqPXKQB\nF10E118Pfeuv0RLJM51HLrITfvc7eOcdOOWU2ElEspPpZqdIydi4EW67DaZMgYkT4cQTYycSyY5G\n5CLAmjVw9tmwaRNMmwbt28dOJJI9FbmUvE8/hfJyuPDCMK2y//6xE4nsGN3slJK2dWsYfV95Jdxz\nT+w0Il+nm50iGSxYEA7EUolLMVORS0mbORM6doydQmTXqMilZG3eHLbh//u/x04isms0Ry4la8AA\nWLoUXnwxdhKRxmUzR64il5K0aRMcdlgo8m98I3YakcbpZqdII6ZPh7ZtVeKSDipyKUmzZsHpp8dO\nIZIMFbmUpC1bYN99Y6cQSYaKXErS+vWwu04akpTQzU4pOevWwcknw6uvag25FD6tWhFpwI9+FMr8\nySdjJxHJTEUuUs+aNeF42vnz4YgjYqcRyUzLD0XqcIdf/AK+9S2VuKSLbvdI6rnD2LHwk5/A6tVh\nblwkTVTkklrV1WH7/QMPwG67wcCB4VyVsrLYyUSSpSKX1LrxRpg3LxyM1bt3OK5WJI1U5JJKY8fC\npEkwZw7st1/sNCK5pVUrkjrucMwx8PTTcP75sdOI7BotP5SStHYttG4d1oqLFDstP5SStHRpGJGL\nlAoVuaTOo49Cnz6xU4jkj252SqrMnw9/+Qt88EHsJCL5oxG5pMprr4WdmwceGDuJSP6oyCVVqqpg\nn31ipxDJLxW5pMq6dbD//rFTiOSXilxSZe5caNcudgqR/FKRS2q4w4wZeliElB4VuaTG/PnQrBkc\nf3zsJCL5pSKX1Bg9Gi68UIdjSenRFn1JhZUroUMHmDwZTjkldhqR5GiLvpSEmhq4/Xbo318lLqUp\nY5GbWW8zW2hmi81sQBPXdTazajO7NNmIIo3bsgWuugpWrIC7746dRiSOJovczMqAXwG9gbZAPzP7\n2pin9rohwKuAZiglL9asCQ+M2LIFXn9dG4GkdGUakXcBlrj7R+6+FRgJ9G3guluBPwCrE84n8hXu\nMGUKXHMNnHACdOkCL7wAe+8dO5lIPJkOzWoJLKvzfjnQte4FZtaSUO7nA50B3dGUxK1dCyNGwBNP\nhDLv3x9+8Qto3jx2MpH4MhV5NqX8EHCnu7uZGZpakYR99hmceGJYWjh0KJx9tpYYitSVqchXAK3q\nvG9FGJXXdTowMnQ4zYELzGyru4+p/8MGDx785dfl5eWUl5fveGIpOe++G5YWjhgRO4lI7lVUVFBR\nUbFDf6bJdeRmtjuwCOgGrATeA/q5e2Uj1z8FvOzuLzXwPa0jl50yaFCYTrn//thJRPJvl9eRu3s1\ncAswDlgAPO/ulWZ2o5ndmFxUkcaNHw89esROIVK4tLNTCtqKFfDNb8Lq1eEcFZFSo52dUtS2bIFv\nfxtuu00lLtIUjcilILnDd74DmzbB88/DbhpySInKZkSuhy9LQZozJxyAtWCBSlwkE/0nIgVp/Hj4\nt3/TtnuRbKjIpaBUVcGjj8LPfgYXXxw7jUhxUJFLQaipCXPhbdvCyy/DuHHQvXvsVCLFQXPkUhAu\nuSQsNRw6FLp1i51GpLho1YpEt24dtGoVDsbaY4/YaUQKi9aRS1F4661wHK1KXGTnqMgluhkzoHPn\n2ClEipeKXKKbNy9swxeRnaMil6hGjAgbf3SiscjOU5FLNE88AXfdBRMnhpudIrJztGpFoli2DDp2\nhPfeg9atY6cRKVxatSIF66234NxzVeIiSVCRSxTvvgtdu2a+TkQyU5FLFDNmwBlnxE4hkg6aI5e8\n27ABjjgC/vpXOPTQ2GlECls2c+Qqcsm7734Xtm2DZ56JnUSk8OnBElJwnnsO3n4bpk+PnUQkPTRH\nLnk1ahTccw/st1/sJCLpoSKXvNq8GQ44IHYKkXRRkUvebNwIs2fD0UfHTiKSLipyyZshQ+Css6BD\nh9hJRNJFq1YkL9avh2OO0YhcZEdpi74UjEmTwgYglbhI8lTkkhcTJkCPHrFTiKSTilzyYvx46NUr\ndgqRdFKRS85VVoY58lNPjZ1EJJ1U5JJTs2ZBz55w772wm/5tE8kJbdGXnBk3Dq66Ch57DC67LHYa\nkfTS8kPJiepqaNkSXngBzjsvdhqR4qXlhxLNm2+GIleJi+SeilwSt3EjDB4MV14ZO4lIadDUiiRq\n82bo2xcOOyycN15WFjuRSHHT1Irk1aJF0Ls3HHggPP20SlwkX7IqcjPrbWYLzWyxmQ1o4Pv/YWaz\nzWyOmb1lZu2TjyqF6vPP4Y474OyzoU8fePZZ2F3roUTyJmORm1kZ8CugN9AW6Gdmp9S7bClwrru3\nB34MPJF0UClMr7wCJ58Mq1bB3Lnw3/+tEhfJt2z+k+sCLHH3jwDMbCTQF6j84gJ3f6fO9VOBoxLM\nKAXqmWdgwICwxPDcc2OnESld2RR5S2BZnffLga5NXP894JVdCSWF76GH4MEHoaIijMhFJJ5sijzr\npSZm9i/Ad4GzGvr+4MGDv/y6vLyc8vLybH+0FJBPPgnLC+fOhVatYqcRSZeKigoqKip26M9kXH5o\nZmcCg929d+37gUCNuw+pd1174CWgt7svaeDnaPlhSjz4YHhAxNNPx04ikn5JLT+cDrQxs2PNbA/g\nCmBMvV90NKHEr2qoxCU9tmwJZ6dcd13sJCLyhYxTK+5ebWa3AOOAMmCYu1ea2Y213x8K3AscDDxu\nZgBb3b1L7mJLLL/8ZZgT19Z7kcKhnZ2StaoqaNEC3nsP2rSJnUakNGhnpyRq9WrYe2+VuEihUZFL\n1iZPhubNY6cQkfq0B08yWroUfvCDsFJl6NDYaUSkPo3IpUk//jF07hxeCxZAjx6xE4lIfbrZKY1a\nvx4OPxw++ACO0qELIlHoZqfskvXr4ZBDVOIihU5FLo1auTI8IEJECpuKXBo1dSp00bYukYKnIpcG\nucMf/whnNXj8mYgUEhW5NGj4cFi3Dvr1i51ERDLROnL5mjffhDvvhEmToFmz2GlEJBONyOVLVVVw\n111wxRXw299Cu3axE4lINjQiF7ZuhYkTYdAg+MY3YObMcDiWiBQHFXmJqq4Oj2l74QUYPRpOOAFu\nvjmcM25Nbj0QkUKjIi8x06aFG5kvvQRHHx2mUaZPh2OOiZ1MRHaWtuiXkA0b4Mgjw43Myy+H1q1j\nJxKRTLLZoq8ReQl59VXo2hUGDoydRESSpCIvAUuXhumUYcNgyJDM14tIcdHyw5TavBlGjoTu3cMo\nfMMGmDABrrkmdjIRSZpG5Ck0ahTcdBN07Ag33AAXXwx77hk7lYjkioo8ZcaMge9/P8yHn3567DQi\nkg9atZIiU6bApZfC2LHhiT4iUvz0YIkSM3o0/Nd/qcRFSo2KPEWWLYPjjoudQkTyTUWeElOmhNMK\nu3aNnURE8k1FngLz5sG3vgW//z0cf3zsNCKSb1q1UoS2bQvno4wbB+PHw5w58OtfQ8+esZOJSAxa\ntVIkli8PxT1uHLz+ejgzpWdP6NULzjkH9t47dkIRyYVsVq2oyAtMTQ18/HEYZc+dG16zZsHatdCj\nRyjvnj2hZcvYSUUkH1TkBe6zz0JR1y3tefPgwAPh1FPDq3378GrbFsrKYicWkXxTkReImhr48MPw\n5J2ZM2H27FDa69ZtL+wvSrtdOzjkkNiJRaRQqMgjqKqC+fNDYc+atb24DzkknH3SqVP4a/v24WEO\nu2ndkIg0QUWeI9u2wapVsGJFeH388fbSXrQobMrp1Gn7q2NHjbJFZOeoyHeQO6xfDytXbi/phr5e\ntSoU85FHhpuOrVpBhw6htE89VStIRCQ5KvJ6Nm4M0xxNlTSEcq77+qKwv/j6iCOgWbOoH0VESkQi\nRW5mvYGHgDLgN+7+tWfMmNnDwAXARuBad5/ZwDXRi3zQoLD7sVOnhgu6ZUs44ICoEUVEvmKXTz80\nszLgV0BvoC3Qz8xOqXfNhcAJ7t4G6A88vkupc+gf/4DbbgtPkH/kkfDsymuugW7d4JRTdq3EKyoq\nEstZiNL8+dL82UCfrxRkWjPRBVji7h+5+1ZgJNC33jV9gGcA3H0qcJCZtUg8aQKqqmCPPXLzs9P+\nL1OaP1+aPxvo85WCTGettASW1Xm/HKh/vl5D1xwFfLrL6RL2859ruZ+IpE+mIs92Urv+/E1BLk/Z\nZ5/YCUREktfkzU4zOxMY7O69a98PBGrq3vA0s18DFe4+svb9QuA8d/+03s8qyHIXESl0mW52ZhqR\nTwfamNmxwErgCqBfvWvGALcAI2uLf139Es8miIiI7Jwmi9zdq83sFmAcYfnhMHevNLMba78/1N1f\nMbMLzWwJsAG4LuepRUTkS3nbECQiIrmR1zUcZvZjM5ttZrPM7HUza5XP359LZvYzM6us/XwvmdmB\nsTMlycwuM7P5ZrbNzE6LnScpZtbbzBaa2WIzGxA7T5LMbLiZfWpmc2NnyQUza2Vmk2r/vZxnZrfF\nzpQUM9vLzKbWduUCM3ugyevzOSI3s/3d/fPar28FOrj79XkLkENm1gN43d1rzOynAO5+Z+RYiTGz\nk4EaYCjwA3efETnSLqvd8LYI6A6sAKYB/dy9MmqwhJjZOcA/gN+6+6mx8yTNzA4HDnf3WWa2H/A+\ncHGK/vnt4+4bzWx3YArwQ3ef0tC1eR2Rf1HitfYD1uTz9+eSu09w95rat1MJa+lTw90XuvsHsXMk\nLJsNb0XL3d8EPoudI1fc/RN3n1X79T+ASuDIuKmS4+4ba7/cg3CP8m+NXZv37TFmdr+Z/R/wHeCn\n+f79efJd4JXYISSjhjaz6SF6Rah2ZV0nwiAqFcxsNzObRdhcOcndFzR2bablhzvzyycAhzfwrbvc\n/WV3vxu428zuBB6kiFa5ZPpstdfcDVS5+7N5DZeAbD5fyuhOfwrUTqv8Abi9dmSeCrX/h9+x9n7b\nODMrd/eKhq5NvMjdvUeWlz5LkY1aM302M7sWuBDolpdACduBf3ZpsQKoe8O9FWFULkXCzJoBo4Df\nufsfY+fJBXf/u5mNBc4AKhq6Jt+rVtrUedsX+Npxt8Wq9rjfHwF93X1z7Dw5lpbNXV9ueDOzPQgb\n3sZEziRZMjMDhgEL3P2h2HmSZGbNzeyg2q/3BnrQRF/me9XKH4CTgG3Ah8DN7r4qbwFyyMwWE25K\nfHFD4h13/37ESIkys0uAh4HmwN+Bme5+QdxUu87MLmD7efvD3L3JZV7FxMyeA84DDgVWAfe6+1Nx\nUyXHzM4GJgNz2D5NNtDdX42XKhlmdirhVNndal8j3P1njV6vDUEiIsVNh7qKiBQ5FbmISJFTkYuI\nFDkVuYhIkVORi4gUORW5iEiRU5GLiBQ5FbmISJH7//aLFow9VKw8AAAAAElFTkSuQmCC\n",
"text": [
"<matplotlib.figure.Figure at 0x10e1c6cd0>"
]
}
],
"prompt_number": 3
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment