{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "cell_style": "center",
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "![CDS 411 logo](../../img/cds-411-logo.png)\n",
    "\n",
    "# Class 17: Data-driven modeling IV\n",
    "\n",
    "---\n",
    "\n",
    "![CC BY-SA 4.0 license](../../img/cc-by-sa.png)\n",
    "\n",
    "This notebook is licensed under a [Creative Commons Attribution-ShareAlike 4.0 International License](http://creativecommons.org/licenses/by-sa/4.0/)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "cell_style": "center",
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "## Load packages"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "cell_style": "center",
    "slideshow": {
     "cell_style": "split",
     "slide_type": "-"
    }
   },
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "\n",
    "from pathlib import Path\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import seaborn as sns\n",
    "from sklearn.linear_model import LinearRegression\n",
    "from sklearn.model_selection import cross_val_score, RepeatedKFold"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Select a random seed for notebook reproducibility."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "np.random.seed(9982)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Recap of model selection"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Load the *Filip* dataset."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "filip_csv_path = Path(\"../../data/nist/filip.csv\")\n",
    "filip_df = pd.read_csv(filip_csv_path)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### What are we trying to do?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We considered the problem of selecting a model that best describes the data in the *Filip* dataset."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 600x400 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(dpi=100)\n",
    "sns.scatterplot(x=\"x\", y=\"y\", data=filip_df, ax=ax);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "For our space of models, we considered different cut-offs for the polynomial summation:\n",
    "\n",
    "$$f(x)=\\sum_{n}\\beta_{n}x^{n}$$\n",
    "\n",
    "In principle, there is an infinite number of models to choose from, as we can always include more terms in the summation. In practice, we cannot have more terms than datapoints, but even with that restriction, we still have a large number of models to choose from.\n",
    "\n",
    "**How do we decide which model is best?**\n",
    "\n",
    "We want to avoid overfitting, which would mean we're starting to fit to the statistical noise inherent in this data. This means we need to strike a balance between explanatory/predictive power and generalizability. We use **cross-validation** to help us compare and rank the models according to how well they achieve this balance."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Cross-validation"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### What is it?\n",
    "\n",
    "Cross-validation is a technique used to assess how well a model's predictions generalize to an independent data set. There are different ways to do this. A popular flavor of cross-validation (especially among data scientists) is called **k-fold cross-validation**. The basic idea is to estimate how robust your model is by systematically removing different chunks (the \"folds\") of the dataset, repeating the fitting process, then testing its predictive power on the folds. The schematic below illustrates the procedure.\n",
    "\n",
    "![cross validation schematic](../../img/cross-validation-schematic.png)\n",
    "\n",
    "The above example illustrates a *5-fold*, or $k=5$, cross-validation. Each fold will act as a testing set, with the remaining $k-1$ folds used to train the model. You fit the model using the training set and try to predict values in the current fold, which you quantify by calculating a score, such as the mean-squared prediction error (MSE). The important feature here is that *you are trying to predict data that was **not** used in the training stage*. When cross-validation is completed, you will have a history of scores for each model. The average score for each model can then be compared as a means for ranking and selecting a final model.\n",
    "\n",
    "#### Why do we use it?\n",
    "\n",
    "In an ideal setting, you would use your current dataset to train a predictive model, and then test it out by going out and collecting more data and seeing how well the model predicts these new data points. However, there are many reasons in practice that this can be difficult to do. It can be expensive and/or technically difficult to gather new data. It may not be possible to gather new data relevant to the problem at hand. So, we can use methods like cross-validation to overcome some of these problems. Cross-validation also helps us to guard against overfitting. If a model has been overfit, *then it's predictions will be poor for any data points that are not part of the training set*.\n",
    "\n",
    "#### When should we use it?\n",
    "\n",
    "Anytime you need to assess the performance and generalizability of a model on unavailable data and a theoretical analysis of the problem is not available. In addition to select between different models, you can also use cross-validation to optimize a single model's internal parameters. This method is an indispensible part of the computational scientist's toolbox."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Cross-validation code"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "lm = LinearRegression()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "filip_df_poly = filip_df.copy()\n",
    "\n",
    "for n in np.arange(2, 16):\n",
    "    filip_df_poly[f\"x**{n}\"] = filip_df_poly[\"x\"] ** n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "independent_var = \"y\"\n",
    "dependent_vars = [\"x\"]\n",
    "\n",
    "filip_poly_cv_scores = {\n",
    "    \"n\": [],\n",
    "    \"mse_trace\": [],\n",
    "    \"mse_mean\": [],\n",
    "    \"mse_sd\": [],\n",
    "    \"r**2_trace\": [],\n",
    "    \"r**2_mean\": [],\n",
    "    \"r**2_sd\": [],\n",
    "}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "for n in range(1, 16):\n",
    "    if n > 1:\n",
    "        dependent_vars.append(f\"x**{n}\")\n",
    "        \n",
    "    rkf = RepeatedKFold(\n",
    "        n_splits=10,\n",
    "        n_repeats=100,\n",
    "        random_state=int(np.round(np.random.uniform(0, 2**31), decimals=0)),\n",
    "    )\n",
    "    \n",
    "    # Cross-validated mean-squared error score\n",
    "    mse_cv_score = cross_val_score(\n",
    "        lm,\n",
    "        filip_df_poly[dependent_vars],\n",
    "        filip_df_poly[independent_var],\n",
    "        scoring=\"neg_mean_squared_error\",\n",
    "        cv=rkf,\n",
    "        n_jobs=-1,  # Use all processors during cross-validation run\n",
    "    )\n",
    "\n",
    "    # Cross-validated R**2 score\n",
    "    r2_cv_score = cross_val_score(\n",
    "        lm,\n",
    "        filip_df_poly[dependent_vars],\n",
    "        filip_df_poly[independent_var],\n",
    "        scoring=\"r2\",\n",
    "        cv=rkf,\n",
    "        n_jobs=-1,  # Use all processors during cross-validation run\n",
    "    )\n",
    "\n",
    "    filip_poly_cv_scores[\"n\"].append(n)\n",
    "    filip_poly_cv_scores[\"mse_trace\"].append(mse_cv_score)\n",
    "    filip_poly_cv_scores[\"mse_mean\"].append(np.mean(mse_cv_score))\n",
    "    filip_poly_cv_scores[\"mse_sd\"].append(np.std(mse_cv_score))\n",
    "    filip_poly_cv_scores[\"r**2_trace\"].append(r2_cv_score)\n",
    "    filip_poly_cv_scores[\"r**2_mean\"].append(np.mean(r2_cv_score))\n",
    "    filip_poly_cv_scores[\"r**2_sd\"].append(np.std(r2_cv_score))\n",
    "\n",
    "# Convert dictionary to data frame\n",
    "filip_poly_cv_scores_df = pd.DataFrame(filip_poly_cv_scores)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Bootstrapping/resampling"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### What is it?\n",
    "\n",
    "Bootstrapping is a method for estimating statistical properties by sampling with replacement from the distribution of the available dataset. This method rests on the assumption that the available dataset distribution reasonably approximates the \"true\" statistical distribution.\n",
    "\n",
    "A nice visualization of the bootstrapping method is available on *Seeing Theory*: <https://seeing-theory.brown.edu/frequentist-inference/index.html#section3>\n",
    "\n",
    "#### Why do we use it?\n",
    "\n",
    "We use bootstrapping when we want to analyze how fluctuations impact statistical properties, for example the mean, median, variance, and so on. It is particularly useful if we do not know the underlying \"true\" data distribution, or if there are important outliers in our dataset that would be missed by idealizing our distribution. We can use it to construct confidence intervals, which can be used to measure the standard error of a statistical property. It can also be used for statistical inference, for example for running hypothesis tests using *p*-values.\n",
    "\n",
    "#### When should we use it?\n",
    "\n",
    "If you want to know how much variation there is in a statistical property and you do not know the \"true\" underlying data distribution. Even if you do know the underlying distribution, it can be convenient to use bootstrapping in a re-usable workflow that may be applied to different datasets. If you make assumptions about the underlying dataset, you will have to change your code each time the dataset changes. If you use bootstrapping, then you no longer need to do this."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Bootstrapping code"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "filip_cv_scores_dist_df = pd.concat(\n",
    "    [\n",
    "        pd.DataFrame(filip_poly_cv_scores_df[\"mse_trace\"].tolist()) \\\n",
    "        .assign(n=[f\"{x}\" for x in range(1, 16)], score=\"mse\") \\\n",
    "        .melt(id_vars=[\"n\", \"score\"], value_vars=list(range(1000)),\n",
    "              var_name=\"cv_run\", value_name=\"value\") \\\n",
    "        .sort_values([\"score\", \"n\", \"cv_run\"]) \\\n",
    "        .reset_index(drop=True),\n",
    "        pd.DataFrame(filip_poly_cv_scores_df[\"r**2_trace\"].tolist()) \\\n",
    "        .assign(n=[f\"{x}\" for x in range(1, 16)], score=\"r**2\") \\\n",
    "        .melt(id_vars=[\"n\", \"score\"], value_vars=list(range(1000)),\n",
    "              var_name=\"cv_run\", value_name=\"value\") \\\n",
    "        .sort_values([\"score\", \"n\", \"cv_run\"]) \\\n",
    "        .reset_index(drop=True),\n",
    "    ]\n",
    ")\n",
    "\n",
    "bootstrap_results = {\n",
    "    \"n\": [],\n",
    "    \"sample\": [],\n",
    "    \"mean\": [],\n",
    "}\n",
    "\n",
    "for n in range(2, 16):\n",
    "    bootstrap_series = filip_cv_scores_dist_df \\\n",
    "        .query(f\"score == 'mse' & n == '{n}'\") \\\n",
    "        .sample(frac=1000, replace=True).loc[:, \"value\"]\n",
    "    bootstrap_df = pd.DataFrame(bootstrap_series) \\\n",
    "        .assign(sample_id=[f\"{x}\" for x in range(1000) for _ in range(1000)])\n",
    "    bootstrap_mean_samples = bootstrap_df \\\n",
    "        .groupby([\"sample_id\"]) \\\n",
    "        .mean() \\\n",
    "        .loc[:, \"value\"] \\\n",
    "        .values\n",
    "\n",
    "    bootstrap_results[\"n\"].extend(1000 * [f\"{n}\"])\n",
    "    bootstrap_results[\"sample\"].extend(list(range(1000)))\n",
    "    bootstrap_results[\"mean\"].extend(bootstrap_mean_samples)\n",
    "\n",
    "filip_cv_scores_bootstrap_df = pd.DataFrame(bootstrap_results)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Difference between cross-validation and bootstrapping"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Cross-validation and bootstrapping share some similar features. Both involve random partitioning of data in some way, and let us see how statistical fluctuations impact our results. Despite these, they are distinct and used for different purposes. We used both in our analysis of the *Filip* dataset.\n",
    "\n",
    "*   **Cross-valdiation**: We used this to score the predictive power of different polynomial summation models. The output of the cross-validation runs was a history of cross-validation scores for each model, representing different partitionings of the training and test datasets. The average of these runs for a single model yields the cross-validated score for the model, which we use to rank and compare model performance.\n",
    "\n",
    "*   **Bootstrapping**: We used this to compute the confidence interval of the cross-validated score. This was possible because our cross-validation runs yielded a statistical distribution of scores. **If** (and this is important!) our cross-validated scores were normally distributed, then the 95% confidence interval of the cross-validated score would be given by the formula $\\bar{x}\\pm{}(\\sigma_{\\bar{x}}\\times{}1.96)$, where $\\sigma_{\\bar{x}}$ is the standard error:\n",
    "    \n",
    "    $$\\sigma_{\\bar{x}}=\\dfrac{\\sigma{}}{\\sqrt{n}}$$\n",
    "    \n",
    "    However, as we saw, some of our distributions **are not** normally distributed, and the confidence interval formula does not hold. Generally, the confidence interval narrows as more samples are included in the average. Finding the 95% confidence interval for our statistical averages lets us assess which of our scores are statistically different from one another."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Visualizing and reporting the scores"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "There are two choices for what to use as the error bars when we visualize and report on the statistical distribution of the cross-validated scores:\n",
    "\n",
    "1.  Use the error bars to represent the overall spread of the cross-validation runs. To show this, you might set the limits of the error bars to be the upper and lower bounds for the middle 95% of the data. This does not require any bootstrapping.\n",
    "\n",
    "2.  Use the error bars to represent the overall accuracy of the cross-validated scores. To show this, you would compute a confidence interval for the cross-validated scores using bootstrapping.\n",
    "\n",
    "We compute the error bars for the overall accuracy of the cross-validated scores first:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "filip_mse_ci_95 = filip_cv_scores_bootstrap_df \\\n",
    "    .loc[:, [\"n\", \"mean\"]] \\\n",
    "    .groupby([\"n\"]) \\\n",
    "    .quantile([0.025, 0.975])\n",
    "filip_mse_ci_95 = filip_mse_ci_95[\"mean\"] \\\n",
    "    .unstack() \\\n",
    "    .reset_index() \\\n",
    "    .rename(columns={0.025: \"lower\", 0.975: \"upper\"})\n",
    "\n",
    "filip_cv_final_df = filip_poly_cv_scores_df.copy().loc[:, [\"n\", \"mse_mean\"]].query(\"n > 1\")\n",
    "filip_cv_final_df[\"n\"] = filip_cv_final_df[\"n\"].astype(str)\n",
    "filip_cv_final_df = filip_cv_final_df.merge(filip_mse_ci_95, on=[\"n\"])\n",
    "\n",
    "# Error bar lengths are measured relative to the mean\n",
    "filip_cv_final_df[\"yerr_lower\"] = np.abs(filip_cv_final_df[\"mse_mean\"] - filip_cv_final_df[\"lower\"])\n",
    "filip_cv_final_df[\"yerr_upper\"] = np.abs(filip_cv_final_df[\"mse_mean\"] - filip_cv_final_df[\"upper\"])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To look at the spread of the cross-validation scores, we just need to compute the lower and upper bounds for the middle 95% of the values in the `filip_cv_scores_dist_df` data frame. The code below finds those percentiles and joins them into the data frame."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "filip_cv_final_df = filip_cv_scores_dist_df \\\n",
    "    .query(\"score == 'mse'\") \\\n",
    "    .loc[:, [\"n\", \"value\"]] \\\n",
    "    .groupby([\"n\"]) \\\n",
    "    .quantile([0.025, 0.975]) \\\n",
    "    .loc[:, \"value\"] \\\n",
    "    .unstack() \\\n",
    "    .reset_index() \\\n",
    "    .rename(columns={0.025: \"dist_lower\", 0.975: \"dist_upper\"}) \\\n",
    "    .merge(filip_cv_final_df, on=\"n\") \\\n",
    "    .assign(yerr_dist_lower=lambda x: np.abs(x.dist_lower - x.mse_mean),\n",
    "            yerr_dist_upper=lambda x: np.abs(x.dist_upper - x.mse_mean),\n",
    "            n=lambda x: x.n.astype(int)) \\\n",
    "    .sort_values([\"n\"]) \\\n",
    "    .reset_index(drop=True) \\\n",
    "    .loc[:, [\"n\", \"mse_mean\", \"lower\", \"upper\", \"yerr_lower\", \"yerr_upper\",\n",
    "             \"dist_lower\", \"dist_upper\", \"yerr_dist_lower\",\n",
    "             \"yerr_dist_upper\"]]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The final data frame is as follows:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "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>n</th>\n",
       "      <th>mse_mean</th>\n",
       "      <th>lower</th>\n",
       "      <th>upper</th>\n",
       "      <th>yerr_lower</th>\n",
       "      <th>yerr_upper</th>\n",
       "      <th>dist_lower</th>\n",
       "      <th>dist_upper</th>\n",
       "      <th>yerr_dist_lower</th>\n",
       "      <th>yerr_dist_upper</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2</td>\n",
       "      <td>-0.000299</td>\n",
       "      <td>-0.000307</td>\n",
       "      <td>-0.000292</td>\n",
       "      <td>7.496232e-06</td>\n",
       "      <td>6.931635e-06</td>\n",
       "      <td>-0.000526</td>\n",
       "      <td>-0.000106</td>\n",
       "      <td>0.000227</td>\n",
       "      <td>0.000193</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>3</td>\n",
       "      <td>-0.000220</td>\n",
       "      <td>-0.000225</td>\n",
       "      <td>-0.000216</td>\n",
       "      <td>4.625765e-06</td>\n",
       "      <td>4.364832e-06</td>\n",
       "      <td>-0.000391</td>\n",
       "      <td>-0.000102</td>\n",
       "      <td>0.000171</td>\n",
       "      <td>0.000118</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>4</td>\n",
       "      <td>-0.000092</td>\n",
       "      <td>-0.000095</td>\n",
       "      <td>-0.000090</td>\n",
       "      <td>2.110358e-06</td>\n",
       "      <td>2.291977e-06</td>\n",
       "      <td>-0.000171</td>\n",
       "      <td>-0.000035</td>\n",
       "      <td>0.000079</td>\n",
       "      <td>0.000057</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>5</td>\n",
       "      <td>-0.000098</td>\n",
       "      <td>-0.000101</td>\n",
       "      <td>-0.000095</td>\n",
       "      <td>2.983943e-06</td>\n",
       "      <td>3.335300e-06</td>\n",
       "      <td>-0.000210</td>\n",
       "      <td>-0.000038</td>\n",
       "      <td>0.000112</td>\n",
       "      <td>0.000060</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>6</td>\n",
       "      <td>-0.000040</td>\n",
       "      <td>-0.000042</td>\n",
       "      <td>-0.000039</td>\n",
       "      <td>1.545200e-06</td>\n",
       "      <td>1.482100e-06</td>\n",
       "      <td>-0.000088</td>\n",
       "      <td>-0.000014</td>\n",
       "      <td>0.000047</td>\n",
       "      <td>0.000026</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>7</td>\n",
       "      <td>-0.000042</td>\n",
       "      <td>-0.000044</td>\n",
       "      <td>-0.000040</td>\n",
       "      <td>2.319783e-06</td>\n",
       "      <td>1.887609e-06</td>\n",
       "      <td>-0.000078</td>\n",
       "      <td>-0.000013</td>\n",
       "      <td>0.000036</td>\n",
       "      <td>0.000029</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>8</td>\n",
       "      <td>-0.000034</td>\n",
       "      <td>-0.000039</td>\n",
       "      <td>-0.000030</td>\n",
       "      <td>4.850659e-06</td>\n",
       "      <td>3.850499e-06</td>\n",
       "      <td>-0.000141</td>\n",
       "      <td>-0.000006</td>\n",
       "      <td>0.000106</td>\n",
       "      <td>0.000028</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>9</td>\n",
       "      <td>-0.000025</td>\n",
       "      <td>-0.000028</td>\n",
       "      <td>-0.000022</td>\n",
       "      <td>3.152797e-06</td>\n",
       "      <td>2.498889e-06</td>\n",
       "      <td>-0.000063</td>\n",
       "      <td>-0.000005</td>\n",
       "      <td>0.000038</td>\n",
       "      <td>0.000020</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>10</td>\n",
       "      <td>-0.000024</td>\n",
       "      <td>-0.000028</td>\n",
       "      <td>-0.000020</td>\n",
       "      <td>4.022749e-06</td>\n",
       "      <td>3.580657e-06</td>\n",
       "      <td>-0.000081</td>\n",
       "      <td>-0.000004</td>\n",
       "      <td>0.000058</td>\n",
       "      <td>0.000020</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>11</td>\n",
       "      <td>-0.000015</td>\n",
       "      <td>-0.000016</td>\n",
       "      <td>-0.000014</td>\n",
       "      <td>1.146726e-06</td>\n",
       "      <td>9.722713e-07</td>\n",
       "      <td>-0.000040</td>\n",
       "      <td>-0.000003</td>\n",
       "      <td>0.000025</td>\n",
       "      <td>0.000012</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>12</td>\n",
       "      <td>-0.000012</td>\n",
       "      <td>-0.000012</td>\n",
       "      <td>-0.000011</td>\n",
       "      <td>4.793494e-07</td>\n",
       "      <td>4.513782e-07</td>\n",
       "      <td>-0.000026</td>\n",
       "      <td>-0.000003</td>\n",
       "      <td>0.000014</td>\n",
       "      <td>0.000009</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>13</td>\n",
       "      <td>-0.000013</td>\n",
       "      <td>-0.000013</td>\n",
       "      <td>-0.000012</td>\n",
       "      <td>8.400889e-07</td>\n",
       "      <td>6.746116e-07</td>\n",
       "      <td>-0.000029</td>\n",
       "      <td>-0.000002</td>\n",
       "      <td>0.000016</td>\n",
       "      <td>0.000010</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>14</td>\n",
       "      <td>-0.000015</td>\n",
       "      <td>-0.000017</td>\n",
       "      <td>-0.000014</td>\n",
       "      <td>1.342835e-06</td>\n",
       "      <td>1.202937e-06</td>\n",
       "      <td>-0.000033</td>\n",
       "      <td>-0.000003</td>\n",
       "      <td>0.000017</td>\n",
       "      <td>0.000012</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>15</td>\n",
       "      <td>-0.000016</td>\n",
       "      <td>-0.000017</td>\n",
       "      <td>-0.000015</td>\n",
       "      <td>1.360617e-06</td>\n",
       "      <td>1.206158e-06</td>\n",
       "      <td>-0.000037</td>\n",
       "      <td>-0.000003</td>\n",
       "      <td>0.000021</td>\n",
       "      <td>0.000013</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     n  mse_mean     lower     upper    yerr_lower    yerr_upper  dist_lower  \\\n",
       "0    2 -0.000299 -0.000307 -0.000292  7.496232e-06  6.931635e-06   -0.000526   \n",
       "1    3 -0.000220 -0.000225 -0.000216  4.625765e-06  4.364832e-06   -0.000391   \n",
       "2    4 -0.000092 -0.000095 -0.000090  2.110358e-06  2.291977e-06   -0.000171   \n",
       "3    5 -0.000098 -0.000101 -0.000095  2.983943e-06  3.335300e-06   -0.000210   \n",
       "4    6 -0.000040 -0.000042 -0.000039  1.545200e-06  1.482100e-06   -0.000088   \n",
       "5    7 -0.000042 -0.000044 -0.000040  2.319783e-06  1.887609e-06   -0.000078   \n",
       "6    8 -0.000034 -0.000039 -0.000030  4.850659e-06  3.850499e-06   -0.000141   \n",
       "7    9 -0.000025 -0.000028 -0.000022  3.152797e-06  2.498889e-06   -0.000063   \n",
       "8   10 -0.000024 -0.000028 -0.000020  4.022749e-06  3.580657e-06   -0.000081   \n",
       "9   11 -0.000015 -0.000016 -0.000014  1.146726e-06  9.722713e-07   -0.000040   \n",
       "10  12 -0.000012 -0.000012 -0.000011  4.793494e-07  4.513782e-07   -0.000026   \n",
       "11  13 -0.000013 -0.000013 -0.000012  8.400889e-07  6.746116e-07   -0.000029   \n",
       "12  14 -0.000015 -0.000017 -0.000014  1.342835e-06  1.202937e-06   -0.000033   \n",
       "13  15 -0.000016 -0.000017 -0.000015  1.360617e-06  1.206158e-06   -0.000037   \n",
       "\n",
       "    dist_upper  yerr_dist_lower  yerr_dist_upper  \n",
       "0    -0.000106         0.000227         0.000193  \n",
       "1    -0.000102         0.000171         0.000118  \n",
       "2    -0.000035         0.000079         0.000057  \n",
       "3    -0.000038         0.000112         0.000060  \n",
       "4    -0.000014         0.000047         0.000026  \n",
       "5    -0.000013         0.000036         0.000029  \n",
       "6    -0.000006         0.000106         0.000028  \n",
       "7    -0.000005         0.000038         0.000020  \n",
       "8    -0.000004         0.000058         0.000020  \n",
       "9    -0.000003         0.000025         0.000012  \n",
       "10   -0.000003         0.000014         0.000009  \n",
       "11   -0.000002         0.000016         0.000010  \n",
       "12   -0.000003         0.000017         0.000012  \n",
       "13   -0.000003         0.000021         0.000013  "
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "filip_cv_final_df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We visualize our mean-squared error scores, this time with proper error bars representing the 95% confidence interval for the mean scores:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 480x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(dpi=120, figsize=(4, 3))\n",
    "facet_var, facet_id, facet_label, facet_ylim = (\"mse\", 0, r\"Mean-squared error\", (-0.00035, 0.0))\n",
    "sns.scatterplot(\n",
    "    x=\"n\",\n",
    "    y=f\"{facet_var}_mean\",\n",
    "    data=filip_cv_final_df,\n",
    "    ax=ax,\n",
    ")\n",
    "ax.errorbar(\n",
    "    filip_cv_final_df[\"n\"],\n",
    "    filip_cv_final_df[f\"{facet_var}_mean\"],\n",
    "    yerr=[filip_cv_final_df[\"yerr_lower\"], filip_cv_final_df[\"yerr_upper\"]],\n",
    ")\n",
    "ax.set_ylim(facet_ylim)\n",
    "ax.set_xlabel(r\"Polynomial degree\")\n",
    "ax.set_ylabel(facet_label)\n",
    "\n",
    "fig.tight_layout();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The error bars are very tiny, smaller than the size of the points."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The visualization below shows the mean-squared error scores along with error bars that represent the spread of the cross-validation results (specifically, the middle 95%)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 480x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(dpi=120, figsize=(4, 3))\n",
    "facet_var, facet_id, facet_label, facet_ylim = (\"mse\", 0, r\"Mean-squared error\", (-0.0006, 0.0))\n",
    "sns.scatterplot(\n",
    "    x=\"n\",\n",
    "    y=f\"{facet_var}_mean\",\n",
    "    data=filip_cv_final_df,\n",
    "    ax=ax,\n",
    ")\n",
    "ax.errorbar(\n",
    "    filip_cv_final_df[\"n\"],\n",
    "    filip_cv_final_df[f\"{facet_var}_mean\"],\n",
    "    yerr=[filip_cv_final_df[\"yerr_dist_lower\"], filip_cv_final_df[\"yerr_dist_upper\"]],\n",
    ")\n",
    "ax.set_ylim(facet_ylim)\n",
    "ax.set_xlabel(r\"Polynomial degree\")\n",
    "ax.set_ylabel(facet_label)\n",
    "\n",
    "fig.tight_layout();"
   ]
  }
 ],
 "metadata": {
  "celltoolbar": "Slideshow",
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  },
  "varInspector": {
   "cols": {
    "lenName": 16,
    "lenType": 16,
    "lenVar": 40
   },
   "kernels_config": {
    "python": {
     "delete_cmd_postfix": "",
     "delete_cmd_prefix": "del ",
     "library": "var_list.py",
     "varRefreshCmd": "print(var_dic_list())"
    },
    "r": {
     "delete_cmd_postfix": ") ",
     "delete_cmd_prefix": "rm(",
     "library": "var_list.r",
     "varRefreshCmd": "cat(var_dic_list()) "
    }
   },
   "types_to_exclude": [
    "module",
    "function",
    "builtin_function_or_method",
    "instance",
    "_Feature"
   ],
   "window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}