prophet/notebooks/trend_changepoints.ipynb

418 lines
945 KiB
Text
Raw Normal View History

2017-02-22 23:59:43 +00:00
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"block_hidden": true,
"collapsed": false
},
"outputs": [],
"source": [
"%load_ext rpy2.ipython\n",
"%matplotlib inline\n",
"from fbprophet import Prophet\n",
"import pandas as pd\n",
"from matplotlib import pyplot as plt\n",
"import numpy as np\n",
"df = pd.read_csv('../examples/example_wp_peyton_manning.csv')\n",
"df['y'] = np.log(df['y'])"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"block_hidden": true,
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/usr/lib/python2.7/dist-packages/rpy2/rinterface/__init__.py:186: RRuntimeWarning: Loading required package: Rcpp\n",
"\n",
" warnings.warn(x, RRuntimeWarning)\n"
]
},
{
"data": {
"text/plain": [
"STAN OPTIMIZATION COMMAND (LBFGS)\n",
"init = user\n",
"save_iterations = 1\n",
"init_alpha = 0.001\n",
"tol_obj = 1e-12\n",
"tol_grad = 1e-08\n",
"tol_param = 1e-08\n",
"tol_rel_obj = 10000\n",
"tol_rel_grad = 1e+07\n",
"history_size = 5\n",
"seed = 724481655\n",
"initial log joint probability = -19.4685\n",
"Optimization terminated normally: \n",
" Convergence detected: relative gradient magnitude is below tolerance\n"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%%R\n",
"library(prophet)\n",
"df <- read.csv('../examples/example_wp_peyton_manning.csv')\n",
"df$y = log(df$y)\n",
"m <- prophet(df)\n",
"future <- make_future_dataframe(m, periods=366)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You may have noticed in the earlier examples in this documentation that real time series frequently have abrupt changes in their trajectories. By default, Prophet will automatically detect these changepoints and will allow the trend to adapt appropriately. However, if you wish to have finer control over this process (e.g., Prophet missed a rate change, or is overfitting rate changes in the history), then there are several input arguments you can use."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Automatic changepoint detection in Prophet\n",
"Prophet detects changepoints by first specifying a large number of *potential changepoints* at which the rate is allowed to change. It then puts a sparse prior on the magnitudes of the rate changes (equivalent to L1 regularization) - this essentially means that Prophet has a large number of *possible* places where the rate can change, but will use as few of them as possible. Consider the Peyton Manning forecast from the Quickstart. By default, Prophet specifies 25 potential changepoints which are uniformly placed in the first 80% of the time series. The vertical lines in this figure indicate where the potential changepoints were placed:"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false,
"input_hidden": true
},
"outputs": [
{
"data": {
"image/png": "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\nYrrjAi6CIIh4g8otCII
"text/plain": [
"<matplotlib.figure.Figure at 0x7f14ac7b9810>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"m = Prophet()\n",
"m.fit(df)\n",
"future = m.make_future_dataframe(periods=366)\n",
"forecast = m.predict(future)\n",
"fig = m.plot(forecast)\n",
"for cp in m.changepoints:\n",
" plt.axvline(cp, c='gray', ls='--', lw=2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Even though we have a lot of places where the rate can possibly change, because of the sparse prior, most of these changepoints go unused. We can see this by plotting the magnitude of the rate change at each changepoint:"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false,
"input_hidden": true
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAskAAAGpCAYAAAB/KasqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X1U1HXe//HXAKJ5m8oFDYuIJFuIGtpQuqXmBeNdhtmW\nuWXheoPbsWu3tnLZs1venCw69attM69dcje5dC/NPEexc9JEd9VsM6R0u1paL0rIG27EFRO8A+H7\n+6OrOesHcEhm5gvD83FO5zAzHz7zgvd88XW+fRkclmVZAgAAAOARYncAAAAAoL2hJAMAAAAGSjIA\nAABgoCQDAAAABkoyAAAAYKAkAwAAAAZKMgAAAGCgJAMAAAAGSjIAAABgCLM7gK9FREQoLi7O7hgt\nqq+vV5cuXeyOAT9gtsGL2QYvZhvcmG/wastsS0tLdfLkSa/rgq4kx8XFqbCw0O4YLSorK1N0dLTd\nMeAHzDZ4MdvgxWyDG/MNXm2ZrcvlatU6LrcAAAAADJRkAAAAwEBJBgAAAAyUZAAAAMBASQYAAAAM\nlGQAAADAQEkGAAAADJRkAAAAwEBJBgAAAAyUZAAAAMBASQYAAAAMlGQAAADAQEkGAAAADJRkAAAA\nwEBJBgAAAAyUZAAAAMAQZncAAAAQXK5bsl2VNRd9sldUr66qWDLBJ3sB3wVnkgEAgE/5qiD7ei/g\nu6AkAwAAAAZKMgAAAGCgJAMAAAAGSjIAAABgoCQDAAAABkoyAAAAYOB9khEQvGcmAADoSDiTjIDg\nPTMBAEBHQkkGAAAADJRkAAAAwEBJBgAAAAyUZAAAAMBASQYAAAAMlGQAAADAQEkGAAAADJRkAAAA\nwEBJBgAAAAy2luRt27bphhtu0ODBg5Wdnd3iuo0bN8rhcKiwsDCA6QAAANBZ2VaSGxoatHDhQm3d\nulVFRUVat26dioqKmqyrqanRb3/7W9166602pAQAAEBnZFtJLigo0ODBgxUfH6/w8HDNnDlTeXl5\nTdY9/fTTWrRokbp162ZDSgAAAHRGYXY98fHjxzVgwADP7ZiYGH300UeXrTlw4ICOHj2qqVOn6qWX\nXmpxr5ycHOXk5EiSKioqVFZW5p/QPlBVVWV3BFs4Q875dL/2OOPOOtvOgNkGL2brH+3lZz7zDV6B\nmK1tJdmyrCb3ORwOz8eNjY16/PHHtXr1aq97ZWZmKjMzU5LkcrkUHR3ts5z+0N7z+UN5Y3ef7tde\nv4ftNRfajtkGL2bre+3pZz7zDV7+nq1tl1vExMTo6NGjntvHjh277IutqanRZ599pjvuuENxcXHa\nt2+f0tPT+eU9AAAA+J1tJTklJUXFxcUqKSlRXV2d1q9fr/T0dM/jffr00cmTJ1VaWqrS0lKNGjVK\nW7ZskcvlsisyAAAAOgnbSnJYWJhWrFihiRMnKjExUTNmzFBSUpKeeeYZbdmyxa5YAAAAgH3XJEvS\nlClTNGXKlMvuW7ZsWbNrd+3aFYBEAAAAAH9xDwAAAGiCkgwAAAAYKMkAAACAgZIMAAAAGCjJAAAA\ngIGSDAAAABgoyQAAAIDB1vdJRvtx3ZLtqqy56JO9onp1VcWSCT7ZCwAAwA6cSYYk+awg+3ovAAAA\nO1CSAQAAAAMlGQAAADBQkgEAAAADJRkAAAAwUJIBAAAAAyUZAAAAMFCSAQAAAAMlGQAAADBQkgEA\nAAADJRkAAAAwUJIBAAAAAyUZAAAAMFCSAQAAAAMlGQAAADCE2R0AAILVdUu2q7Lmok/2iurVVRVL\nJvhkLwCAd5xJBgA/8VVB9vVeAADvKMkAAACAgZIMAAAAGCjJAAAAgIGSDAAAABgoyQAAAICBkgwA\nAAAYKMkAAACAgZIMAAAAGCjJAAAAgIGSDAAAABgoyQAAAICBkgwAAAAYKMkAAACAgZIMAAAAGCjJ\nAAAAgCHM7gAAgKtz3ZLtqqy56JO9onp1VcWSCT7ZCwCCAWeSAaCD8lVB9vVeABAMKMkAAACAgZIM\nAAAAGGwtydu2bdMNN9ygwYMHKzs7u8njL7/8soYMGaLhw4crNTVVX331lQ0pAQAA0NnYVpIbGhq0\ncOFCbd26VUVFRVq3bp2KioouWzNixAgVFhbq008/1b333qtFixbZlBYAAACdiW0luaCgQIMHD1Z8\nfLzCw8M1c+ZM5eXlXbZm/Pjx6t69uyRp1KhROnbsmB1RAQAA0MnY9hZwx48f14ABAzy3Y2Ji9NFH\nH7W4/g9/+IMmT57c7GM5OTnKycmRJFVUVKisrMy3YX2oqqrK7gjNcoac8+l+5gz8vX970F5ni7a7\n2tlyXLV/HLf+0V5em8w3eAVitraVZMuymtzncDiaXbt27VoVFhZq9+7dzT6emZmpzMxMSZLL5VJ0\ndLTvgvpBe8xX3tjdp/uZX6O/928v2msutN3VzJbjqmPorF+3P7Wn1ybzDV7+nq1tJTkmJkZHjx71\n3D527FizX+yOHTu0fPly7d69W127dg1kRAAAAHRStl2TnJKSouLiYpWUlKiurk7r169Xenr6ZWsO\nHDigBQsWaMuWLYqMjLQpKQAAADob20pyWFiYVqxYoYkTJyoxMVEzZsxQUlKSnnnmGW3ZskWS9NRT\nT6m2tlb33XefkpOTm5RoAAAAwB9su9xCkqZMmaIpU6Zcdt+yZcs8H+/YsSPQkQAAAAD+4h4AAABg\noiQDAAAABkoyAAAAYKAkAwAAAAZKMgAAAGCgJAMAAAAGSjIAAABgoCQDAAAABkoyAAAAYKAkAwAA\nAAZKMgAAAGCgJAMAAAAGSjIAAABgoCQDAAAABkoyAAAAYKAkAwAAAAZKMgAAAGCgJAMAAAAGSjIA\nAABgoCQDAAAABkoyAAAAYKAkAwAAAAZKMgAAAGCgJAMAAAAGSjIAAABgoCQDAAAABkoyAAAAYKAk\nAwAAAAZKMgAAAGCgJAMAAAAGSjIAAABgoCQDAAAABkoyAAAAYKAkAwAAAAZKMgAAAGCgJAMAAAAG\nSjIAAABgoCQDAAAABkoyAAAAYKAkAwAAAAZKMgAAAGCgJAMAAAAGSjIAAABgoCQDAAAAhjA7n3zb\ntm362c9+poaGBs2bN09ZWVmXPX7x4kU9/PDD+vjjj9W/f3+99dZbiouLsycsAABoF65bsl2VNRe9\nrnOGnFN5Y/crronq1VUVSyb4KhqCiG1nkhsaGrRw4UJt3bpVRUVFWrdunYqKii5b84c//EF9+/bV\nF198occff1y/+MUvbEoLAADai9YUZDv2QnCxrSQXFBRo8ODBio+PV3h4uGbOnKm8vLzL1uTl5Skj\nI0OSdO+992rnzp2yLMuOuAAAAOhEbLvc4vjx4xowYIDndkxMjD766KMW14SFhalPnz765z//qYiI\niMvW5eTkKCcnR5JUUVGhsrIyP6dvKufDr5Sz74jXdREhF3SysdsV12SOilXm6IFXtX9rNLd/Uq96\nnTpb75P9+/Xo0mQG/tzf398bf892Qs4+n35vtmeOCuj+7eX778/9WzPb5vbvyMeV1D6+923ZvzWv\n/dbONtCvfV/u7e/92/O/KREhF65q//bw2mytjvzabO5701pVVVU+yXAlDsumU7Nvv/223nvvPa1a\ntUqStGbNGhUUFOi1117zrElKStJ7772nmJgYSdL111+vgoIC9e/fv8V9XS6XCgsL/Ru+DcrKyhQd\nHW13DPjB1c7W8cQ7Ps1h/b+7Arp/Z8Bx2zG15rXfmmtWv9UZX/sdXXs9dvm53HZtmW1ru6Jtl1vE\nxMTo6NGjntvHjh1r8sX+65pLly7p66+/Vr9+/QKaEwAAAJ2PbSU5JSVFxcXFKikpUV1dndavX6/0\n9PTL1qSnpys3N1eStHHjRv37v/+7HA6HHXEBAADQidh2TXJYWJhWrFihiRMnqqGhQXPmzFFSUpKe\neeYZuVwupaena+7cuXrooYc0ePBg9evXT+vXr7crLgAAADoRW98necqUKZoyZcpl9y1btszzcbdu\n3fT2228HOhYAAAA6Of7
"text/plain": [
"<matplotlib.figure.Figure at 0x7f14a0228d90>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"deltas = m.params['delta'].mean(0)\n",
"fig = plt.figure(facecolor='w', figsize=(10, 6))\n",
"ax = fig.add_subplot(111)\n",
"ax.bar(range(len(deltas)), deltas, facecolor='#0072B2', edgecolor='#0072B2')\n",
"ax.grid(True, which='major', c='gray', ls='-', lw=1, alpha=0.2)\n",
"ax.set_ylabel('Rate change')\n",
"ax.set_xlabel('Potential changepoint')\n",
"fig.tight_layout()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The number of potential changepoints can be set using the argument `n_changepoints`, but this is better tuned by adjusting the regularization."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Adjusting trend flexibility\n",
"If the trend changes are being overfit (too much flexibility) or underfit (not enough flexiblity), you can adjust the strength of the sparse prior using the input argument `changepoint_prior_scale`. By default, this parameter is set to 0.05. Increasing it will make the trend *more* flexibile:"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false,
"output_hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"STAN OPTIMIZATION COMMAND (LBFGS)\n",
"init = user\n",
"save_iterations = 1\n",
"init_alpha = 0.001\n",
"tol_obj = 1e-12\n",
"tol_grad = 1e-08\n",
"tol_param = 1e-08\n",
"tol_rel_obj = 10000\n",
"tol_rel_grad = 1e+07\n",
"history_size = 5\n",
"seed = 1877438553\n",
"initial log joint probability = -19.4685\n",
"Optimization terminated normally: \n",
" Convergence detected: relative gradient magnitude is below tolerance\n"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n9MuXL0OHDqV3+COEUGX
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%%R -w 10 -h 6 -u in\n",
"m <- prophet(df, changepoint.prior.scale = 0.5)\n",
"forecast <- predict(m, future)\n",
"plot(m, forecast);"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\neI80VtmPWKN20BQVFWH
"text/plain": [
"<matplotlib.figure.Figure at 0x7f14a03ae510>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"m = Prophet(changepoint_prior_scale=0.5)\n",
"forecast = m.fit(df).predict(future)\n",
"m.plot(forecast);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Decreasing it will make the trend *less* flexible:"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false,
"output_hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"STAN OPTIMIZATION COMMAND (LBFGS)\n",
"init = user\n",
"save_iterations = 1\n",
"init_alpha = 0.001\n",
"tol_obj = 1e-12\n",
"tol_grad = 1e-08\n",
"tol_param = 1e-08\n",
"tol_rel_obj = 10000\n",
"tol_rel_grad = 1e+07\n",
"history_size = 5\n",
"seed = 779746204\n",
"initial log joint probability = -19.4685\n",
"Optimization terminated normally: \n",
" Convergence detected: absolute parameter change was below tolerance\n"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\nolO3bt2+fv3648cPXV1
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%%R -w 10 -h 6 -u in\n",
"m <- prophet(df, changepoint.prior.scale = 0.001)\n",
"forecast <- predict(m, future)\n",
"plot(m, forecast);"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nE03tYNkg2epi8cFH2kZ
"text/plain": [
"<matplotlib.figure.Figure at 0x7f14a02e7d90>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"m = Prophet(changepoint_prior_scale=0.001)\n",
"forecast = m.fit(df).predict(future)\n",
"m.plot(forecast);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Specifying the locations of the changepoints"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If you wish, rather than using automatic changepoint detection you can manually specify the locations of potential changepoints with the `changepoints` argument."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false,
"output_hidden": true
},
"outputs": [
{
"data": {
"text/plain": [
"STAN OPTIMIZATION COMMAND (LBFGS)\n",
"init = user\n",
"save_iterations = 1\n",
"init_alpha = 0.001\n",
"tol_obj = 1e-12\n",
"tol_grad = 1e-08\n",
"tol_param = 1e-08\n",
"tol_rel_obj = 10000\n",
"tol_rel_grad = 1e+07\n",
"history_size = 5\n",
"seed = 1379588697\n",
"initial log joint probability = -19.4685\n",
"Optimization terminated normally: \n",
" Convergence detected: relative gradient magnitude is below tolerance\n"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n+fL9+3ctLS3JT0v7+fM
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%%R -w 10 -h 6 -u in\n",
"m <- prophet(df, changepoints = c(as.Date('2014-01-01')))\n",
"forecast <- predict(m, future)\n",
"plot(m, forecast);"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nHcHZ2jvSz5lEot6B6Rb
"text/plain": [
"<matplotlib.figure.Figure at 0x7f14a01a7b90>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"m = Prophet(changepoints=['2014-01-01'])\n",
"forecast = m.fit(df).predict(future)\n",
"m.plot(forecast);"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "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.13"
}
},
"nbformat": 4,
"nbformat_minor": 0
}