More Related Content Similar to Time Series Analysis by JavaScript LL matsuri 2013 Similar to Time Series Analysis by JavaScript LL matsuri 2013 (20) Time Series Analysis by JavaScript LL matsuri 2013 9. Sample
{"time":"2013-01-02T08:54:31.000Z","cpu":0.6283,"memory":0.4427}
{"time":"2013-01-02T08:54:22.000Z","cpu":0.6103,"memory":0.6494}
{"time":"2013-01-02T08:54:24.000Z","cpu":0.6096,"memory":0.4888}
{"time":"2013-01-02T08:54:25.000Z","cpu":0.6811,"memory":0.641}
{"time":"2013-01-02T08:54:14.000Z","cpu":0.6028,"memory":0.6452}
{"time":"2013-01-02T08:54:06.000Z","cpu":0.5565,"memory":0.4346}
{"time":"2013-01-02T08:54:10.000Z","cpu":0.4161,"memory":0.358}
{"time":"2013-01-02T08:55:01.000Z","cpu":0.5256,"memory":0.5969}
{"time":"2013-01-02T08:55:47.000Z","cpu":0.6145,"memory":0.3213}
{"time":"2013-01-02T08:56:24.000Z","cpu":0.6896,"memory":0.5109}
{"time":"2013-01-02T08:56:35.000Z","cpu":0.443,"memory":0.633}
{"time":"2013-01-02T08:56:11.000Z","cpu":0.4746,"memory":0.4777}
{"time":"2013-01-02T08:56:42.000Z","cpu":0.503,"memory":0.5732}
{"time":"2013-01-02T08:56:38.000Z","cpu":0.4731,"memory":0.4024}
{"time":"2013-01-02T08:57:01.000Z","cpu":0.405,"memory":0.5203}
{"time":"2013-01-02T08:57:54.000Z","cpu":0.4496,"memory":0.5324}
{"time":"2013-01-02T08:57:04.000Z","cpu":0.3528,"memory":0.3145}
{"time":"2013-01-02T08:57:49.000Z","cpu":0.6659,"memory":0.4285}
{"time":"2013-01-02T08:57:19.000Z","cpu":0.3237,"memory":0.6979}
{"time":"2013-01-02T08:58:31.000Z","cpu":0.4045,"memory":0.6581}
{"time":"2013-01-02T08:58:45.000Z","cpu":0.3134,"memory":0.3261}
{"time":"2013-01-02T08:58:44.000Z","cpu":0.4382,"memory":0.419}
{"time":"2013-01-02T08:58:38.000Z","cpu":0.6983,"memory":0.3493}
{"time":"2013-01-02T08:58:34.000Z","cpu":0.6645,"memory":0.6272}
{"time":"2013-01-02T08:59:54.000Z","cpu":0.604,"memory":0.3287}
{"time":"2013-01-02T08:59:25.000Z","cpu":0.574,"memory":0.4856}
{"time":"2013-01-02T08:59:19.000Z","cpu":0.4775,"memory":0.3998}
{"time":"2013-01-02T08:59:34.000Z","cpu":0.5047,"memory":0.6702}
{"time":"2013-01-02T08:59:46.000Z","cpu":0.672,"memory":0.5021}
{"time":"2013-01-02T08:59:53.000Z","cpu":0.3278,"memory":0.6679}
{"time":"2013-01-02T08:59:29.000Z","cpu":0.4494,"memory":0.3319}
9
13. Summarize
keyvalues = {}
for d in data
time = new Date(d.time.getFullYear(), d.time.getMonth(),
d.time.getDate(), d.time.getHours(), d.time.getMinutes())
keyvalues[time] = [] unless keyvalues[time]
keyvalues[time].push d
aggregated = []
for time, values of keyvalues
obj = {time: time, cpu: 0, memory: 0}
for d in values
obj.cpu += d.cpu
obj.memory += d.memory
aggregated.push obj
console.log aggregated
13
17. Series.js
✓Providing utility methods for time series
✓sum, sum square, mean, median, quantile
✓variance, standard devience, covariance, correlation
✓auto covariance, auto correlation
✓Providing aggregation
✓minutes, hour, day, week, month, year
✓Coming soon
✓auto regression, spectrum
✓moving average, holt-winters, exponential moving average
17
18. Series.js APIs example
# class methods
Series.sum([1,2,3,4,5]) #=> 15
Series.mean([1,2,3,4,5]) #=> 3
# instance methods
s = new Series()
s.put d for d in [1,2,3,4,5]
s.mean() #=> 3
18
19. Series.js APIs example
# accessor
Series.y((d)-> d.v).sum([{v:1},{v:2},{v:3},{v:4},{v:
5}]) #=> 15
s = new Series().y((d)-> d.v)
s.put d for d in [{v:1}, {v:2}, {v:3}, {v:4}, {v:5}]
s.mean() #=> 3
19
20. Series.js APIs example
# aggregation
data = [{t: 1, v:1}, {t: 1, v:2}, {t:2, v:3}, {t:2, v:4},
{t:1, v:5}]
Series.y((d)-> d.v).aggregation(Series.sum).key((d)-
> d.t)(data)
#=> [{t:1, v: 8}, {t: 2, v: 7}]
20
21. Sample
{"time":"2013-01-02T08:54:31.000Z","cpu":0.6283,"memory":0.4427}
{"time":"2013-01-02T08:54:22.000Z","cpu":0.6103,"memory":0.6494}
{"time":"2013-01-02T08:54:24.000Z","cpu":0.6096,"memory":0.4888}
{"time":"2013-01-02T08:54:25.000Z","cpu":0.6811,"memory":0.641}
{"time":"2013-01-02T08:54:14.000Z","cpu":0.6028,"memory":0.6452}
{"time":"2013-01-02T08:54:06.000Z","cpu":0.5565,"memory":0.4346}
{"time":"2013-01-02T08:54:10.000Z","cpu":0.4161,"memory":0.358}
{"time":"2013-01-02T08:55:01.000Z","cpu":0.5256,"memory":0.5969}
{"time":"2013-01-02T08:55:47.000Z","cpu":0.6145,"memory":0.3213}
{"time":"2013-01-02T08:56:24.000Z","cpu":0.6896,"memory":0.5109}
{"time":"2013-01-02T08:56:35.000Z","cpu":0.443,"memory":0.633}
{"time":"2013-01-02T08:56:11.000Z","cpu":0.4746,"memory":0.4777}
{"time":"2013-01-02T08:56:42.000Z","cpu":0.503,"memory":0.5732}
{"time":"2013-01-02T08:56:38.000Z","cpu":0.4731,"memory":0.4024}
{"time":"2013-01-02T08:57:01.000Z","cpu":0.405,"memory":0.5203}
{"time":"2013-01-02T08:57:54.000Z","cpu":0.4496,"memory":0.5324}
{"time":"2013-01-02T08:57:04.000Z","cpu":0.3528,"memory":0.3145}
{"time":"2013-01-02T08:57:49.000Z","cpu":0.6659,"memory":0.4285}
{"time":"2013-01-02T08:57:19.000Z","cpu":0.3237,"memory":0.6979}
{"time":"2013-01-02T08:58:31.000Z","cpu":0.4045,"memory":0.6581}
{"time":"2013-01-02T08:58:45.000Z","cpu":0.3134,"memory":0.3261}
{"time":"2013-01-02T08:58:44.000Z","cpu":0.4382,"memory":0.419}
{"time":"2013-01-02T08:58:38.000Z","cpu":0.6983,"memory":0.3493}
{"time":"2013-01-02T08:58:34.000Z","cpu":0.6645,"memory":0.6272}
{"time":"2013-01-02T08:59:54.000Z","cpu":0.604,"memory":0.3287}
{"time":"2013-01-02T08:59:25.000Z","cpu":0.574,"memory":0.4856}
{"time":"2013-01-02T08:59:19.000Z","cpu":0.4775,"memory":0.3998}
{"time":"2013-01-02T08:59:34.000Z","cpu":0.5047,"memory":0.6702}
{"time":"2013-01-02T08:59:46.000Z","cpu":0.672,"memory":0.5021}
{"time":"2013-01-02T08:59:53.000Z","cpu":0.3278,"memory":0.6679}
{"time":"2013-01-02T08:59:29.000Z","cpu":0.4494,"memory":0.3319}
21
22. Summarize with Series.js
Series.y((d)-> d.cpu).aggregation(Series.sum)
.minute((d)-> d.time)(data)
#=> [{ t: 'Sun Jan 13 2013 23:29:00 GMT+0900 (JST)', y: 2.0095 },
{ t: 'Sun Jan 13 2013 23:30:00 GMT+0900 (JST)', y: 3.4370 },
{ t: 'Sun Jan 13 2013 23:31:00 GMT+0900 (JST)', y: 1.58180 },
{ t: 'Sun Jan 13 2013 23:32:00 GMT+0900 (JST)', y: 2.2742 },
{ t: 'Sun Jan 13 2013 23:33:00 GMT+0900 (JST)', y: 3.4541 },
{ t: 'Sun Jan 13 2013 23:34:00 GMT+0900 (JST)', y: 4.6035 },
{ t: 'Sun Jan 13 2013 23:35:00 GMT+0900 (JST)', y: 2.1165 },
{ t: 'Sun Jan 13 2013 23:36:00 GMT+0900 (JST)', y: 1.6177 },
22