{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Correction (Joseph Salmon)"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/jo/anaconda3/lib/python3.6/site-packages/statsmodels/compat/pandas.py:56: FutureWarning: The pandas.core.datetools module is deprecated and will be removed in a future version. Please use the pandas.tseries module instead.\n",
" from pandas.core import datetools\n"
]
}
],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"from matplotlib import rc\n",
"import seaborn as sns\n",
"from sklearn import linear_model\n",
"from sklearn.preprocessing import StandardScaler\n",
"from statsmodels.nonparametric.kde import KDEUnivariate\n",
"from scipy.stats import gaussian_kde\n",
"import statsmodels.api as sm\n",
"\n",
"from sklearn import linear_model\n",
"from sklearn.preprocessing import StandardScaler, PolynomialFeatures\n",
"from numpy.linalg import svd\n",
"\n",
"from IPython.display import HTML\n",
"from IPython.display import display\n",
"\n",
"%matplotlib inline\n",
"# REM: LaTeX needs to be install on the machine for some\n",
"# display to be fined"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Plot initialization"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"rc('font', **{'family': 'sans-serif', 'sans-serif': ['Computer Modern Roman']})\n",
"params = {'axes.labelsize': 12,\n",
" 'font.size': 12,\n",
" 'legend.fontsize': 12,\n",
" 'xtick.labelsize': 10,\n",
" 'ytick.labelsize': 10,\n",
" 'text.usetex': True,\n",
" 'figure.figsize': (8, 6)}\n",
"plt.rcParams.update(params)\n",
"plt.close(\"all\")\n",
"\n",
"sns.set_palette(\"colorblind\")\n",
"sns.axes_style()\n",
"sns.set_style({'legend.frameon': True})\n",
"color_blind_list = sns.color_palette(\"colorblind\", 8)\n",
"my_orange = color_blind_list[2]\n",
"my_green = color_blind_list[1]\n",
"my_blue = color_blind_list[0]\n",
"my_purple = color_blind_list[3]"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"plt.close(\"all\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# EXERCISE 1\n",
"\n",
"Le terme **régression** a été introduit par Sir Francis Galton (cousin de C. Darwin) alors qu'il étudiait la taille des individus au sein d'une descendance.\n",
"Il tentait de comprendre pourquoi les grands individus d'une population semblaient avoir des enfants d'une taille plus petite, plus proche de la taille moyenne de la population; d'où l'introduction du terme \"régression\".\n",
"\n",
"Dans la suite on va s’intéresser aux données récoltées par Galton."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Q1: Loading, cm and rounding\n",
"Récupérer les données du fichier http://josephsalmon.eu/enseignement/TELECOM/MDI720/datasets/Galton.txt et les charger avec **Pandas**. On utilisera *read_csv* pour cela et on transformera les tailles en cm (pour cela on pourra consulter la description des données proposées en http://www.math.uah.edu/stat/data/Galton.html, en arrondissant sans chiffre après la virgule."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Family | \n",
" Father | \n",
" Mother | \n",
" Gender | \n",
" Height | \n",
" Kids | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 1 | \n",
" 199 | \n",
" 170 | \n",
" M | \n",
" 186 | \n",
" 4 | \n",
"
\n",
" \n",
" | 1 | \n",
" 1 | \n",
" 199 | \n",
" 170 | \n",
" F | \n",
" 176 | \n",
" 4 | \n",
"
\n",
" \n",
" | 2 | \n",
" 1 | \n",
" 199 | \n",
" 170 | \n",
" F | \n",
" 175 | \n",
" 4 | \n",
"
\n",
" \n",
" | 3 | \n",
" 1 | \n",
" 199 | \n",
" 170 | \n",
" F | \n",
" 175 | \n",
" 4 | \n",
"
\n",
" \n",
" | 4 | \n",
" 2 | \n",
" 192 | \n",
" 169 | \n",
" M | \n",
" 187 | \n",
" 4 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Family Father Mother Gender Height Kids\n",
"0 1 199 170 M 186 4\n",
"1 1 199 170 F 176 4\n",
"2 1 199 170 F 175 4\n",
"3 1 199 170 F 175 4\n",
"4 2 192 169 M 187 4"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Load data\n",
"url = 'http://josephsalmon.eu/enseignement/TELECOM/MDI720/datasets/Galton.txt'\n",
"df = pd.read_csv(url, sep='\\t')\n",
"\n",
"# Convert inches to cm\n",
"df[['Father', 'Mother', 'Height']] = 2.54 * df[['Father', 'Mother', 'Height']]\n",
"pd.set_option('precision', 0)\n",
"df.head()\n",
"# Alternative:\n",
"# df.round({'Father': 0, 'Mother': 0, 'Height': 0})\n",
"\n",
"# BEWARE: the display option does not necessarily affect the underlying float\n",
"# values so, depending on the choice performed, there might be a (tiny)\n",
"# difference in the estimators obtained latter on..."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Q2: Any Na in the dataframe?\n",
"\n",
"Combien de données manquantes y-t-il dans cette base de données ? Enlever si besoin les\n",
"lignes ayant des données manquantes."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"There are 0 total missing values.\n"
]
}
],
"source": [
"null_data = df[df.isnull().any(axis=1)]\n",
"print(\"There are \" + str(df.isnull().sum().sum()) +\n",
" ' total missing values.')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"__Conclusion__ : pas de données manquantes dans cette table."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Q3: Plot height density for Mothers and Fathers\n",
"Afficher sur un même graphe un estimateur de la densité de la population des pères en bleu, et de celles des mères en orange."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.figure()\n",
"kde_father = KDEUnivariate(df['Father'])\n",
"kde_father.fit(bw=2, kernel='gau')\n",
"x_grid = np.linspace(140, 210)\n",
"pdf_est_father = kde_father.evaluate(x_grid)\n",
"\n",
"kde_mother = KDEUnivariate(df['Mother'])\n",
"kde_mother.fit(bw=2, kernel='gau')\n",
"x_grid = np.linspace(140, 210)\n",
"pdf_est_mother = kde_mother.evaluate(x_grid)\n",
"\n",
"plt.plot(x_grid, pdf_est_father, color=my_blue, label='Father')\n",
"plt.fill_between(x_grid, 0, pdf_est_father, facecolor=my_blue, alpha=0.5)\n",
"\n",
"plt.plot(x_grid, pdf_est_mother, color=my_orange, label='Mother')\n",
"plt.fill_between(x_grid, 0, pdf_est_mother, facecolor=my_orange, alpha=0.5)\n",
"\n",
"plt.ylabel('Density', fontsize=18)\n",
"plt.xlabel('Height (in cm.)', fontsize=18)\n",
"plt.title(\"Distribution of parents height (by gender)\")\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Another possibility when the data has unique observations,\n",
"# with gaussian_kde from scipy.stats\n",
"\n",
"father_unique = df['Father'].groupby(df['Family']).first()\n",
"mother_unique = df['Mother'].groupby(df['Family']).first()\n",
"\n",
"plt.figure()\n",
"kde_father = gaussian_kde(father_unique)\n",
"x_grid = np.linspace(140, 210)\n",
"pdf_est_father = kde_father(x_grid)\n",
"\n",
"kde_mother = gaussian_kde(mother_unique)\n",
"x_grid = np.linspace(140, 210)\n",
"pdf_est_mother = kde_mother(x_grid)\n",
"\n",
"plt.plot(x_grid, pdf_est_father, color=my_blue, label='Father')\n",
"plt.fill_between(x_grid, 0, pdf_est_father, facecolor=my_blue, alpha=0.5)\n",
"\n",
"plt.plot(x_grid, pdf_est_mother, color=my_purple, label='Mother')\n",
"plt.fill_between(x_grid, 0, pdf_est_mother, facecolor=my_orange, alpha=0.5)\n",
"\n",
"plt.ylabel('Density', fontsize=18)\n",
"plt.xlabel('Height (in cm.)', fontsize=18)\n",
"plt.title(\"Distribution of parents height (by gender)\")\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Q4: Plot Father height as a function of Mother height, with OLS prediction\n",
"Afficher la taille du père en fonction de la taille de la mère pour les $n$ observations figurant dans les données. Ajouter la droite de prédiction obtenue par la méthode des moindres carrés (avec constante et sans centrage/normalisation)."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nAAAASUVORK5CYII=\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.00542647493462\n"
]
}
],
"source": [
"plt.figure()\n",
"y = df['Father']\n",
"X = df[['Mother']]\n",
"plt.plot(X, y, 'o',label=\"\")\n",
"plt.ylabel('Father height', fontsize=18)\n",
"plt.ylim([df['Father'].min()-1, df['Father'].max()+1])\n",
"plt.xlim([df['Mother'].min()-1, df['Mother'].max()+1])\n",
"plt.xlabel('Mother height', fontsize=18)\n",
"skl_lm = linear_model.LinearRegression(fit_intercept=True)\n",
"skl_lm.fit(X, y)\n",
"plt.plot(x_grid, skl_lm.predict(x_grid.reshape(x_grid.shape[0], 1)), '-', label='Model prediction')\n",
"plt.legend()\n",
"plt.title(\"Father height w.r.t. Mother heigh (observed and predicted)\")\n",
"plt.show()\n",
"\n",
"print(skl_lm.score(X, y)) # it is pretty small..."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Q5: Distribution of the number of children by family \n",
"Afficher un histogramme du nombre d'enfants par famille."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nRK5CYII=\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# second solution : normed=True\n",
"groupby_family = df['Family'].groupby(df['Family']).count()\n",
"plt.figure()\n",
"plt.hist(groupby_family, bins=14, normed=True, rwidth=0.9)\n",
"plt.xlim([0.5, 15.5])\n",
"plt.xticks(np.arange(1,16))\n",
"plt.xlabel('Number of children', fontsize=18)\n",
"plt.ylabel('Density', fontsize=18)\n",
"plt.title(\"Distribution of the number of children per family (frequency)\")\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"There are 197 families\n"
]
},
{
"data": {
"image/png": "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\nQmCC\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# second solution : normed=False\n",
"print(\"There are {} families\".format(len(df['Family'].unique())))\n",
"groupby_family = df['Family'].groupby(df['Family']).count()\n",
"plt.figure()\n",
"plt.hist(groupby_family, bins=14, normed=False, rwidth=0.9)\n",
"plt.xlim([0.5, 15.5])\n",
"plt.xticks(np.arange(1,16))\n",
"plt.xlabel('Number of children', fontsize=18)\n",
"plt.ylabel(\"Count\", fontsize=18)\n",
"plt.title(\"Distribution of the number of children per family (count)\")\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Q6: MidParents creation\n",
"Créer une colonne supplémentaire appelée *'MidParents'* qui contient la taille du sorte de \"parent moyen\", et valant ('Father'+ 1.08 * 'Mother') / 2."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"df['MidParents'] = 0.5 * (df['Father'] + 1.08 * df['Mother'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"REM: The factor 1.08 gives a rescaled women's height variable which has the same average as the men's height. Indeed, the ratio of the average men's height over the average women's height is "
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"Ratio = np.mean(df['Father']) / np.mean(df['Mother'])"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1.0803384317037383\n"
]
}
],
"source": [
"print(Ratio)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Pour la $i^{ieme}$ observation, on note $x_i$ la taille du parent moyen et $y_i$ la taille de l'enfant. On se base sur le modèle linéaire suivant: $y_i = \\theta_0 + \\theta_1 x_i + \\varepsilon_i$ et on suppose que les variables $\\varepsilon_i$ sont centrées, indépendantes et de même variance $\\sigma^2$ inconnue."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Q7: Regression MidParents vs kids\n",
"Estimer $\\theta_0$, $\\theta_1$, par $\\hat{\\theta}_0$, $\\hat{\\theta}_1$ en utilisant la fonction **LinearRegression** de **sklearn**, puis vérifier numériquement (on pourra utiliser par exemple **np.isclose**)\n",
"les formules vues en cours pour le cas unidimensionnel:\n",
"\n",
"$$\n",
"\\hat\\theta_0= \\overline{y}_n -\\hat{\\theta}_1 \\overline{x}_n,\\qquad \\hat\\theta_1= \\displaystyle\\frac{ \\sum_{i=1}^n (x_i-\\overline{x}_n)(y_i -\\overline{y}_n)}{\\sum_{i=1}^n (x_i-\\overline{x}_n)^2} .\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"On fera attention aux normalisations utilisées pour la variance qui peuvent changer selon les packages."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.641190379591\n",
"0.641190379591\n",
"Are the two computations of theta1 the same? This is True and theta1=0.6411903795908169\n",
"Are the two computations of theta0 the same? This is True, and theta0=56.83556243483079\n"
]
}
],
"source": [
"X0 = df[['MidParents']]\n",
"y = df['Height']\n",
"skl_lm = linear_model.LinearRegression()\n",
"skl_lm.fit(X0, y)\n",
"theta0 = skl_lm.intercept_\n",
"theta1 = skl_lm.coef_[0]\n",
"y_mean = y.mean()\n",
"X0_mean = (X0.mean(axis=0)).squeeze()\n",
"X0_var = X0.var(ddof=0).squeeze()\n",
"y_var = y.var(ddof=0)\n",
"theta1_manual = ((X0.squeeze() - X0_mean) * (y - y_mean)).mean() / X0_var\n",
"theta0_manual = y_mean - theta1_manual * X0_mean\n",
"print(theta1)\n",
"print(theta1_manual)\n",
"\n",
"print('Are the two computations of theta1' +\n",
" ' the same? This is {} and theta1={}'.format(np.isclose(theta1, theta1_manual),theta1))\n",
"\n",
"print('Are the two computations of theta0' +\n",
" ' the same? This is {}, and theta0={}'.format(np.isclose(theta0, theta0_manual),theta0))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Q8: Compute and display predictions with different colors by gender\n",
"Calculer et visualiser les valeurs prédites $\\hat y_i = \\hat\\theta_0 + \\hat\\theta_1 x_i $ et les $y_i$ sur un même graphique. On affichera de deux couleurs différentes les garçons et les filles."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"male = df['Gender'] == 'M'\n",
"female = df['Gender'] == 'F'\n",
"fig = plt.figure()\n",
"plt.plot(df['MidParents'][male], y[male], 'o', c=my_blue, label=\"Male\")\n",
"plt.plot(df['MidParents'][female], y[female], 'o', c=my_orange, label=\"Female\")\n",
"plt.plot(X0, skl_lm.predict(X0), label='OLS prediction', c='k')\n",
"plt.xlabel('MidParents', fontsize=18)\n",
"plt.ylabel('Kids height', fontsize=18)\n",
"plt.title(\"Kids Heigh by gender\")\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Q9: Residual density estimation\n",
"\n",
"Visualiser un estimateur de la densité des résidus $r_i = y_i -\\hat y_i$. L’hypothèse de normalité est-elle crédible selon vous? On ajoutera ensuite un estimateur par genre de la densité des résidus (en mettant un facteur proportionnel au nombre de personnes de chaque genre)."
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"nb_f = float(female.sum())\n",
"nb_m = float(male.sum())\n",
"alpha_f = nb_f / (nb_f + nb_m)\n",
"alpha_m = nb_m / (nb_f + nb_m)\n",
"\n",
"plt.figure()\n",
"residual = y - skl_lm.predict(X0)\n",
"x_grid = np.linspace(-40, 30, num=300)\n",
"plt.title('Residual Histogram/ KDE')\n",
"plt.xlabel('Residual value')\n",
"plt.ylabel('Frequency')\n",
"\n",
"kde_residual = KDEUnivariate(residual)\n",
"kde_residual.fit(bw=2, kernel='gau')\n",
"pdf_est_residual = kde_residual.evaluate(x_grid)\n",
"plt.plot(x_grid, pdf_est_residual, color='k')\n",
"plt.fill_between(x_grid, pdf_est_residual, alpha=0.1, color='k', label='All')\n",
"\n",
"\n",
"kde_residual_m = KDEUnivariate(residual[male])\n",
"kde_residual_m.fit(bw=2, kernel='gau')\n",
"pdf_est_residual_m = kde_residual_m.evaluate(x_grid)\n",
"plt.fill_between(x_grid, alpha_m * pdf_est_residual_m, color=my_blue, alpha=0.5,label='Male')\n",
"\n",
"\n",
"kde_residual_f = KDEUnivariate(residual[female])\n",
"kde_residual_f.fit(bw=2, kernel='gau')\n",
"pdf_est_residual_f = kde_residual_f.evaluate(x_grid)\n",
"plt.fill_between(x_grid, alpha_f * pdf_est_residual_f, color=my_orange, alpha=0.5,label='Female')\n",
"\n",
"\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"L’hypothèse de normalité globale des résidus n'est pas crédible (distribution bimodale). Cependant elle semble plus raisonnable si l'on fait l'étude séparement par genre."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Q10 : Inverting the model\n",
"Régresser cette fois les $x_i$ sur les $y_i$ (et non plus les $y_i$ sur les $x_i$). Comparer les coefficients $\\hat{\\alpha}_0$ et $\\hat{\\alpha}_1$ obtenus par rapport aux $\\hat{\\theta}_0$ et $\\hat{\\theta}_1$ du modèle original. Vérifier numériquement que:\n",
"$$\n",
"\\begin{cases}\n",
"\\hat{\\alpha}_0=&\\bar{x}_n+\\displaystyle\\frac{\\bar{y}_n}{\\bar{x}_n}\\frac{var_n(x)}{var_n(y)}\n",
"(\\hat{\\theta}_0-\\bar{y}_n), \\\\\n",
"\\hat{\\alpha}_1=&\\frac{var_n(x)}{var_n(y)} \\hat{\\theta}_1 .\n",
"\\end{cases}\n",
"$$"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.165038310213\n",
"0.165038310213\n",
"Are the two computations of alpha1 the same? This is True\n",
"Are the two computations of alpha0 the same? This is True\n"
]
}
],
"source": [
"skl_lm = linear_model.LinearRegression()\n",
"skl_lm.fit(df[['Height']], df['MidParents'])\n",
"alpha0 = skl_lm.intercept_\n",
"alpha1 = skl_lm.coef_[0]\n",
"alpha0_manual = X0_mean + y_mean / X0_mean * X0_var / y_var * (theta0 - y_mean)\n",
"alpha1_manual = X0_var / y_var * theta1_manual\n",
"print(alpha1)\n",
"print(alpha1_manual)\n",
"\n",
"print('Are the two computations of alpha1' +\n",
" ' the same? This is {}'.format(np.isclose(alpha1, alpha1_manual)))\n",
"\n",
"print('Are the two computations of alpha0' +\n",
" ' the same? This is {}'.format(np.isclose(alpha0, alpha0_manual)))\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# EXERCISE 2\n",
"\n",
"\n",
"\n",
"On travaille dans cette partie sur le fichier **auto-mpg.data**.\n",
"On cherche à régresser linéairement la consommation des voitures sur leurs caractéristiques: nombre de cylindres, cylindrées (*engine displacement* en anglais), puissance, poids, accélération, année, pays d'origine et le nom de la voiture.\n",
"\n",
"Le vecteur contenant la consommation des voitures (plus précisément la distance parcourue, en miles, pour un gallon, ou mpg) est noté $y$; les colonnes de $X$ sont les régresseurs quantitatifs, donc pour le moment on laisse de côté les variables *origin* et *car name*.\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Q11: auto-mpg.data-original loading"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Importer avec **Pandas** la base de données disponible ici https://archive.ics.uci.edu/ml/machine-learning-databases/auto-mpg/auto-mpg.data-original.\n",
"\n",
"On ajoutera le nom des colonnes en consultant l'adresse:\n",
"https://archive.ics.uci.edu/ml/machine-learning-databases/auto-mpg/auto-mpg.names avec l'attribut **'name'** de **read_csv**. On pourra regarder l’intérêt de l'option **sep=r\"\\s\\+\"** si besoin.\n",
"\n",
"Y a-t-il un marqueur utilisé pour les données manquantes dans le fichier utilisé? Si besoin, enlever les lignes possédant des valeurs manquantes dans la base de données."
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The original dataset has 406 samples and 9 features\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" mpg | \n",
" cylinders | \n",
" displacement | \n",
" horsepower | \n",
" weight | \n",
" acceleration | \n",
" model_year | \n",
" origin | \n",
" car_name | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 18 | \n",
" 8 | \n",
" 307 | \n",
" 130 | \n",
" 3,504 | \n",
" 12 | \n",
" 70 | \n",
" 1USA | \n",
" chevrolet chevelle malibu | \n",
"
\n",
" \n",
" | 1 | \n",
" 15 | \n",
" 8 | \n",
" 350 | \n",
" 165 | \n",
" 3,693 | \n",
" 12 | \n",
" 70 | \n",
" 1USA | \n",
" buick skylark 320 | \n",
"
\n",
" \n",
" | 2 | \n",
" 18 | \n",
" 8 | \n",
" 318 | \n",
" 150 | \n",
" 3,436 | \n",
" 11 | \n",
" 70 | \n",
" 1USA | \n",
" plymouth satellite | \n",
"
\n",
" \n",
" | 3 | \n",
" 16 | \n",
" 8 | \n",
" 304 | \n",
" 150 | \n",
" 3,433 | \n",
" 12 | \n",
" 70 | \n",
" 1USA | \n",
" amc rebel sst | \n",
"
\n",
" \n",
" | 4 | \n",
" 17 | \n",
" 8 | \n",
" 302 | \n",
" 140 | \n",
" 3,449 | \n",
" 10 | \n",
" 70 | \n",
" 1USA | \n",
" ford torino | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" mpg cylinders displacement horsepower weight acceleration model_year \\\n",
"0 18 8 307 130 3,504 12 70 \n",
"1 15 8 350 165 3,693 12 70 \n",
"2 18 8 318 150 3,436 11 70 \n",
"3 16 8 304 150 3,433 12 70 \n",
"4 17 8 302 140 3,449 10 70 \n",
"\n",
" origin car_name \n",
"0 1USA chevrolet chevelle malibu \n",
"1 1USA buick skylark 320 \n",
"2 1USA plymouth satellite \n",
"3 1USA amc rebel sst \n",
"4 1USA ford torino "
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Load data\n",
"# url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/auto-mpg/' +\\\n",
"# 'auto-mpg.data-original'\n",
"\n",
"# Alternative URL when UCI is down:\n",
"url = 'http://josephsalmon.eu/enseignement/TELECOM/MDI720/datasets/auto-mpg.data-original'\n",
"\n",
"u_cols = ['mpg', 'cylinders', 'displacement', 'horsepower',\n",
" 'weight', 'acceleration', 'model_year', 'origin', 'car_name']\n",
"\n",
"# To get correct display format\n",
"pd.options.display.float_format = '{:,.0f}'.format\n",
"\n",
"\n",
"# for this dataset na_values are marked as NA.\n",
"data = pd.read_csv(url, sep=r\"\\s+\", names=u_cols, na_values='NA')\n",
"n_samples_ini = data.shape[0]\n",
"print(\"The original dataset has {} samples and {} features\".format(\n",
" data.shape[0], data.shape[1]))\n",
"\n",
"# Remove NA:\n",
"data = data.dropna(axis=0, how='any')\n",
"n_samples = data.shape[0]\n",
"data.head()\n",
"\n",
"# To get origin with meaningful names\n",
"origins = data['origin'].astype(str)\n",
"origins = origins.str.replace('1.0', '1USA')\n",
"origins = origins.str.replace('2.0', '2Europe')\n",
"origins = origins.str.replace('3.0', '3Japan')\n",
"data['origin'] = origins\n",
"data.head()"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"There are 14 missing values (NA).\n"
]
}
],
"source": [
"print(\"There are {} missing values (NA).\".format(n_samples_ini - n_samples))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Q12: OLS over a subset of the dataset\n",
"\n",
"Calculer l'estimateur des moindres carrés (avec ordonnée à l'origine) $\\hat\\theta$ et sa prédiction $\\hat{y}$ sur une sous partie de la base obtenue en gardant les $9$ premières lignes. Que constatez-vous pour les variables **cylinders** et **model year**?"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Index(['cylinders', 'displacement', 'horsepower', 'weight', 'acceleration',\n",
" 'model_year'],\n",
" dtype='object')\n",
"[ 0. 0.05408848 -0.0945306 -0.00424074 -0.19936701 0. ]\n",
"30.7716953656\n"
]
}
],
"source": [
"y = data['mpg']\n",
"# data.drop(['mpg'], axis=1)\n",
"X_partial = data.drop(['origin', 'car_name', 'mpg'], axis=1)\n",
"\n",
"# Fit regression model (with sklearn) degenerate case\n",
"skl_linmod = linear_model.LinearRegression()\n",
"skl_linmod.fit(X_partial[:9], y[:9])\n",
"\n",
"print(X_partial.columns)\n",
"print(skl_linmod.coef_)\n",
"print(skl_linmod.intercept_)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Les coefficients des variables **cylinders** et **model year** sont nuls. Ceci est étrange, et vient du fait que le modèle est mal specifié. En effet, pour cette sous-partie de la base les colonnes de ces deux variables sont constantes et sont donc redondantes avec la colonnes constantes."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Q13: OLS over a full dataset after rescaling/centering\n",
"\n",
"Calculer $\\hat\\theta$ et $\\hat y$ cette fois sur l'intégralité des données, après les avoir centrées et réduites. Quelles sont les deux variables qui expliquent le plus la consommation d'un véhicule selon vous?"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Index(['cylinders', 'displacement', 'horsepower', 'weight', 'acceleration',\n",
" 'model_year'],\n",
" dtype='object')\n",
"[-0.56194996 0.80247616 -0.0150445 -5.76399971 0.23495704 2.77166415]\n",
"Index(['model_year', 'weight'], dtype='object')\n"
]
}
],
"source": [
"# Fit regression model (with sklearn)\n",
"skl_linmod = linear_model.LinearRegression()\n",
"scaler = StandardScaler().fit(X_partial)\n",
"X = scaler.transform(X_partial)\n",
"skl_linmod.fit(X, y)\n",
"\n",
"print(X_partial.columns)\n",
"print(skl_linmod.coef_)\n",
"# print(skl_linmod.intercept_)\n",
"ranked_variables = np.argsort(np.abs(skl_linmod.coef_))\n",
"print(X_partial.columns[ranked_variables[-2:]])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Les deux variables qui semblent les plus explicative de la consomation (d'après l'amplitudes de leurs coefficients de régression) sont l'ancienneté (**model year**) et le poids (**weight**) de la voiture."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Q14: Residual\n",
"\n",
"Calculer $\\|r\\|^2$ (le carré de la norme du vecteur des résidus),\n",
" puis $\\|r\\|^2/(n-p)$. Vérifier numériquement que:\n",
" \n",
"\\begin{equation*}\n",
" \\| y - \\bar{y}_n\\mathbf{1}_n\\|^2=\\|r\\|^2 +\\| \\hat{y} - \\bar{y}_n \\mathbf{1}_n\\|^2.\n",
"\\end{equation*}\n"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"True\n",
"23818.9934694\n"
]
}
],
"source": [
"residual = skl_linmod.predict(X) - y\n",
"term_1 = np.linalg.norm(y - np.mean(y)) ** 2\n",
"term_2 = np.linalg.norm(residual) ** 2\n",
"term_3 = np.linalg.norm(skl_linmod.predict(X) - np.mean(y)) ** 2\n",
"print(np.isclose(term_1, term_2 + term_3))\n",
"print(term_1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Q15: New observation\n",
"\n",
"Supposons que l'on vous fournisse les caractéristiques suivantes d'un nouveau véhicule :\n",
"\n",
"| cylinders | displacement| horsepower | weight | acceleration |year|\n",
"|---|---|---|---|---|---|\n",
"| 6 | 225 | 100 | 3233 |15.4| 76\n",
"\n",
"Prédire sa consommation (pour information, la consommation effectivement mesurée sur cet exemple était de 22 mpg)."
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The consumption predicted is 21.776220182609453 mpg.\n",
"This is 1.017% away from the proposed value.\n"
]
}
],
"source": [
"X_new = np.array([[6, 225, 100, 3233, 15.4, 76]])\n",
"prediction_new = skl_linmod.predict(scaler.transform(X_new))[0]\n",
"print(\"The consumption predicted is {} mpg.\".format(prediction_new))\n",
"print(\"This is {:.4}% away from the proposed value.\".format(\n",
" (100 - (prediction_new / 22. * 100))))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Q16: Polynomial features.\n",
"\n",
"Utiliser la transformation **PolynomialFeatures** de **sklearn** sur les données brutes, pour ajuster un modèle d'ordre deux (avec les termes d'interactions: **interaction_only=False**). On normalisera et recentrera après avoir créé les nouvelles variables explicatives. Quelle est alors la variable la plus explicative de la consomation?"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['cylinders', 'displacement', 'horsepower', 'weight', 'acceleration', 'model_year', 'cylinders^2', 'cylinders displacement', 'cylinders horsepower', 'cylinders weight', 'cylinders acceleration', 'cylinders model_year', 'displacement^2', 'displacement horsepower', 'displacement weight', 'displacement acceleration', 'displacement model_year', 'horsepower^2', 'horsepower weight', 'horsepower acceleration', 'horsepower model_year', 'weight^2', 'weight acceleration', 'weight model_year', 'acceleration^2', 'acceleration model_year', 'model_year^2']\n",
"[ 13.34357536 -48.43391341 5.15417707 17.47091667 -16.05072528\n",
" -26.88104821 -8.13486673 -2.94736774 11.95174218 5.33737455\n",
" 4.87668634 -16.22928128 1.29969118 3.38005168 5.2047413\n",
" -3.29326443 43.68431432 -3.59171565 -6.15116573 -2.38675585\n",
" -4.85057027 3.15822997 0.84918913 -25.11606269 1.99403567\n",
" 13.91361302 29.84851135]\n",
"23.4459183673\n"
]
}
],
"source": [
"poly = PolynomialFeatures(2, interaction_only=False, include_bias=False)\n",
"poly.fit(X_partial)\n",
"XX = poly.transform(X_partial) \n",
"all_names = poly.get_feature_names(X_partial.columns)\n",
"\n",
"scalerXX = StandardScaler().fit(XX)\n",
"XX = scalerXX.transform(XX)\n",
"skl_linmod.fit(XX, y)\n",
"print(all_names)\n",
"print(skl_linmod.coef_)\n",
"print(skl_linmod.intercept_)"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['displacement', 'displacement model_year', 'model_year^2', 'model_year', 'weight model_year', 'weight', 'cylinders model_year', 'acceleration', 'acceleration model_year', 'cylinders', 'cylinders horsepower', 'cylinders^2', 'horsepower weight', 'cylinders weight', 'displacement weight', 'horsepower', 'cylinders acceleration', 'horsepower model_year', 'horsepower^2', 'displacement horsepower', 'displacement acceleration', 'weight^2', 'cylinders displacement', 'horsepower acceleration', 'acceleration^2', 'displacement^2', 'weight acceleration']\n"
]
}
],
"source": [
"rank_variables = np.argsort(np.abs(skl_linmod.coef_))[::-1]\n",
"print([all_names[i] for i in rank_variables])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Cette fois la variable la plus pertinente semble être \"displacement\". C'est un paradoxe classique: en ajoutant de nouvelles variables (ici les produits de variables), il se peut que le classement par ordre d'influence des variables (mesuré par l'amplitude des coefficients) change. Ce problème est partiellement résolu par sélection de variables."
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# BEWARE: it might lead to different interpretation if one perform the steps:\n",
"# 1) center/rescale the design matrix\n",
"# 2) create the interaction features\n",
"# 3) center/rescale the new design matrix\n",
"# or\n",
"# 1) create the interaction features\n",
"# 2) center/rescale the new design matrix.\n",
"# The most reasonable is to rather proceed as proposed above (ie 2nd choice)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Q 17: Handling origins\n",
"\n",
"On revient ici au modèle sans interactions. Proposer une manière de gérer la variable\"origin\" par exemple avec **pd.get_dummies**. On ajustera un modèle linéaire sans constante dans ce cas. Déterminer laquelle des trois origines est la plus efficace en terme de consommation (Pour info, 1 = usa; 2 = europe; 3 = japan)."
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Index(['origin_1USA', 'origin_2Europe', 'origin_3Japan'], dtype='object')\n",
"[-17.95460207 -15.32459971 -15.10137384]\n"
]
}
],
"source": [
"# Solution 1: all origins, no intercpet, no rescalling.\n",
"X_origin1 = data.copy().drop(['car_name', 'mpg'], axis=1)\n",
"X_origin1 = pd.get_dummies(X_origin1, columns=['origin'])\n",
"\n",
"scaler = StandardScaler(with_mean=False,with_std=False).fit(X_origin1)\n",
"Z1 = scaler.transform(X_origin1)\n",
"\n",
"skl_linmod1 = linear_model.LinearRegression(fit_intercept=False)\n",
"skl_linmod1.fit(Z1, y)\n",
"\n",
"print(X_origin1.columns[6:])\n",
"print(skl_linmod1.coef_[6:])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Conclusion**: Result sugest that Japan is the most efficient, then come Europe, and USA is far behind."
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Index(['cylinders', 'displacement', 'horsepower', 'weight', 'acceleration',\n",
" 'model_year', 'origin_2Europe', 'origin_3Japan'],\n",
" dtype='object')\n",
"[ 2.63000236 2.85322823]\n"
]
}
],
"source": [
"# Solution 2: removing USA, and considering an intercpet\n",
"X_origin2 = data.copy().drop(['car_name', 'mpg'], axis=1)\n",
"X_origin2 = pd.get_dummies(X_origin2, columns=['origin'],drop_first=True)\n",
"\n",
"scaler = StandardScaler(with_mean=False,with_std=False).fit(X_origin2)\n",
"Z2 = scaler.transform(X_origin2)\n",
"\n",
"skl_linmod2 = linear_model.LinearRegression(fit_intercept=True)\n",
"skl_linmod2.fit(Z2, y)\n",
"\n",
"print(X_origin2.columns[:])\n",
"print(skl_linmod2.coef_[6:])"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"True\n"
]
}
],
"source": [
"# Testing link between models:\n",
"Europe_cst = skl_linmod2.intercept_\n",
"testing_coef = np.concatenate(\n",
" [skl_linmod2.coef_[:6], [Europe_cst], skl_linmod2.coef_[6:] + Europe_cst])\n",
"print(np.allclose(testing_coef, skl_linmod1.coef_))"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"**Conclusion**: Japon is still the most efficent then w.r.t. Europe (positive coefficient), and USA is less efficient than Europe (negative coefficient)."
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1USA 245\n",
"3Japan 79\n",
"2Europe 68\n",
"Name: origin, dtype: int64\n",
"Index(['origin_1USA', 'origin_2Europe', 'origin_3Japan'], dtype='object')\n",
"[-8.69223435 -5.80269887 -6.05781639]\n",
"[-0.83427197 2.50601874 -0.69900932 -5.69254264 0.21795599 2.85870923\n",
" -8.69223435 -5.80269887 -6.05781639]\n"
]
}
],
"source": [
"# Solution 3: normalizing all columns implies that a post-processing is needed:\n",
"# to get meaningfull coefficient, scaling is required!\n",
"origines_count = data['origin'].value_counts()\n",
"print(origines_count)\n",
"\n",
"X_origin3 = data.copy().drop(['car_name', 'mpg'], axis=1)\n",
"X_origin3 = pd.get_dummies(X_origin3, columns=['origin'], drop_first=False)\n",
"\n",
"scaler = StandardScaler(with_mean=False, with_std=True).fit(X_origin3)\n",
"Z3 = scaler.transform(X_origin3)\n",
"\n",
"skl_linmod3 = linear_model.LinearRegression(fit_intercept=False)\n",
"skl_linmod3.fit(Z3, y)\n",
"\n",
"print(X_origin3.columns[6:])\n",
"print(skl_linmod3.coef_[6:])\n",
"print(skl_linmod3.coef_)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Beware: the result above wrongly suggests Europe is the best. But this is a scaling issue:"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[-17.95460207 -15.32459971 -15.10137384]\n",
"True\n",
"[ 0.48412292 0.37865256 0.4011434 ]\n"
]
}
],
"source": [
"print(skl_linmod3.coef_[6:] / scaler.scale_[6:])\n",
"print(np.allclose(skl_linmod3.coef_ / scaler.scale_, skl_linmod1.coef_))\n",
"\n",
"# Europe has more variability : because it has fewer samples\n",
"print(scaler.scale_[6:])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Conclusion**: we recover the same conclusion after a careful normalisation..."
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Index(['cylinders', 'displacement', 'horsepower', 'weight', 'acceleration',\n",
" 'model_year', 'origin_1USA', 'origin_2Europe', 'origin_3Japan'],\n",
" dtype='object')\n",
"[ -1.52447816 3.13312444 -1.32642763 -10.24277927 0.80537819\n",
" 15.00512974 -3.83896851 -3.32972233 -3.22628516]\n"
]
}
],
"source": [
"# best is to check t-statistics NOT the coefficients themselves:\n",
"# cf. William H. Greene, Econometric analysis, Prentice Hall (2003), page 79, 4-14\n",
"# cf. http://josephsalmon.eu/enseignement/TELECOM/MDI720/IntroTests_fr.pdf\n",
"\n",
"results = sm.OLS(y, Z1).fit()\n",
"print(X_origin1.columns[:])\n",
"print(results.tvalues.values)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Conclusion**: the order is still Japan>Europe>USA"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Q18: Handling brands with some text processing\n",
"\n",
"Procéder de même cette fois en fonction de la marque de la voiture.\n",
"On pourra utiliser **str.split** et **str.replace** pour créer une nouvelle variable **'brand'**."
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Number of cars per brand:\n",
"ford 49\n",
"chevrolet 47\n",
"chrysler 34\n",
"plymouth 31\n",
"amc 27\n",
"toyota 26\n",
"nissan 24\n",
"vw 22\n",
"buick 17\n",
"pontiac 16\n",
"honda 13\n",
"mazda 12\n",
"mercury 11\n",
"oldsmobile 10\n",
"fiat 8\n",
"peugeot 8\n",
"audi 7\n",
"volvo 6\n",
"opel 4\n",
"subaru 4\n",
"saab 4\n",
"renault 3\n",
"mercedes 3\n",
"bmw 2\n",
"cadillac 2\n",
"triumph 1\n",
"hi 1\n",
"Name: brand, dtype: int64\n",
"\n",
"Brands by increasing coefficients:\n",
"Index(['brand_amc', 'brand_mercury', 'brand_ford', 'brand_buick',\n",
" 'brand_chevrolet', 'brand_volvo', 'brand_chrysler', 'brand_opel',\n",
" 'brand_bmw', 'brand_oldsmobile', 'brand_plymouth', 'brand_pontiac',\n",
" 'brand_mazda', 'brand_saab', 'brand_subaru', 'brand_toyota',\n",
" 'brand_peugeot', 'brand_cadillac', 'brand_audi', 'brand_renault',\n",
" 'brand_hi', 'brand_mercedes', 'brand_fiat', 'brand_vw', 'brand_honda',\n",
" 'brand_nissan', 'brand_triumph'],\n",
" dtype='object')\n",
"[-15.8448334 -15.37441593 -15.08920332 -14.50317471 -14.48617161\n",
" -14.25639745 -14.04276501 -13.5846621 -13.58250469 -13.33139153\n",
" -13.07055588 -12.88460789 -12.69522852 -12.54530737 -12.46089461\n",
" -12.42248327 -12.19739697 -11.78508034 -11.74517299 -11.49121929\n",
" -11.28489187 -11.20006111 -11.10051666 -10.98287058 -10.73670551\n",
" -10.08042111 -7.31920326]\n"
]
}
],
"source": [
"car_names = data['car_name']\n",
"brands = pd.Series(car_names.str.split().str.get(0))\n",
"\n",
"\n",
"# A bit of cleaning:\n",
"brands = brands.str.replace('volkswagen', 'vw', case=False)\n",
"brands = brands.str.replace('vokswagen', 'vw', case=False)\n",
"brands = brands.str.replace('toyouta', 'toyota', case=False)\n",
"brands = brands.str.replace('maxda', 'mazda', case=False)\n",
"brands = brands.str.replace('chevy', 'chevrolet', case=False)\n",
"brands = brands.str.replace('chevroelt', 'chevrolet', case=False)\n",
"brands = brands.str.replace('mercedes-benz', 'mercedes', case=False)\n",
"brands = brands.str.replace('capri', 'ford', case=False)\n",
"brands = brands.str.replace('datsun', 'nissan', case=False)\n",
"brands = brands.str.replace('dodge', 'chrysler', case=False)\n",
"\n",
"\n",
"data['brand'] = pd.Series(brands)\n",
"X_brand = data.drop(['car_name', 'mpg', 'origin'], axis=1)\n",
"X_brand = pd.get_dummies(X_brand, columns=['brand'], drop_first=False)\n",
"\n",
"# NOTE: the first in alphabetical order is amc: if drop_first=True, that's the one removed.\n",
"print(\"Number of cars per brand:\")\n",
"print(data['brand'].value_counts())\n",
"\n",
"\n",
"scaler = StandardScaler(with_mean=False, with_std=False).fit(X_brand)\n",
"X_brand_scaled = scaler.transform(X_brand)\n",
"\n",
"skl_linmod = linear_model.LinearRegression(fit_intercept=False)\n",
"skl_linmod.fit(X_brand_scaled, y)\n",
"\n",
"# sort by negative influence over the coefficients:\n",
"brands = X_brand.columns[6:]\n",
"coef_brands = skl_linmod.coef_[6:]\n",
"rank_variables = np.argsort(coef_brands)\n",
"\n",
"print(\"\")\n",
"print(\"Brands by increasing coefficients:\")\n",
"print(brands[rank_variables])\n",
"print(coef_brands[rank_variables])"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Index(['brand_amc', 'brand_ford', 'brand_mercury', 'brand_chevrolet',\n",
" 'brand_buick', 'brand_volvo', 'brand_chrysler', 'brand_opel',\n",
" 'brand_plymouth', 'brand_bmw', 'brand_oldsmobile', 'brand_pontiac',\n",
" 'brand_toyota', 'brand_mazda', 'brand_saab', 'brand_peugeot',\n",
" 'brand_subaru', 'brand_audi', 'brand_fiat', 'brand_vw', 'brand_renault',\n",
" 'brand_honda', 'brand_mercedes', 'brand_cadillac', 'brand_nissan',\n",
" 'brand_hi', 'brand_triumph'],\n",
" dtype='object')\n",
"[-3.24363016 -3.0706495 -3.04164157 -2.93096041 -2.84541389 -2.8103812\n",
" -2.80314176 -2.7449872 -2.66925169 -2.57678996 -2.56807667 -2.56645127\n",
" -2.5293144 -2.52610382 -2.45373763 -2.40481246 -2.39941372 -2.35765008\n",
" -2.29523846 -2.24301229 -2.23016877 -2.14972989 -2.08367061 -2.07656736\n",
" -2.02414966 -1.80671684 -1.23027746]\n"
]
}
],
"source": [
"# Sorted by negative influence over the tvalues:\n",
"\n",
"results = sm.OLS(y, X_brand_scaled).fit()\n",
"brands = X_brand.columns[6:]\n",
"ttest_brands = results.tvalues.values[6:]\n",
"rank_variables = np.argsort(ttest_brands)\n",
"\n",
"print(brands[rank_variables])\n",
"print(ttest_brands[rank_variables])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The most favorable influence is from the **triumph** brand, but the worst is coming from **amc**."
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"If the hi car's brand was amc, \n",
" then instead of 9.0, the its consumption would be 4.44\n",
"If the hi car's brand was audi, \n",
" then instead of 9.0, the its consumption would be 8.54\n",
"If the hi car's brand was bmw, \n",
" then instead of 9.0, the its consumption would be 6.702\n",
"If the hi car's brand was buick, \n",
" then instead of 9.0, the its consumption would be 5.782\n",
"If the hi car's brand was cadillac, \n",
" then instead of 9.0, the its consumption would be 8.5\n",
"If the hi car's brand was chevrolet, \n",
" then instead of 9.0, the its consumption would be 5.799\n",
"If the hi car's brand was chrysler, \n",
" then instead of 9.0, the its consumption would be 6.242\n",
"If the hi car's brand was fiat, \n",
" then instead of 9.0, the its consumption would be 9.184\n",
"If the hi car's brand was ford, \n",
" then instead of 9.0, the its consumption would be 5.196\n",
"If the hi car's brand was hi, \n",
" then instead of 9.0, the its consumption would be 9.0\n",
"If the hi car's brand was honda, \n",
" then instead of 9.0, the its consumption would be 9.548\n",
"If the hi car's brand was mazda, \n",
" then instead of 9.0, the its consumption would be 7.59\n",
"If the hi car's brand was mercedes, \n",
" then instead of 9.0, the its consumption would be 9.085\n",
"If the hi car's brand was mercury, \n",
" then instead of 9.0, the its consumption would be 4.91\n",
"If the hi car's brand was nissan, \n",
" then instead of 9.0, the its consumption would be 10.2\n",
"If the hi car's brand was oldsmobile, \n",
" then instead of 9.0, the its consumption would be 6.954\n",
"If the hi car's brand was opel, \n",
" then instead of 9.0, the its consumption would be 6.7\n",
"If the hi car's brand was peugeot, \n",
" then instead of 9.0, the its consumption would be 8.087\n",
"If the hi car's brand was plymouth, \n",
" then instead of 9.0, the its consumption would be 7.214\n",
"If the hi car's brand was pontiac, \n",
" then instead of 9.0, the its consumption would be 7.4\n",
"If the hi car's brand was renault, \n",
" then instead of 9.0, the its consumption would be 8.794\n",
"If the hi car's brand was saab, \n",
" then instead of 9.0, the its consumption would be 7.74\n",
"If the hi car's brand was subaru, \n",
" then instead of 9.0, the its consumption would be 7.824\n",
"If the hi car's brand was toyota, \n",
" then instead of 9.0, the its consumption would be 7.862\n",
"If the hi car's brand was triumph, \n",
" then instead of 9.0, the its consumption would be 12.97\n",
"If the hi car's brand was volvo, \n",
" then instead of 9.0, the its consumption would be 6.028\n",
"If the hi car's brand was vw, \n",
" then instead of 9.0, the its consumption would be 9.302\n"
]
}
],
"source": [
"# Illustration of what would be the prediction for one car if the brand\n",
"# was substituted by another one. This will illustrate that the Triumph\n",
"# \"would\" make a more efficient car that any other brand for the car\n",
"# considered.\n",
"\n",
"brands_df = pd.Series(brands, name=\"brands\").str.replace('brand_', '', case=False)\n",
"for i, brand_name in enumerate(brands_df):\n",
" X_to_pred = X_brand_scaled[28].copy()\n",
" X_to_pred[6 + 9] = 0.\n",
" X_to_pred[6 + i] = 1.\n",
"\n",
" print(\"If the hi car's brand was {}, \\n then instead of {}, the its consumption would be {:.4}\".format(brand_name, y.iloc[28],\n",
" skl_linmod.predict(X_to_pred.reshape(1, -1))[0]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Pour aller plus loin : https://perso.univ-rennes1.fr/bernard.delyon/regression.pdf ( I.2.8 Traitement des variables catégorielles)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Q19\n",
"Reprendre la matrice $X$ obtenue sans variables catégorielles. Obtenez numériquement la SVD (partielle) de $X = U S V^\\top$ (par exemple en considérant l'option **full_matrices=False**); vérifier numériquement que $H = U U^\\top $ est une projection orthogonale (on admettra si besoin que c'est la matrice chapeau, H, vue en cours)."
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"True\n",
"True\n"
]
}
],
"source": [
"# TODO: TO improve and may be give a standard threshold as in Delyon ...\n",
"U, s, V = svd(X, full_matrices=False)\n",
"proj_mat = np.dot(U, U.T)\n",
"print(np.allclose(proj_mat.dot(proj_mat), proj_mat))\n",
"print(np.allclose(proj_mat.T, proj_mat))\n",
"\n",
"# Rem: Note that the centering/rescaling step does not modify the leverage.\n",
"\n",
"leverage = np.diag(proj_mat)\n",
"data['leverage'] = leverage"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Q20:\n",
"La diagonale de la matrice $H$, forme le vecteur des \"leviers\", qu'on ajoutera comme nouvelle variable. Trier la base de données en fonction de cette variable, et expliquer en quoi les voitures ayant les trois valeurs de \"levier\" les plus grandes semblent atypiques."
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" | \n",
" mpg | \n",
" cylinders | \n",
" displacement | \n",
" horsepower | \n",
" weight | \n",
" acceleration | \n",
" model_year | \n",
" leverage | \n",
"
\n",
" \n",
" \n",
" \n",
" | count | \n",
" 392 | \n",
" 392 | \n",
" 392 | \n",
" 392 | \n",
" 392 | \n",
" 392 | \n",
" 392 | \n",
" 392.000 | \n",
"
\n",
" \n",
" | mean | \n",
" 23 | \n",
" 5 | \n",
" 194 | \n",
" 104 | \n",
" 2,978 | \n",
" 16 | \n",
" 76 | \n",
" 0.015 | \n",
"
\n",
" \n",
" | std | \n",
" 8 | \n",
" 2 | \n",
" 105 | \n",
" 38 | \n",
" 849 | \n",
" 3 | \n",
" 4 | \n",
" 0.014 | \n",
"
\n",
" \n",
" | min | \n",
" 9 | \n",
" 3 | \n",
" 68 | \n",
" 46 | \n",
" 1,613 | \n",
" 8 | \n",
" 70 | \n",
" 0.002 | \n",
"
\n",
" \n",
" | 25% | \n",
" 17 | \n",
" 4 | \n",
" 105 | \n",
" 75 | \n",
" 2,225 | \n",
" 14 | \n",
" 73 | \n",
" 0.008 | \n",
"
\n",
" \n",
" | 50% | \n",
" 23 | \n",
" 4 | \n",
" 151 | \n",
" 94 | \n",
" 2,804 | \n",
" 16 | \n",
" 76 | \n",
" 0.012 | \n",
"
\n",
" \n",
" | 75% | \n",
" 29 | \n",
" 8 | \n",
" 276 | \n",
" 126 | \n",
" 3,615 | \n",
" 17 | \n",
" 79 | \n",
" 0.018 | \n",
"
\n",
" \n",
" | max | \n",
" 47 | \n",
" 8 | \n",
" 455 | \n",
" 230 | \n",
" 5,140 | \n",
" 25 | \n",
" 82 | \n",
" 0.187 | \n",
"
\n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
" \n",
" \n",
" | \n",
" mpg | \n",
" cylinders | \n",
" displacement | \n",
" horsepower | \n",
" weight | \n",
" acceleration | \n",
" model_year | \n",
" origin | \n",
" car_name | \n",
" brand | \n",
" leverage | \n",
"
\n",
" \n",
" \n",
" \n",
" | 19 | \n",
" 14 | \n",
" 8 | \n",
" 455 | \n",
" 225 | \n",
" 3,086 | \n",
" 10 | \n",
" 70 | \n",
" 1USA | \n",
" buick estate wagon (sw) | \n",
" buick | \n",
" 0.187 | \n",
"
\n",
" \n",
" | 34 | \n",
" 9 | \n",
" 8 | \n",
" 304 | \n",
" 193 | \n",
" 4,732 | \n",
" 18 | \n",
" 70 | \n",
" 1USA | \n",
" hi 1200d | \n",
" hi | \n",
" 0.085 | \n",
"
\n",
" \n",
" | 32 | \n",
" 10 | \n",
" 8 | \n",
" 307 | \n",
" 200 | \n",
" 4,376 | \n",
" 15 | \n",
" 70 | \n",
" 1USA | \n",
" chevy c20 | \n",
" chevrolet | \n",
" 0.062 | \n",
"
\n",
" \n",
" | 33 | \n",
" 11 | \n",
" 8 | \n",
" 318 | \n",
" 210 | \n",
" 4,382 | \n",
" 14 | \n",
" 70 | \n",
" 1USA | \n",
" dodge d200 | \n",
" chrysler | \n",
" 0.061 | \n",
"
\n",
" \n",
" | 8 | \n",
" 14 | \n",
" 8 | \n",
" 455 | \n",
" 225 | \n",
" 4,425 | \n",
" 10 | \n",
" 70 | \n",
" 1USA | \n",
" pontiac catalina | \n",
" pontiac | \n",
" 0.059 | \n",
"
\n",
" \n",
" | 307 | \n",
" 24 | \n",
" 8 | \n",
" 260 | \n",
" 90 | \n",
" 3,420 | \n",
" 22 | \n",
" 79 | \n",
" 1USA | \n",
" oldsmobile cutlass salon brougham | \n",
" oldsmobile | \n",
" 0.055 | \n",
"
\n",
" \n",
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"data = data.sort_values(['leverage'], ascending=False)\n",
"display(HTML(data.describe().to_html(formatters={'leverage': '{:,.3f}'.format})))\n",
"display(HTML(data.head(6).to_html(formatters={'leverage': '{:,.3f}'.format})))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Conclusion:\n",
"- L'observation de levier maximum a des valeurs extrêmes pour: 'cylinders', 'displacement' et 'model_year'\n",
"- L'observation de deuxième levier maximum a des valeurs extrêmes pour: 'cylinders', 'weight', 'acceleration', 'horsepower' et 'model_year'\n",
"- L'observation de deuxième levier maximum a des valeurs extrêmes pour: 'cylinders', 'horsepower', 'weight' and 'model_year'"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAe0AAAF0CAYAAAAO3WFwAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsvXmYHFd97/09vc6qGc1oJNmyjTxjFjk22JJYwpJAGCVx\nCASIZCWEN/BesJT33mxvkmu9TkKSm3sJSIGs8BKZG5IAWWQpJIFgFo3xjheNxrtlWZrRNlpn69l7\nP/ePqnP6VHX1NuqeLqm/n+eZZ3qprjpdXXW+57ec3xFSShBCCCHE/wTq3QBCCCGElAdFmxBCCLlC\noGgTQgghVwgUbUIIIeQKgaJNCCGEXCFQtEnVEUIcFELsrnc7/IYQQgoh+uvdDkWp9gghpoQQvcvZ\npmKU0d7LOr9++75uhBB77TYetp/vt5/vr3fbyPIRqncDCGkgtgAYrHcjDPzWnlKUau+V9n3KRgix\nFUCXlHKl/fxuACPqOWkcaGkTskxIKQeklLFS2wkhdtud8rK1Z7mOeTmUOn/lnt/lpkrndguAQ0We\nkwaBok0IIYRcIVC0ybIjhNgohDhsx+P22q/tN60RIUSnEEIW2t5+fcp4b7f92m77dce2xn6G1Xv2\n5/YXO0aB9k8JIe42tjfb3WvH9Kfs/72uz/Uaj7ca+9ihzgOAuwHsNrbpNOKXU8XyBeztdriOubVI\nG3q9jmnsMq+NRY5d7HfaYZz7Hfb3Gi7QvkLn1t12929vvm/+Dub5LXh9lEOR/U4JITYa20n1uxU5\nt8X2fdD4LrsB7FD7MD7yZWHHt0kDIaXkH/+q+gfgIIDdRd6fArDVfrwfwFYA/QAOG9vsALC/0PbG\n68Pquf2a+dj93hSAjQA67fc6i7WpRPt324/7AUgAG433+o33hl2f6zUeq++3FcCUsd1eAHe7zsVe\n4/nGIm0zz1uv/VvsNZ5PFWiP45il2lju71pgP9I4fztcv3upc2ueP6/fV70/bBy/0/hNSl0fvSW+\nY6H9Tpm/i93uzkLntsj5K3TtuK+Jg8WuUf5dvX+0tMmyYlsaI1LKA/ZLnwGwXUo5AKDXsEy3AdhX\naHtjl3uN92A+BnAAwJvt43ba7w9JK+45BGBzsTaV+Cr77P0N2MfZbltdA/Zr6r2RItaV2scBWAJQ\njM3CzoyWUg4V2e4+WB0+YAnkXuN5v/1+JZTVxjLOobkf/RzAAKyBlNcx9bktcNi9rt/bbEtMvSel\njBm/ief1UQ7F9nu5LOHaIQ0KRZssN72wxHlYCDEMyyJTYnAfLKEBLIvjQIntAavT19guxr2223CH\n2tYW6hEhRL8t4BuRyzQudYxSHLK37wMw4npvBIWFwbGtGli4kVLeC+t77rfdrgU7cvt7Ttqu2jfb\nn4vZ+94Cy0KrhLLaiNLn0Ou8lIM6t14UEsxeFMgiL3R9lEnB/VaC4frX07dQ+bVDGhSKNlluRgDc\nJ6XsM/622O/tB7DFFqUDZWwPADpb2LbSD8OywDYBuNd17EkAuwE8AGCXzGUalzpGKd5st2MY+VZj\nr/36ZSGl3CWt6T1bAHy5xOYDsLwInfZ3HIBlZfejsNBdLpd7Dguhzq0XhV4fge1FMSnj+iiF5349\njlN0ICCl3CSlXGn/bbJfrtm1Q64uKNpkWbGt537l6rUtnx32e0pstsPpTvXc3oNeWMI8Ynec7kIb\nvQDeC+C9Hi71co+h2G5vuxU5N/R9sNzYW433NtuWciXEYFleKrmr30hymizj8/thhReU5XYQwE5Y\n7utiAqiPWWF7l3oOC+F1bittS6eRJNZrJ7SVuj6Wul/Y++2yH9/p+mg557Za1w65yqFok1pxt+3K\nVX9m1usWALvs1/bD6Ra8D1aCzYEyt9eoOCCshJ4H4C1wUwCm7DYdNKyiso5h0Gm7gb8MYJuUUgni\nJgD3CCvz/R77eaXsA7DD3r+K8X/ZaNtdxT5sn4d+2K5w43kxK9vrmJVS6TksRN65XWJbttm/w0FY\nA5Zyro+K92u/vhfAwQLZ3CXPbRWvHXKVI6SViUjIVY1tEfVJKXfazzthCctBKeWeCvc1BctaL5YQ\nRpYAzy0hxaGlTRqJLo94o+8qaBFCSCEo2qQhsK3pQwAO227Kw7CsbMYMCSFXDHSPE0IIIVcItLQJ\nIYSQKwSKNiGEEHKF4Mv1tFetWiXXr19f72YQQgghy8Lhw4fHpZQ9pbbzpWivX78eg4NX5Vr2hBBC\nSB5CiFPlbEf3OCGEEHKFQNEmhBBCrhAo2oQQQsgVAkWbEEIIuULwZSIaIYSQ+pFKpTA6Oop4PF7v\nplxVNDU14brrrkM4HF7yPijahBBCHIyOjqK9vR3r16+HEKLezbkqkFJiYmICo6OjuPHGG5e8H7rH\nCSGEOIjH4+ju7qZgVxEhBLq7uy/be0HRJoQQkgcFu/pU45xStAkhhFwRrFy5ErFYY6+mS9EmhBBC\nrhAo2oQQQsgVAkW7APFUBlxrnBBC/M+ePXvQ19eHLVu2IBaLYdu2bRgYGNDv9/X1eW4Xi8WwadMm\n7Nq1C9u2bQMAbNu2DZs2bdLbeB1j27Zt2LNnj+c+aw2nfHmwmMrgmj/6Pr6y/TZ8+I3X1Ls5hBBS\nN37z31/Es+dmanqM265dgb/44C1L+uzQ0BAOHTqE4eFhjIyMYNeuXdi+fTv279+P/v5+DA0NYePG\njZ7b7d69G0NDQ9i+fTt2794NANi/fz8A4MCBA/jMZz6D3bt3IxaL4eDBgxgeHsa2bdtwzz33FNzn\n3r17q3ZevKBoezCXSGM6nsbo9GK9m0IIIaQI+/btw8jICLZs2aJf27p1K3bt2qXf3759u+d2ANDZ\n2Ym7775bPx8YGMDevXsxMjKC3t5eAHA83rJlCwYHB7Fx48aC+6wlFG0PlFec3nFCSKOzVAt4Obnn\nnnuwdetWx2vKEh4YGMDu3btx6NChvO1isRi6urr086GhIezevRv79+/HyMgIPvOZz+h9qeWiDx8+\njJ07dxY9di1hTNsD6fpPCCHEn2zfvt3hkh4aGnK8rkS50HYmyoLu7OzUIg1Ax6q3bNmCvr4+bNy4\nsex9Vhta2h6oBDQmohFCiL/YtGmTftzb24uDBw/q5DEA2LlzJzZu3IitW7di27ZtOka9cePGvO2U\ny1tx5513YtOmTRgYGMh7Twny4OAghoeHsXfvXs99KkGvFcKPwrR582ZpjnKWm/MzcVz7Pw7i8x+4\nGb/14311awchhNSDI0eOYMOGDfVuhm/YtWsX+vr6sGPHDsRiMezatQtbtmxZklu80LkVQhyWUm4u\n9Xm6xz3Iaku7zg0hhBDiC5SbvbOzE52dnZicnKxLOyjaHjARjRBCiGL37t3Yt28fNm3apF3hO3bs\nqEtbGNP2QIs2U9EIIYQgN3+73tDS9kCJNS1tQgghfoKi7QHFmhBCiB+haHvAedqEEEL8CEXbg1wi\nGmWbEEKIf6Boe6CnfNW5HYQQQgoTi8X0Cl7Lva9i2/f19dVsxS+KtgfaPU7VJoQQX3HvvffWuwl1\npaRoCyG2CiH6hRB3F9lmo/lYCCGFEMP231779d32//pMbqsAXcaUtjYhhPiKWi996XeKirYSYynl\nAICYKc7GNv0AzAlsXVJKIaXsA7ANwG779R1CiGEAI1VpeQ2hpU0IIf5j586dGBoawqZNm/TSm+r1\nvr4+/VosFtPbbNu2DQCwZ88e9PX1YcuWLYjFYnpJzb6+Pkc9c/e+AMu6V4VVBgYGPNumSp1u27at\nptXSShVX2Q7goP14BEA/AMcyJlLKASHEiPnceHuzlFL5Mu6SUh64zPYuC7niKoQQ0tj85lP/gWcn\nz9b0GLd1rcNfvPXnSm63d+9eDAwM4PDhwwCgxXfXrl3Yu3cvVq5cid27LTtxaGgI27dvx+7duzE0\nNIRDhw5heHhYb9/Z2YmdO3di69atOv7sta+hoSHs379fH3PTpk144IEHHO0aGBjAwMAAhoeHAQAr\nV66s2rlxU8o93gnAHDJ0l7tj2wK/z3ipt5Sb3S9I1h4nhJArgs7OTr0iV1dXlxbgzs5O3H23JTf7\n9u3TlvXOnTv147vuugu7du3SlrHXvvbt2+dYP3v79u247z5T2oCDBw86tjHX6K42tSxjusW0uqWU\newBACLFFCNHvssh9Rc49TtUmhDQ25VjA9aSQQLpfv+eee/JW5Tp8+DAOHDiATZs24cSJE577cmeB\nT0xMoLOz8zJbvXRKWdoxAOpbdAKYqGDfZnLaDiGEOlsTAHrdG9vbDAohBsfGxio4TPWhe5wQQvxJ\nZ2cnYrFYRVOqtm/f7khgGxoawsjICHp7e3H33Xdj8+bNBfe3bds2/dlYLIYDBw6gv7/fsc2WLVt0\nbXLlsq8VpUR7H3IC2wtgAACEEEWHGUIItygPqs8C6LOfO5BS3iul3Cyl3NzT01Oq3TWFS3MSQog/\n6e/vz0tEK8XGjRuxbds2nUw2ODiIgYEBbNq0CX19fejt7S1oPff39+uEtfe+973YvXu3dqGb2/T2\n9uoEtlpa4qKUC9ieojUCoFclldmLdW+yH28F8GUYiWa2aO+SUu507WfS3s+eYsfcvHmzHBzM0/Vl\n44XzM3jj5x7Gp7a8Fn/802+oWzsIIaQeHDlyBBs2bKh3M65KCp1bW1c3l/p8yZi2kf1tvrbJeHwA\nwAHX+yMAdrpeu2JmxHM9bUIIIX6EFdE80Etz1rkdhBBCiAlF2wMuGEIIIcSPULQ9YPY4IaTRodFS\nfapxTinaHmj3OK9ZQkgDEgwGkUql6t2Mq45UKoVQ6PLKo1C0PcgyEY0Q0sB0dnbi4sWLyGaz9W7K\nVUM2m8XFixfR0dFxWfupZUW0K5ace5yqTQhpPFatWoXR0VEcPXq03k25qmhtbcWqVasuax8UbQ/o\nHieENDKBQAA33HBDvZtBPKB73AMmohFCCPEjFG0PuGAIIYQQP0LR9kAvzVnndhBCCCEmFG0PWMaU\nEEKIH6Foe0CtJoQQ4kco2h7opTkp34QQQnwERdsDuscJIYT4EYq2B1zlixBCiB+haHtAS5sQQogf\noWh7wHnahBBC/AhF2wNWRCOEEOJHKNoe6OIqVG1CCCE+gqLtQZarfBFCCPEhFG0PuMoXIYQQP0LR\n9oAxbUIIIX6Eou0Bs8cJIYT4EYq2B1zlixBCiB+haHuQs7Tr2gxCCCHEAUXbA1ZEI4QQ4kco2h5w\nlS9CCCF+hKLtAS1tQgghfoSi7YF0/SeEEEL8AEXbg1wZU8o2IYQQ/0DR9oCWNiGEED9SUrSFEFuF\nEP1CiLuLbLPR9Xy3/X9HJfvxC4xpE0II8SNFRVuJsZRyAEDMLc72Nv0A9rte3iGEGAYwUu5+/ISu\nPU5bmxBCiI8oZWlvBxCzH48A6HdvYAvxiOvlu6SUffZ7Ze3HT9DSJoQQ4kdKiXYngEnjeXeZ++11\nucKXup+6kKVoE0II8SGhWuxUSrkHAIQQW2z3+RUFa48TQgjxI6Us7RiALvtxJ4CJUjsUQuwQQmy1\nn04A6C1nP/bnBoUQg2NjY+W0vWZwlS9CCCF+pJRo74MlurD/DwCAEKKzyGcG1XYA+uznnvsxkVLe\nK6XcLKXc3NPTU17rawS1mhBCiB8pKtpSyiFAZ4jH1HMAD6htbKt6s7Ku7W3utJ8PSymHiuzHl+Sy\nxwkhhBD/UDKmLaW81+O1TcbjAwAOlPGZvNf8CrPHCSGE+BFWRPMgVxGNqk0IIcQ/ULQ90EtzUrMJ\nIYT4CIq2B9o9Xt9mEEIIIQ4o2h7kYtqUbUIIIf6Bou0Bs8cJIYT4EYq2B8weJ4QQ4kco2h6wIhoh\nhBA/QtH2gLXHCSGE+BGKtgc5S7uuzSCEEEIcULQ9yNLSJoQQ4kMo2h5wyhchhBA/QtH2QLr+E0II\nIX6Aou0Bp3wRQgjxIxRtD3LZ41RtQggh/oGi7QGzxwkhhPgRirYHdI8TQgjxIxRtD7J0jxNCCPEh\nFG0P6B4nhBDiRyjaHrCMKSGEED9C0faAljYhhBA/QtH2QCei0dYmhBDiIyjaHjB7nBBCiB+haHtA\nC5sQQogfoWh7kHOPE0IIIf6Bou2BnqdN/zghhBAfQdH2gKt8EUII8SMUbQ+YiEYIIcSPULQ9UIlo\ndI8TQgjxExRtD5iIRgghxI9QtD1gRTRCCCF+hKLtAS1tQgghfqSkaAshtgoh+oUQdxfZZqPr+Q77\nb7fx2m713uU0eDnglC9CCCF+pKhoKzGWUg4AiLnF2d6mH8B+1/MBKeW9AHrt5wCwQwgxDGCkWo2v\nFbS0CSGE+JFSlvZ2ADH78QiAfvcGtqCbQtxrbDdiPweAu6SUffb2viaXPV7nhhBCCCEGoRLvdwKY\nNJ53l9qhbWErNgLYZz9WVvdGKeWeilq5zHCVL0IIIX6kZolotit9SEo5BABSyj22ld1tuMx9CbPH\nCSGE+JFSoh0D0GU/7gQwUcG++6WUuwCdmLbVfn0COZe5xt5mUAgxODY2VsFhqo9KQKNmE0II8ROl\nRHsfcgLbC2AAAIQQncU+JITYoVzgtlU9qD4LoM9+7kBKea+UcrOUcnNPT0/536AG5CxtyjYhhBD/\nUFS0lWvbFt6Yeg7gAbWNbUFvVpa0ve1uIcSwEGLK2M+d9jbDxn58CWuPE0II8SOlEtHciWXqtU3G\n4wMADhjPBwCsLGc/fiVL9zghhBAfwopoHtDSJoQQ4kco2h7k1tOmahNCCPEPFG0PdPY4NZsQQoiP\noGh7IF3/CSGEED9A0fYgF9OmbBNCCPEPFG0PdO3xOreDEEIIMaFoe5Bl9jghhBAfQtH2gGJNCCHE\nj1C0Pchlj1O9CSGE+AeKtgfMHieEEOJHKNoesCIaIYQQP0LR9oDZ44QQQvwIRdsDztMmhBDiRyja\nHjCmTQghxI9QtD3IsvY4IYQQH0LR9kC7x2lrE0II8REUbQ+YPU4IIcSPULQ9YPY4IYQQP0LR9oDZ\n44QQQvwIRdsDnT1OzSaEEOIjKNoe6NrjdW4HIYQQYkLR9oBLcxJCCPEjFG0PcoloVG1CCCH+gaLt\nAad8EUII8SMUbQ9yxVUIIYQQ/0DR9iCXPU7ZJoQQ4h8o2h4we5wQQogfoWh7wHnahBBC/AhF2wNW\nRCOEEOJHKNoeZOkeJ4QQ4kMo2h7QPU4IIcSPlBRtIcRWIUS/EOLuIttsLPWZcvbjF5iIRgghxI8U\nFW0lxlLKAQAxtzjb2/QD2F/sM+Xsx09QrAkhhPiRUpb2dgAx+/EIgH73BrYQj5T4TMn9+AkmohFC\nCPEjpUS7E8Ck8by7jH16fWYp+6kbdI8TQgjxI0xE84CJaIQQQvxIKdGOAeiyH3cCmChjn16fKbkf\nIcQOIcSgEGJwbGysjMPUDr00J21tQgghPqKUaO8D0Gs/7gUwAABCiM4KP+O5HxMp5b1Sys1Sys09\nPT3ltb5GaPc4NZsQQoiPKCraUsohQGeIx9RzAA+obYQQWwFstv97fqbIfnyJdP0nhBBC/ECo1AZS\nyns9XttkPD4A4EAZn8l7za8we5wQQogfYSKaByqWTc0mhBDiJyjaHmhLu77NIIQQQhxQtD3Iucfr\n2w5CCCHEhKLtgXaP09YmhBDiIyjaHmRpaRNCCPEhFG0PGNMmhBDiRyjaHuSyxynbhBBC/ANF2wNa\n2oQQQvwIRdsDLhhCCCHEj1C0PaBbnBBCiB+haHtgSjYFnBBCiF+gaHuQzeaEmppNCCHEL1C0PZAF\nHhNCCCH1hKLtgWld0z1OCCHEL1C0PaClTQghxI9QtD0wrWsa2oQQQvwCRdsDp6VN1SaEEOIPKNoe\n0LomhBDiRyjaHpjWNQWcEEKIX6Boe5A1s8eX8PlkOouLs4mqtYcQQggBKNqeOBPRKpftX/z6Yaz9\no+9Xs0mEEEIIRdsL5zztyj//jRcu2J+lb50QQkj1oGh7UK152llqNiGEkCpC0fbgci1tRYaqTQgh\npIpQtD1wZI9fhq2dpXucEEJIFaFoe1AtS5uiTQghpJpQtD0wxZYxbUIIIX6Bou2BIxHtMqxlxrQJ\nIYRUE4q2B/Iyi6so6B4nhBBSTSjaHlRrlS8a2oQQQqoJRdsDuscJIYT4EYq2B3SPE0II8SMlRVsI\nsVUI0S+EuLuc94UQG4UQUggxbP/ttV/fbf/fUc0vUAuclvbS90NDmxBCSDUpKtpCiI0AIKUcABBT\nz0u83yWlFFLKPgDbAOy2N98hhBgGMFLl71B1ZJWmfNE9TgghpJqUsrS3A4jZj0cA9Jd63xZwxWYp\npRLpu6SUfa73fYljac7LMLXpHieEEFJNSol2J4BJ43l3ue8LIfoB3Ge811vMze4nnGVMlw4NbUII\nIdWkloloW6SUygqHlHKPbWV324LuQAixQwgxKIQYHBsbq2GzSsMypoQQQvxIKdGOAeiyH3cCmKjg\nfR3/tgV5q/10AkCv+0BSynullJullJt7enrKbH5tcC7NeRlTvijahBBCqkgp0d6HnMD2AhgAACFE\nZ4n33aI8qN4D0Gc/9y2XU1zF/GyW/nFCCCFVpKhoSymHAB2fjqnnAB4o8T5gZInbr99pW9vDru18\nx+W4x9OGUFOzCSGEVJNQqQ2klPd6vLapxPsjAHaW2o9fuRz3eCKd1Y/pHieEEFJNWBHNg6yUEMJ6\nXKnumqLNRDRCCCHVhKLtgZRAwFbtSmXXIdrZIhsSQgghFULR9kACCCpTu0LoHieEEFIrKNoeSCkR\nWLJ7PKMf0z1OCCGkmlC0PZAAAgHlHq8wES1jxrSr2SpCCCGNDkXbAyumnXtcCc6YNlWbEEJI9aBo\ne2C5x5eWiJZkTJsQQkiNoGh7IGFkj1covJzyRQghpFZQtD3Imu7xCj/LmDYhhJBaQdH2QEqJoEpE\nu4yYdoaqTQghpIpQtD2ge5wQQogfoWh7IC/HPZ6me5wQQkhtoGh7IGFkj9M9TgghxCdQtD2onqVN\n0SaEEFI9KNoeVC+mXc1WEUIIaXQo2h5ks0svrjKfTOf2Q0ubEEJIFaFoeyCBJU35+pOBY/ij77+q\nnzOmTQghpJpQtD1wxrTLF95/f/GC4zk1mxBCSDWhaHuw1OzxVa0RAMBPvq4HAN3jhBBCqgtFG8BL\nF2Ydz6UExBJW+ZpaTGHL61bhrz98CwC6xwkhhFSXhhftp05N4ZY/fQjPnZvWrzmyxytwj08uJNHV\nEkHQ/iwtbUIIIdWk4UX7/EwcADAxn9KvWUtzqsfl72tyIYWulrAWfBrahBBCqknDi/ZCKgMASBqr\nczkt7fKQUmJqMYWVzWEt+HSPE0IIqSYNL9rzSUu0U6Zoy8qnfM0m0shkJbpaIoalTdEmhBBSPSja\nWrQtgVUV0Cqd8jW1YLnXu1rCWvBpaBNCCKkmFG27gpmytJVxXOmUr0lbtB3ucVrahJAacMHOxSGN\nB0U76YxpK5mtNKY9uZAEAKd7nKY2IaTK/Ovz53DN/ziIR4Yn6t0UUgco2iXc4+UytUj3eD1IG7kI\nhDQC3z86BgB46eJsiS3J1UjDivaxsTm890tP4MJMAgCQyhawtMt0cWv3eEvOPc5EtNpyemoBLffc\nj2fPTpfemJCrhLmEZWi0RYJ1bgmpB6F6N6Be/P53juIHx8d15bOcpW09r3Seds7SjiBpL8/JmHZt\nOTsdRyojcXpqEbet66h3cwhZFlQeTnu0YbvvhqZhLe3msPXVla6qmHZWu8crj2k3hQJoDgdz7nF6\nbmtK2o4/pHiiSQMxZ4f0wsGG7b4bmpK/uhBiqxCiXwhxd7nvCyF22/93lLuf5aY57HQtaUvbfp6b\np13mlK/FFDqbwwBA9/gyoYrXpDM8z6RxmE1YljaLNzUmRUVbCLERAKSUAwBi6nkZ7+8QQgwDGCln\nP/UgX7TVlC/3PO3yiKeyep/KSqd7vLYoSzvNzos0EHO2aPO6b0xKWdrbAcTsxyMA+st8/y4pZZ8t\n0uXsZ9lpiRSwtJc4TzuVySIcFI7P0tKuLcrSSNHSJg2Eco9TtBuTUqLdCWDSeN5d5vu9Lld4qf0s\nOyHXnK7C87TLuzFSWaljTJzytTzkLG3GtEnjkLO0ed03IjXJZJBS7rGt7G4hRFlWtRBihxBiUAgx\nODY2VotmOUiknRd8fkU0OJ6XIp3J6oEAFwxxIqXE73zzJRw6HSu9cQXQPU4aETXlix6mxqSUaMcA\ndNmPOwG4S/DkvW+L71b7tQkAvWXsB1LKe6WUm6WUm3t6eir7Fksgns44nqeyKhFtadnjlqVtfUbQ\nPe5gIZnB5x8ewbu/9MOq7jdD0SYNiPIK8rpvTEqJ9j5Yogv7/wAACCE6i7w/qLYD0Gc/99xPPSlk\naWeXaGmnMlmEA7nTGQwIusdtpuOWOy9a5SkqesoXq6KRBoTu8cakaC8qpRwCANvFHVPPATxQ6H37\ntTtta3vYeM1rP3XDLdrJtLOMaaVTvtJZiVAwFycPCFraium4VXimtcoVnFSnRYuDNArxVM5DyKmO\njUnJkjpSyns9XttU4v2yXqsneZZ2oTKmZe4vlZGIGJZkQAjGtG1idrU4d8b+5UL3OGk01L0E8Lpv\nVBq2pE6+e7x6U74AusdNlHu8+pY2RZs0FhTt+vHzf38In33gWL2b0bi1x+MFs8fdxVUqcI8H6B73\nQlva4dpY2oxpk0YhZg+AgcYV7blEGk2hAELLXMb10JkYQoH627n1b0GdSLiyxwvO0y7b0paOWsB0\nj+fIxbSrO0akpU0aDael3ZiD1Vs/9xD+8tETy37cVEbmzTqqB6LcRKvlZPPmzXJwcLAq+/rNp/4D\nz06ezXv92bMzWkwAa3WuW69pRyot8cNTk1jdFsWluQRuvWYFulrCJY9z6HQMLZEgfmRtOwDgsROT\nWNsWxU09rVX5Hlcyp6cWcWJyAataI/r8VIOz03EcH5/H9R3N6F3VUrX9EuJXxuaSeNleR/s1K1uw\nvqu5zi1afh4ensB1Hc3oW+Z7/vETk2iPhvDGa1cAAG7rWoe/eOvPVW3/QojDUsrNpbZrWEvb7bpW\nz9Wr2tFd5phGImedq8/7bzhUH5THQUCU2LIy1E+Y5ZkmDYLZb/nR4Ko56p6vw3eX8EeVy6s+pl1o\nJHT75x+KrNlJAAAgAElEQVRGe1MIm67rwBMnp9CUCOKhO96O8zNxXPs/DuKON1+Pv3/hDD773rfg\nZzasKXmcGz89gB/r7cY/3HE7AGD1H34PH1h9Db50xxur+n2uRP7rvz6PLz1zCu+6dS3+9Y43V22/\nn39oGL8z+DI+9I71+Os7bq3afgnxK//7yVO466nnAQC/+J6b8Nk7NtS5RctLOpNF+O5v4wM/+ppl\n71tb/r9v43VrV+ChO961rMd107CWdiKTxdr2KP78525BezSEZPryypimMu5ENMFENJvpRSt5ptpl\nFxnTJo2GmUDbiDHtXEGl5b/n/RLTbljRjqeyiIasrx8OBox52ksrY5rOOhPRgoJTvhQqd6Da4sp5\n2qTRiKesfioYEA153ddrkSApJdJZqc9/PWlY0U6ks4gGrSlI4aDwmKcN+3mZq3xlsghzypcnKuO1\n2lOzWMaUNBqJjGXptUWCDSna6l5fbktbnWta2nUkkc5oSzsSDOSmfC25uIqrjGmAU74UqrhKqsrn\ng2VMSaMRT2URDAg0hRtTtOsVElODBXd9j3rQuKKdyaIpbLjHM86LQcWny3ePuxYMoXtcUytLm+5x\n0mjE01ZYLxQQDVl7XPXTqWV2j6vjLqZoadeNRNqMaQstKPNJyypsb7IS68t3j0tHGVO6x3NoS5uJ\naIRcFvFUxqoGFhANmohme9eWecCiLW3GtOtDNiuRyki9VGQ4kLO055IqZlT+bDiVpGCWuGNFNItM\nVmI2oUS7NpY2Y9qkUYins2gKBREKiLpkUNcbncey3Ja2YSCk69zfNKRoJ+yTrmPaIaFj2vO2wLRH\nbUu7jP0p8ci3tKvV4isX5bkAqm8R09L2Bw8Pj+Prh0fr3YyGIJ7OoCmsLO3Gu+61e7xOljaQv9jU\nctOYop12irYV07Ze05Z21MosL8fDnXLFwQG1ylfj3VRuzJurVtnjjRjb8xNf+uEp/MF3j9a7GQ1B\nPJVFUyiAcDDQoO7xeiWi5Y5X72S0q74imhdKtJvsVafCAaGFdy7P0i59cSjRyFswhKKtPRhA9bPH\nM3VylREn8VSm7tZHoxBPZ9EUDiKblQ1qaWcd/5f7uED9p301qKVtnXQd0zYs7Xnb0taiXZalnbX3\n46qI1oA3lZuk0ZnXzNLmea4r8XTWMTgjtUMnogUb0z1eN0vbON5inZPRGtLSjrvc4xF7ypeUEnN2\nDLatgpi2cp2YiWjBAGPaQM7SbokEa5c9Tvd4XUmks7S0lwmViJaVjXnd16ugksPSrvO0rwa1tN0x\nbctCTmeltrQriWmnC1nadI8jaXcsLeEg52lfpcQp2stGIp1t8ES0+hRU8lNMm6KNXCw6lcliLpFG\nNBTQhVLKmaetftCwe8oXRVu7x1tqUHaRZUz9QSKdQTKTretSkZmsxMXZRN2O7+axkYmaXJdxu5Jj\n487Trn/2OC3tOqAT0UK52uOAdSHMJzNojQShlsYuzz1u7c8sYxoMCNTjnnrx/Ay2/M0TWDCmWtUT\nFe9vjQRrlojWiBaHn1D3UzkdaSKdwe9/55WqX5///MxZ9P3JA3rKZj05NbmAd33xh/jmSxeqvm8r\ne7wx52l/4/nzODcdB1DfmDYt7TrgtrQjtqWdtC3ttmgISn7Lc48rS7s6FdE+8LdP46uDZ5b02adO\nxzBwbBwnJxeX9Plqoyzt1khx9/jv3X8En9z3XEX7Zu3x+vKPh0fx5SdP6U6sHBf506dj+PTAMTwy\nMlnVtpydjmM+mdHV9+rJ5IJVtnemBm2JpxszEW1yIYmf/4dBfPSfngGw/N41M6G23qLdoIlodva4\nK6bttLRV7fEK3ONVmvL13aOXsK6jCb+8+fqKP6s6zlkfWByAO6ZtJfupc2vyxKkpPYouF2aP15ev\nPH0G0/GUvuYS6QzaS3QpqgxktWPgymW54IPa0Ko+dS0y6uN2TDscaKx52rOuAVB9s8fpHl928mLa\nASOmnUyjLRLKucfLmfKl3ON5lvZS2pZBKiOXfGGo6Wz+EW1laVudeaHSrjPxNGIVWiYsY1pfEukM\nFlMZLZiJMn4HNWCuumjb+1tI+ki009UXFu0ebzBLe871uzJ7vMHIxbRdlnbWsLTtbcu5LbR73B3T\nXoKlPZewLoilzgVUlm0x0U6mly9pyExEAwqPkGfiab0aWLn42dJ+bGQCz56drnczakoik8VCKqPF\nuhyRUuJabStUDQbqbQUBOWu/NpZ2Y5YxnYk7+4blT0RjTLuu5CxtS0hUTPtMbDEX09braZfjHldT\nvi5/wRAltku3tIu7xxdTGaz9o+/jX58/v6T9V4qZiAYUvtlmE2kk0tmKRrF+Fu13ffGHuP3PHql3\nM2pKMi2xmMo63OOlSFQQ/64E5Xb3h3u8NgOTjL3QkZWIFmioedru/IBa3PNSSnx18EyeKx5wW9oU\n7WVnciEJAOhstly2Smx/4ktP4JmzM0Ut7f/nwPP4q0dHHK951R5fqntcie1SOx/tHi/gap5aSGFq\nMYXhiYUl7b9SlPWlRbtAHG7G/t6VWNtXgnv8aq6Kl0hnMJ9M64FYWe7x1NXvHldtSFb5O6p7O7c0\nZ32vrX84dAZb/uYJPDoyUfNjuRMMa3HPn5hcwMf++VlPg8ZpadM9vuyMzScRCgh0NocBON3aAIrG\ntO9/5RJ+cGzc8ZpX7fGlu8erY2nPFLC01WBgueIyuiJauLClnc5kdUdXiWj72dJWjEwuz+CoHiQz\nUodzgPKEuBKrvBLU9VxN9/jXD4/iMw8cq/hzi+nauMfVwCTnHl++wWo2K/HlJ0/pgchMPIWP/8uz\nGDg2jgeP11603e7xWtzzqu+ZSeT3QaaxQfd4HRibS6KnLaJd4KbYAkBrNAgB5R53fnY+kc4TRPWD\nOi3tpYn25brHS8W0lTguV/1cdyKa1wjZTDKpZMpOLUU7nsrggVfHLns/z1zFcW23SJdjWVYyPawS\ntKVdRdH+v/7pGfzu/a9U7C1R9261465mAm0ouLzztA+diWHH/ucxcMy6J+aT5mCt9gaAu89NZ2XV\n83JUnznv4a0xz3W98yYaUrQvzSXQ0xrVz8351QDQ5iiu4rww5pKZPEHMTflyivblxbSX1qmVco+r\nC265XDzmPG3AuyMzR9FLcY/XIra3/7lz6N/7JM5MLW2++4oma5AyNHo1i3bG9bye2eP2lK8auMdP\nVOgt0e7xalvaqVxRqOV2j0/b96jqV0zhWo4SttOL+f3ZUvrXYszaXqM5D4OHMe06oyxtRczlemmN\neBdXyWQlEumsx5zB/ES04BJj2srduPSYdvFEtIUauBGLoeL9uezx/AveTDKpzD1uV+KqgZtwfN7K\ne5hcTC7p8+q6ef78TBnbSkwtLO04tWIukS5pYSZdg6VyYtraPV4jQavFdT1UobekVvO0446YdmBZ\nRduda2MK13KItrfLusqiHS9taUdDAf/HtIUQW4UQ/UKIu8t9Xwixw/7bbby2W71XjYZfDmPzSfS0\n5kT7fRvW4L+/uw+/8a4bAVgXplcZ03m79OJswvmj5Vb5MiztJca0vdzjE/PJomImZc5VVG/3+IWZ\nOCJ3/yceGbbiXOVY2mZb3QOoYqg+UcrqJ3ypgcRcYqlhCqtxl+ZK18P+68dOoOtT38NJn8S/F5Jp\nXPfHB7Hv2XNFt3N31mVZ2rUqrlID97iaElppiGOhRvO0taUdDiIcXN6YtjYmkvmeumoPwExm4im8\n8XMP4f4jl/Leq7aHTfVDXve8MgzaoyF/W9pCiI0AIKUcABBTz4u9L4ToBzAgpbwXQK/9HAB2CCGG\nAThTr+vA2FwCPW0593hTOIg9778ZP7K2HQAwGls0Ytq5C0P9mPnu8epN+fJKRPuFrx3Grxx4vuBn\nPvXdowj8zn/anoDixVW83OPHxuaqZuk9d24GqYzE73zrZQAeiWglLe1KYtpZ43Fl5/rg0TH809Bo\nwfdzN3DlRWqklFqUphZKD0JUIs/Tp2MVH6sWxBbTmI6ncTpWODQgpcyzJKsZ0z47vZiXfFR0v6nq\nusfTmaxua6UhjlpN+Yq7s8eXKaZ9ZmpR3wfLbWk/fTqGF87P4tWx+bz3qu1hy8W0vdzj1rluj4Z8\nn4i2HYDqSUYA9Jfxfq+x3Yj9HADuklL22QJfN5LpLKbjaYd7XPEzG1YDAD725lz5UG9L2+k6LFx7\nvPL2mTFtNWA4HVvE2SIlPj89cMz+TCaXPV4gpp1zj+cuvPd86Qn8r4HKs2S9UAOXQ2esy8JcTxso\nENNOLNU9bv4Gld1IX3j8RNHvrNq0lMpy5necKuP7vGZlMwDg1JQ/LO3FMmYYeP2O5bnHy3Md9//N\nk/iD7x4tuT+F6ki9PEgnljC9cdIYbB0dm6vos7Vzj7uzx2sv2o+fmMQN/2sAg/bAJWdpL49oFxsw\n1czS9nSPZyGEtWRzvRdjKiXanQDMyv7dpd6XUt5rW9kAsBHAoP24t5ibfbkYm7fclaZ7XLGuoxny\n8+/He25a5Tnly4x1mI+1e9ysiFYgezyblbjv2XOeVvj+587pEaUqpABYAlyOeJiiXdLS1i68LM5O\nx8ty45aD6SFYSKaRTEtEggHH8qduZpcY0zbPYaWZtPFUtmj883Lc46qzjoYCiC2mSrruV9ten9NL\nTHqrNjlvTOHO2KujLi8RrTxL+/xMvKKlNnUimus3fXVsDr1/8gAeq3Au8YSu5RD2jHEWo3aJaMrS\nDuqYdq0rGw5PWP3RyxdnARiWtuker6VoFwlNLLelHQ4E0BoJ1b2AT80S0WzX+ZCUcggApJR7bCu7\n23CZm9vvEEIMCiEGx8Yuf6pNIcbmrJvRy9J2tsf6b2aPm65SUxRzlnZp9/jjJyex/WuH8woSJNIZ\n3PnVwzhgTOxXnedMIu3ppk1nnElxC8mM7ihKx7St/0qslxq7dWMK4VOnY0hls4iEhI73F7O0V7VG\nljTly/24HBLG3HAvZi/D0lad2Jr2KLLSuY+nTk3hSz886dhetf2kb0Tban+xhBsvQapsnnbxbeeT\nmYqSynRFNNdvemHGur6Leaq8UJb2DZ3NFYv2ojEgriYOS9s2EGptbE/YCZmjMev8qXOhznckGKib\npV3tKW+lYtrhoEBLOFjx9VBtSol2DECX/bgTgHu4Wuz9finlLkAL8lb79QnkXOYa20LfLKXc3NPT\nU8FXqAwl2quNmLYXXvO0zR/L7IhzMW0zEc37hlJZyW63qdcUrcVUBilbXLxcNn/wvaO45XMPObbP\nWdreF5Z2j9vbXZhVol0dl4/Z0Y7GFpFMZxEOBPS58RJXZdVe19F0Ge7xSi3tTNFkPG1pL8EVpgRt\nbbt1jZm/9d88cQr/3Y73K5TLWFk19WbRI27pxqujLseyLKciWjKdRTorK7Jocu5x52fUPrzun2Io\nsbq+swkLyUxFFm2tao+r/IiWcNAYBNc2vjphH/P8rCXa7kF/R3OoZqI9E0/h2Pi8Dq25qXZ4YLbI\nPZ/KSISDAbRGgnWvuldKtPchJ7C9AAYAQAjRWeL9HVLKPfbjflguchXL7kPOZb7sFHOPm3isHllE\ntFX2uDnly9s9rkTJLZJencpiKlvQ4pNSYt+z5xwu1QWXe9yro9FWlH3TKRdkpZ1aIUwhXEhZln8k\nFHCspOZmNpFGcziAVa2Rit3j6nfy2u/0YqpgpxZPZ4uKghLty7G0tWgb8dELs9a6z+YcZ5XxPzy+\nUPW5p0uh3u5x1WlW0jkWWppTfZdKB6XKPX59Z7NjP8VIpDP4/e+8og2DaluCDw6PY1VrBH3drVq0\nax3XVoMX1ZUsuK6NjqZwzYqrnLGt+3fd2OX5frUHLMWLq1iWdmvE55a2cm3bwhtTzwE8UOh9+/Fu\nIcSwEGLK2O5O29oeNvaz7Cg32doVTUW386o9bo7AzESv3Dzt0hXRtGi7fnivTmUxldHHWUhmHB36\n0UtzGHEl2Cymsnp0n8lKz07XPeWrlpa25a6XiARFLqbtaWmnsKIpjM7mcEVTvtJZqafleHVet37u\nIbTecz+OeSQSxVMZO2/A+8Yv5iorRZ5oGwMR5a41E53U9slMFqNFMraXi3JK3dbSPT6vVror04KT\nMnetu4VePa/UYzIxb7vH7STBcjrqp07F8OmBY3jxghX/XYql/YXHTmD7Vw/nvZ7NSnzv6Bh+6vU9\nCATE8om2a1aJTkRTlnZTqGZTvtSxbl7T7vl+1S3tIjNGVEy7xQeiXXzFelhua4/XNhV6345bryxn\nP/XgyMU5rGmP6rrjhcit8pV7raCl7blgiIDXtaymNLkvDC+LbiGVcSRbLCQzaLcrbd3/Sv68xYVk\nxtEZzsTTaA47XUvuKV85S9t5/EOnY0hlsnh7gVFuIRyincogmc7aiWiF3Xkz8TTaoyFLtCu0tJtC\nQSymsnk3cCqT1SP1P39kBP//z7/R8b7qaBZTmbwytlabvD0i5ZBzj1sDwymjQIsaJE3MJ3GNPXA0\nO/dCNeOXk2KW9k/f+ySu62jGr9s1DUwqs7S9O745o0xwuZa2ef7cFnHO0q6so51ctNYnWGOH0eaT\nGZQK2rnvoaWI9sPDE/iOx719eHQaY3NJ/PQbrBku6ppN19g9rsJ5Crel3dkcrloSqxuVEPa6nlbP\n95fV0s4qS/sqTkTzK0cuzWHD6raS2+UqouXEYD5RQLTtiydoiHYwAG9LW4uB29L2co9nHBa92SkM\njU7j+s4mtEWDju0T6awWyEIDAWtbp6XtvlB/9/4j+K1vvpT3+VKo/QYDAgvJjJ2IZmaPexdXWdFU\nuWinsxJNYe/Oy9yP13kolLikuJwpX2YiGpBzj2eyUndwpgVjil096hq7wyjFEtG+d3QMf/v06SXH\ntJVYF7LObt7zIP7XwVftdpR3LtwhGa/3KnaPzyfR3RrRRYHKGUC47+GlFFeJLaYwn8zktXforDWF\nUrmKC1naw+PzVU2AUx4Hhbu4SkdT7WLa6re8fV0HvvaR2/FLG9c53q++pZ3Lt3D3J2ZM2yu7fDm5\n6kX7i4+dwIf//hAAq3N6+eJsQXeLiVdFNFM0VWc+NBrDD46NIxwU2joHynGPu2Paxd3j5jEBS2zX\ndTTj9T25AchCKoNEJovuFite75Xc5k4kuWAnmLg7iVg8hdhiCv94eBR/WMF82cVUBs1hO2HDtrTD\ngYDRyXjHtNsiQXQ0hSwXf5mdQDqbRVNIFW1xnmvT/ezV4Rab15tIZ/TgYkmJaC73uGrL+HxSJyea\nnWGyjqJ9fHweK37vO3jj5x7SrvlyEtHcbtOAuPyYdiKdwZlYHM+es0q/lmvRmG589++55ES0hRS6\nW8JojVqerXJcou57aCmWtgqluKe7qX6g287F8RLt+UQaN33mB/jkfc9VfNxCuH9nM3s8IIC2aA1F\n2z5WaySIj266Dte6Qpq1yh4H8n9vFdNuiQSRyhQOqy0HV71on59N4JsvXUQ6k8X5mQRm4mlsWFOJ\npZ17bT6ZK2+qbqJfOfACHj855XCNA4WnfBVMRPOMaWd1oX73Nudn4rhmRRRvMLwGi7ZIrrJvbC8r\nUXXIibRVvEV1DouprKO9s3HLTbn/uXP4ytOn8/ZTCEu0g2gJB3Mx7ZAw3OP552Q+mUFrJKRDFtNl\nxrUzWRiWtnO/Zhy5kDCr9rpxDJQqmIKm923f0F0tYYQCQrfl/Exu2tGkaWnXcTGCo5fmMJfI4IXz\nsxi0C+KUk4j2w5OTjucrmsIVlTH1Gpgpj4TKOyl3AKPaqbw7JktNRJteTKGjKawt7XKsq2q4x2MF\nRHs6noYQuXLAKunVFG3lHfrHIpX+AGtWx0iZMxUmCrjHF1MZNIWDiIZqN+VLHUtlj0dCTrmqdhlX\n5fED8n/LVCZrz9Mu3/NSK6560b6xqwWZrMTodFwXCCjLPa5i2oatPZ9Mo6s5jICwfuDYYgqHR62O\nzm1UF6qIlhNt54+uXDNf/PCtuP+TbwFgXRgO97jxmQuzCVzT3oQP/Mha3HbtCr19ooRom9ZLPJ3V\n7nH1/cz2zCascpaVzJ1eTGUt0VaWdsaOaRfJHl9IZdAaCWrRLuYif/7cDHo//QDG5xK2pe2diKZE\nMRoK5FlsjsSlEqK9lKx6cwnFlS1hLdrmuZ5YcFraajC43Ja2eY24Y8nFEtEeO+EW7fIsrmILhqjz\nNGu0o5ypVqqdK5vDeb/nUhPRrIFkMNdJl/G75LvHL8PSnsu3tFdEQ7pfCnlMoVTnrZTX+Nf+7UV8\n9B+fKdmWhWQ6b+BmVkRrCgUQLTBPO5ku32NWCGXtqhLIEVfuSSojcWk2saSBtZtMVmIhmdHesTxL\nOyt19rjX+8vJVS/a6+3sz4FXx7Dr20cAADevrcA9bt8A33rpAp45O4P2phDaoiHMJtJ4eHhC3yDu\niztoLBhycnIBv/xPzyCeyuQS0dzucfuG+9jm67T73ium/fmHhvHJfc9hciGFtSuiuPO2a/Hor74D\nQM49XlS0jYstnsrg4mwCUVv45lwx+7lEBpMLKcwm0mVPRcq3tF2JaB77UR1kTrTz2/3cuWl88CtP\n4/GTkzgxuYBj4/PISmj3uHvUrVzS6zqa8oQwlZH6d/USSXXemsOBpSWipXOFJ1Y2h7UFqTLHAacF\nk0hn0dEUttuzvJa2Q7T1sosqpm39H5mYx2zcOYXwhyen9ONQQKC5TIvLXJrzxfMzjmpx7jrtWVna\nWn3g1TH8wtetySgrm8NVS0RTA0klGGW5xy/T0s5mZUFL25phkcsb1u5x4xjlite5mbied10MFcIx\nvYhm7fGmkG1pe3zPD3zlaXz8X54tqz2FUH2VsrSjIbdoZ/HOLzyO3/yPFy/rOECu/1XJoe773nKP\nWxXRgPI8L7XiqhftG7tbAAC//a2XceTiLPZufaP+YYphTvmSUuIj/ziEJ09NoTUSQns0hNl4Gj84\nPl7w8wEhkLE7ufuPXMLXDo/iyMU57frNS0RLWu6vlkhQZ3xfmks4MjNn42n858sX8be2u/oae1So\ntrfmZufiXt7uceMmty3pG+y5qHPJNL7x/Hk8eHxcd0Cj04t2e8u7SBfsmHZz2LK0U5nSZUznE2m0\nRILotDslL0v7weMT+I+XLuKQvaiGskjUjex2uytL+7qOpjxXlplg5eXmUuK1rqN5aYloRhnTlc1h\nnT2u8gc6mkKOWGEyk0Vns/Xdl9vSnvMS7XQu2Siblej7kx/g5/7uaYcom4+joQAioUCZiWjWNudn\nEnjj5x/Gt49c1O951WkvNYj57tExPGfHwLtaLBe9OcBcaiLafDKDlkgo10mXIfp5lnaFMde5ZFob\nAXminUjrgR2QE1JzEGwOGop5KKYWUo6cj0KozHFVGz8gnIloTeFAQff44JkYvvXyhcuK/Wr3uLa0\nnSHIF87P4tj4fFnL35ZC3eduS/uvHh3B8/YiSKoimvl+PSg55etK5/rOZgSE1SG956Zu7PjR15T1\nudyUL4mZeFrfkG2RIDJZiROTC3jp4ize3deNh4bz6xqb7nEVy7w4lyiYiGYlY1nuLyXC99z/imOb\nuWQG54y4qBp8BAMCkWBAW6jK0vZaNMR08523Lb8bVjbj2Pg8Xh2bx8//g7Pujbq5p+MpdJSYJgfk\nLO1mw9IOB73LmJ6ZWkRTOGBbNbmYttdc7Wn7vL1yac7RLh3Tdlnwymq7ZkVTXgnLUtna6ga+dkXU\ncb7LJWm4x7tbI9otfmE2gfZoCNd3NhewtBcrXkHo3144j3UdTXjLDXmzLMtChWXUPQI4E9GURfbg\n8QnPc9UUClhu0rIt7dw2UjpDBl6ivZDMFJ2eaa4Epgari6kM2uwEsqUmos0n0w73eDmWVaHV/8rF\nWYTHwz3uaWmb7vHcdxyfTzpWMjSZXEhiJp7W1mMh1MCyr7sVwxMLWNUawaW5pF4BrTkcRDRk9YeZ\nrNSzZ2biKR3+efLUFN7V616yojwWkhlEggGE7DZGjP/JTBb/aQ/4hscvf6Edde0r0f7cQ8OIBAP4\njX9/Cb+0cR1SmSyioSBj2stBOBjAdbYlufm6zhJb5zAtbbPjTmUlfvoNPXhoeAJjc0l89n0bPD8f\nDAjt+lOfvzCT0HHD/ES0jJ6+1Rx2/iwdKjkikdZCC+QuMPUZNSDobrE6uUKJaO12h6bapSzt33MN\nEkzKjWs73ONqnnbIu4zptq8O4tf/7UUsprJojQS1JeFlaSshP6JFO2l/75x7PJnO4u1/9Rhe+5kf\n4J+fOYuOJssr4rbWzGQvL0tO3cDXrmjKK2pTDgnDPb66LYpLdgf86IlJvGF1G7pbI5hcTGE+kcbT\np6eQzGT1b1yppb1j//P4/e8U/t0S6QzG5xLY98xZ/MieB/O+i6pGt7I5nLeWezydxfFxK2Gppy3i\nea46m8OIhoIFY5sm6Uw27/jmfeC1jGmp82EOTFc2qxCDmU2+tES0BTtk01JRTPvy3OPmYNUzpm2K\ndjB/sGoe/+Skd5GebFbqwVGp6ZVqYHnTKmuetJrCuJjKIp7K6MEa4Jx3f8JYF/7gq0tfR8LyduSm\ntKpjqf7x0RErr2JqMXXZSwur/kQV0/nmSxfxc39nzTp6aHiCMe3lRsW133xDBaJtxLTPGZbaK5fm\nsPt9N+P9N6/BJ95yA976Gm8Lx3SPK6E9PjGvY6leFdHabFdcyDX6NfdjCrHp5m+JBPXN2By2RoSF\nYtrdrVbnpr6XKtVYzM00Xeb8aSsRzaoc5Ixp57vHz83EMWxXdWsJ5yeizcbTeMmuLjVtexHUe6qD\njxrzv18dm8MTp6ZwfHweR8fm0dUS0W56E9M9/sOTk9j3zFn9fD6RxoHnzwGAHuxVGr8y3eOr2yzr\n5IXzMxgancZHN61Dd0sYE/NJvP8rT+Otf/kYYnamsnX+yu8MYospjM8ncejMdEF36J4Hh3H7nz2C\nJ09P4eWLc3kd9WzCKmyzoimMmYT1npmIdty2Yta2R/V5U4M+QIm25R4vVc5SiXqr0RGb94GnpV1K\ntCWZXhwAACAASURBVI1r3D3FzvwuS0lEa7mMmHY0FLBzJ8of8KlrOhQQ3jHtaM7jEPaYQmne7ycL\nLPM6m8i54Eu5yJW1fNMqK8SYKzSTxmIq6xLtXDtUpcbWSDAvYbESFpIZff6BXPa4WTBqtb3w0/AS\nll81cYcCgFyI4ux0HK9cmkM4GNCDCMa0a8yNXdZFV5mlnauIZlraC8kMIqEAvvmJt+B/b38TAOD7\nO96Gv/+F2xyf93KPv2qX02yNBDFn1wb/60dPYGohiTmj2pmbuYTlJnp1PFeOU4jcBQtYF7LqkCPB\ngBV3L5A93mXP4z6rLG3jQi1EuZW68ixtW7S93OOxxbQ+N62RINqiQQREzqr/1HdfwS1/+hAOn4nl\nucwnF5V7XFnaEi9ftM5Pl+1p6GoJoyUczBNCs4P5wuMnsfPA8/r5Xz56At944QJ+97036c6q0ri2\nTkQLBbCmPYpkJosvPHYC4aDAR25fh+7WCCYWUnjwuBVWmVhIoTUSRDAgKhLtYdsKji2mtEXs5tTk\nIkan4zhmL/k66bJI5hJptEVDWNEUyktES2Sy+nNWkpf1+jUrch6ezuawjm2WiuGa9arN4yvMynGK\nSizt3m7LIjTvVxWfn09mSi6RqlALlrRGgggEBJrDgTLnaWfw7r5ufPuTb8Hvvve1ACqbS6wGLTet\navWMaXu6xz2yx4FcX1PoGED+teBGucfVeVWLLC2kMnZMO6hd1uY9pSztH+vtdljdlaKSARXqWKZo\n/6htNA0b1/+B585hzw+OV3QsJdq3rF2BlkgQ7795DQDgjddYM3Nm4mldEU21rV40hGjf8YbV2PK6\nVVjfVVqcFObSnOcMl/SvvmN93rZbXt+Dj735esdrZvb4OS3a1oV1XUcT5hIZHL00h1//9xdx33Pn\ndIERE9M11BYN6s+3RILoaY04LHJTtKOhgE6WM8lmJRLpLLqanZa2co8DwOsLlAyc9sjo9mIxlUFz\nKKgtbZWIJoQV11ZlWdMZazEUFbtrteP5ZlW0U/ZiKP9l33N5FqKySpSrLJnJ4sjFWQgBbHvTtQCs\naUjN4UBecpI7bjwdT2Pe7vAeGZnArde049M/s0FblJVOKdFTvmz3OGAlTG1c14FVbVFc19HsSDCc\njqcQDQXQHA5UFNM+ZnRUh+w51m6U9afWJc5bXU5b2qG8mLaUuXWUlUsUcIZlfvJ1PXhP36qy3OPq\nfVN8zOQtL/d4qdihU7StQZbpGTO/ywe+8jSOXvIWM8cxXQlQrZFQmRXRrHP5MxvW6M8Wc5Fv/+ph\n/OTeJ/ScaXWN37ymDednEw4rPd89ni/a6ly++fpO/O1TZzxLnJpCXdLSnk+iPRrCO9avxPtvXoN3\n9VrV2BaSmdyUr1Du/lOMTCygszmM29atwGgsvuRFcOaT6aLucQDa0zliDA62ffUwdn37iL6ny2Hc\nWNVt7k/uwDc+vhnb3nQNPvf+m/Ug1ZynTfd4jdl++zp8f+ePOiqWlcIsrnJuJo4VTSHIz78ff/3h\nW8v6fEAISGm5g8fsC0KNftd1NCOZyWpRujSX1BaP4pVd78Hp3+/HFz50C/7t45vRHg3pz//pz96M\nT9/xBsfxWtyi3WRZ2hPzSfzU3idxZmpRd2AqYUcNJq7vzLnZCyU0lVvwRM/TNixtFc9uCgcca4QD\nuU5H3ZymaKttnz8/k7c4iup8elpzpUKPXJrD+pUteJv9HSbmU3pUbs459pp/fG4mjmxW4slTU3r0\nrizCSuapA/nucQA4PbWoPT4/cVO3Y16/lJZVbtVRL78zUNZ1UyiAp097i7ayvlSIxi2MWrSjIf2b\nmG1Qi1/MJdP6dVVTHQD+4Cdfhy/+/K1luceVe90h2knT0l5CTDuR+4wWbZdnTPHtI5cc2eqFUK5P\nZVW1lFm6ci6ZS4CLhKxrvpBoP3FyEvc9dw4PHBvHz33lkCPWfOs1K7CQzOj7IJOVmE9msMLoH5o9\n3PYqP+H3+l+LE5MLOPD8+bzjmr9/OZZ2d2sYq9qi+OYn3qI9cgupjBXTtourAPnu8d7uFtzQ2Yx0\nVjqKCsVTVo5FOeS5xz0s7fUrW7C2PYrHT0zmXSsPj+QnCBdifD5phUNs4yEUDOC+X96MLa/vwYdv\nvQaA9Vuqfurvnj6Db3ic3+WgIUR7KahMyLlkGuem43kl9EoRsAcI52fixpxg68K+2a7Ipiyli7MJ\nR0wbAF5vJyz9t3feiA/eeg3aoiHtavuljevwybc5s+CbwwHtQlaW9oyd6PT9V8fwwLFxbUEo97Hy\nIFxvWNpvKRD3rywRLRfTTtiJaACwIhrWlpHbcm71EG0z6e60a/UrZSWstUfBl+YSOHJxDjevacOb\n7GIzZ2KLnolEXhbhuZk4jlyaw3Q8jbev79JtMduaTGdxz7ePlOzsVLGUYEA41m1X0w/f+pqVjrgw\nYFnlzeFARfO0j43P47qOJty2rkNPe3Ljdu27rSuVALmiKZznHgdyrs65RFq/vtZwj6v7pNB8XROV\nANjhsLSdoq2K5ZSbAGZa2j12rXCHe9wut6m/TxmxT7N8pvpfbhnT9qizEEihAiOfe2gYXS1hfPHD\nt+LFC7O4/5VLiC2mIESu+JNa8Eb9huZgR5UqNmchqAHY+29eg/ZoyDGXXjHpcI8XH4iPzyf1cYCc\n58HL0jbvqVfH5tDb1aLjw+bywZ8eOIY3/+WjRY+rWEg5E9G8RHtVawR33nYtvn3kEnbufx5SSh06\n+O4ruSS4odEY/t//eLFgjsH4fFLPunGz7U2WaH//1TF9TTxxagpf+uHJsr5HtaFoF6ApHMQ7b+zC\n3z19BicmF5Yg2tb/UfvGUxndK5vDWlSUpXRpLoHZRCavIzdRrvOWSNBx8ypaIkHtHosEA1hhu8fV\ndKfjE/NaeJWQnJ22PAjmjaEyRd0UsrTjqQz+/YXz+mYwY9pZaXVk6mbraA6VFO2OphC+88ol/MOh\nMzg/G9fueve9ppPuQlbN8guzCRwdm8OGNe24ea3V6f14X7e+wc1RuJcL+tx0QpfmfPt6y9JW2cjq\nWI+fnMRnf3Ac//7CBc9zoUiks4jaIYE1hit5/UpLtMPBAH7iJuc0mEjImtteqaV906pWbFjdpqfC\nuXG79gu5x9ujQT19yqsNc4mMtpRN97iioymMyYVU0bhxzj1uxrSd7vH1tjdCrXdfzC2tpmMqmsNB\nrOtowrnp3GBvIZXRniXA6UYthK7EZYh2WdnjyZy3TIt2gYHM4Og0fmbDanzirTfghpXN+C/7nsX/\nPHgMTaGAtmhVjQT1u5jnTQmMuQqXcs8HAgJr26Oeq285LW3ve/qF8zO486uDOD+TcIq2MZCK2x61\nqCumPTGfxPDEAjZf34kb7Ov9lCHaRy7N4eTkYl69/YNH87PMVQa/QnkvTPd4T1sEf/nBW/ChW9fi\niVNTiC2mtPfu20cu6n7prx87ib945AQuzCY8p+JNLKQKivY7b7Tu1Z+/9RpHVbZb7Xj3ckPRLsKn\ntrwWo9NxHB6ddnS+5aCypX/7Wy8DAN50bQcAK96kxPmYFu2kfcMHPfZk8TbbZbuQzHi6+c3Rp45p\nJ9Lamj4+Pq/dVMqNGFtMYWVz2LE/8yY1D+M15xsAPvpPz+BDfz+I58/P6PKgqowpYCXjqaIIHU1h\nLf7uqmfKFTm5kEJWAh//l2cxPp/Ebes6PI+rrN1Q0LJmD49OI5HO4vU9rYiGgjh2z0/g6x+53WEd\nKLxWrzo7HceLF2bRFg3qgYvb0lZJWUcLJPkokpmcd8HsCMyciv/2jhu1xwWwfrOmULBo6VA3r47N\n47U9rXjD6jZcmE14TuFxz1JwewnM7HFdPjSVcVSfunZFk+0edy6EYnL7ug7MxNOOOLsbc2WoXPuc\nlrYKIfS0qTnXha33uJ0w9rvvvQk//LV3oCkcxLUrmlyWdkYPAACUlRg177K0W8KlLe2s7cJW3rKI\njvV6D2Jiiyl0t0QQDgbwjY9txu12/xAQQnu+zsSUaOdb2iuaQggFhKNIz6wRYrNmLXiItkrgDAUK\neoy+98oY9j93Hs+fn3Fcv+q7zcStUImXpf30acu6f+sNnTpX5pSRya7yDcbmc237p6Gz+Ml7n8QL\nrtkr8y73eDSkpsTmXlPXyc1r2nFickGH0X5mw2qMTCzg0JkYpJQYsKee7XnwOCJ3fxsnXdfB+HwS\nq1q8RTsYEJj9kzvwle1vcvSVb6Ro+48tr+vBb9jrBt96TenSpya/tHEd/u83X49Xx+YQDQVwi/35\nN6xp0zfWcbd7vIil/afvvxmfeMsN+K0f7/V8v8Ut2nZM+6w9Wj8+Pq9vmF67YwRyrnKFmg4G5Kyd\nVa0RTMdTuP/IRXzsn5/Ro9e5RBr/asd1njoVw51fPQzAGgl7xaJWRHOWtttyVyL/oVvW6tektMTA\nvZ/mcEBbCaGAQE9bBM/aiVbKUrtpVStaoyE9Kled/1OnpvT8TpNzM3HLcu1u1Tfmyhanpa1yCkol\nMyXSWd2ZhYMBfY5vNM77ltf34F8/tlk/93KPn5+Jo/P3voMnbA+A6dobm0tgfD6Jm9e060VjvNrl\ndo97Wdoqe3wxlUUqk8ViKqO9DFa7m5HKSG3xeYn2W+2wiuq0vfDOHndO+dKi3ZrLVC6EWbnuR+2Q\nhpdodxmd8cnJhZLTsHT5TCMRrVRMezGVgZTQA++wni2RP+jIZC0PgRoUbrq+E9/b+TY8/F/fju/e\n9VasbY8iIHJeOvU9zcGOEAJd9tRBhRqAAcDq9iguzeWL8uRCEtFQANd2NBW0tJWgmtUVgZxAjs8n\ndfa4Fm37ez55KoaAADZf34n2phBWNocdoS3121yaTWJyIYlvvXRBD6QesmdTSCnx3VcuYc6ViKYG\n/273OADc1N2KTFbiUXuK2W+860ZEQwH81aMnsO/Zcxi1+76/eOQEAOBrh61FVZRnqJh7HLBWM3NP\nxa1UE6oFRbsIQgj8xQdvwcT//Cn8zrv7KvrsdZ3N+Mov3IYLf/STOPOpfi04N3W36htbifbp2CKy\nEnnZ4ybhYAD/e/ub8PkP/Ijn+80ukVSWtnaPj8/jvJ2pfdOqVu2+Vx3ak7/+Tpz4vffq521Rq9hJ\nQFgd4fRiGh//l2fx1cFRPDoyiXQmi7uMJQC/8PgJnfhiWtqq7YDlHp+Op/HYyASesUVWoayaP/yp\n12PwN9+lX3/D6jbdMfTZU7B6u1u1C0zFjZUguKevqXYol++vHHgef/noibzzd27Gmhb1WiN7vikU\nsCvNKdG2fq9XDWvypQuznlPKosYNvqY9CiHy29Zq5DBo97jhBTg8Oo3peBrPnptBIp3BdX88gD9/\neBhALqv75jVtetW6IxfLEG2jo5ZSapeqSnKaTVhW1EpjMKem/KiESjMRTbFhTTvaokE8dTqGodEY\nPvvAsbxtlPiYnaOytKcWklhIZrC+qxmRYMCwtIuJtnIb587jtR1NODcdh5QS6UwWqYzUx1MDE/d0\nKjfuRLRCMe3vHLkI8dvfwmhsUZ/nXCJaYfe4up5Wuiq9/VhfN97Z241QMIBrVjTlLG0d03Zuv6o1\n4nKP50Jsa9qint9zyvaudbdEMOkxxQ4Axgyx7zaug66WCISwwnmFYtpPnZ7CLWtX6PPwmpXNODW1\niIeHx/H1w6M50Z5L4AuPncQHvnJI9wWP2IljT5ycwh1ffgrnZxKeg/8mwwukrG81PfMHx6zS0rde\nswI/e/Ma/OPQWfyiXZve5KuDoxgajSH43/8TDw+PW6LdVli0vShnDYtaQNEugy7bjbUUwsEAetqi\n+J1392Hnj74Gn3jr9dqKUOE/NbLvKxBPLgf31AhVCUyNcqfjabxwfgZRe+7wO2+0LBPVcbz1NSux\nvqsFK6IhBAT0NKAVTWF0NocwHU/p4gp/+/Rp7HlwGP/y7Dl89n0bsLI5jBfOz+rjq5i2Qse07WSn\nO792GP/zoLNTN2NXN69t1675a1ZEtWX3nr5VWNUa0auaATlLW2Em1am2ALDroGf1XG6TFU0hnJpa\nxInJBUdMXwiBlS1hQ7Stzx4fn7emrMXT2Phnj+CLj5107M90jwNWDsG1K5p0B6O/c9T5m7lj2spy\nHptL4vj4As7NxPFb33wZM/GU/h43r2nHjV0tCAdFXlxbrVyUa0fE4RJdTGWQlbnfGrCm9i2mctMC\ngVw4RXXmZiKaIhgQ2HxdJw6+OoZNf/4o7rn/lbwqVar2ullfQCWiqUS6N127AttvuxY/9foeR61r\nL7Tb2PBQXbvCGsDFFlPaa/GO9V14/Fffga9/5HYApV3k7iUhW+2kSjdfO2wV5fmPFy/oMIQaeOcS\n0Qovz1usPOv1nc3aOvT6ngD0fH+F5TWxjr+6LYqJhWTetK/JhRRWtoSxsjlcxNI2RNsYYAUDAqta\nIzg7bSXXqvn5gCXa2azE06djeNtrcsmsG9a04/DoNH77my/jE/ue08m0l+YSePGC9ZsrsX5kZAJS\nSkcM3BzYqmO5Fw4BgNf2WAPXHxwfRzgosKYtii986BZ84+Ob8VcfvAWf2vJax2Dx+Pg8/uzhEQDA\nzv3P63BFJZiG0nJC0V4m1rRH8Tdb34iWSAhvWN2mOy4zsWHTdd7x23JoDrlF23p+9NK8TqJ7ZGQS\na9ujEELoaQzuRe4DAYGulojuyDuaQnYsOq07kX3PnsOeB4/jfRtWY9dP3KQ7dd2WcMBlaVsKvKIp\nhKnFZF5dZcDp3m8OB3GTbd2tbc+J9s/evBpjf/xT2gUOWKKtEutWt0XybiQzEe3Y2Lyn5XPbtSvw\n5KkppLNSH1fR2RTC1GIK6UwWI5MLWNMeRSpjdSzDE9b+jlyadXzGdI8Dlsv/oxuvyzuuu3BEUzjg\nKLGqBgmX5hKO4in3PnEaL1+YRXs0hHUdTQgFA3jtqla84mqHshjbokE0haxtTPf4rFFPX4m2co2u\nNDow5bJWVl0hsfmljeu0NwLIF8cLMwm9KI5Cid2zWrQ78NWP3I6PbLyuZGLejEdWtbo2Xh2b159t\niQTx9hu70Gf/tu7pgyZSyryYdkdz2HM6mrJCnzg1pQcf5SSiTRWwtE2u6zAsbQ+PgnX8iMM9Pme6\nx9sikNK5BGwmK/HyxVn0tEbQ0xYp6HEwY+FuIVvdFtXZ4NYqX9Y5SqSzODY+j6nFFN5qTBt934bV\nuDibwOHRace5uDib1INMVTzq0lwS3zs65ghveGWPq7XEne2KoC1qeUSu62i2kvFWNOFDt16DX3vX\njfjjn36Dzin5oB2Cu//IJQDAUfuaLeYeN/nEW27AzjLXsKgFFO06EAgIvLtvFQBo12Znc9gR86wU\nM6NSWdqA1Wn8xGut7Mfj4zkB/9Ct1oXrFd7ragmjPRrCa1a2YH1XCzqaQxiZWEBsMYV73nsTbuxq\nwXQ8jU9teR0A6M4wd3ynpa1czh1NVlUtr2O6xVblAKxtb9KirWKhpsURDAgde/eq7GYmoqk5x27U\nbwHkZ8+vbIkgtpjC8MQCUhmJ921YDQB48Pg4hu2iGG4RUFXgFL/xY7347M/m16iPBAOOKVPNrnna\nqjO5NJfQSXDXrmjCA8fH8LI9vU3F39d3teRNi1Mu29/vfx0e/dV3oKct6rCu1Pvtdo12APij771q\nfe/m/ExlJehNHpYOAHzyba/B2T/Ygn/56EYAHqI9m8Cq1ogjpr1gVyp79uw01rZHHQmfLSWytr0S\ntNQc+8dPTurPqnvjxu4WCIGC1eP+T3vnHh9Veebx3zv3WzKTSSYJuZKQCwEJJISbQESM3KpbV0FE\nK7argra12sui3e6ulm1ttdvdlu12W9qtla3tWi123VZXiegqbAXTeEEEEYIgIUDuV3J/949z3nfO\nmUsyAQJzwvP9fPiQOWfmzHnmnPM+73N9AeCGJ97ChmeUDnlCaQfcNnT0DobVoQvlUv1RU9A9LhPR\nItdpv3msVU7GklzRlXZOkhPHW89icGgYr3zUhESHRedRAlSl3dOPlw6eQf/gcFhMG9Ar4Cf2HseB\n012498rJyElyor49cuMTnXvcrT/HgNsm77PQ3uN71HyG+ZrWzitLUuU9rqWhs1c3wbtrXg6mpXlw\nx2/elqEfABHbmFrM4cdjjEnPpSjRCkVUb/zF9DQ4LCa0nh3AnGyfnISKlfZG4+drZ+Inq0tjeu94\nQEr7EjErU3HxiprC8kzvmJq/hKLPLLXqyscq85OlZS+6++QkufDb9bPx5Dp9+1VAWYM61WPHlhuU\nxi7lmV45KC3O8+P1L1yJ6o3zZTeiUEu7vv2sboZ8lbrKjzdCqRqgDM6mkAd7TWkGbiqdBJvFhHR1\noiEertB2jsLSzk0Kn/QELe3hsOxUwX2LJsu/Q5W2z2lBfXsvbnuqFnaLCfcvzsfMjERsePY9bP2T\nskRqaBlRqKUdDcaYzp2qWJbBQV7nHm/uRrLLik9fkYbdR1vx7sl2ue46oFhmoauZiXKvbJ8DFdk+\ndZnQoNIW1qHIHgeAFw+ekZ8RCJdrU3c/HBbTiPdphteBFVOViU1dcw9eP9KMwu/sRNvZATR09CI9\nwY5VJal46rYy2SCoZ2AI757skKWQArEmezQilUKlJzowJdmFXZpmG+IecFrNyPE5dcpCy9AwR/VH\nweV2xT2sTcDSIjxPpzv78LJasiRCB6F12sPDHHc+/Q4WbNmFL25X1n8eyT0+N9uH3sFh/OGD03jm\nvQbcPS8nLLyS4rahoaMPK362Bz98oy4sexwAHvj9fvyPek1/tPtjzMn2Ye2sDOQmhTc+ETR298nw\nVKj1meqxy0lPWoJdV/L15rFWJDosMjESUEKLi/P8uta3ZhPDnmOtutruooAbP/j0FTjT1Y/nNCWV\nkTqiWSNMAgDgP9aVYcsNV0RdxEnUjU9PT5DlWmWZidj3tatwa1mmbvIez5DSvkRsXJCLqsIUfHN5\nMQCg/Dxc4wBw++ws/GxNKT7YtAQ+p1VXQ5jldcgYtnaRkTUzM2QtpZYn1s7CT1eXKtmfLhvWzsqU\nD3FRwIOAx45rigLy/VNUpf3DG6ajOODGTaWTdDNktzqQRKovB/SzacG68kw8q2ZXi1h6JKVtZsGY\ndo4vgqWtqS0NVdriN0/x2PHZOdkwm5hucAGAJKcNH5zuwp9PtGPbujKUZiRi9xcXwm0z42W1jOST\nNn3daaxKGwjG7EQbU9kxrndAhhGEpV0Y8KAyP1npdNczgJtKgxZFpteJM139OmtQuJ7FBM7vsoa4\nx4NKuyDZheKAG/920wzsvX8xbp8ddOcL67Gxqz+mOJ7XaYXfZUVdcw9eO9KMw03d2Hu8Fac6+2R4\n5tbyLJlV39ozgP2nO8OUdkaiQ3obIhEt1rswz49dR1uC9daacy4OeKKW7B1q7JKTBMaCildMCs90\n6pV2fXsvKrKVe+ip2nqYTQxFqlcp1D3+L7uO4hd7P1HkjcE9LpazvPd3+8A5xxcX5YW9R2sFb3nj\nqMxP0J7zzsNN+MHrdegbHML+U524pjAFjDH5rLx48Ax+vy/Y2at3YAhdfUNYOTUVk/1OmYQoCHhs\n0qLVJon2DQ5jz/E2zM32hU3At60rw857FshxYmqqB7vVxi/iN8j2OaUho71HtVn7Wvf4V6/Kx3Of\nDVZfAMCNpYorPNqkcl5uEvwuK0pSE+R3TU9PQJbPiac+U44M79h6cVwqJvx62vGK32XDjnsWoH9w\nGH85Ix3ryjLO63gpHruuS9q09ATs/+sl2L6vAUsLU/DOyQ5s33cqoms6lNwQN32G14ElU5Kx62iL\nLp4sWFYcwPXT0rC+IhtfWqyUpB1TrU/hhgf0pT4Ci4npYruRqCpKwZvHWqVyFnE2m9mEimyfTFzJ\njeAeF67R05192Hm4GWWZiXi7XlHe/3ffQpko9Iu1M/GT1TPCHngxqJhNDNdPVxYRcNstWJCbhB2H\nFKuMc8UVfMdv3sbq0gz0Dw3HnKTi1ljaDqtZ1jK/p8Z40xPsaOxWFpSpzPfL/s8zMxKxSnXVA8rE\nDFCaxIjOa6EZzUkuK3r6h9DRO4AXDpzBU7VKIlWK24YUjx0HH1oqj6ft3y0+39jdL70l29bNihhb\nFOQnu1DX3CMnIe/Ud+BUZx+KAkErTBz3wJlODAxxFGv2AcDy4gC+ueMQvvb8fuT5XfhCiOLq0Lj3\ntSzK82NbzQn8ePfHAPTWWlHAjSdrWsE5R2NXP/wuK2pOtCPL69BVNHAOeS8EQsIDgGKVn+rsw23l\nmXjvZCeOtvSoSky9nprs8cGhYfzNiwexqiQVTqtZlkmOZGlneB0oSHHjcFM3VpdOivjcaePNwuoX\nlrG2E9/e4204cLoLg8NcTozEZP2+5xSrv/PRlbCaTdI1fsMV6fjjXfPCvlMclzHFKyWs5Z6BIbzf\n0IkHKsMnF9nqczkr04u2swPITXLK1ftWlaTiqdp6ZPucCHjsygp4mhCO1lUvlLbVzPDd6yJX0YzE\n6tJJuHHGJJhNDDNVo0brrTIKpLQvMTaLCds/O2dcjj0tPUGWJYjkkFiTLUL5/vXT8V5DR8T4VE6S\nC8/fOVe3Ldfvwgt3zcXVBUGXUyRLO9FhGVVpL85Pxksbgx3EqooC+O362Vg5NRUeuwXFVhPWV2Th\nOnVlHi1Cef7r7qPo7BvEP6yYiuv+fS8AJfYujDTGWJj7EQjGuYoDbp0iXpyfjB2HmpCpuqV/XVuP\nPcfb0N2vNCYZaUDWImQPWtrD4Jzjv/afhtXMcPOsDGxRS9QKUzzI9DrxyLIiLCsO6CYYWao7u779\nbFBp9wYtaQDITFQGz8dfPYJvVyvdtx5dNTXMwgWUzGCBcI/39A/J/ILbK7LDPqMl3+9GbX27LGF7\nu75dWtryuKrsItcgVDGtLEnFIy8fwvfVLN/PzM7C4DCXGc0dvYOwmFhYjP2WWZnY+uYxPPHWJ5iT\n7ZMd7gClPXBn3yAKvrMTdc09eHhZEf7pf+tw44z0qM+GiA+/eawNh5t6sHFBLk539mFomCPP5IaD\nWwAADeVJREFU78K0NA/eOdmB6ZoSIG32+MetZ9HTP4Q1pRnYp2ZMxzJZrcz343BTNx6ojNybQfwO\nk/1OLC9ORXmmF+srFA+J1opvPTuA7ao1LZW2amnLUq1jrUhx22QeQCDab6FOnPP8LrnCHqAk/vUP\nDYdNvLRsXl6MujnZ2PKGcj2vUxch+c93TsoksZK0BOw62oJ7FuSid3BY15fCamYoDrilN2OsMMYg\nwuGrZ2bgwJkuLFQ9kEaClPZlwtLCFLx49zwsmZI8+psjUJblRdkYXfgrS/RKVFjaZhPDsqIAFuX5\n8bM9x3SWUCyYTUyu5AUoyvfJdWUR32tVk72aewawcHISlhcHIr4vGklOZZAKTbZbrD7s1xYF8Mu3\nPsEP1IHo/VOd8DmtYaVn0XCHxLQBJVFq+74GVBUGUKiJsZeqyXkPqyEVLZle0foyaCFr3d8A5GC3\nfV+D0hHrWyuiegRErDLBbtH1xI+WhBZKnt+F595vkHHz1440o29wWFcuJizt/VJp63+ziiyfrhZ5\n9ZM16OgbxJ77F8vP5Se7wrwjCQ4LdmxcgF/X1mN9RRZcmvMXv0Fdcw9S3DZseUOZzO0/3YlEu1Wu\nf65FKLCHX/oQAPD8/lPSQsv0OjAzI1FR2mnhSntgeFjGgAsDbrnAiS+kE2EkvnrVFExPT9BNOrSI\n+XNlfnJYYpTJxPCFhZOR7LJh845D+Pme47KCQPxG2hyH1dv+jObufhmuC3jCy/qU7cpvIeLWQs73\n1NBTcWp0pS2MiFc+asSOQ0344Q3TkeV1YkGuX35fSZoHu462oDDgxleu0vfGYIzpvEHnQ1qCHT+K\ncfGneIOU9mWESBC6VHhVqzXgtuGFuxXX22/fPamrxRwPRIbsnfNywroajQaH8tlQ1/v83CRcXZCM\nz83JxluftGH/qU7MmJSAfQ2daDsbvY9xKEJxKW1MlXMr+u6rAICvLy3QJRQuKYieKCPc4yfaevHC\ngdOob++VS8OKY4gs/gOnu1A6KXFEF77LZsbfXVuINTMzdJ36YnX7l2UmYmBIcSG7bWYZn9dZ2upx\n3z/VCRMDsrz639hkYvjVrWWo/qgJ//jaEVR/1ATGlDrnRLsFuz9ukeU7oficVnw+wjK6Wkvw7vk5\n+M4ryrrLB890wcQYbp6ZgZ/vOR52LIuJyYY+e4634SU18UwobSBY8QAEXfJtZwfksrYFKW40qtnc\nI8WzBVpPWSSWF6fi764tDFNugh/dOAODQ8P43muH0dDRh4psr+7+z0lySqUtyr++8eJBAAjLVBcI\n97j4HU0mhiyvAzXq0rCxWMGPrirBlyvzpYu+VOPpEYulZI5xrYfLCUpEIy4aiSFJMoASO/tUycWZ\nTIja9LEg3IclIbEvh9WMnfdeicopydh7/yL88pZZeP6v5mJ6egIKUtzYvCLcGo6EtLQtJp1CfOxT\nJbhtdpZ0zQIjx0ATHRZ47GacaD+Lr/33B/j87/bJOljh3k5x2+QxStKiW0SAYtVsXjEVMyYlwmxi\nMjcgVqW9fGqqrIy4Q+NK13ZT07rHM70OXUMa7XHuvTKYq8E5sPtoCw6c6UJLz4BMsIyVnCQnHl01\nFYceuhpXa7KFu/qG0NE7iIWTw4/HNMmOG+bnoHnzcixVJ1B5fhdWTE3FtDSP7lxSPTakemyoPdGO\nw83d8NjNSPXYZIVDrOGTkbBZTNi8YuqIx7KYTXh4WTEW5fmxMWRlwByfE3aLCZVqnsQ3qgrlvkit\nagHIklFtKOCawhQMc2UiEstk1Wk1R0yABYDZWUpjlmgLFxFkaRMXEa86uGg7Yj0SwdU7HkxKtMvv\nHwsinnjXvJyo73HZLLhjjqKY3npg8ahlUVpk9rjGPT5jUgI2LS0AELTIpo/SMpExhsxEB3YebpLt\nTEWfZeHeZkzJbt57vE1XlhMLPqcVZwf6YnaP+5xWLM7349XDzVhfkYUlBcl4bOdhXb9m4QHo6R8a\nsbHQ5CQXEtVe+gyQOQkAxqy0GWP4+jWKcsr0OmAzm5Dlc8ha+/m5Ptw+OyssZJPqsaOhow/T0hJg\nMjFU3zMfpzr7kOSyIcllw/5NV4d9z5xsH976pA25SS4Upig97UUvgVgs7QvFg0sL8KB6P2m598pc\nLClIhpkxtPQM4JFlRXhoaQEaOnrDWqYKpqS48ce75uKawuCEp6oogCdrTqAo4D6vslVAaeX6waYl\nYZNkIggpbeKi4bCYYDXr15i+GDR+c5nOQjzx91UYjLL6UigeuwV/qzaRiYWxtjbUWtqiznqpxg0+\nPT0BGxfkYtPVo/e+L81IxDPvKglHlfl+vK4ujKItwTlXpX1tUQDbak5ETESMxpqZGfjTx60oDLgx\nLzdJl4cAKFZvccCNDxu7I2b+C0wmhrnZPnT2DeLDxm60nR2A02pCptd5XhaZy2bBjo3zkWC3oPyf\nX4fXYUFRwINtt4bnR4i4tohlM8Z05ZORmJPtwwsHz6ClZ0Bm/ftdVrht5gtiaZ8vK0vSZN7J/erk\n1GM2yZag0VgVkqsiFPhI8eyxQAp7ZEhpExcNxhjKM72ytvVikRIyScj0xpYkdjHQZo/fUpaBlw81\n4iGNVWQ1m2LuvvTjG2fgUGM3kl02PHvHbOR9+5Wwrlui5Go093got8zKwLaaE7JPdCxsnJ+LT09P\n162ypYUxho0LcvGV5z8YdenLX91WDs453q5vx4eN3bhvUR76BiMvUzsWKqckg3OOJKcVFdnesBpj\ngZhoirXaY2FOjg+cK53gRAIYYwwPVObr+ucbnUmJDjy6aqpsokSML6S0iYvKm/cvHv1NlxEyEc1s\nQnaSE699/spzPlaKx47aL1diYHgYdosZTZuXh62nfdOMSTja3DPm+tQqtZnOaG56LSYTG7Vhxefm\n5uA3b5/ElyI0D9Ei2puuTHRgpdrwynWBEhgZY9i6pjRiG1xBUcCNbJ9DxnRjYW62D1azssjGXfOC\n8eRvqZ3gJhIi5ECMP2y0tWUZY6sBtAEo55w/Hsv+WLdFo6KigtfU1JyDOARhLL736mFs+sMBnHpk\nma7vdjxypKkbXoclzHNxOdA/OIyegaExu7XPdPbB77KOuWqBuPxgjP2Zc14x2vtGvJMYY+UAwDmv\nBtAmXo+0P9Zt5yIUQUw0rpqSjOunpenWLY5XpqS4L0uFDSg5B+cSh05NsJPCJi4oo91Na6FYxwBQ\nB6Aqhv2xbiOIy565OUl4/s65NLATBBETo40UPgAtmtehmQaR9se6jSAIgiCIMRA303vG2AbGWA1j\nrKaxsfFSnw5BEARBxB2jKe02AKJ7gQ9AaL1HpP2xbtPBOd/KOa/gnFcEAmPrD00QBEEQlwOj1Uw8\nDUBks+UDqAYAxpiPc94Wbf8YthEEQRAEESMjWtqc81oAYIxVAWgTrwG8Em1/rNvGRRqCIAiCmMCM\nWqd9KaA6bYIgCOJy4oLUaRMEQRAEET+Q0iYIgiAIg0BKmyAIgiAMAiltgiAIgjAIpLQJgiAIwiCQ\n0iYIgiAIg0BKmyAIgiAMQlzWaTPGGgEcu4CHTAHQdAGPd6kheeIbkie+IXnil4kkCzA2eXI556P2\n8I5LpX2hYYzVxFK0bhRInviG5IlvSJ74ZSLJAoyPPOQeJwiCIAiDQEqbIAiCIAzC5aK0t17qE7jA\nkDzxDckT35A88ctEkgUYB3kui5g2ET8wxsq1q7wxxlZDWW+9nHP+eLRt8UgEWR7jnD/IGNvAOd+q\nbjOELARBnD+MsU0jjWMXYjyY8JY2Y2w1Y6yKMbbpUp/LucIYe0z9f4Nmm+HkUpdmfUbzuhwAOOfV\nANoYY+WRtl2Skx2FUFlUNjDGjgCoU99jCFkA5d5S/z2m2RZ2jxnlvosij2GfI/UcqybQ9Ykkj2Gv\nDyDHhGvVv8dtbJvQSttIg+YoGFYZaFHPt06zaS2UWSfU7VVRtsUdEWQBgLs551PUfYBBZFEHm2rV\nO5CvDpJGn1Dp5FF3GfI5Us9/jXqe5dGuhZHlUXcZ8vpEYdzGtgmttGGQQTMGDKkMYsAHoEXzOjnK\nNqMgFJ6wCowiSz6C91Cd+tqwEypElgcw6HPEOa/mnG9UX+arIRnDXp8o8gAGvT6ADJVVazaN29g2\n0ZW2UQbN0TCqMris4Jw/rj64yRrrLu7hnG8VMXgA5QBqYOAJVRR5AIM/R+p5C2Vn2OsjCJEHMPb1\n8V+sL7JcrC8izh1NEsO1RlIGMdCG4M3uA9Cs/h1pW1yjxuFaOOfPQjnnfESXLy5R3Y+1nPNaxtil\nPp3zRisPYPzniHP+OGPsGcZYzejvjn+08nDO24x6fSJY2cA4jm0TXWkbatCMxERQBiPwNADRLSgf\ngLjxI22Ld2oQjHFPAfBTdZuRZKninD+o/j0RJlRSHiM/R5rYbi2Ue2wDDHx9IsnDGGuDQa8PFA9B\nPpRz9avyjdvYNtHd408jGM8ywqAZiRoEz3uK+tqQcqnlDhXq/+KhFYkpbZzz2kjbLtkJj0AUWW5W\nXx8xkiyAotQ0lk4VIt9jhrnvIshj5OeoCnrlVQdjX59I8hj2+nDOn1UnG4Aiz7iObRO+TludYddB\nSXgwZOG+sBKgyPC4Zpuh5SLiA035WguUwXQN57w60j1mhPtuFHkM9xwxxnwAblZfzhZJXAa+PiPJ\nY7jrc7GZ8EqbIAiCICYKE909ThAEQRATBlLaBEEQBGEQSGkTBEEQhEEgpU0QBEEQBoGUNkEQBEEY\nBFLaBEEQBGEQSGkTBEEQhEEgpU0QBEEQBuH/AZc4kK8jiap7AAAAAElFTkSuQmCC\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Bonus: visualisation of the leverage points with empirical cut-off for \"large\" leverage points\n",
"threshold = 2.5 * (float(X.shape[1] + 1) / float(X.shape[0]))\n",
"\n",
"plt.figure()\n",
"plt.plot(np.arange(X.shape[0]), leverage, label=\"Leverage\")\n",
"plt.plot(np.arange(X.shape[0]), threshold * np.ones(X.shape[0]), label=\"threshold\")\n",
"plt.legend()\n",
"plt.title(\"Leverage points with empirical cut-off\")\n",
"plt.show()"
]
}
],
"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.6.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}