{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "class HypothesisTest():\n", " def __init__(self, data):\n", " self.data = data\n", " self.MakeModel()\n", " self.actual = self.TestStatistic(data)\n", "\n", " def PValue(self, iters=1000):\n", " \"Returns p-value of actual data based on simulated data.\"\n", " self.test_stats = [self.TestStatistic(self.RunModel()) \n", " for _ in range(iters)]\n", "\n", " count = sum(1 for x in self.test_stats if x >= self.actual)\n", " return count / iters\n", "\n", " def TestStatistic(self, data):\n", " \"Test statistic for the current test.\"\n", " raise UnimplementedMethodException()\n", "\n", " def MakeModel(self):\n", " pass\n", "\n", " def RunModel(self):\n", " \"Returns a simulated data sample.\"\n", " raise UnimplementedMethodException()" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import random" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0.26367687539030094" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "random.random()" ] }, { "cell_type": "code", "execution_count": 66, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from math import sin\n", "\n", "class PileFaceTest(HypothesisTest):\n", " \"data = [0, 0, 0, 0]\"\n", "\n", " def TestStatistic(self, data):\n", " return sum([sin(x) for x in data]) / len(data) \n", " \n", " def RunModel(self):\n", " data = []\n", " for _ in range(len(self.data)):\n", " x = random.random()\n", " data.append(x)\n", " return data" ] }, { "cell_type": "code", "execution_count": 67, "metadata": { "collapsed": true }, "outputs": [], "source": [ "pft = PileFaceTest([0, 0, 0, 0])" ] }, { "cell_type": "code", "execution_count": 68, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[0.1917714179922031,\n", " 0.41156684614997496,\n", " 0.9335259573569674,\n", " 0.10698235419583546]" ] }, "execution_count": 68, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pft.RunModel()" ] }, { "cell_type": "code", "execution_count": 69, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0.21036774620197413" ] }, "execution_count": 69, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pft.TestStatistic([0, 0, 1, 0])" ] }, { "cell_type": "code", "execution_count": 70, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0.0" ] }, "execution_count": 70, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pft.actual" ] }, { "cell_type": "code", "execution_count": 83, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "1.0" ] }, "execution_count": 83, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pft.PValue(iters=100000)" ] }, { "cell_type": "code", "execution_count": 84, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "plt.style.use('bmh')\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 85, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def plot_test_stat(test, title=\"\"):\n", " \"Plots the test statistic distribution and observed value.\"\n", " plt.hist(test.test_stats, bins=30, cumulative=False, normed=True)\n", " ylim = plt.ylim()\n", " plt.vlines(test.actual, *ylim, label='observed test stat')\n", " plt.legend(loc='upper left')\n", " plt.xlabel('test statistic')\n", " plt.title(title)" ] }, { "cell_type": "code", "execution_count": 86, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(-0.1, 1)" ] }, "execution_count": 86, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXkAAAESCAYAAAAYMKWkAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xt8VfWZ7/HPA0S8AHGChpsNcquXNoJgFWsrrxoH0VZt\nQUVtHetxvNZqO16KVmvt1L5UZmrHy/FSHMceyqgnOmpbkDLgsRMEFDE09Va5KGBCKEYJGQooec4f\neycTQ5K9d9bO3jvr932/XvvFXnv91lrPL2vxZOXZa/2WuTsiIhJPffIdgIiI9BwleRGRGFOSFxGJ\nMSV5EZEYU5IXEYkxJXkRkRhLmeTNrL+ZrTCz18ysxsxu7aDNhWa2xcxWJV//q2fCFRGRTPRL1cDd\nd5nZV9x9h5n1BZaa2QJ3f7ld08fd/eqeCVNERLojrXKNu+9Ivu1P4hdDR3dQWbaCEhGR7EgryZtZ\nHzN7DdgMLHL3VzpoNt3Mqs3sSTM7JKtRiohIt6R7Jt/s7kcDhwDHmdmR7Zo8Bxzq7hOAxcBj2Q1T\nRES6wzIdu8bMfgQ0ufvPO5nfB2hw9wPbz7viiit87dq1DB06FIADDjiAsWPHMmHCBACqq6sBemS6\n5X1Prb8QpysrK3P28y2E6dD6W11dzZo1azjrrLMKJp5cTLd8Vijx9FS+WrhwIQBDhw5l/PjxXHvt\ntd0qiadM8mZ2EPCxu28zs/2AhcAd7j6/TZuh7r45+f4bwPXu/sX261q8eLFPnDixO3FGUlJSAkBD\nQ0POt51Pd9xxB7Nmzcp3GDkTWn9BfQ7FqlWrqKio6FaST3l1DTAMeCx5ht4HeMLd55vZbcAr7v5b\n4GozOwP4GGgAvt2dYCS7NmzYkO8Qciq0/oL6LKmlcwllDbDX6be739rm/U3ATdkNTUREotIdrzF2\n/vnn5zuEnAqtv6A+S2pK8jH2pS99Kd8h5FRo/QX1WVJLpyafE01NTWzbtg2z7N9T9dBDDwFQW1ub\n9XUXsm3btlFcXJzvMHKms/66O8XFxQwYMCAPUfWsqqqq4JJeiH2OoiCS/AcffADA8OHDeyTJn332\n2VlfZ28wfPjwfIeQU531191paGhg165dDB48OMdRieRXQZRrWv7z9USCFzEzBg8ezK5du/IdStaF\neEYbYp+jKIgkLyIiPUNJXqQXq6qqyncIORdin6NQko/oO9/5Dj/72c/yHUZG7rzzTi6//PJ8hyEi\nOaAkH6jOvv9YunQpn//857OyjTPOOIO5c+fmZNk777yTK664olvb6s1CrE+H2OcolOR7gT179uRs\nW+6uL8BFYkRJPg1//vOfOeOMMxg1ahQnnHACzz///Kfmf/DBB0yfPp2ysjLOOOMMNm3a1Drvpptu\n4rDDDuPQQw/lxBNP5K233gJg9+7d3HLLLRx11FEcccQRXHfdda1Xf7ScTd9zzz0cccQRfPe732Xy\n5MksWrSodb179uxh3Lhx1NTUAPDKK68wbdo0Ro0axZQpU1i6dGlr2w0bNnD66aczcuRIZsyY0elA\nbTt27GDmzJls3ryZsrIyysrKqK+vx935xS9+waRJkxg3bhwXX3wx27ZtAxJXRl1++eWMHTuWUaNG\ncfLJJ7N161Zuv/12li1bxg9+8APKyso6HFAq02VvvPFGysvLGTlyJBUVFSxfvhyAxYsXc/fdd/Mf\n//EflJWVMWXKlMx2cC8WYn06xD5HURDXyafSMopkVN0ZhfKTTz7h/PPP54ILLuDpp59m2bJlfPOb\n3+SFF15gzJgxQGKI2yeeeIJJkybxox/9iEsvvZT58+ezZMkSVqxYwcqVKxk4cCDvvPNO6806t956\nKxs3bqSqqoq+ffty6aWXMnv2bG6++WYAtmzZwrZt2/jjH/9Ic3Mz9957L5WVlfzt3/4tkEhsgwcP\npry8nNraWs477zweeughKioqePHFF7nwwgt5+eWXKSkp4ZJLLuG4447j6aefZuXKlcycOZOvfvWr\ne/V1//3358knn+Tyyy9v/eUB8MADD7BgwQJ+97vfMXjwYGbNmsV1113HL3/5S/793/+d7du38/rr\nr7PPPvtQU1PDvvvuyw9/+ENWrFjBOeecw7e+9a0Of7aZLjtp0iRmzZrFwIEDefDBB7noootYvXo1\nFRUVfP/73+fdd9/lgQceyHgfi8SZzuRTWLlyJTt27OCaa66hX79+fPnLX+aUU07hqaeeam0zdepU\nJk+eTFFRETfffDMrV66ktraWoqIimpqaePvtt3F3xo0bR2lpKQBz587l9ttvZ9CgQRxwwAFcc801\nn1pn3759mTVrFkVFRfTv358ZM2awYMECdu7cCcBTTz3VOo54ZWUlU6dOpaKiAoApU6YwYcIEFi1a\nxKZNm6iurubGG2+kqKiI448/nmnTpmX0M3jssce4+eabGTp0KEVFRVx//fU899xzNDc3U1RUREND\n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\niEiM/X9TJSfCtWSCWQAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_test_stat(pft)\n", "plt.xlim(-0.1, 1)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "pft2 = PileFaceTest()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.2" } }, "nbformat": 4, "nbformat_minor": 0 }