{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# TimeSeries Analysis and Plotting\n", "\n", "Daru allows for a host of functions for analyzing and visualizing time series data. In this notebook we'll go over a few with examples.\n", "\n", "For details on using statistical analysis functions offered by daru see [this blog post]()." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "data": { "application/javascript": [ "if(window['d3'] === undefined ||\n", " window['Nyaplot'] === undefined){\n", " var path = {\"d3\":\"http://d3js.org/d3.v3.min\",\"downloadable\":\"http://cdn.rawgit.com/domitry/d3-downloadable/master/d3-downloadable\"};\n", "\n", "\n", "\n", " var shim = {\"d3\":{\"exports\":\"d3\"},\"downloadable\":{\"exports\":\"downloadable\"}};\n", "\n", " require.config({paths: path, shim:shim});\n", "\n", "\n", "require(['d3'], function(d3){window['d3']=d3;console.log('finished loading d3');require(['downloadable'], function(downloadable){window['downloadable']=downloadable;console.log('finished loading downloadable');\n", "\n", "\tvar script = d3.select(\"head\")\n", "\t .append(\"script\")\n", "\t .attr(\"src\", \"http://cdn.rawgit.com/domitry/Nyaplotjs/master/release/nyaplot.js\")\n", "\t .attr(\"async\", true);\n", "\n", "\tscript[0][0].onload = script[0][0].onreadystatechange = function(){\n", "\n", "\n", "\t var event = document.createEvent(\"HTMLEvents\");\n", "\t event.initEvent(\"load_nyaplot\",false,false);\n", "\t window.dispatchEvent(event);\n", "\t console.log('Finished loading Nyaplotjs');\n", "\n", "\t};\n", "\n", "\n", "});});\n", "}\n" ], "text/plain": [ "\"if(window['d3'] === undefined ||\\n window['Nyaplot'] === undefined){\\n var path = {\\\"d3\\\":\\\"http://d3js.org/d3.v3.min\\\",\\\"downloadable\\\":\\\"http://cdn.rawgit.com/domitry/d3-downloadable/master/d3-downloadable\\\"};\\n\\n\\n\\n var shim = {\\\"d3\\\":{\\\"exports\\\":\\\"d3\\\"},\\\"downloadable\\\":{\\\"exports\\\":\\\"downloadable\\\"}};\\n\\n require.config({paths: path, shim:shim});\\n\\n\\nrequire(['d3'], function(d3){window['d3']=d3;console.log('finished loading d3');require(['downloadable'], function(downloadable){window['downloadable']=downloadable;console.log('finished loading downloadable');\\n\\n\\tvar script = d3.select(\\\"head\\\")\\n\\t .append(\\\"script\\\")\\n\\t .attr(\\\"src\\\", \\\"http://cdn.rawgit.com/domitry/Nyaplotjs/master/release/nyaplot.js\\\")\\n\\t .attr(\\\"async\\\", true);\\n\\n\\tscript[0][0].onload = script[0][0].onreadystatechange = function(){\\n\\n\\n\\t var event = document.createEvent(\\\"HTMLEvents\\\");\\n\\t event.initEvent(\\\"load_nyaplot\\\",false,false);\\n\\t window.dispatchEvent(event);\\n\\t console.log('Finished loading Nyaplotjs');\\n\\n\\t};\\n\\n\\n});});\\n}\\n\"" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "true" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "require 'distribution'\n", "require 'daru'\n", "require 'gnuplotrb'" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
Daru::Vector:89556300 size: 1000
nil
2012-04-02T00:00:00+00:000.9679512581213839
2012-04-03T00:00:00+00:000.022459748645852044
2012-04-04T00:00:00+00:00-0.6274818246927284
2012-04-05T00:00:00+00:00-0.3967321369721622
2012-04-06T00:00:00+00:00-0.3640815613462954
2012-04-07T00:00:00+00:00-0.2655176999615409
2012-04-08T00:00:00+00:000.45448990105777315
2012-04-09T00:00:00+00:00-1.455655143209679
2012-04-10T00:00:00+00:00-0.09323505444387158
2012-04-11T00:00:00+00:00-0.6752958700462365
2012-04-12T00:00:00+00:000.6619095714438166
2012-04-13T00:00:00+00:00-0.19145774779908523
2012-04-14T00:00:00+00:00-0.6263870072028367
2012-04-15T00:00:00+00:000.5536198902207046
2012-04-16T00:00:00+00:001.196208119637418
2012-04-17T00:00:00+00:001.628417216135157
2012-04-18T00:00:00+00:00-1.0560283956421732
2012-04-19T00:00:00+00:00-0.02865231840955376
2012-04-20T00:00:00+00:001.1618475815249387
2012-04-21T00:00:00+00:00-0.20794226211471037
2012-04-22T00:00:00+00:000.9184260477372104
2012-04-23T00:00:00+00:002.0659449521627065
2012-04-24T00:00:00+00:001.1790764197995465
2012-04-25T00:00:00+00:00-1.3483676256628216
2012-04-26T00:00:00+00:000.35278495620537664
2012-04-27T00:00:00+00:00-0.5574390609364652
2012-04-28T00:00:00+00:000.898034418947359
2012-04-29T00:00:00+00:001.9099858187147065
2012-04-30T00:00:00+00:000.07235717115859852
2012-05-01T00:00:00+00:001.290704778668627
2012-05-02T00:00:00+00:000.37114466610068964
2012-05-03T00:00:00+00:00-0.11335398274711217
......
2014-12-27T00:00:00+00:000.3143039329138767
" ], "text/plain": [ "\n", "#\n", " nil\n", "2012-04-02T00:00:00+ 0.9679512581213839\n", "2012-04-03T00:00:00+ 0.022459748645852044\n", "2012-04-04T00:00:00+ -0.6274818246927284\n", "2012-04-05T00:00:00+ -0.3967321369721622\n", "2012-04-06T00:00:00+ -0.3640815613462954\n", "2012-04-07T00:00:00+ -0.2655176999615409\n", "2012-04-08T00:00:00+ 0.45448990105777315\n", "2012-04-09T00:00:00+ -1.455655143209679\n", "2012-04-10T00:00:00+ -0.09323505444387158\n", "2012-04-11T00:00:00+ -0.6752958700462365\n", "2012-04-12T00:00:00+ 0.6619095714438166\n", "2012-04-13T00:00:00+ -0.19145774779908523\n", "2012-04-14T00:00:00+ -0.6263870072028367\n", "2012-04-15T00:00:00+ 0.5536198902207046\n", "2012-04-16T00:00:00+ 1.196208119637418\n", "2012-04-17T00:00:00+ 1.628417216135157\n", "2012-04-18T00:00:00+ -1.0560283956421732\n", " ... ...\n" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rng = Distribution::Normal.rng\n", "\n", "index = Daru::DateTimeIndex.date_range(:start => '2012-4-2', :periods => 1000, :freq => 'D')\n", "vector = Daru::Vector.new(1000.times.map {rng.call}, index: index)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
Daru::Vector:83472220 size: 1000
nil
2012-04-02T00:00:00+00:000.9679512581213839
2012-04-03T00:00:00+00:000.990411006767236
2012-04-04T00:00:00+00:000.36292918207450764
2012-04-05T00:00:00+00:00-0.03380295489765456
2012-04-06T00:00:00+00:00-0.39788451624394994
2012-04-07T00:00:00+00:00-0.6634022162054909
2012-04-08T00:00:00+00:00-0.20891231514771774
2012-04-09T00:00:00+00:00-1.6645674583573966
2012-04-10T00:00:00+00:00-1.7578025128012682
2012-04-11T00:00:00+00:00-2.4330983828475046
2012-04-12T00:00:00+00:00-1.771188811403688
2012-04-13T00:00:00+00:00-1.9626465592027733
2012-04-14T00:00:00+00:00-2.58903356640561
2012-04-15T00:00:00+00:00-2.0354136761849055
2012-04-16T00:00:00+00:00-0.8392055565474876
2012-04-17T00:00:00+00:000.7892116595876695
2012-04-18T00:00:00+00:00-0.26681673605450373
2012-04-19T00:00:00+00:00-0.29546905446405747
2012-04-20T00:00:00+00:000.8663785270608813
2012-04-21T00:00:00+00:000.6584362649461709
2012-04-22T00:00:00+00:001.5768623126833812
2012-04-23T00:00:00+00:003.6428072648460876
2012-04-24T00:00:00+00:004.821883684645634
2012-04-25T00:00:00+00:003.4735160589828125
2012-04-26T00:00:00+00:003.8263010151881893
2012-04-27T00:00:00+00:003.268861954251724
2012-04-28T00:00:00+00:004.166896373199084
2012-04-29T00:00:00+00:006.07688219191379
2012-04-30T00:00:00+00:006.149239363072389
2012-05-01T00:00:00+00:007.439944141741016
2012-05-02T00:00:00+00:007.811088807841705
2012-05-03T00:00:00+00:007.697734825094593
......
2014-12-27T00:00:00+00:00-50.324192577321014
" ], "text/plain": [ "\n", "#\n", " nil\n", "2012-04-02T00:00:00+ 0.9679512581213839\n", "2012-04-03T00:00:00+ 0.990411006767236\n", "2012-04-04T00:00:00+ 0.36292918207450764\n", "2012-04-05T00:00:00+ -0.03380295489765456\n", "2012-04-06T00:00:00+ -0.39788451624394994\n", "2012-04-07T00:00:00+ -0.6634022162054909\n", "2012-04-08T00:00:00+ -0.20891231514771774\n", "2012-04-09T00:00:00+ -1.6645674583573966\n", "2012-04-10T00:00:00+ -1.7578025128012682\n", "2012-04-11T00:00:00+ -2.4330983828475046\n", "2012-04-12T00:00:00+ -1.771188811403688\n", "2012-04-13T00:00:00+ -1.9626465592027733\n", "2012-04-14T00:00:00+ -2.58903356640561\n", "2012-04-15T00:00:00+ -2.0354136761849055\n", "2012-04-16T00:00:00+ -0.8392055565474876\n", "2012-04-17T00:00:00+ 0.7892116595876695\n", "2012-04-18T00:00:00+ -0.26681673605450373\n", " ... ...\n" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "vector = vector.cumsum" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Daru::Vector has a bunch of functions for performing useful statistical analysis of time series data. See this blog post for a comprehensive overview of the statistics functions available on Daru::Vector.\n", "\n", "For example, you can calculate the rolling mean of a Vector with the `#rolling_mean` function and pass in the loopback length as the argument:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
Daru::Vector:89221690 size: 10
nil
2014-12-18T00:00:00+00:00-48.63936545993331
2014-12-19T00:00:00+00:00-48.78082245412963
2014-12-20T00:00:00+00:00-48.94126415692764
2014-12-21T00:00:00+00:00-49.089789216908876
2014-12-22T00:00:00+00:00-49.23217144486508
2014-12-23T00:00:00+00:00-49.36591686347972
2014-12-24T00:00:00+00:00-49.4965672112104
2014-12-25T00:00:00+00:00-49.57885611565935
2014-12-26T00:00:00+00:00-49.6638742352537
2014-12-27T00:00:00+00:00-49.74601918836437
" ], "text/plain": [ "\n", "#\n", " nil\n", "2014-12-18T00:00:00+ -48.63936545993331\n", "2014-12-19T00:00:00+ -48.78082245412963\n", "2014-12-20T00:00:00+ -48.94126415692764\n", "2014-12-21T00:00:00+ -49.089789216908876\n", "2014-12-22T00:00:00+ -49.23217144486508\n", "2014-12-23T00:00:00+ -49.36591686347972\n", "2014-12-24T00:00:00+ -49.4965672112104\n", "2014-12-25T00:00:00+ -49.57885611565935\n", "2014-12-26T00:00:00+ -49.6638742352537\n", "2014-12-27T00:00:00+ -49.74601918836437\n" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rolling = vector.rolling_mean 60\n", "rolling.tail" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Using the [gnuplotRB gem](), it is also possible to directly plot the vector and its rolling mean as line plots on the same graph:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/svg+xml": [ "\n", "\n", "\n", "\n", "Gnuplot\n", "Produced by GNUPLOT 5.0 patchlevel rc2 \n", "\n", "\n", "\n", "\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t \n", "\t \n", "\t\n", "\t\n", "\t \n", "\t \n", "\t\n", "\n", "\n", "\n", "\n", "\t\t\n", "\t\t-70\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t-60\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t-50\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t-40\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t-30\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t-20\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t-10\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t 0\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t 10\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t01\n", "\t\n", "\t\n", "\t\tApr\n", "\t\n", "\t\n", "\t\t2012\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t01\n", "\t\n", "\t\n", "\t\tJul\n", "\t\n", "\t\n", "\t\t2012\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t01\n", "\t\n", "\t\n", "\t\tOct\n", "\t\n", "\t\n", "\t\t2012\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t01\n", "\t\n", "\t\n", "\t\tJan\n", "\t\n", "\t\n", "\t\t2013\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t01\n", "\t\n", "\t\n", "\t\tApr\n", "\t\n", "\t\n", "\t\t2013\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t01\n", "\t\n", "\t\n", "\t\tJul\n", "\t\n", "\t\n", "\t\t2013\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t01\n", "\t\n", "\t\n", "\t\tOct\n", "\t\n", "\t\n", "\t\t2013\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t01\n", "\t\n", "\t\n", "\t\tJan\n", "\t\n", "\t\n", "\t\t2014\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t01\n", "\t\n", "\t\n", "\t\tApr\n", "\t\n", "\t\n", "\t\t2014\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t01\n", "\t\n", "\t\n", "\t\tJul\n", "\t\n", "\t\n", "\t\t2014\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t01\n", "\t\n", "\t\n", "\t\tOct\n", "\t\n", "\t\n", "\t\t2014\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t01\n", "\t\n", "\t\n", "\t\tJan\n", "\t\n", "\t\n", "\t\t2015\n", "\t\n", "\n", "\n", "\n", "\n", "\t\n", "\n", "\n", "\tVector\n", "\n", "\t\n", "\t\tVector\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\tRolling Mean\n", "\n", "\t\n", "\t\tRolling Mean\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\t\n", "\n", "\n", "\n", "\n", "\n" ], "text/plain": [ "# \"time\", :timefmt => \"%Y-%m-%dT%H:%M:%S\", :format_x => \"%d\\\\n%b\\\\n%Y\"], @datasets=Hamster::Vector[#, @options=Hamster::Hash[:with => \"lines\", :title => \"Vector\", :using => \"1:2\"]>, #, @options=Hamster::Hash[:with => \"lines\", :title => \"Rolling Mean\", :using => \"1:2\"]>], @cmd=\"plot \">" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "GnuplotRB::Plot.new([vector, with: 'lines', title: 'Vector'], [rolling, with: 'lines', title: 'Rolling Mean'])" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
Daru::DataFrame:79698410 rows: 1000 cols: 3
abc
2012-04-02T00:00:00+00:001.06161434531864242.32662214964357440.800149709055792
2012-04-03T00:00:00+00:000.12026688538504984-1.4504577526844833-1.5388358524911092
2012-04-04T00:00:00+00:000.254272848641540650.13889056199985192-1.3185311292454616
2012-04-05T00:00:00+00:00-0.98550172811174690.9599929644102919-0.06439155830088318
2012-04-06T00:00:00+00:001.2655032740550267-0.165456867678462771.2928485625454482
2012-04-07T00:00:00+00:00-0.424226004740012930.75840603103461380.3821816460314443
2012-04-08T00:00:00+00:00-1.1513439006831760.50805593667415-0.7715409166526194
2012-04-09T00:00:00+00:001.0912599199241675-0.005145772637998991-1.5678298940523423
2012-04-10T00:00:00+00:00-0.5047629277222628-0.22939317888277080.3232569177826808
2012-04-11T00:00:00+00:00-1.57646368010881650.169815232084743-0.639404370665545
2012-04-12T00:00:00+00:000.60145625702183271.29155331934143120.8853050742535737
2012-04-13T00:00:00+00:00-0.80078376263757470.59929333036312070.23395149626064318
2012-04-14T00:00:00+00:00-0.5299940902338399-0.71331179855625560.6165175207413627
2012-04-15T00:00:00+00:00-1.9946303094697215-0.20445812051182370.6771987060372404
2012-04-16T00:00:00+00:000.61842390883388341.50799641117719950.10776292460877393
2012-04-17T00:00:00+00:000.83236239063919760.10034871135135542-0.5136728725376927
2012-04-18T00:00:00+00:000.01286756851656907-0.8558774364266106-0.055980047247675926
2012-04-19T00:00:00+00:000.71617280131357160.9918779781177881-0.1575490720665611
2012-04-20T00:00:00+00:000.6040247255379995-0.14112190384703183-1.4682887231669144
2012-04-21T00:00:00+00:000.676529502082872-2.15529391006578131.0856411670212278
2012-04-22T00:00:00+00:000.5286804807866233-1.4110403152836055-0.6552554892142989
2012-04-23T00:00:00+00:001.9816648319971175-0.4121922929588636-0.634750036062993
2012-04-24T00:00:00+00:000.067795617901871360.6698057472955746-0.002108120154503972
2012-04-25T00:00:00+00:00-2.11503321337132280.7803197096200907-1.24725638253146
2012-04-26T00:00:00+00:00-0.174663782929011550.0154561475825515950.17530022953772142
2012-04-27T00:00:00+00:00-0.047363922542546566-0.3422004085257192-0.60786037531044
2012-04-28T00:00:00+00:000.7014623590611182-0.321721196525226740.27950429450967074
2012-04-29T00:00:00+00:00-0.51526920948459710.52779337698477410.38844682209511927
2012-04-30T00:00:00+00:000.092526672243533091.1305145168292131.0972521225096232
2012-05-01T00:00:00+00:00-0.164871772429381280.26241287649123896-0.5481012155160905
2012-05-02T00:00:00+00:00-0.012434541914728222-0.7850010899276540.10035857307925267
2012-05-03T00:00:00+00:00-0.5128929539120438-0.047910903631057045-0.4370187065453966
............
2014-12-27T00:00:00+00:00-0.5667844582713343-0.7474991238031873-0.04629196201863243
" ], "text/plain": [ "\n", "#\n", " a b c \n", "2012-04-02 1.06161434 2.32662214 0.80014970 \n", "2012-04-03 0.12026688 -1.4504577 -1.5388358 \n", "2012-04-04 0.25427284 0.13889056 -1.3185311 \n", "2012-04-05 -0.9855017 0.95999296 -0.0643915 \n", "2012-04-06 1.26550327 -0.1654568 1.29284856 \n", "2012-04-07 -0.4242260 0.75840603 0.38218164 \n", "2012-04-08 -1.1513439 0.50805593 -0.7715409 \n", "2012-04-09 1.09125991 -0.0051457 -1.5678298 \n", "2012-04-10 -0.5047629 -0.2293931 0.32325691 \n", "2012-04-11 -1.5764636 0.16981523 -0.6394043 \n", "2012-04-12 0.60145625 1.29155331 0.88530507 \n", "2012-04-13 -0.8007837 0.59929333 0.23395149 \n", "2012-04-14 -0.5299940 -0.7133117 0.61651752 \n", "2012-04-15 -1.9946303 -0.2044581 0.67719870 \n", "2012-04-16 0.61842390 1.50799641 0.10776292 \n", " ... ... ... ... \n" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = Daru::DataFrame.new({\n", " a: 1000.times.map {rng.call}, \n", " b: 1000.times.map {rng.call}, \n", " c: 1000.times.map {rng.call}\n", "}, index: index)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
Daru::DataFrame:90682160 rows: 1000 cols: 3
abc
2012-04-02T00:00:00+00:001.06161434531864242.32662214964357440.800149709055792
2012-04-03T00:00:00+00:001.18188123070369230.8761643969590911-0.7386861434353172
2012-04-04T00:00:00+00:001.4361540793452331.015054958958943-2.057217272680779
2012-04-05T00:00:00+00:000.45065235123348611.9750479233692348-2.1216088309816623
2012-04-06T00:00:00+00:001.71615562528851281.8095910556907722-0.8287602684362141
2012-04-07T00:00:00+00:001.29192962054849982.567997086725386-0.4465786224047698
2012-04-08T00:00:00+00:000.140585719865323753.076053023399536-1.2181195390573891
2012-04-09T00:00:00+00:001.23184563978949123.070907250761537-2.7859494331097316
2012-04-10T00:00:00+00:000.72708271206722842.841514071878766-2.462692515327051
2012-04-11T00:00:00+00:00-0.84938096804158813.011329303963509-3.102096885992596
2012-04-12T00:00:00+00:00-0.247924711019755444.30288262330494-2.2167918117390224
2012-04-13T00:00:00+00:00-1.04870847365733024.902175953668062-1.9828403154783791
2012-04-14T00:00:00+00:00-1.578702563891174.188864155111806-1.3663227947370165
2012-04-15T00:00:00+00:00-3.5733328733608923.984406034599982-0.689124088699776
2012-04-16T00:00:00+00:00-2.9549089645270085.492402445777182-0.5813611640910021
2012-04-17T00:00:00+00:00-2.12254657388781045.592751157128537-1.0950340366286948
2012-04-18T00:00:00+00:00-2.10967900537124154.736873720701926-1.1510140838763707
2012-04-19T00:00:00+00:00-1.39350620405766985.728751698819714-1.3085631559429318
2012-04-20T00:00:00+00:00-0.78948147851967035.587629794972682-2.776851879109846
2012-04-21T00:00:00+00:00-0.112951976436798333.432335884906901-1.6912107120886182
2012-04-22T00:00:00+00:000.4157285043498252.0212955696232955-2.346466201302917
2012-04-23T00:00:00+00:002.39739333634694241.609103276664432-2.98121623736591
2012-04-24T00:00:00+00:002.46518895424881372.2789090239600065-2.983324357520414
2012-04-25T00:00:00+00:000.35015574087749093.059228733580097-4.230580740051874
2012-04-26T00:00:00+00:000.175491957948479353.0746848811626486-4.0552805105141525
2012-04-27T00:00:00+00:000.12812803540593282.7324844726369295-4.663140885824593
2012-04-28T00:00:00+00:000.8295903944670512.4107632761117026-4.383636591314922
2012-04-29T00:00:00+00:000.314321184982453872.9385566530964766-3.9951897692198024
2012-04-30T00:00:00+00:000.406847857225986934.06907116992569-2.8979376467101794
2012-05-01T00:00:00+00:000.241976084796605654.331484046416929-3.4460388622262697
2012-05-02T00:00:00+00:000.229541542881877423.5464829564892746-3.345680289147017
2012-05-03T00:00:00+00:00-0.283351411030166373.4985720528582176-3.7826989956924137
............
2014-12-27T00:00:00+00:00-5.22316074868795232.266132923750325.648229057252015
" ], "text/plain": [ "\n", "#\n", " a b c \n", "2012-04-02 1.06161434 2.32662214 0.80014970 \n", "2012-04-03 1.18188123 0.87616439 -0.7386861 \n", "2012-04-04 1.43615407 1.01505495 -2.0572172 \n", "2012-04-05 0.45065235 1.97504792 -2.1216088 \n", "2012-04-06 1.71615562 1.80959105 -0.8287602 \n", "2012-04-07 1.29192962 2.56799708 -0.4465786 \n", "2012-04-08 0.14058571 3.07605302 -1.2181195 \n", "2012-04-09 1.23184563 3.07090725 -2.7859494 \n", "2012-04-10 0.72708271 2.84151407 -2.4626925 \n", "2012-04-11 -0.8493809 3.01132930 -3.1020968 \n", "2012-04-12 -0.2479247 4.30288262 -2.2167918 \n", "2012-04-13 -1.0487084 4.90217595 -1.9828403 \n", "2012-04-14 -1.5787025 4.18886415 -1.3663227 \n", "2012-04-15 -3.5733328 3.98440603 -0.6891240 \n", "2012-04-16 -2.9549089 5.49240244 -0.5813611 \n", " ... ... ... ... \n" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = df.cumsum" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/svg+xml": [ "\n", "\n", "\n", "\n", "Gnuplot\n", "Produced by GNUPLOT 5.0 patchlevel rc2 \n", "\n", "\n", "\n", "\n", "\n", "\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t\n", "\t \n", "\t \n", "\t\n", "\t\n", "\t \n", "\t \n", "\t\n", "\n", "\n", "\t\n", "\t\tRolling sums\n", "\t\n", "\n", "\n", "\n", "\n", "\t\t\n", "\t\t-1400\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t-1200\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t-1000\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t-800\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t-600\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t-400\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t-200\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t 0\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t 200\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t 400\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t01\n", "\t\n", "\t\n", "\t\tApr\n", "\t\n", "\t\n", "\t\t2012\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t01\n", "\t\n", "\t\n", "\t\tJul\n", "\t\n", "\t\n", "\t\t2012\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t01\n", "\t\n", "\t\n", "\t\tOct\n", "\t\n", "\t\n", "\t\t2012\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t01\n", "\t\n", "\t\n", "\t\tJan\n", "\t\n", "\t\n", "\t\t2013\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t01\n", "\t\n", "\t\n", "\t\tApr\n", "\t\n", "\t\n", "\t\t2013\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t01\n", "\t\n", "\t\n", "\t\tJul\n", "\t\n", "\t\n", "\t\t2013\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t01\n", "\t\n", "\t\n", "\t\tOct\n", "\t\n", "\t\n", "\t\t2013\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t01\n", "\t\n", "\t\n", "\t\tJan\n", "\t\n", "\t\n", "\t\t2014\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t01\n", "\t\n", "\t\n", "\t\tApr\n", "\t\n", "\t\n", "\t\t2014\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t01\n", "\t\n", "\t\n", "\t\tJul\n", "\t\n", "\t\n", "\t\t2014\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t01\n", "\t\n", "\t\n", "\t\tOct\n", "\t\n", "\t\n", "\t\t2014\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t01\n", "\t\n", "\t\n", "\t\tJan\n", "\t\n", "\t\n", "\t\t2015\n", "\t\n", "\n", "\n", "\n", "\n", "\t\n", "\n", "\n", "\ta\n", "\n", "\t\n", "\t\ta\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\t\n", "\n", "\n", "\n", "\t\t\n", "\t\t-500\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t 0\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t 500\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t 1000\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t 1500\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t 2000\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t01\n", "\t\n", "\t\n", "\t\tApr\n", "\t\n", "\t\n", "\t\t2012\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t01\n", "\t\n", "\t\n", "\t\tJul\n", "\t\n", "\t\n", "\t\t2012\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t01\n", "\t\n", "\t\n", "\t\tOct\n", "\t\n", "\t\n", "\t\t2012\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t01\n", "\t\n", "\t\n", "\t\tJan\n", "\t\n", "\t\n", "\t\t2013\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t01\n", "\t\n", "\t\n", "\t\tApr\n", "\t\n", "\t\n", "\t\t2013\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t01\n", "\t\n", "\t\n", "\t\tJul\n", "\t\n", "\t\n", "\t\t2013\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t01\n", "\t\n", "\t\n", "\t\tOct\n", "\t\n", "\t\n", "\t\t2013\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t01\n", "\t\n", "\t\n", "\t\tJan\n", "\t\n", "\t\n", "\t\t2014\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t01\n", "\t\n", "\t\n", "\t\tApr\n", "\t\n", "\t\n", "\t\t2014\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t01\n", "\t\n", "\t\n", "\t\tJul\n", "\t\n", "\t\n", "\t\t2014\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t01\n", "\t\n", "\t\n", "\t\tOct\n", "\t\n", "\t\n", "\t\t2014\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t01\n", "\t\n", "\t\n", "\t\tJan\n", "\t\n", "\t\n", "\t\t2015\n", "\t\n", "\n", "\n", "\n", "\n", "\t\n", "\n", "\n", "\tb\n", "\n", "\t\n", "\t\tb\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\t\n", "\n", "\n", "\n", "\t\t\n", "\t\t-600\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t-400\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t-200\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t 0\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t 200\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t 400\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t 600\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t 800\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t01\n", "\t\n", "\t\n", "\t\tApr\n", "\t\n", "\t\n", "\t\t2012\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t01\n", "\t\n", "\t\n", "\t\tJul\n", "\t\n", "\t\n", "\t\t2012\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t01\n", "\t\n", "\t\n", "\t\tOct\n", "\t\n", "\t\n", "\t\t2012\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t01\n", "\t\n", "\t\n", "\t\tJan\n", "\t\n", "\t\n", "\t\t2013\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t01\n", "\t\n", "\t\n", "\t\tApr\n", "\t\n", "\t\n", "\t\t2013\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t01\n", "\t\n", "\t\n", "\t\tJul\n", "\t\n", "\t\n", "\t\t2013\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t01\n", "\t\n", "\t\n", "\t\tOct\n", "\t\n", "\t\n", "\t\t2013\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t01\n", "\t\n", "\t\n", "\t\tJan\n", "\t\n", "\t\n", "\t\t2014\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t01\n", "\t\n", "\t\n", "\t\tApr\n", "\t\n", "\t\n", "\t\t2014\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t01\n", "\t\n", "\t\n", "\t\tJul\n", "\t\n", "\t\n", "\t\t2014\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t01\n", "\t\n", "\t\n", "\t\tOct\n", "\t\n", "\t\n", "\t\t2014\n", "\t\n", "\n", "\n", "\t\t\n", "\t\t01\n", "\t\n", "\t\n", "\t\tJan\n", "\t\n", "\t\n", "\t\t2015\n", "\t\n", "\n", "\n", "\n", "\n", "\t\n", "\n", "\n", "\tc\n", "\n", "\t\n", "\t\tc\n", "\t\n", "\n", "\n", "\t\n", "\t\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\t\n", "\n", "\n", "\n", "\n", "\n" ], "text/plain": [ "# \"time\", :timefmt => \"%Y-%m-%dT%H:%M:%S\", :format_x => \"%d\\\\n%b\\\\n%Y\"], @datasets=Hamster::Vector[#, @options=Hamster::Hash[:with => \"lines\", :title => :a, :using => \"1:2\"]>], @cmd=\"plot \">, # \"time\", :timefmt => \"%Y-%m-%dT%H:%M:%S\", :format_x => \"%d\\\\n%b\\\\n%Y\"], @datasets=Hamster::Vector[#, @options=Hamster::Hash[:with => \"lines\", :title => :b, :using => \"1:2\"]>], @cmd=\"plot \">, # \"time\", :timefmt => \"%Y-%m-%dT%H:%M:%S\", :format_x => \"%d\\\\n%b\\\\n%Y\"], @datasets=Hamster::Vector[#, @options=Hamster::Hash[:with => \"lines\", :title => :c, :using => \"1:2\"]>], @cmd=\"plot \">], @options=Hamster::Hash[:layout => [3, 1], :title => \"Rolling sums\"]>" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rs = df.rolling_sum(60)\n", "plots = []\n", "rs.each_vector_with_index do |vec,n|\n", " plots << GnuplotRB::Plot.new([vec, with: 'lines', title: n])\n", "end\n", "\n", "GnuplotRB::Multiplot.new(*plots, layout: [3,1], title: 'Rolling sums')" ] } ], "metadata": { "kernelspec": { "display_name": "Ruby 2.2.1", "language": "ruby", "name": "ruby" }, "language_info": { "file_extension": "rb", "mimetype": "application/x-ruby", "name": "ruby", "version": "2.2.1" } }, "nbformat": 4, "nbformat_minor": 0 }