From cca51905797f4f6752929784080579f7db2bcbb9 Mon Sep 17 00:00:00 2001 From: Taylor Smith Date: Fri, 2 Jun 2017 12:23:05 -0500 Subject: [PATCH 1/2] [ci skip] update readme --- README.md | 52 +++---- doc/examples/quick_start_example.ipynb | 192 ++++--------------------- 2 files changed, 42 insertions(+), 202 deletions(-) diff --git a/README.md b/README.md index dd98d84b2..65ad4ca7d 100644 --- a/README.md +++ b/README.md @@ -22,42 +22,22 @@ from pyramid.arima import auto_arima # this is a dataset from R wineind = np.array([ - 15136, 16733, 20016, 17708, 18019, - 19227, 22893, 23739, 21133, 22591, - 26786, 29740, 15028, 17977, 20008, - 21354, 19498, 22125, 25817, 28779, - 20960, 22254, 27392, 29945, 16933, - 17892, 20533, 23569, 22417, 22084, - 26580, 27454, 24081, 23451, 28991, - 31386, 16896, 20045, 23471, 21747, - 25621, 23859, 25500, 30998, 24475, - 23145, 29701, 34365, 17556, 22077, - 25702, 22214, 26886, 23191, 27831, - 35406, 23195, 25110, 30009, 36242, - 18450, 21845, 26488, 22394, 28057, - 25451, 24872, 33424, 24052, 28449, - 33533, 37351, 19969, 21701, 26249, - 24493, 24603, 26485, 30723, 34569, - 26689, 26157, 32064, 38870, 21337, - 19419, 23166, 28286, 24570, 24001, - 33151, 24878, 26804, 28967, 33311, - 40226, 20504, 23060, 23562, 27562, - 23940, 24584, 34303, 25517, 23494, - 29095, 32903, 34379, 16991, 21109, - 23740, 25552, 21752, 20294, 29009, - 25500, 24166, 26960, 31222, 38641, - 14672, 17543, 25453, 32683, 22449, - 22316, 27595, 25451, 25421, 25288, - 32568, 35110, 16052, 22146, 21198, - 19543, 22084, 23816, 29961, 26773, - 26635, 26972, 30207, 38687, 16974, - 21697, 24179, 23757, 25013, 24019, - 30345, 24488, 25156, 25650, 30923, - 37240, 17466, 19463, 24352, 26805, - 25236, 24735, 29356, 31234, 22724, - 28496, 32857, 37198, 13652, 22784, - 23565, 26323, 23779, 27549, 29660, - 23356] + # Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec + 15136, 16733, 20016, 17708, 18019, 19227, 22893, 23739, 21133, 22591, 26786, 29740, + 15028, 17977, 20008, 21354, 19498, 22125, 25817, 28779, 20960, 22254, 27392, 29945, + 16933, 17892, 20533, 23569, 22417, 22084, 26580, 27454, 24081, 23451, 28991, 31386, + 16896, 20045, 23471, 21747, 25621, 23859, 25500, 30998, 24475, 23145, 29701, 34365, + 17556, 22077, 25702, 22214, 26886, 23191, 27831, 35406, 23195, 25110, 30009, 36242, + 18450, 21845, 26488, 22394, 28057, 25451, 24872, 33424, 24052, 28449, 33533, 37351, + 19969, 21701, 26249, 24493, 24603, 26485, 30723, 34569, 26689, 26157, 32064, 38870, + 21337, 19419, 23166, 28286, 24570, 24001, 33151, 24878, 26804, 28967, 33311, 40226, + 20504, 23060, 23562, 27562, 23940, 24584, 34303, 25517, 23494, 29095, 32903, 34379, + 16991, 21109, 23740, 25552, 21752, 20294, 29009, 25500, 24166, 26960, 31222, 38641, + 14672, 17543, 25453, 32683, 22449, 22316, 27595, 25451, 25421, 25288, 32568, 35110, + 16052, 22146, 21198, 19543, 22084, 23816, 29961, 26773, 26635, 26972, 30207, 38687, + 16974, 21697, 24179, 23757, 25013, 24019, 30345, 24488, 25156, 25650, 30923, 37240, + 17466, 19463, 24352, 26805, 25236, 24735, 29356, 31234, 22724, 28496, 32857, 37198, + 13652, 22784, 23565, 26323, 23779, 27549, 29660, 23356] ).astype(np.float64) # fit many models returning the best one diff --git a/doc/examples/quick_start_example.ipynb b/doc/examples/quick_start_example.ipynb index d3c7a6094..76992e831 100644 --- a/doc/examples/quick_start_example.ipynb +++ b/doc/examples/quick_start_example.ipynb @@ -18,9 +18,7 @@ { "cell_type": "code", "execution_count": 1, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -76,13 +74,12 @@ { "cell_type": "code", "execution_count": 2, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], "source": [ "# this is a dataset from R\n", "wineind = np.array([\n", + " # Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec\n", " 15136, 16733, 20016, 17708, 18019, 19227, 22893, 23739, 21133, 22591, 26786, 29740, \n", " 15028, 17977, 20008, 21354, 19498, 22125, 25817, 28779, 20960, 22254, 27392, 29945, \n", " 16933, 17892, 20533, 23569, 22417, 22084, 26580, 27454, 24081, 23451, 28991, 31386, \n", @@ -113,9 +110,7 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "from pyramid.arima import ARIMA\n", @@ -133,9 +128,7 @@ { "cell_type": "code", "execution_count": 4, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [], "source": [ "fit = ARIMA(order=(1, 1, 1), seasonal_order=None).fit(y=wineind)" @@ -153,9 +146,7 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -221,44 +212,10 @@ " Prob(H) (two-sided): 0.54 Kurtosis: 4.31 \n", "\n", "" - ], - "text/plain": [ - "\n", - "\"\"\"\n", - " Statespace Model Results \n", - "==========================================================================================\n", - "Dep. Variable: y No. Observations: 176\n", - "Model: SARIMAX(1, 1, 2)x(0, 1, 1, 12) Log Likelihood -1527.386\n", - "Date: Fri, 02 Jun 2017 AIC 3066.771\n", - "Time: 11:21:21 BIC 3085.794\n", - "Sample: 0 HQIC 3074.487\n", - " - 176 \n", - "Covariance Type: opg \n", - "==============================================================================\n", - " coef std err z P>|z| [0.025 0.975]\n", - "------------------------------------------------------------------------------\n", - "intercept -100.7446 72.306 -1.393 0.164 -242.462 40.973\n", - "ar.L1 -0.5139 0.390 -1.319 0.187 -1.278 0.250\n", - "ma.L1 -0.0791 0.403 -0.196 0.844 -0.869 0.710\n", - "ma.L2 -0.4438 0.223 -1.988 0.047 -0.881 -0.006\n", - "ma.S.L12 -0.4021 0.054 -7.448 0.000 -0.508 -0.296\n", - "sigma2 7.663e+06 7.3e+05 10.500 0.000 6.23e+06 9.09e+06\n", - "===================================================================================\n", - "Ljung-Box (Q): 48.66 Jarque-Bera (JB): 21.62\n", - "Prob(Q): 0.16 Prob(JB): 0.00\n", - "Heteroskedasticity (H): 1.18 Skew: -0.61\n", - "Prob(H) (two-sided): 0.54 Kurtosis: 4.31\n", - "===================================================================================\n", - "\n", - "Warnings:\n", - "[1] Covariance matrix calculated using the outer product of gradients (complex-step).\n", - "[2] Covariance matrix is singular or near-singular, with condition number 8.15e+14. Standard errors may be unstable.\n", - "\"\"\"" ] }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" + "output_type": "execute_result", + "metadata": {} } ], "source": [ @@ -284,9 +241,7 @@ { "cell_type": "code", "execution_count": 9, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -301,8 +256,8 @@ ] }, "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" + "output_type": "execute_result", + "metadata": {} } ], "source": [ @@ -320,9 +275,7 @@ { "cell_type": "code", "execution_count": 10, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -334,98 +287,11 @@ " " ] }, - "metadata": {}, - "output_type": "display_data" + "output_type": "execute_result", + "metadata": {} }, { - "data": { - "application/javascript": [ - "\n", - "(function(global) {\n", - " function now() {\n", - " return new Date();\n", - " }\n", - "\n", - " if (typeof (window._bokeh_onload_callbacks) === \"undefined\") {\n", - " window._bokeh_onload_callbacks = [];\n", - " }\n", - "\n", - " function run_callbacks() {\n", - " window._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n", - " delete window._bokeh_onload_callbacks\n", - " console.info(\"Bokeh: all callbacks have finished\");\n", - " }\n", - "\n", - " function load_libs(js_urls, callback) {\n", - " window._bokeh_onload_callbacks.push(callback);\n", - " if (window._bokeh_is_loading > 0) {\n", - " console.log(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n", - " return null;\n", - " }\n", - " if (js_urls == null || js_urls.length === 0) {\n", - " run_callbacks();\n", - " return null;\n", - " }\n", - " console.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", - " window._bokeh_is_loading = js_urls.length;\n", - " for (var i = 0; i < js_urls.length; i++) {\n", - " var url = js_urls[i];\n", - " var s = document.createElement('script');\n", - " s.src = url;\n", - " s.async = false;\n", - " s.onreadystatechange = s.onload = function() {\n", - " window._bokeh_is_loading--;\n", - " if (window._bokeh_is_loading === 0) {\n", - " console.log(\"Bokeh: all BokehJS libraries loaded\");\n", - " run_callbacks()\n", - " }\n", - " };\n", - " s.onerror = function() {\n", - " console.warn(\"failed to load library \" + url);\n", - " };\n", - " console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", - " document.getElementsByTagName(\"head\")[0].appendChild(s);\n", - " }\n", - " };\n", - "\n", - " var js_urls = ['https://cdn.pydata.org/bokeh/release/bokeh-0.12.0.min.js', 'https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.0.min.js', 'https://cdn.pydata.org/bokeh/release/bokeh-compiler-0.12.0.min.js'];\n", - "\n", - " var inline_js = [\n", - " function(Bokeh) {\n", - " Bokeh.set_log_level(\"info\");\n", - " },\n", - " \n", - " function(Bokeh) {\n", - " Bokeh.$(\"#a51e80eb-f243-47bc-b27f-f826f0820889\").text(\"BokehJS successfully loaded\");\n", - " },\n", - " function(Bokeh) {\n", - " console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-0.12.0.min.css\");\n", - " Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-0.12.0.min.css\");\n", - " console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.0.min.css\");\n", - " Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.0.min.css\");\n", - " }\n", - " ];\n", - "\n", - " function run_inline_js() {\n", - " for (var i = 0; i < inline_js.length; i++) {\n", - " inline_js[i](window.Bokeh);\n", - " }\n", - " }\n", - "\n", - " if (window._bokeh_is_loading === 0) {\n", - " console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n", - " run_inline_js();\n", - " } else {\n", - " load_libs(js_urls, function() {\n", - " console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n", - " run_inline_js();\n", - " });\n", - " }\n", - "}(this));" - ] - }, - "metadata": {}, - "output_type": "display_data" + "metadata": {} } ], "source": [ @@ -436,9 +302,7 @@ { "cell_type": "code", "execution_count": 11, - "metadata": { - "collapsed": false - }, + "metadata": {}, "outputs": [ { "data": { @@ -535,21 +399,17 @@ "" ] }, - "metadata": {}, - "output_type": "display_data" + "output_type": "execute_result", + "metadata": {} }, { "data": { "text/html": [ "

