{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Data Analysis in Python"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In this workshop we will focus on using Python libraries for data wrangling, visualisation, and analysis."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## pandas"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": [
"hide-input"
]
},
"outputs": [],
"source": [
"%%HTML\n",
"
\n",
"\n",
"\n",
"
"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Fire up a Jupyter Notebook. In order to read in and then wrangle our data, the first thing we need to do once we've opened a new script in our `data_science` environment is to import the pandas library. We will import it using the conventional alias `pd`. When we need to use a function or method from pandas later, we can do that with `pd.*function/method_name*`. You can read more about the library [here](https://pandas.pydata.org/)."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We'll start by reading in some data using the pandas function `pd.read_csv`. The data are available via the `http` address below. If you've taken my R course, then you'll recognise this as the same data file that we looked at in the first R workshop on ANOVA. \n",
"\n",
"24 participants responded to a word that was either common (i.e., high lexical frequency) or rare (i.e., low lexical frequency). This is our independent variable and is coded as `high` vs. `low`. Our dependent variable is reaction time and is coded as `RT`. Subject number is coded as `Subject`. We want to know whether there is a difference between conditions (and if so, where that difference lies). \n",
"\n",
"We need to visualise the data, generate descriptives, and run the appropriate ANOVA to determine whether our independent variable (Condition) has an influence on our dependent variable (RT)."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"anova_data = pd.read_csv(\"https://raw.githubusercontent.com/ajstewartlang/02_intro_to_python_programming/main/data/ANOVA_data1.csv\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can inspect the first few lines of the dataframe using the `.head()` method."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"anova_data.hist()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The Subject histogram above really isn't very informative, so let's just plot the RT data. So far though, this isn't split by our experimental groups. We'll come to that next."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"anova_data['RT'].hist()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Visualising Our Data by Groups\n",
"\n",
"We need to use the `matplotlib` library for the rest of our visualisations. This library contains a huge range of tools for visualising data. You can read more about it [here](https://matplotlib.org/stable/). "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": [
"hide-input"
]
},
"outputs": [],
"source": [
"%%HTML\n",
"
\n",
"\n",
"\n",
"
"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In the code below we used the `plot` function from `pyplot` (which we have imported under the alias `plt`. We build our plot layer by layer (similar to how we do things in `R` with `ggplot2`). There is even a built-in `ggplot` style we can use. We define our plot initially in terms of what's on the x-axis, what's on the y-axis, and then what marker we want to use - which in this case is blue circles (`bo`).\n",
"\n",
"After this, we then add an x-axis label, a y-axis label, and a title. We also set the margins to make the plot like nice."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAY4AAAEaCAYAAAAG87ApAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAr6klEQVR4nO3de1xUdd4H8M/MMMhwG5iBEQHzBhpoCS6imYolllvtPkYmldqKWpq2bWEhaW62ZJIlJgplXnoyfW1bu4BuPduzS5hkuCvqg3dEvMZFEQYBA+Qyv+cP8+QIgxyBGS6f9+vF6+X5zTlnvnNex/nMOb9zfkchhBAgIiJqJaWtCyAioq6FwUFERLIwOIiISBYGBxERycLgICIiWRgcREQkC4ODOqVz585BoVBgz549ti7F5rVMmDABc+fOtcl7d7Tly5fDz8/P4rQl3XmbdAUMjh5q1qxZUCgUUCgUUKlU8PX1xbPPPovCwkKr1+Ln54fly5ebtfXt2xfFxcUYNWpUh753//79pe1g6c9atdhCdXU13n77bdx7771wdHSETqfDqFGjsG7dOlRXV1u9nldffRX//ve/pem3334b/fv3bzJfSkoKEhISrFgZ3czO1gWQ7YwbNw5ffPEFGhsbcfr0aSxcuBBPPvkksrKybF0aVCoVvLy8Ovx9srOz0djYCAAoLi7GiBEj8Le//Q1jxoyxei3WVllZibCwMBQVFeFPf/oTRo0aBa1Wi/379yMxMRF9+/bFlClTrFqTs7MznJ2dbzufTqezQjVkkaAe6Xe/+52YOHGiWVtiYqIAICoqKqS2/fv3i0mTJgknJyfh4eEhHn/8cXHu3Dnp9TNnzojHH39c9OnTR2g0GjFs2DCxdevWJu+3fv16ERAQIOzt7YWnp6d44oknhBBChIWFCQBmf2fPnhVnz54VAMT3338vrSM3N1c88sgjwsnJSTg5OYnHHntMnDp1Snr9k08+ESqVSuzZs0cEBwcLjUYjQkJCxP79+1u1TX788UcBQOzatcus/dZabkxv375dPPTQQ0Kj0YghQ4aI7777ThQUFIhf//rXwtHRUQQEBIjMzEyzdZ06dUpEREQIrVYr3NzcxKRJk8Thw4dbrCssLExERUWJxYsXC71eL1xcXMScOXNEdXW1EEKILVu2CK1WK3766Sez5ZYvXy769+8vTCZTs+t98cUXhYODgzhz5kyT10wmkygvL5f+/d5774kBAwYItVotBg4cKNasWWM2f79+/cSyZcvESy+9JNzd3YXBYBCLFi0SDQ0N0jy1tbVi/vz5wtXVVbi5uYn58+eL2NhYMWjQIGmeN998U5r+5JNPmuwbb775prRN5syZIy1XV1cnFi9eLLy9vYVarRYBAQFi+/btZjUCEElJSWLGjBnC2dlZ+Pr6infffbeFLU+WMDh6qFuDo7CwUIwfP16oVCpx9epVIYQQx44dE05OTuKPf/yjOHHihDh8+LCYOnWq8Pf3FzU1NUIIIQ4fPizWr18vDh06JPLz80ViYqJQqVQiIyNDWvcf//hH4eTkJNatWydOnjwpDhw4IOLi4oQQQpSVlYn+/fuLRYsWieLiYlFcXCwaGhqafFlXV1eLu+66Szz44INi//79Yv/+/WLChAli0KBB4tq1a0KI6180CoVCjBs3TmRmZooTJ06ISZMmiYEDB4r6+vrbbhO5wTFw4ECRmpoqTp48KaZMmSL69OkjJk6cKFJSUsTJkydFRESE8PX1FXV1dUIIIS5evCh69+4t5s+fLw4fPixyc3PFiy++KHQ6nSgpKbFYV1hYmHBxcRFz584Vx48fFzt37hSenp7i97//vbRt3NzcxH//939LyzQ2Nop+/fqJt99+u9l1NjY2Cp1OZ/bla8n69euFg4OD2LBhg8jLyxMffvih6NWrl9i0aZM0T79+/YSbm5tYuXKlyMvLE59//rlQqVRiy5Yt0jwvv/yy8PT0FGlpaeLEiRNi0aJFwsXFxWJwVFdXi8WLFwtfX19p36iqqpK2yc21v/rqq0Kn04kvvvhCnDx5UqxYsUIoFAqRnp4uzQNAGAwG8fHHH4v8/Hyxdu1aAcBsX6XWYXD0UL/73e+ESqUSTk5OQqPRSL/oFi1aZDZPZGSk2XK1tbVCo9GI1NRUi+v+7W9/K+bOnSuEEOLq1avCwcFBvPfeexbnHzRokPRL8oZbv6w3bdokNBqNuHz5sjTPxYsXhYODg/j000+FEL/8Qj1w4IA0z969ewUAkZub2/IGEfKD4+Zf3fv27RMAxPvvvy+1HTx4UAAQR44cEUJc/1IcNWqU2bpNJlOzv+BvFhYWJvr162f2633Dhg3C3t5eCvnf//734v7775de/+abb4SdnZ0oKipqdp2XLl0SAMTq1astb5Cf+fr6itdee82s7eWXXxYDBgyQpvv16yd+85vfmM3z8MMPi6eeekoIcX0/6NWrl/j444/N5vnVr35lMTiEECIuLk7069evSU03B8dPP/0k7O3tRVJSktk8U6ZMEQ888IA0DUAK2xuGDBkiYmNjLX52ah47x3uwUaNGIScnB/v27cOyZcswevRoxMXFSa9nZ2cjNTVVOu/s7OwMvV6P2tpanDp1CsD1ztXY2FgMHToUOp0Ozs7O+J//+R+cP38eAHDs2DHU1tbioYcealOtx44dQ2BgIDw8PKS23r17Y8iQITh27JjUplAoMHz4cGnax8cHAHDp0qU2vX9zbn6fG30g9957b5O2kpISANe354EDB8y2p4uLC86dOydtT0tCQ0OhUqmk6fvvvx91dXU4ffo0AGDevHn44YcfcPz4cQDAxo0b8eijj6JPnz7Nrk/8PLapQqFo8X0rKytRUFCA8ePHm7WHhYXh3LlzZh3oQUFBZvP4+PhI2/306dO4du2aWd8RAIwdO7bF92+N/Px81NXVNVvjzfvG7Wqk1mPneA+m0WikSx+HDRuGvLw8LFy4EFu2bAEAmEwmzJw5E7GxsU2W1ev1AIDXXnsNO3bswOrVq3H33XfDyckJixYtQkVFhdn8t/uCao3m1iGEMGtXKpVmX7A3XjOZTG1+/1up1eom79Nc2433NplMmDhxItavX99kXVqtVtZ7i1sGtR46dCjGjh2LTZs2ITY2Fjt37kRaWprF5T09PeHu7t7ki9WSW7f9re8PAPb29k2WufHZWxtUbdFcjbe2tVQjtR6POEiyfPlyfPrpp9i/fz8AICQkBIcPH8agQYPg5+dn9ufu7g4AyMzMxPTp0xEZGYnhw4dj4MCByMvLk9YZGBgIBwcH/O///q/F97W3t5eubLJk6NChOHbsGEpLS6W2S5cuIS8vD0OHDm3Lx7aakJAQHDt2DD4+Pk22p6enZ4vL3nz1FwDs3bsX9vb2GDRokNQ2b948bN26FR9//DG8vLwwefJki+tTKpV45plnsH37dpw9e7bJ60IIVFRUwNXVFb6+vti9e7fZ65mZmRgwYAAcHR1b9dn9/Pxgb2+PH374waz9dlfwtWbf8PPzQ69evZqtsavsG10Ng4Mkd999Nx577DG8/vrrAIAlS5bgxIkTmDFjBvbt24ezZ89i165d+MMf/oAzZ84AAIYMGYIdO3Zg3759OH78OJ5//nkUFRVJ63R2dsaiRYuwfPlyJCUlIS8vD4cOHcLKlSuleQYMGIAffvgBFy5cQGlpabO/AJ955hl4enoiMjISBw8exIEDB/DUU0/Bx8cHkZGRHbxl2seLL76IxsZGTJkyBd9//z3OnTuHPXv2YOnSpbf9Ai0rK8PChQtx4sQJfP3111i2bBmee+45ODk5SfNMnToVABAXF4c5c+ZAqWz5v/eKFSvg7++P0aNH4+OPP8ahQ4dw9uxZpKamIiwsDLt27QIAvP7661i3bh02btyIU6dOYcOGDfjwww+xZMmSVn92JycnzJ8/H2+88QZ27tyJkydPIiYmBrm5uS0uN2DAAFy8eBF79+5FaWlps/eWODo64qWXXsKyZcvw5Zdf4tSpU3jnnXewY8cOWTVS6zE4yExMTAzS09Px7bffIiAgAFlZWbh69SoefvhhBAYG4rnnnkNNTQ3c3NwAAGvWrEG/fv3wwAMPYOLEifDx8ZG+wG6Ii4vDihUrkJiYiGHDhuGhhx7CwYMHpdffeustVFRUYMiQIfD09MSFCxea1KXRaPDPf/4TvXr1wvjx4xEWFgYnJyd88803TU4/dFa9e/fG3r174eHhgYiICAwZMgTTp0/H+fPnLfZF3DB16lS4uLhg7NixeOqpp/DII49g1apVZvM4ODhg5syZaGhowJw5c25bj1arxd69e7FgwQIkJiZi9OjRGDFiBOLj4xEZGYmHH34YAPDCCy/gT3/6E9555x0EBgbi3XffRXx8fKve42bx8fGYMmUKZs6cidDQUFy5cgULFy5scZkpU6bgySefxKOPPgpPT88mn/mGFStW4LnnnsPLL7+MoUOHYtu2bdi2bRsmTpwoq0ZqHYVo7mQlEXVJ06ZNQ01NDf7+97/buhTqxtg5TtQNlJeX4/vvv0dqair+9a9/2boc6uYYHETdQHBwMMrKyhATE4MJEybYuhzq5niqioiIZGHnOBERycLgICIiWazSx5GcnIyDBw9Cq9Vi9erVUvs//vEPfPPNN1CpVBgxYgRmzJgBAEhNTUVGRgaUSiWioqKkYQLOnDmDpKQk1NXVITg4GFFRUa2+E/Xmewvoznl4eJjdhEfUmXD/bF/e3t7NtlslOCZMmIDJkycjKSlJajt69Cj279+P999/H2q1WhqioqCgAFlZWUhISEB5eTni4uKwdu1aKJVKbNy4EfPmzYO/vz9WrlyJnJwcBAcHW+MjEBHRz6xyqiowMLDJw1n++c9/4r/+67+ksX1ujNWTnZ2NMWPGQK1Ww2AwwMvLC/n5+SgvL0dNTQ0GDx4MhUKB8ePHIzs72xrlExHRTWx2OW5xcTFyc3Px+eefQ61WY+bMmfDz84PRaIS/v780n06ng9FohEqlkgbWA64Psmc0Gi2uPz09Henp6QCu37F686iqdOfs7Oy4LanT4v5pHTYLDpPJhKtXr2LFihU4ffo01qxZg/Xr1zc76ibQ/GicLQkPD0d4eLg0zfOe7YPnkKkz4/7Zviz1cdjsqiqdTodRo0ZBoVDAz88PSqUSVVVV0Ov1KCsrk+YzGo3Q6XRN2svKyvjcYSIiG7BZcIwcORJHjx4FcP2Kp4aGBri4uCAkJARZWVmor69HSUkJiouLpWG8NRoN8vLyIIRAZmYmQkJCbFU+EVGPZZU7xz/44AMcP34cVVVV0Gq1mDZtGsaPH4/k5GScP38ednZ2mDlzJoYNGwYASElJwa5du6BUKjFr1izpyqnTp08jOTkZdXV1CAoKwuzZs3k5rpXxVAB1Ztw/25elU1U9ZsgRBkf74H9M6sy4f7avTtfHQUREXRODg4iIZGFwEBGRLAwOIiKShcFBRESyMDiIiEgWBgcREcnC4CAiIlkYHEREJAuDg4iIZGFwEBGRLAwOIiKShcFBRESyMDiIiEgWBgcREcnC4CAiIlkYHEREJAuDg4iIZGFwEBGRLAwOIiKShcFBRESyMDiIiEgWBgcREcnC4CAiIlkYHEREJAuDg4iIZGFwEBGRLAwOIiKSxc4ab5KcnIyDBw9Cq9Vi9erVZq/t3LkT27Ztw6ZNm+Dq6goASE1NRUZGBpRKJaKiohAUFAQAOHPmDJKSklBXV4fg4GBERUVBoVBY4yMQEdHPrHLEMWHCBCxZsqRJe2lpKY4cOQIPDw+praCgAFlZWUhISMDSpUuxefNmmEwmAMDGjRsxb948JCYm4uLFi8jJybFG+UREdBOrBEdgYCCcnZ2btH/66aeYPn262VFDdnY2xowZA7VaDYPBAC8vL+Tn56O8vBw1NTUYPHgwFAoFxo8fj+zsbGuUT0REN7HKqarm7N+/HzqdDv379zdrNxqN8Pf3l6Z1Oh2MRiNUKhX0er3UrtfrYTQaLa4/PT0d6enpAID4+Hizoxq6c3Z2dtyW1Glx/7QOmwTHtWvXkJKSgjfeeKPJa0KIZpex1G5JeHg4wsPDpenS0lJ5RVKzPDw8uC2p0+L+2b68vb2bbbdJcFy6dAklJSV47bXXAABlZWVYvHgxVq5cCb1ej7KyMmleo9EInU7XpL2srAw6nc7qtRMR9XQ2uRz3rrvuwqZNm5CUlISkpCTo9Xq8++67cHNzQ0hICLKyslBfX4+SkhIUFxfDz88P7u7u0Gg0yMvLgxACmZmZCAkJsUX5REQ9mlWOOD744AMcP34cVVVVmD9/PqZNm4YHH3yw2Xn79u2L++67D9HR0VAqlZgzZw6Uyuv5NnfuXCQnJ6Ourg5BQUEIDg62RvlERHQThZDbedBFFRUV2bqEboHnkKkz4/7Zviz1cfDOcSIikoXBQUREsjA4iIhIFgYHERHJwuAgIiJZGBzUKikpGoSGGuDgoEZoqAEpKRpbl0RENmKzsaqo60hJ0SAmRouamuu/MwoL7RATowUARETU2LI0IrIBHnHQbcXHu0ihcUNNjRLx8S42qoiIbInBQbdVWKiS1U5E3RuDg25LZSEfLLUTUffG4KDbamyU105E3RuDg27Lx6f5hLDUTkTdG4ODbis2tgoajcmsTaMxITa2ykYVEZEt8XJcuq0bl9zGx7ugqEgFb+9GxMZW8VJcoh6Kw6qTLBy2mjoz7p/ti8OqExFRu2BwEBGRLAwOIiKShcFBRESyMDiIiEgWBgcREcnC4CAiIlkYHEREJAuDg1qFTwAkohs45AjdVkqKBtHRWtTX//IEwOhoPgGQqKfiEQfd1rJlrlJo3FBfr8SyZa42qoiIbInBQbd15Urzu4mldiLq3vg/n4iIZLFKH0dycjIOHjwIrVaL1atXAwA+++wzHDhwAHZ2dujduzcWLFgAJycnAEBqaioyMjKgVCoRFRWFoKAgAMCZM2eQlJSEuro6BAcHIyoqCgqFwhofoUdTKIDmxlDmpifqmaxyxDFhwgQsWbLErO3ee+/F6tWr8f7776NPnz5ITU0FABQUFCArKwsJCQlYunQpNm/eDJPp+kOENm7ciHnz5iExMREXL15ETk6ONcrv8SwNvN8zBuQnoltZJTgCAwPh7Oxs1jZ8+HCoVCoAwODBg2E0GgEA2dnZGDNmDNRqNQwGA7y8vJCfn4/y8nLU1NRg8ODBUCgUGD9+PLKzs61RPhER3aRTXI6bkZGBMWPGAACMRiP8/f2l13Q6HYxGI1QqFfR6vdSu1+ulsGlOeno60tPTAQDx8fHw8PDooOq7P50OaG5T63TgdqVOxc7OjvukFdg8OFJSUqBSqTBu3DgAgKUHEsp9UGF4eDjCw8OlaT4V7M699Zb5fRwAoFab8NZbFSgt5X0c1HnwCYDtq1M+AfC7777DgQMH8NJLL0md3Hq9HmVlZdI8RqMROp2uSXtZWRl0Op3Va+6JIiJq8PTT1VCpBAABlUrg6aerefMfUQ9ls+DIycnBjh07sHjxYvTq1UtqDwkJQVZWFurr61FSUoLi4mL4+fnB3d0dGo0GeXl5EEIgMzMTISEhtiq/R0lJ0eDLLx3R2KgAoEBjowJffunIYUeIeiiFkHsO6A588MEHOH78OKqqqqDVajFt2jSkpqaioaFB6jT39/fH888/D+D66atdu3ZBqVRi1qxZCA4OBgCcPn0aycnJqKurQ1BQEGbPnt3qy3GLioo65sP1AKGhBhQWNj2r6ePTgH37SmxQEVHzeKqqfVk6VWWV4OgMGBx3zte3D4RoGtAKhUBBQbENKiJqHoOjfXXKPg7qGry9G2W1E1H3xuCg24qNrYJGYzJr02hMiI2tslFFRGRLNr8clzq/G1dPxce7oKhIBW/vRsTGVvGqKqIe6rZ9HGfOnMHBgwdx/vx5VFdXw9HREf369UNwcDAGDRpkrTrbjH0c7YPnkKkz4/7Zviz1cVg84jh06BD+/Oc/o6amBoGBgRgyZAg0Gg1qampQWFiIxMREODg44Omnn5YGISQiou7PYnD861//wty5c+Hn52dx4fz8fOzYsYPB0QOkpGhuOlVl4Kkqoh6Ml+PSbaWkaBATo0VNzS/XUmg0JqxaVcHwoE6Fp6raFy/HpTsWH+9iFhoAUFOjRHy8i40qIiJbalNwLFq0qL3qoE6sqEglq52Iurc2Bcfjjz/eXnVQJ8YbAInoZm0KjrFjx7ZXHdSJTZxYC+DWrjDxczsR9TStugHw6NGjMBgMMBgMKC8vx/bt26FUKvHMM8/Azc2tg0skW/v2WwcAt45Vpfi5vdIGFRGRLbXqiGPz5s1QKq/PunXrVjQ2NkKhUGDDhg0dWhx1DuzjIKKbteqIw2g0wsPDA42NjTh06BCSk5NhZ2eHefPmdXR91Ak4OAjU1DQdHdfBoUdcyU1Et2hVcGg0Gly5cgU//vgjfH194eDggIaGBjQ0NHR0fdQJ1NY2/8wTS+1E1L21KjgmT56M119/HQ0NDZg1axYAIDc3Fz4+Ph1ZG3USlm4R7Rm3jhLRrVp953hRURGUSiW8vLyk6YaGBtx1110dWmB74Z3jd87Hpw+ado4DgEBhIR/kRJ0H7xxvX7IHObzdCiytkLofR0eB6uqmweHoyEMOop6oVcFx7tw5fPrppzh37hxqa82v3f/zn//cIYVR5/HuuxX4wx/cYDL9Eh5KpcC771bYsCoispVWBcfatWsxatQoREVFwd7evqNrok6GD3Iiopu1KjiuXLmCyMhIKBS8iqanioioQUREDc8hE1HrbgAMCwvDnj17OroWIiLqAlp1VdWVK1fwxhtvwN7eHlqt1uy1N998s8OKa0+8qqp98IiDOjPun+2rTVdVJSQkwGAwIDQ0lH0cRNTp8AmV1tXqq6q2bNkCO7tWX71LRGQVtz6hsrDQDjEx18+MMDw6Rqv6OAICAlBQUNDRtRARycYnVFpfqw4hPD098fbbbyM0NLRJH0dkZGSHFEZE1Bocvdn6WhUcdXV1GDFiBBoaGlBWVib7TZKTk3Hw4EFotVqsXr0aAHD16lWsWbMGly9fhqenJ1555RU4OzsDAFJTU5GRkQGlUomoqCgEBQUBAM6cOYOkpCTU1dUhODgYUVFRvESYqIfz9m5EYWHTrzI+obLjtCo4FixY0KY3mTBhAiZPnoykpCSpLS0tDffccw+mTJmCtLQ0pKWlYcaMGSgoKEBWVhYSEhJQXl6OuLg4rF27FkqlEhs3bsS8efPg7++PlStXIicnB8HBwW2qjYi6ttjYKrM+DgDQaEyIja2yYVXdm8U+joqK1g0nceXKldvOExgYKB1N3JCdnY2wsDAA1+8Tyc7OltrHjBkDtVoNg8EALy8v5Ofno7y8HDU1NRg8eDAUCgXGjx8vLUNEPVdERA1WraqAj08DFAoBH58GrFpVwY7xDmTxiOOtt95CYGAgxo8fDz8/P+kJgABgMpmQn5+PzMxMnDhxQjr9JEdFRQXc3d0BAO7u7qisvP4IUqPRCH9/f2k+nU4Ho9EIlUoFvV4vtev1ehiNRovrT09PR3p6OgAgPj4eHh4esmukpuzs7LgtqdN5/nng+edNsLNToqHBBMDp5z/qCBaDY9WqVUhPT8eGDRtQUlICg8EAjUaDmpoalJSUwMvLC5MmTZKez9FeLN2P2MrR3yXh4eEIDw+XpnlTUPvgDVbUmXH/bF+ybwC0s7PD5MmTMXnyZJSWluLChQuorq6Gk5MT+vXrB51O16aCtFotysvL4e7ujvLycri6ugK4fiRxcwe80WiETqdr0l5WVtbmGoiISL5W3cfh4eGBESNGYOzYsQgODm6XL+yQkBDs3r0bALB7926MHDlSas/KykJ9fT1KSkpQXFwMPz8/uLu7Q6PRIC8vD0IIZGZmIiQkpM11EBGRPK1+AmBbfPDBBzh+/Diqqqqg1Woxbdo0jBw5EmvWrEFpaSk8PDwQHR0tdaCnpKRg165dUCqVmDVrlnTl1OnTp5GcnIy6ujoEBQVh9uzZrb4cl2NVtQ+eCqDOjPtn+7J0qsoqwdEZMDjaB/9jUmfG/bN9WQqOVp2qIiIiuqHF4Fi5cqW16iAioi6ixeDIzc21Vh1ERNRF8FQVERHJ0uJYVXV1dVi/fn2LK3jxxRfbtSAiIurcWgwOhUKB3r17W6sWIqI7wicAWleLwaFWq/Hkk09aqxYiItlSUjSIjtaivv6XJwBGR/MJgB2pxT6OHnKLBxF1YcuWuUqhcUN9vRLLlrnaqKLur8XgGDdunMXXzp8/j4SEhHYviIhIjitXmv8as9RObdfiqaqZM2fi888/x7lz59CnTx88+eSTqKqqwtatW3H48GHpeRpERNRztBgcW7ZswdmzZzF8+HDk5OTgwoULKCoqQlhYGObNmyeNaEtERD1Hi8Fx6NAhrFq1ClqtFr/+9a+xYMECLF++HAEBAdaqj4ioRW5uJly5omq2nTpGiycBa2trodVevzpBr9fDwcGBoUFEnUpcXCXUavOQUKtNiIurtFFF3V+LRxyNjY04evSoWdut08OGDWv/qoiIWunGJbe/3MfRyPs4OliLwaHVavHhhx9K087OzmbTCoXitneWExFR98LncZAsfN4BdTYpKRrExGhRU/PLmXeNxoRVqyp41NFGfB4HEXVL8fEuZqEBADU1SsTHu9ioou6PwUFEXVphYdMrqlpqp7ZjcBBRl6aykA+W2qntGBxE1KU1Nsprp7ZjcBBRl+bj03xCWGqntmNwEFGXNnFiLYBbLw4VP7dTR2BwEFGX9u23DgAUt7Qqfm6njsDgIKIujVdVWR+Dg4i6NKWFbzFL7dR23LRE1KWZLAyCa6md2o7BQUREsjA4iKhLs/TcDT6Po+O0ODquNXz11VfIyMiAQqFA3759sWDBAtTV1WHNmjW4fPkyPD098corr8DZ2RkAkJqaioyMDCiVSkRFRSEoKMi2H4CIbGrYsHrs2aOE+ZVVAsOG1duqpG7PpkccRqMR//jHPxAfH4/Vq1fDZDIhKysLaWlpuOeee5CYmIh77rkHaWlpAICCggJkZWUhISEBS5cuxebNm2HiiUyiHm3v3l5o7nLc6+3UEWx+qspkMqGurg6NjY2oq6uDu7s7srOzERYWBgAICwtDdnY2ACA7OxtjxoyBWq2GwWCAl5cX8vPzbVk+EdkYhxyxPpueqtLpdPjNb36DF154Afb29hg+fDiGDx+OiooKuLu7AwDc3d1RWXn9EZBGoxH+/v5myxuNxmbXnZ6ejvT0dABAfHw8PDw8OvjT9Ax2dnbcltSpqFTNh4RKBe6rHcSmwXH16lVkZ2cjKSkJjo6OSEhIQGZmpsX55TxzKjw8HOHh4dI0Hz7UPvggJ+pspk93xdatTri1j2P69J9QWsrnjrdFp3yQ05EjR2AwGODq6go7OzuMGjUKeXl50Gq1KC8vBwCUl5fD1dUVAKDX61FWViYtbzQaodPpbFI7EXUOK1dW4tlnf4JKJQAIqFQCzz77E1auZGh0FJsGh4eHB06dOoVr165BCIEjR47Ax8cHISEh2L17NwBg9+7dGDlyJAAgJCQEWVlZqK+vR0lJCYqLi+Hn52fLj0BEncDKlZW4cKEY167V48KFYoZGB7PpqSp/f3+MHj0aixcvhkqlQv/+/REeHo7a2lqsWbMGGRkZ8PDwQHR0NACgb9++uO+++xAdHQ2lUok5c+ZAyXEFiIisSiHkdBx0YUVFRbYuoVtgHwd1Ztw/21en7OMgIqKuh8FBRESyMDiIiEgWBgcRdXkpKRqEhhrg4KBGaKgBKSkaW5fUrdl8kEMiorZISdEgJkaLmprrv4MLC+0QE6MFAERE1NiytG6LRxxE1KXFx7tIoXFDTY0S8fEuNqqo+2NwEFGXVlTU/LPFLbVT2zE4iKhL8/ZufhhcS+3UdgwOIurSYmOroNGYP5dHozEhNrbKRhV1f+wcJ6Iu7UYHeHy8C4qKVPD2bkRsbBU7xjsQhxwhWTikA3Vm3D/bF4ccISKidsHgICIiWRgcREQkC4ODiIhkYXAQEZEsDA4iIpKFwUFERLIwOIiISBYGBxERycLgICIiWRgcREQkC4ODiIhkYXAQEZEsDA4iIpKFwUFERLIwOIiISBYGBxERyWLzR8f+9NNP+Oijj/Djjz9CoVDghRdegLe3N9asWYPLly/D09MTr7zyCpydnQEAqampyMjIgFKpRFRUFIKCgmz7AYiIehibB8cnn3yCoKAgLFq0CA0NDbh27RpSU1Nxzz33YMqUKUhLS0NaWhpmzJiBgoICZGVlISEhAeXl5YiLi8PatWuhVPLAiYjIWmz6jVtdXY0TJ07gwQcfBADY2dnByckJ2dnZCAsLAwCEhYUhOzsbAJCdnY0xY8ZArVbDYDDAy8sL+fn5NqufiKgnsukRR0lJCVxdXZGcnIzz589j4MCBmDVrFioqKuDu7g4AcHd3R2VlJQDAaDTC399fWl6n08FoNDa77vT0dKSnpwMA4uPj4eHh0cGfpmews7PjtqROi/unddg0OBobG3H27FnMnj0b/v7++OSTT5CWlmZxfiFEq9cdHh6O8PBwabq0tLQtpdLPPDw8uC2p0+L+2b68vb2bbbfpqSq9Xg+9Xi8dRYwePRpnz56FVqtFeXk5AKC8vByurq7S/GVlZdLyRqMROp3O+oUTEfVgNg0ONzc36PV6FBUVAQCOHDkCX19fhISEYPfu3QCA3bt3Y+TIkQCAkJAQZGVlob6+HiUlJSguLoafn5/N6ici6olsflXV7NmzkZiYiIaGBhgMBixYsABCCKxZswYZGRnw8PBAdHQ0AKBv37647777EB0dDaVSiTlz5vCKKiIiK1MIOR0HXdiNoxpqG55Dps6M+2f76pR9HERE1PUwOIiISBYGBxERycLgICIiWRgcREQkC4ODiIhkYXAQEZEsDA4iIpKFwUFERLIwOIiISBYGBxERycLgICIiWRgcREQkC4ODiIhkYXAQEZEsDA4iIpKFwUFERLIwOIiISBYGBxERycLgICIiWRgcREQkC4ODiIhkYXAQEZEsDA4iIpJFIYQQti6CiIi6Dh5xkCyxsbG2LoHIIu6f1sHgICIiWRgcREQkC4ODZAkPD7d1CUQWcf+0DnaOExGRLDziICIiWRgcREQkC4ODmpg5c6atSyAyU1JSgkWLFjVp/8tf/oLDhw+3uOwXX3yBnTt3dlRpPZKdrQsgIrpTkZGRti6hR2JwkEVCCGzbtg05OTkAgCeeeAJjxozBpk2bEBQUhJCQELz33ntwcnLCggULkJGRgZKSEjz11FO2LZy6JZPJhI8++gh5eXnQ6XSIiYnBxo0b8atf/QqjR4/GwYMHsXXrVri4uGDAgAEoKSmRbggsKCjA8uXLUVpaikceeQSPPPKIjT9N18ZTVWTRf/7zH5w7dw7vvfceli1bhs8++wzl5eUICAjAiRMnAABGoxGFhYUAgNzcXNx99922LJm6seLiYkyePBkJCQlwdHTEv//9b+m1uro6bNy4EUuWLEFcXBwqKyvNli0qKsLSpUvxzjvv4K9//SsaGhqsXX63wuAgi3Jzc3H//fdDqVTCzc0NgYGBOH36NAICApCbm4uCggL4+vpCq9WivLwceXl5GDJkiK3Lpm7KYDCgf//+AICBAwfi8uXL0mtFRUUwGAwwGAwAgLFjx5otO2LECKjVari6ukKr1aKiosJqdXdHPFVFsul0Oly9ehU5OTkICAjA1atXsXfvXjg4OECj0di6POqm1Gq19G+lUom6ujpp+na3o9nZ/fJVp1Qq0djY2P4F9iA84iCLAgICsHfvXphMJlRWVuLEiRPw8/MDAAwePBhff/01AgMDERAQgL///e88TUU24+Pjg5KSEpSUlAAAsrKybFxR98YjDrIoNDQUeXl5eO211wAAM2bMgJubG4DroXL48GF4eXnBw8MDV69eRUBAgA2rpZ7M3t4ec+bMwTvvvAMXFxfpBw51DA45QkTdQm1tLRwcHCCEwObNm+Hl5YXHHnvM1mV1SzziIKJuIT09Hbt370ZDQwMGDBiASZMm2bqkbotHHEREJAs7x4mISBYGBxERycLgICIiWRgcRDby3XffYdmyZdL0zJkzcenSJYvzR0dH49ixY9YojahFvKqKqBl79uzBV199hcLCQmg0GvTv3x8REREdepPjZ599Jv07KSkJer3ebMDIhISEDntvIjkYHES3+Oqrr5CWlobnnnsOw4cPh52dHXJycpCdnc2744nA4CAyU11djb/85S9YsGABRo0aJbWHhIQgJCQE9fX12L59O/bu3QsAuO+++zB9+nSo1WocO3YM69atw6OPPoodO3ZAqVTi6aefxgMPPAAAqKqqQnJyMo4fPw5vb28MHz7c7L2nTZuGxMREHD16FHv27AEAfP311xg6dChiY2OxcOFCzJs3D/fee2+b6iBqKwYH0U3y8vJQX1+P0NDQZl9PSUnBqVOnsGrVKigUCqxatQp/+9vfpFNKV65cQXV1NT766CMcPnwYCQkJGDlyJJydnbF582ao1Wps2LABJSUlWLFihTSa683Cw8Nx8uTJJqeq2qsOorZi5zjRTaqqquDi4gKVStXs63v27METTzwBrVYLV1dXTJ06Fd9//730ukqlwtSpU2FnZ4cRI0bAwcEBRUVFMJlM+M9//oPIyEg4ODjgrrvuQlhY2B3Xead1ELUHBgfRTVxcXFBVVWVx2G2j0QhPT09p2tPTE0aj0Wz5m0OnV69eqK2tRWVlJRobG6HX682WvVN3WgdRe2BwEN1k8ODBUKvVyM7ObvZ1nU5n9gCh0tJS6HS6267X1dUVKpUKZWVlZstaolAoWlzfndZB1B4YHEQ3cXR0RGRkJDZv3ox9+/bh2rVraGhowP/93/9h27ZtuP/++5GSkoLKykpUVlbir3/9K8aNG3fb9SqVSoSGhuLLL7/EtWvXUFBQgN27d1ucX6vVtnhPx53WQdQe2DlOdIvHHnsMWq0WKSkpWLduHRwcHDBw4EBERERgwIABqK6uxquvvgoAGD16NCIiIlq13jlz5iA5ORnPP/88vL29MWHCBIs39D344INISEjArFmzEBgYiJiYGLPXIyIi7rgOorbi6LhERCQLT1UREZEsDA4iIpKFwUFERLIwOIiISBYGBxERycLgICIiWRgcREQkC4ODiIhk+X+ZmjoEaqRt0wAAAABJRU5ErkJggg==\n",
"text/plain": [
"
"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.style.use('ggplot')\n",
"plt.plot(anova_data['Condition'], anova_data['RT'], 'bo')\n",
"plt.xlabel('Condition')\n",
"plt.ylabel('RT (ms.)')\n",
"plt.title('Reaction Time by Condition')\n",
"plt.margins(.5, .5)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's now work out some descriptive statistics using `pandas` functions. We'll use the `groupby` function to group `anova_data` by `Condition`, and we'll map this onto a new variable I'm calling `grouped_data`."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"grouped_data = anova_data.groupby(['Condition'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can then generate some descriptives about this grouped dataframe. We can use the `count` function to work out how many observations we have for each of our two conditions."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
Subject
\n",
"
RT
\n",
"
\n",
"
\n",
"
Condition
\n",
"
\n",
"
\n",
"
\n",
" \n",
" \n",
"
\n",
"
high
\n",
"
12
\n",
"
12
\n",
"
\n",
"
\n",
"
low
\n",
"
12
\n",
"
12
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Subject RT\n",
"Condition \n",
"high 12 12\n",
"low 12 12"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"grouped_data.count()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If we wanted just to output the count for our `RT` column we could do the following."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Condition\n",
"high 12\n",
"low 12\n",
"Name: RT, dtype: int64"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"grouped_data['RT'].count()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"From the above we can see we have 12 observations in each condition, and our variable RT is type integer. We can use other `pandas` functions such as `mean()` and `std()` in a similar way."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Condition\n",
"high 864.666667\n",
"low 1178.166667\n",
"Name: RT, dtype: float64"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"grouped_data['RT'].mean()"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Condition\n",
"high 74.722923\n",
"low 85.708633\n",
"Name: RT, dtype: float64"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"grouped_data['RT'].std()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Sometimes it can be useful to think of the `.` notation in Python as meaning 'and then'. We could combine some of the commands above into one using `.` which would allow us to do away with creating the temporary variable `grouped_data`. For example, the following will take our original dataframe, then group it by `Condition`, then generate the means, displaying only the RT `column`."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Condition\n",
"high 864.666667\n",
"low 1178.166667\n",
"Name: RT, dtype: float64"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"anova_data.groupby(['Condition']).mean()['RT']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"It is a little wasteful to calculate the mean of our Subject column as well as the RT column so a better way of doing things is to calculate the mean just for our RT column."
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Condition\n",
"high 864.666667\n",
"low 1178.166667\n",
"Name: RT, dtype: float64"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"anova_data.groupby(['Condition'])['RT'].mean()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can map our means onto a new variable I'm calling `my_means` and then we can plot these means as a bar graph."
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"my_means = grouped_data['RT'].mean()\n",
"my_means.plot(kind='bar')\n",
"plt.ylabel('RT (ms.)')\n",
"plt.title('Reaction Time by Condition')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can tweak some of the plot parameters and add error bars for each of our two conditions."
]
},
{
"cell_type": "code",
"execution_count": 86,
"metadata": {},
"outputs": [],
"source": [
"my_std = grouped_data['RT'].std()"
]
},
{
"cell_type": "code",
"execution_count": 87,
"metadata": {},
"outputs": [],
"source": [
"error = [my_std[0], my_std[1]]"
]
},
{
"cell_type": "code",
"execution_count": 109,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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OaysrCCVSlFUVISSkhJVeOTm5kIul9farkwmw71791BaWqoKj/pCo7Hat28PfX19hIaG1vrYMpkMeXl5qulHH9PAwAD3799XTVf9RjfwIPjc3Nzw7rvvql2Xubm5atTzKH19fQwePBi//vorsrKyONpo47irirSevr4+unXrhgMHDqBHjx6q+T169MCBAwdUxzcsLCzg4uKC7du3o6ysDBkZGThy5AiGDRtWa7uWlpbo1q0bdu7ciYqKCqSkpOD06dN/u16pVIqRI0di8+bNuHPnDoAHo5ukpCQAwODBg3H06FFkZmbi/v37+PHHH6ut36VLF5w8eRL379/HrVu3EBsbq/pb//79kZ2djWPHjqGiogIVFRVIS0tDZmZmg3X1798fBQUFOHDgAMrLy1FSUoLLly+r/u7j44O4uDicOnWqzm1GbQNHHPSP4ObmhtTU1BrBcfDgwWqn4c6fPx+RkZGYPXs2TExMMHHiRPTu3bvOdufNm4eIiAgEBgaie/fu8PHxwb179/52vVOmTMGuXbuwbNky3L17F3K5HE8++SQ8PDzQt29fjBkzBh988AGkUin8/f3x22+/qdYdM2YMrly5gldeeQUODg4YOnSo6gC6kZER3nnnHXz77bf49ttvIYSAg4MDpk+f3mBNVetu3rwZu3btgq6uLsaMGaM6ztGjRw9IJBJ07doVVlZWf3sbkPbi3XGJtMCkSZNUp+Nq0gcffIChQ4eqTgWmtom7qoioUdLS0pCenq66JoTaLu6qIqIGffnll0hISEBgYGC1s9KobeKuKiIiUgt3VRERkVoYHEREpBYGBxERqYXBQUREamFwEBGRWhgcRESklv8H1jsv5ybWzs4AAAAASUVORK5CYII=\n",
"text/plain": [
"
"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To run a between participants one-way ANOVA to determine whether there is a difference between our two conditions we're going to use the `stats` module from the `scipy` library. We import it as follows... "
]
},
{
"cell_type": "code",
"execution_count": 202,
"metadata": {},
"outputs": [],
"source": [
"from scipy import stats"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We are now going to subset our `anova_data` data frame. We are going to do that by using a logical condition `[anova_data['Condition']=='high']`. If we were to run the following we'd see we have the subset of the data frame where Condition is equal to 'high'."
]
},
{
"cell_type": "code",
"execution_count": 203,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
Subject
\n",
"
Condition
\n",
"
RT
\n",
"
\n",
" \n",
" \n",
"
\n",
"
12
\n",
"
13
\n",
"
high
\n",
"
828
\n",
"
\n",
"
\n",
"
13
\n",
"
14
\n",
"
high
\n",
"
925
\n",
"
\n",
"
\n",
"
14
\n",
"
15
\n",
"
high
\n",
"
915
\n",
"
\n",
"
\n",
"
15
\n",
"
16
\n",
"
high
\n",
"
869
\n",
"
\n",
"
\n",
"
16
\n",
"
17
\n",
"
high
\n",
"
804
\n",
"
\n",
"
\n",
"
17
\n",
"
18
\n",
"
high
\n",
"
835
\n",
"
\n",
"
\n",
"
18
\n",
"
19
\n",
"
high
\n",
"
1022
\n",
"
\n",
"
\n",
"
19
\n",
"
20
\n",
"
high
\n",
"
919
\n",
"
\n",
"
\n",
"
20
\n",
"
21
\n",
"
high
\n",
"
842
\n",
"
\n",
"
\n",
"
21
\n",
"
22
\n",
"
high
\n",
"
805
\n",
"
\n",
"
\n",
"
22
\n",
"
23
\n",
"
high
\n",
"
879
\n",
"
\n",
"
\n",
"
23
\n",
"
24
\n",
"
high
\n",
"
733
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Subject Condition RT\n",
"12 13 high 828\n",
"13 14 high 925\n",
"14 15 high 915\n",
"15 16 high 869\n",
"16 17 high 804\n",
"17 18 high 835\n",
"18 19 high 1022\n",
"19 20 high 919\n",
"20 21 high 842\n",
"21 22 high 805\n",
"22 23 high 879\n",
"23 24 high 733"
]
},
"execution_count": 203,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"anova_data[anova_data['Condition']=='high']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"But what we really want is to just select the `RT` column."
]
},
{
"cell_type": "code",
"execution_count": 204,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"12 828\n",
"13 925\n",
"14 915\n",
"15 869\n",
"16 804\n",
"17 835\n",
"18 1022\n",
"19 919\n",
"20 842\n",
"21 805\n",
"22 879\n",
"23 733\n",
"Name: RT, dtype: int64"
]
},
"execution_count": 204,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"anova_data[anova_data['Condition']=='high']['RT']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"By building on the above we can create two new variables, one corresponding to the data for the `high` condition group and the other for the `low` condition group."
]
},
{
"cell_type": "code",
"execution_count": 205,
"metadata": {},
"outputs": [],
"source": [
"high_group = anova_data[anova_data['Condition']=='high']['RT']\n",
"low_group = anova_data[anova_data['Condition']=='low']['RT']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We are now in a position to run a 1-way ANOVA. We use the`f_oneway` function in the `stats` module to do this. The two parameters that it needs are the two groups that we are wanting to compare to test the null hypothesis that the two groups have the same population mean. If we had three groups, we would pass the three groups to the function. "
]
},
{
"cell_type": "code",
"execution_count": 206,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"F_onewayResult(statistic=91.2168592809951, pvalue=2.767399319989348e-09)"
]
},
"execution_count": 206,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"stats.f_oneway(high_group, low_group)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Remember, the *p*-value is the probability of obtaining test results at least as extreme as the results observed, under the assumption that the null hypothesis is true. Note, the output above gives us the F-value and the *p*-value but not the degrees of freedom. As we just have two groups, we could also run an independent sample t-test using the `ttest_ind` function from `stats`."
]
},
{
"cell_type": "code",
"execution_count": 207,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Ttest_indResult(statistic=-9.550751765227444, pvalue=2.7673993199893327e-09)"
]
},
"execution_count": 207,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"stats.ttest_ind(high_group, low_group)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Note that the p-value is the same as we found with our ANOVA. And the *F*-statistic in the ANOVA is the *t*-statistic squared."
]
},
{
"cell_type": "code",
"execution_count": 208,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"91.21685928099514"
]
},
"execution_count": 208,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"9.550751765227444 * 9.550751765227444"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If we had three groups in our study, we could run the 1-way ANOVA as we did above and then if that is significant, we could run multiple t-tests with a manually adjusted alpha level (e.g., using the Bonferroni correction). One of the limitations with using the `stats` module is that degrees of freedom are not reported, nor is information about the residuals. In order to generate an ANOVA table more like the type we're familiar with we are going to use the `statsmodels` package. This isn't a package we yet have in our `data_science` environment so we need to install it using the Terminal shell. \n",
"\n",
"Go into your shell and activate the `data_science` environment using `conda activate data_science`. You then need to install the package using `conda install statsmodels`. Once it is installed, go back to your Jupyter Notebook and you should be able to import `statsmodels` and the `ols` module (for ordinary least squares models) as follows."
]
},
{
"cell_type": "code",
"execution_count": 209,
"metadata": {},
"outputs": [],
"source": [
"import statsmodels.api as sm\n",
"from statsmodels.formula.api import ols"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We define our model below using syntax not too disimilar from how we did the same in R. We are going to fit an OLS (Ordinary Least Squares) model to our data where our outcome variable `RT` is predicted by `Condition`. We then present the results in an ANOVA table using Type 3 Sums of Squares. This is much closer to the level of detail that we need."
]
},
{
"cell_type": "code",
"execution_count": 210,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In many types of experiments we are interested in how two (or more) experimental factors interact with each other. For example, in a typical priming paradigm experiment we might be interested in whether people's response times to a positively or negatively valenced target stimulus are influenced by whether it was preceded by a positively or negatively valenced prime. \n",
"\n",
"The data in the file below are from a 2 x 2 repeated measures reaction time experiment. We were interested in how quickly participants could respond to Targets that were Positive vs. Negative when they followed Positive vs. Negative Primes. We expected that Positive Targets would be responded to more quickly after Positive vs. Negative Primes, and that Negative Targets would be responded to more quickly after Negative vs. Positive Primes. We measured the response times of 24 participants responding in each of these four conditions. We want to determine if there is a difference between our conditions (and if so, where that difference lies)."
]
},
{
"cell_type": "code",
"execution_count": 212,
"metadata": {},
"outputs": [],
"source": [
"factorial_anova_data = pd.read_csv(\"https://raw.githubusercontent.com/ajstewartlang/02_intro_to_python_programming/main/data/ANOVA_data3.csv\")"
]
},
{
"cell_type": "code",
"execution_count": 213,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"group_means.plot(kind=\"bar\", yerr=group_errors, alpha=0.5, capsize=10)\n",
"plt.xlabel('Prime x Target')\n",
"plt.xticks([0, 1, 2, 3], ['Negative\\nNegative', 'Negative\\nPositive', 'Positive\\nNegative', 'Positive\\nPositive'], rotation=45)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"While the above plot looks *ok*, it's a little tricky seeing the nature of the interaction. Luckily the `statsmodels` library has a function called `interaction_plot` for plotting the kind of interaction we are interested in looking at."
]
},
{
"cell_type": "code",
"execution_count": 216,
"metadata": {},
"outputs": [],
"source": [
"from statsmodels.graphics.factorplots import interaction_plot"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We need to create a `pandas` data frame that contains the means for each of our four conditions, and thus captures the 2 x 2 nature of our design. We can use `pd.DataFrame` to turn our object of means by condition into a data frame that we can then use in our interaction plot."
]
},
{
"cell_type": "code",
"execution_count": 217,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
\n",
"
Subject
\n",
"
RT
\n",
"
\n",
"
\n",
"
Prime
\n",
"
Target
\n",
"
\n",
"
\n",
"
\n",
" \n",
" \n",
"
\n",
"
Negative
\n",
"
Negative
\n",
"
12.5
\n",
"
1420.166667
\n",
"
\n",
"
\n",
"
Positive
\n",
"
12.5
\n",
"
1457.416667
\n",
"
\n",
"
\n",
"
Positive
\n",
"
Negative
\n",
"
12.5
\n",
"
1428.041667
\n",
"
\n",
"
\n",
"
Positive
\n",
"
12.5
\n",
"
593.333333
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Subject RT\n",
"Prime Target \n",
"Negative Negative 12.5 1420.166667\n",
" Positive 12.5 1457.416667\n",
"Positive Negative 12.5 1428.041667\n",
" Positive 12.5 593.333333"
]
},
"execution_count": 217,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"group_means = grouped_data.mean()\n",
"pd.DataFrame(group_means)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We need to reset the grouping in the data frame above so that we can use it in our plot. We do that using the `reset_index()` method."
]
},
{
"cell_type": "code",
"execution_count": 218,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
Prime
\n",
"
Target
\n",
"
Subject
\n",
"
RT
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
Negative
\n",
"
Negative
\n",
"
12.5
\n",
"
1420.166667
\n",
"
\n",
"
\n",
"
1
\n",
"
Negative
\n",
"
Positive
\n",
"
12.5
\n",
"
1457.416667
\n",
"
\n",
"
\n",
"
2
\n",
"
Positive
\n",
"
Negative
\n",
"
12.5
\n",
"
1428.041667
\n",
"
\n",
"
\n",
"
3
\n",
"
Positive
\n",
"
Positive
\n",
"
12.5
\n",
"
593.333333
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Prime Target Subject RT\n",
"0 Negative Negative 12.5 1420.166667\n",
"1 Negative Positive 12.5 1457.416667\n",
"2 Positive Negative 12.5 1428.041667\n",
"3 Positive Positive 12.5 593.333333"
]
},
"execution_count": 218,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data_to_plot = pd.DataFrame(group_means).reset_index()\n",
"data_to_plot"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The above now looks much more like a standard data frame. Below we created an interaction plot using the `interaction_plot` function. We specify the various aesthetics of the plot, add labels, and then display the plot. If we wanted to save it we would use the `plt.savefig` function. This will save the plot using the file path we provide as an argument to the function."
]
},
{
"cell_type": "code",
"execution_count": 219,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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5qbymJgY8vLySEpKIjExkTp16pRIrPpWrUj77DMMPj4PXS1ZmGHDhhWobi3qVThjxowhOjqaTp06ERUVReXKlXFycqJt27bk5+cTHBzMvHnzaNasmWldffv2JTg4mJEjR96x3cDAQH777Tdat25teqnqq6++St26dencuTPt27dnwoQJpqQmhBBlhUVfl3PixAmmT59O9erV0Wg0APTp04e6desSGhpKSkoKnp6ejBkzxtRNYNOmTezcuROtVsuAAQNo2rRpsbZVXl6Xc/PO09ramv379zNp0qRC3xb+qMjrckRpJndw5lXW7+DkfXBlzNmzZ3n99dcxGo3Y2toya9asEukLeJMkOFGaSYIzr7Ke4Cz+DE7cn1q1arF9+3ZLhyGEEKWeDNUlhBCiXJIEJ4QQolySBCeEEKJckgQnhBCiXJIEdx8uX9by8sseJCWZ57BVq1aNDh060L59e1577TWyCxkO7G4uXbrE0KFDgRsdwXfs2GH6bPv27XeMPSmEEBWJJLj7sHixM7//bsvixc5mWd/NQZCjoqKwtbVl3bp197V8lSpVWLlyJQBxcXFERUWZPuvYsWOhHbuFEKKikG4CwPTprhw7ZnPXefR6OHjQFqU0rF/vxNGjNvx34I9CNWyYx4wZGUXPcJtnnnmG48ePk56eztixY7lw4QL29vbMmzePhg0bsnfvXqZPnw6ARqNh06ZNpKenExISwrZt21iwYAE5OTns27ePkSNHkpOTw5EjR5gwYQIdOnRg7969aLVasrOzad26NXv37uXixYtMmTKF1NRUHBwcmD9/fomNDCOEEI+a3MEVU0LC/8atVKrg9MMyGAzs3LmT+vXrs3DhQnx9fYmMjGTixIm89dZbwI23fc+aNYuIiAjCw8Oxt7c3LW9ra8u4cePo1q0bERERvPjii6bPXF1dTQkSblRdtm3bFhsbG9555x1mzpzJtm3bmDZtGpMmTTLbPgkhhKXJHRzc807r8mUtLVtWRqkbw4kppeHqVStWrEjB27vwd8UVx80XkQK0aNGCPn360LVrV1O143PPPUd6ejoZGRk0b96c999/nx49evD888/f1wgD3bp147vvvqNVq1Z89913hISEcP36dQ4cOMCwYcNM8+n1+gfeFyGEKG0kwRXD4sXO3D6gmdF4o3zWrOJXQ97u5jO4WxU2cppGo2HkyJEEBQUR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\n",
"text/plain": [
"
"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"my_interaction_plot = interaction_plot(x=data_to_plot['Target'], trace=data_to_plot['Prime'], \n",
" response=data_to_plot['RT'], colors=['red', 'blue'], \n",
" markers=['D', '^'])\n",
"plt.xlabel('Target')\n",
"plt.ylabel('RT (ms.)')\n",
"plt.title('Reaction Times to Target Type as a Function of Prime Type')\n",
"plt.ylim(0)\n",
"plt.margins(.5, 1)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": [
"hide-input"
]
},
"outputs": [],
"source": [
"%%HTML\n",
"
\n",
"\n",
"\n",
"
"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To build the factorial ANOVA model, we use the `AnovaRM` function from the `statsmodels` library. We need to specify our outcome variable (`RT`), our grouping variable (this is our random effect) plus our within participant effects. "
]
},
{
"cell_type": "code",
"execution_count": 220,
"metadata": {},
"outputs": [],
"source": [
"from statsmodels.stats.anova import AnovaRM"
]
},
{
"cell_type": "code",
"execution_count": 221,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" Anova\n",
"===========================================\n",
" F Value Num DF Den DF Pr > F\n",
"-------------------------------------------\n",
"Prime 471.4807 1.0000 23.0000 0.0000\n",
"Target 276.8183 1.0000 23.0000 0.0000\n",
"Prime:Target 284.8948 1.0000 23.0000 0.0000\n",
"===========================================\n",
"\n"
]
}
],
"source": [
"factorial_model = AnovaRM(data=factorial_anova_data, depvar='RT', within=['Prime', 'Target'], subject='Subject').fit()\n",
"print(factorial_model)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can also use this function to build ANOVAs with between participant factors. We just need to specifiy those with the parameter `betweeen` much in the same way we have done above with `within`. We see from the above that both main effects, plus the interaction are significant at p < .001. In order to interpret the interaction, we need to conduct pairwise comparisions. There are 2 key comparisons that will tell us where we have a priming effect. The first is comparining RTs to Positive Targets for Positive vs. Negative Primes, and the second is comparing RTs to Negative Targets following Positive vs. Negative Primes. We can effectively run these comparisons as *t*-tests and adopt a critical alpha level of .025 to control for the familywise error associated with running the two key tests.\n",
"\n",
"One way to run the *t*-tests is to filter our data frame and create new variables for each of the condition combinations we want to compare. In the code below, we create a boolean index (i.e., True and False values) corresponding to cases where the Prime AND the Target are both Positive. We then apply this logical index to the data frame and map the `RT` column of that filtered data frame onto a new variable called `PP`. "
]
},
{
"cell_type": "code",
"execution_count": 222,
"metadata": {},
"outputs": [],
"source": [
"index = (factorial_anova_data['Prime']=='Positive') & (factorial_anova_data['Target']=='Positive')\n",
"PP = factorial_anova_data[index]['RT']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We then do the same for cases where the Prime is Negative and the Target is Positive. "
]
},
{
"cell_type": "code",
"execution_count": 223,
"metadata": {},
"outputs": [],
"source": [
"index = (factorial_anova_data['Prime']=='Negative') & (factorial_anova_data['Target']=='Positive')\n",
"NP = factorial_anova_data[index]['RT']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can now run a *t*-test using the `stats.ttest_rel` function for paired samples *t*-tests."
]
},
{
"cell_type": "code",
"execution_count": 224,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Ttest_relResult(statistic=-32.00158210315536, pvalue=1.41511213896552e-20)"
]
},
"execution_count": 224,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"stats.ttest_rel(PP, NP)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can see that this comparison is significant. Your challenge now is to write the code for the other comparison - in other words, comparing RTs to Negative Targets following Positive vs. Negative Primes."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"```{admonition} Click the button to reveal answer\n",
":class: dropdown \n",
" index = (factorial_anova_data['Prime']=='Positive') & (factorial_anova_data['Target']=='Negative')\n",
" PN = factorial_anova_data[index]['RT'] \n",
"\n",
" index = (factorial_anova_data['Prime']=='Negative') & (factorial_anova_data['Target']=='Negative')\n",
" NN = factorial_anova_data[index]['RT']\n",
"\n",
" stats.ttest_rel(PN, NN) \n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The following will be a group-based activity which you will do in class.\n",
"\n",
"You need to build a new factorial ANOVA for the following experiment. The data in the file https://raw.githubusercontent.com/ajstewartlang/02_intro_to_python_programming/main/data/ANOVA_challenge.csv are from a 2 x 2 repeated measures design. 148 participants responded to a target image that was either positive or negative in valence. The target was preceded by a prime that was either also positive or negative in valence. We want to determine whether people responded faster to positive images following a positive prime (relative to following a negative prime),\n",
"and faster to negative images following a negative prime (relative to following a positive prime). Visualise the data and report the key descriptives before then running the appropriate ANOVA."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Regression"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": [
"hide-input"
]
},
"outputs": [],
"source": [
"%%HTML\n",
"
\n",
"\n",
"\n",
"
"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As you may recall, ANOVA and regression are both cases of the General Linear Model in action. Let's turn now to regression. We're going to start by using the dataset called `crime_dataset.csv` - this dataset contains population data, housing price index data and crime data for cities in the US."
]
},
{
"cell_type": "code",
"execution_count": 225,
"metadata": {},
"outputs": [],
"source": [
"crime_data = pd.read_csv(\"https://raw.githubusercontent.com/ajstewartlang/09_glm_regression_pt1/master/data/crime_dataset.csv\")"
]
},
{
"cell_type": "code",
"execution_count": 226,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
Year
\n",
"
index_nsa
\n",
"
City, State
\n",
"
Population
\n",
"
Violent Crimes
\n",
"
Homicides
\n",
"
Rapes
\n",
"
Assaults
\n",
"
Robberies
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
1975.0
\n",
"
41.080
\n",
"
Atlanta, GA
\n",
"
490584.0
\n",
"
8033.0
\n",
"
185.0
\n",
"
443.0
\n",
"
3518.0
\n",
"
3887.0
\n",
"
\n",
"
\n",
"
1
\n",
"
1975.0
\n",
"
30.750
\n",
"
Chicago, IL
\n",
"
3150000.0
\n",
"
37160.0
\n",
"
818.0
\n",
"
1657.0
\n",
"
12514.0
\n",
"
22171.0
\n",
"
\n",
"
\n",
"
2
\n",
"
1975.0
\n",
"
36.350
\n",
"
Cleveland, OH
\n",
"
659931.0
\n",
"
10403.0
\n",
"
288.0
\n",
"
491.0
\n",
"
2524.0
\n",
"
7100.0
\n",
"
\n",
"
\n",
"
3
\n",
"
1975.0
\n",
"
20.910
\n",
"
Oakland, CA
\n",
"
337748.0
\n",
"
5900.0
\n",
"
111.0
\n",
"
316.0
\n",
"
2288.0
\n",
"
3185.0
\n",
"
\n",
"
\n",
"
4
\n",
"
1975.0
\n",
"
20.385
\n",
"
Seattle, WA
\n",
"
503500.0
\n",
"
3971.0
\n",
"
52.0
\n",
"
324.0
\n",
"
1492.0
\n",
"
2103.0
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Year index_nsa City, State Population Violent Crimes Homicides \\\n",
"0 1975.0 41.080 Atlanta, GA 490584.0 8033.0 185.0 \n",
"1 1975.0 30.750 Chicago, IL 3150000.0 37160.0 818.0 \n",
"2 1975.0 36.350 Cleveland, OH 659931.0 10403.0 288.0 \n",
"3 1975.0 20.910 Oakland, CA 337748.0 5900.0 111.0 \n",
"4 1975.0 20.385 Seattle, WA 503500.0 3971.0 52.0 \n",
"\n",
" Rapes Assaults Robberies \n",
"0 443.0 3518.0 3887.0 \n",
"1 1657.0 12514.0 22171.0 \n",
"2 491.0 2524.0 7100.0 \n",
"3 316.0 2288.0 3185.0 \n",
"4 324.0 1492.0 2103.0 "
]
},
"execution_count": 226,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"crime_data.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First let’s do some wrangling. There is one column that combines both City and State information. Let’s separate that information out into two new columns called 'City' and 'State'. We first need to rename the column `City, State` to `City_State` in order to get rid of the space."
]
},
{
"cell_type": "code",
"execution_count": 227,
"metadata": {},
"outputs": [],
"source": [
"crime_data.rename(columns={'City, State':'City_State'}, inplace=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We then split the colunm `City_State` into two columns, the first called `City` and the second called `State`."
]
},
{
"cell_type": "code",
"execution_count": 228,
"metadata": {},
"outputs": [],
"source": [
"crime_data[['City','State']] = crime_data.City_State.str.split(expand=True,)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can then drop the original column `City_State`."
]
},
{
"cell_type": "code",
"execution_count": 229,
"metadata": {},
"outputs": [],
"source": [
"crime_data = crime_data.drop('City_State', axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 230,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
Year
\n",
"
index_nsa
\n",
"
Population
\n",
"
Violent Crimes
\n",
"
Homicides
\n",
"
Rapes
\n",
"
Assaults
\n",
"
Robberies
\n",
"
City
\n",
"
State
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
1975.0
\n",
"
41.080
\n",
"
490584.0
\n",
"
8033.0
\n",
"
185.0
\n",
"
443.0
\n",
"
3518.0
\n",
"
3887.0
\n",
"
Atlanta,
\n",
"
GA
\n",
"
\n",
"
\n",
"
1
\n",
"
1975.0
\n",
"
30.750
\n",
"
3150000.0
\n",
"
37160.0
\n",
"
818.0
\n",
"
1657.0
\n",
"
12514.0
\n",
"
22171.0
\n",
"
Chicago,
\n",
"
IL
\n",
"
\n",
"
\n",
"
2
\n",
"
1975.0
\n",
"
36.350
\n",
"
659931.0
\n",
"
10403.0
\n",
"
288.0
\n",
"
491.0
\n",
"
2524.0
\n",
"
7100.0
\n",
"
Cleveland,
\n",
"
OH
\n",
"
\n",
"
\n",
"
3
\n",
"
1975.0
\n",
"
20.910
\n",
"
337748.0
\n",
"
5900.0
\n",
"
111.0
\n",
"
316.0
\n",
"
2288.0
\n",
"
3185.0
\n",
"
Oakland,
\n",
"
CA
\n",
"
\n",
"
\n",
"
4
\n",
"
1975.0
\n",
"
20.385
\n",
"
503500.0
\n",
"
3971.0
\n",
"
52.0
\n",
"
324.0
\n",
"
1492.0
\n",
"
2103.0
\n",
"
Seattle,
\n",
"
WA
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Year index_nsa Population Violent Crimes Homicides Rapes Assaults \\\n",
"0 1975.0 41.080 490584.0 8033.0 185.0 443.0 3518.0 \n",
"1 1975.0 30.750 3150000.0 37160.0 818.0 1657.0 12514.0 \n",
"2 1975.0 36.350 659931.0 10403.0 288.0 491.0 2524.0 \n",
"3 1975.0 20.910 337748.0 5900.0 111.0 316.0 2288.0 \n",
"4 1975.0 20.385 503500.0 3971.0 52.0 324.0 1492.0 \n",
"\n",
" Robberies City State \n",
"0 3887.0 Atlanta, GA \n",
"1 22171.0 Chicago, IL \n",
"2 7100.0 Cleveland, OH \n",
"3 3185.0 Oakland, CA \n",
"4 2103.0 Seattle, WA "
]
},
"execution_count": 230,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"crime_data.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We also need to get rid of the space in the `Violent Crimes` column and rename the column `index_nsa` as `house_prices`. We are first going to set a dictionary, called a `dict` which contains the old names and the new names of the columns that we want to rename."
]
},
{
"cell_type": "code",
"execution_count": 231,
"metadata": {},
"outputs": [],
"source": [
"dict = {'Violent Crimes':'Violent_Crimes', 'index_nsa':'house_prices'}\n",
"crime_data.rename(columns=dict, inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 232,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
Year
\n",
"
house_prices
\n",
"
Population
\n",
"
Violent_Crimes
\n",
"
Homicides
\n",
"
Rapes
\n",
"
Assaults
\n",
"
Robberies
\n",
"
City
\n",
"
State
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
1975.0
\n",
"
41.080
\n",
"
490584.0
\n",
"
8033.0
\n",
"
185.0
\n",
"
443.0
\n",
"
3518.0
\n",
"
3887.0
\n",
"
Atlanta,
\n",
"
GA
\n",
"
\n",
"
\n",
"
1
\n",
"
1975.0
\n",
"
30.750
\n",
"
3150000.0
\n",
"
37160.0
\n",
"
818.0
\n",
"
1657.0
\n",
"
12514.0
\n",
"
22171.0
\n",
"
Chicago,
\n",
"
IL
\n",
"
\n",
"
\n",
"
2
\n",
"
1975.0
\n",
"
36.350
\n",
"
659931.0
\n",
"
10403.0
\n",
"
288.0
\n",
"
491.0
\n",
"
2524.0
\n",
"
7100.0
\n",
"
Cleveland,
\n",
"
OH
\n",
"
\n",
"
\n",
"
3
\n",
"
1975.0
\n",
"
20.910
\n",
"
337748.0
\n",
"
5900.0
\n",
"
111.0
\n",
"
316.0
\n",
"
2288.0
\n",
"
3185.0
\n",
"
Oakland,
\n",
"
CA
\n",
"
\n",
"
\n",
"
4
\n",
"
1975.0
\n",
"
20.385
\n",
"
503500.0
\n",
"
3971.0
\n",
"
52.0
\n",
"
324.0
\n",
"
1492.0
\n",
"
2103.0
\n",
"
Seattle,
\n",
"
WA
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Year house_prices Population Violent_Crimes Homicides Rapes \\\n",
"0 1975.0 41.080 490584.0 8033.0 185.0 443.0 \n",
"1 1975.0 30.750 3150000.0 37160.0 818.0 1657.0 \n",
"2 1975.0 36.350 659931.0 10403.0 288.0 491.0 \n",
"3 1975.0 20.910 337748.0 5900.0 111.0 316.0 \n",
"4 1975.0 20.385 503500.0 3971.0 52.0 324.0 \n",
"\n",
" Assaults Robberies City State \n",
"0 3518.0 3887.0 Atlanta, GA \n",
"1 12514.0 22171.0 Chicago, IL \n",
"2 2524.0 7100.0 Cleveland, OH \n",
"3 2288.0 3185.0 Oakland, CA \n",
"4 1492.0 2103.0 Seattle, WA "
]
},
"execution_count": 232,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"crime_data.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now let's plot our data to see the relationship between Violent Crimes and the Population attributes in our dataframe."
]
},
{
"cell_type": "code",
"execution_count": 233,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"crime_data.plot(kind='scatter', x='Population', y='Violent_Crimes', alpha=.5)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"So, it looks like there is a positive relationship between these two attributes. We can capture the strength of it by calculating Pearson's r. "
]
},
{
"cell_type": "code",
"execution_count": 234,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
Population
\n",
"
Violent_Crimes
\n",
"
\n",
" \n",
" \n",
"
\n",
"
Population
\n",
"
1.000000
\n",
"
0.808718
\n",
"
\n",
"
\n",
"
Violent_Crimes
\n",
"
0.808718
\n",
"
1.000000
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Population Violent_Crimes\n",
"Population 1.000000 0.808718\n",
"Violent_Crimes 0.808718 1.000000"
]
},
"execution_count": 234,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"crime_data[{'Violent_Crimes', 'Population'}].corr(method='pearson')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We see from the above that there is a positive relationship (r=0.81)between population size and the rate of violent crime. From the plot, we might conclude that the relationship is being overly influenced by crime in a small number of very large cities (top right of the plot above). Let’s exclude cities with populations greater than 2,000,000"
]
},
{
"cell_type": "code",
"execution_count": 235,
"metadata": {},
"outputs": [],
"source": [
"crime_data_filtered = crime_data[crime_data['Population'] < 2000000]"
]
},
{
"cell_type": "code",
"execution_count": 236,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAZUAAAEaCAYAAADZvco2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAACI6UlEQVR4nO29d5iU5bn4/3nL1O0VWIpIFVAEwQIGMArqSUx+aozlJJ6IGjUmJmpi1OQk5ntMjppEjQaNJ5b0Yk4sOTGJRkTFiAVUVDosICwLbJlt09/y/P54d4aZ3dnd2WV2dxaez3V5yc685Z63PPfz3FURQggkEolEIskB6nALIJFIJJIjB6lUJBKJRJIzpFKRSCQSSc6QSkUikUgkOUMqFYlEIpHkDKlUJBKJRJIzpFI5SjnjjDO4+uqr+9xOURR++9vfDoFE2ZONTL/85S/RdX2IJBocvve97zFlypScHCsf76PkyEQqlSHgiiuuQFGUbv/98Y9/HJTz7dmzhy996Usce+yxeDwexo4dyznnnMOzzz5LIi3p6aef5r777kvus3TpUq644opux9q/fz8XXXTRoMg5ULrKpOs6v/zlL3Ny7O9973vJ+6OqKmPHjuWyyy7jo48+ysnxB5uRdB8Hwocffsjll1/OxIkT8Xq9HHvssdx44420trb2ue9bb73FwoUL8Xq9jBkzhttvvx3LstK22bZtG+eccw5+v5/Kykquu+46QqFQ2jb79+/n4osvpri4mOLiYi699FIaGhr6PP/f//535syZg8fjYeLEiWnvX65lHE5G9lRuBLFo0SL+9Kc/pX1WWlo6oGMJITBNE5fL1e279evXc+aZZyYf2lmzZmFZFqtWreKmm27ijDPOoLS0lPLy8qzONXr06AHJOJgMtkwTJ07kjTfewLZtNm/ezHXXXcenPvUp3nvvPTRNG9RzDxb5eB8zEYlECAaDVFVVZfz+3XffpbCwkMcee4xJkyaxfft2rr/+erZu3co//vGPHo+7d+9eli1bxmc+8xkeffRRtm/fzpVXXokQgrvvvhuAYDDIWWedxezZs1mzZg2BQIArr7yS1tbW5ATQtm3OO+88VFXlxRdfRAjB9ddfz/nnn8/rr7+OoigZz79u3Tr+v//v/+PrX/86f/jDH3jrrbe47rrr8Pv9XHfddTmVcdgRkkHnC1/4gjjrrLN6/H7Lli3iE5/4hCgoKBAFBQXivPPOE9u3b09+/4tf/EJomiZWrVol5syZI1wul/jrX//a7Ti2bYvZs2eL448/XhiG0e37jo6O5OdLliwRV111VVI+IO2/l19+WQghBCB+85vfpB3jq1/9qqipqRE+n0/MmTNHPPXUU2nn+cEPfiCOPfZY4Xa7RWVlpTj77LNFOBzO+NsfffRRMXbs2OTfu3btEoD43Oc+l/zsiSeeENXV1cK27W4yHXPMMd1kT71m//rXv8TcuXOFz+cT8+fPF+vWrevhLjjccccdYvLkyWmf/fa3vxWA2LJlixBCiF/+8pdixowZwu12i7Fjx4pvf/vbadd7yZIlYvny5eLWW28VFRUVoqioSFx11VVp1yD1+ie48847xTHHHNOjLDt37hQXXHCBGDNmjPD5fOL4448Xv/71r5Pf9+c+1tfXi0suuUSUlJQIr9crlixZItauXZv8/uWXXxaA+Oc//ykWLVokfD6fmDFjhnj++efTZO7Pve4Jy7LEypUrxRVXXCGKiorEL3/5y37t/+c//1koiiLa2tp63Ob2228XY8eOFZZlJT9bsWKF8Pv9IhgMCiGE+J//+R/h9XpFa2trcpvnnntOAGLnzp1CCCFeeOGFtGdBCCE2bNiQdq0zcdlll4kFCxakffaNb3xDTJw4MecyDjfS/DXMRCIRzj77bKLRKK+++iqvvvoqwWCQc889l3g8ntzOtm2++c1vcu+997JlyxZOPfXUbsd6//33+eCDD7j11lsz+hMKCwszfv7AAw+waNEiLr74Yvbv38/+/ftZuHBht+2EEHzqU5/i/fff58knn2TDhg186Utf4tJLL+Wll14CHLPa3XffzQMPPMD27dt58cUX+bd/+7cef/9ZZ53Fvn372Lp1KwAvvfQSVVVVrFq1KrnNqlWr+PjHP55xFrh27Vo0TeMnP/lJUvbUa3b77bfzwAMP8O6771JWVsbFF1+MaZo9ypMJn88HgGEY/O1vf+PKK6/k8ssv58MPP+Tee+/loYce4v/9v/+Xts+f//xnmpubee211/jd737H//3f/3Hrrbf267xdScxSn3/+eT788EOuueYali9fzssvvwz07z6ef/75bNmyheeee463336bUaNGsWzZMpqamtK2/cY3vsG3vvUt3n//febPn88ll1ySNDX191535f333+eWW25hwoQJXHDBBViWxf/+7//y+c9/vl/Xpa2tDZ/Ph9/v73Gb119/nbPPPhtVPTTknXvuuYTDYd57773kNgsWLKCkpCS5TWKf119/PbnNsccey/Tp05PbzJo1i3HjxvGvf/2r1/Ofe+65aZ+de+657N69m7q6upzKONxI89cQ8corr1BYWJj8e9SoUdTW1vL73/+exsZG3nnnHSorKwH44x//yMSJE/njH//If/zHfwDOQHDfffexaNGiHs+xbds2AGbOnNkv2UpKSnC73fh8vl7NJK+++ipvvPEGBw8eTD7U11xzDW+++SY//elPOeuss/joo48YPXo05557Li6XiwkTJjBnzpwej3nssccyceJEXnrpJaZPn86qVav40pe+xP3338+mTZuYOXMmL7/8Mt/97ncz7p8wk5SUlHSTXQjBT37yE0466SQA/uu//osFCxZQW1ubNij0xp49e7jnnnsYP34806dP50tf+hKf+cxnuP322wGYNm0aBw4c4LbbbuM73/kObrcbgPLych555BE0TWPGjBl8//vf54YbbuCuu+6ioKAgq3N35YQTTuCEE05I/n3DDTewcuVKfv/73/Pxj3886/u4atUq3n77bTZu3Jh8Vn79618zceJEHn744bRrfccddyQHwx/+8If85je/4a233uKcc87p970G2LdvH7/97W/57W9/y7Zt2zj33HO59957+fSnP51U3v3hwIED3HHHHXzpS1/qNTBj//79nH766WmfJa5RYiKyf//+btfN5XJRXl7e6zaJY6VOaDKdv+t+qecfN25czmQcbuRKZYg49dRTWb9+ffK/xMw+8WInFAo4Cmf69Ols3Lgx7Rgnn3xyr+cQnU74nuy6h8vatWuJx+OMHTuWwsLC5H+//e1v2b59OwAXX3wxhmFwzDHHcMUVV/Cb3/yGjo6OXo/78Y9/PLkyefnllznnnHNYtGgRq1atYuvWrezbt48zzzyz3/IqisKJJ56Y/Hvs2LEAHDx4sNf9du7cSWFhIX6/n2OOOQYhBM888wwul4uNGzeyePHitO2XLFlCNBqltrY2+dkpp5yS5n85/fTTicfjadv0l3A4zG233casWbMoLy+nsLCQv//97/0OIti4cSMVFRVpkw+Px8Opp57a7ZlLVRKjR49G07Tk9RvIvf72t7/NbbfdxpgxY9i5cyd/+ctfuOSSSwakUBoaGjj77LOZPXs2d911V7/3T7wn2bwvudqmv/vlWsahQK5Uhgifz9djeGimh0EIkfa5pml4vd5ez5GYfW/cuJG5c+cehrSZsW2bkpIS1q5d2+27xAx97NixbNmyhZdffplVq1Zx5513cuutt/LWW28xfvz4jMc988wz+drXvsbGjRvp6OjglFNO4cwzz+Sll15C0zTGjx8/oNBaVVXTBvbE9bRtu9f9xo8fz0svvYSqqowePbqbWaXr/cpGmYsuxcBVVe32mWEYvcp1yy238Je//IV7772X4447joKCAr7+9a/T1tbW636ZyOaZg0P3NZXE9RvIvf7Od77DuHHj+P3vf8+MGTM4//zz+fd//3eWLl3arxDwuro6li1bxpQpU/jzn/+cMWgllTFjxnDgwIG0zxJ/J2b+Y8aMYe/evWnbGIZBIBBI22blypXdjn/w4MFeV4eZzp9QzqnHzoWMw41cqQwzs2bNYuPGjWm27IMHD7Jt2zZmzZrVr2OdeOKJnHDCCdxzzz0Z/QbBYLBHf4Lb7e4WutiV+fPn09raSjQaZcqUKWn/TZgwIbmdx+Ph3HPP5Yc//CEffvgh4XCYZ599tsfjnnXWWQQCAe6//34WL16MruuceeaZvPrqq6xcubLPVUo2svcHl8vFlClTmDRpUjeFMmvWLF599dW0z1avXo3P52PSpEnJz9auXZsm0xtvvIHb7Wby5MkAVFdXU19fn3acd999t1e5Vq9ezec+9zkuueQSTjzxRCZNmpQ0eSbI5lrMmjWLpqYmNm3alPwsFovx9ttv9/uZ6++9njx5Mt///vepra3l73//O36/n8997nPU1NTwla98hTVr1vR5ztraWhYtWsTMmTN5+umn8Xg8fe5z+umn8+KLL6ZNKJ5//nn8fn9yAnb66afzxhtv0N7entwmsU/CLHX66aeza9eu5MocYPPmzezdu5ePfexjvZ7/hRdeSPvs+eef55hjjmHcuHE5lXHYGaYAgaOK3qK/wuGwmDBhgjjzzDPFO++8I9atWyfOOOMMMXnyZBGLxYQQhyKZsuGdd94RpaWl4qSTThLPPPOM2LZtm9i8ebN45JFHxLHHHitaWlqEEN2jj66//noxY8YMsWPHDtHY2Cji8bgQIj1qyLZtsXTpUjF16lTx9NNPi9raWrFu3Trx4IMPip///OdCCCEee+wx8fOf/1ysX79e7N69Wzz++ONCVVWxcuXKXuWePn260HVd/PjHP06eq6KiQui6Ln71q1+lbUuXSKaZM2eKz33uc2Lfvn2isbGxx2u2d+/ePqN0MkV/pfK3v/1NqKoq7rrrLrF161bx5JNPitLSUvGf//mfyW2WLFkiioqKxLXXXis2bdoknnvuOTFq1Cjx5S9/ObnNo48+KnRdF08++aTYvn27uOuuu0RJSUmv0V+f+cxnxPTp08Vbb70lNm7cKK666ipRXFwslixZktwm2/t4yimniBNPPFH861//Eh9++KG4+OKLRWlpafL6JaK/9u7dm/b7NU0Tv/jFL4QQA7/XXYnFYuKZZ54Rn/nMZ4TH40mLaOvKxo0bxZgxY8Q555wj6urqxP79+5P/mabZ43579uwRRUVF4sorrxQbNmwQf/nLX0R5ebm49dZbk9t0dHSIcePGiU9+8pNi/fr1YtWqVWLixInikksuSW5jWZY46aSTxCmnnCLeeust8eabb4p58+aJ0047LRmdmIm3335b6LouvvWtb4nNmzeLX/3qV8Lr9Yqf/exnOZdxuJFKZQjIJqT43/7t35IhxZ/85CczhhRny65du8Q111wjjjnmGOFyuZIv4V/+8pfkg99VqdTW1opFixaJgoKCXkNRw+GwuPXWW8XEiROFy+USo0aNEuecc4546aWXhBBCPPXUU2LBggWitLRU+Hw+MWvWLPHYY4/1KfP1118vAPHuu+8mP7vwwgszDmxdZfrHP/4hjjvuOOF2u7uFFKeSC6UihBNSfNxxxwmXyyVqamrEt771rYwhxd/4xjdEeXm5KCwsFMuXLxehUCi5TTweF1/72tdEVVWVKCkpEddff734zne+06tS2bNnjzj77LOF3+8Xo0ePFt/97nfFlVdemaZUsr2PXUOKFy9enDGkuDelMtB73Rutra1i3759PX5/xx13dAubTvy3a9eu5HZLlixJuy5CCPHGG2+IBQsWCI/HI0aNGiVuu+22bopoy5YtYtmyZcLn84ny8nJxzTXXJMN5E9TX14uLLrpIFBYWiqKiInHxxReLgwcPpm1zzDHHiC984Qtpnz333HNi9uzZwu12iwkTJoh777232+/LlYzDiSKE7PwokeSSM844gylTpvDYY48NtyhHLccccwzXXXddMkpvKAmHw1RUVPDEE09w2WWXDfn5hxvpU5FIJEcU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+8F8FqVSGSKyaXfc1NTEj3/8Y77yla+k9YCORqNEIpHkvz/44AMmTJgw5PK1trYmZzI7duzAtm2KioqGrJVztucJh8Ns2rQp7buhuIZ9MX/+fFavXo0Qgm3btuH3+ykrK8urVtjD+Qxmw3A/g9kynM+gEIJHHnmEsWPHct5552XcZjCfRZlRP4S8++67/OpXv0q2O77wwgv55z//CcDZZ5/NI488wltvvZW0dSZCDg8ePMiPf/xjACzL4mMf+xgXXnjhkMv3/PPP889//hNN03C73fzHf/wH06dP73HfwaAvGQFeeeUV1q9fz4033pjcbyiu4U9+8hM2bdpER0cHJSUlXHzxxZimmZRNCMHjjz/O+++/j9vt5vrrr2fy5Mk9/q7BoC8Zh/sZ7Eu+fHgG+5IRhu8ZBNiyZQvf/e53mTBhQtJ0ddlllyVXJoP9LEqlIpFIJJKcIc1fEolEIskZUqlIJBKJJGdIpSKRSCSSnCGVikQikUhyhkx+lEgkkqOEvophdmXNmjX87//+L4qicMwxx/C1r32tz33kSkUiySMeeugh/vjHPw54/8svv5yDBw/mUCLJkcQZZ5zBt771ray23b9/P88++yx33nkn9913H1dccUVW+8mVikTSC1/+8pdpbW1FVVW8Xi9z587lyiuvTGZ1Dyff+973WLRoEWeddVbys9/85jfDKJEk35k5cyYNDQ1pnx04cIDHH3+c9vZ2PB4P1157LWPHjuWll17inHPOSZaZKSkpyeocUqlIJH1w6623Mnv2bAKBAD/4wQ946qmn+NznPjfcYkkkOeHnP/85X/ziFxkzZgzbt2/nscce44477qC+vh6A73znO9i2zWc/+1nmzJnT5/GkUpFIsqS8vJw5c+awd+9e1q1bx+9//3sCgQATJ07k6quvZty4cYCzulm6dCmrV6+mtbWVk08+mauvvhq3280rr7zCSy+9xJ133pk87sUXX8yDDz7I6NGj084XDAZZsWIF27dvx7Ztpk+fzhe/+EUqKir4wx/+wObNm9m+fTu//OUvOeOMM7jqqqvSjhUOh3niiSeSjZjOOussLrjgAlRVTcoxdepUXn75Zfx+P1dffXW3qsSSI5toNMrWrVu57777kp8lqgPYts3+/fu54447CAQCfPe73+Xee++loKCg12NKpSKRZElTUxPvvfceEyZM4IEHHuCWW25h5syZ/O1vf+Oee+7h/vvvR9edV+pf//oX3/72t/F6vdxzzz08/fTTXHrppf06nxCCM844g5tuugnbtvnZz37G448/zje/+U0uu+wytm7d2s38lcoTTzxBOBxmxYoVdHR08IMf/ICysjLOPPNMwKmdtWTJEh5//HFWrlzJI488wiOPPDLs1X0lQ4dt2xQUFPCjH/2o23fl5eVMmzYNXdeprq6mpqaG/fv3dyuj3xXpqJdI+uBHP/oRV1xxBd/97neZOXMm48aNY+7cucyePRtd1/nUpz5FPB5n69atyX3OOeccKisrKSws5IILLuD111/v93mLioo47bTT8Hg8+Hw+LrzwQjZv3pzVvrZts2bNGv793/8dn89HdXU15513HqtXr05uU1lZydKlS1FVlSVLltDS0kJbW1u/5ZSMXPx+P9XV1bzxxhuAM5HZvXs3AKeccgobNmwAoL29nf379zNq1Kg+jylXKhJJH9xyyy3Mnj07+fejjz5KVVVV8m9VVamsrEzrrpfaAKmqqqpb571siMVi/OpXv2L9+vWEQiEAIpEItm2jqr3PB9vb2zFNs1c5SktLk//2eDyAYw6RHLmkFsO87rrruPjii/nqV7/Ko48+ytNPP41pmpx++ulMnDiRE088kffff5+bbroJVVX5/Oc/n9YKoSekUpFI+klZWRl79uxJ/i2EoKmpKdkrA0jrVZH6ncfjIR6PJ79rbW3t8Tx//etfqa+v57//+78pLS1l9+7dfPOb30yWfu/NTFVcXIymaTQ1NSV9PV1llBx9pFZNTuXb3/52t88UReELX/gCX/jCF/p1Dmn+kkj6ycKFC3nvvff48MMPMU2Tv/71r7hcrmQJdoAXXniB5uZmgsEgzzzzDAsWLADgmGOOYe/evezevZt4PM6f/vSnHs8TjUZxu934/X6CwSD/+7//m/Z9SUlJjzkpqqqyYMEC/vCHPxCJRGhsbOS5555j0aJFObgCEknPyJWKRNJPampquOGGG3jiiSeS0V+33npr0kkP8LGPfYzvf//7tLS0MH/+fD7zmc8k973ooou48847cbvdXHbZZaxcuTLjeT7xiU/w4IMPctVVV1FeXs55553H2rVr075/6KGHePHFF1m0aBFXXnll2v5XXnklTzzxBF/5yldwu92cddZZfPzjHx+EKyKRHEL2U5FIcsyXv/xlrr322jQ/jERytCDNXxKJRCLJGVKpSCQSiSRnSPOXRCKRSHKGXKlIJBKJJGdIpSKRSCSSnCGVikQikUhyhlQqEolEIskZUqlIJBKJJGf8/5pdqgals1TyAAAAAElFTkSuQmCC\n",
"text/plain": [
"
"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"crime_data_filtered.plot(kind='scatter', x='Population', y='Violent_Crimes', alpha=0.5)\n",
"plt.title('For Cities with Populations < 2,000,000')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now let's look at the correlation between Violent Crimes and Population size for cities with a population of less than 2,000,000."
]
},
{
"cell_type": "code",
"execution_count": 237,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
Population
\n",
"
Violent_Crimes
\n",
"
\n",
" \n",
" \n",
"
\n",
"
Population
\n",
"
1.00000
\n",
"
0.68638
\n",
"
\n",
"
\n",
"
Violent_Crimes
\n",
"
0.68638
\n",
"
1.00000
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Population Violent_Crimes\n",
"Population 1.00000 0.68638\n",
"Violent_Crimes 0.68638 1.00000"
]
},
"execution_count": 237,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"crime_data_filtered[{'Violent_Crimes', 'Population'}].corr(method='pearson')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"It's still clearly there but a little weaker than on the full dataset."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's focus just on the year 2015 and build a linear model to see how the number of violent crimes is prediction by the population size."
]
},
{
"cell_type": "code",
"execution_count": 238,
"metadata": {},
"outputs": [],
"source": [
"crime_data_2015 = crime_data_filtered[crime_data_filtered['Year'] == 2015]"
]
},
{
"cell_type": "code",
"execution_count": 239,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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PsjkyZMZOHAgN954o6WLtJot26Jfv34UFBRw6NAhy7RLly7x3XffNfpvrrGfdY8ePfjLX/7C8ePH+c9//oO3tzcPPvggwcHBPP7446Snpze4zuPHjzNy5Ej69u3Lpk2brH6N12XEiBF8+eWXVj8wtmzZgre3NxEREZZ5du3axYULFyzzVL+muhtrxIgR/PDDDxw7dswyz+HDhzl58iS33nprvevfunWr1bQtW7bQvXt3S/eRvTI6UmVlJdOmTeODDz5gx44dVj0F1Wx5r021d+9evLy8rHp+atXooQJOrr7RZaWlpapbt25qzJgx6vvvv1e7d+9Wo0ePVj169FCXLl1SSv0yUsoW33//verUqZO6+eab1ebNm1VWVpY6fPiweu2119QNN9ygioqKlFI1R3TMmTNH9enTR2VnZ6uzZ88qk8mklLIelVRVVaWio6NVWFiY2rRpkzp+/LjavXu3Wr16tXr99deVUkq98cYb6vXXX1eZmZnqxIkTat26dUqr1ark5OR6c/fq1Uu5urqql156ybIuvV6vXF1d1caNG63m5aqRUn379lUPPvig+vnnn9XZs2fr3GYnT55scBRQbaPLrvT5558rrVarXnjhBXX06FH13nvvqU6dOqk//vGPlnmioqKUr6+vmjlzpjp06JD67LPPVOfOndVjjz1mmWft2rXK1dVVvffee+rYsWPqhRdeUH5+fvWOLrvvvvtUr1691LfffqsOHjyopk+frjp27KiioqIs89j6Od5yyy1q4MCB6uuvv1b79+9XkyZNUp06dbJsv7pG9ri4uKg333xTKdX0z/pqly5dUps3b1b33Xef8vDwsBoxd7WDBw+q6667To0bN06dOnVK5eXlWf5VVFTU+bqffvpJ+fr6qmnTpqkDBw6ojz/+WOl0OrVw4ULLPMXFxer6669Xd955p8rMzFQpKSkqJCRETZ482TJPZWWluvnmm9Utt9yivv32W/XNN9+oQYMGqaFDh1pGP9bmu+++U66urmrRokXq8OHDauPGjcrT01O9+uqrds9Ym7pGl13prbfeUvV9PZvNZnX//fcrnU6n0tLSrLZ9cXFxo97rpUuX1N69e9XevXvVoEGD1L333qv27t2rDh48aJknLi5Offjhh+rw4cPqyJEjatWqVcrLy0s9+eST9b5XpZSSInOVI0eOqF/96leWIcx33nln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\n",
"text/plain": [
"
"
],
"text/plain": [
" Population Violent_Crimes\n",
"Population 1.000000 0.649353\n",
"Violent_Crimes 0.649353 1.000000"
]
},
"execution_count": 240,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"crime_data_2015[{'Violent_Crimes', 'Population'}].corr(method='pearson')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We are going to build our model using `ols` from `statsmodels`"
]
},
{
"cell_type": "code",
"execution_count": 241,
"metadata": {},
"outputs": [],
"source": [
"model = ols('Violent_Crimes ~ Population', data=crime_data_2015)\n",
"results = model.fit()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can print the parameters of our linear model using the `params` method on our model fit."
]
},
{
"cell_type": "code",
"execution_count": 242,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Intercept 944.333528\n",
"Population 0.006963\n",
"dtype: float64"
]
},
"execution_count": 242,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"results.params"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can check to see whether our predictor is significant by conducting a *t*-test on it."
]
},
{
"cell_type": "code",
"execution_count": 243,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" Test for Constraints \n",
"==============================================================================\n",
" coef std err t P>|t| [0.025 0.975]\n",
"------------------------------------------------------------------------------\n",
"c0 0.0070 0.001 5.264 0.000 0.004 0.010\n",
"==============================================================================\n"
]
}
],
"source": [
"print(results.t_test([0, 1]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Taking the above together, we see that population significantly predicts violent crimes. For every increase in population by 1, violent crimes increase by 0.006963. We can use this information to predict how many violent crimes might be expected if a city has a population of 1,000,000. For a city with a population of about a million, there will be about 7,907 Violent Crimes. We calculate this by multiplying the estimate of our predictor (0.006963) by 1,000,000 and then adding the intercept (944.3). This gives us 7907.3 violent crimes."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python (data_science)",
"language": "python",
"name": "data_science"
},
"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.9.5"
}
},
"nbformat": 4,
"nbformat_minor": 5
}