{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Description \n",
"\n",
"Smoothing Example Notebook\n",
"\n",
"This notebook provides example code based on the lecture material.\n",
"\n",
"If you wish to run or edit the notebook, we recommend downloading it and running it either on your local machine or on JupyterHub."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"\n",
"import statsmodels.formula.api as sm\n",
"\n",
"%matplotlib inline "
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"# Variables are\n",
"# subject: subject ID number\n",
"# age: age diagnosed with diabetes\n",
"# acidity: a measure of acidity called base deficit\n",
"# y: natural log of serum C-peptide concentration\n",
"# Original source is Sockett et al. (1987)\n",
"# mentioned in Hastie and Tibshirani's book \n",
"# \"Generalized Additive Models\".\n",
"\n"
]
},
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
subject
\n",
"
age
\n",
"
acidity
\n",
"
y
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
1
\n",
"
5.2
\n",
"
-8.1
\n",
"
4.8
\n",
"
\n",
"
\n",
"
1
\n",
"
2
\n",
"
8.8
\n",
"
-16.1
\n",
"
4.1
\n",
"
\n",
"
\n",
"
2
\n",
"
3
\n",
"
10.5
\n",
"
-0.9
\n",
"
5.2
\n",
"
\n",
"
\n",
"
3
\n",
"
4
\n",
"
10.6
\n",
"
-7.8
\n",
"
5.5
\n",
"
\n",
"
\n",
"
4
\n",
"
5
\n",
"
10.4
\n",
"
-29.0
\n",
"
5.0
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" subject age acidity y\n",
"0 1 5.2 -8.1 4.8\n",
"1 2 8.8 -16.1 4.1\n",
"2 3 10.5 -0.9 5.2\n",
"3 4 10.6 -7.8 5.5\n",
"4 5 10.4 -29.0 5.0"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"diab = pd.read_csv(\"data/diabetes.csv\")\n",
"print(\"\"\"\n",
"# Variables are\n",
"# subject: subject ID number\n",
"# age: age diagnosed with diabetes\n",
"# acidity: a measure of acidity called base deficit\n",
"# y: natural log of serum C-peptide concentration\n",
"# Original source is Sockett et al. (1987)\n",
"# mentioned in Hastie and Tibshirani's book \n",
"# \"Generalized Additive Models\".\n",
"\"\"\"\n",
")\n",
"diab.head()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"diab.plot.scatter(x='age',y='y',c='Red',title=\"Diabetes data\")\n",
"plt.xlabel(\"Age at Diagnosis\")\n",
"plt.ylabel(\"Log C-Peptide Concentration\")\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Linear Regression\n",
"After a lot of time with SKLearn, we're moving back to Statsmodels because of its fuller implementation of statistical tools, like confidence intervals.\n",
"\n",
"We'll also be using statsmodels' powerful formula interface. It lets one write complex models succinctly and without building complex design matrices by hand. Below, we write `'y~age'` to mean \"the y column is approximately $\\beta_1$ times the age column (plus a constant $\\beta_0$\". We could include more columns, or transformations of the age column, e.g. '`y ~ age + age**2 + acidity'`."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"fit1_lm = sm.ols('y~age',data=diab).fit()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We create a very dense set of values to predict on. Remember: the _point_ of a model is to provide outputs for a wide variety of inputs. No need to only predict on the training or test values-- the model can predict on anything you ask it to!\n",
"\n",
"Further, it's *important when working with statsmodels that we make a named data frame*- if we only use a numpy array statsmodels won't know it's the 'age' variable."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"xpred = pd.DataFrame({\"age\":np.arange(0,16.1,0.1)})"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Plot the prediction line and confidence intervals"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"ax1 = diab.plot.scatter(x='age',y='y',c='Red',title=\"Diabetes data with least-squares linear fit\")\n",
"ax1.set_xlabel(\"Age at Diagnosis\")\n",
"ax1.set_ylabel(\"Log C-Peptide Concentration\")\n",
"\n",
"ax1.plot(xpred.age, prediction_output['mean'],color=\"green\")\n",
"\n",
"# CI for the predection at each x value, i.e. the line itself\n",
"ax1.plot(xpred.age, prediction_output['mean_ci_lower'], color=\"blue\",linestyle=\"dashed\")\n",
"ax1.plot(xpred.age, prediction_output['mean_ci_upper'], color=\"blue\",linestyle=\"dashed\");\n",
"\n",
"# CIs for where future data will fall\n",
"#ax1.plot(xpred.age, prediction_output['obs_ci_lower'], color=\"skyblue\",linestyle=\"dashed\")\n",
"#ax1.plot(xpred.age, prediction_output['obs_ci_upper'], color=\"skyblue\",linestyle=\"dashed\");"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Polynomial Regression\n",
"In sklearn we would use polynomial_features. Here we use `vander` to build the matrix of transformed inputs. In particular, `vander` is a numpy function and therefore usable directly in the formula- it saves us from writing out `y ~ age + age**2 + age**3 + ...` and so on.\n",
"\n",
"`vander` is for Vandermonde. It's a matrix where the first column is $x^0$, the second is $x^1$, the third is $x^2$ and so on.\n",
"\n",
"` np.vander([6,3,5], 4, increasing=True) = \n",
" array([[ 1, 6, 36, 216], \n",
" [ 1, 3, 9, 27], \n",
" [ 1, 5, 25, 125]])\n",
"` \n",
"\n",
"Since we have a constant column in the matrix, we put a -1 in the formula to drop the additional constant term statsmodels would otherwise insert\n",
"\n",
"Note that this is **not** an _orthogonal_ polynomial basis. Our estimated coefficients will be more sensitive to the data than they need to be."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"ax2 = diab.plot.scatter(x='age',y='y',c='Red',title=\"Diabetes data with least-squares cubic fit\")\n",
"ax2.set_xlabel(\"Age at Diagnosis\")\n",
"ax2.set_ylabel(\"Log C-Peptide Concentration\")\n",
"\n",
"# CI for the predection at each x value, i.e. the curve itself\n",
"ax2.plot(xpred.age, poly_predictions['mean'],color=\"green\")\n",
"ax2.plot(xpred.age, poly_predictions['mean_ci_lower'], color=\"blue\",linestyle=\"dashed\")\n",
"ax2.plot(xpred.age, poly_predictions['mean_ci_upper'], color=\"blue\",linestyle=\"dashed\");\n",
"\n",
"# CIs for where future data will fall\n",
"#ax2.plot(xpred.age, poly_predictions['obs_ci_lower'], color=\"skyblue\",linestyle=\"dashed\")\n",
"#ax2.plot(xpred.age, poly_predictions['obs_ci_upper'], color=\"skyblue\",linestyle=\"dashed\");"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Logistic Regression\n",
"Statsmodels provides logistic regression via the same formula-based interface."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For the sake of doing logistic regression, suppose we have the binary outcome \"Was y above 4?\""
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"diab['y_bin'] = 1*(diab['y'] > 4) # multiply by 1 because statsmodels wants 1s and 0s instead of true and false"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Optimization terminated successfully.\n",
" Current function value: 0.353988\n",
" Iterations 7\n"
]
}
],
"source": [
"logit_model = sm.logit(\"y_bin ~ age\", data = diab).fit()\n",
"logit_prediction = logit_model.predict(xpred)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"There is no built-in `get_predictions` for logistic regression. The code provided below can be used as a replacement. Because it was custom-written by your loving TFs, it will handle polynomial models that use `vander`, but little else. "
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
lower
\n",
"
predicted
\n",
"
upper
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
0.046716
\n",
"
0.230382
\n",
"
0.646460
\n",
"
\n",
"
\n",
"
1
\n",
"
0.049354
\n",
"
0.236818
\n",
"
0.649700
\n",
"
\n",
"
\n",
"
2
\n",
"
0.052128
\n",
"
0.243377
\n",
"
0.652945
\n",
"
\n",
"
\n",
"
3
\n",
"
0.055044
\n",
"
0.250058
\n",
"
0.656198
\n",
"
\n",
"
\n",
"
4
\n",
"
0.058108
\n",
"
0.256860
\n",
"
0.659458
\n",
"
\n",
"
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
\n",
"
\n",
"
156
\n",
"
0.867631
\n",
"
0.987899
\n",
"
0.999018
\n",
"
\n",
"
\n",
"
157
\n",
"
0.869055
\n",
"
0.988322
\n",
"
0.999074
\n",
"
\n",
"
\n",
"
158
\n",
"
0.870462
\n",
"
0.988729
\n",
"
0.999128
\n",
"
\n",
"
\n",
"
159
\n",
"
0.871853
\n",
"
0.989123
\n",
"
0.999178
\n",
"
\n",
"
\n",
"
160
\n",
"
0.873228
\n",
"
0.989503
\n",
"
0.999225
\n",
"
\n",
" \n",
"
\n",
"
161 rows × 3 columns
\n",
"
"
],
"text/plain": [
" lower predicted upper\n",
"0 0.046716 0.230382 0.646460\n",
"1 0.049354 0.236818 0.649700\n",
"2 0.052128 0.243377 0.652945\n",
"3 0.055044 0.250058 0.656198\n",
"4 0.058108 0.256860 0.659458\n",
".. ... ... ...\n",
"156 0.867631 0.987899 0.999018\n",
"157 0.869055 0.988322 0.999074\n",
"158 0.870462 0.988729 0.999128\n",
"159 0.871853 0.989123 0.999178\n",
"160 0.873228 0.989503 0.999225\n",
"\n",
"[161 rows x 3 columns]"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from scipy.special import expit\n",
"import re\n",
"def get_logit_prediction_intervals(model, new_data_df):\n",
" if type(new_data_df) != pd.DataFrame:\n",
" raise TypeError('new_data_df must be a DataFrame')\n",
" \n",
" # transform the raw data according to the formula\n",
" new_data_dict = {}\n",
" for x in model.params.index:\n",
" # only presently supports Intercept, a named column, and polynmoials created via np.vander\n",
" # the trick is finding the correct base column in the raw data\n",
" if x == \"Intercept\":\n",
" new_data_dict[x] = np.ones(new_data_df.shape[0])\n",
" elif x.startswith(\"np.vander(\"):\n",
" try:\n",
" will = re.match(r\"np.vander\\((.*), ?(.*)\\)\\[(.*)\\]\", x)\n",
" column, power, index = will.groups()\n",
" except e:\n",
" raise ValueError(\"Couldn't parse formula-derived feature {}\".format(x))\n",
" new_data_dict[x] = np.vander(new_data_df.loc[:,column], int(power))[:,int(index)]\n",
" else:\n",
" new_data_dict[x] = new_data_df.loc[:,x]\n",
" new_data = pd.DataFrame(new_data_dict)\n",
" \n",
" variance_mat = model.cov_params()\n",
" standard_devs = np.sqrt(np.sum(new_data.dot(variance_mat) * new_data, axis=1))\n",
" \n",
" linear_predictions = new_data.dot(model.params)\n",
" output = pd.DataFrame({\"lower\": expit(linear_predictions - 1.96*standard_devs),\n",
" \"predicted\": expit(linear_predictions),\n",
" \"upper\": expit(linear_predictions + 1.96*standard_devs)\n",
" })\n",
" return output\n",
"\n",
"logit_prediction_intervals = get_logit_prediction_intervals(logit_model, xpred)\n",
"logit_prediction_intervals"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"A pure logistic model"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"ax = diab.plot.scatter(x='age',y='y_bin',c='Red',title=\"Diabetes data with logit-linear fit\")\n",
"ax.set_xlabel(\"Age at Diagnosis\")\n",
"ax.set_ylabel(\"Log-odds Log C-Peptide Concentration > 4\")\n",
"\n",
"ax.plot(xpred.age, logit_prediction_intervals[\"predicted\"],color=\"green\")\n",
"ax.plot(xpred.age, logit_prediction_intervals[\"lower\"], color=\"blue\",linestyle=\"dashed\")\n",
"ax.plot(xpred.age, logit_prediction_intervals[\"upper\"], color=\"blue\",linestyle=\"dashed\");\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"A logistic model wherein the probability is a cubic function of Age"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Optimization terminated successfully.\n",
" Current function value: 0.194005\n",
" Iterations 10\n"
]
}
],
"source": [
"logit_poly_model = sm.logit(\"y_bin ~ np.vander(age, 4) - 1\", data = diab).fit()\n",
"logit_poly_prediction = logit_poly_model.predict(xpred)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"ax = diab.plot.scatter(x='age',y='y_bin',c='Red',title=\"Diabetes data with logit-cubic fit\")\n",
"ax.set_xlabel(\"Age at Diagnosis\")\n",
"ax.set_ylabel(\"Log-odds Log C-Peptide Concentration > 4\")\n",
"\n",
"logit_poly_prediction_intervals = get_logit_prediction_intervals(logit_poly_model, xpred)\n",
"\n",
"ax.plot(xpred.age, logit_poly_prediction_intervals[\"predicted\"],color=\"green\")\n",
"ax.plot(xpred.age, logit_poly_prediction_intervals[\"lower\"], color=\"blue\",linestyle=\"dashed\")\n",
"ax.plot(xpred.age, logit_poly_prediction_intervals[\"upper\"], color=\"blue\",linestyle=\"dashed\");\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Lo(w)ess\n",
"Lowess is available in Statsmodels. It takes a fraction of the data that should be used in smoothing each point. Please note that you are not responsible for mastering lowess - this is merely for your edification."
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"from statsmodels.nonparametric.smoothers_lowess import lowess as lowess\n",
"\n",
"lowess_models = {}\n",
"for cur_frac in [.15,.25,.7, 1]:\n",
" lowess_models[cur_frac] = lowess(diab['y'],diab['age'],frac=cur_frac)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Note** Python's lowess implementation does not have any tool to predict on new data; it only returns the fitted function's value at the training points. We're making up for that by drawing a straight line between consecutive fitted values (scipy's `interp1d`). (There are other more sophisticated interpolation techniques, but the ideal approach would be to predict on new points using lowess itself. This is a limitation of the Python implementation, not lowess itself. R, for example, has a much fuller Lowess toolkit)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"ax = diab.plot.scatter(x='age',y='y',c='Red',title=\"Large variance, low bias smoother\")\n",
"ax.set_xlabel(\"Age at Diagnosis\")\n",
"ax.set_ylabel(\"Log C-Peptide Concentration\")\n",
"lowess_interpolation = interp1d(lowess_models[.15][:,0], lowess_models[.15][:,1], bounds_error=False)\n",
"ax.plot(xpred, lowess_interpolation(xpred), color=\"lightgreen\")\n",
"plt.show()\n",
"\n",
"ax = diab.plot.scatter(x='age',y='y',c='Red',title=\"Low variance, large bias smoother\")\n",
"ax.set_xlabel(\"Age at Diagnosis\")\n",
"ax.set_ylabel(\"Log C-Peptide Concentration\")\n",
"lowess_interpolation = interp1d(lowess_models[1][:,0], lowess_models[1][:,1], bounds_error=False)\n",
"ax.plot(xpred, lowess_interpolation(xpred), color=\"lightgreen\")\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Splines (via knots)\n",
"Here, we flash back to OLS and logistic regression. So far, we've made \"design\" matrices by taking powers of the raw data's columns and asking the solver \"how much of each transformed column is there\"? That's fine if there's an a-priori theoretical reason to think the relationship truly is polynomial. But in most cases we can use *much* richer and better transformations of the raw data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The function below is one such better transformation of the raw data. It (depending on the parameters) applies a RELU or truncated cubic to the input data. Let's see what that looks like"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"def h(x, knot, exponent):\n",
" output = np.power(x-knot, exponent)\n",
" output[x<=knot] = 0\n",
" \n",
" return output"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Transforming the x values [0,10] with a knot at 4, power 1. Everything below 4 is zeroed out, values above 4 increase at slope 1. (If we had applied \"square the data\" we'd see a parabola below)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"xvals = np.arange(0,10.1,0.1)\n",
"\n",
"plt.plot(xvals, h(xvals,4,1), color=\"red\")\n",
"plt.title(\"Truncated linear basis function with knot at x=4\")\n",
"plt.xlabel(\"$x$\")\n",
"plt.ylabel(\"$(x-4)_+$\") #note the use of TeX in the label\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Transforming the x values [0,10] with a knot at 4, power 3. Again, inputs below 4 are zeroed out, the rest grow cubically with their distance from 4."
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.plot(xvals,h(xvals,4,3),color=\"red\")\n",
"plt.title(\"Truncated cubic basis function with knot at x=4\")\n",
"plt.xlabel(\"$x$\")\n",
"plt.ylabel(\"$(x-4)_+^3$\")\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The sum of three RELUs with different knots and different coefficients can create a complicated shape, and thus fit complicated data. Below we see $3\\cdot RELU(x,\\text{knot=}2) - 4\\cdot RELU(x,\\text{knot=}5) + 0.5\\cdot RELU(x,\\text{knot=}8)$. Can you see how much the slope changes at each knot (i.e. at 2, 5, and 8)? "
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.plot(xvals, 3*h(xvals,2,1) - 4*h(xvals,5,1) + 0.5*h(xvals,8,1), color=\"red\")\n",
"plt.title(\"Piecewise linear spline with knots at x=2, 5, and 8\")\n",
"plt.xlabel(\"$x$\")\n",
"plt.ylabel(\"$y$\")\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Above, but with a starting slope and intercept \n",
"(intercept=2, starting slope=1)"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.plot(xvals, 2 + xvals + 3*h(xvals,2,1) - 4*h(xvals,5,1) + 0.5*h(xvals,8,1), color=\"red\")\n",
"plt.title(\"Piecewise linear spline with knots at x=2, 5, and 8\\n plus a starting slope and intercept\")\n",
"plt.xlabel(\"$x$\")\n",
"plt.ylabel(\"$y$\")\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Using OLS, we can find optimal coefficients for RELUs with pre-specified knots, just like we can find optimal coefficients for $x^2$ and $x^3$"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"# generate some fake data to fit\n",
"\n",
"x = np.arange(0.1,10,9.9/100) \n",
"from scipy.stats import norm\n",
"y = norm.ppf(x/10) + np.random.normal(0,0.4,100)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Notice that we can apply the function h(x) directly in the formula, because we defined it earlier in the notebook."
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAEWCAYAAABrDZDcAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAABrSklEQVR4nO3ddVhU2RsH8O8hlG5QQkIERcBCQEElVsUAA7sQO9dY213btTvA7hYFXRswsUFQMTFQUSy6a97fH+j8HEFBBIY4n+eZZ50zN947q/edE/ccRkTgOI7jKi8JcQfAcRzHiRdPBBzHcZUcTwQcx3GVHE8EHMdxlRxPBBzHcZUcTwQcx3GVHE8EHFcIjDFPxliQuOPguJLAEwFXaTHG9jDGohljiYyxp4yxwWKIYTZjbE9pn5fjvsUTAVeZLQRgSERKADoAmM8YsxJzTBxX6ngi4CotInpARBlf3355GRdmX8bYUsZYEGNM+WuzEWNsGWMsjjH2kjHW9pttdRhjxxljsYyxZ4yxIV/K2wCYDqAHYyyZMXb3S7knY+wFYyzpy7H6FOuFc9x3pMQdAMeJE2PMC4AnAFkAoQBOFbC9BICNAPQBtCaiVMYYANgC2AlAA8BQAFsZY7qUO4fLfgAPAOgAqAPAnzH2gojOMMYWAKhFRH2/HF8ewBoA1kT0hDGmDUCtmC+b40TwGgFXqRHRSACKAJoDOAog4yebSyP3pq4GwI2IUr/57BURbSaiHOQmBG0A1RhjNQA0AzCFiNKJKAzAFgD9fnIeAQALxpgsEUUT0YMiXh7HFQpPBFylR0Q5RBQEQA/AiJ9sWgtARwBziCjzu8/ef3O8rwlCAbm1gFgiSvpm21cAdH8QSwqAHgCGA4hmjJ1kjNX5levhuF/FEwHH/Z8Uft5H8AjAAACnGWO1C3nMdwDUGGOK35TpA3j75c95pv8lorNE1Aq5tYrHADYX8lwcVyQ8EXCVEmNMizHWkzGmwBiTZIy5AOgF4PzP9iOi/cjt4A1gjBXYsUxEbwBcA7CQMSbDGKsHYBCAvV82+QDA8EvfAxhj1RhjHb70FWQASAaQU8TL5LhC4YmAq6wIuc1AUQDiACwDMI6IjhW4I9FOAHMBnGeMGRbiXL0AGCK3duALYBYR+X/57PCX/8Ywxu4g99/khC/bxgJwADCycJfEcUXD+MI0HMdxlRuvEXAcx1VyPBFwHMdVcjwRcBzHVXI8EXAcx1Vy5XKKCQ0NDTI0NBR3GBzHceVKSEjIZyLS/L68XCYCQ0NDBAcHizsMjuO4coUx9iq/ct40xHEcV8nxRMBxHFfJ8UTAcRxXyZXLPoL8ZGVlISoqCunp6eIOhavEZGRkoKenB2lpaXGHwnGFVmESQVRUFBQVFWFoaIgvC4VwXKkiIsTExCAqKgpGRkbiDoerYN6/f4+nT5/C2NgYurr5zmJeZBWmaSg9PR3q6uo8CXBiwxiDuro6r5VyxSo7OxujRo2CmZkZpk+fjnr16sHT0xMZGT9bQ+nXVJhEAIAnAU7s+N9BrrgtXboUjx49QmRkJIKCgvDq1SvExsZi5syZxXaOCpUIOI7jKppNmzZhxYoVUFZWBgAoKChgzZo12Lx5M4pr9mieCIrRv//+C3Nzc9SrVw8NGjTAzZs3f7r97NmzsWzZMgDAzJkzERAQUBphws7ODgAQGRmJffv2Cct37NiB0aNHF7i/oaEhPn/+/Ntx7NixA+/evfvt44SFheHUqfzXnPf394eVlRUsLS1hZWWF8+fzX3fG09MTRkZGaNCgARo0aICwsLA822RlZaF///6wtLSEmZkZFi5c+Nuxc1xBPn/+DH19fZEyXV1dJCYmIieneNYsqjCdxeJ2/fp1nDhxAnfu3EHVqlXx+fNnZGZ+v6ztj82dO7cEoxN17do1AP9PBL179y61c39rx44dsLCwgI6Ozm8dJywsDMHBwWjXrl2ezzQ0NPDff/9BR0cH4eHhcHFxwdu3b/M5Sm4VvGvXrj88z+HDh5GRkYH79+8jNTUVdevWRa9evcCnO+FKkpOTE/bv349Ro0YBAgEgIYFDhw7Bzs4OUlLFcwvnNYJiEh0dDQ0NDVStWhVA7g3o6w3O0NAQU6ZMgY2NDWxsbPDs2bM8+3t6esLHx0e4/axZs9CoUSNYWlri8ePHAICUlBQMHDgQ1tbWaNiwIY4dy7uY1siRI3H8+HEAQOfOnTFw4EAAwNatW/HPP/8AyK1aAsDUqVNx5coVNGjQACtXrgQAvHv3Dm3atIGJiQkmT57802tOS0tDmzZtsHnzZkRGRsLMzAxDhgyBubk5WrdujbS0NAC5N+omTZqgXr166Ny5M+Li4uDj44Pg4GD06dMHDRo0QFpaGqZOnYq6deuiXr16mDhxYp7z3bp1C3Z2dmjYsCHs7Ozw5MkTZGZmYubMmTh48CAaNGiAgwcPiuzTsGFD4f8Hc3NzpKenF7mTjTGGlJQUZGdnIy0tDVWqVIGSklKRjsVxhTV//nzMmTMHy4YNQ4aGBnb1749x48Zh0aJFxXcSIip3LysrK/rew4cPhX8GlpbI62eSkpKofv36ZGJiQiNGjKCLFy8KPzMwMKD58+cTEdHOnTupffv2REQ0a9YsWro097j9+/enw4cPC7dfs2YNERGtX7+eBg0aRERE06ZNo927dxMRUVxcHJmYmFBycrJIHPv376eJEycSEZG1tTXZ2toSEZGnpyedOXOGiIjk5eWJiOjChQvCWIiItm/fTkZGRhQfH09paWmkr69Pr1+/znOtBgYG9PLlS/rjjz9o586dRET08uVLkpSUpNDQUCIi6tatmzBWS0tL4fcxY8YMGjt2LBEROTg40O3bt4mIKCYmhkxNTUkgEAiv73sJCQmUlZVFRET+/v7k7u4ujHvUqFF5tv/e4cOH6Y8//sj3s/79+5OpqSlZWlrSuHHjKD09Pc82mZmZ1KNHD9LQ0CA5OTnauHFjvsf69u8ixxWH58+f0xEHByKAZvTpQ48ePSrScQAEUz73VF4jKCYKCgoICQnBpk2boKmpiR49emDHjh3Cz3v16iX87/Xr1ws8nru7OwDAysoKkZGRAIBz585h0aJFaNCgARwdHZGeno7Xr1+L7Ne8eXNcuXIFDx8+RN26dVGtWjVER0fj+vXrwr6Bn/njjz+grKwMGRkZ1K1bF69e5TtHFTp27IgBAwbAw8NDWPa1jf3buBMSEhAfHw8HBwcAQP/+/XH58uU8x1NSUoKMjAwGDx6Mo0ePQk5OLs82CQkJ6NatGywsLDB+/Hg8ePCgwOv56sGDB5gyZQo2btyY7+cLFy7E48ePcfv2bcTGxmLx4sV5trl16xYkJSXx7t07vHz5EsuXL8eLFy8KHQPHFVXNmjXhLisLmJpi7p49qFOnTrEev0L2ERDlbVYoDZKSknB0dISjoyMsLS2xc+dOeHp6AhAdVliYIYZfm5gkJSWRnZ0NILf2duTIEdSuXfuH++nq6iIuLg5nzpxBixYtEBsbi0OHDkFBQQGKioqFPu/35/6evb09Tp8+jd69ewuv5/t9vzYNFYaUlBRu3bqFwMBAHDhwAOvWrcvTsTtjxgw4OTnB19cXkZGRcHR0LNSxo6Ki0LlzZ+zatQvGxsb5bqOtrS28hgEDBgg78b+1b98+tGnTBtLS0tDS0oK9vT2Cg4NRs2bNQl8nxxVJWhpw8SIwdGiJHJ7XCIrJkydPEBERIXwfFhYGAwMD4fuvbdcHDx5E06ZNi3QOFxcXrF27VjhkLDQ0NN/tmjZtilWrVqFFixZo3rw5li1bhubNm+fZTlFREUlJSUWKZe7cuVBXV8fIkSN/up2ysjJUVVVx5coVAMDu3buFtYNvz5+cnIyEhAS0a9cOq1atynfUTkJCgvCJym9rWz+7jvj4eLRv3x4LFy6Evb29yGceHh64desWgNw+HiA32fr5+cHCwgJAbi3ga61HX18f58+fBxEhJSUFN27cKPZfZhyXr4sXgfR0oG3bEjk8TwTFJDk5Gf379xd2dj58+BCzZ88Wfp6RkQFbW1usXr1a2DH7q2bMmIGsrCzUq1cPFhYWmDFjRr7bNW/eHNnZ2ahVqxYaNWqE2NjYfBNBvXr1ICUlhfr16xcpplWrViE9Pb3ATuWdO3di0qRJqFevHsLCwoQPwnh6emL48OFo0KABkpKS4Orqinr16sHBwSHfeCZPnoxp06bB3t5eZNick5MTHj58mG9n8bp16/Ds2TPMmzdPODT048ePAIB79+4JawJ9+vSBpaUlLC0t8fnzZ2HH+uvXryErKwsAGDVqFJKTk2FhYQFra2sMGDAA9erV++XvjeN+2enTgIwM8OVHVHFjX39dlieNGzem7xemefToEczMzMQU0c99XUhHQ0ND3KFwXyQmJmLQoEE4fPjwT7ebNGkS+vXr90s3/LL8d5Erp0xMcl8/eF6msBhjIUTU+PvyCtlHwHEFUVJSKjAJALnPFnCcWD17lvsaM6bETsETQSn4OuqH4zjul50+nfvfEuofAHgfAcdxXNl2+jRQq1buq4TwRMBxHFdWpaUBFy6UaG0AKAOJgDFWgzF2gTH2iDH2gDE2VtwxcRzHlQnnzpXosNGvykIfQTaACUR0hzGmCCCEMeZPRA/FHRjHcZxYrV4N6OkBLVuW6GnEXiMgomgiuvPlz0kAHgEo3nXYSkFMTIxwnHr16tWhq6srfF/QLKTx8fHw8vISvr948SJcXV1LOmSO40pYamoq/Pz8cPDgQcTExAjLQ0JCMHLkSPTs2RMbNmzI/yn80NDcZqExY4ASXgNb7IngW4wxQwANAeSZyJ8xNpQxFswYC/706VOpx1YQdXV1hIWFISwsDMOHD8f48eOF76tUqfLDqRqAvImA47jyIykpCXPmzEHDhg1hY2ODlStXIisrC+fPn4ehoSHWrVuHffv2wdjYGFu3bsWuXbvg6uqKGjVqwNXVFcePH4ejoyNSUlJED7x8OaCgAAwZAgBITc3ChAkXEBdX/EuhloWmIQAAY0wBwBEA44go8fvPiWgTgE1A7gNlpRxekXh6ekJNTQ2hoaFo1KgRFBUVoaCgIJxi2cLCAidOnMDUqVPx/PlzNGjQAK1atUL79u2RnJyMrl27Ijw8HFZWVtizZw9fBpHjypisrCy0bt0ahoaG8PLyQnp6OhYsWIDLly/jypUr8PHxEc6JFRERATs7O2RnZyMoKAjm5uYAcp9q79y5M7Zu3YoxX58ViIoCDh4ERo8GVFQQHZ2MDh18ERz8AZGRiThypGOxXkeZSASMMWnkJoG9RHT0tw84bhyQz1w1v6VBA2DVql/e7enTpwgICICkpKTIlBPfWrRoEcLDw4Xz61y8eBGhoaF48OABdHR0YG9vj6tXr6JZs2ZFDp/juOLn5+cHSUlJ7Nu3T/hDzd7eHrq6uqhTp47IxIgmJiZwdnbGlStXhEkAyJ2E0tPTE5s2bfp/IlizBiACxo5FWNhHuLn5IioqCUZGypg/v/jvA2JvGmK5395WAI+IaIW44ylu3bp1g6Sk5C/vZ2NjAz09PUhISKBBgwb8oTSOK4Nu3ryJDh06iNTWq1SpAnNzc5EFkOLj49G/f38cPXoU0dHRaNq0qXDCQwD4+PGjcE1iJCUBmzYBXbviRHgOmjXbj6ioJNjb6+LmzT4wM1Mv9usoCzUCewD9ANxnjIV9KZtOREWfVKMIv9xLiry8vPDPUlJSEAgEwvfp6T9u6yvsdNAcx4mPrq4u7t69m6c8PT0djx8/xrt376Cjo4MuXbrAyMgIRkZGEAgEqFWrFtq3b487d+5AUlISS5Ys+X8/4apVQEIC9mm3Rd8OviACevc2w9atLpCRKZlbtthrBEQURESMiOoRUYMvr9+bWamMMjQ0xJ07dwAAd+7cwcuXLwH83nTQHMeJT9++fXH69Gns378fAoEAWVlZWLlyJT5//ozp06fD1tYWo0aNQlhYGG7cuAE7OzucOXMGoaGhICI4OjrC3NwcQ4YMQevWrYHISNCCBQip2QJ9Vn0CETBnjh327GlXYkkAKBs1gkqjS5cu2LVrFxo0aABra2uYmpoCyB1xZG9vDwsLC7Rt2xbt27cXc6QcxxWGpqYmTpw4gaFDh2L8+PHIzMyEoqIiJCUlsX37djg7OyMiIgJKSkpYsmQJ2rRpAwkJCdy7dw+zZ8/GpUuXcPPmTeHMxJmjx0CQSej0ojmqVpXEjh1t0bNnya95waeh5rhixv8uVj5EhMjISPTq1QuGhoaYMmUKJCQksHTpUjx48ADv3r1DZGSkcG0LIHfZVgsLC0yaNAkAEL3dB9oDu2Eq2mKbZnv4+XWCnV3xPlLFp6HmOI4rIYwxPH36FBkZGdi3bx8kJHJb3Xfv3g1bW1uYm5ujU6dOmD9/PjQ0NLB161ZcvHhRuADT9YsvUG3wSDyBJs6YdcbNk91gZKRSavHzRMBxHFcMQkJC4OLiIkwCQG6CcHFxAWMMsrKy6Nu3L5KSktCmTRtcuXIFampq2LfvEV57jMFUwSdMa/QPLp33gLJy1Z+cqfhVqERARPyhK06symNTK1c8DA0NsWvXrjzlYWFh6Nq1K/r3749p06YJy4kIc+Zcw6XZuxCAQFyr3Rrzbs6BlFTpj+ER+6ih4iIjI4OYmBj+D5ETGyJCTEwMZGRkxB0KJwbu7u548uQJli1bhvT0dGRkZGD16tW4d+8eunXrJrJteno2+vY9hfWzz2Ev9iFeSx9Ng4+IJAEiwo0bN7B7926EhoaWaOwVpkagp6eHqKgolMV5iLjKQ0ZGBnp6euIOgxMDGRkZBAQEYOTIkZgzZw4AwNbWFv7+/pCTkxNu9/FjCjp3Pobr16JwWvIQtCQyIHnuWO68Ql/Ex8ejY8eOiI6OhrW1Nf755x/Ur18fBw8eFOlwLi4VZtQQx3FcSYuLi8O1a9egpqYGW1tbkf6Ab8XHxwMAVFRURMofPvyM9u2PIjIyEYuUr2JKgh+wfj0wcqTIdoMHD4akpCS8vb0hISGB7Oxs9OzZEyYmJli4cGGR4//RqCGeCDiO4wph5cqVmDNnDmxsbPDu3TsQEfz8/GBiYlKo/f39I9G163EkJmZimvErLHi+DujVC9i7F/imbzMnJwdKSkqIjIyEpqamsPzRo0do3bo13rx5U+Rr4MNHOY7jiujixYvC9n59fX0QEby8vNClSxfcvXu3wEEqGzaEYfToQOTkEKY75mD+9c2AvT2wbZtIEgAgfEJZUVFRpFxFRSXvVNXFpMJ0FnMcx5WU7du3Y+LEidDX1weQOyx05MiRyMjIQEhIyA/3y8kRYPz4CxgxIgA5OYSlw/UwP3wZWI0agJ8fkM/AAmlpaTg5OWHr1q0i5Rs2bCixWQd4jYDjuEolLS0NMTExqFatGqQLufJXQkICqlWrJlLGGIOWlhYSEhLy3ScpKRO9e5/AiRMvIC0tgb0LLNBt/bDc6aVPnQK+TCuRnxUrVqBly5a4c+cObG1tceHCBVy/fh2XL18u/IX+Al4j4DiuUsjOzsa0adOgq6sLGxsb6Ovrw9vbu1D7tmrVCjt37hQZnv706VM8ePAAtra2ebZ/8yYRzZvvx4kTL6CmJoPLe+3RzXsEEB+fuyB9Af0K5ubmuHv3LmrXro1bt26hSZMmCAsLE9ZIihuvEXAcVynMmTMHN2/exL1796Cnp4fw8HB06dIFqqqq6Nmz50/3HTBgAPbs2YN27dqhb9++ePv2LVavXo3FixdD4ZthnwBw+3Y0OnTww/v3KTAxUcWZrU1Qc2An4PNnICAAaNSoUPFqaWlh8uTJRb3cX8JHDXEcV+FlZWWhevXqCAkJgaGhobD89OnTmDNnDm7cuFHgMdLS0rB7924EBARATU0NAwYMyFMbOHr0Kfr2PYW0tGw4OtaA71JzqHTvkJsEzp0DmjQp7kv7JXz4KMdxlVZsbCyMjIwQHx8vMsInKioK1tbWiI6O/q3jExEWL76FadOuAAAGDrTAhqHqkHZrDwgEuX0CNjb57uvr64v169fj/fv3sLOzw9SpU1GzZs3fiudHfpQIeB8Bx3EVnoqKCjQ0NHDt2jWR8lOnTsHa2vqn+z569AhbtmzBf//9h6ysrDyfZ2bmYNCgs8IksHhxC2zpJQXpVn8AsrLA1as/TAJr167F5MmTMXz4cOzdu1e4RnmpL01LROXuZWVlRRzHcYXx4sUL+vvvv6lFixakqqpKO3bsoKdPn9K6detIQ0ODbt26le9+OTk5NGzYMKpWrRr179+fmjdvTkZGRvTo0SPhNp8/p5KDw34ClpKs7Eo6cuQJkZcXkZQUkYUFUVTUD+NKTU0lDQ0Nevr0KRERCQQC2rp1K2lqapK0tDQ5OjrSxYsXi/W7ABBM+dxTxX5TL8qLJwKO4wrj/PnzpKGhQX/99Rdt2bKFbG1tSV5enoyMjKhLly4UHByc736pqak0b948atiwISUlJQnLN2zYQFZWViQQCOjp01gyMdlCwFLS1vai4OuviUaOzL2ttmtHlJDw09ju3btHdevWFb5fuXIlmZubk5eXFzVo0ID27dtHmpqadPXq1eL5MognAo7jKhmBQEC1a9emkydPipQPGjSIpk2b9sP9Vq1aRerq6iQvL09ycnLUv39/SklJIaLcWoKenh7t3n2V1NTWErCU6tffQW9DIogcHXNvqRMnEmVnFxjfx48fSUVFhRITEykzM5OqVatGjx49oq1bt1KnTp2IiGjz5s3k5ub2G9+CqB8lAt5HwHFchRQZGYmkpCS0bdtWpHzIkCE4depUvvv4+PjAy8sLN27cgJWVFXbv3o309HSMGzcOACAhIYGsrPoYMOA6YmPT4epaE9cW6UKnfXPg5k1g505g6VJAUrLA+DQ1NeHq6orhw4cjIiICjDGkpKRg9uzZ+PPPPwEATk5OuH///u99EYXAEwHHcWVeeno6AgMDcfHixXw7bPMjJyeHtLQ0ZGZmipTHxcVBXl4+333Wr1+PRYsWoVatWnBzc8OuXbuwdu1aHDx4EPHxCejVaxc+fHBEdjbhr7ENcKzJY8i1dwGUlXMTgYfHL13Xhg0bUKVKFTRp0gQfP35Eu3bt8O+//8LZ2RkAcPPmTZiamv7SMYskv2pCWX/xpiGOqzxOnjxJWlpa1LRpU7K2tiYdHZ1Cd6K6uLjQrFmzSCAQEBFRUlISNW3alDZs2JDv9rVr16bw8HAiIkpJSaFmzZqRvb09KSmpk77+PwQsJQmJpbRnwWkiB4fcpqAePYgSE3/rGuPi4mjcuHFkY2ND4eHhJBAI6OzZs6StrU3+/v6/dexvgfcRcBxX3rx7947U1dVFOkzPnTtHGhoaFB8fX+D+UVFR1LBhQzI3N6euXbuShoYGDRs2jHJycvLdfsCAATR37lzh+8zMTJoyZT5JSIwjYCkpKa6ku9PWECkrEykoEO3YQfQlyfyunJwcWrRoEVWvXp2kpKTIwsKCfH19i+XYX/0oEfAHyjiOK7NWrFiBhw8fYsuWLSLlXbt2Rbt27TBw4MACj0FECAoKwtu3b2FtbQ1jY+MfbhsREYHmzZtj6NChcHV1xenTYZg37y1ychRhrc8QYHoBSgEnc58Q3rMH+MmxioqIkJmZiapVi38Be74eAcdx5U58fDyqV6+ep1xbWxtxcXGFOgZjDM2bNy/UtiYmJrh27RqWLVuG3r3n49Ure+TkKGCWyUvM/HwAEpeTgUWLgAkTAKmSuX0yxkokCfwM7yzmOK7MatWqFQ4dOoS0tDRhWVJSEo4ePYrWrVuXyDmNjIxgajoIL186oEZ2PMK0D2B2hBckTE2AsDBgypQSSwLiwhMBx3FlVrNmzWBjY4MWLVpg+/bt2Lx5M+zs7NCpUydYWlr+1rGDgoLQsWNH1K5dG507d8b169eRnS3AqFEBmDzeH5MEgXgitQL1kp4Cq1fnThVhZlZMV1a2VKy0xnFchcIYw65du+Dj44OjR49CUlIS8+fPR4cOHX7ruOfOnYOHhwf+/fdfLFq0CEFBQejQoTuMjGZA9fZthLNjMKVPgFtnYM0aQE+vmK6obOKdxRzHVTo2NjaYPn06OnXqBAB4+TIe/eyWY8J7X3TGA6TVMILsxvXAdw+jlXdlurOYMbYNgCuAj0RkIe54OI6ruIgIwcHBcHV1BQDcOvcIwZ1G43zaJWRCArGTZkJt3nSglDtsxams9BHsANBG3EFwHFfxMcagp6eHB3fu4I7HNNR0scbwtAs4o9kUznoGUFsyp1IlAaCM1AiI6DJjzFDccXAcJ17Z2dl4+PAhlJSURFYSK1YCAbybNYOq3R/Qz0lGAGrhfNvhOPvhADw9x5TMOcu4slIj4DiukvP19YWhoSG6d+8OW1tbODk5ISoqqvhOQAT4+UFQrx7a79+PzznKaIVB6KZSBxtvLoS7eyeMHj26+M5XjpSJGkFhMMaGAhgKAPr6+mKOhuO44nT//n0MHz4cfn5+aNq0KbKysrBw4UJ06tQJt2/fFlle8pcRAadPA7NmAcHBiJLRxmT0wUk5K+zc3QaNGsmievXqkJGRKb4LKmfKzKihL01DJwrTWcxHDXFc2ZeYmIi9e/fiwYMHqF27Nvr16wcVFZV8tx0zZgw0NDQwc+ZMYRkRoU6dOti9ezdsviz1SEQ4ffo0Dh48iOzsbHTu3Bnu7u6QkMinceNrApg9G7h9G5m6+vg7wxkrP9eBtp4KTpzojPr1tUrgyssuvmYxx3Gl5s2bN6hfvz4CAwNhamqKa9euwdLSEs+ePct3+/fv36NWrVoiZRkZGVBRUcGlS5cgEAgAABMnTsTEiRPRpEkTODk5YeHChejfvz9EftAKBMCRI0DjxkD79sCnT3gwfhG0E8dh2WdzNGysg1u3+lS6JPBT+c1EV9ovAPsBRAPIAhAFYNDPtuezj3Jc2danTx+aOXOmSNmSJUuoY8eO+W6/evVqcnd3F7738fEhDQ0NkpSUJFNTUzIxMSEfHx+qXr06xcXFCbdLS0sjU1NTunTpElFmJtHOnUR16+ZOrFyrFtGWLbRp/W2SlFxGwFLq0sWPUlIyS+KSywXwaag5jistioqK9OHDB5Gy5ORkkpaWzncK6MTERLKwsCAPDw/atWsXKSoqkrGxMf39998kEAho3759pKysTEOGDMmz77ypU+m/li2J9PVzb2kWFkT79lF2egaNG3eegKUELKWpUy9RTk7xTBldXvFEwHFcqdHU1KQXL16IlH348IHk5OSEi8R8LzY2lmbPnk16enpkaGhIBw8eFNnW1NSUmjRp8v8d3r0jmj6dkqtWzb2VNW9OdOIEkUBASUkZ5Op6hIClJC29nLZtu1ci11ne/CgRlJtRQxzHlY5bt25h//79yMjIQIcOHeDi4vLLo3b69OmDWbNmYceOHZCQkAARYebMmejdu/cPj6WqqopZs2bh48ePMDExQffu3UU+r1evHs6cOYMbmzahyY0bwN69oKwsnJeSgs3Ro6jWuTMA4M2bRLi5+eLu3U9QVZWBr29HODjUKNqXUUnwzmKO44QWL16MLl26QF1dHbVq1cKECRMwePDgr315hTZ37ly8ffsWZmZmGDRoECwsLHD//n0sWbKkwH2dnZ1x4MAB5OTkCMtiP32C9JkzeGZggCbDhiFt504c1dCArYoKcg4dEiaB4OD3sLXdi7t3P8HERBU3bvTmSaAQyszw0V/Bh49yXPF78+YNGjRogPDwcGhrawMAUlNT0bBhQ2zYsAFOTk6/dDwiwvXr14XDR5s3b16omkV2djZcXV2RmZmJ0X37QufMGej6+aFGVhagp4fsESNwtW5dpMvKokWLFpCVlQUA7NlzF4MG+SMzE7C2VsOZM72gpib7619EBfaj4aNib+8vyov3EXBc8UlISKBJkyaRuro6KSgo0KRJkyghIUH4+fz582nChAnC9wKBgHbt2kVNmjQhQ0ND6tOnDz169KjQ53v58iWNGjWKrKysyM3Njc6ePZtnm8zbt+lR8+aUJilJBNBnc3MSHDyYOzLoOwKBgIYNOyDsFK5dewZVq6ZD48aN+2F/RGWFH/QR8KYhjhOjV69eYcGCBZgyZQoCAgJ+uQnmd+Xk5KBNmzZ4//49Jk6ciMaNG+PDhw9wcXERNs3Ex8dDTk5OuM/ixYuxePFizJw5E/7+/rC0tISDgwOeP39e4PkiIyNhZ2cHJSUlrF+/Hl26dMGQIUOwdetWID09dx3gZs0gbW2NOsHBkBkwAAgNhXp4OFj37oC0tPBYAgEhIOAV3NyOYuPGNwCAhQub49GjOXjy5CHOnTuHEydOFPM3VkHllx3K+ovXCLiK4MiRI6Surk6jR4+muXPnkpmZGfXo0YOys7Pz3f5H5b/jxIkT1LhxYxIIBJSQkEDq6up06dIlsra2pv/++4+ePn1Kmpqawl/8ycnJpKqqSpGRkSLHmTFjBo0YMaLA840YMYKmT58uUvbo2DHykpMjgbp67ugfExOi5cuJYmPz7J+VlUNBQVH0zz9XyMhok7AWICGxkHx8nohsu2HDBurbt++vfiUVGvjwUY4rO1JSUkhdXZ1CQkKEZenp6dS4cWM6ePCgsEwgENCqVauoRo0axBgjS0tLOnr0aLHFMW/ePJo2bZrw/blz50hdXZ2MjIyoTp06pKysTFu2bBF+HhoaShYWFnmOc+3aNbK2ti7wfPXr16fbt28TpaUR7dtH5OhIBFAmQAmtWxMFBBB995zBq1cJtGnTXerSxY+UldcIb/7AUtLX30AeHruoceM/8pxr27Zt1KNHj1/5Oiq8HyUCPnyU48TgypUrMDc3R6NGjYRlVatWFU689nXo5LJly3DgwAEcP34c9evXR0BAAAYMGABZWVm0afP7S3jUrFkTu3btEr5v1aoVXr16hebNm8POzg5z5syBurq68HNdXV1ERUUhMTERSkpKwvK7d+/CyMiowPM1UVSEwowZwK1bQGwsYGSE9JkzUW/lSlzftw9QV0dqahYuXYrE2bO5r8ePY0WOYWKiChcXQ7i5GeOPP/SRmZkBff2/cOvWLeGcROnp6fDy8sLEiRN/9yuqHPLLDmX9xWsEXHkXGBhINjY2ecrXr19P/fv3JyKirKws0tLSosePH4tsc/DgQXJyciqWONLS0sjQ0JAWL15MqamplJaWRkuWLCFDQ0NKTU3Ndx9PT0/q0qULffjwgQQCAV26dIm0tbUpKCgo/5PExxNt3EhkY0MEUAZACW3aEJ07R4nx8dS3bz9ydR1MS5feopYtD1HVqitEfvUrKq6mTp18yds7lJ4/j8v3FMeOHSM1NTUaPnw4zZ49m+rUqUO9evX6pea0tLQ0ioiIoKSkpELvU96ANw1x3O/Jycmhd+/e/fAG+SsyMzNJR0eHzpw5IyyLjY2l2rVr0+nTp4mI6NOnT6Sqqppn39evX5OOjs5vx/DV8+fPqU2bNiQnJ0dycnLUpk0bev78eb7bvn79mm7cuEFDhw4lJSUlUldXp1q1atGRI0dEN8zJIQoMJOrbl0hWNvdWY25OtHw5bV+yhNTVa5C2dluqUqUvycr+K3LjZ2wpWVntor//vkKXL7+hzMzC3czfvHlDixcvpmnTptH58+cLPWJIIBDQkiVLSENDg4yMjEhFRYUmTJhAWVlZhdq/POGJgON+w759+8jAwIA0NTVJWVmZxowZQ+np6b91zCtXrpCmpia5ubnRoEGDSEtLiyZNmiS8gWVnZ5O2tjbdv39fZL/du3dTq1atfuvc+UlKSqLExMR8P3v//j25uLiQhoYGmZmZUfXq1Wnbtm0UHR0tOndQRATRjBlEhoa5txdlZaJhwyjr6nUKuvKGZsy4QjY2u4mxpSI3/+rVvcjD4yTt3fuQPn5MKfZr+5mtW7eShYUFRUREEBFRdHQ0OTs704wZM0o1jtLAEwHHFZG/vz/p6enR9evXiSj3RuHm5iYcJfP+/Xs6dOgQnT179pd/RSYlJdGePXto/fr19OTJ/0e9ZGRk0JEjR6hr165kZGREly9fpqSkJPLx8aFq1arR+fPni+8CC8HBwYGmTJlCGRkZREQUEhJC2tradPPmTaK4OKJNm4iaNcu9pTBG1Lo1fVy9hbasvUHu7nk7eatUWUHOzgdp8eKbFBb2Qazj/evXr5/n+3z+/Dmpq6uXyEgtcfpRIuBPFnNcAdzc3NCtWzd4eHgIy2JiYmBsbIwJEyZgxYoVcHBwwIcPHxAdHY1jx46hfv36RT5fREQEXFxcYGBggNq1a8PHxwdZWVnIzs5GgwYNMHv2bLRq1ao4Lq1QHj58CBcXF0RGRkJSUjK3MCsLvsOGQe/CBVhHRwMZGcgyroVnzTphv2RjHL6WkqeT19Q0t5PXxcUQjo41IC9fpdSu4Wc0NTURHh6OatWqCcuICPLy8vj48SMUFBTEGF3x+tGTxXzUEMcVIDIyEvXq1RMpU1dXh7y8PDZs2IDw8HDo6uoCAPbu3Qt3d3c8ffr0/zfNXzRgwACMHz8ef/75JwBg9erVaN++Pdzc3DB27Njfu5gieP/+PYyMjCApIQFcvw7s3QscOIDOMTGIk6qCo9UbYkl0Ddx83gh4Lg0g9+EuJaUq+OMPA7RubQAXF0MYGamUeuyFYWNjg+PHj2PIkCHCssDAQBgZGUFeXl6MkZWi/KoJZf3Fm4a40uTp6UkLFiwQKXv8+DHJyMjQ0qVL82xfv359unz5cpHO9ebNG9LQ0MjTxOTv7y86BXMpir9xgxZXrUpZX+b7z5KuSjcMW5B7FQ+SwiKRTl4zM29SUupGS5ceLnQnr7jdvHmTNDQ0aOXKlXTv3j3atm0baWtrk6+vr7hDK3bgzxFwXMFu3ryJJUuW4OHDh6hduzYmTZqEyZMnw8HBAVWqVEGHDh3w+PFjTJw4EWZmZtDSyrvcobq6OpKTk4t0/qysLEhLS+dZg7dq1arIysoq0jHfvXuHy5cvQ11dHU5OTpCSKsQ/+6go4OBB0J69UA4LxQQwXHzDsAfdcSTLEkmRuQu9M5aEbl3roXPnumjVygAaGnI4dEgNmzdvxMSJXYsUb2mzsbGBv78/lixZgs2bN6NWrVrYv38/HBwcxB1a6ckvO5T1F68RcFlZWbR161Zq27YttWvXjrZt2/bbHXsXLlwgTU1N8vb2pvDwcNq8eTNVq1aNzp49S+Hh4dSzZ08yMjKiZs2a0cGDB2n79u3k4OAgct7Hjx+TqqrqD0ffFEQgEJClpaXI08U5OTnUtWtXmjdv3i8fb86cOaSqqkru7u5kY2NDRkZGFB4env/Gnz4ReXtTmo0dCRgjAihYQp/GogNVx4wvUzksJiWlSeTsPJcOHbpC2tp5h7E+efKEjI2NfzlWruSBjxriKgqBQEDdunWjZs2akY+PDx0+fJjs7OyoZ8+evzX6pHnz5nTgwAGRMj8/v3wf/CLKHdnTqlUrsre3pw0bNtCcOXOoevXqtHXrVnr37h15eHiQkpISqaqq0rBhwygmJqZQcdy8eZM0NTXJw8ODFi5cSE2bNiU7O7tfftDp9OnTZGJiIrJk5LZt28jMzIwEAgFFRkbS5mXLyL/fAHpb346ymQQRQA+gRf+gNdXC5C+zeW6lMWMC6eTJ55ScnCE8VmZmJmlra9O9e6Krf61du5a6du36S7FypYMnAq7CuHTpEpmamoqM409LSyNjY2O6evVqkY9bpUoVSkkRHcOelZVFjLF819klyr0Z7tu3jzw9PWncuHEUGhpKaWlpVLt2bZo8eTJFR0fTmzdvaPjw4dS4ceMfHud7nz59opUrV9LEiRPpyJEjlJnP9MsF6dWrF23YsEGkTCAQUEMTU1pr156OS2hRGnKneX4BVVoAJ6qH8aSkuIrc3f1o48YwioyM/+k5vL29ycTEhP777z969eoVeXt7k4aGhsgcSgVJTk6moKAgkeGzhfF1OuzWrVtTs2bNaOHChSLJ8v79+xQYGEjx8T+/hqIQCAR0+fJlmjZtGs2fP/+HD+CVNTwRcBXG3LlzacqUKXnKJ06cmKdT91cYGxvTrVu3RMru3r1Lenp6v3Sc3bt3U+vWrUXKBAIBNWrUSPjUcGno0KGDsInp06tPdGXMCrplYE+pkCICKApKtALNqQlGk4X5BqpatSOdPPmAsrIKl6y+OnjwIDVt2pR0dHSoY8eOuZPKFZKXlxepqamRtbU16ejokKOjI0VHRxdq3z///JOsrKzIx8eH/P39qWvXrmRra0svXrwge3t70tfXp+bNm5OKigotX778l67pZwQCAQ0aNIiMjY1p5syZ9Oeff5K6ujrt3bu32M5RUngi4CoMb29v6tmzZ57ybt260aZNm4p83DVr1pCVlRW9fPmSiIhevXpFTZo0yXdk0M9MnTqV5s+fn6d83LhxtGzZsiLH9ysyM7Np6pgVNEKrNZ1TtaFkSBMBFA0FWgs7ai0zlAb0P0EHDjyiz59zp8zo0qUL7dix47fOe/z4cWrevDlpa2tT69at6dKlSz/cNjAwkPT19enp06dElFv7+vvvv8nR0bHA8zx79ow0NDREFtARCATk7OxMderUoZkzZwr7biIjI8nY2JhOnTr1W9f21alTp8jc3JySk5OFZeHh4aSiolIitY/ixBMBV2HExMSQhoYG/ffff0SUewM4duwYaWpqUlxcXJGPKxAIaN68eaSmpkYGBgakpqZGM2fOLHRzzlc7duygdu3a5Tm2jY0NnThxosjxFeTFizjavPoaLbKeTD5SDSkJVYgA+gB52sCaUO/qg0hRri1ZW3eg8eP/yrN/7969afPmzUU+/4EDB6hGjRp09OhRevPmDe3atYu0tLR++BR0z5498zRdZWVlkba2doHNRLt27cr3x8CsWbNITk4uz/DbrVu3kru7+y9eUf6GDh1Kq1atylPetm1b8vHxKZZzlJQfJQI+fJQrd9TU1ODn54d+/fph8uTJICJkZWXh2LFjUFFRKfJxGWP4559/MHHiRLx79w7a2trC9XB/Rbdu3TBv3jzMmjUL48ePR3Z2Nv79919kZGQUy9TRX6WkZOLixTe4cOIRso6dhF30dfTEIyggEx8hj5PKTfHRsR3e1lLBu483kZmWANVbD/D6dQZWrz6BO3dCsGfPHujp6eHly5c4ffo0li1bVqRYiAizZs3Cnj170KJFCwBAv379IC0tjXnz5sHJyQlEhOTkZMjLy0NCQgKfPn2CgYGByHGkpKSgp6eHz58/w9TU9Ifnq1atWr4roj19+hSKiop5hsjq6ekhNjY2z/ZFISUlhczMzDzlGRkZkP5mBbVyJb/sUNZfvEbAEeUOq7x9+zYFBwf/8q/2kpSamkrPnj2j7t27U5UqVUhWVpb69+9PHz9+/K3jCgQCCgv7QIsX36T2LXZQH8l+5AMLSvnS7POBKdIZozZ04q9NFPnss8i+ERERpKGhQefOnSOBQEB//fUXKSsrU7Vq1WjcuHHCYbNFlZKSQlWrVs0zaismJoZUVFRo//79ZGJiQrKysqSlpUULFiyguXPnCqfc/urJkyekpqYm0uySn+zsbDI1NaXVq1cLm4DOnz9P6urqpKamlmeIrIeHB82dO7fI1/etS5cukaGhIX369ElYduXKFdLQ0Mgz2KCsAW8a4riSdf/+ffrjjz+oSpUqJCcnR/369aPPnz+TQCCgK1eu0J9//kkjR44kf3//Qg9z/fgxhfbufUgeHiepdrVl1Bc9yRfmlPalw/eTtDLdaNyZ7q05RFnpPx5ZNHXqVJo0aZJI2dcnagcNGpRnzYNflZOTQ9ra2vTgwQORcn9/f6pZsybVqFGDLl++TAKBgB4/fkxNmjShqVOnUu3atcnDw4NOnTpF3t7epK+vT15eXoU657Nnz6hJkyakra1NpqamZGBgQGfOnKHt27eTjo4OrVy5knx9falXr15kZmZGsfksfVlUM2fOFH537u7upKamRmfPni2245cUngg4rgR9/PiRqlevTl5eXpSenk4xMTE0atQoatq0Kc2YMYMMDAxo4cKFtHTpUjI1NaXRo0fnmwwyM7Pp8uU39PffV8jKahdpYDYNRDc6hdqU8WWoZ4ycBj1p24/iT+Rd1vFHPDw8aOvWrXnK3d3dRR5e+x1Lliwha2trYfv+nTt3yMTEhMzMzPK0nX/t7H3//j3NmzePWrZsST179izSrKoRERF09+5dkQf7rl27Rp6entSuXTtatGjRb/Ud/ey869ato+3bt5fI8UsCTwQcV4IWL15MAwYMECkTCARUs2ZNUlFREWkWSkhIIAMDA7px4wYR5XbyenuHUqdOvqSktJq08Q+NRCcKQC3KQu5DXnFqOvTRcyQJrl8v9M3/W15eXtShQweR5PN1sfqvo6R+l0AgoIULF5KWlhapqKiQnp4ebdy4kXR1dfMsdk9EpK6uLvKwG1fyfpQIeGcxxxWDZ8+eCdfL/YoxBjU1Nejr60NTU1NYLiEhAxsbT/z5ZyDi48MREREHQ8TCHfcxEfdhj1cAgOQaxqCek4BePaDSoAHAWJ7zEhHS0tIgKysLls/nX/Xr1w9eXl4YNGgQhgwZgpiYGMybNw+9evWCoaFhsXwHjDFMnToVEydOREJCAlRUVCApKYljx44hMDAQAwcOFG4bFhYGGRkZkfWQOTHKLzuU9RevEXBlzbp16/JMq5CZmUlqamrUurULhYZ+oEWLbpCT0wGSll5OwFKqg4k0HW0oVEIvt3IOUEZdS6K5c4m+a2vPz65du6hWrVpUtWpV0tXVpZUrV/607yE2Npb++ecfatSoEbVo0YK2bt1aKp3sQUFBpKmpSbt27aIPHz7Q2bNnycTEJM/QUa7kgTcNVU5paWkUHh4uMsKBy9/v3BQTEhKoZs2aNHXqVHr16hVduhRCjRsPIR2d8cTYrC9TNS+hhhhL8/EHPYCa8OYvaNKUaOlSoufPKS4ujl6+fFlgLIcPHyYjIyO6evUqCQQCunfvHjVo0IBWrlxZ5GsoSZcuXaKWLVuSuro6NW7cuFw8hVsRlelEAKANgCcAngGYWtD2PBEUztq1a0lDQ4Pq1KlDKioq1K9fvwKH5RXGw4cPaerUqTRy5Ejy8/Mr88v5xcbG0qtXr/K9uQoEAvL29iYjIyMCQBYWFnT48OFfPkdOjoBOnbpHDRpMIimpvwhYkjtbJxaTPUbSCtjSa0klIoCyAIo2Nydat47o7Vsiyk0kffr0ISUlJdLR0SFDQ8O8C8J/w9ramk6ePClSdu/ePdLR0SlTQ2m5sqXMJgIAkgCeA6gJoAqAuwDq/mwfnggK5uvrS8bGxsJhgQkJCdS7d+88HZq/avfu3aSpqUnTpk2jFStWUKNGjahjx46/vFZvaYiNjaXu3buTkpISVa9enUxMTPLcPNeuXUvm5uZ08+ZNysnJoYCAAKpRowYdO3aswONnZmbTuXMvacSIc6Sj4y1coEUaC6m99DD6T7clJSvm/vIXVKlC76ys6Nbw4RT/7FmeY3Xu3JkGDhwonKLgypUrVL169dw1gfOhqqoqUsu7fv06tW3blgBQgwYNaPv27fT8Sw2D474qy4mgKYCz37yfBmDaz/bhiaBgLVu2pEOHDomUxcXFkbKycpFvDomJiaSqqioyVjwzM5OaNGlC+/bt+51wS0Tr1q1p5MiRlJiYSAKBgAICAkhLS4vu3r1LRLlNQXp6ehQWFiay37Fjx8jOzi7fY6akZJKv71Py8DhJqqprhTd/WfxLg9WH0Q2TPyhTXjH3n5a8PFH37kT79xN9MyfO9yIjI0lDQ4PS0tJEyleuXEkeHh757tOiRQvh/9/bt2+ThoYGTZ8+nfT19WnatGkkJSVFqqqqpKSkRP379//lKay5iqksJ4KuALZ8874fgHX5bDcUQDCAYH19/RL6mioOc3PzPDc4IiIDAwOKiIgo0jFPnDhBzs7Oecq3bt1KvXv3LtIxS8qjR49IR0cnz/TN8+fPpxEjRhARUVJSEsnKyubZ99OnT6SmpiZ8HxeXRrt3PyB3dz+Sk1spvPkrYS4Nlu1Kt/RtKKeqTO4/JzU1Ik9PomPHiFJTCxXr1atX813zwN/fn5ycnPLd59y5c1S9enU6dOgQubm50ciRI4V9FLq6unTo0CHS0tKijx8/Ur9+/ahXr16FiuV7kZGRtGDBApo2bZrwgTCu/PpRIhBdD0888hvzRnkKiDYRUWMiavztUDwuf3Z2dvD19RUpCw0NRVZWVp75XQpLVlYWSUlJecqTkpKKNCdPSXrz5g1q164tMvfL3bt3ce3aNfj6+mL16tUQCATQ0tJCcHCwyL6XL1+GiUkjbNgQBhcXH2hqeqFfv1M4ejQC8qnxGCkdgCuK6xArOQeb03ygFxWMJ/Z2QEAA8OEDsH070KEDUMjvpG7dunj69Cnevn0rUv7ff//lGZL6VatWrbBr1y6sW7cOJ0+exOXLl7Fo0SI8e/YMs2bNQrdu3SAtLY309HR4e3vjzJkzeP/+/S99h4cOHYKVlRXevn0LaWlpDBw4EIMHD/76w4yrSPLLDqX5Am8aKhHPnj2j6tWr099//003btyg7du3U40aNX5rmuGsrCyqUaMG+fn5Ccvev39PRkZGRXoitCR9+PCBVFRUhO3ohw8fJi0tLbKysqKuXbuSo6MjKSsrU82aNUlVVZUOHTpE9++/owEDdpC09HhibKnwl7+hxN+0tpYHRdVqRDlflnAkY2OiiROJrl+n8Hv3SENDg1ILWQPIz7x588jCwoKOHz9O9+7do+nTp5Ouri5FRUUVuK+Liwvt2bOHiIiaNGlCQUFB9ObNG1JVVRXGZGFhQaGhoYWO52sz4NdmNKLcBWQsLCyEs75y5Q+K2jQEIABA/YK2K+oLgBSAFwCM8P/OYvOf7cMTQeG8ePGCRo4cSVZWVtShQwfy9/f/7WPevHmTtLW1ycnJiXr06EGqqqpFWkv3V7x584a2b99OPj4+v3SznTJlCjVq1Eg4RXWfPn1IX1+ftm7dStWrV6fGja3JzW0oGRuPIOAv4Y0fWErm0lNpZ50+9MnQnL4O8yRLS9phaEhBXl5E3zWRNGrUiK5fv17kaxQIBLRnzx5q0aIF1alTh4YNG5bv07j5OXfuHOnq6tKFCxfozz//pKFDh1KLFi1o2rRpRET0/PlzUlNT+6UJ0fz8/PIsrkOU27k+cODAQh+HK1t+JxE0AnAewHYA2gVtX5QXgHYAniJ39NDfBW3PE4F4paWlka+vL+3YsYPevHlToudasGABqaqqUs+ePalVq1akpaVFQUFBhdpXIBDQtm3bqH79+lSlShUaPXo0RUa+Im3tptSjx27S1l79zc1/CVlJjSEfi54UX8NEePNPMDOjIFdXCvDyoqysLOrSpUueOXuysrJIR0dHuMCKOPj4+FCdOnVIRkaGJCQkqEWLFhQSEkI+Pj5kampKK1as+KXjnThxIt8FYpYvX05Dhw4trrC5UlbkRED/v1l3+fJrfRYA2cLuVxIvnggqhytXrpC+vr7I0oWnT58mbW1tysjI+Mmeop48eU7KyjY0dOgZ0tJaK3Lzt5caTmfqdaN4TZ3cfw4SEkQODpSxZAn1ataMzMzMaPTo0WRvb0916tSh3bt3U82aNYW/1rOzs2nWrFnUokWLYr/+XyUQCCgxMZEiIiJo6NChVLduXXJ2di7SYimpqamkqakpssLY58+fydjYmAIDA4szbK4U/SgRFGquIZY7ickTAN4A5gMYwhibRkS7i9w5wQkREQ4fPoxdu3YhJSUF7dq1w4gRI6CgoCDu0EoNEeH69esICgpCtWrVICcnh/nz58PMzAwZGRnC7dq0aYOaNWvi/PnzP13kJTU1C2fOvISv7zP8999zJCR0w6ZN9yEBAVogHP+YxcD8aSB0sjOAh1L4WK8elijLYfLVq4CWFubNmIGs6tVx/+JFSEpKAgDmzJmDw4cPY9SoUWjQoAEsLS3x+vVr6Ojo4PDhwyX+HRWEMQZFRUUoKipi48aNv3UsWVlZ7N27F507d4aTkxPU1dXh5+eHwYMHw9nZuZgi5sqM/LLDty8AQQDeAfAHMA+AK4BaANYC2FTQ/iXxqmg1gkmTJlG9evVo//79dPr0aXJ3dydbW9s848orqszMTHJ3d6datWrRmDFjSEtLi6SlpcnMzIwcHR1JXV1dpIOyTZs25Ovrm+c4sbFptHNnOHXq5EuysiuFv/wlsYj6642n7XJ16INE7iIuaQA9NDEhwY4dFHX/PllYWAg7XImIatWqlWf4bXJyMsnJyVFSUhLFx8dTYGAg3bt3r8S+l7IgLi6Otm3bRqtXry5w+Uiu7MNv9BFYAGA/+OxRQfuXxKsiJYLIyEhSU1MTWTRDIBBQy5Ytafv27eILrBStW7eOnJ2dKSMjgzZv3kwODg60detWMjAwICsrK7p48SJVq1aNMjIy6PHjxyKLhL99m0Tr198hR8e9JCn5/85eKSyiP00nUZh1B8pW+fJ0r5wcxbRsSdfGjaMe7dqRmpoaWVlZkYqKCs2fP19kjLyhoSE9fPhQJM709HSSl5cXWTCd48qTHyUClvtZ0TDGahLRi9+okBRJ48aN6fux3+XV/v37cfTo0TxNC5s2bcKNGzewbdu2Yj9nSkoKtm3bBn9/f6ioqGDgwIFwdHQs9vMUloODA6ZOnYq2bduiQ4cO6Nu3L7p27YoaNWqgXr16ePfuHWJjY+Hg4AB/f3/89dcCSEhY4ujRCNy4ES08ThVkoavKPbRJuoSuVRIgm5YKKCoCbm5Aly5AmzaAnJxw+6ioKLx9+xZmZmZQUlISiWn8+PFISUnBxo0bhdM7r1u3Dn5+fggICCidL4bjihljLISIGn9f/lvrEYgjCVQ0WlpaePEi79f44sULaGlpFfv5UlNT4ezsjGrVqsHDwwPv37+Hp6cnxo8fj7Fjxxb7+QpDIBAI2+GrVq2K1NRUMMYgJSWF5cuX48WLF+jdeyLCw3WgojIXU6fGAbgMAFCsSnDKDsRsiyzUfxkCifgECBQV4ZMlQJO1a6E/eDAgI5PvefX09KCnp5fvZzNmzICzszOcnZ3h4uKCO3fu4OrVqwgMDCyR74DjxIkvTCNmjo6OSElJwZo1azBq1ChISkri2rVr2LZtG4KCgor9fDt37oSmpiaOHTsm/KXr5uaGBg0aoH///lBRUSn2cxbE3d0dK1euhLOzM3r16oXZs2dDICBISNTEli0fsHdvBJKSBuPuXQBIgrqiBKZaJaIr7kH75hlUzUkDIpWBzp2Arl0h0aoVgmfMQPjHj5j7gyRQEDU1Ndy8eRO+vr4IDQ2Fs7MzNm/eDGVl5eK8dI4rE36raUhcKlLTEJC7ulXv3r0RHR0NZWVlxMfHw8vLCx06dCj2c3Xp0gXdunVDz549RcpbtmyJCRMmoG3btsV+zoJkZGSgY8eOePv2AywtO+HUqddISNADoCjcRktVAn83SYN7dih0bweCxccDysp4Urcu/pOVxcTTp4EqVQAA8fHx8PT0RHJyMry9vWFiYlLq18RxZVGJNA1xxaNWrVq4desWnjx5guTkZNSvXx9SUiXzv0ZNTS3PnDZEhLdv34pl2cCUlEycOfMK6uqjERT0FOHhAgBmAAAtNQEGm0RjpNo76NwMADsdCygpAZ06Ad27A61aQf7jRyyoVw89PnxAjRo1cO7cOfTs2ROZmZlwdnaGvb09hg0bhnnz5pX6tXFcecETQRlSu3btQm+bkJCAffv24fnz56hfvz66desGmUI0gwwaNAhdu3aFm5sbTE1NQURYs2YNqlSpAmtr698Jv9BiY9Nw4sQLHD0agbNnI5Geni38zNJcDWOt09EhLQQaF06A3fwIKCjkTuLWowfg4gJUrSrcXk9PDzNnzoSNjQ369euH9evXQ0VFBX379sXq1asRExMDGxsbtGzZEg4ODqVyfSUpPDwcq1atwuPHj2Fubo7x48ejTp064g6LK+d401A59OTJE/zxxx+ws7ND48aNERgYiKioKFy8eBGFmZl18+bNmDJlCszNzfH+/XvIy8vjyJEjMDY2FtkuISEBZ86cQU5ODtq0aQM1NbUix/z2bRL8/J7B1zcCFy++QU7O///eNbGtjuG2AnRIuQ3Vc8eAN29yO3hdXXNv/u3bFziT5927dzF//nzcunULe/bsQbNmzYR9IMuWLcOLFy/g5eVV5PjLgqCgILi7u+Ovv/6CnZ0dLl++jDVr1uDkyZOllsS58u1HTUM8EZRDbdq0Qdu2bUVG+YwZMwY5OTlYv359oY6RlJSEW7duQUVFBY0aNRLeNL/y8/PDwIEDYW9vDykpKVy8eBHr1q1Dnz59Ch1nYOA9HDr0ACEhGQgJ+Swsl5RkcHLSh6edNNxSbkPpPx/g6VNASip3iGfPnrk1AEXFnxw9L19fX2zatAmnT58WKV+zZg3u37+PzZs3/9LxyprmzZtj5MiR6NWrl7Bs69atOHjwIM6dOyfGyLjy4keJQGzzBf3OqyI9UPbs2TN69OhRoRf8SElJIRkZmTxPHT979ox0dHSKJaYPHz6QqqoqBQcHC8sePHhAampqP50RUyAQ0J0772ny5EBSVJwjMpunlNQS6tjxKB1afYGS5y8matw493lGxogcHIg2biT6/Pm34k5ISCBVVVW6f/++sCw5OZnMzc3zLFFZ3uTk5BBjLM9CO4mJiSQjIyOmqLjyBr8z1xBX/B49egQPDw+8ffsWVapUgaysLLZs2QJ7e/uf7ichIQHGGDIzM0X6BNLT00UWYclPTk4OXr9+DVVV1Z8OEz169CjatWsHKysrYVndunXRo0cPHDx4EJMnT/7mmAJcu/YOvr4R8PWNQGRk4pdP5KCsXAWursZo00wJEYsHYvATKdT47ykgEACNGgHLl+c2/ejq/jTuwlJSUoKXlxccHBzQq1cvqKurY+/evXBychLLaKjiJCEhAQ0NDbx8+RKmpqbC8ufPn6NatWpijIyrCMrCCmWVTkZGBtq0aYPBgwcjKioKL1++xKJFi9C5c2d8/Pjxp/vKyMigffv2WLhw4ddpPpCTk4P58+eLNBl87/Dhw6hZsyZatGgBAwMD9OvXL9/VxgAgLS0tz5O2QO6NNi0tDRkZ2Th9+gWGDj0HHZ0NaNHiAFauDEFkZCKqVZODtHQwfA4449NuY+yhfegzoQ3mRD5DztOnuPHHH4i/dg0ICQH++qvYksBXPXv2REhICHR1dZGdnY0dO3Zg06ZNeZq+yqMRI0Zg9OjRiIuLAwDExMRg3LhxGD58uJgj48q9/KoJZf1V3puGDh8+nO/avwMGDKDly5cXuP+7d+/I0tKSbGxsaOTIkVSnTh1ydnam5OTkfLe/evUqaWtr07Vr14iIKD4+ngYMGEBdu3bNd/snT54I17v96vXrD6Ss3JyaNFlLSkqrRZp9atbcRBMnXqCrV6Po8/kLtKZKFRJUr04EULaSEu2Uk6PpDg6kpqpKffv2pRo1atCLFy8K8U1x38rMzKSRI0eSioqKcI6kcePGUXZ2trhD48oJlMRcQ+JS3juL161bhwcPHsDb21ukfOHChYiNjcXSpUsLPEZOTg7OnTsnHD767SiZ7/Xp0wdNmzbF6NGjhWVpaWmoUaMGwsLC8p1mYc6cOdi8eR9sbDxx9242XryQAvD/picjo6rw8GiEzp1NUE8bYPv2ATt3AmFhyGIMMU2aoPrEiei4aROc27ZFQkICXrx4gR07dmD+/Pl48OAB9u/fX8hvjPvWp0+f8PLlSxgbG4vl2Q+u/OIPlJUhdnZ2WLp0KdLT04Xt/AKBAMeOHcOUKVMKdQxJSclCt3u/efMGgwcPFimTlZWFoaEh3r59K5IIoqKS4OcXgUuX6uD9+yHw9QW+JoCmTbXRubMJ9PTi8defvTFCZwGqzV4GnDgBZGcDjRsDa9fiavXq6D5yJMY8fIiTAQHQMTLCsWPHcOXKFQDAsGHDhENVs7Ky8O7dO2hoaEBeXr5Q11PZaWpqFmqYMMcVFk8EpezrL2N9fX20bNkS06ZNg4yMDNauXQsZGRm4ubkV+zltbW3x33//wcnJSVj2+vVrPH/+HHXr1sXTp7E4ejS3s/fWrffCbaSkJNCwoSwSE6/hyhVvaGsrAI8eAdsOwzUtDYrDhgHVqgHjxgGenoC5OQDAEUBg7dpYt24dAEBaWhq3b9+G7pf+gPj4eMjLy2Pz5s2YNWsWJCQkkJycDE9PTyxZsgRVvkwVwXFc6eBNQ6Xo8OHDGDZsGJo2bYrs7GwEBQXByMgIysrK6NSpE0aNGgW5b6ZJLi5RUVGwtbWFp6cnunfvjhcvXmDChJUwNHTFhw+aePgwRritrKwU2rQxgru7Cdq3rwk/v/24eu4ctrRuDWzZAly7BkhJ4ZmZGfz19DDi2DHgJ6OVhg8fjqysLGzevBkSEhLIzs5Gnz59kJGRgfv378PX1xf16tXDhw8fMHDgQJiammLlypXF/h1wHMcfKBO7qKgo1K9fH+fPn0f9+vUBACEhIWjVqhUeP35cIlNOf+v585f46681uHIlHqmpRsjI+H/CUVGpCjc3Y3TubAIXF0PIyX25sd+5g4SlSyFx8CAUiYA6dYBBgyDo0wctunXDmDFj0KpVKxw6dAifPn2Co6Mj7O3tRfoqEhMT0blzZ7x69Qq2trYICgqCpaUlkpKSMHbsWLi7uwu3jY6OhpmZGd69e/fDhJiUlISLFy+iSpUqcHJy4rUHjvsFvI9AzA4dOgR3d3dhEgAAKysruLq6wsfHByNHjiyR896+HY3Nm+/Dzy8Cnz7pAshtntHWlkenTrXQubMJHB1rQFo6dz0AJCcDm7YDmzYBISFQlpHBrdq14Z2djdYzZkBRSQkbhgyBlJQUqlWrhtq1a+OPP/6Avr4+Bg4ciIYNG2Lv3r3CSfOUlJQQEBCA4OBgPHnyBBMnTkTDhg1hbGwMCwsLkVi1tbUhKyuLuLi4fBPBvn37MHr0aFhZWSE1NRUDBgzAoUOH0KxZsxL57jiusuCJoJSkpqbm+xCXiooKUlJSivVc2dkC7N37EOvWhSI4+IOw3NhYBe7uJujc2QS2ttqQkPhmlFF4OODtDezeDSQlAZaWwLp1QJ8+sFZWxouDB7F3716kp6fD1dUVgwYNQr169bB9+3a0b98eADB37lw4Oztj9+7dGDBggPDQjDFYW1uLzIdjbW2NkydPijwcFRISIkww34uIiMDYsWNx+fJlYQI5e/Ys3N3d8fLlS97RzHG/I78xpWX9VR6fIwgJCSE9PT3hWrtERDExMVS9enUKDw8vtvPEx6eTi8th4Rh/NbW1NHHiBbp372PeaSwyMogOHCBq0YIIIEHVqhTl7EyLOnakkSNG0KVLl354ntu3b1PdunXzlB86dIjat29fYJz37t0jTU1NWrZsGT18+JAOHDhABgYGP1yneebMmfTXX3/lKW/bti0dOHCgwPNxHMenmBC7Ro0aoWvXrrC2tsbQoUMhEAiwceNG9O/fH+ZfRtv8rmfP4uDm5ovHj2OhoSGLxYtboFevOpCV/a4z98MHYONGYMMGIDoaMDICLV6MCQ8e4GxwMIa4ucEgMxP9+/eHh4cH5syZk+/5KJ/+pfzK8mNpaYnAwEAsWrQIGzduhIGBAdavXy+sXXwvKSkp334UTU1NJCYm5rMHx3GFll92KOuv8lgjIMqdlC0wMJBGjhxJo0aNoosXLxZ6srmCnD//ilRV1xKwlCwsttOLF3F5NwoJIerXj6hKFSKAqE0bohMniLKzKSgoiIyNjSkpKUm4+adPn0hTU5MiIiLyHCo7O5uMjIzo+PHjwrKHDx+Srq4u2dvb04YNG374pHNERAT5+vr+Uk3ozJkzZG5uTunp6cKyjx8/krq6Or18+bLQx+G4ygw/qBGI/aZelFd5TQQlZcOGMJKSWk7AUnJzO0qJiRn//zA7m+joUaLmzXP/dysoEI0eTfT4scgxpk+fTjNmzMhz7CFDhtCaNWvyPe/Vq1dJU1OTunfvTt26dSMJCQmqU6cObdq0iVxdXalevXoUGxsr3D4jI4P69u1LWlpa5ObmRrq6utS+fXuR5PMjOTk51KNHD7KysqINGzbQihUrqGbNmjR79uxCfkscx/0oEfBJ58qx7GwBxowJxPDh/sjOFmDyZGv4+naEomIVICUFWL8eqF0bcHfPXexlxQogKgpYuza3/Bvy8vKIj4/Pc464uDgoKCjke347Ozs8ffoUzs7OCAwMxLJly/Dw4UMMGTIEx48fR8OGDUWeCVi4cCFiYmIQGRmJ48ePIzIyEmpqapg0aVKB1yohIYG9e/di2rRpuHbtGh49eoQtW7Zg1qxZv/alcRyXV37Zoay/eI2AKDY2jVq1OkTAUqpSZQXt2PFlDv5Pn4hmziRSU8utAdjaEh0+TJSV9dPjvXjxgtTV1UXm8g8KCiI1NTWKi4v76b5Pnz4lfX39PM1cQUFB9O3/K0NDQ7p7967INtHR0aSgoMAnTuO4UgBeI/g1z549w/jx49G+fXtMmTIFr1+/FndIQk+fxqJJk73w938FTU1ZnD/fHf2dlIAxYwB9fWDuXKB5cyAoCLh+HejaNXf1r58wMjLC2rVr0bx5c7Rv3x6tWrVCx44dsW/fvp+uXQAAcnJySE5ORlZWlkj597WJxMTEPHPkqKmpISMjA9nZ2agMkpKSMGbMGKirq0NOTg7dunXDixcvxB0WV8nxRJCPmzdvws7ODvLy8hg+fDhycnJgbW2NBw8eiDs0BAa+gq3tXjx9God69TQRerAJ7LfOAIyNc58D6NkTePgQ8PMD7O2BX5iHv1evXoiMjMTAgQMxevRovH79Gi4uLgXup6uri4YNG2Lx4sW5HU/IvenPmzcPHh4ewu1at26NHTt2iOy7d+9e2Nvbo+o3C9JXVESEzp07Iz4+HqGhoXj79i0aNmwIBwcH4RoDHCcW+VUTyvqrpJuGWrRoQbt27RIpW7VqFXXq1KlEz1uQ9evvkKTkMgKW0qg/1lJm955EEhJEMjJEf/5J9Pq12GJ78+YN1a9fnywtLalr166krq5Oo0aNopycHOE2ERERpKOjQ0OGDKH9+/fT+PHjSVNTU2RJzIrsxo0bZGxsnKcZrFevXrRq1SoxRcVVJiiL6xEwxroBmA3ADIANERVqAqGSnGsoOzsbMjIySEtLE1n6MSYmBkZGRmIZs56VlYOxY8/D2/suTPERB+uGov6jQDBZWWDUKGDChNxZQMWMiBAUFIS3b9/C1tYWRkZGebb58OEDNm/ejHv37sHExATDhg2Dvr6+GKItfTt27MD58+exa9cukXJvb2+EhYVh48aNYoqMqyzK6lxD4QDcAZSZfwGSkpJQUFDA+/fvUaNGDWF5VFRUqS0C8uTJE+zcuRNxcXGwtXXE7t3Ai/N3sVMiAH0pBBKvZIHJk3MTQBmal54xhubNm/90m2rVquGff/4ppYjKljp16mDBggUQCASQkPh/q+zVq1fRuHGef5scV2rE2kdARI+I6Ik4Y/geYwyDBg3CuHHjkJaWBiC3g2/ixIl5FncpCQcPHkTz5s0hEAigplYHM4fdQufza/AES9BH8i4uNaiPAQ4OWKyqilhJyRKPhys+tra20NPTw6BBg/D27VskJiZiyZIluHjxIvr37y/u8LhKrNx0FjPGhjLGghljwZ8+fSrRc/3777+oWrUq9PX14ezsDAMDAxgaGhZ69bCiSk1NxahRo3Du3Dm0btoXisvP4GHmOgzHdVyrY4GGigq46OaGdp6eePjwIaytrREdHS1yjOfPn2P06NFo1qwZPDw8UN6m667IGGPw8/ODnJwc6tatC01NTdy4cQMXL16EqqqquMPjKrP8Og6K8wUgALlNQN+/On6zzUUAjQt7zNJ6juDly5fk7+9Pb968KZXzBQQEkH2TphTQ8x+Kzl0BgIJ07ejQ/MWkoKBAZ8+eFdl+3LhxNHbsWOH78PBw0tLSon/++YcuXbpEK1euJC0tLTp9+nSpxM/9muKaXoTjCgtleYqJspoIiio+Pp7mzZtHzZo1o7Zt29LBgwcL9Y8+bOVqui+Z+yBYEAzI23MD5eQI6N9//yUZGZk8xwgNDSUzMzPh+27dutHy5ctFtjl16hRZWFjwmw7HcfyBspIQFBQER0dHSEtLw8DAAEuWLEFSUhIcHR3x6NEjzJ49G/3798f8+fPx999///hAr18jo1MX1B8/Fgo5hN6SffFqzykM3z4MsbEx2LZtGyQkJJCamiqy2/v370Ue9rpy5Qq6desmsk2bNm0QGRmJhISE4rx0juMqkvyyQ2m9AHQGEAUgA8AHAGcLs19ZqBGEhoaShoYG7d27l1JTU+nu3bvUrFkzat26Nbm5uYn8Av/8+TOpqqpSVFSU6EEyMogWLKAcWTlKY9I0A61JT30paWpaUYsWLahnz56kqqpKPXv2pEaNGpGHh4dwDHpsbCxZW1vT5s2bhYerX78+Xbx4UeQUb9++JWVlZcrIyCCO4yo3lOWmoV99lYVE0LdvX1qxYoVIWXR0NElLS5O3t3ee7d3c3OjIkSP/LwgKIjI3JwLomFQ90sd0atRoF715k0gZGRl0/PhxWrRoEdWoUYPs7e2pW7duJC0tTQoKCtS6dWtSVVWlv/76SyTheHt7k5WVFb17946IiBITE6lz584i/Qgcx1VeP0oEvGmoiB49egR7e3uRsurVq0NRURFhYWEi5USE58+f5y7BmJgIDB8ONGuGxHcx6MAGomN2P9h0tcXlyz2gp6eIKlWqwNXVFYcPH8a0adMQFBSEQ4cOISYmBvr6+rCwsEB4eDiWL18uslD8sGHD0LZtW5iZmaFRo0YwMDCAsrIyFi1aVBpfCcdx5VV+2aGsv8pCjaBPnz55agTv378nBQUF0tDQoGvXrhERUVZWFo0fP560tbXJd/hwytbRIYGEBJ21cCc5/EvAUpo5M4hyckQ7cx8/fkx6enoiUzQQER0+fJhcXFx+GltcXBzdvn2b3r9/XwxXynFcRQG+VGXxmjBhAlxcXKCtrQ13d3c8ePAAvXv3Rq1atWBiYoLOnTtDVVUVUVFRkEpPh5+RERw2bMBjCSnM1h+Hg+HakJGRwoEdbdCjR508x09PT4e8vLzIE6gAoKioiPT09J/GpqKiUugnVQUCAY4fP45Tp05BTk4Offr0EVlknuO4io83DRVRw4YN4ePjAy8vL8jIyKBp06ZITU1F//79YWBggOzsbLi4uKBF1ar4rKcHh2fP8GnQn3DVXoqDkdqoVk0Wly/3yDcJAICFhQXS09Nx/vx5YZlAIIC3tzdcXV2L5RoEAgF69uyJuXPnwtLSEhoaGujUqRPWrFlTLMfnOK584DWC39CiRQtcvnwZXl5eOHbsGE6dOgXJL9M+dHN3xxkHBxzPzoakggKuL9oPl/kfkJSUCRWVZEybpgFra+0fHltSUhKbNm1Cjx490Lt3b9SsWRNHjhyBQCDAyJEjiyX+kydPIiIiAjdu3BBOA+3h4YH69eujZ8+e+S4Wz3FcxcNrBMXg5MmTGDp0qDAJ4ONH2MyciZlZWbhVsybWDt4O+6lvkJSUie7da8PB4SFUVQv+6lu3bo2QkBCoq6vj6dOnGDlyJM6fPw85Oblii9vT01NkLYCv02oEBAQUyzk4jiv7eI2gGMjKyiIpKSn3zZUrQM+eoNhYTFJVh9dbe6TNCAEAzJ5th27dVGBv748tW7wKdWx9fX3MnDmzROL+0TrF8fHxkJeXL5FzchxX9vAaQTHo27cvli1bhpQVKwBnZ0BODgfGToNXuifS0i0BZMHVNQ7R0bvQvHlzrF27FhoaGuIOG3379sXGjRvx8uVLYdmZM2fw4MGDQq1MxnFcxcBrBMWgY7t20Jo7F/ITJiBURwdj5QxxbVkWcnKqQ0dHAStWWODZs0uQkVFDWFiYyDoH4tSwYUP8888/aNiwIRwdHREfH4/Hjx/jyJEjkJGREXd4HMeVErGuUFZUJblCWX5evXqFdevW4f79+zA1NcWoUaNQu3bt3A8TEoAuXYDAQMQPGYK5so2wYXMq0tIEsLauDj+/TtDRUfj5CcTs8+fPCAwMhJycHFq1asWTAMdVUD9aoYw3DRXgwYMHsLGxAWMMY8aMgaqqKpo1a4Zr164B0dGAgwNw+TJo+3ZsNhmMVWuTkZYmQM+edXDpUo8ynwQAQENDAz169ICbmxtPAhxXCfGmoQL8888/mD59OsaOHQsAaNeuHUxNTbF2zBjYxcYCHz8i8+gxDPUBdu68DACYN88ef//dRGT6B47juLKKJ4ICXLhwAZs3bxYp6163LlqFhIA0NBB35BQ6zHuLq1ffQk5OCrt2tUOXLqZiipbjOO7X8URQADU1Nbx58+b/o3wePoREq1bIZgyPN/uh7bAHePUqEXp6ijh+vBMaNqwm3oA5juN+Ee8jKMCQIUMwceJEJCYmAo8fg5yckJicjPlOQ2DdNxivXiXC1lYbt2714UmA47hyidcICjBp0iS8efMGLWrUQEB6OnKysjC8tgeOXTABURb69DHDli0ukJHhXyXHceUTrxEUQEpKCl7//otgLS0oV6mKhX8sg99jCxAB//7bDLt3t+NJgOO4co3fwQqSkQG4u0Py9WuMMpkM7wAB5OWlsWdPO3TqZCLu6DiO434bTwQ/QwQMGQJcvIixagPg/UAZNWoo4r//OqN+fT4zJ8dxFQNPBD+zahWwezfmSLfF2ti6aNpUB76+HVGtGp+QjeO4ioP3EfwA3b6NnEmT4QtzzM5ygodHXVy40L3MJoEnT57Az88Pjx8/FncoHMeVMzwR5CPtQww+OHfE2xwFDEZ3LFrUAjt2tEXVqmWvApWWloauXbvC0dER27Ztg7OzM9zd3ZGWlibu0DiOKyd4IvhO9LskXKnrCo3kDxgo44Htx3pjyhTbMjtdxOzZs0FEiIyMxPHjxxEZGQkpKSnMmDFD3KFxHFdO8NlHv3HnzgdsbzUda2O3YYlKR7S5tBn16mkW+3mKk5aWFq5fvw5jY2NhWWRkJKysrBATEyPGyDiOK2t+NPto2WvrKGXZ2dkICAjAf/9FwmdrDO5mHMJDBWN4PtwFLW0lcYdXoMTERGhqiiYrTU1NJCYmgojKbE2G47iyo1I3Db148QJ165pj8OAD8PJKxtSMs9BCMmqeLh9JAMhd13j79u0iZdu3b4eLiwtPAhzHFUqlrhH06zcQ8vJDEBEBWCIaYyWu4biGFj49eoAhzezEHV6hLFq0CM7Oznj69KlwnYTDhw/zxec5jiu0SlsjuH37CW7dskJYGKAgL4UL5lcgoaIMuVWrsHfvXnGHV2h169ZFaGgoNDU14efnBzU1Ndy5cwcWFhbiDo3juHKiUtYIQkLew9XVH9nZ2jA0VMKlURJQn3Qb2LgRMrq65W7opba2NmbPni3uMDiOK6cqXY3g0KHHaN78AD5+TIesbDQW/FsN+vu8gNq1QQMHwsvLC66uruIOk+M4rtSINREwxpYyxh4zxu4xxnwZYyoldS4iwuzZV9GjxwmkpWVj0CBLHDvWHgdHeAChoTjfsCFaurjgxYsXGDduXEmFwXEcV+aIu0bgD8CCiOoBeApgWkmd6PXrj/D2vgnGgMmT62Dz5tZo1coZ+xs3Roq8PPwUFeHp6YkrV65AUVGxpMLgOI4rc8TaR0BE5755ewNA15I4T2BgIHr06IHGjdtBSkoLu3YtR05OHywdMACy588Dc+ZgzcyZJXFqjuO4Mq/MPFnMGPsPwEEi2vODz4cCGAoA+vr6Vq9evSrUcdPT02FgYIBDhw7BwcEBABAfH48mTZogwNAQepcuAa9fA5pl+wlijuO43/WjJ4tLvGmIMRbAGAvP59Xxm23+BpAN4IfjNoloExE1JqLG3z9J+zMXL15E7dq1hUkAAFRUVDCxXz9U8/cHPD15EuA4rlIr8aYhImr5s88ZY/0BuAL4g0qgepKTkwMpqbyXaXnrFqQFAmD8+OI+JcdxXLki7lFDbQBMAdCBiFJL4hxOTk64d+8eQkJChGWpqamQCQhArKkpYGpaEqflOI4rN8T9QNk6AFUB+H+ZF+cGEQ0vzhPIyclhy5YtaN26Nbp27QpNTU2c3bsXN1NTgV69ivNUHMdx5ZJYawREVIuIahBRgy+vYk0CX3Xq1Al3795FrVq1wBjDHg8PSACQaNeuJE7HcRxXroi7RlBq9PT0MGnSpNw3ffvmdhA3ztN5znEcV+lUmkQgJBAAZ88CbdoAEr9eIUpPT8ehQ4cQHBwMQ0ND9OvXL896ABzHceWJuJ8sLn3BwcDnz0ARmoViY2Nha2uLPXv2wMjICPfv34elpSVCQ0NLIFCO47jSUflqBKdOgSQkMOfaNbz294eTkxO6d++OqlWrFrjrggULYGtri40bNwoXfdmxYwdGjhyJ69evl3TkHMdxJaLS1Qhi9+5FiIQEspSUYGtri23btqFVq1aFmnr6+PHjGD16tMjKX3379sWjR4/w6dOnkgyb4ziuxFSqRJARFQWVZ8+gPXgw/v33XwwbNgyBgYFQVFTEli1bCty/atWqSE0VfdwhMzMTOTk5kJaWLqmwOY7jSlSlSgSvNm2CBADdQYOEZRISEhgyZAhOnTpV4P69evXCvHnzkJWVJSxbunQpHBwcoKKiUgIRcxzHlbxK1UegERqKz5KSUG/YEN8u6x4XFwcFBYUC958wYQKCg4NhYmKCVq1a4e7du0hNTcWZM2dKLmiO47gSVqlqBKo+PhhsbIzNW7cKyz5//owlS5agX79+Be5ftWpVHD16FD4+PrCyssLcuXNx9+5d6OnplWTYHMdxJarMTEP9Kxo3bkzBwcFF2vfx48dwdXWFqqoqDAwMcP78eYwaNQpz584V6QTmOI6raH40DXWlahoCgDp16uDJkye4cOECPn/+jFWrVvFf9BzHVWqVLhEAgKSkJFq2/Ons2BzHcZVGpeoj4DiO4/LiiYDjOK6Sq5RNQz/y+fNn7Nq1C5GRkWjUqBF69OgBWVlZcYfFcRxXoniN4IuwsDBYWFjg3r17MDIywv79+2FjY4OYmBhxh8ZxHFeiKt3w0R+xt7fHkCFD4OnpCQAgIowYMQJycnJYsWJFsZ6L4zhOHH40fJTXCADExMQgPDwcffv2FZYxxjB69GgcP35cjJFxHMeVPJ4IAEhJSUEgECAzM1OkPCUlBTIyMmKKiuM4rnTwRABAWVkZTk5OWLx4sbAsKysL8+bNQy++wD3HcRUcTwRfeHt74+jRo7C2tsbgwYNhamoKKSkpTJw4UdyhcRzHlSg+fPQLXV1dhIWFISAgAK9evcLw4cPRmC9uz3FcJcATwTckJSXh4uIi7jA4juNKFW8a4jiOq+R4IuA4jqvkeCLgOI6r5Hgi4DiOq+R4IuA4jqvkyuVcQ4yxTwBe/cIuGgA+l1A4ZRm/7sqFX3fl86vXbkBEmt8XlstE8KsYY8H5TbRU0fHrrlz4dVc+xXXtvGmI4ziukuOJgOM4rpKrLIlgk7gDEBN+3ZULv+7Kp1iuvVL0EXAcx3E/VllqBBzHcdwP8ETAcRxXyVX4RMAYa8MYe8IYe8YYmyrueEoDY6wGY+wCY+wRY+wBY2ysuGMqTYwxScZYKGPshLhjKS2MMRXGmA9j7PGX/+9NxR1TaWCMjf/ydzycMbafMVYhlxRkjG1jjH1kjIV/U6bGGPNnjEV8+a9qUY9foRMBY0wSwHoAbQHUBdCLMVZXvFGVimwAE4jIDEATAKMqyXV/NRbAI3EHUcpWAzhDRHUA1EcluH7GmC6AMQAaE5EFAEkAPcUbVYnZAaDNd2VTAQQSkQmAwC/vi6RCJwIANgCeEdELIsoEcABARzHHVOKIKJqI7nz5cxJybwq64o2qdDDG9AC0B7BF3LGUFsaYEoAWALYCABFlElG8WIMqPVIAZBljUgDkALwTczwlgoguA4j9rrgjgJ1f/rwTQKeiHr+iJwJdAG++eR+FSnJD/IoxZgigIYCbYg6ltKwCMBmAQMxxlKaaAD4B2P6lSWwLY0xe3EGVNCJ6C2AZgNcAogEkENE58UZVqqoRUTSQ++MPgFZRD1TREwHLp6zSjJdljCkAOAJgHBElijueksYYcwXwkYhCxB1LKZMC0AiANxE1BJCC32gmKC++tIl3BGAEQAeAPGOsr3ijKp8qeiKIAlDjm/d6qKBVx+8xxqSRmwT2EtFRccdTSuwBdGCMRSK3GdCZMbZHvCGViigAUUT0tdbng9zEUNG1BPCSiD4RURaAowDsxBxTafrAGNMGgC///VjUA1X0RHAbgAljzIgxVgW5HUnHxRxTiWOMMeS2Fz8iohXijqe0ENE0ItIjIkPk/r8+T0QV/hciEb0H8IYxVvtL0R8AHooxpNLyGkATxpjcl7/zf6ASdJJ/4ziA/l/+3B/AsaIeqEIvXk9E2Yyx0QDOIndEwTYieiDmsEqDPYB+AO4zxsK+lE0nolPiC4krYX8C2PvlB88LAAPEHE+JI6KbjDEfAHeQO1IuFBV0ugnG2H4AjgA0GGNRAGYBWATgEGNsEHKTYrciH59PMcFxHFe5VfSmIY7jOK4APBFwHMdVcjwRcBzHVXI8EXAcx1VyPBFwHMdVcjwRcBzHVXI8EXAcx1VyPBFwXDH4sv5Dqy9/ns8YWyPumDiusCr0k8UcV4pmAZjLGNNC7myvHcQcD8cVGn+ymOOKCWPsEgAFAI5f1oHguHKBNw1xXDFgjFkC0AaQwZMAV97wRMBxv+nLFMB7kTs3fgpjzEXMIXHcL+GJgON+A2NMDrnz4E8gokcA5gGYLdagOO4X8T4CjuO4So7XCDiO4yo5ngg4juMqOZ4IOI7jKjmeCDiO4yo5ngg4juMqOZ4IOI7jKjmeCDiO4yq5/wHsb9M6HBT7IAAAAABJRU5ErkJggg==\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"n_knots = 9\n",
"components = ['h(x,{},3)'.format(x) for x in np.linspace(0,10,n_knots)]\n",
"formula = ' + '.join(components)\n",
"final_formula = 'y~x + np.power(x,2) + np.power(x,3) + ' + formula\n",
"\n",
"fitted_spline_model = sm.ols(final_formula,data={'x':x,'y':y}).fit()\n",
"\n",
"plt.scatter(x,y,facecolors='none', edgecolors='black')\n",
"plt.title(\"9 knots\")\n",
"plt.xlabel(\"$x$\")\n",
"plt.ylabel(\"$y$\")\n",
"plt.plot(x, fitted_spline_model.predict(),color=\"darkblue\", label=\"Cubic Spline with 9 knots\")\n",
"plt.plot(x, norm.ppf(x/10), color=\"red\", label=\"Truth\")\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Even more knots. As with the linear splines, this looks like it is overfitting a lot."
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"n_knots = 25\n",
"components = ['h(x,{},3)'.format(x) for x in np.linspace(0,10,n_knots)]\n",
"formula = ' + '.join(components)\n",
"final_formula = 'y~x + np.power(x,2) + np.power(x,3) + ' + formula\n",
"\n",
"fitted_spline_model = sm.ols(final_formula,data={'x':x,'y':y}).fit()\n",
"\n",
"plt.scatter(x,y,facecolors='none', edgecolors='black')\n",
"plt.title(\"25 knots\")\n",
"plt.xlabel(\"$x$\")\n",
"plt.ylabel(\"$y$\")\n",
"plt.plot(x, fitted_spline_model.predict(),color=\"darkblue\", label=\"Cubic Spline with 25 knots\")\n",
"plt.plot(x, norm.ppf(x/10), color=\"red\", label=\"Truth\")\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"It turns out that the *number* of knots matters far more than *where* they are placed. You can play with the code above to verify if you wish."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Smoothing splines\n",
"Smoothing splines, as described in class, minimize the sum of squared errors subject to a penalty that depends on the wiggliness of the function. The resulting solution is a cubic spline with knots at every data value that is regularized according to a smoothing parameter.\n",
"\n",
"We use the csaps library to implement smoothing splines. The smoothing parameter takes on values between 0 and 1, and is the weight attached to the error sum of squares of the weighted average between the error sum of squares and the wiggliness penalty. A smoothing parameter of 0 correspondends to a least-squares fit, and a parameter of 1 corresponds to connecting-the-dots."
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"from csaps import csaps"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Read in csaps to carry out smoothing splines."
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"ax = diab_sort.plot.scatter(x='age',y='y',c='grey',title=\"Diabetes data\")\n",
"ax.plot(diab_sort['age'], b_spline_model(diab_sort['age']), label=\"B-spline, knots at quartiles\")\n",
"plt.legend()\n",
"plt.show()\n",
"\n",
"ax = diab_sort.plot.scatter(x='age',y='y',c='grey',title=\"Diabetes data\")\n",
"ax.plot(diab_sort['age'], natural_spline_model(diab_sort['age']), label=\"Natural Spline, knots at quartiles\")\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## GAMs\n",
"Generalized Aditive Models essentially provide spline-like fits when there are multiple input variables. We use the PyGam library, which relies on B-splines (really penalized B-splines, a.k.a. P-splines) as the smoother of choice.\n",
"\n",
"Here we work with Kyphosis data, on 81 children who received a corrective spinal surgery. Each row records the child's age, the number of vertebrae operated on, the first vertebrae involved in the operation, and whether the operation was a success or experienced complications."
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
Age
\n",
"
Number
\n",
"
Start
\n",
"
outcome
\n",
"
\n",
" \n",
" \n",
"
\n",
"
count
\n",
"
64.000000
\n",
"
64.000000
\n",
"
64.000000
\n",
"
64.000000
\n",
"
\n",
"
\n",
"
mean
\n",
"
77.109375
\n",
"
4.140625
\n",
"
11.281250
\n",
"
0.203125
\n",
"
\n",
"
\n",
"
std
\n",
"
58.120869
\n",
"
1.698432
\n",
"
4.926342
\n",
"
0.405505
\n",
"
\n",
"
\n",
"
min
\n",
"
1.000000
\n",
"
2.000000
\n",
"
1.000000
\n",
"
0.000000
\n",
"
\n",
"
\n",
"
25%
\n",
"
19.250000
\n",
"
3.000000
\n",
"
8.750000
\n",
"
0.000000
\n",
"
\n",
"
\n",
"
50%
\n",
"
75.500000
\n",
"
4.000000
\n",
"
13.000000
\n",
"
0.000000
\n",
"
\n",
"
\n",
"
75%
\n",
"
128.500000
\n",
"
5.000000
\n",
"
16.000000
\n",
"
0.000000
\n",
"
\n",
"
\n",
"
max
\n",
"
206.000000
\n",
"
10.000000
\n",
"
17.000000
\n",
"
1.000000
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Age Number Start outcome\n",
"count 64.000000 64.000000 64.000000 64.000000\n",
"mean 77.109375 4.140625 11.281250 0.203125\n",
"std 58.120869 1.698432 4.926342 0.405505\n",
"min 1.000000 2.000000 1.000000 0.000000\n",
"25% 19.250000 3.000000 8.750000 0.000000\n",
"50% 75.500000 4.000000 13.000000 0.000000\n",
"75% 128.500000 5.000000 16.000000 0.000000\n",
"max 206.000000 10.000000 17.000000 1.000000"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.model_selection import train_test_split\n",
"\n",
"kyphosis = pd.read_csv(\"data/kyphosis.csv\")\n",
"kyphosis[\"outcome\"] = 1*(kyphosis[\"Kyphosis\"] == \"present\")\n",
"\n",
"kyph_train, kyph_test = train_test_split(kyphosis, test_size=.2, stratify=kyphosis['outcome'])\n",
"\n",
"kyph_train.describe()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Using pygam is a lot like using the formula interface for statsmodels, but with raw code instead of with strings. Instead of `'s(Age)+s(Number)+s(Start)'` we have `s(0)+s(1)+s(2)` (the corresponding column indices). `s` is for 'smooth'. Each smooth accepts a `lam` parameter specifying the degree of smoothing. As before, larger lambdas mean smoother curves"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [],
"source": [
"from pygam import LogisticGAM, s\n",
"\n",
"X = kyph_train[[\"Age\",\"Number\",\"Start\"]]\n",
"y = kyph_train[\"outcome\"]\n",
"kyph_gam = LogisticGAM(s(0)+s(1, lam=0.5)+s(2)).fit(X,y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Correct classification rate is pretty good!"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.921875"
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"kyph_gam.accuracy(X,y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Summary of GAM fit on training data:"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"LogisticGAM \n",
"=============================================== ==========================================================\n",
"Distribution: BinomialDist Effective DoF: 13.6787\n",
"Link Function: LogitLink Log Likelihood: -12.3667\n",
"Number of Samples: 64 AIC: 52.0909\n",
" AICc: 61.6165\n",
" UBRE: 2.9849\n",
" Scale: 1.0\n",
" Pseudo R-Squared: 0.6171\n",
"==========================================================================================================\n",
"Feature Function Lambda Rank EDoF P > x Sig. Code \n",
"================================= ==================== ============ ============ ============ ============\n",
"s(0) [0.6] 20 8.1 2.46e-01 \n",
"s(1) [0.5] 20 4.3 1.59e-01 \n",
"s(2) [0.6] 20 1.2 6.99e-02 . \n",
"intercept 1 0.0 1.86e-02 * \n",
"==========================================================================================================\n",
"Significance codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1\n",
"\n",
"WARNING: Fitting splines and a linear function to a feature introduces a model identifiability problem\n",
" which can cause p-values to appear significant when they are not.\n",
"\n",
"WARNING: p-values calculated in this manner behave correctly for un-penalized models or models with\n",
" known smoothing parameters, but when smoothing parameters have been estimated, the p-values\n",
" are typically lower than they should be, meaning that the tests reject the null too readily.\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/chris/anaconda3/envs/cs109a/lib/python3.7/site-packages/ipykernel_launcher.py:1: UserWarning: KNOWN BUG: p-values computed in this summary are likely much smaller than they should be. \n",
" \n",
"Please do not make inferences based on these values! \n",
"\n",
"Collaborate on a solution, and stay up to date at: \n",
"github.com/dswah/pyGAM/issues/163 \n",
"\n",
" \"\"\"Entry point for launching an IPython kernel.\n"
]
}
],
"source": [
"kyph_gam.summary()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"GAMs provide plots of the effect of increasing each variable (conditional on / adjusted for the other variables)"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"res = kyph_gam.deviance_residuals(X,y)\n",
"for i, term in enumerate(kyph_gam.terms):\n",
" if term.isintercept:\n",
" continue\n",
"\n",
" XX = kyph_gam.generate_X_grid(term=i)\n",
" pdep, confi = kyph_gam.partial_dependence(term=i, X=XX, width=0.95)\n",
" pdep2, _ = kyph_gam.partial_dependence(term=i, X=X, width=0.95)\n",
" plt.figure()\n",
" plt.plot(XX[:, term.feature], pdep)\n",
" plt.plot(XX[:, term.feature], confi, c='r', ls='--')\n",
" plt.title(X.columns.values[term.feature])\n",
" plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Above, we see that as age ranges from 1 to 200 the chance of success first increases and then decreases, though with wide error bars. Moreover, we see that the Number of the vertebrae appears to have no effect or a mild effect until it reaches 12, and then drastically lowers."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Below, we try a model with only \"Age\" and \"Start\". In just a moment we'll compare the two models via cross-validation."
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"X = kyph_train[[\"Age\",\"Number\",\"Start\"]]\n",
"y = kyph_train[\"outcome\"]\n",
"small_kyph_gam = LogisticGAM(s(0)+s(2)).fit(X,y)\n",
"\n",
"\n",
"res = small_kyph_gam.deviance_residuals(X,y)\n",
"for i, term in enumerate(small_kyph_gam.terms):\n",
" if term.isintercept:\n",
" continue\n",
"\n",
" XX = small_kyph_gam.generate_X_grid(term=i)\n",
" pdep, confi = small_kyph_gam.partial_dependence(term=i, X=XX, width=0.95)\n",
" pdep2, _ = small_kyph_gam.partial_dependence(term=i, X=X, width=0.95)\n",
" plt.figure()\n",
" plt.plot(XX[:, term.feature], pdep)\n",
" plt.plot(XX[:, term.feature], confi, c='r', ls='--')\n",
" plt.title(X.columns.values[term.feature])\n",
" plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Test Accuracy m1: 0.82, m2: 0.76\n"
]
}
],
"source": [
"from sklearn.metrics import accuracy_score\n",
"\n",
"X_test = kyph_test[[\"Age\",\"Number\",\"Start\"]]\n",
"y_test = kyph_test[\"outcome\"]\n",
"\n",
"acc = accuracy_score(y_test, kyph_gam.predict(X_test))\n",
"acc_small = accuracy_score(y_test, small_kyph_gam.predict(X_test))\n",
"\n",
"print(\"Test Accuracy m1: {:0.2f}, m2: {:0.2f}\".format(acc, acc_small))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We find that the richer model has a higher accuracy on the test set (it gets rid of one false positive present in the smaller model). Depending on taste, this may or may not be enough to declare the larger model the better.\n",
"\n",
"A cross-validation (below) would make better use of the small data than a simple train-test split. (We again stratify on the outcome to ensure all test sets have a representative number of kyphosis cases)"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Average accuracy [0.71617647 0.74044118]\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"from sklearn.model_selection import StratifiedKFold\n",
"\n",
"kf = StratifiedKFold(n_splits=5, random_state=47, shuffle=True)\n",
"scores = np.zeros((5,2))\n",
"\n",
"for i, (train_index, test_index) in enumerate(kf.split(kyphosis, kyphosis['outcome'])):\n",
" train_df = kyphosis.iloc[train_index,:]\n",
" test_df = kyphosis.iloc[test_index,:]\n",
" \n",
" # with all three (inserting lower smoothing on 'number' to prevent errors while fitting)\n",
" cur_model_all = LogisticGAM(s(0)+s(1, lam=.5)+s(2)).fit(train_df[['Age', 'Number', 'Start']], train_df['outcome'])\n",
" scores[i,0] = accuracy_score(test_df['outcome'], cur_model_all.predict(test_df[['Age', 'Number', 'Start']]))\n",
" \n",
" # dropping 'number'\n",
" cur_model_some = LogisticGAM(s(0)+s(1)).fit(train_df[['Age', 'Number', 'Start']], train_df['outcome'])\n",
" scores[i,1] = accuracy_score(test_df['outcome'], cur_model_some.predict(test_df[['Age', 'Number', 'Start']]))\n",
" \n",
"print(\"Average accuracy\", np.mean(scores, axis=0))\n",
"plt.scatter([0]*5, scores[:,0])\n",
"plt.scatter([1]*5, scores[:,1])\n",
"plt.xlabel(\"Model\")\n",
"plt.ylabel(\"CV Accuracy\")\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As a naive average, it appears that the second model (without 'Number') is has the better accuracy. However, plotting the various CV scores shows that the two models aren't particularly different. As the test is inconclusive, one might choose the model without 'number' as it does not appear to be noticeably weaker, or one might stick with the richer model as it does not noticeably overfit."
]
}
],
"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
}