{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Inference for numerical data"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### In 2004, the state of North Carolina released a large data set containing information on births recorded in this state. This data set is useful to researchers studying the relation between habits and practices of expectant mothers and the birth of their children. We will work with a random sample of observations from this data set."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import warnings\n",
    "warnings.filterwarnings(\"ignore\")\n",
    "\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import io\n",
    "import requests\n",
    "\n",
    "df_url = 'https://raw.githubusercontent.com/akmand/datasets/master/openintro/nc.csv'\n",
    "url_content = requests.get(df_url, verify=False).content\n",
    "nc = pd.read_csv(io.StringIO(url_content.decode('utf-8')))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>fage</th>\n",
       "      <th>mage</th>\n",
       "      <th>mature</th>\n",
       "      <th>weeks</th>\n",
       "      <th>premie</th>\n",
       "      <th>visits</th>\n",
       "      <th>marital</th>\n",
       "      <th>gained</th>\n",
       "      <th>weight</th>\n",
       "      <th>lowbirthweight</th>\n",
       "      <th>gender</th>\n",
       "      <th>habit</th>\n",
       "      <th>whitemom</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>NaN</td>\n",
       "      <td>13</td>\n",
       "      <td>younger mom</td>\n",
       "      <td>39.0</td>\n",
       "      <td>full term</td>\n",
       "      <td>10.0</td>\n",
       "      <td>married</td>\n",
       "      <td>38.0</td>\n",
       "      <td>7.63</td>\n",
       "      <td>not low</td>\n",
       "      <td>male</td>\n",
       "      <td>nonsmoker</td>\n",
       "      <td>not white</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>NaN</td>\n",
       "      <td>14</td>\n",
       "      <td>younger mom</td>\n",
       "      <td>42.0</td>\n",
       "      <td>full term</td>\n",
       "      <td>15.0</td>\n",
       "      <td>married</td>\n",
       "      <td>20.0</td>\n",
       "      <td>7.88</td>\n",
       "      <td>not low</td>\n",
       "      <td>male</td>\n",
       "      <td>nonsmoker</td>\n",
       "      <td>not white</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>19.0</td>\n",
       "      <td>15</td>\n",
       "      <td>younger mom</td>\n",
       "      <td>37.0</td>\n",
       "      <td>full term</td>\n",
       "      <td>11.0</td>\n",
       "      <td>married</td>\n",
       "      <td>38.0</td>\n",
       "      <td>6.63</td>\n",
       "      <td>not low</td>\n",
       "      <td>female</td>\n",
       "      <td>nonsmoker</td>\n",
       "      <td>white</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>21.0</td>\n",
       "      <td>15</td>\n",
       "      <td>younger mom</td>\n",
       "      <td>41.0</td>\n",
       "      <td>full term</td>\n",
       "      <td>6.0</td>\n",
       "      <td>married</td>\n",
       "      <td>34.0</td>\n",
       "      <td>8.00</td>\n",
       "      <td>not low</td>\n",
       "      <td>male</td>\n",
       "      <td>nonsmoker</td>\n",
       "      <td>white</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>NaN</td>\n",
       "      <td>15</td>\n",
       "      <td>younger mom</td>\n",
       "      <td>39.0</td>\n",
       "      <td>full term</td>\n",
       "      <td>9.0</td>\n",
       "      <td>married</td>\n",
       "      <td>27.0</td>\n",
       "      <td>6.38</td>\n",
       "      <td>not low</td>\n",
       "      <td>female</td>\n",
       "      <td>nonsmoker</td>\n",
       "      <td>not white</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>995</th>\n",
       "      <td>47.0</td>\n",
       "      <td>42</td>\n",
       "      <td>mature mom</td>\n",
       "      <td>40.0</td>\n",
       "      <td>full term</td>\n",
       "      <td>10.0</td>\n",
       "      <td>not married</td>\n",
       "      <td>26.0</td>\n",
       "      <td>8.44</td>\n",
       "      <td>not low</td>\n",
       "      <td>male</td>\n",
       "      <td>nonsmoker</td>\n",
       "      <td>not white</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>996</th>\n",
       "      <td>34.0</td>\n",
       "      <td>42</td>\n",
       "      <td>mature mom</td>\n",
       "      <td>38.0</td>\n",
       "      <td>full term</td>\n",
       "      <td>18.0</td>\n",
       "      <td>not married</td>\n",
       "      <td>20.0</td>\n",
       "      <td>6.19</td>\n",
       "      <td>not low</td>\n",
       "      <td>female</td>\n",
       "      <td>nonsmoker</td>\n",
       "      <td>white</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>997</th>\n",
       "      <td>39.0</td>\n",
       "      <td>45</td>\n",
       "      <td>mature mom</td>\n",
       "      <td>40.0</td>\n",
       "      <td>full term</td>\n",
       "      <td>15.0</td>\n",
       "      <td>not married</td>\n",
       "      <td>32.0</td>\n",
       "      <td>6.94</td>\n",
       "      <td>not low</td>\n",
       "      <td>female</td>\n",
       "      <td>nonsmoker</td>\n",
       "      <td>white</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>998</th>\n",
       "      <td>55.0</td>\n",
       "      <td>46</td>\n",
       "      <td>mature mom</td>\n",
       "      <td>31.0</td>\n",
       "      <td>premie</td>\n",
       "      <td>8.0</td>\n",
       "      <td>not married</td>\n",
       "      <td>25.0</td>\n",
       "      <td>4.56</td>\n",
       "      <td>low</td>\n",
       "      <td>female</td>\n",
       "      <td>nonsmoker</td>\n",
       "      <td>not white</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>999</th>\n",
       "      <td>45.0</td>\n",
       "      <td>50</td>\n",
       "      <td>mature mom</td>\n",
       "      <td>39.0</td>\n",
       "      <td>full term</td>\n",
       "      <td>14.0</td>\n",
       "      <td>not married</td>\n",
       "      <td>23.0</td>\n",
       "      <td>7.13</td>\n",
       "      <td>not low</td>\n",
       "      <td>female</td>\n",
       "      <td>nonsmoker</td>\n",
       "      <td>white</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1000 rows × 13 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     fage  mage       mature  weeks     premie  visits      marital  gained  \\\n",
       "0     NaN    13  younger mom   39.0  full term    10.0      married    38.0   \n",
       "1     NaN    14  younger mom   42.0  full term    15.0      married    20.0   \n",
       "2    19.0    15  younger mom   37.0  full term    11.0      married    38.0   \n",
       "3    21.0    15  younger mom   41.0  full term     6.0      married    34.0   \n",
       "4     NaN    15  younger mom   39.0  full term     9.0      married    27.0   \n",
       "..    ...   ...          ...    ...        ...     ...          ...     ...   \n",
       "995  47.0    42   mature mom   40.0  full term    10.0  not married    26.0   \n",
       "996  34.0    42   mature mom   38.0  full term    18.0  not married    20.0   \n",
       "997  39.0    45   mature mom   40.0  full term    15.0  not married    32.0   \n",
       "998  55.0    46   mature mom   31.0     premie     8.0  not married    25.0   \n",
       "999  45.0    50   mature mom   39.0  full term    14.0  not married    23.0   \n",
       "\n",
       "     weight lowbirthweight  gender      habit   whitemom  \n",
       "0      7.63        not low    male  nonsmoker  not white  \n",
       "1      7.88        not low    male  nonsmoker  not white  \n",
       "2      6.63        not low  female  nonsmoker      white  \n",
       "3      8.00        not low    male  nonsmoker      white  \n",
       "4      6.38        not low  female  nonsmoker  not white  \n",
       "..      ...            ...     ...        ...        ...  \n",
       "995    8.44        not low    male  nonsmoker  not white  \n",
       "996    6.19        not low  female  nonsmoker      white  \n",
       "997    6.94        not low  female  nonsmoker      white  \n",
       "998    4.56            low  female  nonsmoker  not white  \n",
       "999    7.13        not low  female  nonsmoker      white  \n",
       "\n",
       "[1000 rows x 13 columns]"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "nc"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>fage</th>\n",
       "      <th>mage</th>\n",
       "      <th>weeks</th>\n",
       "      <th>visits</th>\n",
       "      <th>gained</th>\n",
       "      <th>weight</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>829.000000</td>\n",
       "      <td>1000.000000</td>\n",
       "      <td>998.000000</td>\n",
       "      <td>991.000000</td>\n",
       "      <td>973.000000</td>\n",
       "      <td>1000.00000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>30.255730</td>\n",
       "      <td>27.000000</td>\n",
       "      <td>38.334669</td>\n",
       "      <td>12.104945</td>\n",
       "      <td>30.325797</td>\n",
       "      <td>7.10100</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>6.763766</td>\n",
       "      <td>6.213583</td>\n",
       "      <td>2.931553</td>\n",
       "      <td>3.954934</td>\n",
       "      <td>14.241297</td>\n",
       "      <td>1.50886</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>14.000000</td>\n",
       "      <td>13.000000</td>\n",
       "      <td>20.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.00000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>25.000000</td>\n",
       "      <td>22.000000</td>\n",
       "      <td>37.000000</td>\n",
       "      <td>10.000000</td>\n",
       "      <td>20.000000</td>\n",
       "      <td>6.38000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>30.000000</td>\n",
       "      <td>27.000000</td>\n",
       "      <td>39.000000</td>\n",
       "      <td>12.000000</td>\n",
       "      <td>30.000000</td>\n",
       "      <td>7.31000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>35.000000</td>\n",
       "      <td>32.000000</td>\n",
       "      <td>40.000000</td>\n",
       "      <td>15.000000</td>\n",
       "      <td>38.000000</td>\n",
       "      <td>8.06000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>55.000000</td>\n",
       "      <td>50.000000</td>\n",
       "      <td>45.000000</td>\n",
       "      <td>30.000000</td>\n",
       "      <td>85.000000</td>\n",
       "      <td>11.75000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             fage         mage       weeks      visits      gained      weight\n",
       "count  829.000000  1000.000000  998.000000  991.000000  973.000000  1000.00000\n",
       "mean    30.255730    27.000000   38.334669   12.104945   30.325797     7.10100\n",
       "std      6.763766     6.213583    2.931553    3.954934   14.241297     1.50886\n",
       "min     14.000000    13.000000   20.000000    0.000000    0.000000     1.00000\n",
       "25%     25.000000    22.000000   37.000000   10.000000   20.000000     6.38000\n",
       "50%     30.000000    27.000000   39.000000   12.000000   30.000000     7.31000\n",
       "75%     35.000000    32.000000   40.000000   15.000000   38.000000     8.06000\n",
       "max     55.000000    50.000000   45.000000   30.000000   85.000000    11.75000"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "nc.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 1000 entries, 0 to 999\n",
      "Data columns (total 13 columns):\n",
      " #   Column          Non-Null Count  Dtype  \n",
      "---  ------          --------------  -----  \n",
      " 0   fage            829 non-null    float64\n",
      " 1   mage            1000 non-null   int64  \n",
      " 2   mature          1000 non-null   object \n",
      " 3   weeks           998 non-null    float64\n",
      " 4   premie          998 non-null    object \n",
      " 5   visits          991 non-null    float64\n",
      " 6   marital         999 non-null    object \n",
      " 7   gained          973 non-null    float64\n",
      " 8   weight          1000 non-null   float64\n",
      " 9   lowbirthweight  1000 non-null   object \n",
      " 10  gender          1000 non-null   object \n",
      " 11  habit           999 non-null    object \n",
      " 12  whitemom        998 non-null    object \n",
      "dtypes: float64(5), int64(1), object(7)\n",
      "memory usage: 101.7+ KB\n"
     ]
    }
   ],
   "source": [
    "nc.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Exercise 1: Make 2 box-plots of weight by habit."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXsAAAEVCAYAAAABwEUhAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAAdpklEQVR4nO3de3hcdb3v8fenDb3XhkKJlEuL2q2NUblUtyBgcyoo4oXzCAd7ircWusvZjZ4tSpGqoGcXlfbgJbIfrFTBB4xIxZ5ytew2KeJW3KAooXELUi6lpZWbbVpamuR7/piVOg2TNJdJ1gzr83qePJlZsy7fma5+8pvfWuu3FBGYmdmr27C0CzAzs8HnsDczywCHvZlZBjjszcwywGFvZpYBDnszswxw2NugkRSS3jAE25GkH0p6QdJvB2kbR0tqlTS8F/NOTd57xQC297ik9/R3+bz1zJS0qZ/L9vg+JF0q6dqBVWhDxWGfAUlwvJSE1QuSbpd0VNp1dZL0SUn3DmAVJwOnAUdGxDuKVNZ+IuLJiBgXEe0DXZekyyXdUIy60hQRV0TE+VCcP3A2uBz22fHBiBgHHA5sBepTrqeYpgCPR8TOtAsxK1UO+4yJiN3ASqC6c5qkCZJ+JOmvkp6Q9EVJwyRNlLRJ0geT+cZJelTSx5Pn10m6RtLdknZIWi9pSqHt9rCN6cA1wInJN48Xu1l+sqTVkp5ParggmT4PuDZv+a8UWPYJSSckj89LWqDVyfPzJa1KHg+TdImkv0h6TtJPJU1MXtuv5SrpGEn3JO/73yVdXaC1PkfSk5KelbQ4We59wKXAuUm9f+jhn+vtkjYk38Z+KGlUso7mzn+T5PlByTaO7W5Fki6StE3SFkmfypt+pqTfS9ou6SlJlxdYfK6kzcmyF+Utm/8N5Z7k94vJ+zqxh/dlKXDYZ4ykMcC5wG/yJtcDE4DXAe8GPg58KiKeB+YC35d0GPBN4MGI+FHesnOA/wMcCjwI3NjNprvbRguwAPh10k1S2c3yDcAmYDJwNnCFpFkRsaLL8pcVWHY9MDN5fCrwWFJD5/P1yeNPA2clr00GXgCu7qaeHwO/BQ4BLgc+VmCek4E3ArOAL0uaHhF3AVcANyX1vq2b9UPus30v8HrgH4AvJtN/BJyXN9/7gS0R8WA363ktuc/+CGAecLWkg5PXdpL7t6gEzgQulHRWl+VrgWnA6cAl3RxLODX5XZm8r1/38L4sDRHhn1f5D/A40Aq8CLQBm4G3JK8NB/YA1Xnz/xPQlPe8HngoWe6QvOnXAT/Jez4OaAeOSp4H8IYDbQP4JHBvD/Uflax3fN60rwHX9XL5ecDq5HELcH5n3cATwPF5r83KW+5wYC9QAUxN3k8FcHTyOY7Jm/cG4Ibkcee8R+a9/lvgo8njyzvnPcC/2YK85+8H/pI8ngzsAF6TPF8JXNzNemYCLwEVedO2Ae/sZv5vAd/s8j7elPf6lcCKru8j//NJe3/3T+Eft+yz46zItZpHAguB9ZJeS65FPoJc6HV6glwrsNNyoAb4YUQ812W9T3U+iIhW4HlyYZSvN9voyWTg+YjY0c/l1wOnJO93OHAT8C5JU8m1eB9M5psC/FzSi0l3Ugu5PzJV3dSzK2/aU7zSM3mPd5H7Y9gX+et8ItkuEbEZ+BXwEUmVwBl0/40K4LmIaCtUi6R/lNSYdK/9jdy3pEN7U4eVF4d9xkREe0TcQi7ETgaeJdd6ze9rPxp4GkC5Uw2/R67r4EK98lTKfWf1SBoHTCT3DSBfj9sg1yLsyWZgoqTx3Szfo4h4lFzAfRq4J/mj8Qwwn9w3go5k1qeAMyKiMu9nVER03c6WpJ4xedP6cnZTb4eazV/n0ez/uV5PrivnHHJdWL36LAr4MbCa3LexCeSOn6gPdXTy8LklzmGfMcr5MHAw0BK5Uwl/CiyRND45wPpZct0SkDuYCLm++2XAj7T/uebvl3SypBHk+u7vi4j9Wrm92MZW4MhkHa+QrO8/gK9JGiXpreS6ZnpqzXa1nuQbTfK8qctzyAXdks6DzJImJZ9V13qeAO4HLpc0IjkY+cGu8/VgKzBV0oH+//2zpCOTg8SXkvtG0mkVcDzwGXJ/iPtrPLlvKbslvQP4nwXm+ZKkMZLeDHyqSx2d/gp0kDsmYyXIYZ8dt0pqBbYDS4BPRMTDyWt15A7UPQbcS66194PkDJbPAh9PAvsb5Fpwl+St98fAZeS6b04gd1CxkILbSF5bBzwMPCPp2W6Wn02uX3gz8HPgsoi4u7dvnlyoj+fvZ410fQ7wbXKt3DWSdpA7iP2P3axvDnAi8Bzwr+QCcE8va7k5+f2cpN/1MN+PgTXkPrPHku0AEBEvAT8DjgFu6eV2C/lfwFeT9/tlcn+Uu1oPPAqsBZZFxJquMyRdWkuAXyXdYO8cQE02CBThb1/WP5KuAzZFxBcPNO+rnaSbgD9F4bOBBmubXwb+ISLOO+DMlnlu2Zv1g6S3S3p9cm7++4APk+taGartTyTXlbV8qLZp5c1hb9Y/ryXX798KfAe4MCJ+PxQbTi4oewq4MyLuOdD8ZuBuHDOzTHDL3swsAxz2ZmYZMKTDkR566KExderUodxkJuzcuZOxY8emXYZZr3mfHTwPPPDAsxExqev0A4a9pB8AHwC2RURNMm0puYtIXgb+Qm5AqxcPtK6pU6dy//3397F0O5CmpiZmzpyZdhlmveZ9dvBIeqLQ9N5041wHvK/LtLuBmoh4K/Bn4AsDqs7MzAbVAcM+ObXr+S7T1uQNrPQb4MhBqM3MzIqkGAdo5wJ3FmE9ZmY2SAZ0gDa5+04bPQxIJWk+udEFqaqqoqmpaSCbtAJaW1v9uVpZ8T479Pod9pI+Qe7A7azo4cqsiFhOckn3jBkzwgdlis8Hu6zceJ8dev3qxknGAlkEfKjLDRxsCDU0NFBTU8OsWbOoqamhoaEh7ZLMrET15tTLBnK3NjtU0iZyw9l+gdwdj+6WBPCbiFgwiHVaFw0NDSxevJgVK1bQ3t7O8OHDmTdvHgCzZ89OuTozKzVDOjbOjBkzwufZF0dNTQ1nnXUWq1atoqWlhenTp+973tzcnHZ5Zj1yN87gkfRARMzoOn1Ir6C14tmwYQO7du16Rcv+8ccfT7s0MytBHhunTI0YMYKFCxdSW1tLRUUFtbW1LFy4kBEjCt7Zz8wyzi37MvXyyy9TX1/PcccdR3t7O42NjdTX1/Pyyy+nXZqZlSCHfZmqrq7mrLPOoq6ubl+f/Zw5c1i1alXapZlZCXLYl6nFixcXPBtnyZIlaZdmZiXIYV+mOk+vzG/ZL1myxKddmllBDvsyNnv2bGbPnu3T2MzsgHw2jplZBjjszcwywGFvZpYBDnszswxw2JuZZYDD3swsAxz2ZmYZ4LA3M8sAh72ZWQY47M3MMsBhb2aWAQ57M7MMcNibmWWAw97MLAMc9mZmGeCwNzPLAIe9mVkGOOzNzDLAtyUsI5L6tVxEFLkSMys3btmXkYgo+DNl0W3dvuagNzNw2JuZZcIBw17SDyRtk9ScN22ipLslPZL8PnhwyzQzs4HoTcv+OuB9XaZdAqyNiGnA2uS5mZmVqAOGfUTcAzzfZfKHgeuTx9cDZxW3LDMzK6b+9tlXRcQWgOT3YcUryczMim3QT72UNB+YD1BVVUVTU9NgbzKT/LlaOWltbfU+O8T6G/ZbJR0eEVskHQ5s627GiFgOLAeYMWNGzJw5s5+btG7ddTv+XK2cNDU1eZ8dYv3txlkNfCJ5/Ang/xWnHDMzGwy9OfWyAfg18EZJmyTNA74OnCbpEeC05LmZmZWoA3bjRMTsbl6aVeRazMxskPgKWjOzDHDYm5llgMPezCwDHPZmZhngsDczywCHvZlZBjjszcwywGFvZpYBDnszswzwDcfNbNBI6tdyvndy8bllb2aDJv/G9/k/Uxbd1u1rDvrB4bA3M8sAh72ZWQY47M3MMsBhb2aWAQ57M7MMcNibmWWAw97MLAMc9mZmGeCwNzPLAIe9mVkGOOzNzDLAYW9mlgEOezOzDHDYm5llgMPezCwDHPZmZhngsDczy4ABhb2kf5H0sKRmSQ2SRhWrMDMzK55+h72kI4BPAzMiogYYDny0WIWZmVnxDPSG4xXAaEl7gTHA5oGXlG1v+8oa/vbS3j4vN/WS2/s0/4TRB/GHy07v83bMrDz1O+wj4mlJy4AngZeANRGxput8kuYD8wGqqqpoamrq7yYz4W8v7eW6943t0zKtra2MGzeuT8t88q6d/rewVHn/G1r9DntJBwMfBo4BXgRulnReRNyQP19ELAeWA8yYMSNmzpzZ72Iz4a7b6etn1NTU1Odl+rMds6Lx/jfkBnKA9j3Axoj4a0TsBW4BTipOWWZmVkwDCfsngXdKGiNJwCygpThlmZlZMfU77CPiPmAl8DvgoWRdy4tUl5mZFdGAzsaJiMuAy4pUi5mVIZ9BVh4GeuqlmWXc317ay+NfP7NPy/TnpIK+/nGw/Xm4BDOzDHDYm5llgMPezCwDHPZmZhngsDczywCHvZlZBvjUyxIzfvolvOX6S/q+4PV93Q5A306XM7Py5bAvMTtavu5zls2s6NyNY2aWAQ57M7MMcDeOmQ2IjzOVB4e9mQ2IjzOVB3fjmJllgMPezCwDHPZmZhngsDczywCHvZlZBjjszcwywGFvZpYBDnszswxw2JuZZYDD3swsAzxcQgnq12Xhd/VtmQmjD+r7NsysbDnsS0xfxxiB3B+H/ixnZtnhbhwzswxw2JuZZcCAwl5SpaSVkv4kqUXSicUqzMzMimegffbfBu6KiLMljQDGFKEmMzMrsn6HvaTXAKcCnwSIiJeBl4tTlpmVE59BVvoG0rJ/HfBX4IeS3gY8AHwmInYWpTIzKws+g6w8DCTsK4DjgbqIuE/St4FLgC/lzyRpPjAfoKqqiqampgFs0rrjz9XKjffZoTWQsN8EbIqI+5LnK8mF/X4iYjmwHGDGjBnR1/tOWi/cdXuf7+dplirvs0Ou32fjRMQzwFOS3phMmgVsKEpVZmZWVAM9G6cOuDE5E+cx4FMDL8nMzIptQGEfEQ8CM4pTipmZDRZfQWtmlgEOezOzDHDYm5llgMPezCwDHPZmZhngsDczywCHvZlZBjjszcwywGFvZpYBDnszswxw2JuZZYDD3swsAxz2ZmYZ4LA3M8sAh72ZWQY47M3MMsBhb2aWAQ57M7MMcNibmWWAw97MLAMc9mZmGeCwNzPLAIe9mVkGOOzNzDLAYW9mlgEOezOzDHDYm5llgMPezCwDBhz2koZL+r2k24pRkPVeXV0do0aN4olvfIBRo0ZRV1eXdklmVqKK0bL/DNBShPVYH9TV1XH11VfT1tYGQFtbG1dffbUD38wKUkT0f2HpSOB6YAnw2Yj4QE/zz5gxI+6///5+by/rJPVruYH8G5sNhPfZoSfpgYiY8YrpAwz7lcDXgPHA5wqFvaT5wHyAqqqqE37yk5/0e3v2d7W1tZx//vnMmTOH1tZWxo0bx4033si1115LY2Nj2uWZ9ahzn7Xiq62tLRj2Ff1doaQPANsi4gFJM7ubLyKWA8sh17KfObPbWa2PduzYwcKFC2lpaWH69OnU1NQA4M/YSl1TU5P30yHW77AH3gV8SNL7gVHAayTdEBHnFac064kkbrrpJoYNG0ZHRwctLS08/PDD/f7abGavbv0+QBsRX4iIIyNiKvBRYJ2DfuiMGDGiT9PNLNt8nn2Z2rNnD9OmTdt3ICsimDZtGnv27Em5MjMrRUUJ+4hoOtCZOFZ827ZtY8qUKUhiypQpbNu2Le2SzKxEuWVfxrZv305dXR133HEHdXV1bN++Pe2SzKxEDeQAraUsIli0aBFtbW1UVFT43GQz65Zb9mVs9OjR+86+kcTo0aNTrsjMSpVb9mWqoqKC0aNHs3LlStrb2xk+fDhnn302e/fuTbs0MytBbtmXqc6Anzt3Lu9973uZO3cuw4cPp729Pe3SzLrV0NBATU0Ns2bNoqamhoaGhrRLygy37MtUdXU106ZN484776Sjo4MtW7Zwxhln8Mgjj6RdmllBDQ0NLF68mBUrVuxrrMybNw+A2bNnp1zdq59b9mWqtraW1atXU1lZiSQqKytZvXo1tbW1aZdmVtCSJUtYsWIFtbW1VFRUUFtby4oVK1iyZEnapWWCw75MrVq1ivHjx+87KDt69GjGjx/PqlWr0i3MrBstLS2cfPLJ+007+eSTaWnxCOlDwWFfpjZt2sTNN9/Mxo0bWbduHRs3buTmm29m06ZNaZdmVtD06dO5995795t27733Mn369JQqyhaHfRlbt27dfge71q1bl3ZJZt1avHgx8+bNo7Gxkba2NhobG5k3bx6LFy9Ou7RM8AHaMjVx4kSWLl3KlVdeSXV1NRs2bODiiy9m4sSJaZdmVlDnQdi6urp9w3IvWbLEB2eHyIBuXtJXvlNV8Rx11FE899xztLW1sXfvXg466CAqKio45JBDeOqpp9Iuz6xHHs9+8HR3pyq37MvU008/TUVFxb6LqDp/P/3002mWZWYlyn32ZWzv3r1ceOGF3HrrrVx44YW+etbMuuWwL1MRwfjx4znnnHMYNWoU55xzDuPHj/dgaGZWkMO+jJ1yyimcccYZnHbaaZxxxhmccsopaZdk1iMPl5Ae99mXsTvuuIOqqiq2bt1KZWUld9xxR9olmXXLwyWkyy37MjVy5EgAdu7cud/vzulmpcbDJaTLYV+m9uzZw/HHH79f2B9//PG+B62VLA+XkC6HfRk7/fTTqa6uZtiwYVRXV3P66aenXZJZtzxcQrrcZ1+mfAWtlZvO4RI6++w7h0twN87QcNiXqTFjxtDe3k59fT1PPvkkRx99NOPGjWPMmDFpl2ZWkIdLSJe7ccrU5s2bqa+vZ+zYsQCMHTuW+vp6Nm/enHJlZt2bPXs2zc3NrF27lubmZgf9EHLYl6np06dzyy238Oijj9LR0cGjjz7KLbfc4v5PMyvIYV+mjjjiCFatWsXcuXO59dZbmTt3LqtWreKII45IuzSzbvmiqvS4z75MrV+/njlz5nDPPffwve99j+nTpzNnzhxWrlyZdmlmBfmiqnR5iOMyJYmdO3cyZsyYfcPF7tq1i7Fjx3p8HCtJNTU11NfXU1tbu2+fbWxspK6ujubm5rTLe9XobojjfnfjSDpKUqOkFkkPS/rMwEq0vhg5ciTXXHPNftOuueYaX0FrJcsXVaVrIN04bcBFEfE7SeOBByTdHREbilSb9eCCCy5g0aJFAFRXV3PVVVexaNEiFixYkHJlZoV1XlRVW1u7b5ovqho6/Q77iNgCbEke75DUAhwBOOyHQH19PQCXXnope/bsYeTIkSxYsGDfdLNS44uq0lWUA7SSpgLHAfcVY33WOyeddBKNjY20tLTwhje8gZNOOintksy65Yuq0jXgsJc0DvgZ8L8jYnuB1+cD8wGqqqpoamoa6CYNWLt2LStWrODzn/88xxxzDBs3buSiiy5iw4YNzJo1K+3yzAo6/PDD+e53v0trayvjxo0DcCYMkQGdjSPpIOA24BcRcdWB5vfZOMXjMxusnPmG44NnMM7GEbACaOlN0FtxtbS0sGnTpv0uUNm0aZPPbLCS5ouq0jOQbpx3AR8DHpL0YDLt0ojw7ZKGwOTJk6mrq+Pggw8GcuPZ19XVMXny5JQrMyvMF1Wlq98t+4i4NyIUEW+NiGOTHwf9ENm1axetra3U1dVx++23U1dXR2trK7t27Uq7NLOCfKeqdHm4hDL1/PPP86EPfWi/Uy/PPPNMVq9enXZpZgX5oqp0eSC0MrZmzRo6OjoA6OjoYM2aNSlXZNY936kqXQ77MiWJ3bt3097eDkB7ezu7d+8md9zcrPR0XlTV2NhIW1vbvouqFi9enHZpmeBunDLVecpsfss+f7pZqfFFVenyqJdlqrMFP2zYMDo6Ovb9Bge+lT6fZz94in6evZWGpUuXcuedd7J06dK0SzGzEuZunDJ35ZVXsm3bNg477LC0SzGzEuawL3Nbt27d77eZWSHuxilTnTcp6ey77/ztm5eYWSEO+zI1adIkRowYse9gbEQwYsQIJk2alHJlZlaKHPZlavPmzZx66qn7texPPfVUNm/enHJlZlaK3GdfpiorK2lsbGTZsmVUV1ezYcMGLr74YiorK9MuzcxKkMO+TG3fvp0JEyZw3HHH0d7eznHHHceECRPYvv0V948xM3PYl6u2tjaWLVu239WIy5YtY+7cuWmXZmYlyH32ZWrkyJG88MILNDc3s3btWpqbm3nhhRd8No6ZFeSWfZm64IILWLRoEQDV1dVcddVVLFq0iAULFqRcmZmVIod9maqvrwfYbzz7BQsW7JtuZpbP3ThlrL6+nt27d9PY2Mju3bsd9GbWLYe9mVkGOOzNzDLAYW9mlgEOezOzDHDYm5llwJDellDSX4EnhmyD2XEo8GzaRZj1gffZwTMlIl4x/O2Qhr0NDkn3F7rnpFmp8j479NyNY2aWAQ57M7MMcNi/OixPuwCzPvI+O8TcZ29mlgFu2ZuZZYDDPqMkXS7pc2nXYdkmaaak29KuIwsc9tZnkoanXYOZJA/R3gcO+0EkaaqkFknfl/SwpDWSRks6VtJvJP1R0s8lHZzM3yTpG5J+K+nPkk5Jpr85mfZgssy0ZN1/knStpGZJN0p6j6RfSXpE0juSZSdKWpUs9xtJby1Q5wWS7kxqOy9vW9/rDHZJrZK+Kuk+4MQh/BithEgaK+l2SX9I9rtzJT0u6QpJv5Z0v6TjJf1C0l8kLUiWk6SlyTIPSTq3wLrfLun3kl4n6QRJ6yU9kKzr8GSepmRb64HPDPHbL28R4Z9B+gGmAm3AscnznwLnAX8E3p1M+yrwreRxE/B/k8fvB/49eVwPzEkejwBG5637LeT+aD8A/AAQ8GFgVd6ylyWP/xvwYPL4cuBzwEJgNTASmA7cChyUzPNvwMeTxwH8j7Q/U/+kvk9/BPh+3vMJwOPAhcnzbyb793hgErAtb7m7geFAFfAkcDgwE7gNOCnZh48GDgL+A5iULHsu8IPkcRPwb2l/DuX4469Bg29jRDyYPH4AeD1QGRHrk2nXAzfnzX9L3rxTk8e/BhZLOhK4JSIekdS57ocAJD0MrI2IkPRQ3rInk/uPRkSsk3SIpAnJax8DNgFnRcReSbOAE4D/TNY/GtiWzNsO/GwgH4S9KjwELJP0DeC2iPhlsq+sznt9XETsAHZI2i2pktx+2BAR7cDWpGX+dmA7uUbGcuD0iNgsqQaoAe5O1j0c2JJXw02D/SZfjRz2g29P3uN2oLKX87eT/PtExI+T7pMzgV9IOh94rMu6O/Ked/D3f1sV2Ebn+bbNwLHAkcDGZN7rI+ILBZbZnfxHtQyLiD9LOoHcN8+vSVqTvJS/73XdLysovB922gKMAo4DNifzPhwR3XUX7uxn+ZnmPvuh9zfghc7+eHKt6/U9zI+k1wGPRcR3yLWgXtHv3oN7gDnJemYCz0bE9uS13wP/BKyWNBlYC5wt6bBk/omSpvRhW/Yql+wnuyLiBmAZcHwvF70HOFfScEmTgFOB3yavvUiuIXNFso/+FzBJ0onJNg+S9OaivYmMcss+HZ8ArpE0hlwL/VMHmP9c4DxJe4FnyPXzv6aX27oc+KGkPwK7km3vExH3Jqdg3g6cBnwRWCNpGLAX+Gc8Uqn93VuApZI6yO0fFwIre7Hcz8kd2P8DuW+WF0fEM5LeBBARWyV9ELgTmAucDXwn6XKsAL4FPFzk95IpvoLWzCwD3I1jZpYBDnszswxw2JuZZYDD3swsAxz2ZmYZ4LC3TEnGFGruw/zXSTq7wPQZkr6TPJ4p6aRi1mlWbD7P3qwfIuJ+4P7k6Uygldx4LmYlyS17y6LhBUYivUDSfyajOf4sueCt03sk/TIZifQD8Pdx2CVNBRYA/5KMFHpKoQ2apc1hb1k0Dbg6It5M7lL9j5AbYO7tEfE2oAWYlzf/VODd5C7pv0bSqM4XIuJx4BrgmxFxbET8ckjegVkfuRvHsqjrSKRTgRpJ/0puoLpxwC/y5v9pRHQAj0h6DHjT0JVqVhxu2VsWdR2JtAK4DlgYEW8BvkJuFMZOXccU8RgjVnYc9mY544Etkg4iGSU0zzmShkl6PfA6cqMy5tuRLG9Wshz2ZjlfAu4jdzelP3V57b/IDUN9J7AgInZ3ef1W4L/7AK2VMo96aWaWAW7Zm5llgMPezCwDHPZmZhngsDczywCHvZlZBjjszcwywGFvZpYBDnszswz4/9cXsc9o0hdIAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline \n",
    "\n",
    "nc.boxplot(column = 'weight', by = 'habit')\n",
    "plt.title('Boxplot of weight by habit')\n",
    "plt.suptitle('')\n",
    "plt.show();"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "habit\n",
       "nonsmoker    7.144273\n",
       "smoker       6.828730\n",
       "Name: weight, dtype: float64"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "nc.groupby(['habit'])['weight'].mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "n_smoker = 126.0\n",
      "mean_smoker = 6.828730158730159\n",
      "sd_smoker = 1.380668106117173\n",
      "\n",
      "n_nonsmoker = 873.0\n",
      "mean_nonsmoker = 7.144272623138601\n",
      "sd_nonsmoker = 1.5178105512705897\n",
      "\n",
      "Standard error = 0.13376049190705977\n",
      "Test statistic: Z = -2.3590109449334946\n",
      "p-value = 0.018323715325166526\n",
      "reject null hypothesis\n"
     ]
    }
   ],
   "source": [
    "import statsmodels.stats.weightstats as st\n",
    "\n",
    "nc_weightANDsmoker = nc[nc['habit'] == 'smoker']['weight']\n",
    "nc_weightANDnonsmoker = nc[nc['habit'] == 'nonsmoker']['weight']\n",
    "\n",
    "dsw1 = st.DescrStatsW(nc_weightANDsmoker)\n",
    "dsw2 = st.DescrStatsW(nc_weightANDnonsmoker)\n",
    "cm = st.CompareMeans(dsw1, dsw2)\n",
    "\n",
    "# calculate number of observations, mean and standard deviation for each group\n",
    "n_smoker = dsw1.nobs\n",
    "n_nonsmoker = dsw2.nobs\n",
    "mean_smoker = dsw1.mean\n",
    "mean_nonsmoker = dsw2.mean\n",
    "sd_smoker = dsw1.std\n",
    "sd_nonsmoker = dsw2.std\n",
    "print(f'n_smoker = {n_smoker}')\n",
    "print(f'mean_smoker = {mean_smoker}')\n",
    "print(f'sd_smoker = {sd_smoker}')\n",
    "print()\n",
    "print(f'n_nonsmoker = {n_nonsmoker}')\n",
    "print(f'mean_nonsmoker = {mean_nonsmoker}')\n",
    "print(f'sd_nonsmoker = {sd_nonsmoker}')\n",
    "print()\n",
    "\n",
    "# conduct hypothesis test\n",
    "ht = cm.ztest_ind(alternative = 'two-sided', usevar = 'unequal', value = 0)\n",
    "\n",
    "# calculate and print the standard error, the Z-score, and p-value for the hypothesis test\n",
    "se = cm.std_meandiff_separatevar\n",
    "testZ = ht[0]\n",
    "p_value = ht[1]\n",
    "print(f'Standard error = {se}')\n",
    "print(f'Test statistic: Z = {testZ}')\n",
    "print(f'p-value = {p_value}')\n",
    "\n",
    "# reject or accept null hypothesis\n",
    "if(p_value) < 0.05:\n",
    "    print('reject null hypothesis')\n",
    "else:\n",
    "    print('accept null hypothesis')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "nc_weightANDsmoker = nc[nc['habit'] == 'smoker']['weight']\n",
    "nc_weightANDnonsmoker = nc[nc['habit'] == 'nonsmoker']['weight']\n",
    "\n",
    "x_bar = np.mean(nc_weightANDsmoker)\n",
    "x_std = np.std(nc_weightANDsmoker)\n",
    "\n",
    "y_bar = np.mean(nc_weightANDnonsmoker)\n",
    "y_std = np.std(nc_weightANDnonsmoker)\n",
    "\n",
    "S_xy = np.sqrt((x_std**2)/len(nc_weightANDsmoker) + (y_std**2)/len(nc_weightANDnonsmoker))\n",
    "\n",
    "tobs = (x_bar - y_bar)/S_xy"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Exercise 2: Conduct a hypothesis test evaluating whether the average weight gained by younger mothers is different than the average weight gained by mature mothers.\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
