{ "metadata": { "name": "" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import scipy.stats" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Define the test statistics and test them on examples from the lectures." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def pearson(counts):\n", " counts = np.asarray(counts)\n", " expected = scipy.stats.contingency.expected_freq(counts)\n", " return np.sum((counts - expected)**2 / expected)\n", "\n", "assert np.allclose(pearson([[17066, 14464, 788, 126, 37], [48, 38, 5, 1, 1]]),\n", " 12.0821, atol=0.0001)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "# TODO: Oops, this is 2x2 only... but the segment has a 3x3 table... ???\n", "\n", "def wald_2x2(counts):\n", " counts = np.asarray(counts)\n", " m, n = counts[0, 0], counts[0, 1]\n", " M, N = counts.sum(axis=0)\n", "\n", " p1_hat = m / float(M)\n", " p2_hat = n / float(N)\n", " p_hat = (m + n) / float(M + N)\n", "\n", " numerator = p1_hat - p2_hat\n", " denominator = np.sqrt(p_hat * (1 - p_hat) * ((1.0 / M) + (1.0 / N)))\n", " return numerator / denominator\n", "\n", "assert np.allclose(wald_2x2([[8, 3], [16, 26]]), 2.0542, atol=0.0001)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Code for permuting tables and collecting test statistics from the permutations." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def expand(table):\n", " items = []\n", " for row in xrange(table.shape[0]):\n", " for col in xrange(table.shape[1]):\n", " items.extend([[row, col]] * table[row, col])\n", " expanded = np.array(items)\n", " assert expanded.shape == (table.sum(), 2)\n", " return expanded\n", "\n", "def shuffle(expanded_table):\n", " expanded_table[:, 1] = np.random.permutation(expanded_table[:, 1])\n", " return expanded_table\n", "\n", "def rebuild(expanded_table):\n", " table = np.zeros(np.max(expanded_table, axis=0) + 1, dtype=int)\n", " for item in expanded_table:\n", " table[tuple(item)] += 1\n", " assert expanded_table.shape == (table.sum(), 2)\n", " return table\n", "\n", "def permute(table):\n", " return rebuild(shuffle(expand(table)))\n", "\n", "def sanity_check():\n", " table = np.arange(9).reshape(3, 3)\n", " \n", " # Expand and rebuild the same table.\n", " assert np.all(rebuild(expand(table)) == table)\n", "\n", " # Verify marginals are the same after shuffling.\n", " marginals_before = np.array([table.sum(axis=0), table.sum(axis=1)])\n", " permutation = permute(table)\n", " marginals_after = np.array([permutation.sum(axis=0), permutation.sum(axis=1)])\n", " assert np.all(marginals_before == marginals_after)\n", "\n", "sanity_check()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "def permutation_stats(table, num_permutations=100000, statistic_func=pearson):\n", " stats = [statistic_func(permute(table)) for _ in xrange(num_permutations)]\n", " return np.array(stats)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 5 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Problem 1" ] }, { "cell_type": "code", "collapsed": false, "input": [ "table = np.array([[5, 3, 2],\n", " [2, 3, 6],\n", " [0, 2, 3]])\n", "table" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 6, "text": [ "array([[5, 3, 2],\n", " [2, 3, 6],\n", " [0, 2, 3]])" ] } ], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "pearson(table)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 7, "text": [ "5.7559917355371892" ] } ], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "stats = permutation_stats(table, statistic_func=pearson)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 8 }, { "cell_type": "code", "collapsed": false, "input": [ "plt.hist(stats, bins=np.arange(20), histtype='step', fill=True, normed=True)\n", "plt.axvline(x=pearson(table), color='red', label='Pearson statistic for the table')\n", "plt.title('Permutation Stats')\n", "plt.legend()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 9, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAtUAAAIACAYAAABNQJD3AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl8jXf+///ndaSRhZCIbLbETkv1I2Idkpagi6lSRTcU\nNUZrGTMa1WKK6TbKaBtdtKIbM53MmGkzrbQEKbdpyejHkGFqq+LkI6i1EY7r94dvzs9xssk7cYLH\n/XY7t5vzPu/rfb2uKyenz155n/dl2bZtCwAAAECFOXxdAAAAAHCtI1QDAAAAhgjVAAAAgCFCNQAA\nAGCIUA0AAAAYIlQDAAAAhgjVAHCdy8rKksPh0Lp163xdCgBctwjVAK4pS5culcPhcD9uuukmNWrU\nSKNHj5bT6fR1eRX26quvKi0tzWiMOXPmaOXKlcW+ZlmW0dgm9u7dq1GjRql58+YKDAxUVFSUunbt\nqpSUFJ0+fdrd7/3339fChQuN9lUZ5xEAKsLi5i8AriVLly7VqFGjNHv2bDVr1kwFBQXKzs7WsmXL\nFBcXp61btyogIMDXZV6x1q1bKyYmRqtXr67wGAEBARo+fLjeeecdj3bbtnXu3DnddNNNVz1cf/fd\nd4qPj1dAQIBGjhyp5s2bKz8/X1u2bFFGRoa2bt2qxo0bS5L69eunHTt2aM+ePRXeX2WcRwCoCD9f\nFwAAFdG3b18lJCRIkkaNGqWwsDDNnz9fK1eu1AMPPGA09pkzZxQUFFQZZV5VlmWpuOsklmXJ39/f\nBxVJr7zyik6dOqXNmzerWbNmHq+dPHnSqy5fXlEHABNM/wBwXUhKSpIkj6ucy5cvV+fOnRUcHKy6\ndetqwIABys3N9dhuxIgRCgwM1Pfff697771XderU0d133y1Jio2NVf/+/bV+/Xp16tRJQUFBuvnm\nm/X5559Lkj755BN16NBBQUFBat++vTZu3Og1dlxcnFetRVNYvv/+e/d+du7c6Z777HA43NudO3dO\nzz77rOLj4xUWFqagoCB16dJFf//73z3GdDgcOnv2rNLS0txjFJ2TkuZUZ2dn6/bbb1ft2rUVEhKi\n5ORkff3118XWmp2drenTpys6OlpBQUHq27ev9u7dW+bPZdeuXWrQoIFXoJak2rVrq2bNmpKkxMRE\nrVq1Snv37vWY3lPk5ZdfVvfu3VW/fn0FBgaqffv2evfddz3GK+08StLrr7+udu3aqVatWqpXr57i\n4+P1xhtvlHkMAFAeXKkGcF3YtWuXJKlevXqSpOeff17Tp0/XoEGDNGLECJ08eVKvv/66unfvrpyc\nHMXGxrq3vXDhgpKTk5WQkKCXX35Zfn4XPxoty9Lu3bs1dOhQjRkzRg8//LBeeeUVDRw4UIsXL1ZK\nSoomTJigmjVr6oUXXtB9992nffv2eVx9Lc+V14ULF2r8+PGqW7eunn76aUlSrVq1JEnHjx/XG2+8\noaFDh2r06NE6c+aMPvjgA9177736xz/+oeTkZEnSe++9p1GjRqlr164aO3asJCkyMrLEfa5bt059\n+vRR48aN9cwzz8jlcmnx4sXq1auX1q5d6/4rQJHJkycrKChITz/9tA4fPqyXX35ZDz74oL766qtS\njy0uLk5ffPGFvvjiC/Xu3bvEfjNmzNDUqVN18OBBLViwwOv1BQsW6M4779TQoUNlWZbS09P12GOP\n6fz58xozZkyZ53HJkiWaMGGC7r//fj355JM6d+6c/v3vf+urr77S448/XuoxAEC52ABwDXn33Xdt\ny7Lszz//3D58+LC9f/9+e/ny5Xa9evXs4OBg++DBg/a+fftsPz8/e/bs2R7bHjp0yK5bt6792GOP\nudseffRR27Is+1e/+pXXvpo0aWJblmVnZ2e729atW2dblmXfdNNN9s6dO93tf/zjH23Lsuw///nP\nHmPHxsaWeAz79u1zt7Vq1cpOSkry6utyuezCwkKPtsLCQrtt27Z2nz59PNoDAgLskSNHeo2xZs0a\n27Ise+3ate62jh072uHh4XZ+fr677cCBA3bt2rXtHj16eNWamJjoMeaCBQtsy7Ls7du3e+3vUrm5\nuXZQUJBtWZZ966232hMmTLD/9Kc/2SdPnvTq27dvXzsuLq7YcX766Sevtj59+tgtWrTwaCvpPN57\n7712u3btSq0VAEww/QPANalfv36KiIhQ48aNNWzYMDVo0EAZGRmKjo5Wenq6XC6XHnjgAeXn57sf\nfn5+SkhIKPZLbOPHjy92P61atVL37t3dz4uu4Pbo0UMtWrTwat+9e3dlHqZ7hRNJKiws1NGjR3X8\n+HH17NlTmzdvrtCYTqdTOTk5evTRR91X9iUpJiZGw4cP14YNG3TixAmPbS6/mtuzZ09JZR9v69at\n9c033+jBBx/U/v379dprr2nIkCGqX7++nn/++XLXXPTl03Pnzuno0aPKz89XUlKSvvvuO506darM\n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\njBihZs2aKTAwUBERERo+fLh++OEHj35F006ysrI0adIkRUVFqVatWpKk8+fPa86cOWrZsqWCgoJU\nv359de/eXX/+8589xsjOztbtt9+u2rVrKyQkRMnJyfr666+L3U92dramT5+u6OhoBQUFqW/fvtq7\nd2+Z56GsWkaMGKE333xTtm17TKP5/vvv3fvv3bu3oqOjFRAQoFatWunFF1/0CGSJiYlatWqV9u7d\n6zFGkcvnVJvWVNyc6sLCQs2ZM0etW7dWQECAoqKidO+992r79u0lnpvY2Fg99dRTkqS4uDg5HA6P\ncf/2t7+53y9hYWG67777tGPHDo8xiuYL5+bm6tFHH1W9evV0yy23FLu/vXv3KiYmRtLFv6wUHdeo\nUaM8+p04cULjxo1TvXr1VLt2bQ0ZMqTY23JnZmYqKSlJISEhqlWrlm6//XZt3LixxOMtrYai4963\nb5/Gjx+v1q1bKzg4WKGhoRowYECJ5/H8+fOaOXOmYmJiFBwcrOTkZO3cubPUGkzqr2pcqQYA4DK7\ndu2SJNWrV0+S9Pzzz2v69OkaNGiQRowYoZMnT+r1119X9+7dlZOTo9jYWEnSF198oR07drjn2f73\nv//V4sWL9c033xQ7leSJJ55QaGioZsyYoePHj0u6GFbmzZun0aNHKyEhQadPn1ZOTo6+/vprDRo0\nSJK0bt069enTR40bN9Yzzzwjl8ulxYsXq1evXlq7dq37qnuRyZMnKygoSE8//bQOHz6sl19+WQ8+\n+KC++uqrUs9DWbWMGzdOP/zwg1avXu0xnzg8PFyS9Nprr6l169a68847FRQUpFWrVumpp57S8ePH\nNXfuXEnSjBkzNHXqVB08eFALFiwoto5Lrzqb1nT5nOoLFy7onnvuUWZmpgYPHqwnn3xSp0+fVlZW\nlnJyctS2bdtia1q4cKGWL1+uFStWaMGCBQoPD1ezZs0kXfzy4oMPPqjbbrtNc+fO1Y8//qhFixap\nW7du2rx5s/v9UmTIkCGKi4vT3LlzVVhYWOz+IiIi9Oqrr2rChAm67777dN9990mSe59Fhg0bppiY\nGM2dO1c7d+7UokWL5Ofnpw8//NDd58MPP9Qjjzyi22+/XXPnzpXL5dI777yjpKQkrVu3zuv9U94a\nvvnmG61bt06DBw9WbGysDhw4oMWLF6tnz57atm2bIiMjPcZ74YUXdOHCBf3mN7/R0aNHtXDhQiUl\nJWnr1q0KCwsrtgaT+qucXc1dAyUCVYvfAfjY9fw5/O6779qWZdmff/65ffjwYXv//v328uXL7Xr1\n6tnBwcH2wYMH7X379tl+fn727NmzPbY9dOiQXbduXfuxxx5zt505c8ZrH9nZ2bZlWfYHH3zgtd8u\nXbrYLpfLo3+HDh3se+65p9S6O3bsaIeHh9v5+fnutgMHDti1a9e2e/To4bWfxMREj+0XLFhgW5Zl\nb9++vdT9lKeWxx9/3LYsq9jXfvrpJ6+20aNH27Vq1bLPnj3rbuvbt68dFxdX7BiWZXmce9OaYmNj\n7ZEjR7qfF52jefPmlTpmcX73u9/ZlmXZ+/btc7cVFhbaUVFRdps2bTzeD//617/sGjVq2A899JC7\nbebMmbZlWfbgwYPLtb9Dhw55nY/Lx3r44Yc92idNmmT7+fnZJ06csG3btk+dOmWHhoZ6nAPbvvje\njYuLs++4444K11Dc+3/Xrl12QECAPXfuXHfbmjVrbMuy7KioKPv48ePu9tWrV9uWZdnTp0/3Oq4i\npvWX9Xlm8nnH9A8AwA2vX79+ioiIUOPGjTVs2DA1aNBAGRkZio6OVnp6ulwulx544AHl5+e7H35+\nfkpISNDq1avd4wQGBrr/ferUKR05ckStWrVS3bp1lZOT47XfMWPGeH1prk6dOvr3v/+t//73v8XW\n6nQ6lZOT454uUCQmJkbDhw/Xhg0bdOLECY9tHn/8cY/nPXv2lCTt3r271PNSVi1lKboy73K5dOzY\nMeXn56tXr146ffp0uf/MX9k1Xe7jjz9WaGiopk6dWinjbd68WXl5eRo/frzH+6FDhw7q3bu3MjIy\nvLb5xS9+USn7lqTx48d7PO/Zs6dcLpd7+ktmZqZ+/PFHDR8+3OP9fPr0ad1xxx3uL19WxKXHe+bM\nGR05ckQhISFq0aKFNm/e7NX/kUceUUhIiPt5UlKSbr755mLPUZGqrN8U0z8AAJWrqpe/qoIvSC1a\ntEht2rRRQECAGjdurIYNG7pfKwp/bdq0KXbb4OBg97+PHTump556Sh9//LGOHTvm0e/HH3/02vby\nP91LF6c3DBw4UK1atVLbtm3Vt29fDRs2TPHx8ZLkngvdunVrr23btGkj27a1b98+tWvXzt3epEkT\nj36hoaGSVOxc2yuppSxFc7m//vprr2kNxZ2P8jCt6XK7du1Sy5YtK+0LjGX9fFatWqWTJ0+qdu3a\n7vbi3gcVVdbPuuj9nJycXOz2lmXpxx9/9PgftvIqKCjQs88+q/fff99rScqIiAiv/i1atCi2bc2a\nNSXuoyrrN0WoBgBUrmtwVYBOnTqVOA/zwoULkqTPPvtMfn7e/9m8dLm3oUOHKjs7W1OnTtVtt93m\nDk5Dhw51j3OpS6/sFenVq5d2796tv//971q1apWWLVumBQsWaN68eZo2bVqFjq+kJensMn5WJrXs\n3r1bffr0UatWrbRw4UI1btxYNWvW1ObNmzVt2rRiz0d5VMX58fU6yMW9DyqqrJ910XlPS0tTgwYN\niu176dXjKzFx4kQtWbJETz75pLp37646derIsixNmjTpin7epf08qrJ+U4RqAABK0bx5c0lSo0aN\nSrxaLV288pqZmanZs2frmWeecbcXFBSUeUX4cnXr1tXDDz+shx9+WAUFBerfv79mzZql3/zmN+4v\nuV2+8khRm2VZaty48RXtr6K1lHYjlb/97W86e/as/v73v6tRo0bu9qIvgV7qSkNtRWsqTvPmzbVh\nwwadO3euUq5WX/rz6d27t8drubm5CgsL87hKfSUqI/wXXRUPDw/X7bffXqk1rFixQo8++qjmz5/v\n0X706FHVr1/fq39xU4B27tzp9UXOSxX9Pla0/qpEqC6Hzz6Tli3zdRVSixZSJd6pFQBQDoMHD9b0\n6dM1c+ZMrVixwitU5OfnKzw83D03+vIrcq+88soVrel75MgRjz9dBwQEqHXr1lq3bp3OnDmjqKgo\ndezYUcuWLdP06dPdfQ8ePKgPPvjAfYWwMpRVS3BwsHv6y48//qi6deu6+xZdMb30fJw9e1avvvqq\n136Cg4O9pstURU3FGTx4sD799FPNnz+/wle6LxUfH6+oqCilpqZqzJgx7nnl3377rTIzM/Xggw9W\neOyi47rS/0m7VP/+/VW3bl3NmTNHd9xxh9c64IcPHy42AJenBj8/P6/3/0cffaRDhw6pVatWXv2X\nLVump59+2v1+Xb16tbZv366UlJQS99+vXz+j+qsSoboc0tOljz7ydRVS7dqEagC42mJjY/Xiiy9q\nypQp6tKliwYOHKiwsDDt27dPGRkZ6tKli1JTUxUSEqLExES9+OKLKiwsVOPGjZWdna1169apXr16\n5Q7Wbdq0Ua9evRQfH6/w8HB9++23WrJkie666y53oJk/f7569+6tLl26aMyYMbpw4YJSU1Pdd/er\n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\nJDmdTu3evdtjm7vuukv79u2TdHFpkttuu02WZblX9oiNjVVGRoYmT56s1NRUNWjQQIsWLdLAgQMr\n+/gAAACAKlfmOtW+xjrVuNGxTjUAAFdHla1TDQAAAKBshGoAAADAEKEaAAAAMESoBgAAAAwRqgEA\nAABDhGoAAADAEKEaAAAAMESoBgAAAAwRqgEAAABDhGoAAADAEKEaAAAAMESoBgAAAAwRqgEAAABD\nhGoAAADAEKEaAAAAMESoBgAAAAwRqgEAAABDhGoAAADAEKEaAAAAMESoBgAAAAwRqgEAAABDhGoA\nAADAEKEaAAAAMESoBgAAAAwRqgEAAABDhGoAAADAEKEaAAAAMESoBgAAAAwRqgEAAABDhGoAAADA\nEKEaAAAAMESoBgAAAAwRqgEAAABDhGoAAADAEKEaAAAAMESoBgAAAAwRqgEAAABDhGoAAADAEKEa\nAAAAMESoBgAAAAwRqgEAAABDhGoAAADAEKEaAAAAMESoBgAAAAwRqgEAAABDhGoAAADAEKEaAAAA\nMESoBgAAAAwRqgEAAABDhGoAAADAEKEaAAAAMESoBgAAAAwRqgEAAABDhGoAAADAEKEaAAAAMESo\nBgAAAAwRqgEAAABDhGoAAADAEKEaAAAAMESoBgAAAAwRqgEAAABDhGoAAADAEKEaAAAAMESoBgAA\nAAwRqgEAAABDhGoAAADAEKEaAAAAMESoBgAAAAwRqgEAAABDhGoAAADAEKEaAAAAMESoBgAAAAwR\nqgEAAABDhGoAAADAkJ+vCwBgpqBAWrvWtzVYltS5s1Szpm/rAADAVwjVwDXuzBnp5z/3bQ0FBdLH\nH0t33+3bOgAA8BVCNXCNO33a1xVIISGSy+XrKgAA8B3mVAMAAACGCNUAAACAIUI1AAAAYIhQDQAA\nABgiVAMAAACGCNUAAACAIUI1AAAAYIhQDQAAABgiVAMAAACGCNUAAACAoWviNuX+/r7d//nzvt0/\nAAAAqrdrIlSfO+frCgAAAICSMf0DAAAAMESoBgAAAAwRqgEAAABDhGoAAADAEKEaAAAAMESoBgAA\nAAwRqgEAAABDhGoAAADAEKEaAAAAMESoBgAAAAwRqgEAAABDhGoAAADAEKEaAAAAMESoBgAAAAwR\nqgEAAABD5QrVr7/+uuLi4hQYGKj4+HhlZ2eX2n/r1q3q1auXgoKC1LBhQz333HMer2dlZcnhcHg9\n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\n", "text": [ "" ] } ], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [ "pval = np.mean(stats >= pearson(table))\n", "pval" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 10, "text": [ "0.22777" ] } ], "prompt_number": 10 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Not significant!" ] } ], "metadata": {} } ] }