From 1847fe3a265efe40e104526e7e38c7d05d2cf46f Mon Sep 17 00:00:00 2001 From: omegadan01 Date: Fri, 17 Nov 2017 10:49:34 -0500 Subject: [PATCH 01/11] Made 2 jupyter NOTEBoooKS --- exercise_12A.ipynb | 34 ++++++++++++++++++++++++++++++++++ exercise_12B.ipynb | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 exercise_12A.ipynb create mode 100644 exercise_12B.ipynb diff --git a/exercise_12A.ipynb b/exercise_12A.ipynb new file mode 100644 index 0000000..caea616 --- /dev/null +++ b/exercise_12A.ipynb @@ -0,0 +1,34 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "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.6" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/exercise_12B.ipynb b/exercise_12B.ipynb new file mode 100644 index 0000000..caea616 --- /dev/null +++ b/exercise_12B.ipynb @@ -0,0 +1,34 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "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.6" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} From 95cb3824a92a57df34b6263d4564776fee86d037 Mon Sep 17 00:00:00 2001 From: omegadan01 Date: Fri, 17 Nov 2017 11:19:03 -0500 Subject: [PATCH 02/11] push notebook --- .idea/vcs.xml | 6 ++++++ exercise_12B.ipynb | 23 ++++++++++++++++++++--- 2 files changed, 26 insertions(+), 3 deletions(-) create mode 100644 .idea/vcs.xml diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/exercise_12B.ipynb b/exercise_12B.ipynb index caea616..7f018ef 100644 --- a/exercise_12B.ipynb +++ b/exercise_12B.ipynb @@ -1,13 +1,30 @@ { "cells": [ { - "cell_type": "code", - "execution_count": null, + "cell_type": "heading", "metadata": { "collapsed": true }, + "level": 1, + "source": [ + "Exercise 2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### A)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, "outputs": [], - "source": [] + "source": [ + "times = [1:00,2:40,4:50,10:50,11:59,12:00,12:01, 13:50, 15:10, 17:20, 20:20, 22:22, 23:00, :23:59, 24:00]\n" + ] } ], "metadata": { From 56080d9dc8506fa2105aeacc02297591a76cda14 Mon Sep 17 00:00:00 2001 From: omegadan01 Date: Fri, 17 Nov 2017 11:19:23 -0500 Subject: [PATCH 03/11] push notebook --- exercise_12B.ipynb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/exercise_12B.ipynb b/exercise_12B.ipynb index 7f018ef..4a2cca6 100644 --- a/exercise_12B.ipynb +++ b/exercise_12B.ipynb @@ -23,7 +23,8 @@ "metadata": {}, "outputs": [], "source": [ - "times = [1:00,2:40,4:50,10:50,11:59,12:00,12:01, 13:50, 15:10, 17:20, 20:20, 22:22, 23:00, :23:59, 24:00]\n" + "times = [1:00,2:40,4:50,10:50,11:59,12:00,12:01, 13:50, 15:10, 17:20, 20:20, 22:22, 23:00, :23:59, 24:00]\n", + "HAllo" ] } ], From 3007569d3e3721ea2d4fade00be1b27e48812bd8 Mon Sep 17 00:00:00 2001 From: Katherine Date: Fri, 17 Nov 2017 15:15:52 -0500 Subject: [PATCH 04/11] Katherine writing the stuff --- exercise_12A.ipynb | 241 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 235 insertions(+), 6 deletions(-) diff --git a/exercise_12A.ipynb b/exercise_12A.ipynb index caea616..3b48997 100644 --- a/exercise_12A.ipynb +++ b/exercise_12A.ipynb @@ -1,5 +1,234 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## The Dataset\n", + "* Column 1 is weight\n", + "* Column 2 is feed type\n", + "\n", + "## The data looks like this:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\nJGjSxH8bguhoaNlS+waVRVKSWcjuTE2b6vqJBFq5Qs6YMWPo3LkzN910E/Xr1wfgtttuo127dlx5\n5ZWMGjWqQosUEfs4HPDBB2aTxJgYE3Bq1YKFC+2uLDQ4HLB4sblm0dEmLNapAx99ZHdlIuGvXBt0\nxsbG8uGHH7J8+XI+++wzDh8+TK1atejRowc9evSo6BpFxGbt28O2baab1OGALl2gRg27qwod7dvD\nTz/p+olUtnKFnJtvvpkbbriB6667jrFjxxKrKRYiYa9WLejVy+4qQpeu38XJyTHjEh0O6NjR7E4u\nUppydVfVq1ePN998k65du1K9enVuuOEG/vjHP/L5559z6tSpiq5RREQi2KZNZgf3226DW28148HO\nMfdFxM9F7V2VlZXFypUrWbVqFStXrmT79u1ER0eTmprKV199VZF1VphQ3btKRCRSXXopZGYWrysU\nFWWCzo8/2luXBL9ydVcVatKkCU2aNOGaa67hyiuvZN68eaxYsYL169dXVH0iIhLBcnJgxw7/cz4f\nbN5sljDQJrFyPuUKOZs2bWLFihWsWLGClStXcvjwYa644gquv/56nnrqKa6//vqKrlNERCJQQsK5\n79NwUClNuULOFVdcQZUqVRg0aBAzZ87k2muvJSkpqaJrExGRCHf48LnvO3nSrEMkci7lCjl33nkn\na9as4Y033iAjI4Prr7+eG264gS5dulC9evWKrlFERCLU+Vpy1FUlpSnX7KpFixZx8OBBvvvuOx58\n8EF+/vlnHn30UWrXrk2HDh0YMWJERdcpIjYqKIBnnoH69c2K26NGmY0nRQItKclsBnumVq3UXSWl\nu6jZVYV2797NF198wVtvvcWKFStwOBx4vd6KqK/CaXaVyIUbOhRmzSoONk4nPPooTJlib10SGY4e\nNaHmwAFzu2FDM/BYXVVSmnK15GRlZfH2228zePBgmjVrRuPGjRkyZAh5eXmMHDmSj7ReuUjYKCiA\nGTP8W27cbpg2zeykLaWzLHO9rr3WrHb81lvawf1C/OlPJugUOnAA/ud/7KtHQke5WnKioqKIj4/n\n6quvLhqP07lzZ6qEwG5zaskRuTAnTpT8idnhgNxciIur/JpCzZgxMH58cSiMjja3tc1f6dxuM/am\ncI2cQk6nmUIeVa6P6hIpyjXweOXKlVx99dXazkEkAlSrBh06wMaN4PGYc04npKUp4JSFxwMTJvi3\n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\nP//8M06nk06dOjF06FCcTicAd955J8OHD+fDDz/k6NGjXHXVVTz11FNF91e2f/7zn+zevZuRI0ey\nf/9+Hn74YX73u98xZ84cTp06xY033sjQoUOLHvfUqVPZuXMn0dHRtGnThhdeeKHUa2JZFosWLeLT\nTz/l+PHjtGzZkscff5w6deoA8P333zN9+nQOHTpEx44dcbvdtlyLQkOHDqVnz56sXLmS3bt3065d\nO0aMGME//vEPVq9eTc2aNfnd735HixYtcLlczJw5k/Xr1+P1euncuTODBw8mNjYWl8vFX/7yF7Zt\n24bH46FVq1YMHz6cunXr8s477/Djjz+ydetWZs6cSceOHXn66acv6GcD5f75dli4cCGLFy/G5XJR\no0YNHnnkEa644greeecdVq1ahcfj4corr+Thhx8mISGBcePG0bZtW/r27Vv0Pf74xz9y5ZVXctdd\ndwGwc+dO/vGPf3Dw4EHatWvHk08+SdWqVQHzWvz73/9OdnY2NWvWJD09nc6dOwPm9f/OO++wd+9e\nEhMT6d69OwMHDsThcJT6OrDzeq1atYqaNWvy4IMPAvDLL78wfPhw/vWvfwHm92CbNm3YvHkz27dv\nJyUlhWeffZZ69eoxatQotmzZwubNm5k5cyYTJkw462cuXbqUBQsWcOzYMS699FIee+wxGjVqxPLl\ny1m2bBl/+tOfAHj22WeJiYnhf/7nfwB48cUX6dGjB127duXo0aO8+eabbNy4EafTSY8ePbj33nuJ\niooqes9p27YtS5cupXPnzgwfPrySrugZLKkUHo/HGjFihPX6669bp06dsgoKCqyNGzdalmVZn3/+\nedG5N954w3r88ceLvu6BBx6wNm3aZFmWZZ04ccLatm2bZVmWtXPnTmvAgAHWDz/8YHm9Xuubb76x\nBgwYYOXk5FiWZVnPPfec9fHHH1uWZVn/+c9/rN69e1uLFy+2PB6PtWbNGqtfv37WqVOnKvMS+Bky\nZIg1YsQI68CBA5bL5bJGjhxpzZ4929q9e7fVt29f65tvvrE8Ho/1ySefWAMGDLBOnDhR9LgefPBB\na8eOHZbH47EKCgou6hqlp6db27dvt/Lz862pU6dao0aNsizLsvLy8qzBgwdb//73vy232239/PPP\n1kMPPWRt2LDBsizL2r59u/Xjjz9aHo/H2rdvnzVs2DDr/fffL3p8vXr1skaPHm0dP37cOnr0qPXw\nww9bn332WaVd30JDhgyx1q9fb82ZM8eaNGmSZVmWtW/fPqtXr17Wq6++auXm5lp79+617r33Xuu7\n776zLMuyJk2aZM2fP9/yer1Wfn5+0bUt7Zp89NFH1ogRI6x9+/ZZbrfbeuedd6yRI0dalmVZx48f\nt/r3728tW7bM8ng81n/+8x/rrrvusubMmVPp16TQkCFDrN/97nfWoUOHrJMnT1qPP/649dhjjxU9\n92bPnm09/fTTlmVZ1sSJE61XXnnFOnXqlHXixAlr9OjR1qxZsyzLMs+51atXW3l5edapU6esl156\nyRo7dmzRzzn9tVienx2Inx8ohc+JQ4cOWZZlWfv377d2795tzZkzx/rtb39rHTp0qKj+V1991bIs\ny1q9erX1xBNPFH2PQ4cOWXfffbd19OhRy7LMtXrsscesvXv3WqdOnbLGjh1rvfzyy5ZlWdbhw4et\nAQMGWF9++aXl8XisLVu2WPfdd5+1a9cuy7Isa+PGjdbOnTstr9dr7dy500pPT7dWr15tWVbprwM7\nr9crr7xi/eMf//D7d7169Sq6/dxzz1lDhgyxsrOzrYKCAuull14quiaF95/+f3769/v++++te++9\n19q8ebNVUFBgzZ4923r00Uctt9ttHTx40LrnnnusgoICy+VyWenp6db9999v5eXlWQUFBVbfvn2t\nQ4cOWV6v13r66aetWbNmWfn5+dahQ4esp556yvrkk08sy7KKXt8LFy603G63lZeXF9DreD7qrqok\nP/30E/v372fo0KEkJCTgdDq57LLLAOjRo0fRufvuu49du3Zx/PhxAKKjo/n5559xuVxUrVq1aPDg\nJ598wk033USbNm2IioriqquuomnTpqxfv77En1+7dm1uv/12oqOj6dy5Mw6Hg927d1fOgz+HO+64\ng7p161KlShU6d+7Mjh07WLVqFampqVx11VVER0dzyy23UKdOHdatW1f0dd26deOSSy4hOjoap9N5\nUdeoa9euNGvWjNjYWB588EF+/PFHDh06xLp166hZsyY9e/YkJiaGX/3qV9x8882sXLkSgGbNmtG6\ndWuio6NJTk7mlltuYdOmTX6P75577qFatWrUqFGDK6+8kh07dlTCVS27e++9l/j4eOrXr0/btm3Z\nuXMnADExMRw4cIAjR44QGxtb1PJV2jVZsmQJ6enpJCcnExMTw3333cf27ds5ePAg69ato2HDhnTr\n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\nYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas\n", + "chicks = pandas.read_csv(\"chickwts.txt\")\n", + "import plotnine\n", + "from plotnine import *\n", + "p=(ggplot(data=chicks) +\n", + " aes(x=\"feed\",y=\"weight\") +\n", + " geom_point(color=\"blue\") +\n", + " theme_classic())\n", + "p" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Is chick weight different when they're fed soybean feed vs sunflower feed?\n", + "### Hypotheses:\n", + "* Null hypothesis: There's no difference" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def null(p,obs):\n", + " B0=p[0]\n", + " sigma=p[1]\n", + " \n", + " expected=B0\n", + " nll= -1*scipy.stats.norm(expected,sigma).logpdf(chicks.feed).sum()\n", + " return nll" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Alternate hypothesis:" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def alter(p,obs):\n", + " B0=p[0]\n", + " B1=p[1]\n", + " sigma=p[2]\n", + " \n", + " expected=B0+B1*obs.mutation\n", + " nll= -1*scipy.stats.norm(expected,sigma).logpdf(chicks.feed).sum()\n", + " return nll" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Then we have to subset the data to only include chicks fed soybeans or sunflowers:\n", + "#### Note: Must change feed names to integers so that numpy can understand\n", + "* soybean=1 \n", + "* sunflower=2" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "chicks = pandas.read_csv(\"chickwts.txt\")\n", + "subset1 = chicks.loc[chicks.feed.isin(['1','2']),:]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Let's test it using a likelihood ratio test!\n", + "#### First import your packages" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import numpy\n", + "import scipy\n", + "from scipy import optimize\n", + "from scipy import stats\n", + "from scipy.stats import norm\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### The fit" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Optimization terminated successfully.\n", + " Current function value: 140.784019\n", + " Iterations: 48\n", + " Function evaluations: 90\n" + ] + }, + { + "ename": "AttributeError", + "evalue": "'DataFrame' object has no attribute 'mutation'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[0malterGuess\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mnumpy\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0marray\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[0mfitNull\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mscipy\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0moptimize\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mminimize\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mnull\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0minitialGuess\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mmethod\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m\"Nelder-Mead\"\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0moptions\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33m{\u001b[0m\u001b[1;34m'disp'\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;32mTrue\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0msubset1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 4\u001b[1;33m \u001b[0mfitAlter\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mscipy\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0moptimize\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mminimize\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0malter\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0malterGuess\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mmethod\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m\"Nelder-Mead\"\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0moptions\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33m{\u001b[0m\u001b[1;34m'disp'\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;32mTrue\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0msubset1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 5\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfitNull\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 6\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfitAlter\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\Anaconda\\lib\\site-packages\\scipy\\optimize\\_minimize.py\u001b[0m in \u001b[0;36mminimize\u001b[1;34m(fun, x0, args, method, jac, hess, hessp, bounds, constraints, tol, callback, options)\u001b[0m\n\u001b[0;32m 436\u001b[0m callback=callback, **options)\n\u001b[0;32m 437\u001b[0m \u001b[1;32melif\u001b[0m \u001b[0mmeth\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;34m'nelder-mead'\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 438\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0m_minimize_neldermead\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfun\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mx0\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcallback\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0moptions\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 439\u001b[0m \u001b[1;32melif\u001b[0m \u001b[0mmeth\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;34m'powell'\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 440\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0m_minimize_powell\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfun\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mx0\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcallback\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0moptions\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\Anaconda\\lib\\site-packages\\scipy\\optimize\\optimize.py\u001b[0m in \u001b[0;36m_minimize_neldermead\u001b[1;34m(func, x0, args, callback, maxiter, maxfev, disp, return_all, initial_simplex, xatol, fatol, **unknown_options)\u001b[0m\n\u001b[0;32m 515\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 516\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mk\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mN\u001b[0m \u001b[1;33m+\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 517\u001b[1;33m \u001b[0mfsim\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mk\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msim\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mk\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 518\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 519\u001b[0m \u001b[0mind\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnumpy\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0margsort\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfsim\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\Anaconda\\lib\\site-packages\\scipy\\optimize\\optimize.py\u001b[0m in \u001b[0;36mfunction_wrapper\u001b[1;34m(*wrapper_args)\u001b[0m\n\u001b[0;32m 290\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mfunction_wrapper\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mwrapper_args\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 291\u001b[0m \u001b[0mncalls\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m+=\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 292\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mfunction\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mwrapper_args\u001b[0m \u001b[1;33m+\u001b[0m \u001b[0margs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 293\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 294\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mncalls\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfunction_wrapper\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m\u001b[0m in \u001b[0;36malter\u001b[1;34m(p, obs)\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[0msigma\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mp\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 6\u001b[1;33m \u001b[0mexpected\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mB0\u001b[0m\u001b[1;33m+\u001b[0m\u001b[0mB1\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mobs\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmutation\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 7\u001b[0m \u001b[0mnll\u001b[0m\u001b[1;33m=\u001b[0m \u001b[1;33m-\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mscipy\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mstats\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mnorm\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mexpected\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0msigma\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlogpdf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mchicks\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfeed\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msum\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 8\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mnll\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\Anaconda\\lib\\site-packages\\pandas\\core\\generic.py\u001b[0m in \u001b[0;36m__getattr__\u001b[1;34m(self, name)\u001b[0m\n\u001b[0;32m 3079\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mname\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_info_axis\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3080\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mname\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 3081\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mobject\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__getattribute__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mname\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 3082\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3083\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0m__setattr__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mname\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mvalue\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mAttributeError\u001b[0m: 'DataFrame' object has no attribute 'mutation'" + ] + } + ], + "source": [ + "initialGuess=numpy.array([1,1])\n", + "alterGuess=numpy.array([1,1,1])\n", + "fitNull=scipy.optimize.minimize(null,initialGuess,method=\"Nelder-Mead\",options={'disp':True},args=subset1)\n", + "fitAlter=scipy.optimize.minimize(alter,alterGuess,method=\"Nelder-Mead\",options={'disp':True},args=subset1)\n", + "print(fitNull)\n", + "print(fitAlter)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#### The results" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'fitNull' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mD\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m*\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfitNull\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfun\u001b[0m\u001b[1;33m-\u001b[0m\u001b[0mfitAlter\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfun\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m-\u001b[0m\u001b[0mscipy\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mstats\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mchi2\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcdf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mD\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mdf\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mD\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mNameError\u001b[0m: name 'fitNull' is not defined" + ] + } + ], + "source": [ + "D=2*(fitNull.fun-fitAlter.fun)\n", + "1-scipy.stats.chi2.cdf(x=D,df=1)\n", + "print(D)" + ] + }, { "cell_type": "code", "execution_count": null, @@ -12,23 +241,23 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 2", + "display_name": "Python 3", "language": "python", - "name": "python2" + "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.6" + "pygments_lexer": "ipython3", + "version": "3.6.2" } }, "nbformat": 4, - "nbformat_minor": 0 + "nbformat_minor": 1 } From fa3b94cd0172231f5ef01c7df63ddca7b22a9c53 Mon Sep 17 00:00:00 2001 From: Katherine Date: Mon, 20 Nov 2017 16:12:23 -0500 Subject: [PATCH 05/11] Committing Dan's edits. Question 1 done! --- exercise12A.ipynb | 288 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 288 insertions(+) create mode 100755 exercise12A.ipynb diff --git a/exercise12A.ipynb b/exercise12A.ipynb new file mode 100755 index 0000000..27ef87d --- /dev/null +++ b/exercise12A.ipynb @@ -0,0 +1,288 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## The Dataset\n", + "* Column 1 is weight\n", + "* Column 2 is feed type\n", + "\n", + "## The data looks like this:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n6FGifprwHxUVxdGjR0uey83NJS0treT5Ys2bNyc2NpbY2Fg6qiqRiIhY6O23yy5kWFRkLkK3c6d1\nMbmT5YnGxYsX+fzzz8nNzcXlcvH999/z0Ucf8bvf/Y6YmBj8/f1Zt24dDoeDbdu2kZKSQp+flgQc\nMGAAiYmJ7N69m8LCQuLj44mOji4zPkNERMST/DRksAzDMOu2eCOP6DrZuHEjf//733G5XISHhzNi\nxAhuu+02bDYbzzzzDAsXLmT16tVEREQwY8YMGjVqBECrVq2YMmUKixYtIisri/bt2/PEE09YfDQi\nIiKV86nkI77dXrtx1BYtEy8iIlKLevUya7T83Jdfwg031H487latrpOtW7dy8eLFCp+7ePEiW7du\nvaKgREREvNWMGWVbNfz9oWdP6NHDupjcqVqJxsCBA/n+++8rfO7gwYMMHDjwioISERHxVrffDmvX\nmvVY2rSBu+6CTz81Fzr0RtU6rF/qbaloeqmIiIiUGjHCfNQHVU40vv76a7788suS7fj4eLZt21bm\na/Lz83n//fc1hVRERESAy0g0Pvnkk5Lqmjabjddff73c1/j5+dGxY0feeOONmotQRERE6qwqj9F4\n7rnncLlcuFwuDMPg66+/LtkufhQUFLB792569+7tzphFRESkjqjWGI1LK3WKex07Bm+9BdnZ0Ls3\njB2rdRZERKTuqPYY16KiIr755htOnDhBfn5+uefvueeeKwpM4Pvv4frroaDAXOVv8WL46itYuNDq\nyERERKqmWolGYmIiI0eOJDU1tcIZKDabTYlGDZg+HfLyzDr4xRYtgkmTzNX+REREPF21Eo1JkyZx\n1VVXsWzZMjp16oS/v39NxyXAkSNlkwwwS9SmpCjREBGRuqFaicb+/fv55z//Sf/+/Ws6HrlEp07m\nGI2fr/LXtq11MYmIiFyOalUGvfbaa/nxxx9rOhb5mfnzISwMAgLMh48PzJoF115rdWQiIiJVU60W\njddee42pU6fStWtXOnToUNMxyU+io2HfPoiPh/PnoU8fuPlmq6MSERGpuionGjExMdgumVd5+vRp\nunTpwtVXX12ybHsxm83Gnj17ai7KeiwiAqZNszoKERGR6qlyotG9e/cyiYaIiIjIr6lyovHuu++6\nMQwRERHxRtUaDCoiIiJSFdUaDHr//fdX+pyPjw9XXXUV3bp1Y+TIkQQFBVU7OBFxjyVLzBlMFy6Y\n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\n8DGkoVJvAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "import pandas\n", + "chicks = pandas.read_csv(\"chickwts.txt\")\n", + "import plotnine\n", + "from plotnine import *\n", + "p=(ggplot(data=chicks) +\n", + " aes(x=\"feed\",y=\"weight\") +\n", + " geom_point(color=\"blue\") +\n", + " theme_classic())\n", + "print p" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Is chick weight different when they're fed soybean feed vs sunflower feed?\n", + "### Hypotheses:\n", + "* Null hypothesis: There's no difference" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def null(p,obs):\n", + " B0=p[0]\n", + " sigma=p[1]\n", + " \n", + " expected=B0\n", + " nll= -1*scipy.stats.norm(expected,sigma).logpdf(obs.weight).sum()\n", + " return nll" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Alternate hypothesis:" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def alter(p,obs):\n", + " B0=p[0]\n", + " B1=p[1]\n", + " sigma=p[2]\n", + " \n", + " expected=B0+B1*obs.x # error?\n", + " nll= -1*scipy.stats.norm(expected,sigma).logpdf(obs.weight).sum()\n", + " return nll" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Then we have to subset the data to only include chicks fed soybeans or sunflowers:\n", + "#### Note: Must change feed names to integers so that numpy can understand\n", + "* soybean=0\n", + "* sunflower=1" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\NicCage\\Anaconda2\\lib\\site-packages\\ipykernel_launcher.py:5: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n", + " \"\"\"\n" + ] + } + ], + "source": [ + "chicks = pandas.read_csv(\"chickwts.txt\")\n", + "\n", + "#fixed subset\n", + "subset1 = chicks.loc[chicks['feed'].isin(['sunflower','soybean'])]\n", + "subset1['x'] = [0 if ele == \"soybean\" else 1 for ele in subset1[\"feed\"]]\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Let's test it using a likelihood ratio test!\n", + "#### First import your packages" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import numpy\n", + "import scipy\n", + "from scipy import optimize\n", + "from scipy import stats\n", + "from scipy.stats import norm\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### The fit" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Optimization terminated successfully.\n", + " Current function value: 145.240592\n", + " Iterations: 85\n", + " Function evaluations: 162\n", + "Optimization terminated successfully.\n", + " Current function value: 138.469162\n", + " Iterations: 200\n", + " Function evaluations: 363\n", + " final_simplex: (array([[ 284.49999051, 64.53691755],\n", + " [ 284.49994818, 64.53700563],\n", + " [ 284.50008783, 64.53694034]]), array([ 145.2405921, 145.2405921, 145.2405921]))\n", + " fun: 145.24059209701645\n", + " message: 'Optimization terminated successfully.'\n", + " nfev: 162\n", + " nit: 85\n", + " status: 0\n", + " success: True\n", + " x: array([ 284.49999051, 64.53691755])\n", + " final_simplex: (array([[ 246.42855057, 82.48813575, 49.73948886],\n", + " [ 246.42852198, 82.48806896, 49.73943687],\n", + " [ 246.42847238, 82.48817448, 49.73945349],\n", + " [ 246.42854646, 82.48810237, 49.73950669]]), array([ 138.46916182, 138.46916182, 138.46916182, 138.46916182]))\n", + " fun: 138.4691618247918\n", + " message: 'Optimization terminated successfully.'\n", + " nfev: 363\n", + " nit: 200\n", + " status: 0\n", + " success: True\n", + " x: array([ 246.42855057, 82.48813575, 49.73948886])\n" + ] + } + ], + "source": [ + "initialGuess=numpy.array([1,1])\n", + "alterGuess=numpy.array([1,1,1])\n", + "fitNull=scipy.optimize.minimize(null,initialGuess,method=\"Nelder-Mead\",options={'disp':True},args=subset1)\n", + "fitAlter=scipy.optimize.minimize(alter,alterGuess,method=\"Nelder-Mead\",options={'disp':True},args=subset1)\n", + "print(fitNull)\n", + "print(fitAlter)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "#### The results" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "result\n", + "0.000233176728695\n" + ] + } + ], + "source": [ + "D=2*(fitNull.fun-fitAlter.fun)\n", + "print \"result\"\n", + "print 1-scipy.stats.chi2.cdf(x=D,df=1)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "# sunflower seed sig increases weight!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "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.6.2" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} From 3cdfd18e462f709cd2f42bb7316c27790e89fda1 Mon Sep 17 00:00:00 2001 From: Mati Nemera Date: Tue, 21 Nov 2017 20:02:55 -0500 Subject: [PATCH 06/11] Code for exercise 12 B --- exercise12Bcode.py | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100755 exercise12Bcode.py diff --git a/exercise12Bcode.py b/exercise12Bcode.py new file mode 100755 index 0000000..11de7ea --- /dev/null +++ b/exercise12Bcode.py @@ -0,0 +1,7 @@ +import re +a = r'([1][2-9]|[2][0-3]):[0-5][0-9]' +re.search(a, "21:30") +b = r'[A-Z]\.\s[a-z]+' +re.search(b,"H. sapiens") +c = r'[0-9]{3}-[0-9]{2}-[0-9]{4}' +re.search(c,"389-05-4771") From c0c6f3f6953558f19fe8c49e7b2034bbe00b022b Mon Sep 17 00:00:00 2001 From: Katherine Date: Wed, 22 Nov 2017 13:59:25 -0500 Subject: [PATCH 07/11] Done --- exercise12B.html | 12028 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 12028 insertions(+) create mode 100755 exercise12B.html diff --git a/exercise12B.html b/exercise12B.html new file mode 100755 index 0000000..ddfa666 --- /dev/null +++ b/exercise12B.html @@ -0,0 +1,12028 @@ + + + +Untitled3 + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+
+

Exercise 12 problem 2

Regular experesions are a powerful tool to select only the text string you want.

+

Follow along on this exercise due the day after thanksgiving :( for three useful scenarios.

+ +
+
+
+
+
+
+
+
+

Load the library

+
+
+
+
+
+
In [35]:
+
+
+
import re
+
+ +
+
+
+ +
+
+
+
+
+
+

2-1 selecting times with regex

times after noon but before midnight in military times (12:01 to 23:59)

+ +
+
+
+
+
+
In [36]:
+
+
+
# the regular expression
+a = r'(([1][3-9]|[2][0-3]):[0-5][0-9])|(12:[0-5][1-9])' 
+
+ +
+
+
+ +
+
+
+
+
+
+

Our regular expression captures times by breaking down the military time into selectable portions. +We first select the hour digits with an expression "[1][3-9]|[2][0-3]". This experession captures hours 13-19 or hours 20-23. We then select the ":" and then minutes 00-59 with "[0-5][0-9]". Finally, because we did not want to select noon we have to create an additional or statement that says select everying from 12:01 to 12:59 we do this with: "12:[0-5][1-9]".

+

Let's see this in action.

+ +
+
+
+
+
+
In [37]:
+
+
+
# create an example list, notice there are times we don't want to select
+times = ["1:00","2:40","4:50","10:50","11:59","12:00","12:01", "13:50", "15:10", "17:20", "20:20", "22:22",
+         "23:00", "23:59", "24:00"]
+
+# example
+select_times = re.compile(a)
+time_result = filter(select_times.match, times)
+print str(time_result) 
+
+ +
+
+
+ +
+
+ + +
+
+ +
+
['12:01', '13:50', '15:10', '17:20', '20:20', '22:22', '23:00', '23:59']
+
+
+
+ +
+
+ +
+
+
+
+
+
+

2-2 matching abbreviated species names (G. species) with regex

+
+
+
+
+
+
In [ ]:
+
+
+
# the regular expression
+b = r'[A-Z]\.\s[a-z]+'
+
+ +
+
+
+ +
+
+
+
+
+
+

This regular expression captures only strings containing the abbreviated Genus (G.) with "[A-Z]." It then caputres strings containing a space followed by a lowercase species name of any length with this "\s[a-z]+".

+

Let's check out the example below!

+ +
+
+
+
+
+
In [39]:
+
+
+
# create an example list, notice there are things we don't want to select
+species = ["H. sapiens", "turkey", "t. rot", "thanksgiving", "holiday", "time off", "M. pecosella", "R. pomonella",
+           "Homo. sapiens", "T. Urkey", "T. urkey", "R. elaxing", "stuffing", "Pumpkin pie", "M. stellela"]
+
+# example
+select_species = re.compile(b)
+species_result = filter(select_species.match, species)
+print str(species_result)
+
+ +
+
+
+ +
+
+ + +
+
+ +
+
['H. sapiens', 'M. pecosella', 'R. pomonella', 'T. urkey', 'R. elaxing', 'M. stellela']
+
+
+
+ +
+
+ +
+
+
+
+
+
+

2-3 matching social security numbers (xxx-xx-xxxx) with regex

+
+
+
+
+
+
In [41]:
+
+
+
# the regular expression 
+c = r'[0-9]{3}-[0-9]{2}-[0-9]{4}'
+
+ +
+
+
+ +
+
+
+
+
+
+

Here in this last example, we see that regex is useful for matching the exact format of social security numbers. +"[0-9]{3}-[0-9]{2}-[0-9]{4}" matches 3 of any number, a dash, 2 of any number, a dash, and finally 4 of any number.

+

This code is useful if you ever want to steal social security numbers from a large dataframe! Follow alog in the example below!

+ +
+
+
+
+
+
In [42]:
+
+
+
# create an example list
+social = ["1234567", "1234345", "123-34353-346", "321-33-5543", "234-432-5453", "321-34-454", "232-31-5436", "Turkey", "232-2a-4323"]
+
+# example
+select_social = re.compile(c)
+social_result = filter(select_social.match, social)
+print str(social_result)
+
+ +
+
+
+ +
+
+ + +
+
+ +
+
['321-33-5543', '232-31-5436']
+
+
+
+ +
+
+ +
+
+
+ + + + + + From 979a75532851d8520387ff032154f045178b70bb Mon Sep 17 00:00:00 2001 From: Katherine Date: Wed, 22 Nov 2017 13:59:50 -0500 Subject: [PATCH 08/11] Done --- exercise12B.ipynb | 213 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 213 insertions(+) create mode 100755 exercise12B.ipynb diff --git a/exercise12B.ipynb b/exercise12B.ipynb new file mode 100755 index 0000000..b275989 --- /dev/null +++ b/exercise12B.ipynb @@ -0,0 +1,213 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Exercise 12 problem 2\n", + "\n", + "Regular experesions are a powerful tool to select only the text string you want.\n", + "\n", + "Follow along on this exercise ***due the day after thanksgiving :(*** for three useful scenarios. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Load the library" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import re" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2-1 selecting times with regex\n", + "times after noon but before midnight in military times (12:01 to 23:59)" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# the regular expression\n", + "a = r'(([1][3-9]|[2][0-3]):[0-5][0-9])|(12:[0-5][1-9])' " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Our regular expression captures times by breaking down the military time into selectable portions.\n", + "We first select the hour digits with an expression \"[1][3-9]|[2][0-3]\". This experession captures hours 13-19 or hours 20-23. We then select the \":\" and then minutes 00-59 with \"[0-5][0-9]\". Finally, because we did not want to select noon we have to create an additional or statement that says select everying from 12:01 to 12:59 we do this with: \"12:[0-5][1-9]\".\n", + "\n", + "Let's see this in action. " + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['12:01', '13:50', '15:10', '17:20', '20:20', '22:22', '23:00', '23:59']\n" + ] + } + ], + "source": [ + "# create an example list, notice there are times we don't want to select\n", + "times = [\"1:00\",\"2:40\",\"4:50\",\"10:50\",\"11:59\",\"12:00\",\"12:01\", \"13:50\", \"15:10\", \"17:20\", \"20:20\", \"22:22\",\n", + " \"23:00\", \"23:59\", \"24:00\"]\n", + "\n", + "# example\n", + "select_times = re.compile(a)\n", + "time_result = filter(select_times.match, times)\n", + "print str(time_result) " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2-2 matching abbreviated species names (G. species) with regex" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# the regular expression\n", + "b = r'[A-Z]\\.\\s[a-z]+'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This regular expression captures only strings containing the abbreviated Genus (G.) with \"[A-Z]\\.\" It then caputres strings containing a space followed by a lowercase species name of any length with this \"\\s[a-z]+\". \n", + "\n", + "Let's check out the example below!" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['H. sapiens', 'M. pecosella', 'R. pomonella', 'T. urkey', 'R. elaxing', 'M. stellela']\n" + ] + } + ], + "source": [ + "# create an example list, notice there are things we don't want to select\n", + "species = [\"H. sapiens\", \"turkey\", \"t. rot\", \"thanksgiving\", \"holiday\", \"time off\", \"M. pecosella\", \"R. pomonella\",\n", + " \"Homo. sapiens\", \"T. Urkey\", \"T. urkey\", \"R. elaxing\", \"stuffing\", \"Pumpkin pie\", \"M. stellela\"]\n", + "\n", + "# example\n", + "select_species = re.compile(b)\n", + "species_result = filter(select_species.match, species)\n", + "print str(species_result)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 2-3 matching social security numbers (xxx-xx-xxxx) with regex" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# the regular expression \n", + "c = r'[0-9]{3}-[0-9]{2}-[0-9]{4}'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here in this last example, we see that regex is useful for matching the exact format of social security numbers. \n", + "\"[0-9]{3}-[0-9]{2}-[0-9]{4}\" matches 3 of any number, a dash, 2 of any number, a dash, and finally 4 of any number.\n", + "\n", + "\n", + "This code is useful if you ever want to steal social security numbers from a large dataframe! Follow alog in the example below!" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['321-33-5543', '232-31-5436']\n" + ] + } + ], + "source": [ + "# create an example list\n", + "social = [\"1234567\", \"1234345\", \"123-34353-346\", \"321-33-5543\", \"234-432-5453\", \"321-34-454\", \"232-31-5436\", \"Turkey\", \"232-2a-4323\"]\n", + "\n", + "# example\n", + "select_social = re.compile(c)\n", + "social_result = filter(select_social.match, social)\n", + "print str(social_result)" + ] + } + ], + "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.13" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 359da566adf55bf8e6437d1b0ada5c13c083fbee Mon Sep 17 00:00:00 2001 From: Katherine Date: Wed, 22 Nov 2017 14:00:21 -0500 Subject: [PATCH 09/11] Done --- exercise+12A+dan+edits.html | 12445 ++++++++++++++++++++++++++++++++++ 1 file changed, 12445 insertions(+) create mode 100755 exercise+12A+dan+edits.html diff --git a/exercise+12A+dan+edits.html b/exercise+12A+dan+edits.html new file mode 100755 index 0000000..f941745 --- /dev/null +++ b/exercise+12A+dan+edits.html @@ -0,0 +1,12445 @@ + + + +exercise 12A dan edits + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+
+
+

The Dataset

    +
  • Column 1 is weight
  • +
  • Column 2 is feed type
  • +
+

The data looks like this:

+
+
+
+
+
+
In [3]:
+
+
+
import pandas
+chicks = pandas.read_csv("chickwts.txt")
+import plotnine
+from plotnine import *
+p=(ggplot(data=chicks) +
+    aes(x="feed",y="weight") +
+    geom_point(color="blue") +
+    theme_classic())
+print p
+
+ +
+
+
+ +
+
+ + +
+
+ + + +
+ +
+ +
+ +
+
+ +
+
<ggplot: (16069457)>
+
+
+
+ +
+
+ +
+
+
+
+
+
+

Is chick weight different when they're fed soybean feed vs sunflower feed?

Hypotheses:

    +
  • Null hypothesis: There's no difference
  • +
+ +
+
+
+
+
+
In [36]:
+
+
+
def null(p,obs):
+    B0=p[0]
+    sigma=p[1]
+    
+    expected=B0
+    nll= -1*scipy.stats.norm(expected,sigma).logpdf(obs.weight).sum()
+    return nll
+
+ +
+
+
+ +
+
+
+
+
+
+
    +
  • Alternate hypothesis:
  • +
+ +
+
+
+
+
+
In [37]:
+
+
+
def alter(p,obs):
+    B0=p[0]
+    B1=p[1]
+    sigma=p[2]
+    
+    expected=B0+B1*obs.x # error?
+    nll= -1*scipy.stats.norm(expected,sigma).logpdf(obs.weight).sum()
+    return nll
+
+ +
+
+
+ +
+
+
+
+
+
+

Then we have to subset the data to only include chicks fed soybeans or sunflowers:

Note: Must change feed names to integers so that numpy can understand

    +
  • soybean=0
  • +
  • sunflower=1
  • +
+ +
+
+
+
+
+
In [38]:
+
+
+
chicks = pandas.read_csv("chickwts.txt")
+
+#fixed subset
+subset1 = chicks.loc[chicks['feed'].isin(['sunflower','soybean'])]
+subset1['x'] = [0 if ele  == "soybean" else 1 for ele in subset1["feed"]]
+
+ +
+
+
+ +
+
+ + +
+
+ +
+
C:\Users\NicCage\Anaconda2\lib\site-packages\ipykernel_launcher.py:5: SettingWithCopyWarning: 
+A value is trying to be set on a copy of a slice from a DataFrame.
+Try using .loc[row_indexer,col_indexer] = value instead
+
+See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
+  """
+
+
+
+ +
+
+ +
+
+
+
+
+
+

Let's test it using a likelihood ratio test!

First import your packages

+
+
+
+
+
+
In [39]:
+
+
+
import numpy
+import scipy
+from scipy import optimize
+from scipy import stats
+from scipy.stats import norm
+
+ +
+
+
+ +
+
+
+
+
+
+

The fit

+
+
+
+
+
+
In [40]:
+
+
+
initialGuess=numpy.array([1,1])
+alterGuess=numpy.array([1,1,1])
+fitNull=scipy.optimize.minimize(null,initialGuess,method="Nelder-Mead",options={'disp':True},args=subset1)
+fitAlter=scipy.optimize.minimize(alter,alterGuess,method="Nelder-Mead",options={'disp':True},args=subset1)
+print(fitNull)
+print(fitAlter)
+
+ +
+
+
+ +
+
+ + +
+
+ +
+
Optimization terminated successfully.
+         Current function value: 145.240592
+         Iterations: 85
+         Function evaluations: 162
+Optimization terminated successfully.
+         Current function value: 138.469162
+         Iterations: 200
+         Function evaluations: 363
+ final_simplex: (array([[ 284.49999051,   64.53691755],
+       [ 284.49994818,   64.53700563],
+       [ 284.50008783,   64.53694034]]), array([ 145.2405921,  145.2405921,  145.2405921]))
+           fun: 145.24059209701645
+       message: 'Optimization terminated successfully.'
+          nfev: 162
+           nit: 85
+        status: 0
+       success: True
+             x: array([ 284.49999051,   64.53691755])
+ final_simplex: (array([[ 246.42855057,   82.48813575,   49.73948886],
+       [ 246.42852198,   82.48806896,   49.73943687],
+       [ 246.42847238,   82.48817448,   49.73945349],
+       [ 246.42854646,   82.48810237,   49.73950669]]), array([ 138.46916182,  138.46916182,  138.46916182,  138.46916182]))
+           fun: 138.4691618247918
+       message: 'Optimization terminated successfully.'
+          nfev: 363
+           nit: 200
+        status: 0
+       success: True
+             x: array([ 246.42855057,   82.48813575,   49.73948886])
+
+
+
+ +
+
+ +
+
+
+
In [41]:
+
+
+
#### The results
+
+ +
+
+
+ +
+
+
+
In [43]:
+
+
+
D=2*(fitNull.fun-fitAlter.fun)
+print "result"
+print 1-scipy.stats.chi2.cdf(x=D,df=1)
+# sunflower seed sig increases weight
+
+ +
+
+
+ +
+
+ + +
+
+ +
+
result
+0.000233176728695
+
+
+
+ +
+
+ +
+
+
+
In [ ]:
+
+
+
 
+
+ +
+
+
+ +
+
+
+ + + + + + From 6ab21892e15522ec60e30c061a49875371c6093c Mon Sep 17 00:00:00 2001 From: kinskeep Date: Wed, 22 Nov 2017 22:07:26 -0500 Subject: [PATCH 10/11] Delete exercise_12A.ipynb --- exercise_12A.ipynb | 263 --------------------------------------------- 1 file changed, 263 deletions(-) delete mode 100644 exercise_12A.ipynb diff --git a/exercise_12A.ipynb b/exercise_12A.ipynb deleted file mode 100644 index 3b48997..0000000 --- a/exercise_12A.ipynb +++ /dev/null @@ -1,263 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "collapsed": true - }, - "source": [ - "## The Dataset\n", - "* Column 1 is weight\n", - "* Column 2 is feed type\n", - "\n", - "## The data looks like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjkAAAGxCAYAAACA4KdFAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzs3Xd4VHXe/vH3JJkkJBA6oewSEOkqkFgAUQGxoSiIsApR\nEbCAZVmVXSzLBSzg87CsZWF9QF1YERZQUFxZsSwg1QJBf4JSBJKg9BrKpEw5vz++m4SBQELI5Ey5\nX9d1LpgzJPnMYSZzz7c6LMuyEBEREQkzUXYXICIiIhIICjkiIiISlhRyREREJCwp5IiIiEhYUsgR\nERGRsKSQIyIiImFJIUdERETCkkKOiIiIhCWFHBEREQlLCjkiIiISliIu5LhcLjZs2IDL5bK7FBER\nEQmgiAs5W7ZsIS0tjS1btthdioiIiARQxIUcERERiQwKOSIiIhKWFHJEREQkLCnkiIiISFhSyBER\nEZGwpJAjIiIiYUkhR0RERMKSQo6IiIiEJYUcERERCUsKOSIiIhKWFHJEREQkLCnkiIiISFhSyBER\nEZGwpJAjIiISxrxemDgRWrWC1q1h0iTw+eyuqnLE2F2AiIiIBM7IkTB1Krjd5vYLL8CxYyb4hDu1\n5IiIiIQptxtee6044AB4PDB5cmS05ijkiIiIhKnc3JLDjNsNBQWVX09lU8gREREJU0lJZixOdHTx\nuZgYaNcO4uPtq6uyKOSIiIiEsUWLoEEDcDjM7UaNYOFCe2uqLBp4LCIiEsZatoStW2HDBhN0UlOh\nShW7q6ocCjkiIiJhLiEBunSxu4rKp+4qERERCUsKOSIiIhKWFHJEREQkLCnkiIiISFhSyBEREZGw\npJAjIiIiYUkhR0RERMKSQo6IiIiEJYUcERERCUsKOSIiIhKWFHJEREQkLCnkiIiISFjSBp0h5Msv\n4YMPzC6yffvC1VfbXZGIiEjwUsgJEfPnw4ABEB1tbk+eDAsXQu/e9tYlIiISrNRdFQJ8Phg61Pzp\ndpvD54PBg8Gy7K5OREQkOAVVS87x48cZNmwYDRo0YPLkyQBkZ2czZcoUsrKyqF+/PsOGDaNt27ZF\nX7N48WIWLFhAbm4uaWlpPPHEEyQkJNj1EAIiJwdOnjz7/NGjkJcHVapUfk0iIiLBLqhacmbMmEGT\nJk2Kbns8HsaPH0+nTp2YO3cuffv2ZcKECZz87zv+t99+y7x58xg9ejQzZ87E7XYzffp0m6oPnBo1\nICnp7PN16ijgiIiInEvQhJyNGzeyb98+unXr5ncuPz+fPn364HQ66datG8nJyaxduxaAZcuWceON\nN3LJJZeQkJDAwIEDWb16Nfn5+XY9jIBwOGDWLDMeJy7OHDEx5pyIiIiULCi6qwpbYJ599ll27NhR\ndH7Xrl2kpKQQFVWcxZo2bcquXbsA05WVlpZWdF9KSgo+n489e/bQtGnTynsAleCuu2DdOvjwQxN6\n+vSBK66wuyoREZHgFRQh57333qNDhw40adLEL+Tk5uaSmJjo928TExNxuVwA5OXl+d3vcDhISEgg\nNzfX72v27t3L3r17Adi8eXOgHkbAdehgDhERESmd7SFnz549fPHFF7z22mtn3VelSpWiQFPI5XJR\n5b8DUeLj4897f6Hp06czduzYCq5cREREgpntIWfz5s0cPnyYoUOHAmawcUFBAQMHDuTJJ58kOzsb\nn89X1GWVmZnJrbfeCpjuqczMTG644QbAdF9FRUXRsGFDv5/x6KOPcueddxb9vPT09Mp6eCIiImIT\n20NOly5daNeuXdHtNWvWsHz5cl588UVq1KiB0+lk0aJF9OrVi7Vr17Jv3z46deoEQPfu3Xn55Ze5\n4YYbSE5OZs6cOXTp0oW4uDi/n9GgQQMaNGhQqY9LRERE7GV7yImLi/MLJVWrViUmJoY6deoA8OKL\nLzJ16lT++c9/kpyczPPPP0+1atUA6NChA7/5zW8YO3YsLpeLtLQ0Hn30UVseh4iIiAQXh2VF1pq5\nGzZsIC0tjYyMDFJTU+0uR0RERAIkaNbJERERkYpnWTBtGlx7LXTpAm+9FTlbAtneXSUiIiKBM3Ys\njB8PXq+5/dVXcOgQjBplb12VQS05IeSTT8xGnQ8/DP/5j93ViIhIsPN4YMKE4oAD5u9jxkRGa45a\nckLE3/9uwo3DUXz77bfh/vvtrUtERILXqVMm6JwpPz8yNnhWS04I8PngySdN6vb5zGFZ8PjjkZHE\nRUSkfJKSoEkTOG13JKKjoWXL8A84oJATEo4fhzN2qgDgxAmTxEVEREricMAHH0DNmmZj5+hoqFUL\nFi60u7LKoe6qEFC9OtSuDYcPF59zOKB+/chI4iIiUn7t28O2bbBmjXnv6NIFatSwu6rKoZATAhwO\nmDcP7rjj7HMiIiKlqVULevWyu4rKp5ATInr0gI0b4eOPTcC5/XZo1szuqkRERIKXQk4Iad4cfvtb\nu6sQEREJDRp4LCIiImFJIUdERETCkkKOiIiIhCWFHBGRAHO5YNAgSEw0x8MPa40rkcqgkBMiCgrg\nmWfM2jgNGpiN1dxuu6sSkbIYPBjmzjVhx+WCWbPgscfsrkok/CnkhIjhw2HKFNi/H/btg5dfhqef\ntrsqESlNXh68+675oFKooABmzy55TyERqTgKOSGgoABmzPBvuXG7Ydo0/51lRST4eL0l7zFXuA+d\niASOQk4IyM8v+Zek16tPgiLBLjEROncGp7P4nNMJ3bpBbKx9dYlEAoWcEFCtGnToYDZXK+R0wjXX\nQFycfXWJSNm8/77ZP6jQlVdqWxaRyqAVj0PEBx/ALbfA1q3mdosWsGCBvTWJSNkkJ8PXX8PevcWb\n6zocdlclEv4UckJESgps2mRCjsNhQk6M/vdEQobDAQ0b2l2FSGTR22QIiYmBtm3trkJERCQ0aEyO\niIiIhCWFHBEREQlLCjkiIiISljQmJ4R4vZCZaQYwNm0KUYqoIiIi56S3yRCxe7dZZ6N5c7j0UkhL\nM9s7iIiISMkUckJEnz7Fa+QA/PAD9OtnXz0iIiLBTiEnBJw8CevWnb131Zo1ZssHEREROZtCTghw\nOkteHTUqSgsCioiInItCTgiIi4P77/ffzM/phCFDIDravrpERESCmdoBQsQbb0DVqsWb+j3wAPzv\n/9pbk4iISDBTyAkRcXHwt7+ZQ0REREqn7ioREREJSwo5IiIiEpbUXRVCvvwSPvjAzLTq2xeuvtru\nikRERIKXQk6ImD8fBgwonk01eTIsXAi9e9tbl4iISLBSd1UI8Plg6FDzp9ttDp8PBg8Gy7K7OhER\nkeCkkBMCcnLMqsdnOnoU8vIqvx4REZFQoJATAmrUgKSks8/XqQNVqlR+PSIiIqFAIScEOBwwa5YZ\njxMXZ46YGHNORERESqaBxyHirrvMJp0ffmhCT58+cMUVdlclIiISvBRyQkj79tC4sQk5NWvaXY2I\niEhwU3dViDh4EK67zozDqV0buneHI0fsrkpERCR4KeSEiH794Jtvim+vXWvWzREREZGSKeSEgFOn\nYMUKsz5OoYIC+Owz86eIiIicTSEnBBSucnwmhwOi9D8oIiJSIr1FhoD4eLj7boiNLT4XGwu/+Y2Z\nSi4iIiJnU8gJEW+/bYKO01kccN56y+6qREREgpfaAUJE1aowd27xXlUOh731iIiIBDuFnBCjcCMi\nIlI2CjkiIpXgyy/hgw/MB5W+feHqq+2uSCT8KeSIiATY/PlmXavCmZKTJ8PChdC7t711iYQ7DTwW\nEQkgnw+GDjV/ut3m8Plg8ODiMXYiEhhqyRERCaCcHDh58uzzR49CXh5UqVL5NUnk2b8fvvjCdJd2\n6wZ169pdUeVQyBERCaAaNSApCY4f9z9fp44CjlSOdevgxhshN9fcrloVli2DDh3srasyqLtKRCSA\nHA6YNcuMx4mLM0dMjDknEmiWBXfcASdOgMdjjmPH4K677K6scqglR0QkwO66y3ya/vBDE3r69IEr\nrrC7KokEOTlw4MDZ53/+2bTshHtrokKOiEgl6NAhMroHJLj4fHZXYC91V4mIiISp883gi4TZfQo5\nIiIiYapatZLPR0WZzZ/DnUKOiIhImIqNhccfL16IEszff/c7E3TCXQQ8RBERkcg1aRJcdZUJNdHR\n0KkTjB9vd1WVQyFHREQkjD31FGRkmEHIXi98/TWMHGl3VZVDISdEWBZMmwbXXgtdusBbb0XGoDER\nESm/ggKYMcNsJ1LI7TbvJ16vfXVVFk0hDxFjx5rmxcIn5VdfwaFDMGqUvXWJiEjwys8v+QOx12sW\nBjx9rE44UktOCPB4YMIE/9Tt9cKYMWrNERGRc6tWzazPFHNak4bTCddcY1bfDncKOSHg1CkTdM6U\nn282+BMRCXdffgm//z384Q/wzTd2VxNaPvgAmjUrvt2iBSxYYF89lUndVSEgKQmaNIFdu4pXr4yO\nhksvDf8luUVE5s+HAQOKu1YmT4aFC6F3b3vrChUpKbBpE2zdarYVadHCv2UnnKklJwQ4HCaJ16xp\nnpjR0VCrlnmRi4iEM58Phg41f7rd5vD5YPBgdddfiJgYaNsW2rSJnIADaskJGe3bw7ZtsGaNCT1d\nukCNGnZXJSISWDk5cPLk2eePHjXd9WrNlvNRyAkhtWpBr152VyEi5ZGTY9YncTigY8dzL7cv/qpX\nN9fszFabqCgFHCmdQo6ISIBt2gTdu8Phw+Z2cjIsWwatWtlbVyg4frzkbimfD3JzFXTk/DQmR0Qk\nwHr3hiNHzBuzzwcHDsDdd9tdVWioVq3kqc5Vq0bGBpNycRRyREQCKCcHduw4e52rzZu1BERZREfD\nK6+YLqvTj9deM39K2ViWaUk8ciSyBmyru0pEJIASEswb9ZlL6MfGmkNKN2wYNGoE775rgs1990HP\nnnZXFToOHoQ+fczEFYCuXc3s3Fq1bC2rUqglR0QkgJxOs4jd6dN2Y2Lg+efN4FkpmzvvhNmz4Z13\nFHAuVL9+/gsorl1r1h2KBGrJEREJsAkToF498ybtcMCgQTB8uN1VSSQ4dQpWrPA/V1AAn31m/gz3\n1kSFHBGRAHM4YMQIc4hUpnNtwGlZkdGSGAEPMTx4vTBxoply2ro1TJpUvMWDiIiInE0tOSFi5EiY\nOtUsaQ7wwgtw7JgJPiIiIiU5c8D76SLhg7JackKA222mSxYGHDC7kk+eHBlPUhGR+fPNekN9+mjf\nvgtxrjE3Dkdk7GEVAQ8x9OXmlhxm3G4zcEwLYokEv08+gQULzJvLb34DPXrYXVHoeOUVePbZ4t+D\n//oXTJmiwdtlkZtb8nnLioz3D7XkhICkJDMW5/QBZDEx0K5d+D9BRcLB3/9upj3PnAkzZsDNN5up\n0FI6rxdGjfL/oOfzmS78SFrUrrwi/f1DISdELFoEDRoUr/DZqJGabEVCgc8HTz5p3pALt3WwLHj8\ncb1Jl8WJE6bF4Uwul1aMLqtIfv9Qd1WIaNkStm6FDRvMEzU1VRvTiYSC48dL7jI4ccK8Set1fH7V\nq5s36H37ikNhVBQ0bqxrV1aR/P6hkBNCEhKgSxe7qxCRC1G9OtSuXbwDOZg3mvr1I+eN5mI4HKbV\n4eabi1t04uPhvffsrSvUROr7h0KOiEgAORwwbx7cccfZ56RsOnWCLVtg6VJz7Xr0MK07IqVRyBGR\nMsnLg40bzZvM5ZdDXJzdFYWOHj3Mtfv4Y3P9br8dmjWzu6rQ0qgRPPCA3VVIqFHIEZFS7dhh3qiz\nssztSy+Fzz+HJk3srCq0NG8Ov/2t3VWIRBbNrhKRUt11F/zyS/HtrCy45x7byhERKROFHBE5r+PH\n4YcfzCrbhTweyMjQFF4RCW4KOSJyXvHxJe9W7HSee8l4EZFgoJAjIucVG2uWz3c6i885nfDUUyWH\nHxGRYKGBxyJSqldegZo1YfZsc/uhh+D55+2tSUSkNPocJiKliomBceNg505z/PGP/nvhyPl5vTBx\notlDqHVrmDSp5E13RaRiBUVLztSpU1m/fj25ublUq1aNm2++mf79+wOQnZ3NlClTyMrKon79+gwb\nNoy2bdsWfe3ixYtZsGABubm5pKWl8cQTT5CQkGDXQxEROcvIkTB1Krjd5vYLL8CxYyb4iEjgBEVL\nzp133sn06dOZP38+L730EitWrGD16tV4PB7Gjx9Pp06dmDt3Ln379mXChAmcPHkSgG+//ZZ58+Yx\nevRoZs6cidvtZvr06TY/GhGRYm43vPZaccABMztt8mS15ogEWlCEnMaNGxN32vKpDoeDPXv2sHHj\nRvLz8+nTpw9Op5Nu3bqRnJzM2rVrAVi2bBk33ngjl1xyCQkJCQwcOJDVq1eTn59v10MREfGTm1ty\nmHG7S95dW0QqTlCEHIC3336bfv36MWTIEPLy8ujWrRu7du0iJSWFqNOmcDRt2pRdu3YBpiuradOm\nRfelpKTg8/nYs2dPpdcvIlKSpCQzFuf0MUwxMdCunZmeLyKBExRjcgAefPBBHnjgAbZv387XX39N\nYmIiubm5JCYm+v27xMREXC4XAHl5eX73OxwOEhISyM3N9fuavXv3snfvXgA2b94c4EciIuJv0SKz\nLcbu3WBZZh+mhQvtrkok/AVNyAETUpo3b05GRgZz586lTp06RYGmkMvlokqVKgDEx8ef9/5C06dP\nZ+zYsYEtXkTkHFq2hK1bYcMGs0Fnaiqc8WtKJKAyM+HTT83z77bboHFjuyuqHEHTXXU6n8/H3r17\nady4MdnZ2fhO69DOzMyk8X//d1JSUsjMzCy6Lzs7m6ioKBo2bOj3/R599FEyMjLIyMhgduFCHyIi\nlSghAbp0gWuvVcCRyrViBbRpAyNGmE1iW7eG/w5tDXu2h5xTp06xfPlyXC4XPp+PH3/8kSVLltC+\nfXsuv/xynE4nixYtwu12s2LFCvbt20enTp0A6N69O0uXLiUzMxOXy8WcOXPo0qWL3yBmgAYNGpCa\nmkpqaiqtW7e242GKiIhUOsuC/v0hP7/4yMuD3/zG7soqh8OyLMvOAlwuFxMnTmTHjh34fD5q1apF\njx49uPvuu3E4HGRlZTF16lSysrJITk5m2LBhXHbZZUVfX7hOjsvlIi0tjSeffPK86+Rs2LCBtLQ0\nMjIySE1NrYyHKCIiYotjx8xq5SVxucK/VdH2kFPZFHJERCRSeL1mr7kz3+kdDnOfw2FPXZXF9u4q\nERERCYyTJ88OOGDORcKScgo5IiIiYSohoeR95mJjzRHuFHJERETClNMJv/+9WYCyUEwMPP88REVA\nAgiqdXJERESkYk2YAPXqwezZZgzOoEEwfLjdVVUOhRwREZEw5nCYNXJGjLC7ksoXAY1VIiIiEonK\nFXJmzZrF4cOHS7zvyJEjzJo166KKEhEREblY5Qo5Dz30EDt27CjxvszMTB566KGLKkpERETkYpUr\n5Jxv/cCjR49SrVq1chckIiIiUhHKPPB4yZIlLFmypOj2X/7yF5KTk/3+TV5eHsuWLaN9+/YVV6GI\niIhIOZQ55Gzbto2PPvoIAIfDwapVq87aCDM2NpbLLruMiRMnVmyVAsCmTfDRR2ak/F13mZ1kRURE\npGTl2ruqadOmLFq0iHbt2gWipoAK1b2r/v1v6N27eOVKn8+cu+kme+sSEREJVuVaJyczM7Oi65Dz\nsCxITwePxxyF0tNh/3776hIREQlm5V4M8OjRoyxZsoRffvmFvLw8v/scDgd//OMfL7o4MY4dM8eZ\nDhyA3FyoUqXyaxIREQl25Qo5n332Gffccw8nT54kNjYWp9Ppd79CTsWqXt1ssuZynX0+Pt6emkRE\nRIJduaaQP/PMM6SlpfHTTz+Rl5fHiRMn/I7jx49XdJ0RLSoKpk83f8bEmCMqCt580wxCFhERkbOV\nqyVn586dvPzyyzRr1qyi65FzSE+HX/8a3n/fBJt+/eDaa+2uSkREJHiVK+Skpqby888/V3QtUoob\nbjCHiIiIlK5c3VWvv/46f/3rX/n000/xnD7dR0RERCRIlLklp1q1ajhOGwBSUFBAz549iYqKosoZ\n03scDgc5OTkVV6WIiIjIBSpzyHnmmWf8Qo6IiIhIMCtzyBkzZkwAyxARERGpWOUakyMiIiIS7Mo1\nu6p79+7nvC8qKorq1avToUMHHnroIRo1alTu4kQkeMyfD3PnmiUM0tOhb1+7K5JIoueflEe5WnIS\nExPZtm0bK1eu5MiRI8TExHDkyBFWrlzJ1q1bOXToEJMnT6ZNmzZs2LChomsWkUr2yiswYAB8+CEs\nWgT9+8Prr9tdlUQKPf+kvMoVcvr370+NGjXYtm0b3333HZ999hnfffcdW7dupXr16gwZMoSdO3dy\n6aWX8txzz1V0zSJSibxeGDXK7HxfyOeDkSPN5rEigaTnn1yMcoWccePGMW7cOC655BK/882aNWPM\nmDGMGzeOWrVq8eyzz/LVV19VSKEiYo8TJ6Cg4OzzLhecsTevSIXT808uRrlCzi+//HLO6eRRUVHs\n3r0bgIYNG2qxQJEQV706NGjgv09aVBQ0aQJnLJElUuEKn3+nczj0/JOyKVfIueqqqxg9ejS7du3y\nO5+dnc3o0aO5+uqrAcjKyuJXv/rVxVcpIrZxOGDhQkhMhNhYc1StCu+9Z3dlEgkcDnjxRf9zlnX2\nOZGSlGt21bRp07jpppto1qwZV1xxBXXr1uXgwYN8//33JCcn895/f/vt37+fRx55pEILFpHK16kT\nbNkCS5eaN50ePc7+dC0SCJYFY8ea513hGJyoKBgzBoYMsbU0CQEOyyrf0K28vDxmzJjB+vXr2bt3\nLw0aNOCqq67ioYceIj4+vqLrrDAbNmwgLS2NjIwMUlNT7S5HRETO49gxqFmz5PtcLnVZyfmVqyUH\nID4+nuHDh1dkLSIiYcvrhcxM0yLRtKlpjZDSVasGcXGQn+9/vmpVCOLP0xIk9DITEQmw3buhfXto\n3hwuvRTS0mDfPrurCg3R0WadHIfD/3jtNf/B8CIlKXNLTlJSEsuXLyctLe2sHcnPpF3IRUSK9ekD\nW7cW3/7hB+jXD1atsq+mUDJsGDRqBO++a4LNffdBz552VyWh4IJ2IW/w35GG2pFcRKRsTp6Edev8\nz7ndsGaN6YKJi7OnrlBz553mELkQ5R54HKpCdeCxywXDhxdP2x0wAKZMUZ+0VA49/8ovP98Mjj3z\nN210tLkvOtqeukQiwUWPybEsiz179mjRvwAbPNhsTudymWPWLHjsMburkkih51/5xcXB/feb9YUK\nOZ1m+rMCjkhglTvkfPrpp3Ts2JH4+HgaN27M999/D8AjjzzCnDlzKqxAMUuXv/uu/9LmBQUwezYo\nW0qg6fl38f7v/6BDBzOjKioKrrnGDJwVkcAqV8iZO3cuPXv2JCUlhb/+9a/4Tts5rVmzZsycObPC\nChQz9bSkTkWfz3/TOpFAONfzz+vV86+sXnzRjMspfM2uXWsWuBORwCpXyPnTn/7EiBEjmD9/PkOH\nDvW7r23btmzatKlCihMjMRE6dzZN3IWcTujWzb8JXCQQEhOhpN1ZLrlEz7+ycLvh1VfP3kX7z39W\nSBQJtHKFnJ07d9LzHPP3EhMTNX08AN5/36yzUejKK2HePPvqkcjh8ZS8pssvv5TcwiP+Tpw4d0vY\nmQvciUjFKlfIqV+/Plu2bCnxvu+//56UlJSLKkrOlpwMX39tFhXbs8dMP61b1+6qJBKcOlXy2JuC\nAjNeR85Pg4tF7FOukDNgwADGjBnD0qVLi845HA42bdrEpEmTSE9Pr7ACpZjDAQ0bmo0RtUyRVJak\nJGjSxH8bguhoaNlS+waVRVKSWcjuTE2b6vqJBFq5Qs6YMWPo3LkzN910E/Xr1wfgtttuo127dlx5\n5ZWMGjWqQosUEfs4HPDBB2aTxJgYE3Bq1YKFC+2uLDQ4HLB4sblm0dEmLNapAx99ZHdlIuGvXBt0\nxsbG8uGHH7J8+XI+++wzDh8+TK1atejRowc9evSo6BpFxGbt28O2baab1OGALl2gRg27qwod7dvD\nTz/p+olUtnKFnJtvvpkbbriB6667jrFjxxKrKRYiYa9WLejVy+4qQpeu38XJyTHjEh0O6NjR7E4u\nUppydVfVq1ePN998k65du1K9enVuuOEG/vjHP/L5559z6tSpiq5RREQi2KZNZgf3226DW28148HO\nMfdFxM9F7V2VlZXFypUrWbVqFStXrmT79u1ER0eTmprKV199VZF1VphQ3btKRCRSXXopZGYWrysU\nFWWCzo8/2luXBL9ydVcVatKkCU2aNOGaa67hyiuvZN68eaxYsYL169dXVH0iIhLBcnJgxw7/cz4f\nbN5sljDQJrFyPuUKOZs2bWLFihWsWLGClStXcvjwYa644gquv/56nnrqKa6//vqKrlNERCJQQsK5\n79NwUClNuULOFVdcQZUqVRg0aBAzZ87k2muvJSkpqaJrExGRCHf48LnvO3nSrEMkci7lCjl33nkn\na9as4Y033iAjI4Prr7+eG264gS5dulC9evWKrlFERCLU+Vpy1FUlpSnX7KpFixZx8OBBvvvuOx58\n8EF+/vlnHn30UWrXrk2HDh0YMWJERdcpIjYqKIBnnoH69c2K26NGmY0nRQItKclsBnumVq3UXSWl\nu6jZVYV2797NF198wVtvvcWKFStwOBx4vd6KqK/CaXaVyIUbOhRmzSoONk4nPPooTJlib10SGY4e\nNaHmwAFzu2FDM/BYXVVSmnK15GRlZfH2228zePBgmjVrRuPGjRkyZAh5eXmMHDmSj7ReuUjYKCiA\nGTP8W27cbpg2zeykLaWzLHO9rr3WrHb81lvawf1C/OlPJugUOnAA/ud/7KtHQke5WnKioqKIj4/n\n6quvLhqP07lzZ6qEwG5zaskRuTAnTpT8idnhgNxciIur/JpCzZgxMH58cSiMjja3tc1f6dxuM/am\ncI2cQk6nmUIeVa6P6hIpyjXweOXKlVx99dXazkEkAlSrBh06wMaN4PGYc04npKUp4JSFxwMTJvi3\n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\nP//8M06nk06dOjF06FCcTicAd955J8OHD+fDDz/k6NGjXHXVVTz11FNF91e2f/7zn+zevZuRI0ey\nf/9+Hn74YX73u98xZ84cTp06xY033sjQoUOLHvfUqVPZuXMn0dHRtGnThhdeeKHUa2JZFosWLeLT\nTz/l+PHjtGzZkscff5w6deoA8P333zN9+nQOHTpEx44dcbvdtlyLQkOHDqVnz56sXLmS3bt3065d\nO0aMGME//vEPVq9eTc2aNfnd735HixYtcLlczJw5k/Xr1+P1euncuTODBw8mNjYWl8vFX/7yF7Zt\n24bH46FVq1YMHz6cunXr8s477/Djjz+ydetWZs6cSceOHXn66acv6GcD5f75dli4cCGLFy/G5XJR\no0YNHnnkEa644greeecdVq1ahcfj4corr+Thhx8mISGBcePG0bZtW/r27Vv0Pf74xz9y5ZVXctdd\ndwGwc+dO/vGPf3Dw4EHatWvHk08+SdWqVQHzWvz73/9OdnY2NWvWJD09nc6dOwPm9f/OO++wd+9e\nEhMT6d69OwMHDsThcJT6OrDzeq1atYqaNWvy4IMPAvDLL78wfPhw/vWvfwHm92CbNm3YvHkz27dv\nJyUlhWeffZZ69eoxatQotmzZwubNm5k5cyYTJkw462cuXbqUBQsWcOzYMS699FIee+wxGjVqxPLl\ny1m2bBl/+tOfAHj22WeJiYnhf/7nfwB48cUX6dGjB127duXo0aO8+eabbNy4EafTSY8ePbj33nuJ\niooqes9p27YtS5cupXPnzgwfPrySrugZLKkUHo/HGjFihPX6669bp06dsgoKCqyNGzdalmVZn3/+\nedG5N954w3r88ceLvu6BBx6wNm3aZFmWZZ04ccLatm2bZVmWtXPnTmvAgAHWDz/8YHm9Xuubb76x\nBgwYYOXk5FiWZVnPPfec9fHHH1uWZVn/+c9/rN69e1uLFy+2PB6PtWbNGqtfv37WqVOnKvMS+Bky\nZIg1YsQI68CBA5bL5bJGjhxpzZ4929q9e7fVt29f65tvvrE8Ho/1ySefWAMGDLBOnDhR9LgefPBB\na8eOHZbH47EKCgou6hqlp6db27dvt/Lz862pU6dao0aNsizLsvLy8qzBgwdb//73vy232239/PPP\n1kMPPWRt2LDBsizL2r59u/Xjjz9aHo/H2rdvnzVs2DDr/fffL3p8vXr1skaPHm0dP37cOnr0qPXw\nww9bn332WaVd30JDhgyx1q9fb82ZM8eaNGmSZVmWtW/fPqtXr17Wq6++auXm5lp79+617r33Xuu7\n776zLMuyJk2aZM2fP9/yer1Wfn5+0bUt7Zp89NFH1ogRI6x9+/ZZbrfbeuedd6yRI0dalmVZx48f\nt/r3728tW7bM8ng81n/+8x/rrrvusubMmVPp16TQkCFDrN/97nfWoUOHrJMnT1qPP/649dhjjxU9\n92bPnm09/fTTlmVZ1sSJE61XXnnFOnXqlHXixAlr9OjR1qxZsyzLMs+51atXW3l5edapU6esl156\nyRo7dmzRzzn9tVienx2Inx8ohc+JQ4cOWZZlWfv377d2795tzZkzx/rtb39rHTp0qKj+V1991bIs\ny1q9erX1xBNPFH2PQ4cOWXfffbd19OhRy7LMtXrsscesvXv3WqdOnbLGjh1rvfzyy5ZlWdbhw4et\nAQMGWF9++aXl8XisLVu2WPfdd5+1a9cuy7Isa+PGjdbOnTstr9dr7dy500pPT7dWr15tWVbprwM7\nr9crr7xi/eMf//D7d7169Sq6/dxzz1lDhgyxsrOzrYKCAuull14quiaF95/+f3769/v++++te++9\n19q8ebNVUFBgzZ4923r00Uctt9ttHTx40LrnnnusgoICy+VyWenp6db9999v5eXlWQUFBVbfvn2t\nQ4cOWV6v13r66aetWbNmWfn5+dahQ4esp556yvrkk08sy7KKXt8LFy603G63lZeXF9DreD7qrqok\nP/30E/v372fo0KEkJCTgdDq57LLLAOjRo0fRufvuu49du3Zx/PhxAKKjo/n5559xuVxUrVq1aPDg\nJ598wk033USbNm2IioriqquuomnTpqxfv77En1+7dm1uv/12oqOj6dy5Mw6Hg927d1fOgz+HO+64\ng7p161KlShU6d+7Mjh07WLVqFampqVx11VVER0dzyy23UKdOHdatW1f0dd26deOSSy4hOjoap9N5\nUdeoa9euNGvWjNjYWB588EF+/PFHDh06xLp166hZsyY9e/YkJiaGX/3qV9x8882sXLkSgGbNmtG6\ndWuio6NJTk7mlltuYdOmTX6P75577qFatWrUqFGDK6+8kh07dlTCVS27e++9l/j4eOrXr0/btm3Z\nuXMnADExMRw4cIAjR44QGxtb1PJV2jVZsmQJ6enpJCcnExMTw3333cf27ds5ePAg69ato2HDhnTr\n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\nYII=\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import pandas\n", - "chicks = pandas.read_csv(\"chickwts.txt\")\n", - "import plotnine\n", - "from plotnine import *\n", - "p=(ggplot(data=chicks) +\n", - " aes(x=\"feed\",y=\"weight\") +\n", - " geom_point(color=\"blue\") +\n", - " theme_classic())\n", - "p" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Is chick weight different when they're fed soybean feed vs sunflower feed?\n", - "### Hypotheses:\n", - "* Null hypothesis: There's no difference" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "def null(p,obs):\n", - " B0=p[0]\n", - " sigma=p[1]\n", - " \n", - " expected=B0\n", - " nll= -1*scipy.stats.norm(expected,sigma).logpdf(chicks.feed).sum()\n", - " return nll" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "* Alternate hypothesis:" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "def alter(p,obs):\n", - " B0=p[0]\n", - " B1=p[1]\n", - " sigma=p[2]\n", - " \n", - " expected=B0+B1*obs.mutation\n", - " nll= -1*scipy.stats.norm(expected,sigma).logpdf(chicks.feed).sum()\n", - " return nll" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Then we have to subset the data to only include chicks fed soybeans or sunflowers:\n", - "#### Note: Must change feed names to integers so that numpy can understand\n", - "* soybean=1 \n", - "* sunflower=2" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "chicks = pandas.read_csv(\"chickwts.txt\")\n", - "subset1 = chicks.loc[chicks.feed.isin(['1','2']),:]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Let's test it using a likelihood ratio test!\n", - "#### First import your packages" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "import numpy\n", - "import scipy\n", - "from scipy import optimize\n", - "from scipy import stats\n", - "from scipy.stats import norm\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### The fit" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Optimization terminated successfully.\n", - " Current function value: 140.784019\n", - " Iterations: 48\n", - " Function evaluations: 90\n" - ] - }, - { - "ename": "AttributeError", - "evalue": "'DataFrame' object has no attribute 'mutation'", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[0malterGuess\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mnumpy\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0marray\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[0mfitNull\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mscipy\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0moptimize\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mminimize\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mnull\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0minitialGuess\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mmethod\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m\"Nelder-Mead\"\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0moptions\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33m{\u001b[0m\u001b[1;34m'disp'\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;32mTrue\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0msubset1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 4\u001b[1;33m \u001b[0mfitAlter\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mscipy\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0moptimize\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mminimize\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0malter\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0malterGuess\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mmethod\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m\"Nelder-Mead\"\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0moptions\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33m{\u001b[0m\u001b[1;34m'disp'\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;32mTrue\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0msubset1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 5\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfitNull\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 6\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfitAlter\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32m~\\Anaconda\\lib\\site-packages\\scipy\\optimize\\_minimize.py\u001b[0m in \u001b[0;36mminimize\u001b[1;34m(fun, x0, args, method, jac, hess, hessp, bounds, constraints, tol, callback, options)\u001b[0m\n\u001b[0;32m 436\u001b[0m callback=callback, **options)\n\u001b[0;32m 437\u001b[0m \u001b[1;32melif\u001b[0m \u001b[0mmeth\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;34m'nelder-mead'\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 438\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0m_minimize_neldermead\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfun\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mx0\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcallback\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0moptions\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 439\u001b[0m \u001b[1;32melif\u001b[0m \u001b[0mmeth\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;34m'powell'\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 440\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0m_minimize_powell\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfun\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mx0\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcallback\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0moptions\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32m~\\Anaconda\\lib\\site-packages\\scipy\\optimize\\optimize.py\u001b[0m in \u001b[0;36m_minimize_neldermead\u001b[1;34m(func, x0, args, callback, maxiter, maxfev, disp, return_all, initial_simplex, xatol, fatol, **unknown_options)\u001b[0m\n\u001b[0;32m 515\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 516\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mk\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mN\u001b[0m \u001b[1;33m+\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 517\u001b[1;33m \u001b[0mfsim\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mk\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msim\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mk\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 518\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 519\u001b[0m \u001b[0mind\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnumpy\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0margsort\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfsim\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32m~\\Anaconda\\lib\\site-packages\\scipy\\optimize\\optimize.py\u001b[0m in \u001b[0;36mfunction_wrapper\u001b[1;34m(*wrapper_args)\u001b[0m\n\u001b[0;32m 290\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mfunction_wrapper\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mwrapper_args\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 291\u001b[0m \u001b[0mncalls\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m+=\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 292\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mfunction\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mwrapper_args\u001b[0m \u001b[1;33m+\u001b[0m \u001b[0margs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 293\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 294\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mncalls\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfunction_wrapper\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32m\u001b[0m in \u001b[0;36malter\u001b[1;34m(p, obs)\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[0msigma\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mp\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 6\u001b[1;33m \u001b[0mexpected\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mB0\u001b[0m\u001b[1;33m+\u001b[0m\u001b[0mB1\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mobs\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmutation\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 7\u001b[0m \u001b[0mnll\u001b[0m\u001b[1;33m=\u001b[0m \u001b[1;33m-\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mscipy\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mstats\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mnorm\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mexpected\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0msigma\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlogpdf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mchicks\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfeed\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msum\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 8\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mnll\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32m~\\Anaconda\\lib\\site-packages\\pandas\\core\\generic.py\u001b[0m in \u001b[0;36m__getattr__\u001b[1;34m(self, name)\u001b[0m\n\u001b[0;32m 3079\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mname\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_info_axis\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3080\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mname\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 3081\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mobject\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__getattribute__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mname\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 3082\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3083\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0m__setattr__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mname\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mvalue\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;31mAttributeError\u001b[0m: 'DataFrame' object has no attribute 'mutation'" - ] - } - ], - "source": [ - "initialGuess=numpy.array([1,1])\n", - "alterGuess=numpy.array([1,1,1])\n", - "fitNull=scipy.optimize.minimize(null,initialGuess,method=\"Nelder-Mead\",options={'disp':True},args=subset1)\n", - "fitAlter=scipy.optimize.minimize(alter,alterGuess,method=\"Nelder-Mead\",options={'disp':True},args=subset1)\n", - "print(fitNull)\n", - "print(fitAlter)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "#### The results" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "ename": "NameError", - "evalue": "name 'fitNull' is not defined", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mD\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m*\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfitNull\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfun\u001b[0m\u001b[1;33m-\u001b[0m\u001b[0mfitAlter\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfun\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m-\u001b[0m\u001b[0mscipy\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mstats\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mchi2\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcdf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mD\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mdf\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mD\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;31mNameError\u001b[0m: name 'fitNull' is not defined" - ] - } - ], - "source": [ - "D=2*(fitNull.fun-fitAlter.fun)\n", - "1-scipy.stats.chi2.cdf(x=D,df=1)\n", - "print(D)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [] - } - ], - "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.6.2" - } - }, - "nbformat": 4, - "nbformat_minor": 1 -} From cbe68340cfd543e4117ba9179c4d58db45fbc627 Mon Sep 17 00:00:00 2001 From: kinskeep Date: Wed, 22 Nov 2017 22:08:17 -0500 Subject: [PATCH 11/11] Delete exercise_12B.ipynb --- exercise_12B.ipynb | 52 ---------------------------------------------- 1 file changed, 52 deletions(-) delete mode 100644 exercise_12B.ipynb diff --git a/exercise_12B.ipynb b/exercise_12B.ipynb deleted file mode 100644 index 4a2cca6..0000000 --- a/exercise_12B.ipynb +++ /dev/null @@ -1,52 +0,0 @@ -{ - "cells": [ - { - "cell_type": "heading", - "metadata": { - "collapsed": true - }, - "level": 1, - "source": [ - "Exercise 2" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "##### A)\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "times = [1:00,2:40,4:50,10:50,11:59,12:00,12:01, 13:50, 15:10, 17:20, 20:20, 22:22, 23:00, :23:59, 24:00]\n", - "HAllo" - ] - } - ], - "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.6" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -}