{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 서울 날씨 트위터를 위한 머신러닝\n", "\n", "![서울타워](https://raw.githubusercontent.com/leehaesung/AWS_BIG_DATA_SPECIALTY/master/data/QRCode.png.png)\n", "\n", "* Data set: pm2p5c.csv\n", "\n", "* Date: 23rd Apr 2019\n", "\n", "* Written By Haesung Lee\n", "\n", "* AWS-IoT Diagram:\n", "\n", "![Image](https://raw.githubusercontent.com/leehaesung/AWS_BIG_DATA_SPECIALTY/master/data/AWS-IoT_Analytics.png)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### S3 myiotstation 버킷에서 pm2p5c.csv 초미세 먼지데이터 가져오기" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [], "source": [ "# create and evaluate an updated autoregressive model\n", "import pandas as pa\n", "import matplotlib as plot\n", "from pandas import read_csv\n", "from matplotlib import pyplot\n", "from statsmodels.tsa.ar_model import AR\n", "from sklearn.metrics import mean_squared_error\n", "from math import sqrt\n", "# load dataset\n", "series = read_csv('https://s3.amazonaws.com/myiotstation/pm2p5c.csv', header=0, index_col=0, parse_dates=True, squeeze=True)\n", "#\n", "# Data sets" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "count 35.000000\n", "mean 21.685714\n", "std 15.914794\n", "min 3.000000\n", "25% 8.500000\n", "50% 18.000000\n", "75% 33.000000\n", "max 63.000000\n", "Name: Dust, dtype: float64" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#view basic stats information on data\n", "series.describe()" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "time\n", "2019-04-20 20\n", "2019-04-21 21\n", "2019-04-21 41\n", "2019-04-21 21\n", "2019-04-21 31\n", "2019-04-22 37\n", "2019-04-22 32\n", "2019-04-22 38\n", "2019-04-22 34\n", "2019-04-23 30\n", "Name: Dust, dtype: int64" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#get data\n", "def GetData(fileName):\n", " return read_csv(fileName, header=0, parse_dates=[0], index_col=0)\n", "\n", "#read time series from the exchange.csv file \n", "\n", "#view top 10 records\n", "series.head(10)" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# create a histogram plot\n", "from pandas import read_csv\n", "from matplotlib import pyplot\n", "series = read_csv('https://s3.amazonaws.com/myiotstation/pm2p5c.csv', header=0, index_col=0, parse_dates=True, squeeze=True)\n", "series.hist()\n", "pyplot.show()" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# create a density plot\n", "from pandas import read_csv\n", "from matplotlib import pyplot\n", "series = read_csv('https://s3.amazonaws.com/myiotstation/pm2p5c.csv', header=0, index_col=0, parse_dates=True, squeeze=True)\n", "series.plot(kind='kde')\n", "pyplot.show()" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from pandas import Series\n", "from matplotlib import pyplot\n", "from pandas.plotting import lag_plot\n", "lag_plot(series)\n", "pyplot.show()" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " t t+1\n", "t 1.000000 0.805891\n", "t+1 0.805891 1.000000\n" ] } ], "source": [ "# correlation of lag=1\n", "from pandas import read_csv\n", "from pandas import DataFrame\n", "from pandas import concat\n", "series = read_csv('https://s3.amazonaws.com/myiotstation/pm2p5c.csv', header=0, index_col=0, parse_dates=True, squeeze=True)\n", "values = DataFrame(series.values)\n", "dataframe = concat([values.shift(1), values], axis=1)\n", "dataframe.columns = ['t', 't+1']\n", "result = dataframe.corr()\n", "print(result)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Autocorrelation (자기상관도)" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# autocorrelation plot of time series\n", "from pandas import read_csv\n", "from matplotlib import pyplot\n", "from statsmodels.graphics.tsaplots import plot_acf\n", "series = read_csv('https://s3.amazonaws.com/myiotstation/pm2p5c.csv', header=0, index_col=0, parse_dates=True, squeeze=True)\n", "plot_acf(series, lags=34)\n", "pyplot.show()" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZcAAAEKCAYAAADenhiQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzt3Xt8VOW1//HPSkgI4RIggSTcQQFFVJSAgoqgSNHiQexP1FKrrZV6Wltr7Wnt7bS1p609be05WpXS1oo9KNJWWi8UFTSg4gVU5KISEIKEq+ESCCFAkvX7YzYYQhImZJI9Gb7v12tes/d+9jOzFntgsW/PNndHREQklpLCDkBERBKPiouIiMSciouIiMSciouIiMSciouIiMSciouIiMRcqMXFzB42s+1mtrKOdjOz+8xsrZktN7Nzq7WNN7PVQdtdzRe1iIgcT9h7Lo8A4+tpvxzoH7ymAg8BmFky8EDQPgi43swGNWmkIiIStVCLi7svAnbWs8pE4FGPeB3oaGa5wHBgrbuvc/eDwKxgXRERiQOtwg7gOLoDG6vNFwXLalt+Xm0fYGZTiez10KZNm6E9e/ZsmkgbqaqqiqSksHckGy8R8lAO8SERcoDEyKOgoKDY3bs0pE+8FxerZZnXs/zYhe7TgekAeXl5vnTp0thFF0P5+fmMHj067DAaLRHyUA7xIRFygMTIw8w2NLRPvBeXIqD6rkYPYDOQWsdyERGJA/G+r/YU8PngqrHzgRJ33wIsAfqbWV8zSwWuC9YVEZE4EOqei5k9DowGssysCPgRkALg7tOAucAVwFqgDPhC0FZhZrcBzwHJwMPuvqrZExARkVqFWlzc/frjtDvw1Tra5hIpPiIiEmfi/bCYiIi0QCouIiIScyouIiIScyouIiIScyouIiIScyouIiIScyouIiIScyouIiIScyouIiIScyouIiIScyouIiIScyouIiIScyouIiIScyouIiIScydVcTlYWRV2CCIiJ4WTqrgUFu9j576DYYchIpLwTqricrCiii/8+U32HagIOxQRkYR2UhWXXpnprNy8h1v/7y0OVugQmYhIUwm1uJjZeDNbbWZrzeyuWtr/w8yWBa+VZlZpZp2DtkIzWxG0LY3m+zqkpfCLq8/k5TXF3PnXd6mq8linJCIiQKuwvtjMkoEHgMuAImCJmT3l7u8dXsfdfwX8Klj/SuAOd99Z7WPGuHtxQ753cl5PdpQe5JfzPiCzbSo/unIQZtbofERE5BOhFRdgOLDW3dcBmNksYCLwXh3rXw88HosvvvXifuwoPcAfX1lPVrtUbrukfyw+VkREAmEeFusObKw2XxQsO4aZpQPjgb9XW+zA82b2lplNbcgXmxnfu+J0Jp3TnV8/X8Bjb3zUwNBFRKQ+Ye651HYsqq6TIFcCr9Y4JHaBu282s67AC2b2gbsvOuZLIoVnKkB2djb5+flH2j7dxfkwK5nvz1nB5vUF5OWE98dRWlp6VGwtVSLkoRziQyLkAImTR0OFWVyKgJ7V5nsAm+tY9zpqHBJz983B+3Yzm0PkMNsxxcXdpwPTAfLy8nz06NFHtY+8sIIpf3yD6Sv2cMGwcxhxSuaJZdNI+fn51IytJUqEPJRDfEiEHCBx8mioMA+LLQH6m1lfM0slUkCeqrmSmWUAFwP/rLasrZm1PzwNjANWnkgQ6amtePjGYfTKTOeWR5eyclPJiXyMiIhUE1pxcfcK4DbgOeB9YLa7rzKzW83s1mqrTgKed/d91ZZlA6+Y2bvAm8Cz7j7vRGPp1DaVR784nA5prbjpz0soLN53/E4iIlKnUO9zcfe57j7A3U9x958Fy6a5+7Rq6zzi7tfV6LfO3c8OXmcc7tsY3Tq24dGbh1NZVcVnHlrMOx/tauxHioictE6qO/SP59Su7fnbv4+kbetWXDf9df61YkvYIYmItEgqLjWc0qUdc74ykkHdOvCVx97mD4vW4a47+UVEGkLFpRaZ7Vrz+C3nc8XgXH42931++M+VVGi4fhGRqIV5KXJcS0tJ5v7rz6Fn53SmLfyQTbv287vPnkvb1vojExE5Hu251CMpybjr8tP4+aQzWbSmmGumvcbWkvKwwxIRiXsqLlH47Hm9+NONeWzYsY+rHniV9zbvCTskEZG4puISpdEDu/LXW0cCcM20xeSv3h5yRCIi8UvFpQEGdevAP756Ab0z23LzjKUsLPg47JBEROKSiksD5WSkMfvWEfTunM7Pnn2PSj1wTETkGCouJ6Bd61Z861MDKdhWypNvF4UdjohI3FFxOUGXD87h7B4Z/PaFAsoPVYYdjohIXFFxOUFmxnfGn8bmknL+7/UNYYcjIhJXVFwaYeSpWVzUP4vfvbSWPeWHwg5HRCRuqLg00nfGn8buskNMX7gu7FBEROKGiksjDe6ewZVnd+OPr6xj+x7dvS8iAiouMXHnZQOoqHT+d8GasEMREYkLKi4x0CerLdcP78WsJRtZr6dYioiouMTK1y49ldTkJH79/OqwQxERCZ2KS4x0bZ/Gly7qy7PLt7CiqCTscEREQhVqcTGz8Wa22szWmtldtbSPNrMSM1sWvP4z2r5hmDqqH53SU/jlvA/CDkVEJFShFRczSwYeAC4HBgHXm9mgWlZ92d2HBK+7G9i3WbVPS+GrY07llbXFvLKmOOxwRERCE+aey3Bgrbuvc/eDwCxgYjP0bVKfO7833Tu24ZfzPqBKg1qKyEkqzGf2dgc2VpsvAs6rZb0RZvYusBn4lruvakBfzGwqMBUgOzub/Pz8xkd+HJf3rOSPK0r49RMLGJ4b3R9xaWlps8TW1BIhD+UQHxIhB0icPBoqzOJitSyr+V/9t4He7l5qZlcA/wD6R9k3stB9OjAdIC8vz0ePHn3CAUfroirn5e0vM7eokjsmjyIl+fg7iPn5+TRHbE0tEfJQDvEhEXKAxMmjocI8LFYE9Kw234PI3skR7r7H3UuD6blAipllRdM3TMlJxrfHD6RwRxlPLNl4/A4iIgkmzOKyBOhvZn3NLBW4Dniq+gpmlmNmFkwPJxLvjmj6hu2S07oyrE8n/nfBGvYdqAg7HBGRZhVacXH3CuA24DngfWC2u68ys1vN7NZgtf8HrAzOudwHXOcRtfZt/izqZmbcdfnpFJce4HtzVuCuk/sicvII85zL4UNdc2ssm1Zt+nfA76LtG2+G9u7EN8cO4DcvFHBur07cOLJP2CGJiDSLUItLc9uxYwePPPLIUcvOOOMMhg0bxqFDh5g5c+YxfYYMGcKQIUMoKytj9uzZx7Tn5eUxePBgSkpKmDNnzjHtY88/n2WndeXuZ95jw7JX6JV+9CGyUaNG0a9fP0pLS4+JDeDSSy+lZ8+ebNy4kQULFhzTPn78eHJycli3bh2LFi06pn3ChAlkZWWxevVqXnvttWPaJ02aREZGBitXrmTp0qXHtE+ePJn09HSWLVvGsmXLjmmfMmUKKSkpLFmyhFWrVrF7924KCwuPtN90000ALF68mIKCgqP6pqSkMGXKFAAWLlzI+vXrj2pPT09n8uTJAMyfP5+ioqMfKd2hQweuvvpqAObNm8fWrVuPas/MzOTKK68E4Omnn2bHjh1Htefk5DB+/HgAnnzySfbs2QNwJIcePXowduxYAGbPnk1ZWdlR/fv27cvFF18MwMyZMzl06Ohn+gwYMICRI0cC1Lptm/K3t3v3bnJzcxk4cCDFxcU888wzx/Q//NvbunUr8+bNO6Y97N9e9+7dAaL+7dUUL7+9goKCo/5OQN2/vcPi/bcXDQ3/0sSSzLj32iHkdkjlr5s7sLeitgvdREQSi51M5wLy8vK8tv8hNYf3Nu/h6ode5aweHZn5pfOOuTw5US5XTIQ8lEN8SIQcIDHyMLO33D2vIX2059JMBnXrwC+uPpM31+/kvzX2mIgkOBWXZjTpnB58fkRv/vDyep5dviXscEREmoyKSzP7wacHcU6vjvzH395l7fa9YYcjItIkVFyaWWqrJB6cci7pqclM/ctb7C0/dPxOIiItjIpLCHIz2nD/9eeyYUcZ3/7bct1gKSIJR8UlJCNOyeQ74wfyr5Vb+cPL68IOR0QkplRcQnTLRf24fHAO9/zrA97fURl2OCIiMaPiEiIz41fXnE3frLY89G452/eUhx2SiEhMnPTDv8SDT7VLZvrHHbn2f/7FDT1LSGrBN/HXHP6lJVIO8SERcoDEyaOhoiouZtYd6F19fXc/djAhOSFdW1cyusPHzN+Tzas723BR5v6wQxIRaZTjDv9iZr8ErgXeAw6fGHB3/7cmji3mwhz+5Xheeukl/rYlg3krtzL7yyMY2rtT2CGdkEQY6kI5xIdEyAESI48TGf4lmj2Xq4CB7n7gxMKSaJgZv7j6TN7duJuvP/4Oc2+/iIw2KWGHJSJyQqI5ob8O0L9yzaBDWgr3XX8O2/aU890ndf+LiLRc0RSXMmCZmf3ezO47/GrqwE5W5/bqxJ3jBjJ3xVYef3Nj2OGIiJyQaA6LPUWcPZ8+0X15VD8Wf1jMT55eRV6fTgzIbh92SCIiDXLcPRd3nwE8DrwVvB4LljWamY03s9VmttbM7qqlfYqZLQ9ei83s7GpthWa2wsyWmVl8nqU/QUlJxm8mn037tFbc9tjblB/SDZYi0rIct7iY2WhgDfAA8CBQYGajGvvFZpYcfOblwCDgejMbVGO19cDF7n4W8FNgeo32Me4+pKFXMbQEXdun8ZvJQyjYVsrdz7wXdjgiIg0SzTmX3wDj3P1idx8FfAr4bQy+eziw1t3XuftBYBYwsfoK7r7Y3XcFs68DPWLwvS3GxQO68OVR/XjsjY/41wo9/0VEWo5ozrmkuPvqwzPuXmBmsbh6rDtQ/Yx1EXBePevfDPyr2rwDz5uZA79395p7NQCY2VRgKkB2djb5+fmNibnJlJaW1hrbsDTn+Ywk7nzibfYVtSGrTXyP2FNXHi2JcogPiZADJE4eDRVNcVlqZn8C/hLMTyFy7qWxahvkpNZrb81sDJHicmG1xRe4+2Yz6wq8YGYf1DZqQFB0pkPkJsp4vZmpvhutBpxdxhX3vczjhWk8MfV8WiXHb4FJhBvGlEN8SIQcIHHyaKho/pX6d2AV8HXgdiJ36t8ag+8uAnpWm+8BbK65kpmdBfwRmOjuOw4vd/fNwft2YA6Rw2wJqVdmOj+bNJi3Nuzit/MLwg5HROS4jrvnEtyZf2/wiqUlQH8z6wtsAq4DPlt9BTPrBTwJ3ODuBdWWtwWS3H1vMD0OuDvG8cWViUO68+raYh546UMGd8vg8jNzww5JRKROdRYXM5vt7pPNbAW1HK4KruA6Ye5eYWa3Ac8BycDD7r7KzG4N2qcB/wlkAg+aGUBFcGVYNjAnWNaKyOXR8xoTT0tw98TBrNleyh2zl9GzczqDu2eEHZKISK3q23O5PXif0FRf7u5zgbk1lk2rNv0l4Eu19FsHnF1zeaJLS0lm+g15XPXAq9w8YwlP3XYh2R3Swg5LROQYdZ5zcffD175+xd03VH8BX2me8KSmLu1b88cb89hbXsEtjy5l/0HdYCki8SeaE/qX1bLs8lgHItE7PbcD9113Dis2lfCtv75LVZUGuBSR+FJncTGzfw/OtwysNgTLcjNbDyxvvhClNmMHZfPdy0/j2RVb+J8Fa8IOR0TkKPWdc3mMyE2LvwCqj/u11913NmlUEpVbLurHmm2l3LdgDad0acvEId3DDklEBKinuLh7CVACXA8Q3KyYBrQzs3bu/lHzhCh1MTN+NulMNuws4z/+tpxendM5p1fLfIKliCSWaAauvNLM1hAZRHIhUMjRw7BIiFJbJTHtc0PJ6ZDGLY++xabd+8MOSUQkqhP6/wWcDxS4e1/gUuDVJo1KGqRz21T+dGMeBw5V8qUZS9l3oCLskETkJBdNcTkUDLuSZGZJ7v4SMKSJ45IG6p/dnvs/ew6rt+7hG08s0xVkIhKqaAau3G1m7YBFwEwz2w7ov8ZxaPTArvznhEH8+On3uHnGEob17Uy/rLb069KO3pnptG6VHHaIInKSiKa4TATKgTuIjIicQYKP49WS3TiyDzv2HeSJJRt5afXHR5YnGfTolE7frLb069L2SNEZ1qczqa3id5RlEWmZohm4cl+12Zg83liajplx57iB3DluIHvLD7G+eB/ri/fx4cf7WPdxKeuL97GkcCdlwZ39Y0/vyh9vHBZy1CKSaOobuHIvRw9YacG8Ae7uHZo4Nmmk9mkpnNWjI2f16HjUcndn655y/vLaBh7M/5D81dsZPbBrSFGKSCKqb2yx9u7eodqrffX35gxSYsvMyM1ow+1j+9M7M53/evZ9Kiqrwg5LRBJIVAfbzexCM/tCMJ0VPINFWrjWrZL53hWns3Z7KY+9qXtiRSR2ormJ8kfAd4DvBotSgf9ryqCk+YwblM2Ifpnc+0IBJWWHwg5HRBJENHsuk4B/A/bBkccLt2/KoKT5mBk/nDCIkv2HuO9FDYApIrERTXE56O5OcHI/eKywJJBB3Tpw3bCezFhcyLqPS8MOR0QSQDTFZbaZ/R7oaGa3APOBPzRtWNLcvnnZQNJSkvn53PfDDkVEEsBxi4u7/xr4G/B3YCDwn+5+fyy+3MzGm9lqM1trZnfV0m5mdl/QvtzMzo22rzRMl/at+eqYU5n//nZeXvPx8TuIiNSj3uJiZslmNt/dX3D3/3D3b7n7C7H4YjNLBh4g8lTLQcD1ZjaoxmqXA/2D11TgoQb0lQb6wgV96Nm5Df/1jC5NFpHGqfcOfXevNLMyM8sInu8SS8OBte6+DsDMZhEZaua9autMBB4Nzvm8bmYdzSwX6BNF32OsXr2a0aNHxziN2Ni9ezcdO3Y8/opNrLzzADYOmMjw6++gw/Z3G9w/XvJoDOUQHxIhB4guj8jd6gZmePB+1Pzh6aRkqlq1obJVGlWt2tSYTjsy7Umtqn2yg0fufo9M+5E2O3w6PXi3atN45Js/Wb9hohlbrBxYYWYvEFwxFvk+//oJfeMnugMbq80XAedFsU73KPsCYGZTiez1kJKSwu7duxsXdROprKyMi9h895skZ53Frh4XULnudaziQIP6x0sejaEc4kMi5AC151GV2o6KTn2o6NyHik59qGqfDdaIMf4qD2IHy7BD+0k6VAaVpUQKEnCkWB097YcL2OFllhSZTqpR2E4wrmiKy7PBK9aslmU1S2Rd60TTN7LQfTowHSAvL8+XLl3akBibTX5+ftzsVa3cVMKVv3uFa+9+hO9dcXqD+sZTHidKOcSHRMgBInn0H3Ieb6zbwZvrd/Lm+p2sK478Pz09NZnzenfirB4ZpLVKJinJMIMkM5KCd6s2nZKcRKf0FDLSU+iUnkqn9FQ6pqeQltK0I57bgzc3uE+9xSU4t3GZu3/uRIOqRxHQs9p8D2BzlOukRtFXTtDg7hlcM7QHf351PZ8d3os+Wbr6XCQa7s7mknIKtu6lYNte3t+yh5c/KGPHvBcBaJ/WiuF9OnPd8J4M75vJGd06kJKcmKOSR3POpYuZpbr7wRh/9xKgfzCUzCbgOuCzNdZ5CrgtOKdyHlDi7lvM7OMo+kojfGvcQJ5dvoWfz32f6Z/PCzsckbhyePDXgm2lrNkWKSQF20pZu72U0mpPgu3avjV9M5L42mUDGd43k4E57UlOqu3AS+KJ5rBYIfCqmT3F0edc7m3MF7t7hZndBjwHJAMPu/sqM7s1aJ8GzAWuANYCZcAX6uvbmHjkaF07pPGVMafyq+dWs3htMSNPzQo7JJFm4+6U7D9E0a79wavsmOnqRSSrXSr9u7bnM+d2p392ewZkt2dAdjs6pqdGDu9dcPINxxhNcdkcvJKI8bAv7j6XSAGpvmxatWkHvhptX4mtmy/sy2NvfMTdz7zHs1+/6KT5H5ckvr3lh9i2p5wtJeVsDV5b9pSzraScTbv3H1M8ANqmJtOzczo9OrXhvL6dOaVrO/p3jRSRzHatQ8okfkXzsLCfAJhZ+8isa3yQk0RaSjLfveI0bnvsHf5nfgHfvGwAZiowEv/KD1VSuGMfhcX7WF9cRmHxPjbt3s/WPZFCUrNwAHRum0p2hzR6dGrD+f0y6dGpTfCKFJSMNin6/TfAcYuLmQ0G/gJ0DuaLgc/rMNTJ4dNn5vLiudu5/8W1fLz3AD+9anDCnoCUlsXd2bhzPx9s3UPhjk+KSOGOfWwpKT9q3ax2qfTolE7/ru248NQscjPSyMlII6dDGrkZbejaoXWTX3F1sonmsNh04Jvu/hKAmY0mMrbYyCaMS+KEmfGba86me8c23P/iWjaXlPPglHNp1zqan45I7GzbU867G3ezvKiE5ZtKWFG0m13VHhPRMT2FPpltGdEvkz5ZbemT1Za+mW3pnZVOh7SUECM/OUXzL0Tbw4UFwN3zNTLyycXMuHPcQHp0asP35qzkmmmv8eebhpGTkRZ2aJKgSvYfYsXHFaxYsIZ3i0pYsWk32/ZEbuhNTjL6d23HuEE5nNkjg0HdOtAvqy0d01NDjlqqi6a4rDOzHxI5NAbwOWB904Uk8eraYb3IzWjDV2a+zaQHX+Xhm4Zxeq6eeC2Nt2n3fpYW7mRJ4U6WFu5i9ba9wagjBfTrEtkbOatHR87umcGg3AzapOoQVryLprh8EfgJ8GQwv4jgkmA5+Ywa0IXZXx7BFx9ZwjXTXuPBKecyakCXsMOSFqSyyinYtjcoJrtYWriTzcE5krapyZzbuxNXnJlLq90f8blPj9IhrRYqmqvFdgGNHUdMEsigbh2Y89WRfOHPS/jiI0v4+aQzmTys5/E7ykmp/FAl727czdINu1hSuJO3Nuxib3nkaq2u7VszrG9npvbuRF6fzpyW055WwQUj+fmbVFhasGiuFnsBuMbddwfznYBZ7v6ppg5O4lduRhv+eusIvjLzbb799+UU7SrjjssGhB2WxIFd+w6ydMOuI4e5Vmwq4VBlZOi//l3bMeGsXIb16cywPp3p0amNLu9NUNEcFss6XFggsidjZl2bMCZpIdqnpfDwTcP4/pwV3PfiWop27edTmSc2PLe0bB9+XMqfX13P6+t2snZ75Fa4lGTjrB4d+eKFfRnWuzNDe3eiU1uddD9ZRFNcqsysl7t/BGBmvaljBGI5+aQkJ/HLz5xFr87p/Pr5AuanGkVp65lyXi/dN3AS2LBjH/+7YA3/eGcTqa2SGNEvk0nndGdYn86RkX71GzhpRVNcvg+8YmYLg/lRBM9HEYHIpcq3XdKfEadk8oMn3uCnz7zHHxat46uXnMq1eT1JbaWbLhNN0a4yfvfiWv76VhGtkoybL+zLly8+hSwNgyKBaE7ozwueXX9+sOgOdy9u2rCkJRrauzPfGd6G1J6Duff5An74j5VMy/+Qr11yKp8Z2kN39ieArSXl/O6lNTyxZCOGccP5vfnK6FPo2kH3PMnRor3NeiSRPZbDnmmCWCRBjDwlixG3ZrJoTTH3Pr+au55cwUMLP+Trl/TnqnO6awDMFmj73nIeyv+QmW98hLszOa8nt11yKrkZbcIOTeJUNFeL3QMMA2YGi243swvc/btNGpm0aGbGxQO6MKp/Fgve3869LxRw51/f5YH8tXxj7AA+fWauikwLUHqggvtfXMOMxYUcqnQ+c253vnZJf3p2Tg87NIlz0ey5XAEMcfcqADObAbwDqLjIcZkZYwdlc8lpXXn+va3c+0IBX3/8HX7z/Gpuuagf/29oD530jUPuztwVW7n7mVVs33uAq4Z05/ZL++uppBK1aA+LdQR2BtMZTRSLJLCkJGP84FzGDcrhuVVbmbbwQ37wj5X8z/wCbhrZh8+d31tjQ8WJDTv28cN/rmJRwccMyu3AtM8N5ZxencIOS1qYaIrLL4B3zOwlwIice/lek0YlCSspybj8zFzGD87hjfU7+f3CD/n18wU8mP8h1w3rxc0X9aV7Rx3HD8OBikqm5a/jgfy1pCYn8aMrB3HD+b2P3DEv0hDRXC32uJnlEznvYsB33H1rUwcmic3MOL9fJuf3y+SDrXuYvmgdj75WyIzXCvm3s7sxdVQ/DYrZjF5ZU8wP/7mS9cX7mHBWLj+cMIhsXQEmjRDNCf0F7n4p8FQty06ImXUGngD6AIXA5GAMs+rr9AQeBXKAKmC6u/9v0PZj4Bbg42D17wWPPZYW6LScDtw7eQh3jhvIw6+s5/E3P2LOO5u44NRMLjs9m9EDu+pYfxPZvqecnz77Pk+/u5k+mek8+sXhGohUYqLO4mJmaUA6kBWMJ3b40p4OQLdGfu9dwAJ3v8fM7grmv1NjnQrgTnd/O3jE8ltm9oK7vxe0/9bdf93IOCSOdO/Yhh9OGMTXL+nPX14v5G9vFfHjp9+Dp9+jb1ZbLh7QhdEDu3B+v0xdBNBIpQcqePyNj7hvwRoOVFbxjbH9ufXiU/TnKjFT357Ll4FvECkkb1dbvgd4oJHfOxEYHUzPAPKpUVzcfQuwJZjea2bvA92B95CElpGewm2X9Oe2S/pTWLyP/NXbyS/4mMff/IhHFheSlhIZZmT0wK6MHtiF3pmN36vZf7CS9cX7WFdcylsbD1H0+gYqq5yKKqcqeK+sqjoyDzDujBwGd29Z17ds3FnGI4sLmb1kI3sPVDBqQBd+8m9n0Fd7hhJj5l7/MGFm9jV3vz+mX2q22907Vpvf5e51Xo5iZn2IPEdmsLvvCQ6L3USk0C0lsoezq46+UwmGq8nOzh46a9asGGURW6WlpbRr1y7sMBqtKfM4WOl8sLOSFcWVLP+4km1lkd9uRmsjM83onGZ0SjM6pyUF75FXx9ZGqyTD3Sk54GzZ52zZVxW8nK37qtix3xs0YJ4RGWBvaHYyV52aSs/28XXSu/p2cHcKdlXx/IZDvL2tkiSDYTnJjOudQr+O8bunor8T8WPMmDFvuXteQ/pEU1w+X9tyd3/0OP3mEzlfUtP3gRnRFhczawcsBH7m7k8Gy7KBYiJ/v38K5Lr7F+tNBMjLy/OlS5ceb7VQ5OfnM3r06LDDaLTmzGPDjn3kr/6YFZtK2LannC0l5WzZvZ99ByuPWs8Mstq1pvxgJXsPVBxZnp6aTL8ubTmlS7sjr35d2vL+u0u5cORIkpOMVklJJCdqbXp2AAAO0ElEQVQbyWbBvJGUZJTsP8SfX13Pn15ez94DFVxxZg63XzqAgTntmyX348nPz2fkhaN4dsVmHn6lkBWbSuiYnsJnh/fihhG9W8Sd9fo7ET/MrMHFJZpLkYdVm04DLiVymKze4uLuY+tqM7NtZpbr7lvMLBfYXsd6KcDfgZmHC0vw2duqrfMHNBzNSal3ZltuHHns4Zy95YfYWlLO5pJytpbsZ0tJOVtLykltlfRJIenalpwOabU+S2Tb6qTjjpWV0SaFb4wdwBdG9uVPr6zj4VcL+dfKrUw4qxu3X3oqp3YNp8hUVTlFu/bz1IcH+farL7J97wFO6dKWn00azNXn9NDjgaXZRHMp8teqz5tZBvCXRn7vU8CNwD3B+z9rrmCRv/V/At5393trtOUG52QAJgErGxmPJJD2aSm0T0uhf3bT/wOfkZ7CN8cN5AsX9OUPL6/jkcWFPLN8MxPP7sbXL+1Pvy5NczjE3dm+9wCrt+6lYNveI+9rtpdSFuy5jRrQhV9d05eLTs0iSUPtSDOL9g796sqAxj5y8B5gtpndDHwEXANgZt2AP7r7FcAFwA3ACjNbFvQ7fMnxf5vZECKHxQqJXHwgEppObVP59vjTuPnCvkx/eR2PLt7AU+9u5tNndaNX5za0SkoiJdlIDt5bJRmtkpOOvCcnQUWlU1nlHKpyKisjFw9UVDkVh6crnZ1lB1kTFJM95Z8c4stq15qBOe24dlhPBma3x7ev5foJw0P8E5GTXTT3uTzNJw8HSwZOB2Y35kvdfQeRw2s1l28mMpYZ7v4Kn1z+XHO9Gxrz/SJNJbNda757+el86cJ+/H7hhzyxdCNlByuprGr88/WSLLJXNiC7HVee3Y2BOe0ZkB15da7xhMf8/HWN/j6Rxohmz6X6vSQVRP7Bv75pwhFJDF3at+YHEwbxgwmDgMhhrMN7H4eqqqiodCoOv1c6le7BXkzkwoGU4EKClKSkoy4kEGkpojnnsjA4BPVZYDKwnshJdhGJkpmRkmykJEMbdFJdEl99d+gPAK4jspeyg8hwLebuY5optpjbsWMHjzzySNhh1Gr37t0UFhaGHUajJUIeyiE+JEIOkDh5NFR9ey4fAC8DV7r7WgAzu6NZohIRkRatzpsozWwSkT2XkcA8YBaRK7n6Nl94saWbKJteIuShHOJDIuQAiZHHidxEWeeYFe4+x92vBU4jMvbXHUC2mT1kZuMaFamIiCS04w6I5O773H2mu08AegDLiIxiLCIiUqsGjbbn7jvd/ffufklTBSQiIi1ffA3lKiIiCUHFRUREYk7FRUREYk7FRUREYk7FRUREYu5EhtxvsWob/uWMM85g2LBhHDp0iJkzZx7TZ8iQIQwZMoSysjJmzz52MOi8vDwGDx5MSUkJc+bMOaZ9xIgRDBw4kOLiYp555thnmo0aNYp+/fpRWlpa69A0l156KT179mTjxo0sWLDgmPbx48eTk5PDunXrWLRo0THtEyZMICsri9WrV/Paa68d0z5p0iQyMjJYuXIltd1gOnnyZNLT01m2bBnLli07pn3KlCmkpKSwZMkSVq1adcxQFzfddBMAixcvpqCg4Ki+KSkpTJkyBYCFCxeyfv36o9rT09OZPHkyAPPnz6eoqOio9g4dOnD11VcDMG/ePLZu3XpUe2ZmJldeeSUATz/9NDt27DiqPScnh/HjxwPw5JNPsmfPHuCT4Tp69OjB2LGRZ97Nnj2bsrKyo/r37duXiy++GICZM2dy6NCho9oHDBjAyJEjAWrdtk3529u9eze5ublR/fa2bt3KvHnzjmkP+7fXvXt3gKh/ezXFy2+voKDgmOFf6vrtHRbvv71oaM9FRERirs7hXxKRhn9peomQh3KID4mQAyRGHjEd/kVEROREqbiIiEjMhVJczKyzmb1gZmuC9051rFdoZivMbJmZLW1ofxERCUdYey53AQvcvT+wgPoHwhzj7kNqHO9rSH8REWlmYRWXicCMYHoGcFUz9xcRkSYUytViZrbb3TtWm9/l7scc2jKz9cAuwIHfu/v0hvQP2qYCUwGys7OHzpo1K7bJxEhpaSnt2rULO4xGS4Q8lEN8SIQcIDHyGDNmTIOvFmuymyjNbD6QU0vT9xvwMRe4+2Yz6wq8YGYfuPuxd2vVIyhI0yFyKXK8XhKYCJcrQmLkoRziQyLkAImTR0M1WXFx97F1tZnZNjPLdfctZpYLbK/jMzYH79vNbA4wHFgERNVfRETCEdY5l6eAG4PpG4F/1lzBzNqaWfvD08A4YGW0/UVEJDxhFZd7gMvMbA1wWTCPmXUzs7nBOtnAK2b2LvAm8Ky7z6uvv4iIxIdQBq509x3ApbUs3wxcEUyvA85uSH8REYkPukNfRERiTsVFRERiTsVFRERiTsVFRERiTsVFRERiTsVFRERiTsVFRERiTsVFRERiTsVFRERiTsVFRERiTsVFRERiTsVFRERiTsVFRERiTsVFRERiTsVFRERiTsVFRERiTsVFRERiTsVFRERiLpTiYmadzewFM1sTvHeqZZ2BZras2muPmX0jaPuxmW2q1nZF82chIiJ1CWvP5S5ggbv3BxYE80dx99XuPsTdhwBDgTJgTrVVfnu43d3nNkvUIiISlbCKy0RgRjA9A7jqOOtfCnzo7huaNCoREYmJsIpLtrtvAQjeux5n/euAx2ssu83MlpvZw7UdVhMRkfCYuzfNB5vNB3Jqafo+MMPdO1Zbd5e711ogzCwV2Ayc4e7bgmXZQDHgwE+BXHf/Yh39pwJTAbKzs4fOmjXrxJNqQqWlpbRr1y7sMBotEfJQDvEhEXKAxMhjzJgxb7l7XoM6uXuzv4DVRAoCQC6wup51JwLP19PeB1gZzfcOHTrU49VLL70UdggxkQh5KIf4kAg5uCdGHsBSb+C/82EdFnsKuDGYvhH4Zz3rXk+NQ2JmllttdhKwMqbRiYhIo4RVXO4BLjOzNcBlwTxm1s3Mjlz5ZWbpQfuTNfr/t5mtMLPlwBjgjuYJW0REotEqjC919x1ErgCruXwzcEW1+TIgs5b1bmjSAEVEpFF0h76IiMSciouIiMSciouIiMSciouIiMSciouIiMSciouIiMSciouIiMSciouIiMSciouIiMSciouIiMSciouIiMSciouIiMSciouIiMSciouIiMSciouIiMSciouIiMSciouIiMSciouIiMSciouIiMRcKMXFzK4xs1VmVmVmefWsN97MVpvZWjO7q9ryzmb2gpmtCd47NU/kIiISjbD2XFYCVwOL6lrBzJKBB4DLgUHA9WY2KGi+C1jg7v2BBcG8iIjEiVCKi7u/7+6rj7PacGCtu69z94PALGBi0DYRmBFMzwCuappIRUTkRLQKO4B6dAc2VpsvAs4LprPdfQuAu28xs651fYiZTQWmBrOlZna8ohaWLKA47CBiIBHyUA7xIRFygMTIY2BDOzRZcTGz+UBOLU3fd/d/RvMRtSzzhsbh7tOB6Q3t19zMbKm713n+qaVIhDyUQ3xIhBwgMfIws6UN7dNkxcXdxzbyI4qAntXmewCbg+ltZpYb7LXkAtsb+V0iIhJD8Xwp8hKgv5n1NbNU4DrgqaDtKeDGYPpGIJo9IRERaSZhXYo8ycyKgBHAs2b2XLC8m5nNBXD3CuA24DngfWC2u68KPuIe4DIzWwNcFsy3dHF/6C5KiZCHcogPiZADJEYeDc7B3Bt8GkNERKRe8XxYTEREWigVFxERiTkVlzhgZoVmtsLMlp3IJX9hMLOHzWy7ma2stqzFDctTRx4/NrNNwfZYZmZXhBljfcysp5m9ZGbvB0Mq3R4sb1Hbop48WtK2SDOzN83s3SCHnwTLW8y2qCeHBm8HnXOJA2ZWCOS5e4u50crMRgGlwKPuPjhY9t/ATne/JxgLrpO7fyfMOI+njjx+DJS6+6/DjC0awaX4ue7+tpm1B94iMmLFTbSgbVFPHpNpOdvCgLbuXmpmKcArwO1EhrpqEduinhzG08DtoD0XOSHuvgjYWWNxixuWp448Wgx33+LubwfTe4lcWdmdFrYt6smjxfCI0mA2JXg5LWhb1JNDg6m4xAcHnjezt4Lhalqqo4blAeoclqcFuM3MlgeHzeL2MEZ1ZtYHOAd4gxa8LWrkAS1oW5hZspktI3Jj9wvu3uK2RR05QAO3g4pLfLjA3c8lMgL0V4NDNRKeh4BTgCHAFuA34YZzfGbWDvg78A133xN2PCeqljxa1LZw90p3H0JkRJHhZjY47Jgaqo4cGrwdVFzigLtvDt63A3OIjAjdEm0Ljp0fPobeIoflcfdtwV+wKuAPxPn2CI6N/x2Y6e5PBotb3LaoLY+Wti0Oc/fdQD6RcxUtblvA0TmcyHZQcQmZmbUNTmBiZm2BcUSed9MSJcSwPIf/IQhMIo63R3AC9k/A++5+b7WmFrUt6sqjhW2LLmbWMZhuA4wFPqAFbYu6cjiR7aCrxUJmZv2I7K1AZCDRx9z9ZyGGFBUzexwYTWQ48W3Aj4B/ALOBXsBHwDXuHtcny+vIYzSR3X8HCoEvHz5mHm/M7ELgZWAFUBUs/h6R8xUtZlvUk8f1tJxtcRaRE/bJRP7jPtvd7zazTFrItqgnh7/QwO2g4iIiIjGnw2IiIhJzKi4iIhJzKi4iIhJzKi4iIhJzKi4iIhJzKi4izcDMSo+/lkjiUHEREZGYU3ERCYmZXWlmb5jZO2Y238yyg+Vdgud+vG1mvzezDWaWFXa8Ig2h4iISnleA8939HGAW8O1g+Y+AF4PBTOcQubNbpEVpFXYAIiexHsATwbhNqcD6YPmFRMZvwt3nmdmukOITOWHacxEJz/3A79z9TODLQFqw3MILSSQ2VFxEwpMBbAqmb6y2/BUij/fFzMYBcf2ALJHaaOBKkWZgZlXA5mqL7gU+BH5LpMC8Dgxz99Fm1hV4nEhRWQhcC/R19wPNG7XIiVNxEYkzZtYaqHT3CjMbATwUPBlQpMXQCX2R+NMLmG1mScBB4JaQ4xFpMO25iIhIzOmEvoiIxJyKi4iIxJyKi4iIxJyKi4iIxJyKi4iIxNz/B8EJ04MgJn+EAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# autocorrelation plot of time series\n", "from pandas import read_csv\n", "from matplotlib import pyplot\n", "from pandas.plotting import autocorrelation_plot\n", "series = read_csv('https://s3.amazonaws.com/myiotstation/pm2p5c.csv', header=0, index_col=0, parse_dates=True, squeeze=True)\n", "autocorrelation_plot(series)\n", "pyplot.show()" ] }, { "cell_type": "code", "execution_count": 58, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{sensor:30.000000,prediction:36.868843}\n", "{sensor:63.000000,prediction:38.295336}\n", "{sensor:47.000000,prediction:41.722092}\n", "{sensor:46.000000,prediction:48.042836}\n", "{sensor:50.000000,prediction:48.080494}\n", "{sensor:41.000000,prediction:47.277171}\n", "{sensor:22.000000,prediction:56.122334}\n", "{sensor:8.000000,prediction:47.248394}\n", "{sensor:10.000000,prediction:37.402841}\n", "{sensor:14.000000,prediction:31.303013}\n", "{sensor:4.000000,prediction:25.419424}\n", "{sensor:5.000000,prediction:16.639138}\n", "{sensor:3.000000,prediction:9.284652}\n", "{sensor:3.000000,prediction:7.737093}\n", "{sensor:3.000000,prediction:7.935095}\n", "{sensor:7.000000,prediction:4.457086}\n", "{sensor:9.000000,prediction:4.794741}\n", "{sensor:13.000000,prediction:5.555003}\n", "{sensor:15.000000,prediction:7.387235}\n", "{sensor:18.000000,prediction:9.509336}\n", "{sensor:15.000000,prediction:12.833780}\n", "{sensor:8.000000,prediction:14.696294}\n", "{sensor:6.000000,prediction:14.851742}\n", "{sensor:9.000000,prediction:13.348264}\n", "{sensor:17.000000,prediction:13.008920}\n", "{sensor:18.000000,prediction:13.352161}\n", "{TestRMSE:14.626}\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# create and evaluate an updated autoregressive model\n", "from pandas import read_csv\n", "from matplotlib import pyplot\n", "from statsmodels.tsa.ar_model import AR\n", "from sklearn.metrics import mean_squared_error\n", "from math import sqrt\n", "\n", "# load dataset\n", "series = read_csv('https://s3.amazonaws.com/myiotstation/pm2p5c.csv', header=0, index_col=0, parse_dates=True, squeeze=True)\n", "\n", "# split dataset\n", "X = series.values\n", "testLength = 26;\n", "train, test = X[1:len(X)-testLength], X[len(X)-testLength:]\n", "\n", "# train autoregression\n", "model = AR(train)\n", "model_fit = model.fit()\n", "window = model_fit.k_ar\n", "coef = model_fit.params\n", "\n", "# walk forward over time steps in test\n", "history = train[len(train)-window:]\n", "history = [history[i] for i in range(len(history))]\n", "predictions = list()\n", "for t in range(len(test)):\n", " length = len(history)\n", " lag = [history[i] for i in range(length-window,length)]\n", " yhat = coef[0]\n", " for d in range(window):\n", " yhat += coef[d+1] * lag[window-d-1]\n", " obs = test[t]\n", " predictions.append(yhat)\n", " history.append(obs)\n", " print('{sensor:%f,prediction:%f}' % (obs, yhat))\n", "rmse = sqrt(mean_squared_error(test, predictions))\n", "\n", "print('{TestRMSE:%.3f}' % rmse)\n", "# plot\n", "pyplot.plot(test)\n", "pyplot.plot(predictions, color='red')\n", "pyplot.show()" ] }, { "cell_type": "code", "execution_count": 55, "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Test RMSE: 9.911\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAD8CAYAAABn919SAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJztnXd81PX9x5+fTJKQkEnCyiLsPUQQBQURRCtorWjr/GnV1rrqqFZrW60Vrau2VosT68SJ1QoiKkMUBARk7xmyLmTv3Of3x+cu8+6bS8i4S97Px8PHN3f55O59F3ndO++ptNYIgiAIvo9fRxsgCIIgtA4i6IIgCJ0EEXRBEIROggi6IAhCJ0EEXRAEoZMggi4IgtBJEEEXBEHoJIigC4IgdBJE0AVBEDoJAe35ZLGxsTo5Obk9n1IQBMHn2bBhQ47WOq6pc+0q6MnJyaxfv749n1IQBMHnUUod8uSchFwEQRA6CSLogiAInQQRdEEQhE6CCLogCEInQQRdEAShkyCCLgiC0EkQQRcEQegkiKB3MQ7ZivlqV5b1oaIiePVVkPWEguBTiKB3MRas3M+N/9lAVbXd/aEPPoBrroGNG9vPMEEQThoR9C5GdmE55VV2DtpK3B/KyDDXLVvaxyhBEFoFEfQuhq24AoBdGYXuD2U5QjI//tgOFgmC0FqIoHcxbEXlAOzKKHB/SARdEHwSEfQuRo2HnmnhoWdnm+vWre1gkSAIrYUIeheivKqawrIqwMOQS0YG5OS0g2WCILQGHgm6UipSKfWeUmqnUmqHUmqSUipaKbVMKbXHcY1qa2OFkyPX4Z0nRHTjUG4JJRVVrg9mZUGfPuZrCbsIgs/gqYf+d2CJ1nowMArYAdwDLNdaDwCWO24LXoytyAj6aWkxaA17MosaH9LaCPr06ea2CLog+AxNCrpSKgKYArwEoLWu0FrnAXOAhY5jC4G5bWWk0Do44+en9Y8F3IRdCguhogJGjICYGBF0QfAhPPHQU4Fs4BWl1A9KqReVUmFAvNb6OIDj2rMN7RRaAWeFy5jESLoF+rlOjDrj5/HxRtQlMSoIPoMngh4AjAWe01qPAYppRnhFKXW9Umq9Ump9trN6QugQnCGXnuHBDIwPd+2hOwW9Z89aQbdbdJUKguA1eCLoR4GjWuu1jtvvYQQ+UynVC8BxdTkgRGu9QGs9Xms9Pi6uyR2nQhtiK64gyN+P7sEBDIwPZ6crQXd+6MbFwfDhZq7LIY/WGQqC0ME0Keha6wzgiFJqkOOu6cB24GPgKsd9VwGL28RCodWwFZUT0z0IpRSDE8LJKSqvCcPU0NBDB4mjC4KP4GmVy83AG0qpLcBo4K/AfGCGUmoPMMNxW/BibMUVxHQPAmBQQjjgIjHqFHSnhw4i6ILgIwR4ckhrvQkY7+Jb01vXHKEtsRWVEx0WDNQR9MxCTkuLrT2UlQURERAcbP5LTpbEqCD4CNIp2oWwFVcQG2Y89LjuwUSFBjb20LOzTbjFyfDh4qELgo8ggt6FsBXVhlyUUgxKcJEYzcqqL+gjRsCuXaY2XRAEr0YEvYtQUlFFaWU1Md2Da+4bnBDB7sxC7PY6m4lcCXpVFezc2Y7WCoLQEkTQuwjOGvRoR8gFTBy9pKKaY3mltQezs01C1Imz0kXi6ILg9YigdxGcbf+x3esLOlAbdrHbG8fQBw6EwECJowuCDyCC3kVw1pvHhNWGXAbGO0sXHcsuTpyA6ur6gh4UBIMGiaALgg8ggt5FcBVy6R4cQN+okFoPvW4Nel1GjBBBFwQfQAS9i+AMucTUCbkADE6oM9PF2fbfs8GctREj4PBhyM9vazMFQTgJRNC7CLaickKD/AkNqt9LNighnAM5xZRXVddv+6+LMzG6bVs7WCoIQksRQe8i1G37r8ughAiq7Jr92cVNC7qEXQTBqxFB7yLYiitq2v7rMii+zkwXZ8glJqb+ocRECA8XQRcEL0cEvYtgKyqvafuvS2pcGIH+yiRGs7KMmAc0GPGjlIwAEAQfQAS9i1C37b8ugf5+9I/rbkoXG3aJ1sVZ6aK16+8LgtDhiKB3AbTW2IrLXYZcwCRGd2cWGUF3t4RkxAhTp378eBtaKgjCySCC3gUoLK+islrX6xKty6CEcI7llVLdlIcOEnYRBC9GBL0L4GwqchVygdrEqD3TQtBl2YUgeD0i6F0AV23/dRmUEI6/vZrAE7nuBT0mBnr1EkEXBC9GBL0L4OwSjXZR5QLQJzKEftUl5obVIm8ZASAIXo0IehfAGXKJ7e7aQ1dKMSak0txw56GDEfTt280AL0EQvA4R9C6AM+TizkMHGB5YBoBuykMvL4e9e1vVPkEQWgcR9C6ArbiCiG4BBAW4/3UPwCy5yAmNdP9AkhgVBK9GBL0LYOa4uA63OEmsLgZgV7XFuaFDwc9PBF0QvBQR9C6AraicGItwC0BCeQFVyo9tpf7uD4WEQFqaCLogeCki6F0Ad23/del2wkZeWCS7soutH2zECNkvKgheikeCrpQ6qJT6USm1SSm13nFftFJqmVJqj+Ma1bamCi3F3aTFemRnUxIZXbvswh0jRpikaElJ6xkoCEKr0BwP/Syt9Wit9XjH7XuA5VrrAcByx23By7DbNbnF5W7b/mvIyqI6JpY9WUVUVdvdnxs+3Azo2r69dQ0VBOGkOZmQyxxgoePrhcDckzdHaG3ySiuxa5qMoZOVhX9CPBVVdg7aLLxvmekiCF6Lp4Kugc+VUhuUUtc77ovXWh8HcFwtOlKEjqKm7b+JKheysgjt2wvAOuzSv79Jjnog6Fprnv1qL9/szbE+uGgRLFjQ5OMJgmBNQNNHAJistU5XSvUElimldnr6BI4PgOsBEhMTW2CicDLULIe28tDLy6GggB6JvfErhV2ZhZxHL9dn/f1N+aIHidH3Nx7jb0t3cUpyFJPTYl0f2rIFrrgCAgPNNSSkyccVBME1HnnoWut0xzUL+BCYAGQqpXoBOK5Zbn52gdZ6vNZ6fJxVF6LQJtROWrTw0B2r5wJ7JZAcG2aWXVjhwUyXI7kl/OnjbQT5+7H+0AlyHH8p1KOsDC6/3HxdXAzLl1s/ryAIljQp6EqpMKVUuPNr4BxgK/AxcJXj2FXA4rYyUmg5tmJnyMXCQ6+zHHpQfHjTlS7Dh0NGBuS4DqVU2zW3v7MJBfzz52PQGpbvyGx88L77zAfDokUQEQEffeTBKxIEwR2eeOjxwGql1GZgHfCp1noJMB+YoZTaA8xw3Ba8DFtRBUpBVKiFoDuXQ8fFMSghnEO5JZRUVLk/30Ri9PkV+1h/6AQPzh3GjKHx9IkMYdn2BoL+5Zfw5JPwq1/BnDkwezb8978y+EsQToImBV1rvV9rPcrx3zCt9cOO+21a6+la6wGOa27bmys0F1txOVGhQfj7KfeH6njogxPC0Rr2ZhW5P+8UdBdx9K3H8nlq2W7OG9mLuaP7oJRixtB4Vu3Jqf2QOHECrroKBg6Exx83982da+z47rsWvEpBEEA6RTs9tqIKj0oWARNySYgAYKdV2CUhwSy8aOChl1VWc9s7m4jtHszDc4ejlPkQOWdYPOVVdlbudoRobrrJhGxefx1CQ819555rEqOLJXInCC1FBL2T40nbP1lZEBwM4eEkRofSLdDPOo6ulImjNxD0+Z/tZG9WEY//bBSRdUI8E5Kj6RESyOfbM+DNN+Gtt+CPf4RTTqn94YgImDYNPvzQNC4JgtBsRNA7Obbicrer52rIzjabipTC308xoKcHiVHnTBe76SpdsTubV9cc5JrJyZw+oH6JYoC/H9MH92T7d1vRv/41TJoE97hoLJ4714wV2LGjOS9REAQHIuidHDM61wMPvc6mokEJ4dYhFzCCXlQEhw5xoriCu97dzICe3fndrMEuj58zJI4H3v8b9qoq+M9/IMBFC8QFF5irhF0EoUWIoHdiKqvt5JVUNu2hNxD0wQnh5BSV8+8V+8gsKHP9M47EqH7oIf75zIecKKng6UtH0y3Q9fjdsz57k9MOb+HTa+423aau6N0bJkyQ8kVBaCEi6J2YEyWO5dBNeejOkIuDn4zqzeh+kTzy2U4mPrKcX7z4He+uP0JhWWXtz4wfD5dein7tNf7w+0v59p07GfbGAjh6tPHjb9lC8AP3s3HsVB7tPRltFSOfOxfWrYP09Oa8VEEQEEHv1NQsh/akyqWOhx4f0Y2PbprMl3dM5eZpAzh6opS73tvC+L98wU1vbGTZ9kwqlD9Hnn2JM297g5fn3U5MbATcfTckJprk5ksvQV5ebTdoVBSHH3mKY/ll7DhuEc6ZM8dcP/74ZF++IHQ5PJ3lIvggHrX9Fxeb2eY9G89WS43rzm9nDOT2swfww5E8Fv9wjP9uOc6nPx4nMjSQiG6BnAiL5Jzn/oKKCoU9e0wVyxtvwHXXmfLEgQNNNcynnzJ50lDUV+l8vj2Dob0jXNszZAgMGGDCLjfe2BpvgyB0GcRD78Q0t+3fHUopxiZG8ec5w1n7++m8cvUpTB0YR35pJQ9fNIK+UY5a8gEDTDnirl2wdi3ccAPYbPDb38Ls2cSFBzMuMYrPt7kYA1D7ZMZL//JLyM9v7ksWhC6NeOidmBoP3SrkUqft3xMC/f04a3BPzhpsMS1ZKZPcnDAB/v73et86Z1g8f/3fTo6eKKn9IGjI3Lmmg3TJEpg3zyO7BEEQD71TYysuJ8BPEdEt0P0hDzz01mTG0ASAxrNd6jJxorFHql0EoVmIoHdibEUVRIcF4efhHJf2ICU2jAE9u1sLur8//OQn8L//QUVFu9glCJ0BEfROjFkO7UHJIngccmkNZgyNZ+2BXPJKLMR67lwoKICvv243uwTB1xFB78TYisqJ9WD1HGFhtUOy2oFzhiVQbdd8udPlThTD9OnGJgm7CILHiKB3YlrS9t8ejOzTg/iIYOuwS0gIzJpl6tEd82IEQbBGBL0TY0bnNq/tvz3w81OcPSSeFbuzKau0WGgxdy4cOwYbNrSfcYLgw4igd1LKKqspKq9q2kNv0PbfXpwzLIGSimq+2et6jR0A551nEqQSdhEEjxBB76TkFntQgw4d4qEDTEqNITw4wDrsEh0NU6bI9EVB8BAR9E6KR23/WneYoAcF+DF1UBxf7Mik2t7EsK5t28xYAUEQLBFB76Q42/4tyxYLCqCyskNCLmDCLjlFFfxw+IT7Q85hXeKlC0KTiKB3UmomLZ7kHJe25MxBcQT6K+uwS1ISjB4tgi4IHiCC3kmpHcxlEXLpYEGP6BbIxNQYPt+eaT0jfc4c+OabWnsFQXCJCHonxVZUQXCAH2FBrjcIAR0u6GDCLgdyitmXXeT+0Ny5Jt7/ySftZ5gg+CAi6J0UW3EFMWFBKGUxx6UD2v4bMmNIPABLrUbqjhplQi9SvigIlngs6Eopf6XUD0qpTxy3o5VSy5RSexzXqLYzs2m+P5jLxL8u50SxxXwQmw369oXVq9vPsA7CVlRuHW6BWg+9AwU9oUc3RvXtYT0GwDkj/fPPoby8/YwTBB+jOR76rcCOOrfvAZZrrQcAyx23O4x1B3LJKChjR0aB+0NbtpjOw5Ur28+wDsLjtv/ISAhq4lwbM6pfJLszCq3j6BMmGDHft6/9DBMEH8MjQVdK9QXOA16sc/ccYKHj64XA3NY1rXkczCkG4JCtxP2hvXvrXzsxHrX9Z2d3aPzcSUpsGIXlVeQUWfx1NXCgue7e3T5GCYIP4qmH/jRwN1B3SlK81vo4gOPaocrgFPKDtmL3h7qIoGutsRWXe+ahd2C4xUlKbBgAB3IsfncDBpirCLoguKVJQVdKnQ9kaa1bNCFJKXW9Umq9Ump9tjMJ1wY4hfxQjnjoJRXVlFXavbbtvyGpsd2B2r+yXBIZaWyVjlFBcIsnHvpk4AKl1EHgbWCaUup1IFMp1QvAcXWZ1dJaL9Baj9daj49rI2+wpKKKrEKTLDuUayHozvjr8eNm230nxaO2f/AaQe8d2Y1Af8V+K0EH46WLhy4IbmlS0LXW92qt+2qtk4FLgS+11pcDHwNXOY5dBXRYK99hh4jHRwRzyFbsOrmmtfHMe/c2t/fvb0cL25eapiIrD91uh5wcrwi5BPj7kRgdyoEci1p0MHF0EXRBcMvJ1KHPB2YopfYAMxy3O4SDjjDLlAFxlFRUk13korQtM9N45TNnmtudOOxS66FbCHpurhF1L/DQAVJiu9f8Ht0ycCBkZEBhYfsYJQg+RrMEXWv9tdb6fMfXNq31dK31AMc1t21MbJpDjvj5GQPjHLddCINTwM85p/7tTogvtP03JCU2lAO2YuxWkxediVGJowuCSzpFp+hBWwnRYUGM7NPD3HYVi3UK+PjxEBvrVYJeWmGxtcdJSRPeax1snsxCdyaovUbQu1NRZSc9v9T9ISldFARLOoWgH7IVkxQTSp+oEPz9lHsP3d/ftJCnpXmNoK/Zl8OoBz/n483p7g9lZUG/fnDHHR49pq2ogrAgf7oFejDHxQti6OBh6WJamrmKoAuCSzqJoJeQHBNGoL8ffaNCXFe67NsHyckQGGiEwUs6Dv/55V4qquzc9+GPpOe58U6fecbEvJ980rS/N0Gz2v69xENPjTOCblm6GBICiYkSchEEN/i8oJdXVZOeX0pSTCgASTFhNTH1euzdW+vhpaXB4cMdPhdk85E81uyzceWkJOx2zR2LNjeOIRcWwrPPwvnnw9ChcPXVZiaNBR63/SsFMTEn9yJaiZ7hwYQG+UvpoiCcBD4v6EdyS9GaWkGPDuVAToPSRa2NV9e/v7ndv7+578CBFj/vv1fs408fb7M+tGQJzJ4Npa497+dX7COiWwB3zxrMAz8Zyrf7bbz8TQObFiyAvDx44AF44w1TanjDDcZ+N5i2fw+WQ8fEmDCUF6CUIjkmzDrkArWli1ZzXwShi+Lzgu70xpNiwhzXUArLqsgrqaw9lJsL+fn1PXRocRw9p6icJ5ft5tU1B1mzz83Weq3h7rvhs8/gqacafXtfdhFLtmVw5aRkugcHcMn4fpwzNJ7Hluxix3HHgLHychNmmTYNTjnFbO556CF4/3147TW39tmKy5ue4+IlTUV1SYkLsw65gBH0vLwm/0oRhK6Izwv6QUcCNNkh6M5rvZkuTuFuJUFfuOYgFdV2YrsH85dPdrhecvzZZ/Djj9CrFzzyiKmDr8MLK/cT5O/H1ZOTAeOhPnLRCCJCArn9nU2UVVYbjzw9HX73u9ofvPNOOOMMuPlml39haK3J9TTk4m2CHhPGkROlVFTZ3R+SmS6C4BafF/RDtmLCuwUQFRoIQHJsqOP+OonRhoIeEwM9erRI0IvKq1i45iAzhybwh/OHsP14AR9sPNr44Pz5JoH3xRdQVmZCJg4yC8r4YOMxfja+L7F1kpcx3YN57OIR7Mwo5IklO+Cxx2DMGJgxo/Zx/f1rvfMrr4Tq+iWPBWVVVFbrppOiXjJpsS4psWFU2zVHTliUaErpoiC4pRMIuqlwcW7m6RsVilINBH3fPpMATEkxt5VqcaXL2+sOU1BWxY1n9ueCUb0Z1S+Sxz/fRUlFVe2hNWtg1SpTZjh0KPz61/Dii7B1KwAvrz5Ald3O9Wf0b/T40wbHc/nERA6/8hbs2mW884Zbh5KTTaJ09Wr429/qfctW5EHbP3jNpMW6pHhS6ZKcDAEBUukiCC7oBIJeTKIjIQrQLdCf3j1C6le67N1r6ri7dau9rwW16BVVdl5cdYBJqTGM7heJUoo/nDeEzIJyXlhZJ/zx6KPmr4BrrzW3H3gAIiLgrrvIL63kjbWHOW9k73p21+W+c4dw2/oPOBbdi/zZF7g25vLL4Wc/M4/9ww81d9c0FVmFXCorTV7Byzz0VE9q0QMDITVVPHRBcIFPC3pltZ2jJ0pJbiCMidGhjWPo/Rt4w/37w8GDRtw85KNNx8goKOPGM2sfa3xyNLNHJPD8in1kFpTB9u3w8cfwm99AmBEoYmLgD3+AJUtY8Y/XKSqv4sapqW6fJ+Tb1Qw5spPnT7mIBz7d6fqQUvD888bL/sUvaippaj10i5BLjiOR62WCHhkaRGRooJQuCkIL8WlBT88rpcquaypcnCTHhjaOoTvj507S0qCqytSje4Ddrnl+xT6G9opgyoDYet/73azBVNntPPH5LhP3Dg01gl6Xm27CnprK0CceZGpaNMN693D/ZPPnQ8+eJNxyA4s3pbN40zHX56Kj4dVXYccOuMdsAPTIQ/eC5dDuSIkN40C2B5Uue/aY4WKCINTg04LesMLFSVJMGLbiCgrKKk25Yna2a0EHj8Muy3Zksj+7mBvP7F8Tr6/7fFdNSmb1Vz+g33gDrrvOzIupS3Awq6+9k7SsgzyQ+Z37J9q0CZYuhdtu44aZwxibGMn9H21130U6YwbceqvpJv3885pJi1GhFoLuZV2idUmJDbPeOgVG0EtLTQWQIAg1+LSgO+PkDUMuztuHbSW1ic+TEHStNc99vY/E6FBmD09weebmaQP49caPqdYaffvtjb5fVW3nfv9BbE8dQeoz892PgH3sMQgPh1/9igB/P56aN9p9F6mTRx6p6SItSc+kR0ggQQEWv1ovFvTU2DCO55fVTzI3RCpdBMElPi3oB3NKCAn0Jy68frw4qW4tujtBT0gwoREPBH3tgVw2Hcnjl1NSCfB3/Zb1KCtk3ualLB48ha/KQhp9/7OtGRw+UUr+X+ajsrJM4rQh+/fDO++YTtDIyJrX4raL1ElISE0X6Tn//BMxYYHWL8jLJi3WJTnWWeliUbooteiC4BKfFvTDuWbKYuMQSJ1adKdgN0yKNqN08bmv9xHbPYifjevr/tCzzxJYWsIns67g4U93UFldG9/V2sTfU+PCOHXeuXDZZfDEE3DkSP3HeOIJU5LXwMOv20W6M6PA9fM7ukjHrlvOhVu/tH5BWVnmeRwfGt6Ec+qiZdilTx/zISali4JQD58W9IO2khrxrktoUABx4WYdHXv3Gm88LKzxA/Tv36SHvj29gBW7s7lmcor7cbQlJSaGff75XHbNuezLLubtdbXJ1lV7ctiWXsANU1Lx81MmRKI1/P73tY+RlQUvvwxXXFG7Js9B3S7S2952dJG64s47+TF1JNe985Sp4HGHswa9YX27F+DMh1iWLvr5SaWLILjAZwW92q457GgqckVyTKhJmrqqcHHi9NCr3S+YeH7FProHB3D5xCT3xrz8sikFvOceZgyN59SUaJ76Yo9JyjoeIz4imLlj+pjzSUnGC3/9dVi/3tz3zDNmdstdd7l8inpdpJ/vcm2Hvz/3zrnT6PQVV7h/XV7Y9u8kLDiA+Ihg9jdV6SKCLgiN8FlBzygoo6La3qhk0UnNGN2mBL2iAo65Lgs8bCvhky3p/PzURHqEuIlLV1bC44/D5MkweTJKKe4/byi5xRX866t9NSNyrz09heCAOh7+vfcaL/mOO6CgwHR+XnghDBrk9jU7u0hfXH3A5VCwartme3A0X/3mAZddpDVkZ3tlyaKTlNgwzxZG799vSk8FQQB8WNAP5biucHGSHBNKvi3flLZZCTq4Dbu8sGo/AX5+XHt6intDFi2CQ4dq6sABRvTtwUVj+/Dy6gM8/OkOIroFcNmExPo/FxEBDz4IK1fCxRebCYJ1h3C54b7ZQ0mJCePORZvJL63fFJVXUoFdQ9acn7nsIq3Biz10cCyMdrV1qi4DBxoxtwotCUIXw2cF3fkPPinWvYeemJdhbrRA0HOKylm0/ggXjulDfES3Rt8HTBz80Udh2DAz97wOd80chJ8frDuYyxWTkgjv5sLDv+46U264bBmcdRZMmOD6eeoQEuTPU/NGk1VYzgOLt9b7Xk1TUXiwyy7SGrxc0FNjw8gtriCvpML9ISldFIRG+KygH8otJsjfjwQ3YpscE0byiePmhjtB79sXgoNdVrq8+o0ZkXu9RYt+zYjc3/3OJOrq0KtHCL8+M43w4ACuPs2Nhx8QYOad+/vD/fe7f54GjOoXyS3TBzTqInU2FcWEBdfvIq3r+ZeVmRp4Lxb0ZE9mukjpoiA0wncFPaeEftFmKbQrEmNCSXIKesOSRSd+fmYCYwMPvai8ite+NSNy+8d1d2+Ec0TupZe6/PbN09L47vfTG9XJ12PmTDhxwiyxaAa/PrM/Yxp0kdqKHXNcnG3/M2bALbfAP/5Ru4vUi9v+nXhUuhgba8oupXRREGrwWUE/aCt2W+EC0CMkkEFFGRSHR1rXW7uYuvjW2toRuW5xjsj97W/NBEAXKKUICw6wfB2A6QxtJgH+fjw9bzTVdbpIaz30Om3/8+fX30XqxV2iThKjQ/FTWM90Uap2HZ0gCIAHgq6U6qaUWqeU2qyU2qaU+rPj/mil1DKl1B7HNartzTVorTlkK3Fb4eJkQGEmx2P7WD+YU9AdOyq11ry65iATU6MZ3c/ig+CZZ0xY47rrmmt+q5EUE8YD59d2kdqKyvFTZmphDSEhpjzSuYvUBwQ9KMCPftGhTU9dFEEXhHp44qGXA9O01qOA0cAspdRE4B5gudZ6ALDccbtdyC4sp7SyumY7kTv62dLZ18P17JUa0tJMY1CGSaDuyizkWF4pF42x6AqtqjILoC+6yHXDUjsy75R+zHB0kX63P5eo0KDGYagxY2p3kTr3m3pxyAXwbGH0gAFmWqabJdyC0NVoUtC1wVkUHOj4TwNzgIWO+xcCc9vEQhc4K1wSoy0EvbycyNxMdoT1pLzKfeNQw0qXlbtNjHnKQAvBW7vWTHGcNatZdrcFSinmO7pI1x3MdT8217mLdNkyc9uLPXRwTF3MKUZrNwPJoLbSpQWbpwShM+JRDF0p5a+U2gRkAcu01muBeK31cQDHtd0UonbKooV3fPAgfnY7B6N6c/SEhQfnFHSHKKzYnc3ghHASergpVQTjnfv7w/TpzTW9TXB2kYLFYgvnLtLwcLO5qbtFstcLSI0Lo7iimuzCcveHpHRREOrhQcYOtNbVwGilVCTwoVJquKdPoJS6HrgeIDExsYnTnnHIVoK/n6JPVOOphjU4PO7DkQkcshW7r1ZJTDRit3cvJRVVfH/gBFdPTrY2YMkSmDjRq4ZbTRscz/3nDbH+IEpOhrffNuMGvHCCqth7AAAgAElEQVSOS12cH9b7c4rp6a4PQEoXBaEezapy0VrnAV8Ds4BMpVQvAMc1y83PLNBaj9daj49rpbjtQVsxfaNCCHQzyhaoEfSDUb2tR7EGBhqh27uX7/bbqKi2M9Uq3JKdDRs2eEW4pSHXnZHK+SN7Wx+aPdt0kHo5NaWLVnH08HAzeE1KFwUB8KzKJc7hmaOUCgHOBnYCHwNXOY5dBSxuKyMb4kmFC3v3oiMiqIyMrr8w2hWOSpcVu7IJCfRnfLJFwc6yZaYixgsFvTPROzKEoAC/phOjUukiCDV44qH3Ar5SSm0BvsfE0D8B5gMzlFJ7gBmO222O1tpRg25d4cLevai0NJLiwpqeC1Ij6FlM6h9Tf4hWQ5YsMU0tY8c233jBY/z9FMkxUrooCM2hyRi61noLMMbF/Tag3bOCJ0oqKSyrsq5wAZPkHDOGpJgwth3Ltz6blgb5+eQfzWDq6Rat/na76bg855xGrf5C65McE9a0oA8YYGrr8/Ohh8XibUHoAvicKnlU4VJVBQcOQFoayTGhHD1RSlW1xYZ4R6VLUl6Gdfx882bIzJRwSzuREhfGYVsJ1e52qUJtpYvE0QXBFwXdhE8sm4oOHzai3r8/SdFhVNk16Xll7s87Zr2Mq7TVDIZyyZIl5nrOOc01W2gBqbFhVFTba2bVuERKFwWhBp8T9IO2YpSCvlEWgu6czZKWVrOizmrQU0W/JOwoJpNn/eRLl5quy/j45pottICUWFNqahl26d/flGCKoAuC7wn6IVsJvXuEuN/vCfUE3elxW1W6rM8sIT0iliHFLisvDQUF8M03Em5pR5x/hVmWLgYHm5V+EnIRBN8T9IO2YpeLoeuxd68ZStWrFz3Dg+kW6GdZ6bJidzaHo3rTM+uI+8f88ksTxpk5s4WWC80lrnsw3YMDpHRREDzE5wTd1KB7UOGSlgZKoZQi2blf1A0rdmVTkpiMv9VMkCVLTCPLpEkttFxoLkopUmI9qHRxCrrV3BdB6AL4lKAXlFWSW1zhUVNR3S1FSTGhNcnUhmQWlLEzo5CwYYPNiNl8FyWOWpv4+fTpEORm+JXQJiR7sjB6wAATEsuyCJkJQhfApwT9sLPCxcpDt9uNh15nS1FSTBiHckuwuyh/c05X7DvOMZ7GlZe+e7dZRizhlnYnJTaMYydKrSdmSumiIAA+JujOShVLD/3YMSgvb+ShV1TZyShoXLq4Ync2ceHB9D3FTCt0tTC6plxRBL3dSY0Nw67hSK5Ft6+ULgoC4GOC7gybWMbQ61S4OHE2ITUsXay2a1bvzWHqwDhUg7no9Vi6FAYNMvtHhXbFOaRrv9U6uqQkM2RNBF3o4viUoB/MKSYuPJjQIIuJBS4E3fkB0DCOvuVoHnkllWaZRVgY9OrVWNBLS+Hrr8U77yCSPVkY7e9vQmwSchG6OD4l6IdsJU0P5dq3zyQu+9aukOvVI4Qgf79GorBidzZKwRlpseYOFwujWbXKiLrUn3cIPUICiQkLktJFQfAAnxJ0U4PuQYVLaqrx2hz4+yn6RYfUJFWdrNydzai+kUSFOSpX0tIaJ0WXLjXNK1OntsZLEFpASmyYdcgFjKDv2WOS4oLQRfEZQS+pqCKrsNyjsbl1K1ycJMXUH6ObV1LBpiN59XeH9u8P6elQXEc8liyBKVMgtInnFdoMU7rowdTF8nI4YtEcJgidHJ8R9MO5zoSohYeudaMadCemFr126fDqvTnYNfWnKzp/bv9+cz1yBLZvl3BLB5MSG0ZWYTnF5VXuD0npoiD4jqA718hZjs3NzDTetQtBT44Jo6Simuwis3R45e5seoQEMqpvnRnaDStdli41VxH0DiXVkRi19NKldFEQfEfQna37ic0sWXRSt9JFa82K3dmcnhZLQN29pM5QjfNxliwxydUhQ07afqHlpMR5IOi9eplKJRF0oQvT5MYib+GgrYSo0EB6hAS6P+RMaLrx0MGUPoZ3CyCzoLzxMovISLNebu9eqKw0+0MvucSMZxU6jKRoDxZGK2Xi6BJyEbowPiPohzytcPH3N40mDegTFYK/n+KQrYTc4gqA+glRJ87SxbVrzXwQCbd0OCFB/vTu0c2z0sWNG9vHKEHwQnwo5OJBDfrevbVdgw0I9PejT2QIh3JLWLknm0Hx4ST06Nb4Mfr3N57+0qXmw2F6u69NFVyQEufh1MUDB6Cion2MEgQvwycEvbyqmvT80mZPWWxIUkwoO44X8P2BE0wd5GZ3aFqaWWG3eDFMnGjCMEKHk+JJ6eLAgVBdbURdELogPiHoR3JL0bqJPaJam/iphaAnx4SxN6uIimq7+2XQaWnmsX78UcItXkRqbHfySyvJKrTYDTtokLlu394+RgmCl+ETgl5T4RJt4aHn5ppZ5k146AAhgf6MT45yfajuz8v8Fq9heB9TXrr1mIt59U5GjDBhsg0b2skqQfAufELQD3oyB92iwsWJs9JlUv8YggPc7CR1/nxsLIwb12xbhbZhWO8IlIIfjxa4PxQSAsOGiaALXZYmBV0p1U8p9ZVSaodSaptS6lbH/dFKqWVKqT2OqxuX9+Q5ZCsmPDiA6DAX24J27YIHHoBLLzW3nQ0mLujf02yRP8td/BwgJsaI+axZ4OcTn3ddgrDgAFJjw/jRykMH8yG8YYOsoxO6JJ6ULVYBd2itNyqlwoENSqllwNXAcq31fKXUPcA9wO/awsiLx/VlfHI0ylkPnpEBb78Nb7wB69cb4Z0+Hf7yF0tBT4kNY9ENkxiTaJHoVMoshE5IaOVXIZwsI/r04Lv9udaHxo2DV16Bo0ehX7/2MUwQvIQmBV1rfRw47vi6UCm1A+gDzAHOdBxbCHxNGwn6yL6RjOzhD//5D7z+OnzxhZmqN3YsPPmk8c579fLosSakRDd9aMSIk7RYaAtG9I3ko03pZBWW0TPcRckpwPjx5rp+vQi60OVoVkxBKZUMjAHWAvEOsXeKfs/WNq6GBx+E+Hi48krT2n3vvaaSYcMGuP12j8Vc8G1GeJIYHTlSEqNCl8XjTlGlVHfgfeA2rXWB8rAdXil1PXA9QGJiYktsNM1CV18Nl18OkyZJK34XpW5idNrgeNeHJDEqdGE88tCVUoEYMX9Da/2B4+5MpVQvx/d7AVmuflZrvUBrPV5rPT4uziIZacVVV8G//gWnnSZi3oWRxKggWONJlYsCXgJ2aK2frPOtj4GrHF9fBSxuffMEoT4j+vSwDrmAEfTsbJMYFYQuhCce+mTgCmCaUmqT47/ZwHxghlJqDzDDcVsQ2pQRfSPJKCiz7hitmxgVhC6EJ1UuqwF3cQ6ZXCW0K3UTo9MGu6l0qZsYvfDCdrROEDoW6ZwRfArpGO2clFVWk55Xan3Ibq9dPuNDVFbb+XJnJmWV1W3+XCLogk8hidHOR1F5FfP+/S1nPv41a/bluD6kNVx/vVli8tRT7WtgC9Bas/HwCR5YvJVT/7qc/3t1PV/udFk30qr4zIILQXAiHaOdh7LKan65cD1b0wvoHdmNXy5cz5u/nMiofnW6ubWGu+6Cl14ygv7b30KPHvB//9dxhrthf3YRH21KZ/GmYxyylRAc4MfZQ+KZO6aP+wmvrYgIuuBzSMdo56Cq2s7Nb/3At/ttPD1vNJP6x3Dx82u46pV1vHvDJAbEh5uDf/0rPPEE3HwzPP44XHAB/PKXRtR/+tOOfRFAdmE5/92czkebjrHlaD5KwWn9Y7jprDRmDU8golsgFBVBQNsHRCTkIvgc0jHq+9jtmrvf28Ky7Zk8OGcYc8f0IT6iG69feyqB/n5c/tJajuSWwLPPwv33m6bCp5+GoCB4/32zfObnPzd7fzuQL7ZnMvGR5Tz4yXaq7Zr7Zg/h23um88Z1E7lkfD8j5tu2QVwcfPppm9sjgi74HJIY9W201jz4yXY++OEYd8wYyJWTkmu+lxQTxuvXnkpZpZ1Xb3oYfvMb+MlP4OWXa6efhoXBJ5/A4MEwdy58+23HvBDglTUH6B3ZjWW3T+HTW87gl1NSG6+2fOstsxaxHcZxi6ALPockRn2bp77Yw6trDnLd6Sn8Zlrj/QWDEsL5oJ+Ne9+Zz+a00eS9+nrjPcFRUfD559C7N8yeDVu2tJP1tWQVlLFmn40Lx/StDQ81RGsj6NOnt8sEVxF0wSeRjlHf5KXVB3hm+R4uGd+X+84bgsuZUF9/Tf9fX0Pp8JFcPed+rnn7R4rLqxqfi483k1fDwuCcc9q9pPGTLcfRGi4Y1dv9oXXrYP9+uOyydrFJBF3wSaRj1PdYtP4ID32ynXOHJ/DIRSNdi/n69SbE0r8/4V8u45GrJ7P5SB43vr6B8ioXddxJSSaOXl0NM2bAsWNt/0IcLN6czrDeEaQ5Fue45K23IDgYLrqoXWwSQRd8EkmM+hZLtmZwz/tbOGNALE9fOhp/PxdivmOH2RQWG2vCKbGxzBqewGMXj2LVnhxue3sTVdX2xj83ZAgsWQI2m/HUbbY2fz2HbMVsPpJn7Z1XV5tFPLNnm4qcdkAEXfBJJDHqO6zcnc0tb/3AqH6RPH/5ONf7fPfvNx52QIDxuPv0qfnWxeP68sD5Q/lsawa///BHtKucyLhx8N//mseZNQsKC9vwFcHHm9IB+ImVoH/1FWRmmmqcdkIEXfBJJDHq/VRV2/n7F3u45tXvSY0L49WrJxAW7KL1ZdEi83sqLjaeuYtF7/93ego3T0tj0fqjrNrjppt06lR4913z+37ySddnWgGtNYs3pzMhJZrekSHuD771FoSHw3nntZktDRFBF3wWSYx6L0dyS7h0wXc89cVuLhjVm0U3TqJHaINKlcJCuOYamDcPBg0y8fORI90+5m+mpREVGshb6w67f+Lzzzee/ksvmZBHG7DjeCF7s4qswy3l5aZe/sILzV+K7YQIuuCzDO/To+nEqLP2t5lhl2q7dv2nfV20bjPR8GUWbzrG7L+vYldGIX+/dDRPzRttGmzqsm4djBkDr71mGodWrYL+/S0fNzjAn4vH9WXZ9kzr3/n118ORIyau3gYs3nyMAD/F7BEWqy8/+wzy89s13AIi6IIPM7Kvmfdh6aWPGmUSo82odCmvquai59bw20WbrQ/edJNpbrG7SNR1QQrLKrn9nU3c+vYmBiaE879bz2DO6D71D1VXm1b+yZOhshK+/hoeeqhxnbkbLpuQSJVd8+56i7+4LrjAlDT++98tfzFusNs1n2w+zhkDYokOC3J/8M03TXfo9PadMC6CLvgsbZUYfXLZbjYfyePzbRlUVLkR648+gueeM7XPm5sQ/i7AhkMnmP3MKhZvOsZtZw/gnesn0i86tP6hI0dg2jS47z4zg2XzZjjjjGY9T2pcdyamRvP294ex2938BRUYaAZ3ffppq4faNhw+wbG80sYfVHUpLDQJ2ksuMUnedkQEXfBZ2iIx+t1+GwtW7mdgfHeKK6rZcOhE40MZGWY41JAh5nYb/WnvCzgTn5f8+1u0hndvnMRtZw8kwL+BtCxaZOLjGzfCq6+ahGFkpMvHbIrLJiRyJLeUb9yN2gXz+7HbzciAVmTxpmN0C/RjxlA3S8rBfNiXlbVbM1FdRNAFn6Y1E6MFZZXcsWgzSdGhvH7tqQT4KVbszq5/SGvj/RUVmaTXmDFdVtDLq6q5/KW1PPXFbn4yshf/u/UMxiVFNz54xx0m8TlwIPzwg1n6fhLL3mcNTyAqNJA311okR1NSTE36iy+2Wp6jstrO/37M4Owh8a6rdZy8+aZpeJo0qVWetzmIoAs+TWsmRv+0eBsZBWU8OW80PSO6MS4pipUNBf35503C67HHjIc+cyasWQMFFmGfTsoTn+/mu/25PPrTETx96ZjGiU+ADz4wJYQ33girV7ssSWwuHZUcXb03h9ziCutwS3a2qaO/7LLaYWLtiAi64NO0VmL00y3H+eCHY/zmrDTGJkYBMHVQHNuPF5BV4BCNXbuMtzlzpkmIgmliqaqCL79sldfjK3y7z8YLq/bz81MTmXdKoutDx48bUR03Dp55xuPEpydc6kiOvrfBg+ToggWt8pz/3ZRORLcApgyMdX/o3XfNXwQdEG4BEXTBx2mNxGhGfhm///BHRvWLrDf9z7lhZuWeHFORcfnl5rHqjnKdNMk0j3ShsEt+aSV3LNpEckwY9583xPUhZ2iqpARedzEt8STp70yOrjvSdHL0k09OOjlaWlHN0m0ZzB7Ry3Wnq5O33jL/r40YcVLP11JE0AWf5mQTo3a75q73NlNRZefpeaMJrJPMG5IQQWz3YBN2eegh4+EvWGBGtjoJCjKVG0uXdplu1D8u3kpmYTlPzRtNaJCbWPK//mU+5B5/3JR2tgGXTUjkcG5JuyRHl+/MpLiimgtGWzQTHT5swkqXXXZSOYKTQQRd8HlOJjG68NuDrNqTw/3nDyElNqze9/z8FFMGxpL/5Qr0ww+bZJ6rlWezZsHBg7B798m9EB/g483pfLQpnVumDWB0PzdVKjt2wJ13wrnnwq9+1Wa2OJOjlp2jrZQc/XhTOj3Dgzk1Jcb9obffNtcOCreACLrQCWhpYnR3ZiGPfLaT6YN78vMJruPA0/uE8OB7j1LRp6+JA7ti5kxz7eRhl/S8Uu7/8EfGJEZy01luujorKkxoKizMtN+3oafqTI5+vq1tk6P5pZV8vSubn4zq7XpKpJM33zSr8VJTW/Q8rUGTgq6UelkplaWU2lrnvmil1DKl1B7HNaptzRQE97QkMVpRZee2tzcRHhzA/J+6mc0NTH/hUfrmZ/Hf3z4CERGuHzslxZTkLV16Uq/Dm7HbNXe+u5kqu+apS0Y3rjN38uc/m1rzF16AXhat8a1EeyRHl27NoKLabj27Zft20yjVgd45eOahvwrManDfPcByrfUAYLnjtiB0CC1JjD65bDfbjxfw6E9HEhce7PpnPvqIbgtf4YOzf85bwcnWRsyaZdrYS0tb9Bq8nZe/OcCafTYeOH8oyQ1CUzV88w3Mn28SkRde2C529Y/rzqkpbZscXbz5GMkxoYzsazHT/K23TKL8kkua/fitSZOCrrVeCeQ2uHsOsNDx9UJgbivbJQge09zE6Np9Ofx75T4um9CPs911/Dm7QceO5ditd/PD4RPkl1S6f+xZs4yYr1rV8hfipezKKOSxpbs4e0g8807p5/pQQQFccQUkJ8PTT7erfT8/1YPk6HXXtSg56twbesGo3m7/ikNrE26ZNq1d9oZa0dIYerzW+jiA49qz9UwShObTnMToXxcsIyk6lPvPG+r6XHq6SX4WFcHrr3P6sD7YNdaCMXWqWTXWycIu5VXV3Pr2D0R0C2D+T0e4F7XbboNDh+A//zFlnO2IR8nR1NQWJUdr9oZaVbd8/71ZrNHOkxVd0eZJUaXU9Uqp9Uqp9dnZ2U3/gCC0gKYSo9V2zfvK+B1D0vfw7C/Gum7f/ugjU0O8aRMsXAhDhjC6XyTh3QJYscvi/9/QUJgypdMlRp/8fDc7Mwp57OKRxHZ3E5r64AN45RW491447bT2NZC2TY7W7g21+JB688123RtqRUsFPVMp1QvAcc1yd1BrvUBrPV5rPT4uLq6FTycI1lglRtPzSvnFi9/x+33+VPv586fepQzr3SAeWlwMN9xgYr8pKSax54iHBvj7cXpaLCt2Z1vPSJ81yyTHjhxptdfVkXy7z8aCVfv5xamJTBvsJjTl7AYdPx7++Mf2NbAObZEc9Xhv6DvvtOveUCtaKugfA1c5vr4KWNw65ghCy3CXGP3fj8c59++r2HI0n79cdgp+w4fRbcum+j/8ww8mHPPCC3D33WY2y6BB9Y5MHRhHRkEZe7KK3Bsxy1E70AnCLul5pTXdoPe56wYtLoYrr2yzbtDm0Ozk6LFjTT7m+xvNGcu9ocuWmXyLF4RbwLOyxbeAb4FBSqmjSqlrgfnADKXUHmCG47YgdBgNE6PF5VXc/d5mfv3GRpJjQvnfLWfws/H9UHU7Ru1208l46qlmhvUXX8Cjj5ruzwZMcYwBsAy7DBkCffv6fNjl0y3HmfX0SvJLK3naXTfoxo3mQ3D5cvjHPxp9AHYEzUqOvvSS5WN9uTOTf321l7OHxLvfG7pnD1x9NfTr1657Q63wpMrlMq11L611oNa6r9b6Ja21TWs9XWs9wHFtWAUjCO2OMzG6+Uge5z2zinc3HOWms/rz3q9Oqy21c3aMrltnkmR33WX2UG7ZYqoU3NA7MoQBPbs3HqdbF6WMl/7FF2Zgl49RXF7FXe9u5qY3N5IS151PbzmDUQ27Qe12+NvfTANNUZER9Guv7RiDGzBzWOskR9fut/Gr1zcytHcET80b5fpxjh41u0urq81i63bcG2qFdIoKnQZnYvSnz62hosrOW7+cyF0zB9ebz1LTMXr66fDttybM8v77EGPR0u1g6sA41h3IpaTCQqxnzTK7JNeuPclX0744PwTf23iU35yVxns3Tmpcb37smBHDu+828egtW+CsszrGYBd0C/Tnp2NPLjm69Vg+1y1cT9+oEF69ZgLhrkYC5+SY9yE314TX2mhWTUsQQRc6DRNTY1AKZg5P4LNbpzAx1YVIjxoFUVG123Ouu87j9vSpg+KoqLazdr/FH6TTp5uOVB8Ju1TbNc9+tbfmQ/DtX07kzpmD6n8IAnz4oXnPvv3WeLfvvgvRLpZZdDCXnZqIBn7xwlp2HHfTaHbBBdCnj5nN89FHNXfvzSriypfXERESyOvXnep6Z2hBgfnQPnDAxOLHjm2bF9JCRNCFTsPwPj1Yf9/Z/POyMfQIdZOgCwmBffuMB93MuO8pydF0C/SzDrtERppwhA8IenpeKT9/4Tv+tnRXzYfgqQ0/BIuLjUd70UWm+ueHH0yIpYOmCTZF/7juvHL1KeSVVjLnn9/w0uoDjZOkgYEmVJSUZKqabriBY0ezueKltfgpxevXnUqvHi5CKKWl5sNg82Z47z1TpupliKALnYqY7sHum1+cREW1aHlvt0B/JqbGWAs6GA9uwwYTq/dSnInPrcfyefxno1x/CDoTny++CL/7nan+GTiwYwxuBlMGxrHk1jM4Y0AsD32ynatf/b5xCGbQIPPXxl13wYIFVI8dR7+DO3nt/yY0mroJmHn4l1wCK1fCa695TRK0ISLogtAMpg6M40BOMYdtJe4PzZxpqmiWLWs/w5rBy6sP1Et8Xjyub+MPwdWr6yc+5893Wf3jrcR0D+bFq8bz0NzhrN1v49ynV7F8R2b9Q0FB5P/5Ye799VMEl5Xw9iu3M/TNBSbxWxe73VSzfPKJmfPewQO4rBBBF4RmUFO+uMfC+x43DmJjvTLssuN4AfM/28nZQ+JdJz7BJHUvvxwSE014wYsSn81BKcUVE5P45ObT6RnRjWsXrueBxVspqzTVLaUV1Vz76ve8FzmQvcu+we/8843HPnOmGf8A5oP55ptNN+hf/2p2o3oxIuiC0AxSY8PoGxViXY/u52eqIJYubeztdSBlldXc9vYmeoQG8tjFIxsnPp3ccospy3v9dY+qf7ydAfHhfHTTaVx7egqvfXuIn/xjNVuO5nHj6xvYePgEf790DJNPHWSqnf79bzM1cuRIkzD9wx+MV37XXXCP9w+VFUEXhGaglGLqwDi+3ZdDRZWFWM+cCVlZxsP1Eh5fuotdmWYui8sKDjDJvtdeg/vuMyGXTkJwgD9/OH8oC/9vAnmllVzwz29YsTubRy4awewRjrntSpkE8MaNtQnThx82UzcffdRrE8F1EUEXhGYyZWAcxRXVbDh0wv2hc84xVy8Ju6zZm8OLqw9wxcQkzhrkZjhqerqZZ3PKKXD//e1rYDsx1ZEwvXhcXx6+cDjzTnGxqWrwYJMwvf9+uPVWeO45nxBzAGU5bKiVGT9+vF7v2BgjCL5KYVklYx5cxnVnpHLPuRZNJWPHmlGyK1a0n3EuyC+pZNbfVxIS5M+nN59BSJCLrfV2u9kBunq1KU30gWqWroRSaoPWenxT58RDF4RmEt4tkHFJUaxsqnxx5kz0mjUs+263dXgmK8uEOmy21jXUwR8WbyW7sJyn5412LeYAzz5rWtifeELE3IcRQReEFjBlYBzbjxeQVdC4xTy7sJyXVx/g3pLeqKoq3n3sNS5+fg37s+tMaiwuhjfeMGNXe/eGn/3MzGH/4otWtXPxpmN8vDmdW6cPqBkx3Ijt2007/3nnmZCL4LOIoAtCC5jqKF9cucdM9isur+KDjUe58uV1nPrXL3jwk+3sSB5GRWh37vU7xOHcEi54egUr/r4QffnlZi735ZfDtm2mguK//zUNTzNmwJ13Qnn5Sdt4LK+U+z/ayrikKH51Zn/Xhyoq4Be/MKGhl17ymVix4Jrmt8sJgsDQXhHEdg/ine8Ps3J3Nsu2Z1JaWU3fqBB+fWYac8f0NltuVkwn5buv+CY2gqo336JH4QmKwyIImHcpwVddaYaE+Tn8qmnTjLg/8QR8+aWpfW7h4Ce7XXPnos3Y7ZqnLhlNgLsSxT/+0WxnWrzYfMgIPo0IuiC0AD8/xdSBPXl/41EiQ4u4aGwfLhzTh3FJUfW7LmfPhsWLCXv1JfT5P2Hp6On8trAXEZHdebLPMCb51RHa0FATy54508xLGTsWnnrKlNI103N+afUBvt1v47GfjiQxJtT1oVWrTDneddeZGSWCzyNVLoLQQmxF5ew4XsiElGiCAtx4wJWVJtk4ebIZ3AX8eDSfW9/+gQO2Ym6c2p/bzx7Y+OePHzfTAJctgzlzzDyV2FiP7NpxvIA5//yGMwfF8e8rxrmebVNQYJpnAgKMh969e3NeutDOSJWLILQxMd2DOX1ArHsxBzPZ77zzasQcYETfHnxyy+lceko/nvt6Hxc/v4YDOcX1f65XL1PD/sQT8NlnRnw9SJiWVVZz+zubiAgJ5JGLRrgfVHbLLWYm+H/+I2LeiRAPXRA6kCVbj3PPBz9SVllNvyjXoZH+x4vi2DUAAAS0SURBVPZw7xt/ISnzEIfik9C4D79orams1vSJDCEs2E2Jot0OO3eatvYHH2yNlyG0MZ566CLogtDBZOSX8ffle8gvrXB7JrC8jFkfv0z88UNNPl5MWDBJ7uLmTlJSTFt7By52FjxHBF0QBKGTIDF0QRCELoYIuiAIQidBBF0QBKGTIIIuCILQSTgpQVdKzVJK7VJK7VVKef86D0EQhE5MiwVdKeUPPAucCwwFLlNKDW0twwRBEITmcTIe+gRgr9Z6v9a6AngbmNM6ZgmCIAjN5WQEvQ9wpM7to477BEEQhA7gZKYtuuo/btSlpJS6HrjecbNIKbWrhc8XC+S08Gc7ErG7/fFV28Xu9sWX7E7y5NDJCPpRoF+d232B9IaHtNYLgAUn8TwAKKXWe9Ip5W2I3e2Pr9oudrcvvmq3FScTcvkeGKCUSlFKBQGXAh+3jlmCIAhCc2mxh661rlJK/QZYCvgDL2utt7WaZYIgCEKzOKmNRVrr/wH/ayVbmuKkwzYdhNjd/viq7WJ3++KrdrulXactCoIgCG2HtP4LgiB0EnxC0H11xIBS6qBS6kel1CallNcOgldKvayUylJKba1zX7RSaplSao/jGtWRNrrCjd1/Ukodc7znm5RSszvSRlcopfoppb5SSu1QSm1TSt3quN+r33MLu736PVdKdVNKrVNKbXbY/WfH/V79frcErw+5OEYM7AZmYEolvwcu01pv71DDPEApdRAYr7X26lpXpdQUoAh4TWs93HHfY0Cu1nq+40M0Smv9u460syFu7P4TUKS1frwjbbNCKdUL6KW13qiUCgc2AHOBq/Hi99zC7kvw4vdcmcWqYVrrIqVUILAauBW4CC9+v1uCL3joMmKgjdFarwRyG9w9B1jo+Hoh5h+uV+HGbq9Ha31ca73R8XUhsAPTZe3V77mF3V6NNhQ5bgY6/tN4+fvdEnxB0H15xIAGPldKbXB0zPoS8Vrr42D+IQM9O9ie5vAbpdQWR0jGq/+MVkolA2OAtfjQe97AbvDy91wp5a+U2gRkAcu01j71fnuKLwi6RyMGvJTJWuuxmImUNzlCBELb8hzQHxgNHAee6Fhz3KOU6g68D9ymtS7oaHs8xYXdXv+ea62rtdajMR3tE5RSwzvaprbAFwTdoxED3ojWOt1xzQI+xISPfIVMR8zUGTvN6mB7PEJrnen4x2sHXsBL33NHLPd94A2t9QeOu73+PXdlt6+85wBa6zzga2AWPvB+NxdfEHSfHDGglApzJI5QSoUB5wBbrX/Kq/gYuMrx9VXA4g60xWOc/0AdXIgXvueOJN1LwA6t9ZN1vuXV77k7u739PVdKxSmlIh1fhwBnAzvx8ve7JXh9lQuAowzqaWpHDDzcwSY1iVIqFeOVg+nIfdNb7VZKvQWciZk+lwn8EfgIWAQkAoeBn2mtvSoB6cbuMzF/+mvgIHCDM07qLSilTgdWAT8Cdsfdv8fEo732Pbew+zK8+D1XSo3EJD39MU7sIq31g0qpGLz4/W4JPiHogiAIQtP4QshFEARB8AARdEEQhE6CCLogCEInQQRdEAShkyCCLgiC0EkQQRcEQegkiKALgiB0EkTQBUEQOgn/D5i01A5CpfEPAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# evaluate a persistence model\n", "from pandas import read_csv\n", "from pandas import DataFrame\n", "from pandas import concat\n", "from matplotlib import pyplot\n", "from sklearn.metrics import mean_squared_error\n", "from math import sqrt\n", "\n", "# load dataset\n", "series = read_csv('https://s3.amazonaws.com/myiotstation/pm2p5c.csv', header=0, index_col=0, parse_dates=True, squeeze=True)\n", "# create lagged dataset\n", "values = DataFrame(series.values)\n", "dataframe = concat([values.shift(1), values], axis=1)\n", "dataframe.columns = ['t', 't+1']\n", "# split into train and test sets\n", "X = dataframe.values\n", "testLength = 34;\n", "train, test = X[1:len(X)-testLength], X[len(X)-testLength:]\n", "train_X, train_y = train[:,0], train[:,1]\n", "test_X, test_y = test[:,0], test[:,1]\n", "# persistence model\n", "def model_persistence(x):\n", " return x\n", "# walk-forward validation\n", "predictions = list()\n", "for x in test_X:\n", " yhat = model_persistence(x)\n", " predictions.append(yhat)\n", "rmse = sqrt(mean_squared_error(test_y, predictions))\n", "print('Test RMSE: %.3f' % rmse)\n", "# plot predictions vs expected\n", "pyplot.plot(test_y)\n", "pyplot.plot(predictions, color='red')\n", "pyplot.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# END" ] } ], "metadata": { "kernelspec": { "display_name": "Containerized conda_python2", "language": "python", "name": "containerized_conda_python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.15" } }, "nbformat": 4, "nbformat_minor": 2 }