{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# IntroStat Week 11\n", "\n", "Welcome to the 11th lecture in IntroStat\n", "\n", "During the lectures we will present both slides and notebooks. \n", "\n", "This is the notebook used in the lecture in week 11.\n" ] }, { "cell_type": "code", "execution_count": 95, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import pandas as pd\n", "import scipy.stats as stats\n", "import statsmodels.api as sm\n", "import statsmodels.formula.api as smf\n", "import statsmodels.stats.power as smp\n", "import statsmodels.stats.proportion as smprop\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Example: Intro to ANOVA" ] }, { "cell_type": "code", "execution_count": 96, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
valuegroup
02.8A
13.6A
23.4A
32.3A
45.5B
56.3B
66.1B
75.7B
85.8C
98.3C
106.9C
116.1C
\n", "
" ], "text/plain": [ " value group\n", "0 2.8 A\n", "1 3.6 A\n", "2 3.4 A\n", "3 2.3 A\n", "4 5.5 B\n", "5 6.3 B\n", "6 6.1 B\n", "7 5.7 B\n", "8 5.8 C\n", "9 8.3 C\n", "10 6.9 C\n", "11 6.1 C" ] }, "execution_count": 96, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Make pandas dataframe with grouped data:\n", "data = pd.DataFrame({\n", " 'value': [2.8, 3.6, 3.4, 2.3, 5.5, 6.3, 6.1, 5.7, 5.8, 8.3, 6.9, 6.1], \n", " 'group': [\"A\", \"A\", \"A\", \"A\", \"B\", \"B\", \"B\", \"B\", \"C\", \"C\", \"C\", \"C\"]})\n", "data" ] }, { "cell_type": "code", "execution_count": 97, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 97, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAioAAAGwCAYAAACHJU4LAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAAAh9ElEQVR4nO3de1TUZeLH8c8IiIEyJowtJisomCZrWWkZSV7TMnOr0xara5anzrYkW9nNPcfSbtpF25O1bhcq3RKrNa31nLRyV0nK9QbplhcIQdv0yEVmBDpgML8/2ubHIJKjMM+j836dM+c4z/fL8OGPaT59n+f7jMPr9XoFAABgoQ6mAwAAABwPRQUAAFiLogIAAKxFUQEAANaiqAAAAGtRVAAAgLUoKgAAwFrhpgOcisbGRn333Xfq0qWLHA6H6TgAAOAEeL1eHTlyRD169FCHDq1fMzmti8p3332nhIQE0zEAAMBJ2L9/v3r27NnqOad1UenSpYukH//QmJgYw2kAAMCJ8Hg8SkhI8H2Ot+a0Lio/TffExMRQVAAAOM2cyLINFtMCAABrUVQAAIC1KCoAAMBaFBUAAGAtigoAALAWRQUAAFiLogIAAKxFUQEAANaiqAAAAGtRVAAAgLVO6y30AQBA+ykuq1ZpZa0SY6OVFBdtJANFBQAA+KmqrVdWToFyC8t8Y+kpLi3MGCRnVERQszD1AwAA/GTlFCivqNxvLK+oXNNz8oOehaICAAB8isuqlVtYpgav12+8wetVbmGZ9pbXBDUPRQUAAPiUVta2erykgqICAAAM6dUtqtXjibHBXVRLUQEAAD69XZ2VnuJSmMPhNx7mcCg9xRX0u38oKgAAwM/CjEFKS47zG0tLjtPCjEFBz8LtyQAAwI8zKkJLpg3R3vIalVTUsI8KAACwT1KcuYLyE6Z+AACAtSgqAADAWhQVAABgLYoKAACwFkUFAABYi6ICAACsRVEBAADWMlpUGhoaNGvWLCUlJemss85Snz599Pjjj8vb7BsbAQBAaDK64dvTTz+tRYsWafHixRowYIC2bNmi2267TU6nU1lZWSajAQAACxgtKp9//rkmTpyo8ePHS5ISExOVk5OjTZs2mYwFAAAsYXTq5/LLL9fatWu1Z88eSdKXX36pDRs26Oqrr27x/Lq6Onk8Hr8HAAA4cxm9ovLwww/L4/GoX79+CgsLU0NDg5588klNmjSpxfPnzp2rOXPmBDklAAAwxegVlXfffVdvv/22li5dqm3btmnx4sV67rnntHjx4hbPnzlzptxut++xf//+ICcGAADB5PAavMUmISFBDz/8sDIzM31jTzzxhN566y3t2rXrZ3/e4/HI6XTK7XYrJiamPaMCAIA2Esjnt9ErKrW1terQwT9CWFiYGhsbDSUCAAA2MbpGZcKECXryySf1y1/+UgMGDFB+fr4WLFig22+/3WQsAABgCaNTP0eOHNGsWbO0YsUKHTp0SD169FBGRoYeeeQRdezY8Wd/nqkfAABOP4F8fhstKqeKogIAwOnntFmjAgAA0BqKCgAAsBZFBQAAWIuiAgAArEVRAQAA1qKoAAAAa1FUAACAtSgqAADAWhQVAABgLYoKAACwFkUFAABYi6ICAACsRVEBAADWoqgAAABrUVQAAIC1KCoAAMBaFBUAAGAtigoAALAWRQUAAFiLogIAAKxFUQEAANaiqAAAAGtRVAAAgLUoKgAAwFoUFQAAYC2KCgAAsBZFBQAAWIuiAgAArEVRAQAA1qKoAAAAa1FUAACAtSgqAADAWhQVAABgLYoKAACwFkUFAABYi6ICAACsRVEBAADWoqgAAABrUVQAAIC1KCoAAMBaFBUAAGAtigoAALAWRQUAAFiLogIAAKxFUQEAANYyWlQSExPlcDiOeWRmZpqMBQAALBFu8pdv3rxZDQ0Nvuf/+c9/NGbMGN10000GUwEAAFsYLSoul8vv+bx589SnTx9deeWVhhIBAACbGC0qTdXX1+utt97SfffdJ4fD0eI5dXV1qqur8z33eDzBigcAAAywZjHtypUrVVVVpalTpx73nLlz58rpdPoeCQkJwQsIAACCzuH1er2mQ0jS2LFj1bFjR/3jH/847jktXVFJSEiQ2+1WTExMMGICABAyisuqVVpZq8TYaCXFRbfZ63o8HjmdzhP6/LZi6qe0tFSffvqp3n///VbPi4yMVGRkZJBSAQAQmqpq65WVU6DcwjLfWHqKSwszBskZFRHULFZM/bzxxhvq3r27xo8fbzoKAAAhLyunQHlF5X5jeUXlmp6TH/QsxotKY2Oj3njjDd16660KD7fiAg8AACGruKxauYVlami2MqTB61VuYZn2ltcENY/xovLpp59q3759uv32201HAQAg5JVW1rZ6vKQiuEXF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jh113333aevWrW0SDAAA4KS/lLC5c845R7t3726rlwMAAAj8isr27dv9nnu9Xh04cEDz5s3ThRde2Fa5AAAAAi8qF154oRwOh5rf1XzZZZfp9ddfb7NgAAAAAReVvXv3+j3v0KGDXC6XOnXq1GahAAAApJMoKr169WqPHAAAAMc4oaLywgsvnPALZmVlnXQYAACApk5oC/2kpKQTezGHQ8XFxacc6kSxhT4AAKefNt9Cv/m6FAAAgGBos31UAAAA2lrAi2kl6dtvv9WHH36offv2qb6+3u/YggUL2iQYAABAwEVl7dq1uu6669S7d2/t2rVLqampKikpkdfr1UUXXdQeGQEAQIgKeOpn5syZuv/++7Vjxw516tRJy5cv1/79+3XllVfqpptuao+MAAAgRAVcVHbu3KkpU6ZIksLDw/X999+rc+fOeuyxx/T000+3eUAAABC6Ai4q0dHRvnUp8fHx+uabb3zHysvL2y4ZAAAIeQGvUbnsssu0YcMG9e/fX9dcc41mzJihHTt26P3339dll13WHhkBAECICrioLFiwQNXV1ZKkOXPmqLq6Wu+8845SUlK44wcAALSpgKd+nnrqKVVWVkr6cRror3/9q7Zv367ly5cH/D1As2fPlsPh8Hv069cv0EgAAOAMFfAVlbKyMo0bN04ul0u33HKLJk+erAsuuOCkAwwYMECffvrp/wcKP6mtXQAAwBko4CsqH3zwgQ4cOKBZs2Zp8+bNuuiiizRgwAA99dRTKikpCThAeHi4fvGLX/gecXFxAb8GAAA4M53UFvpnn3227rzzTq1bt06lpaWaOnWq/va3vyk5OTng1yosLFSPHj3Uu3dvTZo0Sfv27TvuuXV1dfJ4PH4PAABw5jql7/o5evSotmzZon//+98qKSnROeecE9DPX3rppXrzzTe1evVqLVq0SHv37tWwYcN05MiRFs+fO3eunE6n75GQkHAq8QEAgOUcXq/XG+gP/etf/9LSpUu1fPlyNTY26oYbbtCkSZM0cuRIORyOkw5TVVWlXr16acGCBZo2bdoxx+vq6lRXV+d77vF4lJCQcEJfEw0AAOzg8XjkdDpP6PM74JWr5557riorKzVu3Di98sormjBhgiIjI086bFNdu3ZV3759VVRU1OLxyMjINvtdAADAfgEXldmzZ+umm25S165d2zxMdXW1vvnmG/3ud79r89cGAACnn4DXqNxxxx1tVlLuv/9+rV+/XiUlJfr88891/fXXKywsTBkZGW3y+gAA4PRmdNOSb7/9VhkZGaqoqJDL5dIVV1yhjRs3yuVymYwFAAAsYbSoLFu2zOSvBwAAljul25MBAADaE0UFAABYi6ICAACsRVEBAADWoqgAAABrUVQAAIC1KCoAAMBaFBUAAGAtigoAALAWRQUAAFiLogIAAKxFUQEAANaiqAAAAGtRVAAAgLUoKgAAwFoUFQAAYC2KCgAAsBZFBQAAWIuiAgAArEVRAQAA1qKoAAAAa1FUAACAtSgqAADAWhQVAABgLYoKAACwFkUFAABYi6ICAACsRVEBAADWoqgAAABrUVQAAIC1KCoAAMBaFBUAAGAtigoAALAWRQUAAFiLogIAAKxFUQEAANaiqAAAAGtRVAAAgLUoKgAAwFoUFQAAYC2KCgAAsBZFBQAAWIuiAgAArEVRAQAA1qKoAAAAa1lTVObNmyeHw6F77rnHdBQAAGAJK4rK5s2b9fLLL2vgwIGmowAAAIsYLyrV1dWaNGmSXn31VZ199tmm4wAAAIsYLyqZmZkaP368Ro8e/bPn1tXVyePx+D0AAMCZK9zkL1+2bJm2bdumzZs3n9D5c+fO1Zw5c9o5FQAAsIWxKyr79+/XH//4R7399tvq1KnTCf3MzJkz5Xa7fY/9+/e3c0oAAGCSw+v1ek384pUrV+r6669XWFiYb6yhoUEOh0MdOnRQXV2d37GWeDweOZ1Oud1uxcTEtHdkAADQBgL5/DY29TNq1Cjt2LHDb+y2225Tv3799NBDD/1sSQEAAGc+Y0WlS5cuSk1N9RuLjo5WbGzsMeMAACA0Gb/rBwAA4HiM3vXT3Lp160xHAAAAFuGKCgAAsBZFBQAAWIuiAgAArEVRAQAA1qKoAAAAa1FUAACAtSgqAADAWhQVAABgLYoKAACwFkUFAABYi6ICAACsZdV3/dikuKxapZW1SoyNVlJctOk4AACEJIpKM1W19crKKVBuYZlvLD3FpYUZg+SMijCYDACA0MPUTzNZOQXKKyr3G8srKtf0nHxDiQAACF0UlSaKy6qVW1imBq/Xb7zB61VuYZn2ltcYSgYAQGiiqDRRWlnb6vGSCooKAADBRFFpole3qFaPJ8ayqBYAgGCiqDTR29VZ6SkuhTkcfuNhDofSU1zc/QMAQJBRVJpZmDFIaclxfmNpyXFamDHIUCIAAEIXtyc344yK0JJpQ7S3vEYlFTXsowIAgEEUleNIiqOgAABgGlM/AADAWlxROQ620AcAwDyKSjNsoQ8AgD2Y+mmGLfQBALAHRaUJttAHAMAuFJUm2EIfAAC7UFSaYAt9AADsQlFpgi30AQCwC0WlGbbQBwDAHtye3Axb6AMAYA+KynGwhT4AAOYx9QMAAKxFUQEAANaiqAAAAGtRVAAAgLUoKgAAwFoUFQAAYC2KCgAAsBZFBQAAWIuiAgAArEVRAQAA1qKoAAAAa1FUAACAtSgqAADAWkaLyqJFizRw4EDFxMQoJiZGQ4cO1UcffWQyEgAAsIjRotKzZ0/NmzdPW7du1ZYtWzRy5EhNnDhRX331lclYAADAEg6v1+s1HaKpbt266dlnn9W0adN+9lyPxyOn0ym3262YmJggpAMAAKcqkM/v8CBl+lkNDQ167733VFNTo6FDh7Z4Tl1dnerq6nzPPR5PsOIBAAADjC+m3bFjhzp37qzIyEj9/ve/14oVK3T++ee3eO7cuXPldDp9j4SEhCCnBQAAwWR86qe+vl779u2T2+3W3//+d7322mtav359i2WlpSsqCQkJTP0AAHAaCWTqx3hRaW706NHq06ePXn755Z89lzUqAACcfgL5/DY+9dNcY2Oj31UTAAAQuowupp05c6auvvpq/fKXv9SRI0e0dOlSrVu3TmvWrDEZCwAAWMJoUTl06JCmTJmiAwcOyOl0auDAgVqzZo3GjBljMhYAALCE0aKSnZ1t8tcDAADLWbOPim2Ky6pVWlmrxNhoJcVFm44DAEBIoqg0U1Vbr6ycAuUWlvnG0lNcWpgxSM6oCIPJAAAIPdbd9WNaVk6B8orK/cbyiso1PSffUCIAAEIXRaWJ4rJq5RaWqaHZ1jINXq9yC8u0t7zGUDIAAEITRaWJ0sraVo+XVFBUAAAIJopKE726RbV6PDGWRbUAAAQTRaWJ3q7OSk9xKczh8BsPcziUnuLi7h8AAIKMotLMwoxBSkuO8xtLS47TwoxBhhIBABC6uD25GWdUhJZMG6K95TUqqahhHxUAAAyiqBxHUhwFBQAA05j6AQAA1qKoAAAAa1FUAACAtSgqAADAWhQVAABgLYoKAACwFkUFAABYi6ICAACsRVEBAADWoqgAAABrUVQAAIC1KCoAAMBaFBUAAGAtigoAALAWRQUAAFiLogIAAKxFUQEAANaiqAAAAGuFmw5gq+KyapVW1ioxNlpJcdGm4wAAEJIoKs1U1dYrK6dAuYVlvrH0FJcWZgySMyrCYDIAAEIPUz/NZOUUKK+o3G8sr6hc03PyDSUCACB0UVSaKC6rVm5hmRq8Xr/xBq9XuYVl2lteYygZAAChiaLSRGllbavHSyooKgAABBNFpYle3aJaPZ4Yy6JaAACCiaLSRG9XZ6WnuBTmcPiNhzkcSk9xcfcPAABBRlFpZmHGIKUlx/mNpSXHaWHGIEOJAAAIXdye3IwzKkJLpg3R3vIalVTUsI8KAAAGUVSOIymOggIAgGlM/QAAAGtRVAAAgLUoKgAAwFoUFQAAYC2KCgAAsBZFBQAAWIuiAgAArGW0qMydO1eDBw9Wly5d1L17d/3617/W7t27TUYCAAAWMVpU1q9fr8zMTG3cuFGffPKJjh49qquuuko1NXxLMQAAkBxer9drOsRPysrK1L17d61fv17p6ek/e77H45HT6ZTb7VZMTEwQEgIAgFMVyOe3VVvou91uSVK3bt1aPF5XV6e6urpjzvd4PO0fDgAAtImfPrdP5FqJNVdUGhsbdd1116mqqkobNmxo8ZzZs2drzpw5QU4GAADaw/79+9WzZ89Wz7GmqNx111366KOPtGHDhuOGbn5FpbGxUZWVlYqNjZXD4WjTPB6PRwkJCdq/fz/TSoABvAcB89rrfej1enXkyBH16NFDHTq0vlzWiqmfu+++W6tWrVJubm6rzSoyMlKRkZF+Y127dm3XbDExMfxHEjCI9yBgXnu8D51O5wmdZ7SoeL1eTZ8+XStWrNC6deuUlJRkMg4AALCM0aKSmZmppUuX6oMPPlCXLl108OBBST+2rLPOOstkNAAAYAGj+6gsWrRIbrdbw4cPV3x8vO/xzjvvmIwl6cdppkcfffSYqSYAwcF7EDDPhvehNYtpAQAAmuO7fgAAgLUoKgAAwFoUFQAAYC2KCgAAsBZFpQVffPGFwsLCNH78eNNRgJAzdepUORwO3yM2Nlbjxo3T9u3bTUcDQsbBgwc1ffp09e7dW5GRkUpISNCECRO0du3aoGehqLQgOztb06dPV25urr777jvTcYCQM27cOB04cEAHDhzQ2rVrFR4ermuvvdZ0LCAklJSU6OKLL9Y///lPPfvss9qxY4dWr16tESNGKDMzM+h5uD25merqasXHx2vLli169NFHNXDgQP3pT38yHQsIGVOnTlVVVZVWrlzpG9uwYYOGDRumQ4cOyeVymQsHhIBrrrlG27dv1+7duxUdHe13rKqqqt2/uqY5rqg08+6776pfv34677zzNHnyZL3++usn9DXUANpHdXW13nrrLSUnJys2NtZ0HOCMVllZqdWrVyszM/OYkiK1//frtcSKLyW0SXZ2tiZPnizpx8vPbrdb69ev1/Dhw80GA0LIqlWr1LlzZ0lSTU2N4uPjtWrVqp/9llUAp6aoqEher1f9+vUzHcWHd30Tu3fv1qZNm5SRkSFJCg8P180336zs7GzDyYDQMmLECBUUFKigoECbNm3S2LFjdfXVV6u0tNR0NOCMZuMMAldUmsjOztYPP/ygHj16+Ma8Xq8iIyP14osvnvBXUgM4NdHR0UpOTvY9f+211+R0OvXqq6/qiSeeMJgMOLOlpKTI4XBo165dpqP4cEXlf3744QctWbJE8+fP9/2fXEFBgb788kv16NFDOTk5piMCIcvhcKhDhw76/vvvTUcBzmjdunXT2LFj9dJLL6mmpuaY41VVVUHPRFH5n1WrVunw4cOaNm2aUlNT/R433ngj0z9AENXV1engwYM6ePCgdu7cqenTp6u6uloTJkwwHQ0447300ktqaGjQkCFDtHz5chUWFmrnzp164YUXNHTo0KDnoaj8T3Z2tkaPHt3i9M6NN96oLVu2sOEUECSrV69WfHy84uPjdemll2rz5s167733WNQOBEHv3r21bds2jRgxQjNmzFBqaqrGjBmjtWvXatGiRUHPwz4qAADAWlxRAQAA1qKoAAAAa1FUAACAtSgqAADAWhQVAABgLYoKAACwFkUFAABYi6ICAACsRVEBAADWoqgAAABrUVQAGFdfX286AgBLUVQAtLkjR45o0qRJio6OVnx8vJ5//nkNHz5c99xzjyQpMTFRjz/+uKZMmaKYmBjdeeedkqTly5drwIABioyMVGJioubPn+/3ug6HQytXrvQb69q1q958801JUklJiRwOh5YtW6bLL79cnTp1UmpqqtavX9/efzKAdkJRAdDm7rvvPuXl5enDDz/UJ598os8++0zbtm3zO+e5557TBRdcoPz8fM2aNUtbt27Vb37zG91yyy3asWOHZs+erVmzZvlKSCAeeOABzZgxQ/n5+Ro6dKgmTJigioqKNvrrAARTuOkAAM4sR44c0eLFi7V06VKNGjVKkvTGG2+oR48efueNHDlSM2bM8D2fNGmSRo0apVmzZkmS+vbtq6+//lrPPvuspk6dGlCGu+++WzfeeKMkadGiRVq9erWys7P14IMPnsJfBsAErqgAaFPFxcU6evSohgwZ4htzOp0677zz/M675JJL/J7v3LlTaWlpfmNpaWkqLCxUQ0NDQBmGDh3q+3d4eLguueQS7dy5M6DXAGAHigoAI6KjowP+GYfDIa/X6zd29OjRtooEwEIUFQBtqnfv3oqIiNDmzZt9Y263W3v27Gn15/r376+8vDy/sby8PPXt21dhYWGSJJfLpQMHDviOFxYWqra29pjX2rhxo+/fP/zwg7Zu3ar+/fuf1N8DwCzWqABoU126dNGtt96qBx54QN26dVP37t316KOPqkOHDnI4HMf9uRkzZmjw4MF6/PHHdfPNN+uLL77Qiy++qL/85S++c0aOHKkXX3xRQ4cOVUNDgx566CFFREQc81ovvfSSUlJS1L9/fz3//PM6fPiwbr/99nb5ewG0L66oAGhzCxYs0NChQ3Xttddq9OjRSktLU//+/dWpU6fj/sxFF12kd999V8uWLVNqaqoeeeQRPfbYY34LaefPn6+EhAQNGzZMv/3tb3X//fcrKirqmNeaN2+e5s2bpwsuuEAbNmzQhx9+qLi4uPb4UwG0M4e3+YQvALSxmpoanXvuuZo/f76mTZvWbr+npKRESUlJys/P14UXXthuvwdA8DD1A6DN5efna9euXRoyZIjcbrcee+wxSdLEiRMNJwNwuqGoAGgXzz33nHbv3q2OHTvq4osv1meffcb0C4CAMfUDAACsxWJaAABgLYoKAACwFkUFAABYi6ICAACsRVEBAADWoqgAAABrUVQAAIC1KCoAAMBa/wcstANOHrD7eQAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "data.plot.scatter('group', 'value')" ] }, { "cell_type": "code", "execution_count": 98, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 98, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiYAAAHNCAYAAAAqpbCaAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA7gElEQVR4nO3deVyVdd7/8fdhO3JAXDHAcFdQ0bylzcyU2y23dO4Wy7GknDZNq7GmtN+UeFeWVmOZMlmWrWpaltNi0qKNmaNSmhvmnqMgogIChgf4/v5wOHcIGAe54EJez8eDB53vub7X93Odc8l59z3X4jDGGAEAANiAT00XAAAAUIxgAgAAbINgAgAAbINgAgAAbINgAgAAbINgAgAAbINgAgAAbINgAgAAbINgAgAAbINgAlQjh8OhqVOn1nQZF7xVq1bJ4XBo1apV51xu6tSpcjgcysjIqJ7CAPwuggkuCAsWLJDD4Sjx06xZM8XFxenzzz+v6fLO2/bt2zV16lTt37+/pksBAEv51XQBQFWaNm2aWrduLWOMjhw5ogULFmjw4MH6xz/+oaFDh9Z0eZW2fft2JSQkqE+fPmrVqlVNlwMAliGY4IIyaNAgXXrppZ7HY8eO1UUXXaSFCxfW6mBSnQoKClRUVKSAgICaLgWScnNzFRQUVNNlANWGr3JwQWvYsKECAwPl51cyg+fm5mrSpEmKjIyU0+lUVFSUnnvuORXfbPvUqVOKjo5WdHS0Tp065el3/PhxhYeH66qrrlJhYaEkKT4+XsHBwdq7d68GDhyooKAgRUREaNq0aarIzbt//PFHDRo0SCEhIQoODlbfvn21bt06z/MLFizQjTfeKEmKi4vzfFX1e8dPLFmyRJ06dVK9evUUExOjZcuWKT4+vsSMy/79++VwOPTcc89p1qxZatu2rZxOp7Zv3y5J+vrrr9WrVy8FBQWpYcOGGj58uHbs2FFinLPXWaz4+I3fcjgcuu+++/Tuu+8qKipK9erVU2xsrL799ttS/Q8dOqQ77rhDF110kZxOpzp37qzXX3+91HL//ve/NWLECAUFBalZs2Z68MEHlZ+ff87X5mwZGRm66aabFBISoiZNmuj+++/Xr7/+6nm+d+/euuSSS8rsGxUVpYEDB55z/UVFRZo6daoiIiLkcrkUFxen7du3q1WrVoqPj/csV/yV5OrVqzVu3Dg1a9ZMF198sef5uXPnqnPnznI6nYqIiND48eOVmZlZYqyz11msT58+6tOnj+dx8XE4ixcv1pQpUxQWFqagoCBdd911Onjw4Dm3B7ASMya4oGRlZSkjI0PGGKWnp2v27NnKycnR6NGjPcsYY3Tdddfpm2++0dixY9WtWzd98cUXevjhh3Xo0CH97W9/U2BgoN5880317NlTjz32mF544QVJ0vjx45WVlaUFCxbI19fXs87CwkJde+21uvLKKzVjxgytWLFCTzzxhAoKCjRt2rRy6922bZt69eqlkJAQ/eUvf5G/v79eeeUV9enTR6tXr9YVV1yha665RhMnTtRLL72kKVOmqGPHjpLk+V2WTz/9VCNHjlSXLl00ffp0nThxQmPHjlXz5s3LXP6NN97Qr7/+qrvuuktOp1ONGzfWl19+qUGDBqlNmzaaOnWqTp06pdmzZ6tnz5764YcfKv2V0urVq7V48WJNnDhRTqdTc+fO1bXXXqv169crJiZGknTkyBFdeeWVniATGhqqzz//XGPHjlV2drYeeOABSWcCZN++ffXLL79o4sSJioiI0Ntvv62vv/7aq5puuukmtWrVStOnT9e6dev00ksv6cSJE3rrrbckSbfeeqvuvPNObd261VOjJG3YsEE///yz/t//+3/nXP/kyZM1Y8YMDRs2TAMHDtTmzZs1cODAEuHnt8aNG6fQ0FA9/vjjys3NlXQm6CUkJKhfv3669957tXPnTiUmJmrDhg367rvv5O/v79U2F3vqqafkcDj0yCOPKD09XbNmzVK/fv20adMmBQYGVmqdwHkxwAXgjTfeMJJK/TidTrNgwYISy3700UdGknnyySdLtN9www3G4XCY3bt3e9omT55sfHx8zLfffmuWLFliJJlZs2aV6DdmzBgjyUyYMMHTVlRUZIYMGWICAgLM0aNHPe2SzBNPPOF5PGLECBMQEGD27NnjaTt8+LCpX7++ueaaazxtxWN/8803FXo9unTpYi6++GJz8uRJT9uqVauMJNOyZUtP2759+4wkExISYtLT00uso1u3bqZZs2bm2LFjnrbNmzcbHx8fc9ttt5XY/t+us9gTTzxhzv4TU/y+bNy40dN24MABU69ePfOHP/zB0zZ27FgTHh5uMjIySvS/+eabTYMGDUxeXp4xxphZs2YZSeb999/3LJObm2vatWtXoderuMbr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dGHgAnTo0CH169dPo0ePVkREhFJSUvT3v/9dYWFhuueee6q9ngULFniuQVIb5ebmavny5frmm2+0ZcsWffzxx171X7x4sedO18HBwVqzZo0WLlyoAQMGqGfPnhZVDdROBBPgAtSoUSPFxsbqtdde09GjRxUUFKQhQ4bomWeeUZMmTWq6vFrn6NGjGjVqlBo2bKgpU6bouuuu86p/165d5efnpxkzZig7O1sXXXSR7r//fj355JMWVQzUXhxjAsByxTMm+/bt4/oYAM6JY0wAAIBtEEwAlLJ06VI5HA6tXr261HOvvPKKHA6Htm7dqp9++knx8fFq06aN6tWrp7CwMN1xxx06duzY747hcDg0derUUu2tWrVSfHx8ibbMzEw98MADioyMlNPpVLt27fTss896Ll8P4MLBMSYAShkyZIiCg4P1/vvvq3fv3iWeW7x4sTp37qyYmBg9//zz2rt3r26//XaFhYVp27ZtmjdvnrZt26Z169Z5dSn98uTl5al37946dOiQ7r77brVo0UJr167V5MmTlZqa6jm7BcCFgWACoJTAwEANGzZMS5cu1UsvveS5H0xaWppWr17tmekYN26cJk2aVKLvlVdeqVtuuUVr1qxRr169zruWF154QXv27NGPP/7ouRPu3XffrYiICM2cOVOTJk3y3FMIQO3HVzkAyjRy5Eilp6dr1apVnralS5eqqKhII0eOlFTyLri//vqrMjIydOWVV0pSifvhnI8lS5aoV69eatSokTIyMjw//fr1U2Fhob799tsqGQeAPTBjAqBM1157rRo0aKDFixd7bkS4ePFidevWTR06dJAkHT9+XAkJCVq0aJHS09NL9C/rLsyVsWvXLv30008KDQ0t8/mzxwVQuxFMAJTJ6XRqxIgRWrZsmebOnasjR47ou+++09NPP+1Z5qabbtLatWv18MMPq1u3bgoODlZRUZGuvfbaSh+YWlhYWOJxUVGR+vfvr7/85S9lLl8ckgBcGAgmAMo1cuRIvfnmm/rqq6+0Y8cOGWM8X+OcOHFCX331lRISEvT44497+uzatatC627UqJEyMzNLtJ0+fVqpqakl2tq2baucnBz169fv/DYGQK3AMSYAytWvXz81btxYixcv1uLFi3X55ZerdevWkuQ5IPbsazRW9CyZtm3bljo+ZN68eaVmTG666SZ9//33+uKLL0qtIzMzs9Q9gQDUbsyYACiXv7+//ud//keLFi1Sbm6unnvuOc9zISEhuuaaazRjxgy53W41b95cK1eu1L59+yq07j/96U+65557dP3116t///7avHmzvvjiCzVt2rTEcg8//LCWL1+uoUOHKj4+XrGxscrNzdWWLVu0dOlS7d+/v1QfALUXwQTAOY0cOVKvvfaaHA6HbrrpphLPvffee5owYYLmzJkjY4wGDBigzz//XBEREb+73jvvvFP79u3T/PnztWLFCvXq1UtJSUmeA22LuVwurV69Wk8//bSWLFmit956SyEhIerQoYMSEhLUoEGDKt1eADWLe+UAAADb4BgTAABgGwQTAABgGwQTAABgGwQTAABgGwQTAABgGwQTAABgG9V+HZOioiIdPnxY9evXl8PhqO7hAQBADTDG6OTJk4qIiJCPT/nzItUeTA4fPqzIyMjqHhYAANjAwYMHdfHFF5f7fLUHk/r160s6U1hISEh1D39BcrvdWrlypQYMGCB/f/+aLgcoF/sqagP2U2tkZ2crMjLSkwPKU+3BpPjrm5CQEIJJFXG73XK5XAoJCeEfEWyNfRW1AfuptX7vMA4OfgUAALZBMAEAALZBMAEAALZBMAEAALZBMAEAALZBMAEAALZBMAEAALZBMAEAALZBMAEAALZBMAEAALZBMAEAALZBMAEAALZR7TfxAwCguuTl5SklJcWrPjmn8rV2yx41arpRwYFOr/pGR0fL5XJ51QclEUwAABeslJQUxcbGVqrvjEr0SU5OVvfu3Ss1Hs4gmAAALljR0dFKTk72qs/O1Ez9eckWvXBjF0WFN/R6PJwfggkA4ILlcrm8nsHwOXBMzn+eUseYS9StZROLKkN5OPgVAADYBsEEAADYBsEEAADYBsEEAADYBsEEAADYBsEEAADYBsEEAADYBsEEAADYBsEEAADYBsEEAADYhlfBpLCwUH/961/VunVrBQYGqm3btvrf//1fGWOsqg8AANQhXt0r59lnn1ViYqLefPNNde7cWRs3btTtt9+uBg0aaOLEiVbVCAAA6givgsnatWs1fPhwDRkyRJLUqlUrLVy4UOvXry+3T35+vvLz8z2Ps7OzJUlut1tut7syNeMsxa8jryfsjn0VtUFBQYHnN/tq1anoa+lVMLnqqqs0b948/fzzz+rQoYM2b96sNWvW6IUXXii3z/Tp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AMA2CCYAAMA2CCYAAMA2CCYAAMA2CCYAAMA2CCYAAMA2CCYAAMA2CCYAAMA2CCYAAMA2CCYAAMA2CCYAAMA2CCYAAMA2vAomU6dOlcPhKPETHR1tVW0AAKCO8fO2Q+fOnfXll1/+3wr8vF4FAABAmbxOFX5+fgoLC7OiFgAAUMd5HUx27dqliIgI1atXTz169ND06dPVokWLcpfPz89Xfn6+53F2drYkye12y+12V6JknK34deT1hN2xr6I2YD+1RkVfT4cxxlR0pZ9//rlycnIUFRWl1NRUJSQk6NChQ9q6davq169fZp+pU6cqISGhVPt7770nl8tV0aEBAEAtlpeXp1GjRikrK0shISHlLudVMDlbZmamWrZsqRdeeEFjx44tc5myZkwiIyOVkZFxzsJQcW63W0lJSerfv7/8/f1ruhygXOyrqA3YT62RnZ2tpk2b/m4wOa8jVxs2bKgOHTpo9+7d5S7jdDrldDpLtfv7+/OGVzFeU9QW7KuoDdhPq1ZFX8vzuo5JTk6O9uzZo/Dw8PNZDQAAgCQvg8lDDz2k1atXa//+/Vq7dq3+8Ic/yNfXV7fccotV9QEAgDrEq69y/v3vf+uWW27RsWPHFBoaqquvvlrr1q1TaGioVfUBAIA6xKtgsmjRIqvqAAAA4F45AADAPggmAADANggmAADANggmAADANggmAADANggmAADANggmAADANggmAADANggmAADANggmAADANggmAADANggmAADANggmAADANggmAADANggmAADANggmAADANggmAADANggmAADANggmAADANggmAADANggmAADANggmAADANggmAADANggmAADANggmAADANggmAADANggmAADANggmAADANggmAADANggmAADANggmAADANggmAADANggmAADANggmAADANggmAADANggmAADANggmAADANggmAADANggmAADANggmAADANggmAADANggmAADANggmAADANggmAADANs4rmDzzzDNyOBx64IEHqqgcAABQl1U6mGzYsEGvvPKKunbtWpX1AACAOqxSwSQnJ0d//OMf9eqrr6pRo0ZVXRMAAKij/CrTafz48RoyZIj69eunJ5988pzL5ufnKz8/3/M4OztbkuR2u+V2uyszPM5S/DryesLu2FdRG7CfWqOir6fXwWTRokX64Ycf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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "data.boxplot(by=\"group\", showmeans=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The three groups have different means - indicated by the green triangles" ] }, { "cell_type": "code", "execution_count": 99, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 99, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0YAAAHeCAYAAAC/jhsfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAABGw0lEQVR4nO3deXhTZf7+8Ttt2tCFshZKmSI7RYoguCEoIPsmOOKGC0VkVFDE7avojIKjoqIOAsKIoqioILjxU1kqAziAKFRBtiIgIMNWSmlrWyxpe35/MM1QupC0SdP2eb+uK1fNyXOe8zmceJ7cOUtslmVZAgAAAACDBfi7AAAAAADwN4IRAAAAAOMRjAAAAAAYj2AEAAAAwHgEIwAAAADGIxgBAAAAMB7BCAAAAIDxCEYAAAAAjEcwAgAAAGA8ghEAVBE2m02TJk3ydxnV3urVq2Wz2bR69epS202aNEk2m00pKSkVUxgAwKcIRgCMN2/ePNlstkKPBg0aqGfPnlq6dKm/yyu3HTt2aNKkSdq/f7+/SwEAoNKy+7sAAKgsnnnmGTVr1kyWZenYsWOaN2+eBg4cqP/3//6fBg8e7O/yymzHjh2aPHmyevTooaZNm/q7HAAAKiWCEQD814ABA3TJJZe4no8ePVoNGzbURx99VKWDUUXKzc1Vfn6+goOD/V0KJGVlZSksLMzfZQBAlcCpdABQgtq1ayskJER2e+HvkLKysvTwww8rJiZGDodDbdq00csvvyzLsiRJp06dUmxsrGJjY3Xq1CnXfKmpqWrUqJGuvPJK5eXlSZLi4+MVHh6uX3/9Vf369VNYWJiio6P1zDPPuPorzU8//aQBAwYoIiJC4eHh6tWrlzZs2OB6fd68ebrhhhskST179nSdKni+62cWLVqkCy+8UDVq1FBcXJw+++wzxcfHFzritH//ftlsNr388suaNm2aWrRoIYfDoR07dkiS/vWvf+mqq65SWFiYateuraFDh2rnzp2FlnNunwUKrt85m81m03333acPPvhAbdq0UY0aNdS5c2d9++23ReY/dOiQ7rzzTjVs2FAOh0Pt2rXT22+/XaTdf/7zHw0bNkxhYWFq0KCBHnzwQeXk5JT6b3OulJQU3XjjjYqIiFC9evX0wAMP6I8//nC93r17d3Xo0KHYedu0aaN+/fqV2n9+fr4mTZqk6OhohYaGqmfPntqxY4eaNm2q+Ph4V7uCU0LXrFmjsWPHqkGDBvrTn/7ken3WrFlq166dHA6HoqOjNW7cOKWlpRVa1rl9FujRo4d69Ojhel5wHdbChQv1xBNPKCoqSmFhYbr22mt18ODBUtcHACorjhgBwH+lp6crJSVFlmUpOTlZM2bMUGZmpm677TZXG8uydO2112rVqlUaPXq0OnbsqOXLl+vRRx/VoUOH9I9//EMhISF699131bVrVz355JN69dVXJUnjxo1Tenq65s2bp8DAQFefeXl56t+/v6644gq99NJLWrZsmZ5++mnl5ubqmWeeKbHe7du366qrrlJERIT+7//+T0FBQXrjjTfUo0cPrVmzRpdffrmuvvpqjR8/XtOnT9cTTzyhtm3bSpLrb3G++uor3XTTTWrfvr2mTJmikydPavTo0WrcuHGx7d955x398ccf+stf/iKHw6G6devqm2++0YABA9S8eXNNmjRJp06d0owZM9S1a1f9+OOPZT6lb82aNVq4cKHGjx8vh8OhWbNmqX///vrhhx8UFxcnSTp27JiuuOIKV5CKjIzU0qVLNXr0aGVkZGjChAmSzgTYXr166bffftP48eMVHR2t999/X//61788qunGG29U06ZNNWXKFG3YsEHTp0/XyZMn9d5770mSbr/9do0ZM0bbtm1z1ShJGzdu1C+//KK//vWvpfY/ceJEvfTSSxoyZIj69eunLVu2qF+/foXC19nGjh2ryMhIPfXUU8rKypJ0JmhOnjxZvXv31r333qtdu3Zp9uzZ2rhxo9atW6egoCCP1rnAc889J5vNpscee0zJycmaNm2aevfurc2bNyskJKRMfQKA31gAYLh33nnHklTk4XA4rHnz5hVq+/nnn1uSrGeffbbQ9OHDh1s2m83as2ePa9rEiROtgIAA69tvv7UWLVpkSbKmTZtWaL6RI0dakqz777/fNS0/P98aNGiQFRwcbB0/ftw1XZL19NNPu54PGzbMCg4Otvbu3euadvjwYatmzZrW1Vdf7ZpWsOxVq1a59e/Rvn17609/+pP1+++/u6atXr3akmRdcMEFrmn79u2zJFkRERFWcnJyoT46duxoNWjQwDpx4oRr2pYtW6yAgADrjjvuKLT+Z/dZ4Omnn7bOHaIKtsumTZtc0w4cOGDVqFHDuu6661zTRo8ebTVq1MhKSUkpNP/NN99s1apVy8rOzrYsy7KmTZtmSbI+/vhjV5usrCyrZcuWbv17FdR47bXXFpo+duxYS5K1ZcsWy7IsKy0tzapRo4b12GOPFWo3fvx4KywszMrMzCxxGUePHrXsdrs1bNiwQtMnTZpkSbJGjhzpmlbwPu7WrZuVm5vrmp6cnGwFBwdbffv2tfLy8lzTZ86caUmy3n77bde0Cy64oFCfBbp37251797d9XzVqlWWJKtx48ZWRkaGa/rHH39sSbJee+21EtcJACorTqUDgP96/fXXlZCQoISEBM2fP189e/bUXXfdpU8//dTV5uuvv1ZgYKDGjx9faN6HH35YlmUVuovdpEmT1K5dO40cOVJjx45V9+7di8xX4L777nP9d8GRjtOnT+ubb74ptn1eXp5WrFihYcOGqXnz5q7pjRo10ogRI7R27VplZGR4/G9w+PBhbd26VXfccYfCw8Nd07t376727dsXO8/111+vyMhI1/MjR45o8+bNio+PV926dV3TL7roIvXp00dff/21x3UV6NKlizp37ux63qRJEw0dOlTLly9XXl6eLMvSJ598oiFDhsiyLKWkpLge/fr1U3p6un788UdJZ7Zlo0aNNHz4cFd/oaGh+stf/uJRTePGjSv0/P7773f1L0m1atXS0KFD9dFHH7lOj8zLy9PChQtdp/GVZOXKlcrNzdXYsWOLXUZxxowZU+iI5DfffKPTp09rwoQJCggIKNQuIiJCX331lZtrWtQdd9yhmjVrup4PHz5cjRo1Ktc2BgB/IRgBwH9ddtll6t27t3r37q1bb71VX331lS688EJXSJGkAwcOKDo6utCHQel/p6YdOHDANS04OFhvv/229u3bp99//13vvPNOketmJCkgIKBQuJGk1q1bS1KJt9g+fvy4srOz1aZNmyKvtW3bVvn5+WW61qOg/pYtWxZ5rbhpktSsWbNi+yiptpSUFNcpXp5q1apVkWmtW7dWdna2jh8/ruPHjystLU1z5sxRZGRkoceoUaMkScnJya46W7ZsWWSbFFe3JzW1aNFCAQEBhbbdHXfcod9++03//ve/JZ0JK8eOHdPtt99eat8lbY+6deuqTp06xc7j7vYIDg5W8+bNC71nPXXuuttsNrVs2ZJbwwOokrjGCABKEBAQoJ49e+q1117T7t271a5dO4/7WL58uSTpjz/+0O7du4t8aK0OynMtSXFBUZLr5hSeys/PlyTddtttGjlyZLFtLrroojL17a7i1qlfv35q2LCh5s+fr6uvvlrz589XVFSUevfu7fXl+2p7nH0UCgCqI44YAUApcnNzJUmZmZmSpAsuuECHDx/W77//XqhdUlKS6/UCP//8s5555hmNGjVKF198se666y6lp6cXWUZ+fr5+/fXXQtN++eUXSSrxJgWRkZEKDQ3Vrl27iryWlJSkgIAAxcTESCr5w25xCurfs2dPkdeKm1ZaHyXVVr9+fdfpY3Xq1ClyZzRJJR7F2L17d5Fpv/zyi0JDQ11HhmrWrKm8vDzX0b9zHw0aNHDVuXfv3iJ3/yuu7tKcW9OePXuUn59faNsFBgZqxIgRWrx4sU6ePKnPP/9ct9xyy3nDRknb48SJEzp58qRb9ZW0PU6fPq19+/YVes+Wd3tYlqU9e/bwe1kAqiSCEQCUwOl0asWKFQoODnadKjdw4EDl5eVp5syZhdr+4x//kM1m04ABA1zzxsfHKzo6Wq+99prmzZunY8eO6cEHHyx2WWf3Z1mWZs6cqaCgIPXq1avY9oGBgerbt6+++OKLQqctHTt2TB9++KG6deumiIgISXKFkOI+8J4rOjpacXFxeu+991xhUDpzN7itW7eed37pzHVOHTt21Lvvvltomdu2bdOKFSs0cOBA17QWLVooPT1dP//8s2vakSNH9NlnnxXb93fffee6RkiSDh48qC+++EJ9+/ZVYGCgAgMDdf311+uTTz7Rtm3bisx//Phx138PHDhQhw8f1uLFi13TsrOzNWfOHLfWs8Drr79e6PmMGTMkyfVeKHD77bfr5MmTuvvuu4vc7bAkvXr1kt1u1+zZswtNP/f9V5revXsrODhY06dPLxQC586dq/T0dA0aNMg1rUWLFtqwYYPr1FFJ+vLLL0s8LfO9994r9CXB4sWLdeTIkSLrDgBVAafSAcB/LV261HXkJzk5WR9++KF2796txx9/3BUyhgwZop49e+rJJ5/U/v371aFDB61YsUJffPGFJkyYoBYtWkiSnn32WW3evFkrV65UzZo1ddFFF+mpp57SX//6Vw0fPrxQOKhRo4aWLVumkSNH6vLLL9fSpUv11Vdf6Yknnih0U4NzPfvss0pISFC3bt00duxY2e12vfHGG8rJydFLL73katexY0cFBgbqxRdfVHp6uhwOh6655hrXkZNzPf/88xo6dKi6du2qUaNG6eTJk5o5c6bi4uIKhaXSTJ06VQMGDFCXLl00evRo1+26a9WqpUmTJrna3XzzzXrsscd03XXXafz48crOztbs2bPVunXrQgGoQFxcnPr161fodt2SNHnyZFebF154QatWrdLll1+uMWPG6MILL1Rqaqp+/PFHffPNN0pNTZV05uYDM2fO1B133KHExEQ1atRI77//vkJDQ91axwL79u3Ttddeq/79++u7777T/PnzNWLEiCK/XXTxxRcrLi5OixYtUtu2bdWpU6fz9t2wYUM98MADeuWVV1zL2LJli5YuXar69eu7dTQwMjJSEydO1OTJk9W/f39de+212rVrl2bNmqVLL720UEC76667tHjxYvXv31833nij9u7dq/nz57ve1+eqW7euunXrplGjRunYsWOaNm2aWrZsqTFjxpy3LgCodPx3QzwAqByKu113jRo1rI4dO1qzZ8+28vPzC7X//fffrQcffNCKjo62goKCrFatWllTp051tUtMTLTsdnuhW3BblmXl5uZal156qRUdHW2dPHnSsqwzt6sOCwuz9u7da/Xt29cKDQ21GjZsaD399NOFbq1sWUVv121ZlvXjjz9a/fr1s8LDw63Q0FCrZ8+e1vr164us45tvvmk1b97cCgwMdOtW1AsWLLBiY2Mth8NhxcXFWUuWLLGuv/56KzY21tWm4HbdU6dOLbaPb775xuratasVEhJiRUREWEOGDLF27NhRpN2KFSusuLg4Kzg42GrTpo01f/78Em/XPW7cOGv+/PlWq1atLIfDYV188cXFrsuxY8escePGWTExMVZQUJAVFRVl9erVy5ozZ06hdgcOHLCuvfZaKzQ01Kpfv771wAMPWMuWLfPodt07duywhg8fbtWsWdOqU6eOdd9991mnTp0qdp6XXnrJkmQ9//zzpfZ9ttzcXOtvf/ubFRUVZYWEhFjXXHONtXPnTqtevXrWPffc42pX8D7euHFjsf3MnDnTio2NtYKCgqyGDRta9957r+t9eLZXXnnFaty4seVwOKyuXbtamzZtKvF23R999JE1ceJEq0GDBlZISIg1aNAg68CBA26vGwBUJjbLcuOn1QEAPhEfH6/Fixe7fSTGnzp27KjIyEglJCT4Zfk2m03jxo3z6DSyyua1117Tgw8+qP3796tJkyZl7ictLU11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0lmWpfvvv1+fffaZVq9efd5BRJIcDoccDkehabVr1/ZksdVCREQEO5hqjm1sBpO2c61atfxdgs8wngGlM2lfBzO4M6Z5FIzGjRunDz/8UF988YVq1qypo0ePuhYUEhJStioBAKhgjGcAgHN5dCpdSacKvPPOO4qPj/dWTdVKRkaGatWqpfT0dL55qabYxmZgO1cvjGdA8djXwWQen0oHzzgcDj399NNFTr9A9cE2NgPbuXphPAOKx74OJivTzRcAAAAAoDqpvrcaAgAAAAA3EYwAAAAAGI9gBAAAAMB4BCMAAACoadOmmjZtmr/LAPyGYORj3333nQIDAzVo0CB/lwIvi4+Pl81mcz3q1aun/v376+eff/Z3afCyo0eP6v7771fz5s3lcDgUExOjIUOGaOXKlf4uDQAAeAnByMfmzp2r+++/X99++60OHz7s73LgZf3799eRI0d05MgRrVy5Una7XYMHD/Z3WfCi/fv3q3PnzvrXv/6lqVOnauvWrVq2bJl69uypcePG+bs8AADgJQQjH8rMzNTChQt17733atCgQZo3b56/S4KXORwORUVFKSoqSh07dtTjjz+ugwcP6vjx4/4uDV4yduxY2Ww2/fDDD7r++uvVunVrtWvXTg899JA2bNjg7/IAQJI0Z84cRUdHKz8/v9D0oUOH6s4779TevXs1dOhQNWzYUOHh4br00kv1zTfflNjf/v37ZbPZtHnzZte0tLQ02Ww2rV692jVt27ZtGjBggMLDw9WwYUPdfvvtSklJ8fbqARWCYORDH3/8sWJjY9WmTRvddtttevvtt/lRwWosMzNT8+fPV8uWLVWvXj1/lwMvSE1N1bJlyzRu3DiFhYUVeb127doVXxQAFOOGG27QiRMntGrVKte0gn3YrbfeqszMTA0cOFArV67UTz/9pP79+2vIkCH67bffyrzMtLQ0XXPNNbr44ou1adMmLVu2TMeOHdONN97ojVUCKpzd3wVUZ3PnztVtt90m6cwpV+np6VqzZo169Ojh38LgNV9++aXCw8MlSVlZWWrUqJG+/PJLBQTwnUN1sGfPHlmWpdjYWH+XAgClqlOnjgYMGKAPP/xQvXr1kiQtXrxY9evXV8+ePRUQEKAOHTq42v/973/XZ599piVLlui+++4r0zJnzpypiy++WM8//7xr2ttvv62YmBj98ssvat26dflW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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# compare visualising the three groups seperately versus all data pooled together:\n", "fig, axs = plt.subplots(1, 2, figsize=(10, 5))\n", "data.boxplot(by=\"group\", ax=axs[0], showmeans=True)\n", "data.boxplot(ax=axs[1], showmeans=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Questions:\n", "\n", "Do you think there is a significant difference between the groups? (why? or why not? and what would make the difference more clear/more significant?)\n", "\n", "Do you think the data in the three groups could each be a random subset of the pooled data?" ] }, { "cell_type": "code", "execution_count": 100, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 100, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0YAAAHeCAYAAAC/jhsfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAABIl0lEQVR4nO3deXgUVd728buzdTYSwhqiYQ0QICyCiIgKyL5EcEdQAR1eFYRB0VGZRVCHRRFxQHnEQXBDHFDUUVmCD6AsEUT2TcCAjIAQloQkEDrJef/gSQ9NQkgn3WmS+n6uqy/o6lOnftXVqdN3V3eVzRhjBAAAAAAW5ufrAgAAAADA1whGAAAAACyPYAQAAADA8ghGAAAAACyPYAQAAADA8ghGAAAAACyPYAQAAADA8ghGAAAAACyPYAQAAADA8ghGAHCVsNlsGjdunK/LqPBWrlwpm82mlStXFtlu3LhxstlsSk1NLZvCfGju3Lmy2Ww6cOCAr0sBAJ8hGAGo8PLf9F18q1Gjhjp37qzFixf7urxS27lzp8aNG8ebWgAASiHA1wUAQFl58cUXVa9ePRlj9Pvvv2vu3Lnq3bu3/v3vf6tv376+Lq/Edu7cqfHjx6tTp06qW7eur8sBAKBcIhgBsIxevXrp+uuvd95/5JFHVLNmTX388cflOhiVpZycHOXl5SkoKMjXpVRYxhidO3dOISEhvi4FACyFr9IBsKzKlSsrJCREAQGunxFlZmZqzJgxio2Nld1uV+PGjTVlyhQZYyRJZ8+eVXx8vOLj43X27FnnfCdPnlStWrV00003KTc3V5I0ZMgQhYeH65dfflGPHj0UFhammJgYvfjii87+irJp0yb16tVLERERCg8PV5cuXZScnOx8fO7cubrnnnskSZ07d3Z+VfBKv59ZsGCBmjZtquDgYCUkJGjRokUaMmSIyxGnAwcOyGazacqUKZo2bZoaNGggu92unTt3SpL+93//V7fccovCwsJUuXJl9evXT7t27XJZzqV95sv//c7FbDabnnjiCX300Udq3LixgoOD1aZNG3333XcF5v/tt9/08MMPq2bNmrLb7WrWrJnefffdAu3+85//qH///goLC1ONGjX05JNPKjs7u8jn5lKpqam69957FRERoapVq+qPf/yjzp0753y8Y8eOatmyZaHzNm7cWD169Ciy/7p166pv375aunSprr/+eoWEhOjtt9+WJM2ZM0e33XabatSoIbvdrqZNm2rmzJmX7WP16tW64YYbFBwcrPr16+v9998v0HbHjh267bbbFBISomuvvVYvv/yy8vLyCq3trbfeUrNmzWS32xUTE6MRI0bo9OnTLm06deqkhIQEbd26VR07dlRoaKji4uK0cOFCSdKqVavUrl07hYSEqHHjxlq+fHmRzwcA+IwBgApuzpw5RpJZvny5OX78uDl27JjZvn27efTRR42fn59ZtmyZs21eXp657bbbjM1mM3/4wx/MjBkzTGJiopFkRo8e7WyXnJxs/P39zZNPPumcNmDAABMSEmL27NnjnDZ48GATHBxsGjZsaB588EEzY8YM07dvXyPJ/PWvf3WpU5J54YUXnPe3b99uwsLCTK1atcxLL71kJk2aZOrVq2fsdrtJTk42xhizf/9+M2rUKCPJjB071nzwwQfmgw8+MEePHr3s8/HVV18Zm81mWrRoYaZOnWr++te/mqioKJOQkGDq1KnjbJeSkmIkmaZNm5r69eubSZMmmddff90cPHjQJCUlmYCAANOoUSPzyiuvmPHjx5tq1aqZqKgok5KS4rL+F/eZ74UXXjCXDkGSTEJCgqlWrZp58cUXzeTJk02dOnVMSEiI2bZtm7Pd0aNHzbXXXmtiY2PNiy++aGbOnGluv/12I8m8/vrrznZZWVmmUaNGJjg42PzpT38y06ZNM23atDEtWrQwksyKFSsu+xxdXGPz5s1NYmKimTFjhnnggQeMJPPggw86273zzjtGkkuNxhizfv16I8m8//77RS6nTp06Ji4uzkRFRZnnnnvO/M///I+ztrZt25ohQ4aY119/3UyfPt10797dSDIzZswo0Efjxo1NzZo1zdixY82MGTNM69atjc1mM9u3b3e2O3LkiKlevbqJiooy48aNM6+++qpp2LCh8zm5eNvlr3/Xrl3N9OnTzRNPPGH8/f1N27Ztzfnz553tOnbsaGJiYkxsbKx55plnzPTp003Tpk2Nv7+/mT9/vomOjjbjxo0z06ZNM9dcc42JjIw06enpRT4nAOALBCMAFV5+MLr0Zrfbzdy5c13afv7550aSefnll12m33333cZms5l9+/Y5pz3//PPGz8/PfPfdd2bBggVGkpk2bZrLfIMHDzaSzMiRI53T8vLyTJ8+fUxQUJA5fvy4c/ql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p0/LZrNp5cqVzmnbt29Xr169FB4erpo1a+rBBx9Uamqqp1cPKBMEIy/617/+pfj4eDVu3FgPPPCA3n33XS4qWIFlZGToww8/VFxcnKpWrerrcuABJ0+e1JIlSzRixAiFhYUVeLxy5cplXxQAFOKee+7RiRMntGLFCue0/H3YoEGDlJGRod69e+vbb7/Vpk2b1LNnTyUmJurXX38t8TJPnz6t2267Tdddd51+/PFHLVmyRL///rvuvfdeT6wSUOYCfF1ARTZ79mw98MADki585SotLU2rVq1Sp06dfFsYPOarr75SeHi4JCkzM1O1atXSV199JT8/PnOoCPbt2ydjjOLj431dCgAUKSoqSr169dK8efPUpUsXSdLChQtVrVo1de7cWX5+fmrZsqWz/UsvvaRFixbpyy+/1BNPPFGiZc6YMUPXXXedJkyY4Jz27rvvKjY2Vj///LMaNWpUupUCyhjv3rxkz549Wr9+ve6//35JUkBAgO677z7Nnj3bx5XBkzp37qzNmzdr8+bNWr9+vXr06KFevXrp4MGDvi4NHsARXgDlyaBBg/Tpp58qOztbkvTRRx9pwIAB8vPzU0ZGhp5++mk1adJElStXVnh4uHbt2lWqI0ZbtmzRihUrFB4e7rzlf5C0f/9+j6wTUJY4YuQls2fPVk5OjmJiYpzTjDGy2+2aMWOGIiMjfVgdPCUsLExxcXHO+//85z8VGRmpd955Ry+//LIPK4MnNGzYUDabTbt37/Z1KQBwRYmJiTLG6Ouvv1bbtm31/fff6/XXX5ckPf3000pKStKUKVMUFxenkJAQ3X333Tp//nyhfeV/8+HiD4gcDodLm4yMDCUmJmry5MkF5q9Vq5anVgsoMwQjL8jJydH777+v1157Td27d3d5rH///vr444/12GOP+ag6eJPNZpOfn5/Onj3r61LgAVWqVFGPHj305ptvatSoUQV+Z3T69Gl+ZwTgqhEcHKw777xTH330kfbt26fGjRurdevWkqQ1a9ZoyJAhuuOOOyRdCDUHDhy4bF/Vq1eXJB05ckTXXXedJLmciEGSWrdurU8//VR169ZVQABvKVH+8VU6L/jqq6906tQpPfLII0pISHC53XXXXXydrgLJzs7W0aNHdfToUe3atUsjR450foKGiuHNN99Ubm6ubrjhBn366afau3evdu3apX/84x9q3769r8sDABeDBg3S119/rXfffVeDBg1yTm/YsKE+++wzbd68WVu2bNHAgQMLnMHuYiEhIbrxxhs1adIk7dq1S6tWrdJf/vIXlzYjRozQyZMndf/992vDhg3av3+/li5dqqFDhyo3N9dr6wh4C8HIC2bPnq2uXbsW+nW5u+66Sz/++CMXAa0glixZolq1aqlWrVpq166dNmzYoAULFnCCjQqkfv36+umnn9S5c2eNGTNGCQkJ6tatm7799lvNnDnT1+UBgIvbbrtNVapU0Z49ezRw4EDn9KlTpyoqKko33XSTEhMT1aNHD+fRpMt59913lZOTozZt2mj06NEFviIeExOjNWvWKDc3V927d1fz5s01evRoVa5cmZMQoVyyGX5dDAAAAMDiiPMAAAAALI9gBAAAAMDyCEYAAAAALI9gBAAAAMDyCEYAAAAALI9gBAAAAMDyCEYAAAAALI9ghAqjU6dOstlsstls2rx5c5kv/8CBA2Wy7Pzl2Gw2tWrVyqvLAgAAsAqCESqUYcOG6ciRI0pISPB1KV4TGxurI0eOaMyYMb4uBQAAoMII8HUBgCeFhoYqOjq60MeMMcrNzVVAQPl+2fv7+ys6Olrh4eG+LgUAAKDC4IgRKqyVK1fKZrNp8eLFatOmjex2u1avXq39+/erX79+qlmzpsLDw9W2bVstX77cZd66detqwoQJevjhh1WpUiXVrl1bs2bNcmmzfv16XXfddQoODtb111+vTZs2Fahh1apVuuGGG2S321WrVi0999xzysnJcT7eqVMnjRw5UqNHj1ZUVJRq1qypd955R5mZmRo6dKgqVaqkuLg4LV682DtPEgAAACQRjGABzz33nCZNmqRdu3apRYsWysjIUO/evfXtt99q06ZN6tmzpxITE/Xrr7+6zPfaa685A8/w4cP1+OOPa8+ePZKkjIwM9e3bV02bNtXGjRs1btw4Pf300y7z//bbb+rdu7fatm2rLVu2aObMmZo9e7Zefvlll3bvvfeeqlWrpvXr12vkyJF6/PHHdc899+imm27STz/9pO7du+vBBx9UVlaWd58oAAAACyMYocJ78cUX1a1bNzVo0EBVqlRRy5Yt9eijjyohIUENGzbUSy+9pAYNGujLL790ma93794aPny44uLi9Oyzz6patWpasWKFJGnevHnKy8vT7Nmz1axZM/Xt21fPPPOMy/xvvfWWYmNjNWPGDMXHx6t///4aP368XnvtNeXl5TnbtWzZUn/5y1/UsGFDPf/88woODla1atU0bNgwNWzYUH/729904sQJbd261ftPFgAAgEURjFDhXX/99S73MzIy9PTTT6tJkyaqXLmywsPDtWvXrgJHjFq0aOH8v81mU3R0tI4dOyZJzqNPwcHBzjbt27d3mX/Xrl1q3769bDabc1qHDh2UkZGh//znP4Uux9/fX1WrVlXz5s2d02rWrClJzmUDAADA88r3r9CBYggLC3O5//TTTyspKUlTpkxRXFycQkJCdPfdd+v8+fMu7QIDA13u22w2lyM9nlLYci6elh+svLFsAAAAXMARI1jOmjVrNGTIEN1xxx1q3ry5oqOjdeDAAbf6aNKkibZu3apz5845pyUnJxdos27dOhljXJZdqVIlXXvttaVaBwAAAHgWwQiW07BhQ3322WfavHmztmzZooEDB7p9NGbgwIGy2WwaNmyYdu7cqW+++UZTpkxxaTN8+HAdOnRII0eO1O7du/XFF1/ohRde0FNPPSU/P/70AAAAria8O4PlTJ06VVFRUbrpppuUmJioHj16qHXr1m71ER4ern//+9/atm2brrvuOv35z3/W5MmTXdpcc801+uabb7R+/Xq1bNlSjz32mB555BH95S9/8eTqAAAAwANs5uLv+QDlWKdOndSqVStNmzbN16WUiXHjxunzzz/X5s2bfV0KAABAuccRI1Qob731lsLDw7Vt2zZfl+I1v/76q8LDwzVhwgRflwIAAFBhcMQIFcZvv/2ms2fPSpJq166toKAgH1fkHTk5Oc6TRdjtdsXGxvq2IAAAgAqAYAQAAADA8vgqHQAAAADLIxgBAAAAsDyCEQAAAADLIxgBAAAAsDyCEQAAAADLIxgBAAAAsDyCEQAAAADLIxgBAAAAsDyCEQAAAADL+/9WDIy3gNHb+wAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# lets make a random allocation of group and plot again (run this cell several times to simulate new random groups)\n", "data[\"random\"] = np.random.choice(data[\"group\"], replace=False, size=len(data))\n", "\n", "# compare visualising the three groups seperately versus all data pooled together:\n", "fig, axs = plt.subplots(1, 2, figsize=(10, 5))\n", "data.boxplot(by=\"random\", ax=axs[0], showmeans=True)\n", "data.boxplot(ax=axs[1], showmeans=True)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Example: Estimate parameters $\\mu$, $\\alpha_i$ and $\\sigma^2$" ] }, { "cell_type": "code", "execution_count": 101, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
valuegrouprandomoverall_mean
02.8AB5.233333
13.6AB5.233333
23.4AC5.233333
32.3AC5.233333
45.5BC5.233333
56.3BB5.233333
66.1BA5.233333
75.7BA5.233333
85.8CC5.233333
98.3CB5.233333
106.9CA5.233333
116.1CA5.233333
\n", "
" ], "text/plain": [ " value group random overall_mean\n", "0 2.8 A B 5.233333\n", "1 3.6 A B 5.233333\n", "2 3.4 A C 5.233333\n", "3 2.3 A C 5.233333\n", "4 5.5 B C 5.233333\n", "5 6.3 B B 5.233333\n", "6 6.1 B A 5.233333\n", "7 5.7 B A 5.233333\n", "8 5.8 C C 5.233333\n", "9 8.3 C B 5.233333\n", "10 6.9 C A 5.233333\n", "11 6.1 C A 5.233333" ] }, "execution_count": 101, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Compute the overall mean and add to dataframe:\n", "data['overall_mean'] = data[\"value\"].mean()\n", "data" ] }, { "cell_type": "code", "execution_count": 102, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
valuegrouprandomoverall_meangroup_mean
02.8AB5.2333333.025
13.6AB5.2333333.025
23.4AC5.2333333.025
32.3AC5.2333333.025
45.5BC5.2333335.900
56.3BB5.2333335.900
66.1BA5.2333335.900
75.7BA5.2333335.900
85.8CC5.2333336.775
98.3CB5.2333336.775
106.9CA5.2333336.775
116.1CA5.2333336.775
\n", "
" ], "text/plain": [ " value group random overall_mean group_mean\n", "0 2.8 A B 5.233333 3.025\n", "1 3.6 A B 5.233333 3.025\n", "2 3.4 A C 5.233333 3.025\n", "3 2.3 A C 5.233333 3.025\n", "4 5.5 B C 5.233333 5.900\n", "5 6.3 B B 5.233333 5.900\n", "6 6.1 B A 5.233333 5.900\n", "7 5.7 B A 5.233333 5.900\n", "8 5.8 C C 5.233333 6.775\n", "9 8.3 C B 5.233333 6.775\n", "10 6.9 C A 5.233333 6.775\n", "11 6.1 C A 5.233333 6.775" ] }, "execution_count": 102, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# compute the mean within each group and add to dataframe:\n", "data['group_mean'] = data.groupby(\"group\")['value'].transform('mean')\n", "data" ] }, { "cell_type": "code", "execution_count": 103, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
valuegrouprandomoverall_meangroup_meanalpha
02.8AB5.2333333.025-2.208333
13.6AB5.2333333.025-2.208333
23.4AC5.2333333.025-2.208333
32.3AC5.2333333.025-2.208333
45.5BC5.2333335.9000.666667
56.3BB5.2333335.9000.666667
66.1BA5.2333335.9000.666667
75.7BA5.2333335.9000.666667
85.8CC5.2333336.7751.541667
98.3CB5.2333336.7751.541667
106.9CA5.2333336.7751.541667
116.1CA5.2333336.7751.541667
\n", "
" ], "text/plain": [ " value group random overall_mean group_mean alpha\n", "0 2.8 A B 5.233333 3.025 -2.208333\n", "1 3.6 A B 5.233333 3.025 -2.208333\n", "2 3.4 A C 5.233333 3.025 -2.208333\n", "3 2.3 A C 5.233333 3.025 -2.208333\n", "4 5.5 B C 5.233333 5.900 0.666667\n", "5 6.3 B B 5.233333 5.900 0.666667\n", "6 6.1 B A 5.233333 5.900 0.666667\n", "7 5.7 B A 5.233333 5.900 0.666667\n", "8 5.8 C C 5.233333 6.775 1.541667\n", "9 8.3 C B 5.233333 6.775 1.541667\n", "10 6.9 C A 5.233333 6.775 1.541667\n", "11 6.1 C A 5.233333 6.775 1.541667" ] }, "execution_count": 103, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# compute the \"alpha\" for each group and add to dataframe:\n", "data[\"alpha\"] = data[\"group_mean\"] - data[\"overall_mean\"]\n", "data" ] }, { "cell_type": "code", "execution_count": 104, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
valuegrouprandomoverall_meangroup_meanalphasse_contribution
02.8AB5.2333333.025-2.2083330.050625
13.6AB5.2333333.025-2.2083330.330625
23.4AC5.2333333.025-2.2083330.140625
32.3AC5.2333333.025-2.2083330.525625
45.5BC5.2333335.9000.6666670.160000
56.3BB5.2333335.9000.6666670.160000
66.1BA5.2333335.9000.6666670.040000
75.7BA5.2333335.9000.6666670.040000
85.8CC5.2333336.7751.5416670.950625
98.3CB5.2333336.7751.5416672.325625
106.9CA5.2333336.7751.5416670.015625
116.1CA5.2333336.7751.5416670.455625
\n", "
" ], "text/plain": [ " value group random overall_mean group_mean alpha sse_contribution\n", "0 2.8 A B 5.233333 3.025 -2.208333 0.050625\n", "1 3.6 A B 5.233333 3.025 -2.208333 0.330625\n", "2 3.4 A C 5.233333 3.025 -2.208333 0.140625\n", "3 2.3 A C 5.233333 3.025 -2.208333 0.525625\n", "4 5.5 B C 5.233333 5.900 0.666667 0.160000\n", "5 6.3 B B 5.233333 5.900 0.666667 0.160000\n", "6 6.1 B A 5.233333 5.900 0.666667 0.040000\n", "7 5.7 B A 5.233333 5.900 0.666667 0.040000\n", "8 5.8 C C 5.233333 6.775 1.541667 0.950625\n", "9 8.3 C B 5.233333 6.775 1.541667 2.325625\n", "10 6.9 C A 5.233333 6.775 1.541667 0.015625\n", "11 6.1 C A 5.233333 6.775 1.541667 0.455625" ] }, "execution_count": 104, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# calculate the individual contribution to SSE and add to dataframe:\n", "data['sse_contribution'] = (data['value']-data['group_mean'])**2\n", "data" ] }, { "cell_type": "code", "execution_count": 105, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[5.195000000000004, 0.5772222222222226]\n" ] } ], "source": [ "# calculate SSE and MSE:\n", "SSE = data[\"sse_contribution\"].sum()\n", "MSE = SSE / (12-3)\n", "print([SSE, MSE])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Example: ANOVA table with python" ] }, { "cell_type": "code", "execution_count": 106, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " df sum_sq mean_sq F PR(>F)\n", "group 2.0 30.791667 15.395833 26.672281 0.000165\n", "Residual 9.0 5.195000 0.577222 NaN NaN\n" ] } ], "source": [ "# Make the ANOVA table:\n", "fit = smf.ols(\"value ~ group\", data=data).fit()\n", "anova_table = sm.stats.anova_lm(fit)\n", "print(anova_table)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Example: F-test" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "OBS: The F-test is also part of the ANOVA table output (see table above)\n", "\n", "Here we also do the calculation *manually*" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# We have already calculated SSE and MSE\n", "print([SSE, MSE])" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# recall the data:\n", "data" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# calculate SST contribution of each datapoint:\n", "data[\"sst_contribution\"] = (data[\"value\"] - data[\"overall_mean\"])**2\n", "data" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# calculate SST:\n", "SST = data[\"sst_contribution\"].sum()\n", "print([SST])" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# We know SST = SSTr + SSE\n", "# Calculate SSTr and MSTr:\n", "SSTr = SST - SSE\n", "MSTr = SSTr / (3-1)\n", "print([SSTr, MSTr])" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Now we can calculate the test-statistic F = MSTr / MSE\n", "Fobs = MSTr / MSE\n", "print(Fobs)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# compare with critical value\n", "print(stats.f.ppf(0.95, dfn = 3-1, dfd = 12-3))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# From Fobs we get a p-value:\n", "pvalue = 1 - stats.f.cdf(Fobs, dfn = 3-1, dfd = 12-3)\n", "print(pvalue)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# compare with values in ANOVA table:\n", "print(anova_table)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "KAHOOT (5-8)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Example: Model control" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Visual inspection of equal variance in groups:\n", "data.boxplot(\"value\", by=\"group\", showmeans=True)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# recall how we computed the ANOVA table using Python:\n", "# fit = smf.ols(\"value ~ group\", data=data).fit()\n", "# anova_table = sm.stats.anova_lm(fit)\n", "\n", "# from the same \"fit\" we can get the residuals:\n", "data[\"residual\"] = fit.resid\n", "data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "OBS: you can check that: \n", "\n", "value = overall_mean + alpha + residual" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Lets inspect the residuals behave as we have assumed:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Assumption about normality (residuals are normally distributed):\n", "\n", "# QQplot:\n", "sm.qqplot(data[\"residual\"], line='q',a=1/2)\n", "plt.tight_layout()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# residuals versus fitted values (overall_mean + alpha)\n", "data.plot.scatter(\"alpha\", \"residual\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# residual versus group:\n", "data.plot.scatter(\"group\", \"residual\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Maybe variance of residuals is a little larger in group C (we reached the same conclusion from looking at original boxplot)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "KAHOOT 9" ] } ], "metadata": { "kernelspec": { "display_name": "pernille", "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.11.5" } }, "nbformat": 4, "nbformat_minor": 2 }