<Bokeh Notebook handle for In[11]>

" - ], - "text/plain": [ - "" ] }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" + "output_type": "execute_result", + "metadata": {} } ], "source": [ @@ -593,11 +453,11 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": true - }, + "metadata": {}, "outputs": [], - "source": [] + "source": [ + "" + ] } ], "metadata": { @@ -610,7 +470,7 @@ "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2 + "version": 2.0 }, "file_extension": ".py", "mimetype": "text/x-python", @@ -622,4 +482,4 @@ }, "nbformat": 4, "nbformat_minor": 0 -} +} \ No newline at end of file From 26f3fd38a216051c5304d7a17fbc6de122268a3c Mon Sep 17 00:00:00 2001 From: Taylor Smith Date: Fri, 2 Jun 2017 12:37:05 -0500 Subject: [PATCH 2/2] Augment trace msg --- doc/examples/quick_start_example.ipynb | 277 +++++++++++++++++++++---- pyramid/arima/auto.py | 21 +- 2 files changed, 252 insertions(+), 46 deletions(-) diff --git a/doc/examples/quick_start_example.ipynb b/doc/examples/quick_start_example.ipynb index 76992e831..7e94dc0b9 100644 --- a/doc/examples/quick_start_example.ipynb +++ b/doc/examples/quick_start_example.ipynb @@ -18,7 +18,9 @@ { "cell_type": "code", "execution_count": 1, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ { "name": "stdout", @@ -74,7 +76,9 @@ { "cell_type": "code", "execution_count": 2, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "# this is a dataset from R\n", @@ -110,7 +114,9 @@ { "cell_type": "code", "execution_count": 3, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "from pyramid.arima import ARIMA\n", @@ -128,7 +134,9 @@ { "cell_type": "code", "execution_count": 4, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "fit = ARIMA(order=(1, 1, 1), seasonal_order=None).fit(y=wineind)" @@ -146,8 +154,70 @@ { "cell_type": "code", "execution_count": 5, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fitting ARIMA: order=(1, 1, 2) seasonal_order=(0, 1, 1, 12); AIC=3066.771, BIC=3085.794\n", + "Fitting ARIMA: order=(1, 1, 1) seasonal_order=(0, 1, 1, 12); AIC=3066.811, BIC=3082.663\n", + "Fitting ARIMA: order=(1, 1, 1) seasonal_order=(1, 1, 1, 12); AIC=3067.666, BIC=3086.688\n", + "Fitting ARIMA: order=(1, 1, 2) seasonal_order=(1, 1, 1, 12); AIC=3068.086, BIC=3090.280\n", + "Fitting ARIMA: order=(1, 1, 2) seasonal_order=(0, 1, 2, 12); AIC=3067.766, BIC=3089.959\n", + "Fitting ARIMA: order=(1, 1, 3) seasonal_order=(0, 1, 1, 12); AIC=3068.842, BIC=3091.036\n", + "Fitting ARIMA: order=(1, 1, 1) seasonal_order=(2, 1, 1, 12); AIC=3070.302, BIC=3092.495\n", + "Fitting ARIMA: order=(1, 1, 1) seasonal_order=(1, 1, 2, 12); AIC=3068.757, BIC=3090.951\n", + "Fitting ARIMA: order=(1, 1, 1) seasonal_order=(0, 1, 2, 12); AIC=3067.669, BIC=3086.692\n", + "Fitting ARIMA: order=(1, 1, 3) seasonal_order=(1, 1, 1, 12); AIC=3070.214, BIC=3095.578\n", + "Fitting ARIMA: order=(1, 1, 2) seasonal_order=(2, 1, 1, 12); AIC=3069.948, BIC=3095.312\n", + "Fitting ARIMA: order=(2, 1, 1) seasonal_order=(0, 1, 1, 12); AIC=3067.485, BIC=3086.508\n", + "Fitting ARIMA: order=(1, 1, 2) seasonal_order=(1, 1, 2, 12); AIC=3069.717, BIC=3095.081\n", + "Fitting ARIMA: order=(2, 1, 1) seasonal_order=(1, 1, 1, 12); AIC=3068.672, BIC=3090.865\n", + "Fitting ARIMA: order=(1, 1, 1) seasonal_order=(2, 1, 2, 12); AIC=3070.103, BIC=3095.467\n", + "Fitting ARIMA: order=(2, 1, 1) seasonal_order=(0, 1, 2, 12); AIC=3068.503, BIC=3090.696\n", + "Fitting ARIMA: order=(1, 1, 3) seasonal_order=(0, 1, 2, 12); AIC=3069.854, BIC=3095.218\n", + "Fitting ARIMA: order=(2, 1, 2) seasonal_order=(0, 1, 1, 12); AIC=3068.701, BIC=3090.895\n", + "Fitting ARIMA: order=(2, 1, 1) seasonal_order=(2, 1, 1, 12); AIC=3070.641, BIC=3096.005\n", + "Fitting ARIMA: order=(2, 1, 2) seasonal_order=(1, 1, 1, 12); AIC=3070.025, BIC=3095.389\n", + "Fitting ARIMA: order=(1, 1, 3) seasonal_order=(2, 1, 1, 12); AIC=3072.048, BIC=3100.582\n", + "Fitting ARIMA: order=(1, 1, 3) seasonal_order=(1, 1, 2, 12); AIC=3071.758, BIC=3100.293\n", + "Fitting ARIMA: order=(1, 1, 2) seasonal_order=(2, 1, 2, 12); AIC=3069.992, BIC=3098.526\n", + "Fitting ARIMA: order=(2, 1, 1) seasonal_order=(1, 1, 2, 12); AIC=3070.503, BIC=3095.866\n", + "Fitting ARIMA: order=(2, 1, 3) seasonal_order=(0, 1, 1, 12); AIC=3070.642, BIC=3096.006\n", + "Fitting ARIMA: order=(2, 1, 2) seasonal_order=(0, 1, 2, 12); AIC=3069.726, BIC=3095.090\n", + "Fitting ARIMA: order=(2, 1, 3) seasonal_order=(1, 1, 1, 12); AIC=3071.523, BIC=3100.057\n", + "Fitting ARIMA: order=(2, 1, 2) seasonal_order=(2, 1, 1, 12); AIC=3071.901, BIC=3100.435\n", + "Fitting ARIMA: order=(2, 1, 2) seasonal_order=(1, 1, 2, 12); AIC=3071.683, BIC=3100.218\n", + "Fitting ARIMA: order=(1, 1, 3) seasonal_order=(2, 1, 2, 12); AIC=3072.042, BIC=3103.747\n", + "Fitting ARIMA: order=(3, 1, 1) seasonal_order=(0, 1, 1, 12); AIC=3069.393, BIC=3091.586\n", + "Fitting ARIMA: order=(3, 1, 1) seasonal_order=(1, 1, 1, 12); AIC=3070.667, BIC=3096.031\n", + "Fitting ARIMA: order=(2, 1, 1) seasonal_order=(2, 1, 2, 12); AIC=3071.047, BIC=3099.581\n", + "Fitting ARIMA: order=(3, 1, 1) seasonal_order=(0, 1, 2, 12); AIC=3070.436, BIC=3095.800\n", + "Fitting ARIMA: order=(2, 1, 3) seasonal_order=(0, 1, 2, 12); AIC=3071.600, BIC=3100.135\n", + "Fitting ARIMA: order=(3, 1, 2) seasonal_order=(0, 1, 1, 12); AIC=nan, BIC=nan\n", + "Fitting ARIMA: order=(3, 1, 2) seasonal_order=(0, 1, 2, 12); AIC=nan, BIC=nan\n", + "Fitting ARIMA: order=(3, 1, 2) seasonal_order=(1, 1, 1, 12); AIC=nan, BIC=nan\n", + "Fitting ARIMA: order=(3, 1, 2) seasonal_order=(1, 1, 2, 12); AIC=nan, BIC=nan\n", + "Fitting ARIMA: order=(3, 1, 2) seasonal_order=(2, 1, 1, 12); AIC=nan, BIC=nan\n", + "Fitting ARIMA: order=(3, 1, 2) seasonal_order=(2, 1, 2, 12); AIC=nan, BIC=nan\n", + "Fitting ARIMA: order=(3, 1, 3) seasonal_order=(0, 1, 1, 12); AIC=3072.626, BIC=3101.160\n", + "Fitting ARIMA: order=(3, 1, 1) seasonal_order=(2, 1, 1, 12); AIC=3072.617, BIC=3101.151\n", + "Fitting ARIMA: order=(3, 1, 1) seasonal_order=(1, 1, 2, 12); AIC=3072.395, BIC=3100.930\n", + "Fitting ARIMA: order=(2, 1, 2) seasonal_order=(2, 1, 2, 12); AIC=3072.043, BIC=3103.748\n", + "Fitting ARIMA: order=(3, 1, 3) seasonal_order=(1, 1, 1, 12); AIC=3073.539, BIC=3105.244\n", + "Fitting ARIMA: order=(2, 1, 3) seasonal_order=(1, 1, 2, 12); AIC=3073.554, BIC=3105.259\n", + "Fitting ARIMA: order=(2, 1, 3) seasonal_order=(2, 1, 1, 12); AIC=3073.517, BIC=3105.222\n", + "Fitting ARIMA: order=(3, 1, 3) seasonal_order=(0, 1, 2, 12); AIC=3073.580, BIC=3105.285\n", + "Fitting ARIMA: order=(2, 1, 3) seasonal_order=(2, 1, 2, 12); AIC=3074.239, BIC=3109.114\n", + "Fitting ARIMA: order=(3, 1, 1) seasonal_order=(2, 1, 2, 12); AIC=3072.623, BIC=3104.328\n", + "Fitting ARIMA: order=(3, 1, 3) seasonal_order=(2, 1, 1, 12); AIC=3075.530, BIC=3110.405\n", + "Fitting ARIMA: order=(3, 1, 3) seasonal_order=(1, 1, 2, 12); AIC=3075.561, BIC=3110.437\n", + "Fitting ARIMA: order=(3, 1, 3) seasonal_order=(2, 1, 2, 12); AIC=3077.492, BIC=3115.537\n" + ] + }, { "data": { "text/html": [ @@ -163,7 +233,7 @@ " Date: Fri, 02 Jun 2017 AIC 3066.771 \n", "\n", "\n", - " Time: 11:21:21 BIC 3085.794 \n", + " Time: 12:36:29 BIC 3085.794 \n", "\n", "\n", " Sample: 0 HQIC 3074.487 \n", @@ -212,17 +282,51 @@ " Prob(H) (two-sided): 0.54 Kurtosis: 4.31 \n", "\n", "" + ], + "text/plain": [ + "\n", + "\"\"\"\n", + " Statespace Model Results \n", + "==========================================================================================\n", + "Dep. Variable: y No. Observations: 176\n", + "Model: SARIMAX(1, 1, 2)x(0, 1, 1, 12) Log Likelihood -1527.386\n", + "Date: Fri, 02 Jun 2017 AIC 3066.771\n", + "Time: 12:36:29 BIC 3085.794\n", + "Sample: 0 HQIC 3074.487\n", + " - 176 \n", + "Covariance Type: opg \n", + "==============================================================================\n", + " coef std err z P>|z| [0.025 0.975]\n", + "------------------------------------------------------------------------------\n", + "intercept -100.7446 72.306 -1.393 0.164 -242.462 40.973\n", + "ar.L1 -0.5139 0.390 -1.319 0.187 -1.278 0.250\n", + "ma.L1 -0.0791 0.403 -0.196 0.844 -0.869 0.710\n", + "ma.L2 -0.4438 0.223 -1.988 0.047 -0.881 -0.006\n", + "ma.S.L12 -0.4021 0.054 -7.448 0.000 -0.508 -0.296\n", + "sigma2 7.663e+06 7.3e+05 10.500 0.000 6.23e+06 9.09e+06\n", + "===================================================================================\n", + "Ljung-Box (Q): 48.66 Jarque-Bera (JB): 21.62\n", + "Prob(Q): 0.16 Prob(JB): 0.00\n", + "Heteroskedasticity (H): 1.18 Skew: -0.61\n", + "Prob(H) (two-sided): 0.54 Kurtosis: 4.31\n", + "===================================================================================\n", + "\n", + "Warnings:\n", + "[1] Covariance matrix calculated using the outer product of gradients (complex-step).\n", + "[2] Covariance matrix is singular or near-singular, with condition number 8.15e+14. Standard errors may be unstable.\n", + "\"\"\"" ] }, - "output_type": "execute_result", - "metadata": {} + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ "from pyramid.arima import auto_arima\n", "\n", "fit = auto_arima(wineind, start_p=1, start_q=1, max_p=3, max_q=3, m=12,\n", - " start_P=0, seasonal=True, n_jobs=-1, d=1, D=1,\n", + " start_P=0, seasonal=True, n_jobs=-1, d=1, D=1, trace=True,\n", " error_action='ignore', # don't want to know if an order does not work\n", " suppress_warnings=True) # don't want convergence warnings\n", "\n", @@ -240,8 +344,10 @@ }, { "cell_type": "code", - "execution_count": 9, - "metadata": {}, + "execution_count": 6, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -255,9 +361,9 @@ " 16734.91315808])" ] }, - "execution_count": 9, - "output_type": "execute_result", - "metadata": {} + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ @@ -274,8 +380,10 @@ }, { "cell_type": "code", - "execution_count": 10, - "metadata": {}, + "execution_count": 7, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -283,15 +391,102 @@ "\n", "
\n", " \n", - " Loading BokehJS ...\n", + " Loading BokehJS ...\n", "
" ] }, - "output_type": "execute_result", - "metadata": {} + "metadata": {}, + "output_type": "display_data" }, { - "metadata": {} + "data": { + "application/javascript": [ + "\n", + "(function(global) {\n", + " function now() {\n", + " return new Date();\n", + " }\n", + "\n", + " if (typeof (window._bokeh_onload_callbacks) === \"undefined\") {\n", + " window._bokeh_onload_callbacks = [];\n", + " }\n", + "\n", + " function run_callbacks() {\n", + " window._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n", + " delete window._bokeh_onload_callbacks\n", + " console.info(\"Bokeh: all callbacks have finished\");\n", + " }\n", + "\n", + " function load_libs(js_urls, callback) {\n", + " window._bokeh_onload_callbacks.push(callback);\n", + " if (window._bokeh_is_loading > 0) {\n", + " console.log(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n", + " return null;\n", + " }\n", + " if (js_urls == null || js_urls.length === 0) {\n", + " run_callbacks();\n", + " return null;\n", + " }\n", + " console.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", + " window._bokeh_is_loading = js_urls.length;\n", + " for (var i = 0; i < js_urls.length; i++) {\n", + " var url = js_urls[i];\n", + " var s = document.createElement('script');\n", + " s.src = url;\n", + " s.async = false;\n", + " s.onreadystatechange = s.onload = function() {\n", + " window._bokeh_is_loading--;\n", + " if (window._bokeh_is_loading === 0) {\n", + " console.log(\"Bokeh: all BokehJS libraries loaded\");\n", + " run_callbacks()\n", + " }\n", + " };\n", + " s.onerror = function() {\n", + " console.warn(\"failed to load library \" + url);\n", + " };\n", + " console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", + " document.getElementsByTagName(\"head\")[0].appendChild(s);\n", + " }\n", + " };\n", + "\n", + " var js_urls = ['https://cdn.pydata.org/bokeh/release/bokeh-0.12.0.min.js', 'https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.0.min.js', 'https://cdn.pydata.org/bokeh/release/bokeh-compiler-0.12.0.min.js'];\n", + "\n", + " var inline_js = [\n", + " function(Bokeh) {\n", + " Bokeh.set_log_level(\"info\");\n", + " },\n", + " \n", + " function(Bokeh) {\n", + " Bokeh.$(\"#f70c02e8-0cb9-476a-ae7e-b303861dadc3\").text(\"BokehJS successfully loaded\");\n", + " },\n", + " function(Bokeh) {\n", + " console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-0.12.0.min.css\");\n", + " Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-0.12.0.min.css\");\n", + " console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.0.min.css\");\n", + " Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.0.min.css\");\n", + " }\n", + " ];\n", + "\n", + " function run_inline_js() {\n", + " for (var i = 0; i < inline_js.length; i++) {\n", + " inline_js[i](window.Bokeh);\n", + " }\n", + " }\n", + "\n", + " if (window._bokeh_is_loading === 0) {\n", + " console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n", + " run_inline_js();\n", + " } else {\n", + " load_libs(js_urls, function() {\n", + " console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n", + " run_inline_js();\n", + " });\n", + " }\n", + "}(this));" + ] + }, + "metadata": {}, + "output_type": "display_data" } ], "source": [ @@ -301,8 +496,10 @@ }, { "cell_type": "code", - "execution_count": 11, - "metadata": {}, + "execution_count": 8, + "metadata": { + "collapsed": false + }, "outputs": [ { "data": { @@ -310,7 +507,7 @@ "\n", "\n", "
\n", - "
\n", + "
\n", "
\n", "" ] }, - "output_type": "execute_result", - "metadata": {} + "metadata": {}, + "output_type": "display_data" }, { "data": { "text/html": [ - "

<Bokeh Notebook handle for In[11]>

" + "

<Bokeh Notebook handle for In[8]>

" + ], + "text/plain": [ + "" ] }, - "output_type": "execute_result", - "metadata": {} + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ @@ -453,11 +654,11 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], - "source": [ - "" - ] + "source": [] } ], "metadata": { @@ -470,7 +671,7 @@ "language_info": { "codemirror_mode": { "name": "ipython", - "version": 2.0 + "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", @@ -482,4 +683,4 @@ }, "nbformat": 4, "nbformat_minor": 0 -} \ No newline at end of file +} diff --git a/pyramid/arima/auto.py b/pyramid/arima/auto.py index f739f4dd9..bc9ccf442 100644 --- a/pyramid/arima/auto.py +++ b/pyramid/arima/auto.py @@ -413,14 +413,11 @@ def generator(): def _fit_arima(x, xreg, order, seasonal_order, start_params, trend, method, transparams, solver, maxiter, disp, callback, fit_params, suppress_warnings, trace, error_action): - if trace: - print('Fitting ARIMA: %s' % _fmt_order_info(order, seasonal_order)) - try: - return ARIMA(order=order, seasonal_order=seasonal_order, start_params=start_params, - trend=trend, method=method, transparams=transparams, - solver=solver, maxiter=maxiter, disp=disp, - callback=callback, suppress_warnings=suppress_warnings)\ + fit = ARIMA(order=order, seasonal_order=seasonal_order, start_params=start_params, + trend=trend, method=method, transparams=transparams, + solver=solver, maxiter=maxiter, disp=disp, + callback=callback, suppress_warnings=suppress_warnings)\ .fit(x, exogenous=xreg, **fit_params) # for non-stationarity errors, return None @@ -430,8 +427,16 @@ def _fit_arima(x, xreg, order, seasonal_order, start_params, trend, method, tran elif error_action == 'raise': raise v # otherwise it's 'ignore' - return None + fit = None + + # do trace + if trace: + print('Fit ARIMA: %s; AIC=%.3f, BIC=%.3f' + % (_fmt_order_info(order, seasonal_order), + fit.aic() if fit is not None else np.nan, + fit.bic() if fit is not None else np.nan)) + return fit def _fmt_order_info(order, seasonal_order): return 'order=(%i, %i, %i)%s' \