Skip to content

Instantly share code, notes, and snippets.

@rnelsonchem
Created September 25, 2013 00:06
Show Gist options
  • Save rnelsonchem/6693120 to your computer and use it in GitHub Desktop.
Save rnelsonchem/6693120 to your computer and use it in GitHub Desktop.
Least Squares Outliers This simulation uses statsmodels package to find the outliers from a ordinary linear regression.
Display the source blob
Display the rendered blob
Raw
{
"metadata": {
"name": ""
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Ignore this stuff\n",
"\n",
"Got most of this stuff from a [Stackoverflow question](http://stackoverflow.com/questions/10231206/can-scipy-stats-identify-and-mask-obvious-outliers)."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import numpy as np\n",
"\n",
"import statsmodels.api as sm # For some reason this import is necessary...\n",
"import statsmodels.formula.api as smapi\n",
"import statsmodels.graphics as smgraph\n",
"\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 6
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Fake data\n",
"\n",
"Here were just making some fake data. First of all, make a list of x values from 0 to 29. Next, use the x values to generate some y data that is salted with some randomness. Finally, change the 7th value to a value that is clearly an outlier from the rest."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"x = np.arange(30, dtype=float)\n",
"# Make some y data with random noise\n",
"y = x*(10. + 2.4*np.random.randn(30)) + 200\n",
"# Add outlier #\n",
"x[6] = 15.\n",
"y[6] = 210."
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 7
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Regression\n",
"\n",
"Here we're just doing an ordinary least squares method to fit the data. The \"data ~ x\" is just saying that 'data' (which is the y values) are directly related to 'x' values. This formalism apparently implies that data = m\\*x + b."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Make fit #\n",
"regression = smapi.ols(\"data ~ x\", data=dict(data=y, x=x)).fit()\n",
"\n",
"print regression.summary()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
" OLS Regression Results \n",
"==============================================================================\n",
"Dep. Variable: data R-squared: 0.825\n",
"Model: OLS Adj. R-squared: 0.818\n",
"Method: Least Squares F-statistic: 131.7\n",
"Date: Tue, 24 Sep 2013 Prob (F-statistic): 4.24e-12\n",
"Time: 20:02:24 Log-Likelihood: -153.89\n",
"No. Observations: 30 AIC: 311.8\n",
"Df Residuals: 28 BIC: 314.6\n",
"Df Model: 1 \n",
"==============================================================================\n",
" coef std err t P>|t| [95.0% Conf. Int.]\n",
"------------------------------------------------------------------------------\n",
"Intercept 196.3753 15.500 12.669 0.000 164.625 228.125\n",
"x 10.4193 0.908 11.476 0.000 8.560 12.279\n",
"==============================================================================\n",
"Omnibus: 12.974 Durbin-Watson: 2.087\n",
"Prob(Omnibus): 0.002 Jarque-Bera (JB): 18.090\n",
"Skew: -0.939 Prob(JB): 0.000118\n",
"Kurtosis: 6.308 Cond. No. 34.3\n",
"==============================================================================\n"
]
}
],
"prompt_number": 8
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Test for Outliers\n",
"\n",
"Here we're using our regression results to do a test for outliers. In this case, I guess the default is a [Bonferroni outlier test](https://www.google.com/search?q=Bonferroni+outlier+test). We're only printing off test results where the third column is less than 0.05."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Find outliers #\n",
"# Bonferroni outlier test #\n",
"test = regression.outlier_test()\n",
"\n",
"print 'Bad data points (bonf(p) < 0.05):'\n",
"print test[test.icol(2) < 0.05]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Bad data points (bonf(p) < 0.05):\n",
" student_resid unadj_p bonf(p)\n",
"6 -4.420585 0.000144 0.004331\n"
]
}
],
"prompt_number": 9
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Figure #\n",
"figure = smgraph.regressionplots.plot_fit(regression, 1)\n",
"# Add line #\n",
"line = smgraph.regressionplots.abline_plot(model_results=regression, ax=figure.axes[0])"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAc8AAAFOCAYAAADglJZWAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAANEgAADRIBtYA3dAAAIABJREFUeJzs3X1czff/x/FHSRypKGmjXLW5aCxjmIsxucgsV2PC5qKt\nXZB8Z8iwLLaRq/lO4rtJNszVZhvLsAhj+TGM4aBoOJEjmossUvr9cZxTp07qpM451et+u7ndnPM5\nn895f8739t3L+/N5fl5vq127dmUjhBBCiCKzNvcAhBBCiLJGiqcQQghhJCmeQgghhJGkeAohhBBG\nkuIphBBCGEmKpxBCCGEkKZ5CCCGEkaR4CiGEEEaS4inKnbCwMCZPnlwuv9Pb25tdu3aV+vcIIR7N\nxtwDEKI4wsLC+PXXX/O9v2jRIsaNG8eDBw907wUHB+Ps7KxX3FJTUxk0aBALFy7Ey8vrscdjZWWF\nlZXVYx9HCFE2SPEUZZKVlRXPPfccH330kd77Dg4OVKpUqcjHyc4ume6U2dnZJXasiiorK8uo/+2E\nMCe5bCvKpOzsbCpXrkzNmjX1/lSqVEnvEmpYWBiHDh1i+/bteHt7061bN44ePcqgQYMA+OCDD/D2\n9mbYsGG6Yx84cIDRo0fTq1cvhgwZQkREBHfv3tVtv3fvHnPnzuWVV15hwIABREZGPrJwPnjwgMGD\nB/Pdd9/pvX/9+nXdeABiYmIYPXo0vr6+DBgwgGnTpnH58uUCj3vlyhW8vb05deqU3vs9e/Zk27Zt\net/z6aef0q9fP/r06cPEiRNJTEzUbU9LS2PWrFm8+uqr+Pj4MGzYMNauXWvwO+/cuYOPjw979+7V\ne//UqVN4e3tz5coV3ecWLlzIwIED6d27N2PHjuXYsWO6zx89ehRvb2/279/P6NGj6dmzJ/v27St0\nLEOGDMk3tuDgYObMmaN7vXfvXt566y169epF3759GTduHGq12uD5XLx4kd69e7Nlyxa9sfXo0YPD\nhw8b3EcIkJmnKMMKKli5L6EGBQVx9epVatasydixYwGwt7dn+fLlvPXWW8ycOZNnnnkGa2vNvyMP\nHz7MjBkzCAwMpFWrVly7do1Fixbx3//+lw8//BCAL7/8koMHD/Lxxx/j6urKunXr+P3332nevLnB\n8VhbW9O9e3diYmJ47bXXdO/v3LkTFxcXWrZsCcD9+/cZNWoU9erV486dOyxfvpxp06YRGRlp1Iws\n9/nfu3eP8ePH07RpUz7//HOqVq3KTz/9xPjx41m5ciWOjo5ERUXx999/M3v2bGrWrElycjLXr183\neGw7Ozs6duxITEwML774ou79mJgYmjdvzhNPPEF2djZTp06lSpUqfPrpp9SoUYPdu3cTHBxMZGQk\n7u7uuv2WLVvGe++9R7169bC1tTU4lmvXrumdm6Hz1UpNTWXmzJm88847dO7cmbt373Lq1KkCL6nX\nq1ePsWPHsnjxYry8vHB0dGTWrFkMGjSI1q1bF/k3FxWPFE9RZh0+fJjevXvrXjdu3Jj//ve/epdQ\n7ezssLGxwdbWlpo1a+o+6+joCGgKae73V65cyeDBg3nllVcAePLJJwkKCuL999/nP//5DwDR0dFM\nnDiRtm3bAjBx4sRCZyk9evRg3bp1XLx4kXr16gGwY8cOunXrpvtM7nMBmDx5Mq+++iqJiYk8/fTT\nxv04D8XGxpKZmcmUKVN0BSQwMJD9+/cTGxvLgAEDUKvVPPXUUzRp0gSA2rVrF3ouoaGhpKWlUb16\ndbKysti9ezf+/v6AZuYWHx/Pjz/+SNWqVQEYOnQohw4dIjo6mtGjR+uONWLECN3vCBg9lryuXbtG\nVlYWnTt3xtXVFYD69es/cp/evXvzxx9/8Mknn+Dq6oqTkxMBAQFGfa+oeKR4ijKrefPmBAcH617b\n2toa/JwxQZ74+HhOnz7Nhg0bdO9lZ2djZWXFpUuXAMjMzOSZZ57Rba9UqRJNmzYlIyOjwOM2bNgQ\nDw8Pfv31VwICArhw4QJnz55l6tSpus+cPXuWb775hrNnz3Lr1i3dPwDUanWxi+eZM2e4evWq7h8D\nWhkZGbpLwv369ePjjz8mPj6e1q1b0759e5577rkCj9mmTRuqVavG7t278fX15dChQ6SlpdG1a1fd\nd2ZkZPDqq6/q7Xf//n2qVaum9562SGoZO5a8nnrqKVq3bs2bb75J69atadWqFV26dNH7B5IhEyZM\nYOTIkVy4cIHly5fLvVdRKCmeosyqUqUKderUKdFjZmdnM3z4cLy9vfNtc3Fx4cKFCwXuV5gePXrw\nww8/EBAQQExMDE899RQNGjQA4O7du0yaNImWLVvy4Ycf4uTkRFZWFm+++Sb37983eDztPwpyf/eD\nBw/0ksbZ2dk0bNiQGTNm5Nvfzs4OgLZt27Ju3ToOHjzIn3/+SUhICO3atSMkJMTg99rY2NC1a1di\nYmLw9fUlJiaGF154gerVq+u+08HBgYiIiHz7ameiBb0ubCzay+u55f59rK2tmTdvHkqlksOHD/Pr\nr78SGRnJ/Pnzadq0qcHzATh//jy3bt3CysqKK1euULdu3QI/KwRIYEhUADY2NmRlZeV7D9ArNKC5\n9Hv+/Hnq1KmT70/lypWpW7cuNjY2nDx5UrdPZmYmp0+fLnQc3t7epKSkcPToUXbu3EmPHj102y5c\nuMDNmzcJCAjAy8sLd3d3bt68+cjj1ahRA0Dv/uT58+f1zrVx48YkJydTvXr1fOejvXQNmsvYPXr0\nIDg4mClTprBr1y7S0tIK/O4ePXpw4sQJ/v77b+Li4vTOpXHjxty8eZOsrKx83+nk5FTo7/SosdSo\nUUPvHmhmZqbBf9B4enoyfPhwlixZQp06ddixY0eB33fnzh1mzZpFv379GDJkCGFhYYX+9kJI8RTl\n3pNPPkl8fDyXL1/W/UfdwcEBOzs7/vjjD1JTU7l9+zYAI0eOZPfu3SxbtozExERUKhW///47//3v\nfwFQKBT4+vqybNkyDh48yIULF/j8889JT08vdBy1atWiVatWLF68mJSUFL37nU888QSVK1dm48aN\nXL58mUOHDrF06dJHHq9KlSo0b96c9evX8/fff6NUKgkPD9e7TN29e3ecnZ2ZOnUqR48e5cqVKxw/\nfpzIyEhdSjcqKop9+/ahUqm4ePEie/bswdnZWTeTNKRZs2bUrVuXzz77jMqVK9O+fXvdttatW+Pl\n5UVISAj79+8nOTmZU6dOsWbNGvbv3//IcypsLK1btyY2NpY///yT8+fPM2/ePO7du6fbX6lUsmrV\nKk6fPo1ardZ9/6Puey5cuJBq1arx7rvvMnLkSFxdXZk/f/4jxymEXLYVZdKjmhLk3TZo0CDOnj1L\nQEAA9+7d4/PPP8fLy4v//Oc/rFixgu+++w4XFxfWrFlD69atmTt3LitXruSHH37A2tqaJ598kpde\nekl3vHfffZf09HRmzJiBjY0Nvr6+dOrUiRs3bhQ67h49ehAWFsbzzz+vNwtzdHRk6tSpREZGsmXL\nFho0aMDYsWN1IaWCTJo0ifnz5zNmzBhduEmbCgZNgf3iiy+IjIzkk08+4fbt2zg5OfHss8/i7OwM\naO4VL1++nCtXrlC5cmWaNm2q9+hHQbp3784333zDK6+8opvJa82ePZsVK1bwxRdfkJqaiqOjI82a\n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\n",
"text": [
"<matplotlib.figure.Figure at 0x141008d0>"
]
}
],
"prompt_number": 10
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 10
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment