Commit a9130a70 by Paktalin

practiced a bit after lesson 23

parent a43f834b
Showing with 165 additions and 0 deletions
This source diff could not be displayed because it is too large. You can view the blob instead.
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"def calculate_Yhat(X, Y):\n",
" denominator = X.dot(Xsin) - X.mean() * X.sum()\n",
" a = (X.dot(Y) - Y.mean() * X.sum()) / denominator\n",
" b = (X.dot(Xsin) * Y.mean() - X.dot(Y) * X.mean()) / denominator\n",
" Yhat = a*X + b\n",
" return Yhat"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"def calculate_r2(Y, Yhat):\n",
" d1 = Y - Yhat\n",
" d2 = Y - Y.mean()\n",
" ssr = d1.dot(d1)\n",
" sst = d2.dot(d2)\n",
" r2 = 1 - ssr / sst\n",
" return r2"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"N = 100\n",
"X = np.linspace(0, 6*np.pi, N)\n",
"Y = np.sin(X)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.scatter(X, Y, edgecolors='k')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"Xsin = np.sin(X)\n",
"Ysin_hat = calculate_Yhat(Xsin, Y)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"Yhat = calculate_Yhat(X, Y)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYcAAAD8CAYAAACcjGjIAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzsnXdYVGfWwH93aAOKIoiIIr0oCGKJSTQaU0w1PdmYmN307KZsyqZ+G2OIMWWT3U1zN6ZvEoZk08umF1M0MYoKCIgiKIqdpqj0Od8fl4uooCAzc+/M3N/zzDOUmXsPczj3vPe8pygigomJiYmJSWcsegtgYmJiYmI8TOdgYmJiYnIIpnMwMTExMTkE0zmYmJiYmByC6RxMTExMTA7BdA4mJiYmJodgOgcTExMTk0MwnYOJiYmJySGYzsHExMTE5BB89RagOwYPHiyxsbF6i2FiYmLiVixfvrxKRML7ehzDOofY2Fhyc3P1FsPExMTErVAUpcIRxzHDSiYmJiYmh2A6BxMTExOTQzCdg4mJiYnJIRh2z8HExMS9aWlpobKyksbGRr1F8UisVitRUVH4+fk55fimczAxMXEKlZWVBAcHExsbi6IoeovjUYgI1dXVVFZWEhcX55RzmGElExMTp9DY2EhYWJjpGJyAoiiEhYU59a7MdA4mJiZOw3QMzsPZn61DnIOiKK8qirJDUZTCbn6vKIryrKIo6xRFKVAUZZwjzmtiYmJi4hwcdefwH+CMw/z+TCCp/XED8LyDzqsrNlsOcUkjsfj4EJc0EpstR2+RvBZTF8bCZsth8+Yt5ObmUrCqkOrqar1F6pKzzjqLuro66urq+Pe//93x8x9++IEZM2Yc8f3nnnsub775Zsf3119/PU8++WS3r1+wYAFvvPFG34R2FSLikAcQCxR287sXgMs6fb8GiDzc8caPHy9GJjvbJsHhwyRi5qMSfddHMuD4S8XH2k8UxSKxiSmSnW3TW0SvwdSFsdD08dWPv0r+xlpZUbxOluUul2XLlkl+wSqpqqrSW8RDWL9+vaSlpXV8v3DhQjn77LN79L7Y2Fipra2VxYsXS3p6ujQ3NztT1AMoLi4+5GdArjjgmu6qPYfhwKZO31e2/8xtmZ01l5Bpf+LP29ZxyVf/IqzwOwaffz8j7vyAhglXcuMdd5urVxcxO2suQafcwvG+/tz8yRNMLPiayHPuNXWhE7Oz5jJo2h8ZYG9l0O4d+DbU4zcoEv+IRKRfGBWbKl1yJ/HEE0/w7LPPAnDHHXdw8sknA/Ddd99xxRVXAGqbnqqqKu677z7KysrIzMzk7rvvBmDPnj1cfPHFjBw5klmzZmkL2wOIjY3lhhtu4J577uGmm25i/vz5Haml9913H6mpqWRkZHDXXXcBkJWVxd///ncApk2bxr333svEiRNJTk7m559/du4H0ktclcra1c7JIZ+0oig3oIadiI6OdrZMR4XNlsPsrLnsWreGzxv/y3GVRQD8HVjz7QIenP4nlsRkwCm3MDtrLrNmXa6vwB6MposN69ZyW/IOnvhyPv72Vu4B9nz8GP8bOYX7T7/Z1IWL0PRRv24NXzS8Tf9rJjKiwcoIoPWBu2kpK6dNsYDYoa0F+vXr2wkzM+Hpp7v99dSpU/nHP/7BrbfeSm5uLk1NTbS0tLBo0SKmTJlywGsff/xxCgsLycvLA9Sw0sqVKykqKmLYsGFMnjyZxYsXc8IJJxxynrvuuouEhASmTJnC1KlTAaipqeHDDz+kpKQERVGoq6vrUsbW1laWLl3K559/zkMPPcS33357tJ+Gw3HVnUMlMKLT91HAloNfJCIvisgEEZkQHt7npoIOx2bL4cY77iYiZQZLLL6M3VLCrefczUgUHp52NQGtLTz38ROE7a0jICqVivJSvUX2WDRdNIz/Aw8FDuDpz58mNyqVKBSuueCvfJE8mZkFX3PjkndNXbgATR9DU87mV4sv6VtLqQkcQCGwJTgMRAhobUZBQLEgdrvTZRo/fjzLly+nvr6egIAAjj/+eHJzc/n5558PcQ5dMXHiRKKiorBYLGRmZrJhw4YuX1dQUICIUFJSgr397xowYABWq5XrrruODz74gKCgoC7fe+GFF3bI2t3x9cJVdw6fALcoivI2cCywS0S2uujcDmN21lyGTrmWT796DouPH6f7WynpN4iasBH8a2gSiy4czyev38Ej7z7IOY17EbsQlzSSeVlzzFWrg9FCSX/ZUsI9Dbt4w8/K/cdezI69dXwe0J/vz74dP3sLty+y8f7KL9ho6sKpzM6ay7ATruHTr54DXz9O87MyW7Fg9fVnp5+VPY/+k8SqSlr8/Cmz25G2FvwDrAwfFklYWJhTZPLz8yM2NpbXXnuNSZMmkZGRwcKFCykrK2PUqFFHfH9AQEDH1z4+PrS2th7yGrvdzk033cSbb77JggULeP7557n55pvx9fVl6dKlfPfdd7z99tvMnz+f77//vttzdHd8PXGIc1AU5S1gGjBYUZRK4EHAD0BEFgCfA2cB64B9wNWOOK+rqSgv5Z/hawnfW8eMK5+mqGYzu75ZQEv1Jqr/93fyZ9zFw8mTmLf6R2495gLeO/FKGiqLufEONYZpXpQcR0V5KaNPH8GNHzzMV0nHcWfKCez6/uUOXYTNuIu/RKUxbvXPvKkozLj1Lep2lJu6cBIV5aU8G1ZC6L7dnHPV06yursTeWI8E+dJat52GkAi2WvsxvHEP4f0GUdc/DGlpoGJTJYDTHMTUqVP5+9//zquvvkp6ejp/+ctfGD9+/CE1AsHBwdTX1/f6+C+88AJJSUlMmzaN5ORkjj/+eH73u98RGBjIvn37OOusszjuuONITEx01J/kMhwSVhKRy0QkUkT8RCRKRF4RkQXtjoH2TfSbRSRBRNJFxC0HNWTExHNN7kd8njyJwqGJ9Es9kdDpfyI2MZn/LHiOwNzXeaz0N36KSODhvM+J27Uda0wGQe0xbxPHEROfxNULX6FfcyP/mHIF/dKmHaKLDQtf445pVxNfX839P79h6sKJZMbEcdXyT/h85AkURSTQL/VELNZg/AOsxMaMQNlbzdamvezxDWD4vl3421tQ/APxGTCEzVucF0SYMmUKW7du5fjjjyciIgKr1dplSCksLIzJkyczevTojg3pI7Fjxw7+9re/dWwwDxs2jNtuu4177rmH+vp6ZsyYQUZGBieeeCJPPfWUQ/8ul+CIlCdnPIyYyrrqvPNEQE4841aJvusjiZj5qASHDzsgVVKxWGTiH1+Wev9AeT/tJIm5938SfddHolgsOkruebz7/ALZrSjy0Yj0w+oi+q6P5OUJqt6m3PCSqQsnUTjjHGkDmXLmbR36+PKrrw9IW122bJkUb9ghrbm5Ul24RvI31Ur+xlpZtmyZjpK7N56QyurW2Gw5jI1PIubjj/kowEpx/gds+ueFBOa+zvNPPXlAiCImPomKXTv4MO0kzi5ZxMCGepoqi4mJT9LxL/ActGK3dTf+iX4iPNmw47C6aKos5sWJF9CmWLi04GtTFw7GZsthfHwiMf/7lA+tgZTkvd+hj7DQQQeEi/wDrDS3tVJnDSaksR4fsSMtDfgHWHX8C0y6xREexhkPo9w5aAU9T486UdpQZMqZtx2yQu3q9SeffosIyF/HzTjs6016jvbZpp7/V9njZ5X3ozN6pIuImY/KVwkTZbu1vwwaHGnqwkFon+/8kVOkVbHI5LNuP0AfB69qq6qqZPnKPFmzpkJk2TLZVFQqy1fmGbIozl1w5p2D7k6gu4dRnENsYorEX/Sg7PGzysejpkrMvf+TiJmPSmxiSrfvyc62SWxiivwGUuLvL9lvZrtQYs8lNjFFImY+Kk9PmimtikVOvu75HuvibEURAfnxtttdKLFnE5uYIkkXPiB7/QLkg9Rph9hGVxeuqqoqyS9YJXuWLZN9ubmmY+gjZlhJRyrKSzmrsZ5+LY28Me5sgCPmzc+adTnrS0uY+OKLpDQ3Mysh3lXiejQV5aUEDB/Fuat/ZHHMGMrCRvRYF/9raYGoKKauKXGhxJ5NRXkpZzXsJqiliTd7aBthYWFkpI+mX3Q0gSKEWc2QklExncMRiIlP4oz8L9nWP5Tlw9Xc6B7HrWfOpMVq5d3TzzAbwjmAmPgkEgu/I652K5+nTAZ6oQsfHwqOmYj9yy+Js1hMXTiAmPgkzsz/ii3Bg1k5LAXohT7CwhBFoWbtWsM35/NWTOdwBB6/7x5Orizmf5Ep2O12GisK2PfdfOZlzTnie22ffMqbWDh7XwNpN71h9vnpI/Oy5nDGz/+hVbHwZcLE3unClsPMHxchisIdx15s6sIBPH7PXUzbUsKnR2Eb1XV1VKMw0G7HOiTOpT2XTHqII2JTzngYZc9B3n5bBOR3w0eIYuldl8/YxBSZftrNIiD3T7+xR/sVJofBbpddQyPl58Cgo9JFxMxH5duEY2Rb/1CJu/tjUxd9JTtbBOSibmyjq3i4Rn7BKlmzZoO6Mb2mQvI31Upe2RbJL1jlCsk7OPPMM6W2tlZqa2vlX//6V8fPe9qV9ZxzzpE33nij4/vrrrtOnnjiCafI2hXmnoOevPceDB3KfyvWY29rY31pSY+rayvKS1mTMZ2y0ChOK10CHDkma3IYCgsZsG0rJzz1z6PSRUBUKh+nTiNiTw0Z29aZuugr770Hw4fz3sYNvdZHc1MjjYEDaPLxY0DTHgAUv0Cam5w39rIrPv/8c0JCQg6Z59BTnn32WebMmUNdXR2//PILv/32G7fffrsTJHU9pnM4HHv3wmefwYUXgo9Pr9+u5dn/ED+eYzcVYm1pNPPs+8K774LFAhdc0Ou3arr4KW4sbYqFaeW5pi76Qn09fPEFXHSRqpNe4h9gRVoaqQ8Ion9zAxYRh9c86N2y291xVeM9t8Nmy2HxXXfz74YGZn70KedMmtzrfjzzsuZw4x1383Xq6Vzb1sL43E/5dPU3/OOp7idFmRyK1gr6s3VrqAsMYv033x61Lradcgv5Q5OYUrKIOWt/NHVxFNhsOSy58y6ea2rid+9/yHkTjz2iPm7/8nbytuV1fN/S0kJTUxO+Fl+sbS00+PjRZm8lICAAv+U9u7hmDs3k6TOM2bLbEzDvHLpAaz98ul8YO4MG8tMJfzyqzctZsy7n+aeeJG/TIvYCp+V/fEgVr8nh0XQRnXQGqcAnqaf2SReBua/z8ba1jK3exKtzzQ6tvWW/bYSyvd8gfj5K2/Dz8yMgIIA2aQPAV3MMDlx169my2yNwxMaFMx56bkjHJqZI9CUPyR4/q7yZeaZjNpLPPlskIcFxQnoJ2kbyP06YJW0oMuHmN/uui99+EwERm1kp3VtiE1Mk9uIs2ecbIK+Nm3FY2zjchvQBrFkjsso5G9EnnXSSPPPMM/LAAw/Iu+++K4888ojExsaK3W4XEZGYmBjZuXPnEceE3nzzzfLaa68dcvy2tjaZOHGiLFy4UC699FKZP3++U/6O7jA3pF1MRXkpxysW+rU08n3CMYADNpLPPBPKyqDU3ADtDdpG8gkbVlIQmcjO/oP6rosJE2DwYDVmbtIrKspLmQQEtjax0FG2MXAgNDZCU5NjhOyE1rJ76tSpTJkyhQULFpCZmemUlt3//Oc/eeKJJ9i5c6ejxNcV0zl0QUx8EhOLvqdNsbBsRBrQi+Ke7jjzTPXZvCD1ipj4JCwb8sjcspYl0RmAA3RhscDpp8NXX4EnhQFcQEx8EscU/0CLxYdlUamAA/QxcKD6vGuXAyQ8EL1adnsEjrj9cMZDz7BSdrZNFvn5y4rQqG7bQR8VyckiZ5zhGCG9hOxsm5wzMEwE5PcXzXGcLtpz9GXpUscI6iVkZ9tkia+fLA2LPqJt9DisJCJSUCCydq0DJfUOzMZ7rmbvXmn18ZEFIYN6XWx1OFaffoY0KIoEKorDjukNrDr3PGkBCXbg5/bu8wukDWSOqYveUV8vbT4+Mn9Q6BFtozfOoWHNGmldtkxyly2T/IJVZkO+HuJM52CmsnbFr7/i09bGH3Ns/FELB/URmy2H95cs5QMRLr5oDl/7Wc2RlT1kdNVOOO44dv/6q0OOZ7PlcOOcucSHRnGutR8vtLfSAFMXR2TxYixtbdz837e5efp0hxyyurqaur37SAAGDRpGvaI4fXyoyZEx9xy6YuFCteiti5zmo2V21lxWTL+NRl9/plbkmyMre8qePbB0KUyb5rBDzs6aS9Apt/DzyClkbi0lfGiCqYuesnAh+PnBpEkOO+TmLVvZO2AIdhSCm/e5ZHyoyZExnUNXLFyoZrQEBzvskBXlpUjsGPIjk5mweTVgttLoEb/8Aq2tcNJJDjuklgH124g0fMTO2M0lpi56yg8/wMSJ0K+fww7Z3NQI/kE0+AUQ1Ky2z9CjlYbJgZjO4WD27nX4ShX2t29YPnwkadvLCGhpMts39ISFC8HX16ErVU0X+ZHJtCkWxm8uMXXRE+rrITfX4bahttJoYK+/lcCWJqe00jDpPaZzOJjFix2+UgW1fcO+7+bzq18QfvY2RuV92eP2xl6NtlLt399hh9R0Ub1tHavDYxlbttTURU9YtAja2hxuG8OHRdK2ewd7FQsWhIB9u2nbvYPhwyIdeh6TXuKIXW1nPPTIVsrOtsm/QkKlGSQ1PsnhGSzZ2TYZG5cgAvJ42GAzQ+YwZGfbJC0+SVpA5g8KdYouYhNTZD5IvaKI7fU3jvwmLyY72yYLQgZJE8jIHtpGb7KVqqqqpCi/QGTZMtmycqXDspWOP/74I77m2muvlaKiIhEReeSRR3r9/n79+h3xNQ8++KA8+eSTh33Nhx9+2CFHTzFTWV2ANix9WdgIyR2W4rh8+q5ISRGZMcPxx/UQNF3MPPEqEZCLp13jPF3YbKoZrFjh+GN7CJo+VoRGyZKo1B7bRq/qHDQKCkRKS49S0r7Tkwv90bynJ87hyiuvlHfffbdX5zbbZ7iA2VlzGTz1ejJrNrMkOsO52USTJ6sbrXJoC2CT/dlEUxv30GzxZdW4s5yrC1D1YdIls7PmMmTqdWTUbnGqbdhsOcSdewGW5BSHjXHt3x6O/OGHH5g2bVqXLbinTZtGbm4u9913Hw0NDWRmZjJr1qwD3r9nzx5OOeUUxo0bR3p6Oh9//PERz/3II4+QkpLCqaeeypo1azp+/tJLL3HMMccwZswYLrroIvbt28cvv/zCJ598wt13301mZiZlZWVdvs6VmM6hnYryUib4+uEr9o62AE7LYJk0CWpqoNM/jMl+tGyisVtKKIpIoNHP6jxdREfDsGHqXpNJl1SUl3KMjy8+Yu+Yo+5ofWjdXhuOu5YRd37glDGuK1eu5Omnn6a4uJjy8nIWH6Tzxx9/nMDAQPLy8rDZbAf8zmq18uGHH7JixQoWLlzInXfe2eFcumL58uW8/fbbrFy5kg8++IBly5Z1/O7CCy9k2bJl5OfnM2rUKF555RUmTZrEueeey5NPPkleXh4JCQldvs6VmM6hnZj4JEaXLAKgIDIZcEDPmO4wV6uHJSY+iZaNhaRvW0d+pPr5O00XirL/Ts6kS2Lik0grUS+k+U6yDe1u0RqTgeLj65S7k5624O4KEeGvf/0rGRkZnHrqqWzevJnt27d3+/qff/6ZCy64gKCgIAYMGMC5557b8bvCwkKmTJlCeno6NpuNoqKiLo/R09c5C9M5tDMvaw6jS35gY79BVAf069Ww9F6TnAyhoeZqtRvmZc0h6ptn6NfSSF5EgnN1AeqdXEUFbN7snOO7OfOy5pBe8iPl/cOo8w90ij60u8XOOPruJCAgoONrHx8fWltbe/xem83Gzp07Wb58OXl5eURERNDYePg6jIM7v2pcddVVzJ8/n1WrVvHggw92e5yevs5ZmM6hnVmzLue04P4UKK1s+ueFBOa+7rzBPBYLHH+8uVrthlmzLueZi9VRoF9++axzdQH7ayhMfXTJrFmXc2r/IApodpptaLUnndGj9sTPz4+WlpZDfr5r1y6GDBmCn58fCxcupKKi4rDHmTp1Kh9++CENDQ3U19fz6aefdvyuvr6eyMhIWlpaDghfHdw2vLvXuQrTOWhs307/qipmZD3Y62HpR0Nev35QUsJgi8Vhm2+exPE+Fhg4kJLWVqfrImd1CQ2KwtO/+52pi67YsoV+NTWc//Bcp9mGVnvSWFGAtLXSWFHAnm+e5Ybrrqa6utqh5zocN9xwAxkZGR0b0hqzZs0iNzeXCRMmYLPZGDly5GGPM27cOC699FIyMzO56KKLDmgT/vDDD3Pssccyffr0A44zc+ZMnnzyScaOHUtZWVm3r3MZjkh5csbD5XUOn36qpjT+9JPTT5WdbZMz2ttQX3XB/c5Nm3VXxo0TOfVUp59GS9P8JTxWVg5NMnXRFR99pNrG4sW9eltvU1mzs20SHZ8kimKR2Og4eeqfz0le2RZZvjLP7NLaDWYqqytYtkwN94wb5/RTzc6aS8n0P9Ni8WHC1rVmE76DaWyEggI45hinn0rbCF2RcAxpO8oZOCzF1MXBLFumNqIcO9app5k163I+/egD8ks3Uf7+O1x25llmEz4dMZ2DxtKlkJbm0IZi3VFRXoo9NpO1g2NI37YOMJvwHUBentrCZOJEp59K2wgtiExS25rs3GDq4mCWLoWMDAgMdPqpmpsaEf8gGn39CWwxm/DpiekcQC1GW7rUJRcj2L/5VhiRQNr2MhAxG791ZulS9dkF+tivi0QARm8vM3XRGbtdvXM4yrs46WWhp9aEr8EvgMAWdaa02YSva3r72fYW0zkAlJerRWkucg7a5ttK/0DCGnYTuvpns/FbZ5YuheHD1eI0J6Ppoqx2KzWBwYxcZzbhO4B166Cu7qhsw2q1Ul1d3auLmNaEr0Gx4Gdvw6dxj9mErwtEhOrqaqxW5zlNcxIcuHSlCvunjb133/8BMGFZNnc6M1XT3XDhXZz2mc/OmktuQz2Zm1fx/CuvmrrQ6INtREVFUVlZyc6dO3v1PntrC2U7N7C7rY3a2lqsgwaxY8cOduzY0WsZPBmr1UpUVJTzTuCIXW1nPFyVrZSdbZOXBg6SfSCJCcmuzVLZu1fEYhF54AHXndPAZGfbJCMuUQTkb6E6dK29914RPz+RxkbXntegZGfb5NWBIVIPEu9q26ivF1EUkYcect05PQTMbKW+o/VzSfcbQNGwkdQfc5XD+7kclqAgGDUKVqxwzfkMjKaLlBg1H3xpxrmu1QWomWotLeDiNgVGpMM2fIMpikplr6tto39/SEkxbUNHvNo5zM6ay4CTbiSjbhv5w1L0SSkdPx6WL3fd+QyKllJ6TJva0mBN5un66AJMfaDqY+C0P5Fet438SNM2vBGHOAdFUc5QFGWNoijrFEW5r4vfX6Uoyk5FUfLaH9c54rx9paK8lNTAYAJbmygYqmaruDyNcdw42LYNtnp3HreWUpq+fR1locOpD+jnel3Ex8PAgeZqFVUfowP7E9DWwio9baOyEsy9Bl3os3NQFMUH+BdwJpAKXKYoSmoXL/2viGS2P17u63kdQUx8Eklr1OZ3xUPiAR36uWhFd15+QdJSSkftWM9qvXShKGqhl5frAjTbUHtNFUfobBsrV7runCYdOOLOYSKwTkTKRaQZeBs4zwHHdTrzsuaQkv85jRZfykKGOr/7Z1dkZqoXJS+/IM3LmoPvN88SU7eNovAYfXQB6gUpP1/de/Bi5mXNIaXgC/b5+FE+YIg++tAqsr3cNnSjrzvawMXAy52+/z0w/6DXXAVsBQqA94ARRzquq7KVtoweLfkBAaJYLBKbmKJPT52UFJHzznP9eQ3GV7MfEAE5S1H004U2NjQ/3/XnNhhbR42SlQFWfW0jMVHkootcf143BgdlKzmizqGrpuUHV718CrwlIk2KovwJeB04+ZADKcoNwA0A0dHRDhDtCIgQuW0bkVdcgf1lHSNd48bBokX6nd8gnBYxBIDPKitdUgDXJZ3DfBkZ+shgBEQYum0bQ6/8A/YXXtBPjnHj1AptE5fjiLBSJTCi0/dRwJbOLxCRahFpav/2JWB8VwcSkRdFZIKITAgPD3eAaEdg61aoqoIxY5x/rsOwAgU2bWKIt7fvzsuDwYMhUr9q2JxluexVFJ67+mrv1sWmTVBbq4Y9dWSlYoH16wn1dtvQAUfcOSwDkhRFiQM2AzOBA8pLFUWJFBEtHedcYLUDztt38vLUZx0NwGbL4a3Pv+J/wGkXzeFb3wBuvONuAO+r0s3P378HowM2Ww433nkvCWHRHBcQRMOE33u3LkDXhZPNlsM7X37Nx8DplzzEQouv9+pDB/p85yAircAtwFeoF/13RKRIUZS5iqJog1NvVRSlSFGUfOBW1D0I/dGcg47hg9lZc1l7yk2qGDvWe2/77tZWWLVK14uRVmtRHJNB2o5ygkakeacuQLUNRYH0dN1EmJ01l7Unq7aR7s22oRMOqXMQkc9FJFlEEkTkkfafzRGRT9q//j8RSRORMSJykoiUOOK8fSY/H+Li1Nx2nagoL6UpfjybBkYwasd6wEvbd69ZA01Nut7FabUWxUPiCWppIqZum3fqAlTnkJAAwcG6iVBRXsq+hAlsDg73btvQCa+ukCYvT/eYqpbfXxIey8idGwB9ZufqjhbG0FEfmi5WD4kDYOSO9d6pC9gf4tORDtsY4uW2oRPe6xz27oXSUt03o7WW0YX+gcTVbEbKl3tny+i8PPD3V/vp6ESHLvbuok2xkOit7bt374ayMt2dg6aPIv8gEqoraStf4Z360Anvbdm9apU65EdnA9A21n698y58xc7oJa9yuTe2787Ph9Gjwc9PNxE6t+8uFTujNyzl+Rde8D5drFqlPuu8cNI+99/uvAt/eytpS17l995oG3rhiGIJZzycXgS3YIFa7LR+vXPP01OKi1V5Xn9db0lcj90uEh4ucvXVekuyn0suEUlI0FsKfZg/X/1f3LRJb0lUVq1S5bHpUITnhmC27D56bLYcsu+5lzog7tTTjZE7nZQEAQFQUKC3JC7FZsthYnwS7NzJQ59+ZgxdgJqlU1YGe/boLYlLsdlyePuv91MFxE07xRj6SElR7yi9zDb0xuucQ8fcAL+BlESl0eDqPvVddrLPAAAgAElEQVTd4esLqaleZQCaLhLaZzjk6THDoTu09ObCQn3lcCEdtuEbzJrodOPYhp+fOvfEi2zDCHidc5idNZd+J99E6u4drI6IN1budEbG/nivF6DVFWS2d1spSz/VOLrQ8vu9TB/BJ93IqN07KI5IMG3Dy/E651BRXkpS/zD6tTRS3J6yaJjc6fR0dbZDL2fuuitaXcHIHRuoHDCE3db+xtFFbKw6jcyLVqsV5aWk9BuEtbW5I53XMPpIT1dnO9TW6i2J1+B1ziEmPon49hkOa8JjAQPlTmuhDC9ZIWl57MlVFZSExwAG0oXFol6QvEQX0G4ba03bMFHxOucwL2sOCSs+BmBtyDD95gZ0hWYAXrJanZc1h+ZvnyOhehNrwqKNpQtQnUNBgZry7AXMy5pDwspPaVMUSgfqNN+kO7zMNgyBI1KenPFwZirr+uOOkw2+fvr2qe+O8HCRa67RWwqX8cnf/iYCMkvPGQ7doaV0VlbqLYnLqDjmGCnzM6Bt2O0ioaEiN9ygtySGBwPNc3A7YnfvhrPOxP7xx3qLcigZGV61OjonRg0nZa9cqXvR1SFom9IFBTB8uL6yuIjoXbvgnHOwv/++3qIciKJ4nW3ojdeFlWhqgrVr1WpcI5KeDkVF0NamtySuobAQfHx0bZvRLd6WsdTQAOvWGds2CgvBbtdbEq/A+5zD2rVqe2iDGsCve/dBQwMpfn7eMdyksFAtALRa9ZbkEGyff8EWX1+y773XO3RRUqJeeA1qG0v2NcCePST4+nqHPnTG+8JKWlGTAQ3AZsvhxXc/4EfgpHPu5qOgEM8fblJYqHt/q67QCsI+CE9gXGsTDROu9A5dgGFt45X3P+J74KTz7uN/1mDP14fOeN+dQ2GhWo1swDDG7Ky5bDz1FtoUC6OqNhmrCMkZ7Nuntqgw4MVIK9BbG5NOYnUlwVGjPFsXoNqGvz8kJuotySHMzprLhlNuxo7CqKqNnm8bBsA7nUNysmoEBqOivBR7bCYVIUNJrqoADFSE5AxWr1bTRA3oHLQCvTWDY/C3txJbs8WzdQGqbYwcqWtn3O6oKC+lLW4sm0IiSKnaCHi4bRgA73QOBrwYwf6isNLB0SS3G4BhipCcgYHDGPt1oWZTJVdt9GxdgFvYxtrB0SS1L5w8Xh86413OYe9eKC/XdS7u4dCGmxT7WYmp3YLd04ebFBaqnWgTEvSW5BA6Bs3sraVNsRBftsyzdbF7N2zcaFjnoOljtV8gcTVbaF2/0rP1YQC8a0O6uFh9NqgBdB5u4it20pa8whWePNyksFDttulrvH/DzoN/ysROqqcP/ikqUp8Nbhu5d96Jv72VUUte4SpPtg0j4IhKOmc8nFIh/eqrasVraanjj+1I8vNVOXNy9JbEuURFiVxxhd5SHJnzzxcZOVJvKZzLiy+q/3Pl5XpLcnhWrFDlfOcdvSUxLJjDfo6CwkIIDIS4OL0lOTwpKWphmLaa80Tq6tQumwZdqR5AWpo6b7ypSW9JnEdhIfTrB+0V64Zl5Ei1KaIn24ZB8BrnYLPl8NPzC8htaCBuZJqxC2gCAtR0Qg81AJsth4tHq43UrnnmOWPrAlTn0NamFlB6IDZbDotfepnf9u4lLiXV2PoIDIT4eI+1DSPhFc5BK2hKwpf1aSd1FDQZ2ghGj/ZIA9B0ERc5DoCCCZcbXxdpaeqzB+sj2a6wYfQppm2YdOAVzmF21lyGnXANkQ27WRse5x4FNGlpaoFYY6PekjgUrbgszd7GHv9AqkZNNb4uPDjMNztrLiMmX0V4017WDnEj2ygtheZmvSXxaLzCOVSUl5IWEARA6eBowA0KaNLS1D43JSV6S+JQtOKy5KqNlIZFg6IYXxceHOarKC9ltH8gAGvdyTZaWz02zGcUvMI5xMQnEb/uNwDWhqsGYPgCGi2U4WED7rVipqSqjR0XI8PrAlR9eJguoN02ypYCuI8+PNQ2jIZXOId5WXOIL/qWPb7+bA4aZKwJV92RlKTm/3vYanVe1hys3zxD+L46SkOHu4cuwGPDfKptfMduvwC2BQ50D314cJjPUDgiH9YZD0fXOWxJS5OVAVbjTbg6HKmpIueco7cUDufr2bNFQM4w4vS37nj7bTW/fuVKvSVxONtGjpJcq5vZRkqKyAUX6C2FIcGcBNc7ImtqiLxsJvbXXtNblJ6TlgbLl+sthcOZ3j5V7YsNGyA6Wl9hekrnjCUDthjvCxHVVUTMmoX95Zf1FqXneGiYz0h4RViJ2lrYuhVSU/WWpHekpcH69Wpra0+iqAj694cRI/SWpOckJ3tkmI+dO9WH5vzchbQ0dWqdh4X5jIR3OAetp5KbGcBPNTUgwoT+/T1r8lVxseqoFUVvSXqM7d33KFUsfPzYY56nC3C7hdOi2lqw28kMCvIsfRgI7wgraas9NzIAmy2Hp958i1xgyhm38tbACM+ZfFVUBGeeqbcUPUYrFLMNTWZMfZVnTYXTbMONFk42Ww7P2v7Lb8DUs27nneBwQ+tDRNjTvIfaxlpqG2q7fQ6xhvDIKY/oLW4H3uEciovVvjHuEt9GLU5qmX4rze89REpNJdaM6dBenGREA+gx1dWwfbtbXYy0wr2yTas4e/HbhAxL9gxdgGobAwZA+z6QOzA7ay6tp/6ZlvcfIrlmM9bRpzhdHz29wNc2qo+ahpqO7+sa62i1t3Z7bItiIcQawpiIMU6R/WjxDudQVKS2hra4TxStoryUEeenUx46nMTOk6/eMXBxUk9wwzCGqotU1jbsxoKQULOZQk/QBai24WYhPlUfGWwYNIykXthGby/wB//sSBf4QdZBhFhDGBQ4iEHWQcSGxBJqDe34vrvn4IBgLIrxrk3e4RyKi2H6dL2l6BUx8Uk0tE+Fy9im/tMbvjipJ7jh/o+mC61ILLFqI8sb97q/LkDVx4wZekvRY0SEEckJ7Nv2C18mhhG6bx37LL/QVFdCyNlhzP5+NrUNtdQ01lDXWNdxYa9pqOnRCv7gi3dMSMxhL/Chgervgv2DUdzIwfYEz3cOdXWwZYtbrVRBLU668Y67WR0xirPrtqOU5bLvxxf5x1NP6i1a3ygqUkN8bpSppOlizbQ/0WLxIb4sl31Vpe6vi6oq2LHD5bbRkxV8TUPNIT+va6xTV/AzW4EnuDVRO+KjEAlEwmOLHjvkIh4bEnvYlbvRV/B64fnOwQ1XqrB/Y23xXXdjQUhb8hqXecLkKy1TyY1CfJ2nwpXa2xi1cblnTIXrg210vsBr8XXt4u2oGHxoYGjHxTsuJO6AC/ma/LVszn6Pu7fV8cDASC657V6unnmVeYF3IIpaUGc8JkyYILm5uX0/0EsvwQ03qLOjjT7kpyuKi1XjffNNuOIKvaXpO5GRcPrp8J//6C3J0XHxxVBQ4BFN3+T559lz+03UrvyF2tCgjgt651V7XWMdNY01h1zwj+YCP8h6+NBMiDWkdyv4VasgIwPeegtmznTgJ+PeKIqyXEQm9PU4DrlzUBTlDOAZwAd4WUQeP+j3AcAbwHigGrhURDY44txHpLgYgoKMP+GqO7QeS9oqz52pqYFt29zuLu4A0tLgww/V4iurVW9pugzRdF6lH7zBWtdY13Hxr9tbQ+tfgXcndXlsH8XngA3WEGvIISv4zs+dHYFLYvDJyWqPJU+wDQPSZ+egKIoP8C9gOlAJLFMU5RMR6ayxa4FaEUlUFGUm8Dfg0r6e+0jYbDlEv/AigQ37uCQllXlZc9wvFODnpxqBm1fm2mw5fHTvfbwLXPPUM5wybLj76QLUkJjdDmvWwBjHpB4eKQbfsZLv5vdt0tbtsbvaZI0NiaVqUxXDlvxISL2dnAERzDp/Juefdt4BrzP8JquHtFK32XKYnTWXivJSYuKTDHOdcsSdw0RgnYiUAyiK8jZwHtDZOZwHZLV//R4wX1EURZwY09IKl0rw5ZfUk2jImG7oQpnDkpoKeXl6S3HUaLq4IWYibN7EqvGX85476wLU1Won59BVDL6nKZJHCtEcvILXYvCHhGw6rfC1lXxXF3ibLYcbH7ubdfVWfkg8lneiT+G1B+Yzsf9ETpp1klM+NqeRmurWdw6abQSdcgsjzk+lobLYMNepPu85KIpyMXCGiFzX/v3vgWNF5JZOrylsf01l+/dl7a+p6u64fd1ziEsaiV/G71j7wcM8fuJVLDjuYhorCgjMfZ31pW42QCcrCx5+GPbsUWfouhlxSSNpmHAlj5X+yqUFX5N2x7s0bCw0nC66W8EfkDmzt4raN1+iNjWO2hGDexWD7zIc00Xs/eDXOXoFH5c0Emv6Jaz+cB6PTLuGl4690H1tY/ZsePxxtf+Yv7/e0vQazTZu3lFO1K7tPHTqH/usCyPtOXT1X3uwx+nJa1AU5QbgBoDoPlYzV5SXMuXESFaHx7J6iLoR7bZFZJ1DGW7YEVQrIkv89R3WhY1AFIvTdHHwBb6rlMg+r+BjfBnUWMsgayLxg+IJCQg5JObu7At8X6goL+XCCeoio3SwmlLs1rbR1qYmCIwerbc0vUazjVN+eZvAlibAOLpwhHOoBDonrUcBW7p5TaWiKL7AQKDm4AOJyIvAi6DeOfRFqJj4JNbsrePMa+Z3/Mxti8g6hzLc0DloRWRJ1RtZHKOGYg6nCxGhvrn+qKpYjxSD70mIRsuaOXgl33GBv/BCVRd/+8opn5eziYlPIm6dOv2tdLCaqOG2tqElNxQXu6Vz6LCNqo18n3AMYBxdOMI5LAOSFEWJAzYDM4GDg2WfAFcCvwIXA987c78B9hcuccotBESl0lRZzL7v5rtn4VJSkttlZWgr+JqGGq7/vz/w1DNP8suIWnLSGqmu/xfNe35m9E3Hcdn7lx0SwqlrrOv1BT5+UHy3qZIOX8GnpsInn0BTk7op6mbMy5pD/fU3sMfXn8p+g2hqn/7mlraRnKzWzLiRbXRmXtYc7r/tL4dMRjSCLvrsHESkVVGUW4CvUFNZXxWRIkVR5qJOJPoEeAV4U1GUdah3DE5PSu5cuFTxjpoF8A93LSILCFAdhIsNoCcr+JqGGuqa6o4corkQLgLU9QFYhljIb81j0Jb9G6id0yQNHaJJS1NDGaWlbrlanTXrcrY+9ihl68rY9NRF7m0bgYEQH++2zmHWrMsZUrIa5s1j8U+vE5iQbBhdOKTOQUQ+Bz4/6GdzOn3dCFziiHP1hlmzLjfEh+wQUlOPavJVb2Pw2sq9tyEa7WLebQz+u8UMeuSfDPrqJwaljNH/At8XtDBfUZFbOgdw08mI3ZGa6tbprEadjOj57TM8ABGhPjWB2oUfUrtxKbVte3vUpkAreurJBV6Lr4cGhpIQmuD4EM2LP8OuQBg92a1aZ3RJSopbhzLcdjJid6SlweefQ0uLWhfkbhQXG3IyoukcXER3IZqOlXo3m6wdMXjfNrgNeO3YQ47dVQzeKRf4vuCGbdO7w/b+B0zy8SF37lzuyfmvYYqWeoyb9hvrjsW1dUxubSU1IICGhGT304dB26abzqEXHCkG39GArKnu0J/1YAXfuYgpNDC0Y5N1c9kW8j75ljk1e3kv7Vx+8w+n6ddPePSe2Vxz2dX09+9v/BBNcTGcfLLeUvQZrWjpv0MSyWyod8+pcG44GbE7bLYcFrz9Lj8DJ864mw/7hbifPoqLDTkZ0eucw9Fc4HuTJnnw6lyLwXdX4KSlTB7uAh+XNBLG3sNV3z/EnsAgVk+5gMYxCTz9yL+57apbnfVROY66Oti82SMuRtpUuPINKzl16QcER41yv6lwbjgZsTtmZ82FU2/B/t5DJNVuxpo61b30ofUbM6BteLRz2LRrE9d9el2vY/BdXeAPF6LRNl6dtYJXC2XGUBEylGR3nAq3erX67AFhDK1oqXRPNX72NmJrtrDWnXQBHhXiU/WRSeXAIe5pGwYO8Xm0c/C1+FLXWHfIJuvhVvFGDNF0ngqnGYBRCmV6hAeFMTrrAiC5aiOr9u1yH12AW05G7I7OU/qSqioA0zYchUc7h8jgSH677je9xegzWkFfcXgyp9RuwV6+gn0/LDBEoUyPKC5W89FjY/WWpM9ouig68Y+0KRbiy5axb0eJ++jCTScjdkfHxMTBiUyt2ULr+pXsW/i8++hDy1QyYIjPo52Dp6DFTn+78y58xU7akle4wiCFMj2iqAhGjlSrvN2czsWV5WIndcNS95oKZ+AwxtGgfe7L/3In/vZWRi15havczTZGjTJcphJ4wyQ4T6KgQG0TnZMDl12mtzQ9Z8QImDZNnWbnSZx/vtoMUdtTcQdefhmuv959JyN2x4oVMH48vPMOXOLyetujZ9gwdTKiA4sRHdWV1f13pLyJlBR19e1O1aC7dkFlpceEMQ5g9Gi1hUZTk96S9JyiIveejNgd2urbnWzD4MWIpnNwJ7QeS25iADZbDheMzgDg+uf+hc2Wo7NEDkbrseQm86Rtthx+euFFcvftIy4l1bP0ERgICQluZRsXp6sdiq9+6hlD6sJ0Du5GWppbGIBWLBYbqd7drho3kxvvuNuQRnDUaHF7N9JHIr5UpE7rKN7zOH24kS5iI8cDUDj+ckPqwnQO7kZaGpSVqQPuDYxWLJaKnUZff3akTiWovTjJY3CjMN/srLlETLmOYQ27KQ2PxRqT4Xn6SEtTw3zNzXpLclg6bEPs7PWzUpU6xZC6MJ2Du5GWpk6FKzH2OMeK8lIColJJrtpIWWgUdouPWpxU7ibFST3BjQbcV5SXMtoaBBw0/c2T9JGWBq2thg/zabaRVLXxwMmIBtOF6RzcDTcJZcTEJ9FUWUzyzgpKwt182tjhSEs7qlbqriYmPon4UrXmZ014LOCB+tBsw+D60GwjpaqCNQa2DdM5uBtJSeDra3jnMC9rDv7fPEvknmrWhI3omHA1L2vOkd/sTrhJmG9e1hwSC7/umP7mkfrQWqm7gW1Yv3mGIXtrjW0bImLIx/jx48WkG1JTRc49V28pjshXD8wRATlLUSQ2MUWys216i+R43n5bBERWrtRbkiOyNTVNVgRYRbFYPFcfyckiF1ygtxRH5Ov7Z4uAnOYE20CdwNnna7BZIe2OpKWpRT8G57RhkQB8ZrAJVw6lc5gvM1NfWY7A0KqdDL1iFvaXX9ZbFOfhJhlL0yOHAvBVZaVaCGdAzLCSO5KWpla47tuntySHp7AQgoMNN+HKoSQnu0WYjx071IebjjXtMWlpsG6d4cN8FBbCoEEQGam3JN1iOgc35KeaGhBhfP/+xCWNNFx+dAeFherFyIB9YxyF7d33KFUsfPzYY8bWhea8PNw5LKqtA7udzKAgY+vDDWzDdA5uhs2Ww1/efAuAKWfcatxiJpH9BuChaMVMJUOTGRMy1Li6gP0ZPB6uj7ty/gvA1LNuN64+3MQ2TOfgZszOmsu26bfSbPElpWazcYuZtm+H6mrDG0Bf0IqZyqLTia7bTsiwZGPqAmDVKggLg4gIvSVxGrOz5rLl1D/TqlhINrJtbN6stk43uG2YzsHNqCgvxSc6nbKwKFJ2bgAMWszkBStVrZhpzeAYLAhJVZuMqQtwizBGX6koL0WJyWB96HDTNhyA6RzcDK2ApiQ8lpSdBp585SYG0Bc6dDFEbX09cucGY+rCTcIYfaWzbYx0B9sw+EwN0zm4GfOy5rDvu/kU+QUwvH4n/qW/GbOAprAQwsNhyBC9JXEami7W7NpJg68/CeW5xtTFpk1QX+/xzkHTR6GflRG7tuO7bqkx9VFYqGYphYXpLclhMesc3AxtwtU3d98DQOZv/+E8I06+8oKVauepcIWtzYzeuJLnX3rJmLoAr9HHwnbbGLPkP1xo2sbR44hKOmc8zArpI7Bpk1qZ+69/6S3JobS1ifTvL3LrrXpL4jquvlpkyBC9peiav/1N/V+prdVbEtewfr369y5YoLckh9LaKhIYKPKXvzjtFDioQtoMK7krw4erRTQFBXpLcigbN8KePe6xOnIUGRlqkdn27XpLciiFhRAVBSEhekviGmJi1OJLI9rG+vXQ0OAWtmE6B3dFUSA93XAGYLPlcO2kEwC48KF5xssxdxbp6erzqlX6ynEQNlsOhe+8wxeVlcYuCnMkiqI6awPq4oYpJwJw3pwsw+vCdA7uTEaGuiq02/WWBNhfFBYXrq6KCo67yphFSM4gQx2HaiRnbbPlcPPtd5HY0sbGCecbtyjMGWgLJxG9JQH220Z8uDovetVx1xheF6ZzcGfS09UslIoKvSUB9heFjW5tZHNwOK2JE41ZhOQMwsPVAjMDrVZnZ80lbeJMrPZWSod46PS37sjIgF27oLJSb0mATrbR0sTGgRHYEyYYXhemc3BntNWqQS5IWlHYqB3rWT0kFjBoEZKzyMgw1J1DRXkpYyw+AKxur8XwGn1oYT6D6ONA23APXZjOwZ3RimgMYgAx8UlQkU9CdSWrh8QDBi1Cchbp6VBcrI6qNAAx8Ukkl+fSYvGhNExtme41+jDYHlBMfBI+G/KIq9nc4RyMrgvTObgzwcEQH28Y5zAvaw4x3zyHr9gpHhxj3AlXziIjQ20VvW6d3pIAqj5GrfuV0uBwmhTFu/QxcKA6Q8RAthH77XwsCEXuYhuOyId1xsOsc+gh550nMnKk3lJ08Mv114uAJHry9LfuWL5cza9/5x29Jelg76BB8kHwAM+e/tYdM2aIjB6ttxQdLLnmWhGQOCfbBuYkOBNAXa1++qmaOx0YqLc0HG+1Qv/+lO7apc7z9SZSU9W/uaAALrlEb2mgqoqg2lou+Pvfsd95p97SuJ6MDPjyS2huBn9/vaXh2AB/GDCA8ro6t2iA6GXW63n8XLcL7HbG9+tnjDz2/HzVKL3NMQC29z9gnY8vH82bZxxdAIwZo68cOrFo125obWWM1WocfYwZ4xaOAUzn4NbYbDnclv02ANNOv0X/PHaR/QbgZWh57EVDUxg3MEJ/XQDk5anPXqqPO9oH/5x05m3668NuV23D4HPGO2M6BzdGG/zT6OvPqKqN+uexV1SoueVuZACOQstjL40dQ/Su7YQNTdQ/jz0/Xx1eHx6unww6MTtrLlun30qTjy8jjWAb5eWwd69bOeo+OQdFUUIVRflGUZTS9udB3byuTVGUvPbHJ305p8l+KspL8YsezZrBMYzauR7QOXfai1eqWh776k6zHXTPY8/L80pHDfuHYpUOjiF1h4Fsw4300dc7h/uA70QkCfiu/fuuaBCRzPbHuX08p0k72nCTwqEJjN5WBiL65k7n5al7DVqOuReh6WJVRCIA6dvW6auLpiZYvdorHTV01kcCo7cbxDZ8fAw/4KczfXUO5wGvt3/9OnB+H49n0gu04SYrfa0MbNrLkOIf9c2dzs+H5GQICtLn/Dqi6WJjdSU7gkIYVabz4B+tGM+NVqqORNNHnp+V0IbdhK3+WX/bGDkSrFZ9zn809CUPFqg76Pvabl7XCuQCS4Dze3Jss86hZ2Rn2+ScqBgRkBuHDtM3jz02VuTSS/U7v85kZ9skNjFFPgNZ7e+vry5efVWtuVizRj8ZdCY72ybnR0WLgFyvt21ERYnMmuWSU+GgOoeeOIBvgcIuHuf1wjkMa3+OBzYACd287oZ2J5IbHR3txI/Pw2hoEPH1Ffm//9NPhtpa9d/pscf0k8Eo3H+/iI+PyL59+slw220iQUHqcBlvZt8+VRcPPKCfDFVVqm088YRLTuco53DEsJKInCoio7t4fAxsVxQlEqD9eUc3x9jS/lwO/ACM7eZ1L4rIBBGZEO6FGRZHjdWqDg9ZvlyX09tsOVw6Wm0CeNWz8/XPJ9eb8eOhrU231g02Ww5LXniRX/ftI25kmnfrIzAQRo3S1TYuz1BDe79/+lm30kVf9xw+Aa5s//pK4OODX6AoyiBFUQLavx4MTAaK+3hek4MZNw5WrHB5/3otvz8xQt34XDHx9/rn9+vNuHHq84oVLj+1zZbDjbffxcg2oWzM6frn9xuB8eP108Udd5MYoS6cVk78g1vpoq/O4XFguqIopcD09u9RFGWCoigvt79mFJCrKEo+sBB4XERM5+Boxo2DqiqX96/X8vszWprYGRTC7pTJ+uf36010NISG6nJBmp01l+TjryCkpZHVEQn65/cbgXHjYNs22LrVpafVbGNMSyPb+4eyJ2WSW+miT85BRKpF5BQRSWp/rmn/ea6IXNf+9S8iki4iY9qfX3GE4CYHodNqVcvvT9++juKIeFAU/fP79UZR9t/JuZiK8lLGK6pZF0UkAMafG+B0dLaN0dvWUdTewt6ddGFWSHsKY8aoNQYujq1qfeqTd1aQF5kMGL9PvUsYP16dJdDU5NLTxsQnMbr0V5otvhR740yNrtD6GelgG77rV5JUtYl8N7QN0zl4CkFB6sabi1dH87LmkPitOsMhLyLBPfrUu4Jx46ClBYqKXHraeVlzyFi3hOKQCO+b4dAdwcFq/Y0OtpHSPsPBLW3DESlPzniYdQ5Hwe9/LxIZ6fLT5l4+SwQkwhtnOHRHaamavvjSS649b2urNFut8sbAEO+c4dAdl18uMmKEy0+7fOZlIiCDXWgbuCqV1cR9yBWBrVsZZrG4tEXx+LZWiIlhm93O+tISZs263CXnNTK2X5ew22Lh+euvd2276DVr8Gts5PfPPI29rc3URzvLATZtYoiLbWNcawvEx7PTDW3DHPbjIdhsObzx6Rd8BZx+/v18ERDEjXfcDeD8f8hly+CYY5x7DjfCZsvhxjvvJXZwDMdZfDvSScFFugBTH52w2XLI+ewrPgNOv3AO3/gFuE4fS5fC8cc79xxOwrxz8BBmZ81l3am3ADB653rXpTBWVantiCdOdO553AgthbE4ZgypOzfQPyrVdSmMS5eqMfaUFOefy02YnTWX0lNuAiDdlbaxfTts3Oi2tmE6Bw+horyU1rixlIVGkbFNTZVzSdqctlJ1UwNwBloK46qhiQS0tZBctdpDje8AABTsSURBVNF1KYxLl8KECWoHUBNA1UdT/Hg2hESattELTOfgIWgtilcMG8m4zSWua1G8dKmaQjt+vHPP40Z01gXAuC0lrtFFY6Pa/dNNL0bOokMfw3WwDR8fGNtltyDDYzoHD0FrUbwkMJiwht0MK1zomrS5pUvVFNr+/Z17HjdC08W6uu3s6DeIzDW/uEYX+flq+qy533AAmj5+swYzZG+t61rbL12qzm/o18+553EWjkh5csbDTGXtPdnZNjk1OlYE5M4hQ52fNme3i4SHi1x9tXPP44Zo7bvfBanw9XNNOulzz6npsxs3Ov9cbkZ2tk3OGBEjAnJ7hItsIzRU5LrrnHueLsBVLbv1epjO4ShpaxMJCXH6P2V2tk0mx8SLgPw1PMLMpe+Of/xDNbMtW5x6muxsm7wfPEC2gMQmJJv66IrWVpEBA0T+9CenniY72yZTY+JEQO7TwTYc5RzMsJKnYbGoqXO//OK0U2jdJlOHq7HtpWMvdqtuky5l8mT12QX6SMefVQkTaTjmKlMfXeHjA8cd5xJdjBqm2sZv437ntrownYMnMnmyOiayttYph9dSNSe0NNHk48f6jOlu1W3SpYwdCwEBTr0gzc6ay9Ap15JUX0X+sBSzE+vhmDRJ7Xm1e7dTDq/ZxjEtjTT4BlCRcarb6sJ0Dp7IpEnq86+/OuXwWqrmuC0lFEYk0Orj61bdJl2Kv7+6Qbx4sdNOUVFeyrHtnVi1Bm+mPrph0iR15smSJU45fIdtbC5h1dAE2iw+bqsL0zl4IhMnqrfQTlqtxsQn4bN+JWO2rmVJdDrgXt0mXc7kyWrTt4YGpxw+Jj6JicULabH4sHz4KMDUR7cce6waenWibfiuX0n6tlKWjHBv2zCdgyfSrx9kZjpttTovaw4Z3z6Hn72NX6NS3a/bpKuZNElNMc3Ndcrh52XN4bjSX1kZOpx9Pr6mPg7HgAGQnu5U2xj7jdqleIm724YjdrWd8TCzlfrIn/+sDphvbnbK4QvPOUeaQfqZnViPzM6dasbS44875/i7d0ubxSLPDQo1O7H2hJtuEunfX81ecgJFZ58tjSgSpJNtYGYrmRyORXaBffuYEBDglC6UaTt34jdpEnvcsNukq7F99TXlfn58fN99zukIumgRFrudW975r9mJtQcsFmDPHjL9/Jyij9Tt2wmYcgJ73dw2TOfggdhsOVz/1rsAnH3StY4fMl9fr/aNOekkxxzPg9FSG3+LyuCEwAE0jHfCkPmFC8HPb38igkm32Gw5/PG/7wEw4+TrHW8bu3ap+0seYBumc/BAZmfNpfa029gSPJiJm1c7PrVx8WJoa4Np0xxzPA9GS23MS5lEWMNu0vqHOj618Ycf1Pz9oCDHHdNDmZ01l6rpt7G9fygTt5Q43jZ+/hnsdtM5mBgTLZ1ucUwmJ2zIw8fe5th0OnOl2mM6dBGbCcCJ61c4Vhe7dqmzkU1H3SMqyksJGJHGopgxnLAhD4szbCMgQHXWbo7pHDwQrQvlD/HjGdi0l8wtaxybTrdwoZoSaK5Uj4imi8qBEawLjWJaea5jdeFBK1VXoOnjx/gJhDbsJmPbOsfq44cf1A4FVqtjjqcjpnPwQLQulN/6+tOmWJi88guHpNPZbDmkJyTRtmwZzxatdsuWAK5G00VjRQE/xI1j4sZVyLfPOiS10WbL4aXf/4EmYOR1fzT10QM0fXzjG4AdhRNWfOYw2xgTn4R9xQqeKljlGbpwRMqTMx5mKmvf0LqC/gySHxDQ53S67GybBIcPk1lT/yACcuFJ10pw+DAzZbIHaLo4TVFEQL6/8y6HHDM4fJjkDRomv0SlScTMR0199BBNH7+CrAywOsw2/nDCFSIg5518va66wOzKatIj5s1T1bxtW58OE5uYIhEzH5UFEy+URh9fSf7L+xIx81GJTUxxkKBeQEODWnty8819PlRsYookXfiAtKHIPydfLjH3/s/UR2/JyhJRFJEdO/p0GM02Xp5wnjT4+kvSnR/qqgtHOQczrOTpnHmm+vzVV306jLaxOq08lxXDR9HkF+C2PWN0w2pV9wa++ELt79MHKspLObW5AQvCLzEZgNlPqdeceaaqh6+/7tNhKspLCRg+imnly1k2PJVmXz+P0IXpHDydzEyIiFAvSH0gJj6J6KIfSKnayJfJapaSu/aM0ZUzz4Tycli3rk+HiYlP4oz8L9nZL8Tsp3S0TJgAgwfDl1/26TAx8UnEFS0koaaSr1I8xzZM5+DpWCyUJSdT+847+FosR10ROi9rDqf/+Ap2FD5PPNa9e8boyMfNLQDclpLSp+rcx/7vXk7ZVMRnkSm0iZj6OBosFtYnp1D11lv49NE2zvjpVdoUhS8SJnqOLhwRm3LGw9xzcAzZ2Ta5MniQulF2+d/6tHFZEx0tS62BZv+eo0TbuCwNHiwLY8f1bRP5vfdEQGYOG2Hq4yjJzrbJtcEhIiAzZj3ZJ33UDh8uvwQawzYwN6RNekJsYoqkXDBbWhWLPD3psqPfuFyzRv13efpp5wjqBWgbl6+MP1cafP37tql/6aXq/O6WFscL6iXEJqZI6vl/lTYU+ccJs47eNoqKVNuYP985gvYSRzkHM6zk4VSUl9KQMIHc4aOYUfIziBzdZtl7aj8aLrrI8UJ6Cdqm/neJE7G2NnNa6ZKj00VDA/zvf3DhheDr6xxhvYCK8lL2JE5k5bAUzln9U99sQ1FUfXgQpnPwcLSK0HcyTiOhppKJlUW92iyz2XKISxrJyvvvZ7nViu3Hn5wsseei6eKXmAwqBwxhZsFXvd64tNly+GN8IuzdyxWffuYZxVY6oenjvxmnkVS9ifGbVx+Vbax68EGWBlixfb/QyRK7GEfcfjjjYYaVHIMW5469OEvqAoLk3ZjMHsdVtfcee/adIiAPjD3LLLTqA9rnGTHzUXnihFkiIGNCh/T489Te/17MGKkODJZhv3vY1Ecf0D7PuIselN3+gfLf2LG9to3JZ90uAvLXcTMMowvMPQeTnqJVhM4HaVQUeWfBCz16nxYjf/zEK0VAjr/xVbPQqo9ouhimKNICUjjjnB6/NzYxRaIveUh2+wdKTsZpZuGbA9D0sQCkQVHknRde7NH7NNt4copaFT3xpv8YRheOcg5mWMkLmDXrctaXlnBzXh4BIlzS2LNZxhXlpQQNS+GSgm9YMSyFLQOGeERxj55outhst+N73nmkLf0Nmpt79N6K8lIuqq8muLmBz0ZOAczCt76i6eOPy5djFeGS5qYeva+ivJR+kclcsupblkalsj14sMfpwnQO3sSYMVQlJLD2nnuw9CCvOyY+ibMXv0V87RZeOFbdiPaE4h6jsDApGXbs4BKrtUc59vFxifx5UTaFEQksam8BburDQYwbR3VcHCV33tlj2zh3cQ4xdds81jbMVAcvwmbLYfH2av7d3MwFlz3GYhFuvONugC5HGT7ywP0cd/XVrAqJ5Mv4Y2hqL+75x1NPulp0j8Nmy+Hm/2RTGDSQP4fH8rsJlx5WFwBvnjyNuJde5A9jz0bsbTRVFpv6cBA2Ww6/7azh2eZmzr38byyxtx3eNmb/leOvuYa80OF8GzvOM23DEbEpZzzMPQfHE5uYInEXZ8lu/0D5LHlStzHr/2/v/IOrqK44/jmRQABJSEICkfyARIjVtipG6+86ahFTBkVBwdQyqIOO4GglCoxVqdrOoKidVscOohUdpzL+IFBHx584/UtqhPBLVKJCiVKwoMRf2ICnf+x9zOt7b1+e5O2+NZzPzJu3u/fu7nfOuWfPu/fuvo2Nw053/yL6q+LSSDzc05uIjVnfd9plqqBjr3ggrS/yRXRrn3zdUlamI+pGmz+yzIgj67X24tv1y/wC/ftRZ3QbG1e52JgawdjAJqSN74vk5Wl1c4sudHfKXDthjlY3t6jk5R2oE7sLY/gld+rWoqHaVjxcBw2piEzD7y3EfHH8dU/qpwOKdEN5rdb95umUvhg65Q9603kzVUEnFZaYLwIg5o8/njpVFfTqC+f5xkbl5Dv0X4Vl+nZJZSRjIxLJAZgMbAS+AxrS1BsHvAe0A3MzObYlh+wT+7Vae9NyXV1Rr7vzC7SmsFxBDvzyidW5edx1qqDTL74tMndh9CZidq6Z87xeedGtqqAL+g1M6Ysjm5fptsJyXVMxWode+nvzRQDEbF3X3KJtw0bprvwCrfKJjXkuUU+bND+SsZGt5NDTCekNwEWA75NRInIY8CBwPnA0MFVEju7heY2DIPYWrK+2beTq+lPJ79rL4/0HUTP7WXaXHce0q2awpf19xu/9gvmvLmJNRT2v153Y6+7CiALxb4hr+fYrHs4voPnbr5l86Z3/54vSshEsfvZOKjt3ct/pTfSrOsZ8EQAxf3zZ8Q5X159GQddelgwoSoqNCd90cutri2kd/iPeqD2hd8dGNjIM8AY+PQfgFOCluPV5wLzujmk9h2CI/QKS/P5644kTVUH/WnOsnjywRIddepfeOGCw7kd0TcUobZj5hN1LHyDxvhh58e36YXGFbisYpE39C/Woib/VkYOP0I1Fw7RL8vTmcdeZLwIm3h83nzBBFfSRmuP0Zy42bnKxsbqiXk+YFd3YIArDSgcOkj45TAIWx61fDjzQ3TEtOQSL5OVp9exl+tRPfqH7vVee6Of9BqqCPtenn46YNF+rm1vs9ZMhEBvvnnD5vbpd8lRB90medvbpq58jOvms6eaLEInFxjM/PjspNp7p009rJv0u0v7IVnLo9lZWEXkVGJai6BZVXZ5B50RSdVh8zjUDmAFQXV2dwaGNg6WmdhTffLyJOY3XM3P9qzQ13sDPt7bxQUklC4vK+Wzlo3Tt2saII0dz7/33+N5eafScmtpRfNPxDmtrfspwVcY33c3ZH62hbncHC4bWsWr9a3S98Zj5IiRisTH7lzdyzYaVNDVez5lb19JeWsXCwnI+X/nIIREb3SYHVT23h+foAKri1iuBT3zOtQhYBNDQ0NCz9ygaablr/m3efdznzKKztIqlhWUsHz8bgP6AHF5K/9YlfLT53dwKPQSI98VhpVWs2r+PtWc0HSgvqRhtvgiReH/sKa3iqcJyWlxsDADyDi85JPwRxhPSbwGjRGSkiPQFpgArQjivkYampst46P576N+6hK7d29j1/EL2bl2H7t/Xe95k9QPBfBEtzB+OnoxJARPxegbfAjtwE8/AEcALcfUagfeBD/CGo7o9ts05hMuBybiIPdBzKGK+iBY/NH+QpTkH8Y4VPRoaGrS1tTXXMgzDMH5QiMjbqtrQ0+PYH+8ZhmEYSVhyMAzDMJKw5GAYhmEkYcnBMAzDSMKSg2EYhpGEJQfDMAwjCUsOhmEYRhKWHAzDMIwkIvsQnIh8CmzN0uGGAP/J0rGyTZS1QbT1RVkbmL6eEGVtEG199ao6qKcH6faP93KFqpZl61gi0pqNJwaDIMraINr6oqwNTF9PiLI2iLY+EcnKX0vYsJJhGIaRhCUHwzAMI4lDJTksyrWANERZG0RbX5S1genrCVHWBtHWlxVtkZ2QNgzDMHLHodJzMAzDML4HvSY5iMg4EXlPRNpFZG6K8n4istSVrxKRESFqqxKRlSKySUQ2isj1KeqcJSJ7RKTNfUJ91ZSIbBGR9e7cSXc7iMefnP3WiciYkHTVx9mkTUQ6ReSGhDqh2k5EHhWRnSKyIW5biYi8IiKb3Xexz77TXJ3NIjItJG33iMi7zm/LRGSwz75p20CA+uaLyMdx/mv02TdtjAeob2mcti0i0uazb6D287uOBNb2svHGoFx/gMPw3jJXC/QF1gJHJ9S5FviLW54CLA1RXwUwxi0PwnsrXqK+s4Dnc2jDLcCQNOWNwIuAACcDq3Lk538DNbm0HXAmMAbYELftbmCuW54LLEixXwnwofsudsvFIWgbC/RxywtSacukDQSobz7QnIHv08Z4UPoSyu8FbsuF/fyuI0G1vd7SczgJaFfVD1X1v8BTwAUJdS4AlrjlZ4BzRETCEKeq21V1tVv+AtgEDA/j3FnkAuBx9XgTGCwiFSFrOAf4QFWz9XDkQaGq/wB2J2yOb19LgAtT7Hoe8Iqq7lbVz4BXgHFBa1PVl1V1n1t9E6jM5jm/Dz62y4RMYrzHpNPnrheXAH/L9nkzIc11JJC211uSw3BgW9x6B8kX3wN1XKDsAUpDUReHG846HliVovgUEVkrIi+KyDGhCgMFXhaRt0VkRoryTGwcNFPwD8xc2g5gqKpuBy+IgfIUdaJgwyvweoCp6K4NBMksN+z1qM+wSBRsdwawQ1U3+5SHZr+E60ggba+3JIdUPYDE27AyqRMoInI48Cxwg6p2JhSvxhsuORb4M9ASpjbgNFUdA5wPzBSRMxPKc2o/EekLTACeTlGca9tlSq5teAuwD3jSp0p3bSAoHgLqgOOA7XhDN4nkPH6BqaTvNYRiv26uI767pdiW1n69JTl0AFVx65XAJ351RKQPUMTBdW8PChHJx3Pok6r6XGK5qnaq6pdu+QUgX0SGhKVPVT9x3zuBZXjd+HgysXGQnA+sVtUdiQW5tp1jR2yYzX3vTFEnZzZ0E5DjgSZ1g9CJZNAGAkFVd6jqflX9DnjY57w5bX/umnERsNSvThj287mOBNL2ektyeAsYJSIj3S/MKcCKhDorgNgM/STgdb8gyTZurPIRYJOq3udTZ1hsDkRETsLzza6Q9A0UkUGxZbwJzA0J1VYAvxaPk4E9sa5sSPj+asul7eKIb1/TgOUp6rwEjBWRYjd0MtZtCxQRGQfMASao6tc+dTJpA0Hpi5+7muhz3kxiPEjOBd5V1Y5UhWHYL811JJi2F9TMetgfvLtp3se7o+EWt+0OvIAAKMAbkmgH/gnUhqjtdLwu3DqgzX0agWuAa1ydWcBGvLsw3gRODVFfrTvvWqchZr94fQI86Oy7HmgIUd8AvIt9Udy2nNkOL0ltB7rwfpFdiTd/9Rqw2X2XuLoNwOK4fa9wbbAdmB6Stna88eZY24vdtXcE8EK6NhCSvidcm1qHd6GrSNTn1pNiPAx9bvtjsfYWVzdU+6W5jgTS9uwJacMwDCOJ3jKsZBiGYWQRSw6GYRhGEpYcDMMwjCQsORiGYRhJWHIwDMMwkrDkYBiGYSRhycEwDMNIwpKDYRiGkcT/AEERLz00SXH7AAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(X, Ysin_hat, color='red', label='with Xsin')\n",
"plt.plot(X, Yhat, color='green', label='with X')\n",
"plt.scatter(X, Y, edgecolors='k', label='initial data')\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"r2 with X -0.051195108906248565\n",
"r2 with Xsin 1.0\n"
]
}
],
"source": [
"print('r2 with X', calculate_r2(Y, Yhat))\n",
"print('r2 with Xsin', calculate_r2(Y, Ysin_hat))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"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.5.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment