Overview

This project is divided into three parts, each presenting a specific time series in which the best forecasting model is built. The parts include:

The selection of a method depends on many factors - the context of the forecast, the relevance of the historical data given, the degree of accuracy, etc. These factors are cross-validated and examine for the potentially greater accuracy model at minimal cost.

R Packages

These are the main packages used for data wrangling, visualization, and graphics. Any other minor packages for analysis will be listed when needed.

# Required R packages
library(tidyverse)
library(fpp2)
library(urca)
library(readxl)
library(lubridate)
library(kableExtra)
library(psych)

Project Summary

Part A explores the common forecasting techniques, namely, Seasonal and Trend decomposition using Loess, Exponential Smoothing and ARIMA modeling. Part B goes a step further and introduces Hybrid Forecasting which produces point estimates by combining the functionality of multiple forecasting techniques. Part C transforms data into a time-base sequence and aggregate based on the hour.

Each part more or less follows the work-flow shown below.

Workflow

PROJECT SECTIONS

Part A – ATM Forecast

Exploratory Analysis

The data set contains cash withdrawals from four (4) different ATMs during the period of 1 May 2009 to 30 April 2010. Once that data is separated to allow each column of the data frame to be a specific ATM, the following exploratory analysis is done.

ATM624Data = read_excel("ATM624Data.xlsx", col_types = c("date", "text", "numeric"))
ATM.new = ATM624Data %>% drop_na() %>% spread(ATM, Cash)
Transformed ATM dataset
DATE ATM1 ATM2 ATM3 ATM4
2009-05-01 96 107 0 776.993423
2009-05-02 82 89 0 524.417959
2009-05-03 85 90 0 792.811362
2009-05-04 90 55 0 908.238457
2009-05-05 99 79 0 52.832103
2009-05-06 88 19 0 52.208454
2009-05-07 8 2 0 55.473609
2009-05-08 104 103 0 558.503251
2009-05-09 87 107 0 904.341359
2009-05-10 93 118 0 879.493588
2009-05-11 86 75 0 274.022340
2009-05-12 111 111 0 396.108347
2009-05-13 75 25 0 274.547188
2009-05-14 6 16 0 16.321159
2009-05-15 102 137 0 852.307037
2009-05-16 73 95 0 379.561703
2009-05-17 92 103 0 31.284953
2009-05-18 82 80 0 491.850577
2009-05-19 86 118 0 83.705480
2009-05-20 73 30 0 128.653781
2009-05-21 20 7 0 14.357590
2009-05-22 100 118 0 815.358321
2009-05-23 93 104 0 758.218587
2009-05-24 90 59 0 601.421108
2009-05-25 94 40 0 906.796873
2009-05-26 98 106 0 502.907894
2009-05-27 73 18 0 88.273138
2009-05-28 10 9 0 35.438336
2009-05-29 97 136 0 338.459425
2009-05-30 102 118 0 4.547996
2009-05-31 85 64 0 122.667745
2009-06-01 85 77 0 150.234945
2009-06-02 108 133 0 721.155281
2009-06-03 94 45 0 443.012568
2009-06-04 14 14 0 17.151720
2009-06-05 3 20 0 14.887695
2009-06-06 96 147 0 740.543155
2009-06-07 109 105 0 1058.083384
2009-06-08 96 132 0 576.183701
2009-06-09 145 93 0 1484.126887
2009-06-10 81 26 0 193.787327
2009-06-11 16 7 0 27.054779
2009-06-12 142 112 0 1190.898921
2009-06-13 NA 91 0 746.495617
2009-06-14 120 72 0 1220.767882
2009-06-15 106 66 0 1021.503529
2009-06-16 NA 82 0 372.623610
2009-06-17 108 24 0 321.272935
2009-06-18 21 NA 0 92.476655
2009-06-19 140 134 0 116.644133
2009-06-20 110 95 0 202.413503
2009-06-21 115 82 0 524.434514
2009-06-22 NA 90 0 80.644354
2009-06-23 108 99 0 64.273589
2009-06-24 66 NA 0 90.636571
2009-06-25 13 3 0 48.046061
2009-06-26 99 117 0 1026.032172
2009-06-27 105 53 0 423.770971
2009-06-28 104 44 0 60.626453
2009-06-29 98 56 0 540.281404
2009-06-30 110 110 0 173.705568
2009-07-01 79 36 0 393.239982
2009-07-02 16 12 0 41.948621
2009-07-03 110 128 0 310.006527
2009-07-04 96 72 0 110.051915
2009-07-05 114 122 0 682.182367
2009-07-06 126 100 0 54.667904
2009-07-07 126 108 0 213.989896
2009-07-08 73 25 0 738.126360
2009-07-09 4 6 0 16.206081
2009-07-10 19 22 0 16.223205
2009-07-11 114 135 0 1050.206528
2009-07-12 98 69 0 438.477361
2009-07-13 97 52 0 546.691592
2009-07-14 114 81 0 858.236420
2009-07-15 78 27 0 446.733514
2009-07-16 19 4 0 94.672035
2009-07-17 102 147 0 644.390623
2009-07-18 94 102 0 568.815899
2009-07-19 108 83 0 704.507042
2009-07-20 91 55 0 571.645285
2009-07-21 86 74 0 479.875501
2009-07-22 78 22 0 418.864062
2009-07-23 16 4 0 27.569130
2009-07-24 114 104 0 834.834363
2009-07-25 115 81 0 910.834075
2009-07-26 108 61 0 468.106927
2009-07-27 102 70 0 768.121660
2009-07-28 129 126 0 1089.167762
2009-07-29 79 33 0 266.898417
2009-07-30 13 7 0 7.110665
2009-07-31 103 126 0 704.192012
2009-08-01 90 92 0 495.350606
2009-08-02 68 81 0 142.638951
2009-08-03 85 49 0 428.560174
2009-08-04 99 146 0 894.969364
2009-08-05 86 79 0 610.290623
2009-08-06 13 37 0 70.613731
2009-08-07 116 136 0 593.570261
2009-08-08 105 111 0 341.601807
2009-08-09 123 78 0 735.035708
2009-08-10 114 57 0 462.773028
2009-08-11 127 106 0 1156.496108
2009-08-12 111 38 0 454.091939
2009-08-13 34 15 0 283.337265
2009-08-14 151 119 0 571.508226
2009-08-15 110 110 0 772.179652
2009-08-16 115 68 0 260.125517
2009-08-17 112 60 0 357.515267
2009-08-18 132 92 0 16.157597
2009-08-19 94 22 0 334.312503
2009-08-20 24 11 0 25.696404
2009-08-21 122 121 0 254.887098
2009-08-22 104 89 0 357.003129
2009-08-23 128 62 0 1245.594280
2009-08-24 120 79 0 917.371157
2009-08-25 174 83 0 592.180082
2009-08-26 96 31 0 412.474975
2009-08-27 13 4 0 82.911171
2009-08-28 121 96 0 996.010226
2009-08-29 133 50 0 103.910375
2009-08-30 118 52 0 1116.915044
2009-08-31 91 56 0 816.847015
2009-09-01 120 104 0 914.493389
2009-09-02 88 27 0 648.209198
2009-09-03 19 13 0 140.515569
2009-09-04 150 107 0 1495.154775
2009-09-05 144 125 0 1301.396344
2009-09-06 121 103 0 779.717193
2009-09-07 105 42 0 744.262278
2009-09-08 133 90 0 200.391803
2009-09-09 109 29 0 854.179084
2009-09-10 18 8 0 50.719369
2009-09-11 1 2 0 7.404799
2009-09-12 105 84 0 1061.192780
2009-09-13 112 62 0 715.021459
2009-09-14 82 77 0 35.444668
2009-09-15 111 78 0 491.884510
2009-09-16 79 25 0 343.496923
2009-09-17 13 8 0 20.714186
2009-09-18 112 113 0 505.717125
2009-09-19 99 71 0 97.325113
2009-09-20 140 94 0 473.570486
2009-09-21 110 59 0 899.773474
2009-09-22 180 89 0 1712.074986
2009-09-23 73 18 0 281.388412
2009-09-24 7 6 0 26.337969
2009-09-25 106 115 0 328.644988
2009-09-26 103 81 0 761.371143
2009-09-27 93 61 0 629.319901
2009-09-28 96 71 0 235.753411
2009-09-29 117 69 0 1195.223181
2009-09-30 80 36 0 782.407474
2009-10-01 14 14 0 108.331743
2009-10-02 120 104 0 846.556566
2009-10-03 91 73 0 576.169344
2009-10-04 96 86 0 441.883927
2009-10-05 74 85 0 319.404846
2009-10-06 108 126 0 154.163484
2009-10-07 73 31 0 543.239375
2009-10-08 13 9 0 124.334415
2009-10-09 93 114 0 449.074910
2009-10-10 94 78 0 614.654064
2009-10-11 76 45 0 219.237855
2009-10-12 111 60 0 945.736417
2009-10-13 88 91 0 9.691243
2009-10-14 76 22 0 696.245755
2009-10-15 9 7 0 8.084283
2009-10-16 87 75 0 845.463546
2009-10-17 105 66 0 212.902683
2009-10-18 78 64 0 9.155135
2009-10-19 67 51 0 46.831421
2009-10-20 90 94 0 30.372376
2009-10-21 68 23 0 400.484974
2009-10-22 9 4 0 61.338241
2009-10-23 78 127 0 428.046952
2009-10-24 74 61 0 1.563260
2009-10-25 74 0 0 9.018826
2009-10-26 60 95 0 50.304215
2009-10-27 75 79 0 313.414359
2009-10-28 61 38 0 626.687136
2009-10-29 9 8 0 5.882076
2009-10-30 90 119 0 77.803024
2009-10-31 86 57 0 337.894871
2009-11-01 86 58 0 211.812232
2009-11-02 79 80 0 690.122884
2009-11-03 90 82 0 596.381877
2009-11-04 80 49 0 65.278483
2009-11-05 21 16 0 77.444454
2009-11-06 93 116 0 43.721410
2009-11-07 104 61 0 964.175255
2009-11-08 109 59 0 834.959599
2009-11-09 88 80 0 636.962626
2009-11-10 96 86 0 927.078614
2009-11-11 70 23 0 75.873055
2009-11-12 15 7 0 43.690550
2009-11-13 73 91 0 621.292501
2009-11-14 94 57 0 312.582041
2009-11-15 108 58 0 825.635396
2009-11-16 73 61 0 413.620440
2009-11-17 87 77 0 194.047355
2009-11-18 75 20 0 345.695900
2009-11-19 10 5 0 32.428111
2009-11-20 92 132 0 655.315200
2009-11-21 87 49 0 638.136824
2009-11-22 74 57 0 15.306757
2009-11-23 73 68 0 299.663010
2009-11-24 93 80 0 626.662127
2009-11-25 66 31 0 601.141158
2009-11-26 18 3 0 64.131249
2009-11-27 99 85 0 562.763323
2009-11-28 94 53 0 317.253589
2009-11-29 136 46 0 1167.264437
2009-11-30 6 2 0 47.365125
2009-12-01 140 113 0 993.777470
2009-12-02 73 22 0 687.196935
2009-12-03 9 5 0 71.147567
2009-12-04 140 112 0 1046.971281
2009-12-05 103 59 0 1009.050230
2009-12-06 110 72 0 288.649516
2009-12-07 90 77 0 591.508331
2009-12-08 135 85 0 230.605915
2009-12-09 67 27 0 578.431798
2009-12-10 12 1 0 70.210639
2009-12-11 109 91 0 580.796406
2009-12-12 84 36 0 149.150820
2009-12-13 92 46 0 403.861263
2009-12-14 84 100 0 124.958721
2009-12-15 118 73 0 230.148897
2009-12-16 68 22 0 19.008453
2009-12-17 14 9 0 128.638640
2009-12-18 90 117 0 327.965321
2009-12-19 92 44 0 532.245673
2009-12-20 93 44 0 877.397771
2009-12-21 85 78 0 662.112869
2009-12-22 93 89 0 300.629002
2009-12-23 70 33 0 667.628261
2009-12-24 13 5 0 14.573322
2009-12-25 90 102 0 660.355296
2009-12-26 91 68 0 510.988823
2009-12-27 102 64 0 164.462091
2009-12-28 97 81 0 748.172762
2009-12-29 42 9 0 174.241405
2009-12-30 2 2 0 20.192725
2009-12-31 14 2 0 100.686543
2010-01-01 132 117 0 985.956884
2010-01-02 108 56 0 597.058060
2010-01-03 120 55 0 468.457250
2010-01-04 120 112 0 856.581158
2010-01-05 90 100 0 684.774261
2010-01-06 48 17 0 381.562058
2010-01-07 15 7 0 152.092362
2010-01-08 86 49 0 271.934402
2010-01-09 109 96 0 135.499645
2010-01-10 115 47 0 1105.018595
2010-01-11 123 107 0 291.765790
2010-01-12 123 93 0 1141.426655
2010-01-13 60 27 0 140.502720
2010-01-14 22 9 0 8.781528
2010-01-15 81 78 0 85.260115
2010-01-16 98 47 0 66.655933
2010-01-17 94 31 0 709.938568
2010-01-18 76 91 0 567.549590
2010-01-19 96 77 0 486.824572
2010-01-20 72 22 0 17.481238
2010-01-21 12 1 0 49.208112
2010-01-22 91 125 0 357.233561
2010-01-23 74 53 0 179.888632
2010-01-24 104 37 0 728.992926
2010-01-25 74 69 0 261.121740
2010-01-26 91 69 0 628.863047
2010-01-27 66 16 0 277.044815
2010-01-28 28 2 0 41.475487
2010-01-29 152 95 0 1574.779330
2010-01-30 97 45 0 669.707653
2010-01-31 100 61 0 979.675944
2010-02-01 85 71 0 426.406008
2010-02-02 123 91 0 153.242692
2010-02-03 46 28 0 274.949921
2010-02-04 38 9 0 136.276358
2010-02-05 138 97 0 454.416950
2010-02-06 74 60 0 458.304270
2010-02-07 85 27 0 112.030628
2010-02-08 78 74 0 417.912276
2010-02-09 123 45 0 10919.761638
2010-02-10 50 26 0 42.438078
2010-02-11 28 2 0 280.043427
2010-02-12 105 73 0 412.318881
2010-02-13 109 48 0 852.837416
2010-02-14 26 9 0 179.702084
2010-02-15 54 25 0 226.047368
2010-02-16 105 58 0 989.195610
2010-02-17 179 110 0 824.916781
2010-02-18 125 94 0 966.610561
2010-02-19 84 25 0 734.220167
2010-02-20 99 101 0 121.332622
2010-02-21 110 77 0 287.931829
2010-02-22 80 6 0 502.748346
2010-02-23 1 3 0 9.752776
2010-02-24 111 99 0 258.138869
2010-02-25 115 86 0 1170.288228
2010-02-26 108 20 0 193.079004
2010-02-27 100 72 0 402.770395
2010-02-28 152 81 0 1275.968167
2010-03-01 90 16 0 819.881512
2010-03-02 4 2 0 26.392615
2010-03-03 128 110 0 893.884507
2010-03-04 87 75 0 360.641557
2010-03-05 84 35 0 859.899389
2010-03-06 69 102 0 381.473089
2010-03-07 112 100 0 9.711205
2010-03-08 62 9 0 601.016953
2010-03-09 4 2 0 32.454958
2010-03-10 94 100 0 553.395793
2010-03-11 102 85 0 572.374702
2010-03-12 98 33 0 218.831558
2010-03-13 88 24 0 828.326828
2010-03-14 123 111 0 630.762176
2010-03-15 55 5 0 339.418304
2010-03-16 4 1 0 31.502210
2010-03-17 92 106 0 486.679944
2010-03-18 88 102 0 335.363138
2010-03-19 92 25 0 340.008595
2010-03-20 92 64 0 291.282267
2010-03-21 117 78 0 46.029410
2010-03-22 73 5 0 201.403616
2010-03-23 3 1 0 9.558300
2010-03-24 85 83 0 877.966103
2010-03-25 88 78 0 778.110791
2010-03-26 76 66 0 707.613494
2010-03-27 93 15 0 351.457835
2010-03-28 116 64 0 711.049107
2010-03-29 68 3 0 502.518192
2010-03-30 19 0 0 23.337569
2010-03-31 127 102 0 492.909936
2010-04-01 93 99 0 405.312584
2010-04-02 97 41 0 818.394331
2010-04-03 102 79 0 152.270800
2010-04-04 109 71 0 281.113528
2010-04-05 68 9 0 470.425772
2010-04-06 4 2 0 2.507317
2010-04-07 105 103 0 414.741223
2010-04-08 79 67 0 719.426783
2010-04-09 90 85 0 811.716825
2010-04-10 87 78 0 889.584209
2010-04-11 92 67 0 616.127547
2010-04-12 63 12 0 61.144354
2010-04-13 3 1 0 27.325671
2010-04-14 103 97 0 767.778153
2010-04-15 80 106 0 326.084093
2010-04-16 80 74 0 825.197816
2010-04-17 84 86 0 383.815025
2010-04-18 81 55 0 195.483454
2010-04-19 88 13 0 711.164653
2010-04-20 3 1 0 29.869011
2010-04-21 100 100 0 556.792330
2010-04-22 69 103 0 386.175335
2010-04-23 85 44 0 165.294181
2010-04-24 85 61 0 5.451815
2010-04-25 109 89 0 542.280602
2010-04-26 74 11 0 403.839336
2010-04-27 4 2 0 13.697331
2010-04-28 96 107 96 348.201061
2010-04-29 82 89 82 44.245345
2010-04-30 85 90 85 482.287107

From the few summary statistics below, each ATM appears to have some discrepancies. Firstly, for ATM1, there is a total record of n = 362, suggesting missing data. This is similar to ATM2, where n = 363. Next, ATM3 results in a mean = 0.72 over 365 days with the range of withdrawal being $0 to $9,600. Moreover, with a mean absolute deviation for ATM3 is 0, this suggests that there is no variation of the data. On the other hand, ATM4 appears to be well-used, with a mean daily withdrawal of $47,400.

Descriptive Statistics of ATM dataset
n mean sd median trimmed mad min max range skew kurtosis se
ATM1 362 83.89 36.66 91.00 86.65 25.20 1.00 180.00 179.0 -0.71 0.19 1.93
ATM2 363 62.58 38.90 67.00 62.24 48.93 0.00 147.00 147.0 -0.03 -1.09 2.04
ATM3 365 0.72 7.94 0.00 0.00 0.00 0.00 96.00 96.0 10.93 118.38 0.42
ATM4 365 474.04 650.94 403.84 416.68 425.80 1.56 10919.76 10918.2 11.39 178.91 34.07

Lastly, with further examination of the data for ATM3 and ATM4, it shows that the number of days withdrawal was made using ATM #3 is only 3 days, explaining the odd summary statistics and the number of outliers in the boxplot below. As for ATM4, there is one particular outlier that is beyond the typical amount of cash withdraw from that ATM.

## [1] "Number of days withdrawal were made using ATM #3 is 3 days."
## [1] "On 2010-02-09, an unexpectly high amount of $1091.98K was withdraw from ATM #4."
par(mfrow = c(1,4))
for (i in 2:5){
  boxplot(
    ATM.new[i], main = sprintf("%s", names(ATM.new)[i]), col = "steelblue2",outcex = 1,
    xlab = sprintf("# of outliers = %d", length(boxplot(ATM.new[i], plot = FALSE)$out)))
}

A view of the time series plot highlights the weekly seasonality, particularly for ATM1 and ATM2. The third time series plot shows the flatline until the even end of April 2010. This flatline may suggest that ATM3 must be newly installed/replaced with data only collected from this machine at the end of April, or it was decommissioned for some time before operating once again. While with ATM4, the outlier is too extreme and uncommon.

ATM624Data %>% drop_na() %>% ggplot(aes(x = DATE, y = Cash, col = ATM)) +
  geom_line(show.legend = FALSE) +
  facet_wrap(~ ATM, ncol = 1, scales = "free_y") +
  labs(title = "ATM Cash Withdrawal", subtitle ="1 May, 2009 to 30 April, 2010",
       x = "Date") +
  scale_y_continuous("Amount of Cash Withdrawal", labels = scales::dollar_format(scale = 0.1, suffix = "K"))

Based on this exploratory analysis, each ATMs exhibited different patterns and will require a few tidying and transformation techniques including missing data treatment. Moreover, forecasting should be conducted on each ATM data sets separately. Thus, the next task will be to estimate missing values and outlier replacements for each ATMs, such that for:

  • ATM1 and ATM2, estimating missing data is done.
  • ATM3 will receive no change due to limited data.
  • ATM4, there will be replacement of outlier.

Data Transformation

The handling of missing data is done by fitting a seasonal model to the data and then interpolate the seasonally adjusted series, before re-seasonalizing. While identifying outliers and suggest reasonable replacements, residuals are identified by fitting a periodic STL decomposition for seasonal data. Residuals are deemed as outliers if they lie outside the range \(\pm 2(q_{0.9} − q_{0.1})\) where \(q_p\) is the p-quantile of the residuals.

The general function tsclean from the forecast package combines both procedures, so it handles both missing values and outliers. It will return a cleaned version of a time series with outliers and missing values replaced by estimated values.

temp = ts(ATM.new %>% select(-DATE))
ATM.ts = temp
for (i in 1:4){
  ATM.ts[,i] = tsclean(ATM.ts[,i])
}

As a result, the summary statistic shows that the missing values from ATM1 and ATM2 have been interpolated, and the outlier from ATM4 was replaced.

describe(ATM.ts)[,-1] %>%
  kable(digits = 2L, caption = "Descriptive Statistics of ATM dataset")  %>%
  kable_styling(bootstrap_options = "striped", full_width = TRUE)
Descriptive Statistics of ATM dataset
n mean sd median trimmed mad min max range skew kurtosis se
ATM1 365 84.15 36.64 91.00 86.93 25.20 1.00 180.00 179.00 -0.72 0.20 1.92
ATM2 365 62.59 38.81 67.00 62.26 48.93 0.00 147.00 147.00 -0.03 -1.09 2.03
ATM3 365 0.72 7.94 0.00 0.00 0.00 0.00 96.00 96.00 10.93 118.38 0.42
ATM4 365 444.76 351.08 402.77 414.35 424.21 1.56 1712.07 1710.51 0.66 -0.10 18.38
ATM.df = reshape2::melt(ATM.ts)
ATM.df = cbind(DATE = seq(as.Date("2009-05-1"), as.Date("2010-04-30"), length.out = 365), ATM.df[,-1])
names(ATM.df) = c("DATE", "ATM", "Cash")

Thus, below is the time series of cash withdrawal from the 4 different ATMs within the period starting 1 May 2009 to 30 April 2010. While there are not many visual differences in the new time series plot for ATM 1-3, the appearance of ATM4 has greatly improved once the extreme outlier was replaced.

ATM.df %>% ggplot(aes(x = DATE, y = Cash, col = ATM)) +
  geom_line(show.legend = FALSE) +
  facet_wrap(~ ATM, ncol = 1, scales = "free_y") +
  labs(title = "ATM Cash Withdrawal", subtitle ="1 May, 2009 to 30 April, 2010",
       x = "Date") +
  scale_y_continuous("Amount of Cash Withdrawal", labels = scales::dollar_format(scale = 0.1, suffix = "K"))

library(gganimate)
ts = ggplot(ATM.df, aes(x = DATE, y = Cash, group = ATM, color = ATM)) +
  geom_line() + geom_point() +
  labs(title = "ATM Cash Withdrawal", subtitle ="1 May, 2009 to 30 April, 2010",
       x = "Date") +
  scale_y_continuous("Amount of Cash Withdrawal",
                     labels = scales::dollar_format(scale = 0.1, suffix = "K")) +
  theme_minimal() + transition_reveal(DATE)

animate(ts, height = 6, width = 9, units = "in", res = 150)
anim_save("atm.gif")
Picture 1

By zooming in and observing the series for a few weeks, there are distinct dips for each of the ATMs. With a month, there are four dips, further emphasizing the weekly seasonality.

df = with(ATM.df, ATM.df[(DATE >= "2009-07-01" & DATE <= "2009-08-31"), ])
ts = ggplot(df, aes(x = DATE, y = Cash, group = ATM, color = ATM)) +
  geom_line() + geom_point() +
  labs(title = "ATM Cash Withdrawal", subtitle ="1 July, 2009 to 31 August, 2009",
       x = "Date") +
  scale_y_continuous("Amount of Cash Withdrawal",
                     labels = scales::dollar_format(scale = 0.1, suffix = "K")) +
  theme_minimal() + transition_reveal(DATE)

animate(ts, height = 6, width = 9, units = "in", res = 150)
anim_save("atm_zoom.gif")
Picture 1

Time Series Features

In the previous sections, the data itself was examined and prep to prevent bias and errors in the forecast. And so, this section will now dive into the time series themselves to examine their characteristics and determine the best modeling technique to forecast future cash withdrawal amount per ATM.

# Transform the dataframe into a time series
temp = ATM.df %>% drop_na() %>% spread(ATM, Cash)
ATM.ts = ts(temp %>% select(-DATE), frequency = 7)

ATM 1

From the time series plot, it is evident that there is seasonality in this set, weekly as previously established. While there is no steady trend over the weeks, there are increasing and decreasing activities over periods. For instance, there is a downwards trend from week 22 to 27. Moreover, the subseries plot highlight that Tuesday tends to have the highest mean of cash withdrawal while Saturday is the lowest. The ACF highlights that the slow decrease in every 7th lags due to the trend. Expanding the lags longer, the autocorrelations are in a “scalloped” shape, further confirming that there is seasonality. From the partial autocorrelation (PACF), there a few significant lags in the beginning, while all other PACF are within the critical limit, suggesting all other lags are autocorrelation. Altogether, the time series plots for ATM1 confirm that it is non-stationary, shows seasonality, and slight trend variations, and will require differencing in the lags to be made into a stationary time series.

ggtsdisplay(ATM.ts[,1], main = "ATM #1 Cash Withdrawal", ylab = "Cash Withdrawal (in hundreds)", xlab = "Week")

ggsubseriesplot(ATM.ts[,1]) +
  labs(title = "ATM #1 Cash Withdrawal", subtitle ="1 May, 2009 to 30 April, 2010",
       x = "Days of the Week") +
  scale_y_continuous("Amount of Cash Withdrawal",
                     labels = scales::dollar_format(scale = 0.1, suffix = "K"))

For this time series subset, it was deemed helpful that the stabilization of the seasonal variability throughout the year may be necessary. Using Box-Cox transformation, the optimal \(\lambda=0.26\). The resulting transformation highlights that the smaller variability was stretched, while the larger variability was diminished.

bct = function(ts, title){
  a = autoplot(ts) +
    labs(title = sprintf("Before: %s", title), x = "Week") +
    scale_y_continuous("Amount of Cash Withdrawal",
                     labels = scales::dollar_format(scale = 0.1, suffix = "K"))
  lambda = BoxCox.lambda(ts)
  at = autoplot(BoxCox(ts, lambda)) +
    labs(title = sprintf("Transformed: %s", title),
         subtitle = sprintf("lambda = %0.2f", lambda),
         y = "Box-Cox Transformed",
         x = "Week")
  gridExtra::grid.arrange(a, at)
}
lambda = BoxCox.lambda(ATM.ts[,1])
bct(ATM.ts[,1], title = "ATM #1 Cash Withdrawal")

At this moment, applying a decomposition to ATM1 is useful to further study time series data, and exploring historical changes over time. The decomposition of the time series into seasonal, trend and irregular components is done using loess, or the STL decomposition.

ATM.ts[,1] %>% stl(s.window = 7, robust = TRUE) %>%
  autoplot()  +
  labs(title = "Seasonal & Trend Decomposition for ATM #1 Time Series", x = "Week")

The decomposition highlights the seasonality component changes drastically from week 36 to week 43. The panel bars indicate that the variation attributed to the trend is much smaller than the seasonal component and consequently only a small part of the variation in the data series.

By considering variations in the combinations of the trend and seasonal components, exponential smoothing methods are not ruled out as a tool for forecasting. This technique will determine a possible model based on the best values in the AICc. It shows that the ETS(A, N, A) model best fits the data for the transformed ATM1, i.e. exponential smoothing with additive error, no trend component, and additive seasonality.

ATM.ts[,1] %>% ets(lambda = lambda, biasadj = TRUE)
## ETS(A,N,A) 
## 
## Call:
##  ets(y = ., lambda = lambda, biasadj = TRUE) 
## 
##   Box-Cox transformation: lambda= 0.2616 
## 
##   Smoothing parameters:
##     alpha = 1e-04 
##     gamma = 0.3513 
## 
##   Initial states:
##     l = 7.9717 
##     s = -4.5094 0.5635 1.0854 0.5711 0.9551 0.5582
##            0.7761
## 
##   sigma:  1.343
## 
##      AIC     AICc      BIC 
## 2379.653 2380.275 2418.652

Note that the Box-Cox transformations were kept because it helped to stabilize the variance of a time series. Differencing can help stabilize the mean of a time series by removing changes in the level of a time series, and therefore reducing trend and seasonality.

## [1] "And so, the number of differences required for time series to be made stationary is 0."
## [1] "While, the number of differences required for time series to be made seasonally stationary is 1."

ARIMA models are capable of modeling a wide range of seasonal and non-seasonal data. The data is non-stationary, with seasonality, so there will be a seasonal difference, D = 1. These also appear to be non-stationary, but differencing is not need due to the transformed data, d = 0. The unit root test resulted in a smaller than the 1% critical value and fell well within the range expected for stationary data. Thus, the differencing of the data has now made it stationary.

tst %>% diff(lag = 7) %>% ur.kpss() %>% summary()
## 
## ####################### 
## # KPSS Unit Root Test # 
## ####################### 
## 
## Test is of type: mu with 5 lags. 
## 
## Value of test-statistic is: 0.0153 
## 
## Critical value for a significance level of: 
##                 10pct  5pct 2.5pct  1pct
## critical values 0.347 0.463  0.574 0.739
ggtsdisplay(diff(tst, lag = 7),
            main = "ATM #1 Cash Withdrawal",
            ylab = "Cash Withdrawal",
            xlab = "Week")

The aim now is to find an appropriate ARIMA model based on the ACF and PACF. Ignoring one significant spike in each plot that is just outside the limits, and not in the first few lags, the ACF plot is sinusoidal decaying. From the non-seasonal component of the ACF, there are small significant spikes at lag 1 and 6, and a larger one at lag 7. While with the seasonal component, there are none beyond lag 7. This suggests q > 1 and Q = 1. The PACF plot is also sinusoidal decaying, but there is no change in the non-seasonal and seasonal components when multiple differencing was performed. This could suggest that p = 0, and P = 0.

An \(ARIMA(p, d, q)(P, D, Q)_m\) model is where p/P = order of the autoregressive part, d/D = degree of first differencing involved, q/Q = order of the moving average part, and m = number of observations. Altogether, possible models should have the sequence similar to ARIMA(0,0,>1)(0,1,1)[7].

To confirm, the auto.arima() function to determine are all determined by minimizing the information criteria. The suggested model is ARIMA(0,0,2)(0,1,1)[7], which will be used since the deduction by observation was very close.

ATM.ts[,1] %>% auto.arima(lambda = lambda, biasadj = TRUE)
## Series: . 
## ARIMA(0,0,2)(0,1,1)[7] 
## Box Cox transformation: lambda= 0.2615708 
## 
## Coefficients:
##          ma1      ma2     sma1
##       0.1126  -0.1094  -0.6418
## s.e.  0.0524   0.0520   0.0432
## 
## sigma^2 estimated as 1.764:  log likelihood=-609.99
## AIC=1227.98   AICc=1228.09   BIC=1243.5

Therefore, the proposed models that might be suitable for fitting ATM1 include:

Technique Proposed Model
Forecasting with Decomposition STL Decomposition
Forecasting with Exponential Smoothing ETS(A, N, A)
Forecasting with ARIMA ARIMA(0,0,2)(0,1,1)[7]

ATM 2

From the time series plot, it is evident that there is seasonality in this set, weekly as previously established. However, in this case, there is no steady trend over the year. Moreover, the subseries plot highlight that Sunday tends to have the highest mean of cash withdrawal while Saturday is the lowest. The expansion of ACF lags highlights that the autocorrelations are in a “scalloped” shape, further confirming that there is seasonality. From the partial autocorrelation (PACF), there a few significant lags in the beginning, while all other PACF are within the critical limit. Altogether, the time series plots for ATM2 confirms that it is non-stationary, has seasonality variation, but no trends and will require differencing in the lags to be made into a stationary time series.

ggtsdisplay(ATM.ts[,2], main = "ATM #2 Cash Withdrawal", ylab = "Cash Withdrawal (in hundreds)", xlab = "Week")

ggsubseriesplot(ATM.ts[,2]) +
  labs(title = "ATM #2 Cash Withdrawal", subtitle ="1 May, 2009 to 30 April, 2010",
       x = "Days of the Week") +
  scale_y_continuous("Amount of Cash Withdrawal",
                     labels = scales::dollar_format(scale = 0.1, suffix = "K"))

For this time series subset, it was considered helpful that the stabilization of the seasonal variability throughout the year may be necessary. Using Box-Cox transformation, the optimal \(\lambda=0.72\). The resulting transformation highlights that there are still two peculiar spikes that are large even after transformation.

lambda = BoxCox.lambda(ATM.ts[,2])
bct(ATM.ts[,2], title = "ATM #2 Cash Withdrawal")

At this moment, applying a decomposition to ATM2 is useful to further study time series data, and exploring historical changes over time. The decomposition of the transformed time series is done using STL decomposition.

ATM.ts[,2] %>% stl(s.window = 7, robust = TRUE) %>%
  autoplot()  +
  labs(title = "Seasonal & Trend Decomposition for ATM #2 Time Series", x = "Week")

The decomposition highlights the seasonality component changes drastically from week 40 to week 43, quite similar to ATM1. The panel bar indicates the trend is much smaller than the seasonal component and consequently only a very small part of the variation in the data series, so it was not considered to be influential.

By considering variations in the seasonal components, exponential smoothing methods are not ruled out as a tool for forecasting. This technique will determine a possible model based on the best values in the information criterion. It shows that the ETS(A, N, A) model best fits the data for the ATM2, i.e. exponential smoothing with additive error, no trend component, and additive seasonality.

ATM.ts[,2] %>% ets(lambda = lambda, biasadj = TRUE)
## ETS(A,N,A) 
## 
## Call:
##  ets(y = ., lambda = lambda, biasadj = TRUE) 
## 
##   Box-Cox transformation: lambda= 0.7243 
## 
##   Smoothing parameters:
##     alpha = 1e-04 
##     gamma = 0.3852 
## 
##   Initial states:
##     l = 26.7912 
##     s = -17.8422 -13.3191 10.8227 1.8426 4.2781 5.7994
##            8.4185
## 
##   sigma:  8.5054
## 
##      AIC     AICc      BIC 
## 3727.060 3727.682 3766.059

Differencing can help stabilize the mean of a time series by removing changes in the level of a time series, and therefore reducing seasonality.

## [1] "And so, the number of differences required for time series to be made stationary is 1."
## [1] "While, the number of differences required for time series to be made seasonally stationary is 1."

ARIMA models are capable of modeling a wide range of seasonal and non-seasonal data. The data is non-stationary, with seasonality, so there will be a seasonal difference, D = 1. These also appear to be non-stationary, but differencing is not need due to the transformed data, d = 1. The unit root test resulted in a smaller than the 1% critical value and fell well within the range expected for stationary data. Thus, the differencing of the data has now made it stationary. However, manipulating the differencing, either differencing in the seasonal or non-seasonal component still resulted in the stationary data. Therefore, d and D can be either 0 or 1.

tst %>% diff(lag = 7, difference = 1) %>% ur.kpss() %>% summary()
## 
## ####################### 
## # KPSS Unit Root Test # 
## ####################### 
## 
## Test is of type: mu with 5 lags. 
## 
## Value of test-statistic is: 0.0162 
## 
## Critical value for a significance level of: 
##                 10pct  5pct 2.5pct  1pct
## critical values 0.347 0.463  0.574 0.739
ggtsdisplay(diff(tst, lag = 7),
            main = "ATM #2 Cash Withdrawal",
            ylab = "Cash Withdrawal",
            xlab = "Week")

The aim now is to find an appropriate ARIMA model based on the ACF and PACF. Ignoring one significant spike in each plot that is just outside the limits, and not in the first few lags, both plots are sinusoidal decaying. From the first seasonal differencing component, significant lags were ending along with lag 3, and no change after another single differencing. From the non-seasonal component of both the ACF and PACF, there are small significant spikes at lag 5, and a larger one at lag 7. This suggests (p,q) = (>2,>2) and (P,Q) = (>1,>1).

An \(ARIMA(p, d, q)(P, D, Q)_m\) model is where p/P = order of the autoregressive part, d/D = degree of first differencing involved, q/Q = order of the moving average part, and m = number of observations. Altogether, possible models should have the sequence similar to ARIMA(>2,[0 or 1],>2)(>1,[0 or 1],>1)[7] with drifting since (d,D) could both be 1.

To confirm, the auto.arima() function to determine are all determined by minimizing the information criteria. The suggested model is ARIMA(3,0,3)(0,1,1)[7] with a drifting constant, which will be used since the deduction by observation was very close.

ATM.ts[,2] %>% auto.arima(lambda = lambda, biasadj = TRUE)
## Series: . 
## ARIMA(3,0,3)(0,1,1)[7] with drift 
## Box Cox transformation: lambda= 0.7242585 
## 
## Coefficients:
##          ar1      ar2     ar3      ma1     ma2      ma3     sma1    drift
##       0.4902  -0.4948  0.8326  -0.4823  0.3203  -0.7837  -0.7153  -0.0203
## s.e.  0.0863   0.0743  0.0614   0.1060  0.0941   0.0621   0.0453   0.0072
## 
## sigma^2 estimated as 67.52:  log likelihood=-1260.59
## AIC=2539.18   AICc=2539.69   BIC=2574.1

Therefore, the proposed models that might be suitable for fitting ATM2 include:

Technique Proposed Model
Forecasting with Decomposition STL Decomposition
Forecasting with Exponential Smoothing ETS(A, N, A)
Forecasting with ARIMA ARIMA(3,0,3)(0,1,1)[7] with drift

ATM 3

Given the very limited data, there is not enough information to make a suitable forecast model. Thus, the mean from ATM 1-3 will be used as the expected amount of cash withdraw from ATM 3. The reason being that ATM 1 & 2 have similar withdrawal activities for the same days, while ATM 4 present higher withdrawal amounts. As a result, with 2/3 of the ATMs with similar cash withdrawals as ATM 3, it is decided that the expected amount of cash withdraw from ATM 3 with being the mean of cash withdrawal from ATM 1-3.

Therefore, the proposed models that might be suitable for fitting ATM3 include:

Technique Proposed Model
Forecasting with Expected Value at time t+1, \(E[ATM_3] = \frac {\sum_{i=1}^{n} (ATM_i)}{n}\) where n = 3

ATM 4

From the time series plot, it is evident that there are seasonality in this set and no steady trend over the weeks. The subseries plot highlight that Sunday tends to have the highest mean of cash withdrawal while Saturday is the lowest. The ACF highlights that the slow decrease in every 7th lags and represents the autocorrelations in a “scalloped” pattern, further confirming that there is seasonality. From the partial autocorrelation, there a few significant lags in the beginning, while all other PACF are within the critical limit. Altogether, the time series plots for ATM4 confirm that it is non-stationary, has seasonality variation, and may require differencing in the lags to be made into a stationary time series.

ggtsdisplay(ATM.ts[,4], main = "ATM #4 Cash Withdrawal", ylab = "Cash Withdrawal (in hundreds)", xlab = "Week")

ggsubseriesplot(ATM.ts[,4]) +
  labs(title = "ATM #4 Cash Withdrawal", subtitle ="1 May, 2009 to 30 April, 2010",
       x = "Days of the Week") +
  scale_y_continuous("Amount of Cash Withdrawal",
                     labels = scales::dollar_format(scale = 0.1, suffix = "K"))

For this time series subset, it was helpful that the stabilization of the seasonal variability throughout the year may be necessary. Using Box-Cox transformation, the optimal \(\lambda=0.45\). The resulting transformation highlights that the smaller variability was stretched, while the larger variability was diminished.

lambda = BoxCox.lambda(ATM.ts[,4])
bct(ATM.ts[,4], title = "ATM #4 Cash Withdrawal")

At this moment, applying a decomposition to ATM4 is useful to further study time series data, and exploring historical changes over time. Decomposition is done using the STL decomposition.

ATM.ts[,4] %>% stl(s.window = 7, robust = TRUE) %>%
  autoplot()  +
  labs(title = "Seasonal & Trend Decomposition for ATM #4 Time Series", x = "Week")

Once again, the decomposition highlights the seasonality component changes drastically from week 40 to week 43, in addition to a few earlier periods. The panel bar for trend also suggests that it is much smaller than the seasonal component and consequently only a small part of the variation in the data series.

By considering variations in the combinations of the small trends and seasonal components, exponential smoothing methods are not ruled out as a tool for forecasting. This technique will determine a possible model based on the best values in the information criterion. It shows that the ETS(A, N, A) model best fits the data for the transformed ATM4, i.e. exponential smoothing with additive error, no trend component, and additive seasonality.

ATM.ts[,4] %>% ets(lambda = lambda, biasadj = TRUE)
## ETS(A,N,A) 
## 
## Call:
##  ets(y = ., lambda = lambda, biasadj = TRUE) 
## 
##   Box-Cox transformation: lambda= 0.4498 
## 
##   Smoothing parameters:
##     alpha = 1e-04 
##     gamma = 0.1035 
## 
##   Initial states:
##     l = 28.6369 
##     s = -18.6503 -3.3529 1.6831 4.7437 5.4471 4.9022
##            5.2271
## 
##   sigma:  12.9202
## 
##      AIC     AICc      BIC 
## 4032.268 4032.890 4071.267

Note that Box-Cox transformation was kept because it helped to stabilize the variance of a time series. Differencing can help stabilize the mean of a time series by removing changes in the level of a time series, and therefore reducing trend and seasonality.

## [1] "And so, the number of differences required for time series to be made stationary is 0."
## [1] "While, the number of differences required for time series to be made seasonally stationary is 0."

ARIMA models are capable of modeling a wide range of seasonal and non-seasonal data. The data is non-stationary, with no seasonal difference needed, D = 0. These also appear to be non-stationary, but differencing is not need due to the transformed data, d = 0. The unit root test resulted in a smaller than the 1% critical value and fell well within the range expected for stationary data. Thus, no differencing of the data is considered to be stationary.

tst %>% ur.kpss() %>% summary()
## 
## ####################### 
## # KPSS Unit Root Test # 
## ####################### 
## 
## Test is of type: mu with 5 lags. 
## 
## Value of test-statistic is: 0.0792 
## 
## Critical value for a significance level of: 
##                 10pct  5pct 2.5pct  1pct
## critical values 0.347 0.463  0.574 0.739
ggtsdisplay(tst,
            main = "ATM #4 Cash Withdrawal",
            ylab = "Cash Withdrawal",
            xlab = "Week")

The aim now is to find an appropriate ARIMA model based on the ACF and PACF. Ignoring one significant spike in each plot that is just outside the limits, and not in the first few lags, once again, both the ACF and PACF plots are sinusoidal decaying. There are the only significant lags at the seasonal lags, and almost significant spikes at lag 4, indicating that some additional non-seasonal terms need to be included in the model. Lastly, there was no change in the non-seasonal and seasonal components when multiple differencing was performed. This could suggest that (p,Q) = 0, and (P,q) > 2.

An \(ARIMA(p, d, q)(P, D, Q)_m\) model is where p/P = order of the autoregressive part, d/D = degree of first differencing involved, q/Q = order of the moving average part, and m = number of observations. Altogether, possible models should have a sequence similar to ARIMA(0,0,>2)(>2,0,0)[7].

To confirm, the auto.arima() function to determine are all determined by minimizing the information criteria. The suggested model is ARIMA(0,0,1)(2,0,0)[7] with a non-zero mean, which will be used since the deduction by observation was very close.

ATM.ts[,4] %>% auto.arima(lambda = lambda, biasadj = TRUE)
## Series: . 
## ARIMA(0,0,1)(2,0,0)[7] with non-zero mean 
## Box Cox transformation: lambda= 0.449771 
## 
## Coefficients:
##          ma1    sar1    sar2     mean
##       0.0790  0.2078  0.2023  28.6364
## s.e.  0.0527  0.0516  0.0525   1.2405
## 
## sigma^2 estimated as 176.5:  log likelihood=-1460.57
## AIC=2931.14   AICc=2931.3   BIC=2950.64

Therefore, the proposed models that might be suitable for fitting ATM4 include:

Technique Proposed Model
Forecasting with Decomposition STL Decomposition
Forecasting with Exponential Smoothing ETS(M, N, A)
Forecasting with ARIMA ARIMA(0,0,1)(2,0,0)[7] with non-zero mean

Forecast & Model Comparison

Because each model was fitted using different transformations, information criteria are not reliable for comparison since the likelihood is computed in different ways, thus cross-validation is performed by splitting the data into a training and testing set, where the root mean squared error is used to identify the best fit model. The following function will split the data set and fit each model as specified above. A performance test will then be conducted to determining the root mean squared error of the train data with the test data. The function is also capable of plotting residuals of each model once specified.

ts_accuracy = function(i, week, rmse, residual){
  # Split to train and test
  train = window(ATM.ts[,i], end = c(week, 3))
  test = window(ATM.ts[,i], start = c(week, 4))
  # Finds optimal lambda
  lambda = BoxCox.lambda(ATM.ts[,i])
  # Forecast Models
  stl.model = train %>% stl(s.window = 7, robust = TRUE)
  ets.model = train %>% ets(model='ANA', lambda = lambda, biasadj = TRUE)
  if (i == 1){
  arima.model = train %>% Arima(order = c(0,0,2), seasonal = c(0,1,1),
                                lambda = lambda, biasadj = TRUE)
  }
  if (i == 2){
  arima.model = train %>% Arima(order = c(3,0,3), seasonal = c(0,1,1),
                                include.drift = TRUE,
                                lambda = lambda, biasadj = TRUE)
  }
  if (i == 4){
  arima.model = train %>% Arima(order = c(0,0,1), seasonal = c(2,0,0),
                                include.mean = TRUE,
                                lambda = lambda, biasadj = TRUE)
  }
  # Returns Residuals Plots
  if(tolower(residual) == 'stl'){checkresiduals(stl.model)}
  if(tolower(residual) == 'ets'){checkresiduals(ets.model)}
  if(tolower(residual) == 'arima'){checkresiduals(arima.model)}
  # Forecast
  stl.fc = forecast(stl.model, h = length(test))$mean
  ets.fc = forecast(ets.model, h = length(test))$mean
  arima.fc = forecast(arima.model, h = length(test))$mean
  # Performance statistics
  accuracy = data.frame(RMSE = cbind(accuracy(stl.fc, test)[,2],
                                     accuracy(ets.fc, test)[,2],
                                     accuracy(arima.fc, test)[,2]))
  row.names(accuracy) = c(sprintf("ATM #%d", i))
  names(accuracy) = c("STL", "ETS", "ARIMA")
  # Returns RMSE
  if(rmse){accuracy}
}

From the table below, it is evident that the ARIMA models produced fewer errors among all the individual ATM models. While not the smallest error, it’s interesting to note that for ATM2, both the STL decomposition and ETS(A, N, A) resulted in nearly similar RMSEs (their actual difference is merely 0.003).

df = data.frame()
for (i in c(1,2,4)){
  df = rbind(df,ts_accuracy(i, 44, rmse = TRUE, residual = FALSE))
}
RMSE for Each Forecasting Models
STL ETS ARIMA
ATM #1 51.58 42.76 37.00
ATM #2 59.38 59.38 46.92
ATM #4 296.66 325.39 286.92

The residuals of the best model based on the RMSE are shown below. In this collection on plots, there are a time series, ACF, and a histogram of the residuals (with an overlaid normal distribution for comparison).

For ATM1, the ARIMA(0,0,2)(0,1,1)[7] model produced the smallest RMSE. Firstly, the residual time series plot highlights a few large negative residuals. The histogram suggests that the residuals may be left-skewed but the mean of the residuals appears to be near zero. Moreover, there is no significant autocorrelation in the residuals series, suggesting the forecasts are good. This is further confirmed based on the Ljung-Box test since the residuals are not distinguishable from a white noise series, \(Q^∗=7.23, df=3, p−value>0.05\). Overall, it seems that forecasts from this method will be good.

ts_accuracy(1, 44, rmse = FALSE, residual = 'ARIMA')

## 
##  Ljung-Box test
## 
## data:  Residuals from ARIMA(0,0,2)(0,1,1)[7]
## Q* = 7.2257, df = 11, p-value = 0.7805
## 
## Model df: 3.   Total lags used: 14

For ATM2, the ARIMA(3,0,3)(0,1,1)[7] with the drifting model produced the smallest RMSE. Firstly, the residual time series plot highlights a few large negative residuals. The histogram suggests that the mean of the residuals is near zero. Moreover, there is no significant autocorrelation in the residuals series, suggesting the forecasts are good. This is further confirmed based on the Ljung-Box test since the residuals are not distinguishable from a white noise series, \(Q^∗ = 5.53, df = 8, p−value > 0.05\). Overall, it seems that forecasts from this method will be good.

ts_accuracy(2, 44, rmse = FALSE, residual = 'ARIMA')

## 
##  Ljung-Box test
## 
## data:  Residuals from ARIMA(3,0,3)(0,1,1)[7] with drift
## Q* = 5.5332, df = 6, p-value = 0.4775
## 
## Model df: 8.   Total lags used: 14

For ATM4, the ARIMA(0,0,1)(2,0,0)[7] with non-zero mean model produced the smallest RMSE. Firstly, the residual time series plot highlights the variability in the residuals. The histogram suggests that the residuals near-normal with the mean of the residuals being near zero. Moreover, there is no significant autocorrelation in the residuals series, suggesting the forecasts are good. This is further confirmed based on the Ljung-Box test since the residuals are not distinguishable from a white noise series, \(Q^∗ = 13.22, df = 4, p−value > 0.05\). Overall, it seems that forecasts from this method will be good.

ts_accuracy(4, 44, rmse = FALSE, residual = 'ARIMA')

## 
##  Ljung-Box test
## 
## data:  Residuals from ARIMA(0,0,1)(2,0,0)[7] with non-zero mean
## Q* = 13.217, df = 10, p-value = 0.2118
## 
## Model df: 4.   Total lags used: 14

Lastly, the following function will plot all the data in addition to the forecast based on the specified model for a visual comparison. There is also a zoomed-in plot of the forecast for clarity. The function is also capable of returning any of the forecast created by the specified model. This will be used to visually analyze the fit and officially state the final model.

ATM.fc = function(tseries, ATM.no, plot, forecast){
  # Finds optimal lambda
  lambda = BoxCox.lambda(tseries)
  # Forecast Models
  stl.model = tseries %>% stl(s.window = 7, robust = TRUE)
  ets.model = tseries %>% ets(lambda = lambda, biasadj = TRUE)
  arima.model = tseries %>% auto.arima(lambda = lambda, biasadj = TRUE)
  # Forecast
  ATM.stl.fc = forecast(stl.model, h = 31)$mean %>% ts(start = 366, end = 396)
  ATM.ets.fc = forecast(ets.model, h = 31)$mean %>% ts(start = 366, end = 396)
  ATM.arima.fc = forecast(arima.model, h = 31)$mean %>% ts(start = 366, end = 396)
  # Full forecast plot
  p1 = autoplot(ts(tseries, frequency = 1)) +
    autolayer(ATM.stl.fc, series = 'STL', PI = FALSE) +
    autolayer(ATM.ets.fc, series = 'ETS', PI = FALSE) +
    autolayer(ATM.arima.fc, series = 'ARIMA', PI = FALSE) +
    labs(title = sprintf("ATM #%0.0f Cash Withdrawal Forecast", ATM.no),
         subtitle = "1 May, 2009 to 31 May, 2010",
         x = "Days") +
    scale_y_continuous("Amount of Cash Withdrawal",
                       labels = scales::dollar_format(scale = 0.1, suffix = "K")) +
    guides(colour = guide_legend(title = "Models")) +
    theme(legend.position = "top")
  # Zoomed in plot on forecast
  p2 = p1 + labs(title = sprintf("Zoom: ATM #%0.0f Cash Withdrawal Forecast", ATM.no),
           subtitle = "15 April, 2010 to 31 May, 2010") +
    xlim(c(350,396))
  # Returns plots
  if(plot){gridExtra::grid.arrange(p1, p2, ncol = 1)}
  # Return Forecast Values
  if(tolower(forecast) == 'stl'){return(ATM.stl.fc)}
  if(tolower(forecast) == 'ets'){return(ATM.ets.fc)}
  if(tolower(forecast) == 'arima'){return(ATM.arima.fc)}
}

ATM 1
ATM1.fc = ATM.fc(ATM.ts[,1], 1, plot = TRUE, forecast = 'arima')

Visually, each model does a good job fitting the series. Therefore, based on the performance metrics, the best fit model for ATM #1 is the ARIMA(0,0,2)(0,1,1)[7] with Box-Cox Transformation of 0.26.


ATM 2
ATM2.fc = ATM.fc(ATM.ts[,2], 2, plot = TRUE, forecast = 'arima')

STL and ETS fits have opposite shifts in the seasonality than the ARIMA model, which remains closely centered. As a result, based on the fit and performance metrics, the best fit model for ATM #2 is the ARIMA(3,0,3)(0,1,1)[7] with drifting with Box-Cox Transformation of 0.72.


ATM 3

Modeling the decided fit to ATM3, the forecast for May 2010 is shown below.

temp = ATM.df %>% drop_na() %>% spread(ATM, Cash)
ATM3.fc = ts(rep(mean(as.matrix(temp[363:365, 2:4])), 31), start = 366, end = 396)
autoplot(ts(ATM.ts[,3], frequency = 1)) +
  autolayer(ATM3.fc, series = '') +
  labs(title = "ATM #3 Cash Withdrawal Forecast",
       subtitle = "1 May, 2009 to 31 May, 2010",
       x = "Days") +
  scale_y_continuous("Amount of Cash Withdrawal",
                     labels = scales::dollar_format(scale = 0.1, suffix = "K")) +
  theme(legend.position = "none")

Therefore, the best fit model is the expected value of cash withdraw from ATM 1-3, i.e. \(E[ATM_3] = \frac {\sum_{i=1}^{n} (ATM_i)}{n}\) where n = 3.


ATM 4
ATM4.fc = ATM.fc(ATM.ts[,4], 4, plot = TRUE, forecast = 'arima')

ATM4 is quite haphazard in its seasonality, the predictive intervals for each model are also large and none of them capture the series as expected. Thus, based on the performance metrics, the best fit model for ATM #4 is the ARIMA(0,0,1)(2,0,0)[7] with a non-zero mean with Box-Cox Transformation of 0.45.


Final Forecast

Finally, let’s save the forecast for May 2010. The best fit models used to forecast the amount of cash withdrawal for the month of May for each ATMs are:

  • ATM #1 : ARIMA(0,0,2)(0,1,1)[7] with Box-Cox Transformation of 0.26.
  • ATM #2 : ARIMA(3,0,3)(0,1,1)[7] with drifting with Box-Cox Transformation of 0.72.
  • ATM #3 : \(E[ATM_3] = \frac {\sum_{i=1}^{n} (ATM_i)}{n}\) where n = 3.
  • ATM #4 : ARIMA(0,0,1)(2,0,0)[7] with non-zero mean with Box-Cox Transformation of 0.45.
DATE = seq(as.Date('2010-05-01'), as.Date('2010-05-31'), 1)
ATM = c(rep('ATM1', 31), rep('ATM2', 31), rep('ATM3', 31), rep('ATM4', 31))
Cash = c(ATM1.fc, ATM2.fc, ATM3.fc, ATM4.fc)
# openxlsx::write.xlsx(data.frame(DATE, ATM, Cash), "ATM_forecasts_Deokinanan.xlsx")

Daily Forecast for Each ATM for May 2010

DATE ATM Cash
2010-05-01 ATM1 92.128019
2010-05-02 ATM1 106.518331
2010-05-03 ATM1 78.907122
2010-05-04 ATM1 5.556121
2010-05-05 ATM1 106.163569
2010-05-06 ATM1 84.720405
2010-05-07 ATM1 91.309507
2010-05-08 ATM1 93.491218
2010-05-09 ATM1 107.162085
2010-05-10 ATM1 79.572744
2010-05-11 ATM1 5.726439
2010-05-12 ATM1 106.933945
2010-05-13 ATM1 85.409793
2010-05-14 ATM1 92.024822
2010-05-15 ATM1 94.212213
2010-05-16 ATM1 107.933303
2010-05-17 ATM1 80.238366
2010-05-18 ATM1 5.896758
2010-05-19 ATM1 107.704320
2010-05-20 ATM1 86.099181
2010-05-21 ATM1 92.740136
2010-05-22 ATM1 94.933207
2010-05-23 ATM1 108.704520
2010-05-24 ATM1 80.903988
2010-05-25 ATM1 6.067076
2010-05-26 ATM1 108.474696
2010-05-27 ATM1 86.788569
2010-05-28 ATM1 93.455451
2010-05-29 ATM1 95.654201
2010-05-30 ATM1 109.475738
2010-05-31 ATM1 81.569609
2010-05-01 ATM2 58.520690
2010-05-02 ATM2 63.739250
2010-05-03 ATM2 11.157593
2010-05-04 ATM2 15.797994
2010-05-05 ATM2 91.122422
2010-05-06 ATM2 82.918441
2010-05-07 ATM2 61.628753
2010-05-08 ATM2 59.214121
2010-05-09 ATM2 64.504077
2010-05-10 ATM2 11.955182
2010-05-11 ATM2 17.065913
2010-05-12 ATM2 91.629964
2010-05-13 ATM2 83.433271
2010-05-14 ATM2 61.996778
2010-05-15 ATM2 59.538018
2010-05-16 ATM2 64.874775
2010-05-17 ATM2 12.592851
2010-05-18 ATM2 19.567481
2010-05-19 ATM2 91.810515
2010-05-20 ATM2 83.629674
2010-05-21 ATM2 62.124839
2010-05-22 ATM2 59.647823
2010-05-23 ATM2 65.012212
2010-05-24 ATM2 13.146759
2010-05-25 ATM2 23.217389
2010-05-26 ATM2 91.799041
2010-05-27 ATM2 83.637832
2010-05-28 ATM2 62.114829
2010-05-29 ATM2 59.634255
2010-05-30 ATM2 65.011836
2010-05-31 ATM2 13.662563
2010-05-01 ATM3 90.222222
2010-05-02 ATM3 90.222222
2010-05-03 ATM3 90.222222
2010-05-04 ATM3 90.222222
2010-05-05 ATM3 90.222222
2010-05-06 ATM3 90.222222
2010-05-07 ATM3 90.222222
2010-05-08 ATM3 90.222222
2010-05-09 ATM3 90.222222
2010-05-10 ATM3 90.222222
2010-05-11 ATM3 90.222222
2010-05-12 ATM3 90.222222
2010-05-13 ATM3 90.222222
2010-05-14 ATM3 90.222222
2010-05-15 ATM3 90.222222
2010-05-16 ATM3 90.222222
2010-05-17 ATM3 90.222222
2010-05-18 ATM3 90.222222
2010-05-19 ATM3 90.222222
2010-05-20 ATM3 90.222222
2010-05-21 ATM3 90.222222
2010-05-22 ATM3 90.222222
2010-05-23 ATM3 90.222222
2010-05-24 ATM3 90.222222
2010-05-25 ATM3 90.222222
2010-05-26 ATM3 90.222222
2010-05-27 ATM3 90.222222
2010-05-28 ATM3 90.222222
2010-05-29 ATM3 90.222222
2010-05-30 ATM3 90.222222
2010-05-31 ATM3 90.222222
2010-05-01 ATM4 323.999169
2010-05-02 ATM4 434.873284
2010-05-03 ATM4 511.231817
2010-05-04 ATM4 241.030250
2010-05-05 ATM4 474.002125
2010-05-06 ATM4 349.505099
2010-05-07 ATM4 415.843486
2010-05-08 ATM4 296.604731
2010-05-09 ATM4 475.086554
2010-05-10 ATM4 465.407561
2010-05-11 ATM4 288.570878
2010-05-12 ATM4 446.728575
2010-05-13 ATM4 332.521570
2010-05-14 ATM4 460.415111
2010-05-15 ATM4 388.228709
2010-05-16 ATM4 451.226998
2010-05-17 ATM4 464.251973
2010-05-18 ATM4 365.911910
2010-05-19 ATM4 453.254166
2010-05-20 ATM4 402.458707
2010-05-21 ATM4 444.343570
2010-05-22 ATM4 401.349389
2010-05-23 ATM4 453.312522
2010-05-24 ATM4 454.100385
2010-05-25 ATM4 394.551766
2010-05-26 ATM4 448.115768
2010-05-27 ATM4 412.935666
2010-05-28 ATM4 448.996814
2010-05-29 ATM4 424.218997
2010-05-30 ATM4 448.226111
2010-05-31 ATM4 450.990009

Part B – Forecasting Power

Exploratory Analysis

The data set contains monthly residential power usage for January 1998 until December 2013. The variable KWH is power consumption in Kilowatt-hours.

power.df = read_excel("ResidentialCustomerForecastLoad-624.xlsx")
power.ts = ts(power.df$KWH, start = c(1998,1), frequency = 12)
Residential Power Usage
CaseSequence YYYY-MMM KWH
733 1998-Jan 6862583
734 1998-Feb 5838198
735 1998-Mar 5420658
736 1998-Apr 5010364
737 1998-May 4665377
738 1998-Jun 6467147
739 1998-Jul 8914755
740 1998-Aug 8607428
741 1998-Sep 6989888
742 1998-Oct 6345620
743 1998-Nov 4640410
744 1998-Dec 4693479
745 1999-Jan 7183759
746 1999-Feb 5759262
747 1999-Mar 4847656
748 1999-Apr 5306592
749 1999-May 4426794
750 1999-Jun 5500901
751 1999-Jul 7444416
752 1999-Aug 7564391
753 1999-Sep 7899368
754 1999-Oct 5358314
755 1999-Nov 4436269
756 1999-Dec 4419229
757 2000-Jan 7068296
758 2000-Feb 5876083
759 2000-Mar 4807961
760 2000-Apr 4873080
761 2000-May 5050891
762 2000-Jun 7092865
763 2000-Jul 6862662
764 2000-Aug 7517830
765 2000-Sep 8912169
766 2000-Oct 5844352
767 2000-Nov 5041769
768 2000-Dec 6220334
769 2001-Jan 7538529
770 2001-Feb 6602448
771 2001-Mar 5779180
772 2001-Apr 4835210
773 2001-May 4787904
774 2001-Jun 6283324
775 2001-Jul 7855129
776 2001-Aug 8450717
777 2001-Sep 7112069
778 2001-Oct 5242535
779 2001-Nov 4461979
780 2001-Dec 5240995
781 2002-Jan 7099063
782 2002-Feb 6413429
783 2002-Mar 5839514
784 2002-Apr 5371604
785 2002-May 5439166
786 2002-Jun 5850383
787 2002-Jul 7039702
788 2002-Aug 8058748
789 2002-Sep 8245227
790 2002-Oct 5865014
791 2002-Nov 4908979
792 2002-Dec 5779958
793 2003-Jan 7256079
794 2003-Feb 6190517
795 2003-Mar 6120626
796 2003-Apr 4885643
797 2003-May 5296096
798 2003-Jun 6051571
799 2003-Jul 6900676
800 2003-Aug 8476499
801 2003-Sep 7791791
802 2003-Oct 5344613
803 2003-Nov 4913707
804 2003-Dec 5756193
805 2004-Jan 7584596
806 2004-Feb 6560742
807 2004-Mar 6526586
808 2004-Apr 4831688
809 2004-May 4878262
810 2004-Jun 6421614
811 2004-Jul 7307931
812 2004-Aug 7309774
813 2004-Sep 6690366
814 2004-Oct 5444948
815 2004-Nov 4824940
816 2004-Dec 5791208
817 2005-Jan 8225477
818 2005-Feb 6564338
819 2005-Mar 5581725
820 2005-Apr 5563071
821 2005-May 4453983
822 2005-Jun 5900212
823 2005-Jul 8337998
824 2005-Aug 7786659
825 2005-Sep 7057213
826 2005-Oct 6694523
827 2005-Nov 4313019
828 2005-Dec 6181548
829 2006-Jan 7793358
830 2006-Feb 5914945
831 2006-Mar 5819734
832 2006-Apr 5255988
833 2006-May 4740588
834 2006-Jun 7052275
835 2006-Jul 7945564
836 2006-Aug 8241110
837 2006-Sep 7296355
838 2006-Oct 5104799
839 2006-Nov 4458429
840 2006-Dec 6226214
841 2007-Jan 8031295
842 2007-Feb 7928337
843 2007-Mar 6443170
844 2007-Apr 4841979
845 2007-May 4862847
846 2007-Jun 5022647
847 2007-Jul 6426220
848 2007-Aug 7447146
849 2007-Sep 7666970
850 2007-Oct 5785964
851 2007-Nov 4907057
852 2007-Dec 6047292
853 2008-Jan 7964293
854 2008-Feb 7597060
855 2008-Mar 6085644
856 2008-Apr 5352359
857 2008-May 4608528
858 2008-Jun 6548439
859 2008-Jul 7643987
860 2008-Aug 8037137
861 2008-Sep NA
862 2008-Oct 5101803
863 2008-Nov 4555602
864 2008-Dec 6442746
865 2009-Jan 8072330
866 2009-Feb 6976800
867 2009-Mar 5691452
868 2009-Apr 5531616
869 2009-May 5264439
870 2009-Jun 5804433
871 2009-Jul 7713260
872 2009-Aug 8350517
873 2009-Sep 7583146
874 2009-Oct 5566075
875 2009-Nov 5339890
876 2009-Dec 7089880
877 2010-Jan 9397357
878 2010-Feb 8390677
879 2010-Mar 7347915
880 2010-Apr 5776131
881 2010-May 4919289
882 2010-Jun 6696292
883 2010-Jul 770523
884 2010-Aug 7922701
885 2010-Sep 7819472
886 2010-Oct 5875917
887 2010-Nov 4800733
888 2010-Dec 6152583
889 2011-Jan 8394747
890 2011-Feb 8898062
891 2011-Mar 6356903
892 2011-Apr 5685227
893 2011-May 5506308
894 2011-Jun 8037779
895 2011-Jul 10093343
896 2011-Aug 10308076
897 2011-Sep 8943599
898 2011-Oct 5603920
899 2011-Nov 6154138
900 2011-Dec 8273142
901 2012-Jan 8991267
902 2012-Feb 7952204
903 2012-Mar 6356961
904 2012-Apr 5569828
905 2012-May 5783598
906 2012-Jun 7926956
907 2012-Jul 8886851
908 2012-Aug 9612423
909 2012-Sep 7559148
910 2012-Oct 5576852
911 2012-Nov 5731899
912 2012-Dec 6609694
913 2013-Jan 10655730
914 2013-Feb 7681798
915 2013-Mar 6517514
916 2013-Apr 6105359
917 2013-May 5940475
918 2013-Jun 7920627
919 2013-Jul 8415321
920 2013-Aug 9080226
921 2013-Sep 7968220
922 2013-Oct 5759367
923 2013-Nov 5769083
924 2013-Dec 9606304

From the few summary statistics below, the mean kiloWatt hour is 6502475 kWh, with a standard deviation of 1447571 kWh. With a near-zero skewness and kurtosis, the data seems to be nearly normal. On the contrary, there are a few discrepancies. Firstly, the data set contains n = 192 cases, however, one case is missing. Lastly, the boxplot reveals that there is a likely outlier in this set.

Descriptive Statistics of Power Usage
n mean sd median trimmed mad min max range skew kurtosis se
KWH 191 6502475 1447571 6283324 6439475 1543074 770523 10655730 9885207 0.17 0.45 104742.6
p1 = ggplot(power.df, aes(y = KWH)) +
  geom_boxplot(fill = "steelblue2") +
  coord_flip() +
  theme(aspect.ratio = 3/10,
        axis.text.y = element_blank(),
        axis.ticks.y = element_blank()) +
  labs(title ="Jan, 1998 to Dec, 2013",
       subtitle = "Residential Power Usage Boxplot",
       y = sprintf("# of outliers = %d", length(boxplot(power.df[,3], plot = FALSE)$out)))

temp = transform(power.df, date = reshape::colsplit(`YYYY-MMM`, split = "\\-", names = c('year', 'month')))
temp$Date = with(temp, sprintf("%s-%d", date.month, date.year))
p2 = temp %>%
  ggplot(aes(x = zoo::as.yearmon(Date,"%b-%Y"), y = KWH)) +
  geom_line(color="steelblue2", size = 1) +
  labs(subtitle = "Residential Power Usage Time Series",
       x = "Month", y = "Power Used, in kWh")
gridExtra::grid.arrange(p1, p2, ncol = 1)

## [1] "This missing case is on 2008-Sep."
## [1] "On 2010-Jul, an unexpectly low power usage of 770523 kWh was recorded."

With limited information, it is unknown why this oddly low usage amount was recorded. It can either be a rare occurrence or an error in the data collection process. Therefore, interpolation will be required since this can influence the analysis. As in Part A, tsclean will be used to both interpolate extreme and missing values. That is, missing data is done by fitting a seasonal model to the data, and then interpolate the seasonally adjusted series, before re-seasonalizing. While identifying outliers and suggest reasonable replacements, residuals are identified by fitting a periodic STL decomposition for seasonal data. Residuals are deemed as outliers if they lie outside the range \(\pm2(q_{0.9}−q_{0.1})\) where \(q_p\) is the p-quantile of the residuals.


Data Transformation

With not much data tidying and transformation necessary, the data is made into a workable time series.

power.ts = tsclean(power.ts)
describe(power.ts)[,-1] %>% kable(digits = 2L, caption = "Descriptive Statistics of Power Usage") %>%
  kable_styling(bootstrap_options = "striped", full_width = TRUE)
Descriptive Statistics of Power Usage
n mean sd median trimmed mad min max range skew kurtosis se
X1 192 6529701 1369032 6351262 6455590 1587856 4313019 10655730 6342711 0.47 -0.48 98801.41

Time Series Features

In the previous sections, the data itself was examined and transformed appropriately to prevent bias and errors in the forecast. This section will now dive into the time series itself to examine its characteristics and determine the best modeling technique to forecast the monthly residential power usage in kWh for 2014.

ggtsdisplay(power.ts, main = "Residential Power Usage", ylab = "Power Used, in kWh", xlab = "Month")

Immediately, the outlier and missing values were interpolated and the time series plot shows the seasonality of data. It appears to be two peaks every year, suggesting the pattern from peak to trough is from that start of a year to mid-year, then the end. There is no steady trend over the years. The ACF highlights the autocorrelations are in a “scalloped” shape, further confirming that there is seasonality. Because substantially more than 5% of spikes are outside the bounds of the blue dashed line, the series is not white noise. From the partial autocorrelation (PACF), there a few significant lags at the beginning with a sinusoidal decay, while all other PACF are within the critical limit. Altogether, the time series plot confirms that it is non-stationary, as seasonality and will require differencing in the lags to be made into a stationary time series.

p1 = ggseasonplot(power.ts, year.labels = FALSE, continuous = TRUE) +
  labs(title = "Residential Power Usage",
       subtitle = "Seasonal Plot",
       y = "Power Used, in kWh",
       x = "Month")
p2 = ggsubseriesplot(power.ts) +
  labs(subtitle = "Seasonal Subseries Plot",
       y = "Power Used, in kWh",
       x = "Month")
gridExtra::grid.arrange(p1, p2, ncol = 1)

The seasonal plot shows that there is a steady decline from January to May, which then increases until August before it drops moving to November. The month of August has the most consumption of power, followed by January. This usage pattern is an influence of the seasons. If this is residential power usages from countries located in the Northern Hemisphere, weather seasonality will influence the amount of power consumption. In the summer, June - September, the use of air conditioning systems cause electricity usage to increase. If homes are heated with an electric heating system, they will generally have high electricity usage during winter months. This may explain the two maximum distinct peaks in the seasonal plots.

For this time series, it was helpful that the stabilization of the seasonal variability throughout the years may be necessary. Using Box-Cox transformation, the optimal \(lambda=-0.14\). The resulting transformation highlights that the smaller variability was stretched, while the larger variability was diminished. Overall, the variation appears much more stable now.

bct = function(ts, title){
  a = autoplot(ts) +
    labs(title = sprintf("Before: %s", title),
         x = "Year",
         y = "Amount of Cash Withdrawal")
  lambda = BoxCox.lambda(ts)
  at = autoplot(BoxCox(ts, lambda)) +
    labs(title = sprintf("Transformed: %s", title),
         subtitle = sprintf("lambda = %0.2f", lambda),
         y = "Box-Cox Transformed",
         x = "Year")
  gridExtra::grid.arrange(a, at)
}
lambda = BoxCox.lambda(power.ts)
bct(power.ts, title = "Residential Power Usage")

Now applying a decomposition to time series is useful to further study time series data, and exploring historical changes over time. Decomposition of the time series done using the STL decomposition. From the seasonal plot, there doesn’t appear to be quick changes in the seasonality over the years, i.e. the seasonal pattern seems constant through time, so the loess window for seasonal extraction will be the span.

power.ts %>% stl(s.window = 'periodic', robust = TRUE) %>%
  autoplot()  +
  labs(title = "Seasonal & Trend Decomposition for Power Usage Time Series", x = "Year")

The decomposition highlights the seasonality component, with no drastic changes to note. The panel bars indicate that the variation attributed to the trend is much smaller than the seasonal component and consequently only a small part of the variation in the data series.

Exponential smoothing methods were considered to fit the time series based on variations in the components. This technique will determine a possible model based on the best values in the AICc. It shows that the ETS(A, Ad, A) model best fits the data for the transformed power usage data, i.e. exponential smoothing with additive error, additive damped trend component, and additive seasonality.

power.ts %>% ets(lambda = lambda, biasadj = TRUE)
## ETS(A,Ad,A) 
## 
## Call:
##  ets(y = ., lambda = lambda, biasadj = TRUE) 
## 
##   Box-Cox transformation: lambda= -0.1443 
## 
##   Smoothing parameters:
##     alpha = 0.118 
##     beta  = 1e-04 
##     gamma = 1e-04 
##     phi   = 0.979 
## 
##   Initial states:
##     l = 6.1998 
##     b = 1e-04 
##     s = -0.006 -0.0285 -0.0132 0.019 0.0263 0.0212
##            0.0014 -0.0255 -0.0192 -0.0077 0.0081 0.024
## 
##   sigma:  0.0094
## 
##       AIC      AICc       BIC 
## -765.9795 -762.0258 -707.3446

Since the time series is non-stationary, differencing must be done to help stabilize the mean of a time series by removing changes in the level of a time series, and therefore reducing trend and seasonality. This will in turn make the time series stationary, and appropriate to produce an ARIMA model if it can fit the data better.

## [1] "And so, the number of differences required for time series to be made stationary is 1."
## [1] "While, the number of differences required for time series to be made seasonally stationary is 1."

ARIMA models are capable of modeling a wide range of seasonal and non-seasonal data. The data is non-stationary, with seasonality, so there will be a seasonal difference, D = 1. These also appear to be non-stationary, but since the unit root test still resulted in a smaller than the 1% critical value, it is not necessary. Therefore, d = 0, and the data has now made it stationary.

tst %>% diff(lag = 12) %>% ur.kpss() %>% summary()
## 
## ####################### 
## # KPSS Unit Root Test # 
## ####################### 
## 
## Test is of type: mu with 4 lags. 
## 
## Value of test-statistic is: 0.1049 
## 
## Critical value for a significance level of: 
##                 10pct  5pct 2.5pct  1pct
## critical values 0.347 0.463  0.574 0.739
ggtsdisplay(diff(tst, lag = 12),
            main = "Residential Power Usage",
            ylab = "Power Used, in kWh",
            xlab = "Month")

The aim now is to find an appropriate ARIMA model based on the ACF and PACF. Ignoring one significant spike in each plot that is just outside the limits, and not in the first few lags, both the ACF and PACF plots are sinusoidal decaying and there is a large significant spike at lag 12. There are smaller significant spikes at lag 1 and 4 in the PACF. In the ACF, the first significant lag suggests a non-seasonal moving average component, MA(1), making q = 1 and Q = 0. With no other significant lags in the first few lags of the seasonal component of the PACF (minus one being ignored), p = 0, and P = 2.

An \(ARIMA(p,d,q)(P,D,Q)_m\) model is where p/P = order of the autoregressive part, d/D = degree of first differencing involved, q/Q = order of the moving average part, and m = number of observations. Altogether, a possible model is ARIMA(0,0,1)(>3,1,0).

To confirm, the auto.arima() function to determine are all determined by minimizing the information criteria, i.e. AICc. The suggested model is ARIMA(0,0,1)(2,1,0)[12] with drifting, which will be used since the deduction by observation was very close.

power.ts %>% auto.arima(lambda = lambda, biasadj = TRUE)
## Series: . 
## ARIMA(0,0,1)(2,1,0)[12] with drift 
## Box Cox transformation: lambda= -0.1442665 
## 
## Coefficients:
##          ma1     sar1     sar2  drift
##       0.2563  -0.7036  -0.3817  1e-04
## s.e.  0.0809   0.0734   0.0748  1e-04
## 
## sigma^2 estimated as 8.869e-05:  log likelihood=585.32
## AIC=-1160.65   AICc=-1160.3   BIC=-1144.68

The last model of interest will be a quick, effective hybrid forecast. This method averages single-model forecasts to produce point estimates that are more likely to be better than any of the contributing forecast models (Peter Ellis, 2016). It combines the functionality of forecasting techniques. In class, it was learned that exponential smoothing and ARIMA models are the two most widely used approaches to time series forecasting. While ETS models are based on a description of the trend and seasonality in the data, ARIMA models aim to describe the autocorrelations in the data. So, a fitting is done to find a hybrid forecast model that has more accurate coverage.

library(forecastHybrid)
power.ts %>% hybridModel(model = 'ae', lambda = lambda)
## Hybrid forecast model comprised of the following models: auto.arima, ets
## ############
## auto.arima with weight 0.5 
## ############
## ets with weight 0.5

Therefore, the proposed models that might be suitable for fitting the time series include:

Technique Proposed Model
Forecasting with Decomposition STL Decomposition
Forecasting with Exponential Smoothing ETS(A, Ad, A)
Forecasting with ARIMA ARIMA(0,0,1)(2,1,0)[12] with drifting
Forecasting with Hybrid Forecasting 50% ETS + 50% ARIMA (equivalent to ETS(A, A, A) & ARIMA(0,0,1)(2,1,0)[12] with drifting)

Forecast & Model Comparison

Because each model was fitted using different transformations, information criteria are not reliable for comparison, thus cross-validation is performed by splitting the data into a training and testing set, where the root mean squared error is used to identify the best fit model. The following function will split the data set and fit each model as specified above. A performance test will then be conducted to determining the root mean squared error of the train data with the test data. The function is also capable of plotting residuals of each model once specified.

ts_accuracy = function(tseries, year, rmse, residual){
  # Split to train and test
  train = window(tseries, end = c(year, 12))
  test = window(tseries, start = year + 1)
  # Finds optimal lambda
  lambda = BoxCox.lambda(tseries)
  # Forecast Models
  stl.model = train %>% stl(s.window = 'periodic', robust = TRUE)
  ets.model = train %>% ets(model='AAA', damped = TRUE, lambda = lambda, biasadj = TRUE)
  arima.model = train %>% Arima(order = c(0,0,1), seasonal = c(2,1,0),
                                lambda = lambda, biasadj = TRUE)
  hybrid.model = train %>% hybridModel(model = 'ae', lambda = lambda)
  # Returns Residuals Plots
  if(tolower(residual) == 'stl'){checkresiduals(stl.model)}
  if(tolower(residual) == 'ets'){checkresiduals(ets.model)}
  if(tolower(residual) == 'arima'){checkresiduals(arima.model)}
  if(tolower(residual) == 'hybrid'){checkresiduals(hybrid.model)}
  # Forecast
  stl.fc = forecast(stl.model, h = length(test))$mean
  ets.fc = forecast(ets.model, h = length(test))$mean
  arima.fc = forecast(arima.model, h = length(test))$mean
  hybrid.fc = forecast(hybrid.model, h = length(test))$mean
  # Performance statistics
  accuracy = data.frame(RMSE = cbind(accuracy(stl.fc, test)[,2],
                                     accuracy(ets.fc, test)[,2],
                                     accuracy(arima.fc, test)[,2],
                                     accuracy(hybrid.fc, test)[,2]))
  row.names(accuracy) = c(sprintf("Test Year: %d", year + 1))
  names(accuracy) = c("STL", "ETS", "ARIMA","HYBRID")
  # Returns RMSE
  if(rmse){accuracy}
}

From the table below, the overall smallest RMSE is from the hybrid model. But it is noteworthy to see that for each year of the validation test, different models returned the smallest error. For instance, the RMSE for the training and testing split at 2009-2010 and 2012-2013, the best model is the hybrid model, while for the 2010-2011 split, the best model is the ETS fit, and the 2011-2012 split shows the best fit is with ARIMA(0,0,1)(2,1,0)[12]. If the hybrid model is not the best fit, it is the second best-fitting model for forecast based on RMSE. It may be due to the combination of the ETS and ARIMA which increased the errors than the modeling with one of them only.

df = data.frame()
for (year in c(2009:2012)){
  df = rbind(df, ts_accuracy(power.ts, year, rmse = TRUE, residual = FALSE))
}
df = rbind(df, Mean = colMeans(df))
RMSE for Each Forecasting Models
STL ETS ARIMA HYBRID
Test Year: 2010 1161717.5 1151275.4 1068433.9 1063564.8
Test Year: 2011 1064756.6 969066.1 1023285.1 970870.2
Test Year: 2012 763539.8 1107406.8 582788.1 618909.4
Test Year: 2013 666957.8 642963.9 673960.2 620798.5
Mean 914242.9 967678.0 837116.8 818535.7

Because the best model changed based on the year, but the 50% ETS + 50% ARIMA produced the smallest overall RMSE, the residuals of this model are shown below. In this collection on plots, there are a time series, ACF, and a histogram of the residuals (with an overlaid normal distribution for comparison). Firstly, the residual time series plot highlights some large negative residuals. The histogram suggests that the residuals may be right-skewed but the mean of the residuals appears to be near zero. Moreover, there is no significant autocorrelation in the residuals series, suggesting the forecasts are good.

ts_accuracy(power.ts, 2012, rmse = FALSE, residual = "hybrid")

Lastly, the following function will plot all the data in addition to the forecast based on the specified model for a visual comparison. There is also a zoomed-in plot of the forecast for clarity. The function is also capable of returning any of the forecast created by the specified model. This will be used to visually analyze the fit and officially state the final model.

power.fc = function(tseries, plot, forecast){
  # Finds optimal lambda
  lambda = BoxCox.lambda(tseries)
  # Forecast Models
  stl.model = tseries %>% stl(s.window = 'periodic', robust = TRUE)
  ets.model = tseries %>% ets(lambda = lambda, biasadj = TRUE)
  arima.model = tseries %>% auto.arima(lambda = lambda, biasadj = TRUE)
  hybrid.model = tseries %>% hybridModel(model = 'ae', lambda = lambda)
  # Forecast
  power.stl.fc = forecast(stl.model, h = 12)
  power.ets.fc = forecast(ets.model, h = 12)
  power.arima.fc = forecast(arima.model, h = 12)
  power.hybrid.fc = forecast(hybrid.model, h = 12)
  # Full forecast plot
  p1 = autoplot(tseries) +
    autolayer(power.stl.fc, series = 'STL', PI = FALSE) +
    autolayer(power.ets.fc, series = 'ETS', PI = FALSE) +
    autolayer(power.arima.fc, series = 'ARIMA', PI = FALSE) +
    autolayer(power.hybrid.fc, series = 'HYBRID', PI = FALSE) +
    labs(title = "Residential Power Usage Forecast",
         subtitle = "Jan, 1998 to Dec, 2014",
         x = "Year",
         y = "Power Used, in kWh") +
    guides(colour = guide_legend(title = "Models")) +
    theme(legend.position = "top")
  # Zoomed in plot on forecast
  p2 = p1 + labs(title = "Zoom: Residential Power Usage Forecast",
           subtitle = "Jan, 2012 to Dec, 2014") +
    xlim(c(2012,2015))
  # Returns plots
  if(plot){gridExtra::grid.arrange(p1, p2, ncol = 1)}
  # Return Forecast Values
  if(tolower(forecast) == 'stl'){return(power.stl.fc)}
  if(tolower(forecast) == 'ets'){return(power.ets.fc)}
  if(tolower(forecast) == 'arima'){return(power.arima.fc)}
  if(tolower(forecast) == 'hybrid'){return(power.hybrid.fc)}
}
forecast = power.fc(power.ts, plot = TRUE, forecast = 'hybrid')

Visually, each model does a good job fitting the series. Therefore, based on the performance metrics, the best fit model for forecasting the residential power usage for 2014 is the 50% ETS + 50% ARIMA model hybrid method. That is, an ETS(A, A, A) model with an ARIMA(0,0,1)(2,1,0)[12] with drifting and a Box-Cox Transformation of -0.144.


Final Forecast

Finally, let’s save the forecast for 2014.

date = seq(as.Date('2014-01-01'), as.Date('2014-12-01'), by = 'month') %>% format('%Y-%b')
# openxlsx::write.xlsx(data.frame(YYYY.MM = date, KWH = forecast$mean), "power_forecasts_Deokinanan.xlsx")

Monthly Forecast of Residential Power Usage in kWh for 2014

YYYY.MM KWH
2014-Jan 9279925.6990787
2014-Feb 8122460.02531558
2014-Mar 6630075.73074448
2014-Apr 5955509.17094461
2014-May 5759130.9806573
2014-Jun 7747404.93538889
2014-Jul 9165853.78334161
2014-Aug 9671337.9104755
2014-Sep 8556162.2636904
2014-Oct 6065559.45917231
2014-Nov 5774262.02125659
2014-Dec 7166133.60022812
Works Cited

Part C – Waterflow Pipe

Exploratory Analysis

Two separate data sets are provided containing n = 1000 recordings of water flows from different water pipelines. Each pipeline is recorded at a different time. There is no missing data and no outliers.

pipe.1 = read_excel("Waterflow_Pipe1.xlsx", col_types = c("date", "numeric"))
pipe.2 = read_excel("Waterflow_Pipe2.xlsx", col_types = c("date", "numeric"))
Pipeline 1
Pipeline 2
Date Time WaterFlow
2015-10-23 00:24:06 23.369599
2015-10-23 00:40:02 28.002881
2015-10-23 00:53:51 23.065895
2015-10-23 00:55:40 29.972809
2015-10-23 01:19:17 5.997953
2015-10-23 01:23:58 15.935223
2015-10-23 01:50:05 26.617330
2015-10-23 01:55:33 33.282900
2015-10-23 01:59:15 12.426692
2015-10-23 02:51:51 21.833494
2015-10-23 02:59:49 8.483647
2015-10-23 03:14:40 29.336901
2015-10-23 03:18:09 19.809146
2015-10-23 03:22:13 31.019744
2015-10-23 03:46:57 18.339962
2015-10-23 03:59:21 16.888527
2015-10-23 04:11:50 13.664312
2015-10-23 04:45:43 17.300074
2015-10-23 05:05:41 23.260984
2015-10-23 05:13:49 8.152496
2015-10-23 05:14:38 19.875628
2015-10-23 05:15:41 32.886499
2015-10-23 05:16:57 22.260364
2015-10-23 05:32:35 5.778369
2015-10-23 05:42:52 32.545557
2015-10-23 05:44:30 30.687744
2015-10-23 05:45:52 29.080907
2015-10-23 06:03:38 30.047784
2015-10-23 06:17:16 5.752456
2015-10-23 06:33:18 30.414162
2015-10-23 06:33:38 26.175716
2015-10-23 06:38:30 27.155307
2015-10-23 06:42:23 13.605943
2015-10-23 06:56:22 11.184568
2015-10-23 06:59:29 20.383057
2015-10-23 07:36:34 13.405331
2015-10-23 07:55:43 14.461091
2015-10-23 07:56:42 27.234671
2015-10-23 08:11:22 9.089498
2015-10-23 08:26:45 29.162384
2015-10-23 08:58:29 24.123214
2015-10-23 09:00:59 6.207443
2015-10-23 09:11:30 27.666923
2015-10-23 09:35:45 29.781898
2015-10-23 10:01:02 19.035463
2015-10-23 10:05:50 14.539055
2015-10-23 10:35:35 16.304829
2015-10-23 11:02:31 9.089600
2015-10-23 11:03:49 24.160478
2015-10-23 11:38:25 33.013436
2015-10-23 12:05:33 14.924758
2015-10-23 12:35:50 20.688466
2015-10-23 12:51:15 25.396306
2015-10-23 13:33:23 21.661800
2015-10-23 13:38:34 23.214093
2015-10-23 13:43:01 3.811189
2015-10-23 14:02:58 37.300056
2015-10-23 14:09:09 26.468501
2015-10-23 14:10:47 30.532230
2015-10-23 14:25:31 10.910886
2015-10-23 14:36:05 31.534557
2015-10-23 14:47:50 13.552525
2015-10-23 15:14:25 27.485792
2015-10-23 15:36:54 19.136787
2015-10-23 15:39:17 26.371215
2015-10-23 15:51:58 17.623757
2015-10-23 16:03:43 26.704584
2015-10-23 16:14:34 36.172465
2015-10-23 16:37:56 24.153054
2015-10-23 16:39:04 27.510917
2015-10-23 16:42:38 34.642728
2015-10-23 16:47:07 16.144607
2015-10-23 17:17:42 18.210857
2015-10-23 17:29:30 7.485977
2015-10-23 17:30:54 14.821554
2015-10-23 18:08:57 15.446337
2015-10-23 18:16:06 21.084892
2015-10-23 18:19:09 32.985346
2015-10-23 18:57:19 13.270245
2015-10-23 19:32:08 15.531714
2015-10-23 19:58:32 22.678874
2015-10-23 19:58:37 19.404605
2015-10-23 20:14:39 23.996745
2015-10-23 20:23:36 18.409485
2015-10-23 20:28:04 21.749392
2015-10-23 20:28:35 25.759675
2015-10-23 20:36:14 20.225869
2015-10-23 20:42:16 16.523979
2015-10-23 20:46:01 9.328124
2015-10-23 20:51:55 30.186021
2015-10-23 21:51:09 15.092513
2015-10-23 22:13:42 16.576799
2015-10-23 22:18:18 20.801956
2015-10-23 23:03:05 33.220434
2015-10-23 23:11:28 3.468986
2015-10-23 23:30:00 24.980254
2015-10-24 00:01:41 14.899085
2015-10-24 00:11:45 18.882710
2015-10-24 00:19:33 14.917666
2015-10-24 00:39:46 14.611356
2015-10-24 00:50:17 8.291781
2015-10-24 01:01:09 32.224859
2015-10-24 01:04:35 12.116040
2015-10-24 01:08:54 3.540229
2015-10-24 01:13:28 29.955002
2015-10-24 01:15:36 10.685479
2015-10-24 01:23:34 4.333859
2015-10-24 01:35:40 31.906732
2015-10-24 01:38:00 19.858555
2015-10-24 02:14:49 27.823642
2015-10-24 02:35:30 30.243204
2015-10-24 02:56:57 27.224879
2015-10-24 03:16:19 17.359630
2015-10-24 03:20:17 23.114636
2015-10-24 03:29:55 17.968616
2015-10-24 03:40:09 18.797541
2015-10-24 03:45:18 15.543472
2015-10-24 04:03:12 21.289698
2015-10-24 04:05:39 14.368194
2015-10-24 04:07:10 37.529108
2015-10-24 04:07:56 22.403861
2015-10-24 04:08:05 29.825719
2015-10-24 04:14:01 28.857015
2015-10-24 04:30:39 31.655559
2015-10-24 05:34:32 20.618727
2015-10-24 05:49:02 19.895307
2015-10-24 06:28:49 17.667198
2015-10-24 06:43:33 19.604548
2015-10-24 06:51:14 13.292335
2015-10-24 07:22:27 32.916568
2015-10-24 07:43:00 30.530947
2015-10-24 07:46:31 15.630320
2015-10-24 07:50:05 36.094851
2015-10-24 07:55:17 14.727994
2015-10-24 08:09:17 35.615230
2015-10-24 08:13:31 3.374230
2015-10-24 08:22:08 28.994393
2015-10-24 08:30:07 8.709073
2015-10-24 08:36:27 12.166129
2015-10-24 08:55:56 25.880772
2015-10-24 08:59:09 15.914648
2015-10-24 09:03:51 35.387907
2015-10-24 09:14:33 32.588662
2015-10-24 09:23:09 9.715206
2015-10-24 09:32:06 19.990902
2015-10-24 09:43:24 35.738928
2015-10-24 10:00:30 12.302267
2015-10-24 10:02:57 17.440709
2015-10-24 10:13:00 8.191574
2015-10-24 10:32:48 5.744446
2015-10-24 10:43:28 5.611853
2015-10-24 11:48:06 13.573641
2015-10-24 12:14:01 8.347535
2015-10-24 12:17:50 5.136542
2015-10-24 12:24:46 20.709564
2015-10-24 12:36:41 7.565246
2015-10-24 12:52:49 29.624084
2015-10-24 13:00:24 29.713121
2015-10-24 13:12:11 18.456777
2015-10-24 13:23:55 11.264648
2015-10-24 13:50:21 12.524692
2015-10-24 13:50:23 13.847150
2015-10-24 14:53:02 11.844761
2015-10-24 15:42:28 13.688625
2015-10-24 16:01:53 14.014548
2015-10-24 16:11:53 19.487640
2015-10-24 16:29:14 13.493671
2015-10-24 16:31:07 30.573025
2015-10-24 16:43:45 30.070133
2015-10-24 16:45:12 23.001359
2015-10-24 16:46:37 15.640681
2015-10-24 16:54:40 15.541255
2015-10-24 17:16:37 13.010382
2015-10-24 17:21:35 21.034331
2015-10-24 17:29:42 10.533891
2015-10-24 17:32:57 16.163425
2015-10-24 17:34:02 9.205656
2015-10-24 17:44:50 21.880140
2015-10-24 18:02:24 21.099017
2015-10-24 18:08:29 23.838431
2015-10-24 18:09:05 13.840718
2015-10-24 18:43:22 13.500420
2015-10-24 18:52:47 9.027780
2015-10-24 19:03:04 25.106092
2015-10-24 19:17:44 26.202501
2015-10-24 19:20:29 26.414528
2015-10-24 19:34:56 13.367800
2015-10-24 20:05:41 19.210336
2015-10-24 20:06:31 9.513509
2015-10-24 20:08:37 19.588526
2015-10-24 20:13:16 25.182741
2015-10-24 20:21:30 25.706475
2015-10-24 20:55:41 13.241693
2015-10-24 21:01:43 15.249657
2015-10-24 21:10:59 18.650854
2015-10-24 21:42:59 11.663895
2015-10-24 21:49:36 15.967304
2015-10-24 22:22:46 26.243780
2015-10-24 22:25:16 22.197560
2015-10-24 22:44:11 11.207257
2015-10-24 22:46:59 21.145070
2015-10-24 22:46:59 19.284440
2015-10-24 22:57:05 14.163063
2015-10-24 23:16:27 9.450620
2015-10-24 23:17:03 18.434140
2015-10-25 00:01:09 24.417248
2015-10-25 00:15:27 22.328697
2015-10-25 00:17:40 27.569425
2015-10-25 00:24:19 18.778384
2015-10-25 00:40:01 29.695369
2015-10-25 00:51:38 28.224715
2015-10-25 00:56:48 20.568090
2015-10-25 01:03:01 12.528874
2015-10-25 01:09:09 23.416298
2015-10-25 01:24:27 35.774203
2015-10-25 01:30:19 35.017588
2015-10-25 01:36:46 15.854556
2015-10-25 01:53:52 24.583600
2015-10-25 01:57:41 16.582313
2015-10-25 02:01:24 36.785131
2015-10-25 02:09:40 11.396241
2015-10-25 02:57:22 21.786939
2015-10-25 03:01:25 19.484790
2015-10-25 03:49:26 17.895142
2015-10-25 04:20:46 29.726704
2015-10-25 04:28:12 6.365252
2015-10-25 04:51:03 23.272001
2015-10-25 05:16:15 11.154273
2015-10-25 05:35:32 29.477854
2015-10-25 05:51:50 19.357380
2015-10-25 05:56:36 35.990674
2015-10-25 06:06:06 3.876221
2015-10-25 06:07:16 23.610348
2015-10-25 06:17:17 15.837558
2015-10-25 06:27:05 17.831027
2015-10-25 06:32:40 23.212585
2015-10-25 07:02:36 12.492665
2015-10-25 07:12:07 17.194266
2015-10-25 07:54:48 11.122795
2015-10-25 07:57:13 19.542182
2015-10-25 08:05:18 16.203565
2015-10-25 08:12:46 22.444751
2015-10-25 08:26:23 38.912543
2015-10-25 09:09:14 25.512180
2015-10-25 10:05:59 9.937115
2015-10-25 10:42:54 11.085878
2015-10-25 10:54:15 20.629891
2015-10-25 10:57:39 21.641392
2015-10-25 11:07:39 25.927652
2015-10-25 11:10:11 13.840443
2015-10-25 11:25:23 20.866951
2015-10-25 11:38:06 10.924171
2015-10-25 12:33:39 11.209960
2015-10-25 12:55:55 14.215079
2015-10-25 12:56:45 27.214242
2015-10-25 12:58:58 32.051209
2015-10-25 13:05:49 38.153452
2015-10-25 13:10:19 24.800756
2015-10-25 13:32:10 16.682505
2015-10-25 13:33:34 12.963376
2015-10-25 13:43:59 11.772861
2015-10-25 14:05:31 18.646844
2015-10-25 14:06:29 22.657938
2015-10-25 14:20:17 15.825160
2015-10-25 14:22:55 19.602839
2015-10-25 14:30:58 23.143213
2015-10-25 14:31:39 12.989419
2015-10-25 14:40:27 27.762283
2015-10-25 14:51:52 29.339674
2015-10-25 14:52:47 14.262038
2015-10-25 15:00:23 16.895755
2015-10-25 15:03:46 22.536438
2015-10-25 15:20:49 27.873838
2015-10-25 15:46:16 5.766525
2015-10-25 15:53:28 27.436980
2015-10-25 16:06:36 4.951878
2015-10-25 16:55:55 21.602308
2015-10-25 17:08:51 29.974356
2015-10-25 18:13:09 36.040846
2015-10-25 18:20:29 13.590471
2015-10-25 18:24:16 24.405622
2015-10-25 18:59:07 21.543160
2015-10-25 19:42:51 7.034301
2015-10-25 19:43:04 16.018952
2015-10-25 19:45:54 6.464795
2015-10-25 19:52:53 20.015932
2015-10-25 19:59:27 23.872172
2015-10-25 20:20:36 6.801017
2015-10-25 20:45:17 17.639643
2015-10-25 21:07:14 14.146407
2015-10-25 21:20:14 29.207344
2015-10-25 21:34:27 23.086044
2015-10-25 21:34:45 18.685165
2015-10-25 21:46:02 11.519158
2015-10-25 21:58:32 16.778935
2015-10-25 22:05:35 22.861365
2015-10-25 22:22:46 4.477698
2015-10-25 22:40:50 30.364928
2015-10-25 23:42:41 18.097103
2015-10-25 23:49:44 21.407191
2015-10-26 00:15:12 21.830050
2015-10-26 00:20:51 35.111999
2015-10-26 00:22:26 16.474314
2015-10-26 00:55:37 28.948058
2015-10-26 01:02:32 17.410201
2015-10-26 01:11:05 5.650083
2015-10-26 01:11:33 27.119217
2015-10-26 01:20:13 34.377131
2015-10-26 01:29:48 31.513826
2015-10-26 01:30:09 10.150090
2015-10-26 01:34:23 23.257435
2015-10-26 01:34:40 21.373494
2015-10-26 01:49:59 22.293125
2015-10-26 02:00:35 17.961744
2015-10-26 02:05:59 10.535267
2015-10-26 02:12:51 27.968007
2015-10-26 02:25:31 7.909216
2015-10-26 02:32:34 23.589371
2015-10-26 02:39:01 32.882866
2015-10-26 03:02:29 16.127026
2015-10-26 03:04:45 2.424413
2015-10-26 03:07:03 13.965955
2015-10-26 03:08:00 11.293508
2015-10-26 03:11:22 20.318204
2015-10-26 03:33:27 9.687025
2015-10-26 03:43:06 12.313706
2015-10-26 03:43:18 26.627911
2015-10-26 03:45:28 6.605821
2015-10-26 04:06:23 22.553012
2015-10-26 04:31:35 6.362539
2015-10-26 04:34:00 1.880352
2015-10-26 04:37:26 7.806599
2015-10-26 04:40:19 28.388833
2015-10-26 04:48:26 24.337457
2015-10-26 05:30:43 20.702873
2015-10-26 05:54:41 8.760748
2015-10-26 06:01:36 20.353981
2015-10-26 06:10:02 7.440057
2015-10-26 06:19:51 24.305299
2015-10-26 06:24:38 20.199217
2015-10-26 06:27:32 26.890775
2015-10-26 06:35:03 13.720630
2015-10-26 06:44:19 22.516922
2015-10-26 06:46:23 26.236660
2015-10-26 06:54:12 6.164736
2015-10-26 07:12:42 29.225423
2015-10-26 07:18:45 2.541620
2015-10-26 07:27:51 19.748843
2015-10-26 07:28:35 18.629947
2015-10-26 07:30:24 21.492807
2015-10-26 08:05:40 30.676615
2015-10-26 08:07:48 27.743591
2015-10-26 08:25:45 11.155979
2015-10-26 08:48:24 35.673641
2015-10-26 09:00:56 24.083618
2015-10-26 09:22:24 29.339891
2015-10-26 09:23:04 9.010886
2015-10-26 09:24:16 12.934983
2015-10-26 09:49:32 17.531019
2015-10-26 09:52:21 31.822392
2015-10-26 10:05:28 19.068476
2015-10-26 10:06:32 6.142128
2015-10-26 10:09:12 15.914329
2015-10-26 10:12:24 19.733454
2015-10-26 10:26:18 7.167233
2015-10-26 10:45:25 17.041633
2015-10-26 10:49:19 37.307322
2015-10-26 11:35:26 9.971110
2015-10-26 11:57:37 23.996322
2015-10-26 12:05:11 28.636649
2015-10-26 12:57:15 14.543358
2015-10-26 13:04:21 26.006360
2015-10-26 13:11:37 11.983168
2015-10-26 13:16:53 11.317868
2015-10-26 13:21:57 18.358191
2015-10-26 13:52:38 18.575016
2015-10-26 14:02:00 13.293359
2015-10-26 14:03:47 15.597069
2015-10-26 14:05:44 11.560628
2015-10-26 14:15:13 21.923801
2015-10-26 14:28:56 30.104583
2015-10-26 15:02:11 19.982949
2015-10-26 15:12:49 5.951358
2015-10-26 15:27:48 18.428602
2015-10-26 15:38:02 31.812915
2015-10-26 15:42:41 24.244282
2015-10-26 16:15:58 20.472107
2015-10-26 16:29:08 28.827925
2015-10-26 16:46:41 19.628814
2015-10-26 17:43:41 19.779596
2015-10-26 18:11:17 29.545589
2015-10-26 18:16:08 10.458315
2015-10-26 18:19:22 25.871714
2015-10-26 18:28:33 7.309851
2015-10-26 18:30:00 22.871136
2015-10-26 18:46:23 23.016887
2015-10-26 18:52:08 31.888125
2015-10-26 18:52:38 15.872456
2015-10-26 19:02:34 21.736855
2015-10-26 19:03:50 35.640611
2015-10-26 19:15:08 20.434095
2015-10-26 19:16:02 38.364251
2015-10-26 19:22:42 19.916968
2015-10-26 19:27:04 19.909526
2015-10-26 19:48:03 19.737001
2015-10-26 19:53:27 25.499218
2015-10-26 20:54:37 12.099414
2015-10-26 21:41:12 21.347209
2015-10-26 21:50:32 15.697209
2015-10-26 22:03:01 22.118142
2015-10-26 22:09:51 37.681461
2015-10-26 22:16:08 18.017428
2015-10-26 22:29:52 20.814277
2015-10-26 22:45:12 20.334498
2015-10-26 23:03:44 12.338779
2015-10-26 23:13:22 30.826175
2015-10-26 23:57:35 34.624445
2015-10-26 23:59:00 10.143766
2015-10-27 00:12:47 20.921089
2015-10-27 00:21:37 4.161076
2015-10-27 00:23:09 22.095022
2015-10-27 00:41:26 28.210173
2015-10-27 01:08:35 17.573078
2015-10-27 01:13:45 24.898260
2015-10-27 01:54:23 29.096392
2015-10-27 02:06:33 24.664065
2015-10-27 02:28:17 18.229647
2015-10-27 02:50:44 27.045116
2015-10-27 03:11:57 22.711105
2015-10-27 03:17:38 21.892313
2015-10-27 03:28:31 1.834943
2015-10-27 03:34:33 11.672494
2015-10-27 03:35:38 22.457280
2015-10-27 03:42:23 15.334399
2015-10-27 03:54:29 30.453794
2015-10-27 03:59:50 18.515347
2015-10-27 04:03:20 27.862217
2015-10-27 04:21:58 22.075402
2015-10-27 04:23:30 16.577465
2015-10-27 04:46:04 33.917748
2015-10-27 05:09:25 26.771479
2015-10-27 05:20:07 16.975983
2015-10-27 05:31:19 5.896884
2015-10-27 05:33:42 9.704311
2015-10-27 05:44:14 19.888716
2015-10-27 05:45:35 12.176629
2015-10-27 05:51:40 17.789691
2015-10-27 06:09:13 20.182560
2015-10-27 06:20:46 7.297558
2015-10-27 06:51:20 19.073031
2015-10-27 06:54:17 23.098007
2015-10-27 06:54:31 18.416993
2015-10-27 07:03:26 11.417748
2015-10-27 07:11:34 25.302040
2015-10-27 07:13:17 10.355350
2015-10-27 07:15:27 16.875640
2015-10-27 07:26:42 28.261230
2015-10-27 07:28:57 26.794716
2015-10-27 07:43:32 1.840051
2015-10-27 07:44:35 22.780229
2015-10-27 07:45:16 22.913370
2015-10-27 07:48:14 23.502077
2015-10-27 08:09:07 20.597856
2015-10-27 08:24:22 15.742843
2015-10-27 08:39:14 4.300935
2015-10-27 08:39:17 14.751233
2015-10-27 08:58:08 13.106007
2015-10-27 09:46:45 13.329034
2015-10-27 10:23:35 16.583423
2015-10-27 10:33:22 16.827504
2015-10-27 10:43:46 12.249572
2015-10-27 11:58:31 23.706073
2015-10-27 12:40:46 25.660001
2015-10-27 12:44:24 35.462551
2015-10-27 12:51:30 12.644275
2015-10-27 12:54:57 14.066707
2015-10-27 12:55:51 25.789953
2015-10-27 13:05:12 19.518356
2015-10-27 13:06:06 12.342679
2015-10-27 13:10:45 26.810005
2015-10-27 13:24:28 12.999374
2015-10-27 13:38:28 21.557762
2015-10-27 13:44:08 22.698339
2015-10-27 14:06:46 22.291995
2015-10-27 14:27:14 20.133424
2015-10-27 15:26:55 24.908145
2015-10-27 15:29:01 31.190743
2015-10-27 15:34:20 22.448257
2015-10-27 15:56:23 16.165643
2015-10-27 16:31:40 17.544574
2015-10-27 16:38:11 24.487887
2015-10-27 16:38:29 35.758575
2015-10-27 18:00:35 22.130042
2015-10-27 18:21:49 3.823961
2015-10-27 18:33:49 21.366360
2015-10-27 18:35:29 28.956420
2015-10-27 19:34:59 30.530129
2015-10-27 19:47:47 9.887806
2015-10-27 20:01:12 34.600655
2015-10-27 20:01:27 20.517520
2015-10-27 20:13:33 28.409780
2015-10-27 20:25:38 22.410120
2015-10-27 20:31:06 18.890813
2015-10-27 20:40:28 16.661537
2015-10-27 20:43:03 17.734415
2015-10-27 20:44:52 32.645647
2015-10-27 20:49:10 7.219724
2015-10-27 20:53:59 12.918680
2015-10-27 21:14:05 25.439756
2015-10-27 21:23:46 15.551786
2015-10-27 21:39:43 19.765020
2015-10-27 21:55:22 16.457690
2015-10-27 22:55:54 10.293176
2015-10-27 23:11:21 1.781904
2015-10-27 23:37:09 19.880796
2015-10-27 23:50:44 13.011420
2015-10-27 23:57:49 19.132300
2015-10-28 01:11:01 15.046151
2015-10-28 01:25:03 37.352759
2015-10-28 01:32:14 13.062743
2015-10-28 01:32:17 34.842589
2015-10-28 01:48:50 20.422971
2015-10-28 02:19:21 31.749759
2015-10-28 02:22:49 33.801223
2015-10-28 02:52:58 19.938320
2015-10-28 02:59:40 13.603916
2015-10-28 03:15:32 11.825927
2015-10-28 03:44:31 13.562697
2015-10-28 03:52:34 20.342015
2015-10-28 04:05:26 28.632022
2015-10-28 04:06:15 34.699990
2015-10-28 04:28:47 35.015636
2015-10-28 04:40:01 25.312763
2015-10-28 04:54:10 27.380108
2015-10-28 04:58:38 8.946983
2015-10-28 04:59:24 23.729636
2015-10-28 05:16:59 20.390630
2015-10-28 05:21:43 16.259039
2015-10-28 05:28:36 13.635565
2015-10-28 05:52:20 29.241959
2015-10-28 05:53:42 14.467571
2015-10-28 05:57:39 14.124179
2015-10-28 05:57:41 22.979674
2015-10-28 06:11:05 13.443790
2015-10-28 06:18:22 27.598373
2015-10-28 06:39:49 20.445029
2015-10-28 06:41:37 15.755541
2015-10-28 06:43:14 9.550570
2015-10-28 06:52:00 15.505543
2015-10-28 07:28:52 13.627235
2015-10-28 07:39:43 9.594463
2015-10-28 07:52:18 24.911034
2015-10-28 07:57:34 20.907402
2015-10-28 08:05:30 13.716141
2015-10-28 08:21:56 17.905301
2015-10-28 08:29:56 20.654838
2015-10-28 08:43:38 7.000298
2015-10-28 09:26:46 10.060531
2015-10-28 09:59:54 29.130492
2015-10-28 10:05:46 18.134867
2015-10-28 10:21:26 31.447032
2015-10-28 10:22:28 6.563567
2015-10-28 10:35:43 26.086201
2015-10-28 11:00:29 24.154133
2015-10-28 11:32:02 24.041464
2015-10-28 11:52:01 21.026494
2015-10-28 11:57:58 4.561947
2015-10-28 12:15:24 9.129867
2015-10-28 12:16:13 18.894904
2015-10-28 12:45:27 13.386346
2015-10-28 12:54:44 23.991109
2015-10-28 12:58:53 10.017909
2015-10-28 13:11:50 11.151724
2015-10-28 13:24:59 13.999829
2015-10-28 13:37:56 16.601620
2015-10-28 13:43:07 32.986999
2015-10-28 13:46:11 21.432970
2015-10-28 13:56:43 31.913805
2015-10-28 13:57:47 10.665391
2015-10-28 14:08:10 22.652867
2015-10-28 14:21:35 13.863613
2015-10-28 14:25:10 27.361023
2015-10-28 14:53:29 22.984681
2015-10-28 14:58:35 10.894598
2015-10-28 15:17:12 33.211245
2015-10-28 15:53:34 22.432778
2015-10-28 15:58:25 24.169848
2015-10-28 16:18:35 31.478411
2015-10-28 16:37:29 7.055754
2015-10-28 16:47:24 22.505285
2015-10-28 16:56:51 11.695966
2015-10-28 17:04:53 25.050275
2015-10-28 17:26:15 16.620632
2015-10-28 17:28:30 27.097737
2015-10-28 18:04:44 28.453893
2015-10-28 18:05:18 24.909666
2015-10-28 18:06:57 19.052430
2015-10-28 18:28:01 17.453295
2015-10-28 18:39:54 10.787874
2015-10-28 18:48:50 26.564290
2015-10-28 18:51:30 17.332550
2015-10-28 19:12:12 6.906457
2015-10-28 19:26:57 28.445885
2015-10-28 19:34:21 18.751925
2015-10-28 19:40:23 25.112732
2015-10-28 19:54:32 5.455784
2015-10-28 20:34:02 26.858954
2015-10-28 21:20:53 20.756232
2015-10-28 21:47:32 27.514802
2015-10-28 21:54:52 8.121486
2015-10-28 22:08:39 32.430137
2015-10-28 22:21:14 7.281897
2015-10-28 22:25:09 35.140642
2015-10-28 22:37:09 9.679448
2015-10-28 22:55:09 26.069281
2015-10-28 23:03:00 22.208754
2015-10-28 23:35:10 14.436499
2015-10-28 23:36:23 14.407442
2015-10-28 23:39:11 32.351417
2015-10-28 23:43:45 25.337102
2015-10-28 23:48:49 34.405532
2015-10-29 00:08:30 5.629219
2015-10-29 00:11:32 8.838351
2015-10-29 00:12:49 36.416772
2015-10-29 00:31:27 31.404891
2015-10-29 00:56:29 10.104051
2015-10-29 01:18:55 26.652639
2015-10-29 01:29:51 31.607533
2015-10-29 01:36:50 14.057883
2015-10-29 01:50:58 14.669973
2015-10-29 02:22:29 10.860818
2015-10-29 03:05:24 19.707401
2015-10-29 03:09:27 12.767893
2015-10-29 03:18:41 11.406741
2015-10-29 03:53:20 6.829391
2015-10-29 04:25:35 18.626982
2015-10-29 04:35:12 25.249255
2015-10-29 04:38:09 20.066181
2015-10-29 04:58:33 32.633243
2015-10-29 05:03:40 19.815994
2015-10-29 05:35:30 7.393302
2015-10-29 05:35:51 30.079256
2015-10-29 05:53:17 11.413076
2015-10-29 06:30:46 11.697902
2015-10-29 06:45:54 31.190372
2015-10-29 07:10:02 20.639450
2015-10-29 07:42:10 18.345175
2015-10-29 07:47:37 13.468384
2015-10-29 07:49:18 23.132393
2015-10-29 07:56:38 25.347282
2015-10-29 08:03:29 9.159853
2015-10-29 08:13:44 20.831257
2015-10-29 08:50:12 20.813047
2015-10-29 08:52:14 11.684935
2015-10-29 08:52:52 16.810542
2015-10-29 09:00:52 20.083183
2015-10-29 09:07:07 9.500212
2015-10-29 09:14:31 22.865692
2015-10-29 09:22:00 11.315027
2015-10-29 09:27:18 10.933767
2015-10-29 09:54:27 12.687895
2015-10-29 10:03:07 12.946125
2015-10-29 10:25:16 8.493317
2015-10-29 10:31:29 14.026298
2015-10-29 10:36:39 17.014097
2015-10-29 11:15:07 36.140930
2015-10-29 11:15:37 26.717343
2015-10-29 11:40:54 13.078063
2015-10-29 11:42:26 19.879271
2015-10-29 11:44:24 22.017664
2015-10-29 11:46:37 15.966344
2015-10-29 12:24:48 26.322878
2015-10-29 12:36:46 10.881309
2015-10-29 12:54:46 36.767167
2015-10-29 12:57:21 18.178581
2015-10-29 12:58:36 22.243434
2015-10-29 13:28:46 27.443501
2015-10-29 13:47:29 7.416418
2015-10-29 14:06:53 35.314750
2015-10-29 14:11:42 26.102493
2015-10-29 14:19:51 26.995712
2015-10-29 14:34:04 26.171102
2015-10-29 14:56:47 26.393210
2015-10-29 15:05:29 6.113279
2015-10-29 15:08:04 33.321112
2015-10-29 15:25:10 3.437277
2015-10-29 15:37:15 15.568660
2015-10-29 16:24:57 12.626890
2015-10-29 16:26:00 23.726236
2015-10-29 16:26:21 8.220824
2015-10-29 16:32:15 33.722738
2015-10-29 17:26:02 17.737118
2015-10-29 17:51:57 27.586605
2015-10-29 17:57:26 28.581947
2015-10-29 18:07:19 33.395729
2015-10-29 18:11:29 15.354501
2015-10-29 18:15:06 23.929336
2015-10-29 18:20:23 5.771780
2015-10-29 18:48:46 4.210084
2015-10-29 19:00:24 34.201755
2015-10-29 19:01:10 18.118718
2015-10-29 19:23:40 11.838202
2015-10-29 19:31:04 28.055038
2015-10-29 19:33:49 38.824234
2015-10-29 20:23:21 20.183617
2015-10-29 20:31:41 20.252920
2015-10-29 20:56:57 24.079136
2015-10-29 21:14:14 20.675881
2015-10-29 21:35:04 18.581834
2015-10-29 21:36:04 3.005562
2015-10-29 21:47:32 17.446180
2015-10-29 21:59:57 17.692749
2015-10-29 22:10:14 20.881251
2015-10-29 22:48:26 21.112933
2015-10-29 23:19:02 22.773156
2015-10-29 23:50:45 10.671286
2015-10-29 23:53:08 27.385016
2015-10-30 00:05:31 21.039398
2015-10-30 00:13:34 29.351822
2015-10-30 00:32:37 26.714346
2015-10-30 00:52:17 33.461080
2015-10-30 01:20:23 15.763921
2015-10-30 01:40:04 22.893475
2015-10-30 02:19:04 14.913339
2015-10-30 02:19:41 16.881445
2015-10-30 02:20:44 21.306120
2015-10-30 02:29:55 11.068579
2015-10-30 02:43:17 23.510960
2015-10-30 02:49:59 12.426567
2015-10-30 02:55:49 9.803671
2015-10-30 02:56:48 13.601980
2015-10-30 03:08:29 15.308122
2015-10-30 03:26:21 12.293308
2015-10-30 03:31:13 25.187776
2015-10-30 03:52:19 25.200361
2015-10-30 04:01:15 26.050907
2015-10-30 04:10:22 16.041492
2015-10-30 04:12:10 9.716074
2015-10-30 04:22:30 22.032446
2015-10-30 04:30:56 32.175466
2015-10-30 04:48:54 8.824220
2015-10-30 05:01:37 16.416996
2015-10-30 05:30:18 26.741802
2015-10-30 06:35:10 28.653171
2015-10-30 07:07:34 17.616891
2015-10-30 07:09:10 32.165879
2015-10-30 07:09:43 15.814351
2015-10-30 07:27:47 13.982874
2015-10-30 07:31:39 13.229002
2015-10-30 08:24:03 25.821707
2015-10-30 08:27:14 20.103947
2015-10-30 08:31:39 19.840905
2015-10-30 08:44:19 15.154233
2015-10-30 08:44:32 15.319994
2015-10-30 08:52:17 12.452035
2015-10-30 09:00:49 21.674978
2015-10-30 09:02:21 16.542822
2015-10-30 09:18:40 15.016618
2015-10-30 09:26:15 21.003799
2015-10-30 09:26:44 27.280290
2015-10-30 09:36:47 15.816813
2015-10-30 09:41:26 14.185396
2015-10-30 09:49:15 20.210829
2015-10-30 09:55:28 18.266201
2015-10-30 09:56:58 7.572945
2015-10-30 10:10:23 24.242163
2015-10-30 10:14:28 30.221902
2015-10-30 10:15:20 1.067303
2015-10-30 10:26:42 24.181480
2015-10-30 10:33:36 12.343618
2015-10-30 10:34:29 21.241147
2015-10-30 10:40:57 23.494210
2015-10-30 11:08:42 17.914192
2015-10-30 11:09:24 9.712991
2015-10-30 11:13:48 36.835152
2015-10-30 11:15:09 5.656043
2015-10-30 11:26:01 7.624941
2015-10-30 11:30:43 22.043926
2015-10-30 11:32:02 34.058479
2015-10-30 11:49:53 21.477600
2015-10-30 11:57:50 37.726762
2015-10-30 12:18:49 25.376942
2015-10-30 12:22:47 31.833041
2015-10-30 12:23:25 8.491811
2015-10-30 12:26:41 27.584047
2015-10-30 12:46:42 7.759069
2015-10-30 13:54:52 30.206207
2015-10-30 14:04:27 29.868823
2015-10-30 14:13:12 28.068979
2015-10-30 14:30:06 15.586651
2015-10-30 14:43:08 19.258297
2015-10-30 14:50:41 27.053775
2015-10-30 14:58:04 17.235405
2015-10-30 15:08:55 31.068870
2015-10-30 16:04:33 38.387732
2015-10-30 16:12:45 16.287305
2015-10-30 16:19:44 33.737380
2015-10-30 16:30:41 12.794018
2015-10-30 17:04:04 21.554267
2015-10-30 17:04:11 31.123454
2015-10-30 17:05:06 22.472866
2015-10-30 17:42:45 19.109189
2015-10-30 18:03:48 8.965514
2015-10-30 18:19:27 14.538760
2015-10-30 18:20:33 6.618785
2015-10-30 18:38:18 19.410505
2015-10-30 18:43:49 24.581237
2015-10-30 19:18:34 19.913452
2015-10-30 19:23:27 14.319365
2015-10-30 19:41:45 21.950001
2015-10-30 19:43:20 29.379711
2015-10-30 19:48:19 9.750124
2015-10-30 19:58:57 19.004112
2015-10-30 20:18:03 37.591036
2015-10-30 20:43:22 28.464328
2015-10-30 20:49:11 15.015707
2015-10-30 20:52:41 22.333341
2015-10-30 21:09:59 27.741250
2015-10-30 21:10:43 11.640426
2015-10-30 21:16:55 15.135784
2015-10-30 21:21:39 22.123494
2015-10-30 21:25:57 17.915621
2015-10-30 21:49:19 23.954026
2015-10-30 22:19:40 4.021746
2015-10-30 22:24:11 9.613415
2015-10-30 22:57:56 13.133139
2015-10-30 23:07:45 4.952637
2015-10-30 23:16:48 26.474205
2015-10-31 00:12:59 4.421879
2015-10-31 00:13:01 18.253691
2015-10-31 00:46:15 14.486119
2015-10-31 00:51:43 31.484788
2015-10-31 01:17:21 12.772337
2015-10-31 01:33:56 16.364104
2015-10-31 01:45:40 35.450027
2015-10-31 01:48:46 38.479671
2015-10-31 01:49:02 27.325173
2015-10-31 01:54:23 12.840285
2015-10-31 02:02:10 20.807145
2015-10-31 02:46:46 16.369698
2015-10-31 02:50:21 28.855674
2015-10-31 03:22:40 27.944654
2015-10-31 03:41:37 27.446450
2015-10-31 04:25:10 21.081974
2015-10-31 04:31:06 24.238055
2015-10-31 05:04:15 14.049404
2015-10-31 05:59:06 26.559184
2015-10-31 06:00:47 25.242968
2015-10-31 06:01:39 34.891026
2015-10-31 06:20:48 30.599200
2015-10-31 06:23:56 17.366746
2015-10-31 06:42:25 23.821349
2015-10-31 06:56:17 11.251934
2015-10-31 07:12:44 25.670211
2015-10-31 07:22:51 33.436930
2015-10-31 07:50:27 36.082648
2015-10-31 08:30:39 10.927193
2015-10-31 08:35:56 8.277269
2015-10-31 08:59:03 15.415538
2015-10-31 09:21:03 32.181583
2015-10-31 09:49:51 2.719154
2015-10-31 09:51:29 21.170975
2015-10-31 10:00:38 19.835044
2015-10-31 10:37:46 35.782245
2015-10-31 10:48:02 20.585977
2015-10-31 11:03:11 18.806353
2015-10-31 11:13:26 24.836634
2015-10-31 11:21:09 19.806278
2015-10-31 11:46:38 30.785157
2015-10-31 11:50:43 8.282494
2015-10-31 12:30:24 19.724971
2015-10-31 12:57:55 20.268650
2015-10-31 13:01:39 22.278925
2015-10-31 13:03:14 12.367646
2015-10-31 13:14:50 24.372004
2015-10-31 13:49:53 20.621253
2015-10-31 13:59:37 14.751192
2015-10-31 14:00:10 10.408624
2015-10-31 14:20:42 31.945120
2015-10-31 15:02:05 8.037941
2015-10-31 15:07:41 26.541515
2015-10-31 15:33:37 13.908973
2015-10-31 15:52:41 14.737002
2015-10-31 15:55:28 28.771564
2015-10-31 16:26:01 24.554983
2015-10-31 16:35:47 15.011016
2015-10-31 16:53:46 24.000616
2015-10-31 17:29:31 27.589842
2015-10-31 17:31:04 35.713119
2015-10-31 17:37:31 19.495046
2015-10-31 17:49:13 21.303044
2015-10-31 17:54:02 21.031095
2015-10-31 18:38:11 12.594886
2015-10-31 18:40:00 15.807672
2015-10-31 18:50:33 9.259209
2015-10-31 18:52:48 16.782744
2015-10-31 18:55:47 14.815882
2015-10-31 18:56:26 11.636250
2015-10-31 19:15:45 24.213435
2015-10-31 19:21:53 14.486916
2015-10-31 19:24:14 32.728819
2015-10-31 19:26:33 15.302234
2015-10-31 19:28:34 7.959237
2015-10-31 19:41:59 31.369263
2015-10-31 20:11:46 7.349745
2015-10-31 20:23:26 15.010710
2015-10-31 20:28:44 27.262566
2015-10-31 20:30:52 20.517552
2015-10-31 20:44:36 20.452720
2015-10-31 21:07:47 27.389651
2015-10-31 22:04:19 11.400498
2015-10-31 22:19:07 12.396629
2015-10-31 22:21:32 11.774302
2015-10-31 22:59:41 27.606285
2015-10-31 23:19:26 28.467733
2015-10-31 23:25:03 31.244255
2015-10-31 23:45:47 14.237196
2015-10-31 23:46:49 11.719533
2015-10-31 23:59:37 15.847017
2015-11-01 00:06:29 7.076831
2015-11-01 00:29:14 23.650243
2015-11-01 00:46:37 30.891522
2015-11-01 00:48:37 23.070343
2015-11-01 01:13:09 16.925815
2015-11-01 01:25:30 26.975276
2015-11-01 01:31:00 10.376045
2015-11-01 01:39:30 25.214665
2015-11-01 02:03:03 14.022721
2015-11-01 02:39:09 29.029274
2015-11-01 03:23:11 12.817853
2015-11-01 03:41:15 27.137068
2015-11-01 03:55:51 13.715517
2015-11-01 04:03:40 11.133035
2015-11-01 04:57:18 22.610985
2015-11-01 06:00:05 24.388115
2015-11-01 06:13:59 21.684017
2015-11-01 06:16:45 4.294392
2015-11-01 07:12:00 29.918730
2015-11-01 07:46:10 19.281998
2015-11-01 07:48:31 19.495424
2015-11-01 08:05:59 1.335991
2015-11-01 08:08:45 10.920037
2015-11-01 08:11:10 19.664501
2015-11-01 08:56:25 28.550303
2015-11-01 10:16:47 18.399540
2015-11-01 10:48:31 12.924725
2015-11-01 11:05:40 17.521240
2015-11-01 11:06:53 26.317390
2015-11-01 11:25:18 26.056817
2015-11-01 11:31:12 29.616021
2015-11-01 12:44:52 17.746786
2015-11-01 12:47:27 7.546854
2015-11-01 12:48:18 26.363689
2015-11-01 12:55:42 14.737645
2015-11-01 13:00:42 29.287755
2015-11-01 13:02:02 31.996311
2015-11-01 13:04:04 26.981273
2015-11-01 13:05:08 16.575896
2015-11-01 13:26:19 16.491862
2015-11-01 13:46:03 15.705421
2015-11-01 14:16:50 17.704946
2015-11-01 14:18:19 26.155266
2015-11-01 14:22:06 29.694279
2015-11-01 14:28:35 24.455547
2015-11-01 14:45:51 22.425873
2015-11-01 15:00:26 33.004309
2015-11-01 15:02:36 4.385275
2015-11-01 15:13:10 16.915401
2015-11-01 15:24:10 17.247719
2015-11-01 15:53:02 25.548663
2015-11-01 16:04:47 19.692654
2015-11-01 16:27:12 22.548459
2015-11-01 16:31:40 18.674775
2015-11-01 16:37:45 16.977700
2015-11-01 16:44:45 18.870444
2015-11-01 16:59:18 24.984427
2015-11-01 17:04:24 26.191839
2015-11-01 18:17:36 10.336158
2015-11-01 18:23:22 28.240343
2015-11-01 18:39:09 21.630708
2015-11-01 19:16:50 13.690378
2015-11-01 19:24:21 21.142271
2015-11-01 19:36:49 20.366756
2015-11-01 19:47:14 20.311729
2015-11-01 20:01:22 19.103980
2015-11-01 20:04:01 5.537197
2015-11-01 20:09:36 15.865447
2015-11-01 20:13:01 10.568377
2015-11-01 20:48:20 21.558668
2015-11-01 20:48:32 18.989392
2015-11-01 21:06:18 10.241452
2015-11-01 21:48:29 28.110783
2015-11-01 22:04:08 13.848839
2015-11-01 22:05:31 21.507690
2015-11-01 22:09:14 15.281430
2015-11-01 22:09:18 26.336684
2015-11-01 22:25:31 29.064266
2015-11-01 23:08:20 22.844104
2015-11-01 23:34:10 16.218705
2015-11-01 23:35:43 21.211707
Date Time WaterFlow
2015-10-23 01:00:00 18.810791
2015-10-23 02:00:00 43.087025
2015-10-23 03:00:00 37.987705
2015-10-23 04:00:00 36.120379
2015-10-23 05:00:00 31.851259
2015-10-23 06:00:00 28.238090
2015-10-23 07:00:00 9.863582
2015-10-23 08:00:00 26.679610
2015-10-23 09:00:00 55.773785
2015-10-23 10:00:00 54.156889
2015-10-23 11:00:00 68.374904
2015-10-23 12:00:00 55.710359
2015-10-23 13:00:00 56.968260
2015-10-23 14:00:00 17.206276
2015-10-23 15:00:00 35.093275
2015-10-23 16:00:00 44.424928
2015-10-23 17:00:00 57.322408
2015-10-23 18:00:00 37.344924
2015-10-23 19:00:00 11.483011
2015-10-23 20:00:00 32.117940
2015-10-23 21:00:00 49.081861
2015-10-23 22:00:00 49.133546
2015-10-23 23:00:00 42.064648
2015-10-24 00:00:00 58.380027
2015-10-24 01:00:00 53.408031
2015-10-24 02:00:00 42.332775
2015-10-24 03:00:00 45.922190
2015-10-24 04:00:00 32.741215
2015-10-24 05:00:00 47.879252
2015-10-24 06:00:00 47.460516
2015-10-24 07:00:00 52.264966
2015-10-24 08:00:00 35.389582
2015-10-24 09:00:00 14.435578
2015-10-24 10:00:00 45.038179
2015-10-24 11:00:00 38.896592
2015-10-24 12:00:00 39.991833
2015-10-24 13:00:00 56.883595
2015-10-24 14:00:00 62.728660
2015-10-24 15:00:00 67.382484
2015-10-24 16:00:00 29.645108
2015-10-24 17:00:00 51.586668
2015-10-24 18:00:00 61.987103
2015-10-24 19:00:00 46.394571
2015-10-24 20:00:00 32.838673
2015-10-24 21:00:00 53.416554
2015-10-24 22:00:00 70.723677
2015-10-24 23:00:00 21.570847
2015-10-25 00:00:00 66.762107
2015-10-25 01:00:00 36.322123
2015-10-25 02:00:00 45.114342
2015-10-25 03:00:00 53.473562
2015-10-25 04:00:00 27.209341
2015-10-25 05:00:00 44.193703
2015-10-25 06:00:00 59.296910
2015-10-25 07:00:00 42.253496
2015-10-25 08:00:00 44.747970
2015-10-25 09:00:00 50.182502
2015-10-25 10:00:00 32.303380
2015-10-25 11:00:00 44.413697
2015-10-25 12:00:00 42.844556
2015-10-25 13:00:00 56.282628
2015-10-25 14:00:00 54.936958
2015-10-25 15:00:00 20.406510
2015-10-25 16:00:00 60.954459
2015-10-25 17:00:00 55.811767
2015-10-25 18:00:00 68.008012
2015-10-25 19:00:00 20.964754
2015-10-25 20:00:00 50.112292
2015-10-25 21:00:00 24.172808
2015-10-25 22:00:00 17.131600
2015-10-25 23:00:00 41.938311
2015-10-26 00:00:00 70.376636
2015-10-26 01:00:00 34.387617
2015-10-26 02:00:00 30.377663
2015-10-26 03:00:00 41.567192
2015-10-26 04:00:00 72.172881
2015-10-26 05:00:00 45.745729
2015-10-26 06:00:00 42.294146
2015-10-26 07:00:00 28.883164
2015-10-26 08:00:00 55.506566
2015-10-26 09:00:00 19.228599
2015-10-26 10:00:00 39.454913
2015-10-26 11:00:00 28.521848
2015-10-26 12:00:00 22.614615
2015-10-26 13:00:00 8.513215
2015-10-26 14:00:00 38.228365
2015-10-26 15:00:00 23.388172
2015-10-26 16:00:00 59.546335
2015-10-26 17:00:00 20.342739
2015-10-26 18:00:00 40.198573
2015-10-26 19:00:00 42.636429
2015-10-26 20:00:00 40.250584
2015-10-26 21:00:00 33.603564
2015-10-26 22:00:00 33.921165
2015-10-26 23:00:00 6.574838
2015-10-27 00:00:00 68.451384
2015-10-27 01:00:00 14.722223
2015-10-27 02:00:00 40.885201
2015-10-27 03:00:00 37.432232
2015-10-27 04:00:00 22.449903
2015-10-27 05:00:00 49.813460
2015-10-27 06:00:00 38.930568
2015-10-27 07:00:00 22.183581
2015-10-27 08:00:00 17.156385
2015-10-27 09:00:00 55.683814
2015-10-27 10:00:00 4.681630
2015-10-27 11:00:00 30.998919
2015-10-27 12:00:00 11.136842
2015-10-27 13:00:00 30.650987
2015-10-27 14:00:00 56.688098
2015-10-27 15:00:00 32.445492
2015-10-27 16:00:00 41.242405
2015-10-27 17:00:00 44.380749
2015-10-27 18:00:00 55.343373
2015-10-27 19:00:00 14.175375
2015-10-27 20:00:00 51.636056
2015-10-27 21:00:00 49.038738
2015-10-27 22:00:00 33.515478
2015-10-27 23:00:00 35.479944
2015-10-28 00:00:00 54.753657
2015-10-28 01:00:00 42.308140
2015-10-28 02:00:00 30.650448
2015-10-28 03:00:00 38.951353
2015-10-28 04:00:00 23.330517
2015-10-28 05:00:00 26.130716
2015-10-28 06:00:00 68.184102
2015-10-28 07:00:00 17.891049
2015-10-28 08:00:00 7.689945
2015-10-28 09:00:00 34.479795
2015-10-28 10:00:00 5.768535
2015-10-28 11:00:00 55.996156
2015-10-28 12:00:00 52.156262
2015-10-28 13:00:00 48.276526
2015-10-28 14:00:00 29.068677
2015-10-28 15:00:00 51.055828
2015-10-28 16:00:00 50.142903
2015-10-28 17:00:00 35.699715
2015-10-28 18:00:00 41.009140
2015-10-28 19:00:00 70.126446
2015-10-28 20:00:00 22.225432
2015-10-28 21:00:00 54.659647
2015-10-28 22:00:00 50.467770
2015-10-28 23:00:00 35.307784
2015-10-29 00:00:00 44.072312
2015-10-29 01:00:00 36.433573
2015-10-29 02:00:00 65.174990
2015-10-29 03:00:00 39.027232
2015-10-29 04:00:00 21.882484
2015-10-29 05:00:00 16.475724
2015-10-29 06:00:00 29.737078
2015-10-29 07:00:00 44.677987
2015-10-29 08:00:00 9.726528
2015-10-29 09:00:00 32.252834
2015-10-29 10:00:00 36.463706
2015-10-29 11:00:00 18.570584
2015-10-29 12:00:00 47.179197
2015-10-29 13:00:00 16.814399
2015-10-29 14:00:00 21.411535
2015-10-29 15:00:00 78.303208
2015-10-29 16:00:00 37.809087
2015-10-29 17:00:00 46.143853
2015-10-29 18:00:00 58.575561
2015-10-29 19:00:00 10.668517
2015-10-29 20:00:00 40.423676
2015-10-29 21:00:00 42.632654
2015-10-29 22:00:00 17.024037
2015-10-29 23:00:00 38.288825
2015-10-30 00:00:00 61.935956
2015-10-30 01:00:00 16.267685
2015-10-30 02:00:00 50.454336
2015-10-30 03:00:00 64.303302
2015-10-30 04:00:00 36.859830
2015-10-30 05:00:00 19.045695
2015-10-30 06:00:00 51.206781
2015-10-30 07:00:00 43.157475
2015-10-30 08:00:00 66.533505
2015-10-30 09:00:00 46.407488
2015-10-30 10:00:00 31.593622
2015-10-30 11:00:00 32.880155
2015-10-30 12:00:00 32.330595
2015-10-30 13:00:00 44.101568
2015-10-30 14:00:00 30.998232
2015-10-30 15:00:00 69.575830
2015-10-30 16:00:00 28.656834
2015-10-30 17:00:00 40.347359
2015-10-30 18:00:00 73.769908
2015-10-30 19:00:00 30.711824
2015-10-30 20:00:00 39.900346
2015-10-30 21:00:00 41.396253
2015-10-30 22:00:00 14.918891
2015-10-30 23:00:00 48.476683
2015-10-31 00:00:00 54.804861
2015-10-31 01:00:00 74.841654
2015-10-31 02:00:00 31.581531
2015-10-31 03:00:00 60.288192
2015-10-31 04:00:00 22.568788
2015-10-31 05:00:00 42.800695
2015-10-31 06:00:00 41.309206
2015-10-31 07:00:00 14.657249
2015-10-31 08:00:00 35.299757
2015-10-31 09:00:00 23.238057
2015-10-31 10:00:00 36.344364
2015-10-31 11:00:00 34.088694
2015-10-31 12:00:00 41.491756
2015-10-31 13:00:00 42.307821
2015-10-31 14:00:00 46.513619
2015-10-31 15:00:00 59.169215
2015-10-31 16:00:00 49.514779
2015-10-31 17:00:00 9.835715
2015-10-31 18:00:00 30.380895
2015-10-31 19:00:00 40.075967
2015-10-31 20:00:00 53.075152
2015-10-31 21:00:00 26.581510
2015-10-31 22:00:00 37.963427
2015-10-31 23:00:00 67.098804
2015-11-01 00:00:00 9.541255
2015-11-01 01:00:00 50.560327
2015-11-01 02:00:00 48.675529
2015-11-01 03:00:00 50.790777
2015-11-01 04:00:00 39.647840
2015-11-01 05:00:00 71.594723
2015-11-01 06:00:00 45.642905
2015-11-01 07:00:00 22.403748
2015-11-01 08:00:00 42.583314
2015-11-01 09:00:00 48.973803
2015-11-01 10:00:00 36.391814
2015-11-01 11:00:00 39.451300
2015-11-01 12:00:00 48.231945
2015-11-01 13:00:00 23.238733
2015-11-01 14:00:00 29.103701
2015-11-01 15:00:00 24.890495
2015-11-01 16:00:00 39.501753
2015-11-01 17:00:00 3.553891
2015-11-01 18:00:00 41.188599
2015-11-01 19:00:00 41.303353
2015-11-01 20:00:00 17.858629
2015-11-01 21:00:00 28.382995
2015-11-01 22:00:00 51.696846
2015-11-01 23:00:00 60.225725
2015-11-02 00:00:00 18.710074
2015-11-02 01:00:00 69.677403
2015-11-02 02:00:00 70.643756
2015-11-02 03:00:00 32.130700
2015-11-02 04:00:00 43.286488
2015-11-02 05:00:00 46.519110
2015-11-02 06:00:00 49.418788
2015-11-02 07:00:00 22.603133
2015-11-02 08:00:00 17.204039
2015-11-02 09:00:00 36.098841
2015-11-02 10:00:00 37.426039
2015-11-02 11:00:00 68.958258
2015-11-02 12:00:00 56.355300
2015-11-02 13:00:00 27.421826
2015-11-02 14:00:00 21.977013
2015-11-02 15:00:00 31.650012
2015-11-02 16:00:00 19.103725
2015-11-02 17:00:00 40.573976
2015-11-02 18:00:00 34.139365
2015-11-02 19:00:00 31.604146
2015-11-02 20:00:00 53.455162
2015-11-02 21:00:00 50.932862
2015-11-02 22:00:00 21.382117
2015-11-02 23:00:00 28.707991
2015-11-03 00:00:00 28.266119
2015-11-03 01:00:00 56.643025
2015-11-03 02:00:00 65.491297
2015-11-03 03:00:00 45.264900
2015-11-03 04:00:00 32.083226
2015-11-03 05:00:00 20.034940
2015-11-03 06:00:00 59.361131
2015-11-03 07:00:00 63.062853
2015-11-03 08:00:00 36.311024
2015-11-03 09:00:00 28.786016
2015-11-03 10:00:00 41.529467
2015-11-03 11:00:00 15.911946
2015-11-03 12:00:00 50.859685
2015-11-03 13:00:00 43.005399
2015-11-03 14:00:00 34.650963
2015-11-03 15:00:00 53.490976
2015-11-03 16:00:00 30.670295
2015-11-03 17:00:00 11.915951
2015-11-03 18:00:00 24.722517
2015-11-03 19:00:00 38.936218
2015-11-03 20:00:00 35.450478
2015-11-03 21:00:00 45.970258
2015-11-03 22:00:00 56.407256
2015-11-03 23:00:00 49.554872
2015-11-04 00:00:00 48.358182
2015-11-04 01:00:00 16.816164
2015-11-04 02:00:00 19.084841
2015-11-04 03:00:00 49.944728
2015-11-04 04:00:00 21.617885
2015-11-04 05:00:00 26.981540
2015-11-04 06:00:00 51.754010
2015-11-04 07:00:00 35.729160
2015-11-04 08:00:00 71.273732
2015-11-04 09:00:00 28.418581
2015-11-04 10:00:00 16.964691
2015-11-04 11:00:00 47.892948
2015-11-04 12:00:00 50.257181
2015-11-04 13:00:00 48.595430
2015-11-04 14:00:00 49.996359
2015-11-04 15:00:00 48.920110
2015-11-04 16:00:00 68.161543
2015-11-04 17:00:00 30.529780
2015-11-04 18:00:00 55.694453
2015-11-04 19:00:00 47.145238
2015-11-04 20:00:00 50.778857
2015-11-04 21:00:00 47.658571
2015-11-04 22:00:00 26.331098
2015-11-04 23:00:00 67.761091
2015-11-05 00:00:00 51.085154
2015-11-05 01:00:00 41.117956
2015-11-05 02:00:00 9.068800
2015-11-05 03:00:00 61.260012
2015-11-05 04:00:00 20.384767
2015-11-05 05:00:00 23.371558
2015-11-05 06:00:00 54.130721
2015-11-05 07:00:00 47.173422
2015-11-05 08:00:00 17.330480
2015-11-05 09:00:00 27.900997
2015-11-05 10:00:00 60.693928
2015-11-05 11:00:00 55.750439
2015-11-05 12:00:00 31.980729
2015-11-05 13:00:00 46.026815
2015-11-05 14:00:00 51.486720
2015-11-05 15:00:00 35.083882
2015-11-05 16:00:00 29.222731
2015-11-05 17:00:00 38.054577
2015-11-05 18:00:00 32.803461
2015-11-05 19:00:00 34.590651
2015-11-05 20:00:00 7.041455
2015-11-05 21:00:00 43.879486
2015-11-05 22:00:00 54.260075
2015-11-05 23:00:00 49.607998
2015-11-06 00:00:00 51.166843
2015-11-06 01:00:00 60.332261
2015-11-06 02:00:00 54.000615
2015-11-06 03:00:00 48.402953
2015-11-06 04:00:00 71.293996
2015-11-06 05:00:00 25.864377
2015-11-06 06:00:00 43.534985
2015-11-06 07:00:00 10.294754
2015-11-06 08:00:00 27.211552
2015-11-06 09:00:00 68.771180
2015-11-06 10:00:00 40.635575
2015-11-06 11:00:00 48.547279
2015-11-06 12:00:00 51.211695
2015-11-06 13:00:00 62.323132
2015-11-06 14:00:00 36.042205
2015-11-06 15:00:00 65.867425
2015-11-06 16:00:00 43.091257
2015-11-06 17:00:00 49.999283
2015-11-06 18:00:00 42.753244
2015-11-06 19:00:00 43.280302
2015-11-06 20:00:00 12.215143
2015-11-06 21:00:00 30.790950
2015-11-06 22:00:00 43.146264
2015-11-06 23:00:00 24.862962
2015-11-07 00:00:00 60.419541
2015-11-07 01:00:00 2.829191
2015-11-07 02:00:00 41.358591
2015-11-07 03:00:00 32.518025
2015-11-07 04:00:00 32.936246
2015-11-07 05:00:00 53.903692
2015-11-07 06:00:00 54.349240
2015-11-07 07:00:00 48.667338
2015-11-07 08:00:00 43.697246
2015-11-07 09:00:00 64.391019
2015-11-07 10:00:00 54.642566
2015-11-07 11:00:00 31.579795
2015-11-07 12:00:00 10.697792
2015-11-07 13:00:00 69.408304
2015-11-07 14:00:00 57.739228
2015-11-07 15:00:00 54.043036
2015-11-07 16:00:00 21.378107
2015-11-07 17:00:00 68.557246
2015-11-07 18:00:00 49.990255
2015-11-07 19:00:00 60.870852
2015-11-07 20:00:00 15.231194
2015-11-07 21:00:00 35.271872
2015-11-07 22:00:00 47.834724
2015-11-07 23:00:00 39.042589
2015-11-08 00:00:00 31.282543
2015-11-08 01:00:00 34.318646
2015-11-08 02:00:00 45.695737
2015-11-08 03:00:00 34.761724
2015-11-08 04:00:00 41.324282
2015-11-08 05:00:00 22.815585
2015-11-08 06:00:00 63.250742
2015-11-08 07:00:00 13.839852
2015-11-08 08:00:00 46.006283
2015-11-08 09:00:00 44.493733
2015-11-08 10:00:00 63.378401
2015-11-08 11:00:00 42.817629
2015-11-08 12:00:00 45.072082
2015-11-08 13:00:00 46.040137
2015-11-08 14:00:00 11.573340
2015-11-08 15:00:00 39.922730
2015-11-08 16:00:00 40.153338
2015-11-08 17:00:00 63.037254
2015-11-08 18:00:00 48.776710
2015-11-08 19:00:00 53.306946
2015-11-08 20:00:00 41.484211
2015-11-08 21:00:00 45.348702
2015-11-08 22:00:00 54.969466
2015-11-08 23:00:00 47.595072
2015-11-09 00:00:00 40.591619
2015-11-09 01:00:00 43.363619
2015-11-09 02:00:00 65.789153
2015-11-09 03:00:00 29.012179
2015-11-09 04:00:00 38.944844
2015-11-09 05:00:00 26.349575
2015-11-09 06:00:00 33.638500
2015-11-09 07:00:00 8.524681
2015-11-09 08:00:00 7.047517
2015-11-09 09:00:00 71.864778
2015-11-09 10:00:00 33.775195
2015-11-09 11:00:00 34.524480
2015-11-09 12:00:00 13.277970
2015-11-09 13:00:00 20.951475
2015-11-09 14:00:00 42.715256
2015-11-09 15:00:00 51.101163
2015-11-09 16:00:00 8.718182
2015-11-09 17:00:00 23.884311
2015-11-09 18:00:00 44.208632
2015-11-09 19:00:00 47.094925
2015-11-09 20:00:00 25.140574
2015-11-09 21:00:00 33.723718
2015-11-09 22:00:00 23.366525
2015-11-09 23:00:00 41.851025
2015-11-10 00:00:00 28.565955
2015-11-10 01:00:00 49.010418
2015-11-10 02:00:00 76.953288
2015-11-10 03:00:00 33.641144
2015-11-10 04:00:00 61.127699
2015-11-10 05:00:00 61.822340
2015-11-10 06:00:00 22.690029
2015-11-10 07:00:00 52.496753
2015-11-10 08:00:00 26.962412
2015-11-10 09:00:00 55.912366
2015-11-10 10:00:00 38.827366
2015-11-10 11:00:00 51.170992
2015-11-10 12:00:00 38.982250
2015-11-10 13:00:00 36.403632
2015-11-10 14:00:00 45.511136
2015-11-10 15:00:00 35.450764
2015-11-10 16:00:00 12.781466
2015-11-10 17:00:00 34.596144
2015-11-10 18:00:00 19.863000
2015-11-10 19:00:00 61.422724
2015-11-10 20:00:00 37.871542
2015-11-10 21:00:00 44.714030
2015-11-10 22:00:00 52.438546
2015-11-10 23:00:00 21.870034
2015-11-11 00:00:00 42.775527
2015-11-11 01:00:00 37.075660
2015-11-11 02:00:00 55.922491
2015-11-11 03:00:00 21.725370
2015-11-11 04:00:00 27.383226
2015-11-11 05:00:00 26.474453
2015-11-11 06:00:00 24.992206
2015-11-11 07:00:00 29.420236
2015-11-11 08:00:00 18.593189
2015-11-11 09:00:00 19.401002
2015-11-11 10:00:00 30.797664
2015-11-11 11:00:00 53.005290
2015-11-11 12:00:00 29.785165
2015-11-11 13:00:00 48.478284
2015-11-11 14:00:00 41.000063
2015-11-11 15:00:00 55.985426
2015-11-11 16:00:00 23.593107
2015-11-11 17:00:00 16.929397
2015-11-11 18:00:00 26.105809
2015-11-11 19:00:00 27.278099
2015-11-11 20:00:00 35.966696
2015-11-11 21:00:00 62.321017
2015-11-11 22:00:00 22.551005
2015-11-11 23:00:00 32.326498
2015-11-12 00:00:00 36.768426
2015-11-12 01:00:00 16.655779
2015-11-12 02:00:00 50.903035
2015-11-12 03:00:00 32.744233
2015-11-12 04:00:00 43.446611
2015-11-12 05:00:00 12.872882
2015-11-12 06:00:00 43.626821
2015-11-12 07:00:00 17.932564
2015-11-12 08:00:00 46.430782
2015-11-12 09:00:00 47.555630
2015-11-12 10:00:00 23.164628
2015-11-12 11:00:00 36.320166
2015-11-12 12:00:00 41.829277
2015-11-12 13:00:00 65.063811
2015-11-12 14:00:00 53.996669
2015-11-12 15:00:00 53.065490
2015-11-12 16:00:00 36.048012
2015-11-12 17:00:00 23.164822
2015-11-12 18:00:00 38.652909
2015-11-12 19:00:00 48.085267
2015-11-12 20:00:00 39.547030
2015-11-12 21:00:00 36.281582
2015-11-12 22:00:00 22.304580
2015-11-12 23:00:00 39.054497
2015-11-13 00:00:00 62.456375
2015-11-13 01:00:00 21.058794
2015-11-13 02:00:00 24.986703
2015-11-13 03:00:00 47.340037
2015-11-13 04:00:00 42.103710
2015-11-13 05:00:00 46.277421
2015-11-13 06:00:00 41.346360
2015-11-13 07:00:00 8.198421
2015-11-13 08:00:00 49.820480
2015-11-13 09:00:00 52.630520
2015-11-13 10:00:00 14.320846
2015-11-13 11:00:00 29.429210
2015-11-13 12:00:00 46.610070
2015-11-13 13:00:00 27.718158
2015-11-13 14:00:00 43.646591
2015-11-13 15:00:00 58.249277
2015-11-13 16:00:00 37.955810
2015-11-13 17:00:00 53.167141
2015-11-13 18:00:00 17.003180
2015-11-13 19:00:00 36.987767
2015-11-13 20:00:00 69.421289
2015-11-13 21:00:00 42.282380
2015-11-13 22:00:00 60.299183
2015-11-13 23:00:00 77.388036
2015-11-14 00:00:00 38.187514
2015-11-14 01:00:00 73.920364
2015-11-14 02:00:00 23.427619
2015-11-14 03:00:00 74.049763
2015-11-14 04:00:00 71.025842
2015-11-14 05:00:00 36.310935
2015-11-14 06:00:00 69.727846
2015-11-14 07:00:00 47.318911
2015-11-14 08:00:00 54.552009
2015-11-14 09:00:00 22.047066
2015-11-14 10:00:00 33.286940
2015-11-14 11:00:00 44.805901
2015-11-14 12:00:00 30.968865
2015-11-14 13:00:00 32.250332
2015-11-14 14:00:00 60.449541
2015-11-14 15:00:00 17.006485
2015-11-14 16:00:00 42.845801
2015-11-14 17:00:00 47.528852
2015-11-14 18:00:00 39.715687
2015-11-14 19:00:00 23.905351
2015-11-14 20:00:00 60.468321
2015-11-14 21:00:00 16.016156
2015-11-14 22:00:00 24.913911
2015-11-14 23:00:00 52.127222
2015-11-15 00:00:00 31.771907
2015-11-15 01:00:00 33.992850
2015-11-15 02:00:00 12.282765
2015-11-15 03:00:00 50.596037
2015-11-15 04:00:00 31.542007
2015-11-15 05:00:00 20.514348
2015-11-15 06:00:00 27.990267
2015-11-15 07:00:00 70.663541
2015-11-15 08:00:00 44.674916
2015-11-15 09:00:00 22.821463
2015-11-15 10:00:00 28.171757
2015-11-15 11:00:00 38.060556
2015-11-15 12:00:00 28.251189
2015-11-15 13:00:00 20.650803
2015-11-15 14:00:00 42.038281
2015-11-15 15:00:00 33.657499
2015-11-15 16:00:00 24.628537
2015-11-15 17:00:00 62.740169
2015-11-15 18:00:00 37.227280
2015-11-15 19:00:00 66.834372
2015-11-15 20:00:00 54.885094
2015-11-15 21:00:00 38.741754
2015-11-15 22:00:00 52.565861
2015-11-15 23:00:00 42.011579
2015-11-16 00:00:00 1.884618
2015-11-16 01:00:00 33.697009
2015-11-16 02:00:00 35.136376
2015-11-16 03:00:00 52.342981
2015-11-16 04:00:00 56.699116
2015-11-16 05:00:00 55.563435
2015-11-16 06:00:00 45.758364
2015-11-16 07:00:00 50.659673
2015-11-16 08:00:00 40.169564
2015-11-16 09:00:00 24.979220
2015-11-16 10:00:00 47.796589
2015-11-16 11:00:00 35.726957
2015-11-16 12:00:00 54.028989
2015-11-16 13:00:00 45.341975
2015-11-16 14:00:00 48.476311
2015-11-16 15:00:00 33.640512
2015-11-16 16:00:00 30.864809
2015-11-16 17:00:00 20.844211
2015-11-16 18:00:00 19.803964
2015-11-16 19:00:00 36.264543
2015-11-16 20:00:00 31.291821
2015-11-16 21:00:00 10.358942
2015-11-16 22:00:00 31.271942
2015-11-16 23:00:00 39.143974
2015-11-17 00:00:00 40.599863
2015-11-17 01:00:00 4.404232
2015-11-17 02:00:00 60.532204
2015-11-17 03:00:00 42.654711
2015-11-17 04:00:00 11.865801
2015-11-17 05:00:00 22.798883
2015-11-17 06:00:00 32.524959
2015-11-17 07:00:00 65.957563
2015-11-17 08:00:00 26.382528
2015-11-17 09:00:00 33.062656
2015-11-17 10:00:00 18.365385
2015-11-17 11:00:00 59.433134
2015-11-17 12:00:00 38.719453
2015-11-17 13:00:00 70.619444
2015-11-17 14:00:00 51.069993
2015-11-17 15:00:00 29.489031
2015-11-17 16:00:00 15.808655
2015-11-17 17:00:00 39.223626
2015-11-17 18:00:00 47.080228
2015-11-17 19:00:00 41.980568
2015-11-17 20:00:00 61.214361
2015-11-17 21:00:00 23.836742
2015-11-17 22:00:00 35.213413
2015-11-17 23:00:00 66.174825
2015-11-18 00:00:00 11.472738
2015-11-18 01:00:00 40.944768
2015-11-18 02:00:00 73.297982
2015-11-18 03:00:00 21.705112
2015-11-18 04:00:00 13.445279
2015-11-18 05:00:00 33.855644
2015-11-18 06:00:00 38.425269
2015-11-18 07:00:00 7.564169
2015-11-18 08:00:00 20.792792
2015-11-18 09:00:00 47.126813
2015-11-18 10:00:00 38.557200
2015-11-18 11:00:00 30.619750
2015-11-18 12:00:00 27.548411
2015-11-18 13:00:00 34.697505
2015-11-18 14:00:00 36.676699
2015-11-18 15:00:00 30.025806
2015-11-18 16:00:00 44.290001
2015-11-18 17:00:00 31.476714
2015-11-18 18:00:00 16.554329
2015-11-18 19:00:00 28.467637
2015-11-18 20:00:00 60.756805
2015-11-18 21:00:00 53.156311
2015-11-18 22:00:00 43.736182
2015-11-18 23:00:00 44.678285
2015-11-19 00:00:00 32.500159
2015-11-19 01:00:00 53.096718
2015-11-19 02:00:00 50.450171
2015-11-19 03:00:00 20.671851
2015-11-19 04:00:00 48.500930
2015-11-19 05:00:00 55.872094
2015-11-19 06:00:00 16.955515
2015-11-19 07:00:00 47.782032
2015-11-19 08:00:00 64.182162
2015-11-19 09:00:00 19.123758
2015-11-19 10:00:00 26.630040
2015-11-19 11:00:00 24.693264
2015-11-19 12:00:00 14.882576
2015-11-19 13:00:00 54.702633
2015-11-19 14:00:00 28.045472
2015-11-19 15:00:00 44.237443
2015-11-19 16:00:00 53.989477
2015-11-19 17:00:00 44.208531
2015-11-19 18:00:00 44.145634
2015-11-19 19:00:00 40.174149
2015-11-19 20:00:00 75.699763
2015-11-19 21:00:00 33.688595
2015-11-19 22:00:00 60.315099
2015-11-19 23:00:00 37.811607
2015-11-20 00:00:00 62.216296
2015-11-20 01:00:00 21.923579
2015-11-20 02:00:00 50.856824
2015-11-20 03:00:00 9.506527
2015-11-20 04:00:00 39.037833
2015-11-20 05:00:00 47.392675
2015-11-20 06:00:00 39.774791
2015-11-20 07:00:00 48.835634
2015-11-20 08:00:00 46.283958
2015-11-20 09:00:00 48.833873
2015-11-20 10:00:00 41.321219
2015-11-20 11:00:00 49.126166
2015-11-20 12:00:00 26.070307
2015-11-20 13:00:00 37.334013
2015-11-20 14:00:00 44.013403
2015-11-20 15:00:00 63.076857
2015-11-20 16:00:00 44.009289
2015-11-20 17:00:00 53.765517
2015-11-20 18:00:00 6.907394
2015-11-20 19:00:00 51.625765
2015-11-20 20:00:00 64.845969
2015-11-20 21:00:00 23.791188
2015-11-20 22:00:00 41.551253
2015-11-20 23:00:00 45.032033
2015-11-21 00:00:00 30.722590
2015-11-21 01:00:00 37.643845
2015-11-21 02:00:00 33.978619
2015-11-21 03:00:00 59.975566
2015-11-21 04:00:00 24.821922
2015-11-21 05:00:00 24.426441
2015-11-21 06:00:00 58.768110
2015-11-21 07:00:00 47.487387
2015-11-21 08:00:00 41.046481
2015-11-21 09:00:00 32.077990
2015-11-21 10:00:00 61.332384
2015-11-21 11:00:00 33.779878
2015-11-21 12:00:00 68.860907
2015-11-21 13:00:00 28.228687
2015-11-21 14:00:00 41.392049
2015-11-21 15:00:00 55.493874
2015-11-21 16:00:00 41.741668
2015-11-21 17:00:00 54.743921
2015-11-21 18:00:00 51.711642
2015-11-21 19:00:00 21.725879
2015-11-21 20:00:00 45.572460
2015-11-21 21:00:00 29.984989
2015-11-21 22:00:00 31.946214
2015-11-21 23:00:00 74.120935
2015-11-22 00:00:00 39.799580
2015-11-22 01:00:00 28.923704
2015-11-22 02:00:00 34.125230
2015-11-22 03:00:00 47.261910
2015-11-22 04:00:00 31.905987
2015-11-22 05:00:00 53.219995
2015-11-22 06:00:00 26.944213
2015-11-22 07:00:00 54.151730
2015-11-22 08:00:00 31.557127
2015-11-22 09:00:00 47.108037
2015-11-22 10:00:00 16.939418
2015-11-22 11:00:00 56.867922
2015-11-22 12:00:00 56.924140
2015-11-22 13:00:00 7.143941
2015-11-22 14:00:00 49.925868
2015-11-22 15:00:00 58.971000
2015-11-22 16:00:00 34.281085
2015-11-22 17:00:00 42.682790
2015-11-22 18:00:00 36.855911
2015-11-22 19:00:00 22.575510
2015-11-22 20:00:00 43.106407
2015-11-22 21:00:00 57.423548
2015-11-22 22:00:00 60.982311
2015-11-22 23:00:00 19.184503
2015-11-23 00:00:00 27.031110
2015-11-23 01:00:00 24.985017
2015-11-23 02:00:00 41.859799
2015-11-23 03:00:00 7.230717
2015-11-23 04:00:00 24.225717
2015-11-23 05:00:00 46.453707
2015-11-23 06:00:00 51.230189
2015-11-23 07:00:00 44.442608
2015-11-23 08:00:00 49.115951
2015-11-23 09:00:00 32.865960
2015-11-23 10:00:00 23.082460
2015-11-23 11:00:00 34.718627
2015-11-23 12:00:00 66.163243
2015-11-23 13:00:00 68.177732
2015-11-23 14:00:00 42.731288
2015-11-23 15:00:00 65.160220
2015-11-23 16:00:00 18.855938
2015-11-23 17:00:00 28.938320
2015-11-23 18:00:00 4.388469
2015-11-23 19:00:00 44.976017
2015-11-23 20:00:00 35.722734
2015-11-23 21:00:00 45.347123
2015-11-23 22:00:00 22.781328
2015-11-23 23:00:00 43.114767
2015-11-24 00:00:00 24.184121
2015-11-24 01:00:00 43.356235
2015-11-24 02:00:00 35.089344
2015-11-24 03:00:00 42.129951
2015-11-24 04:00:00 65.064061
2015-11-24 05:00:00 31.054652
2015-11-24 06:00:00 43.142107
2015-11-24 07:00:00 33.909621
2015-11-24 08:00:00 25.199164
2015-11-24 09:00:00 26.900095
2015-11-24 10:00:00 54.820399
2015-11-24 11:00:00 36.714245
2015-11-24 12:00:00 58.612063
2015-11-24 13:00:00 48.918951
2015-11-24 14:00:00 55.173613
2015-11-24 15:00:00 34.770766
2015-11-24 16:00:00 4.595560
2015-11-24 17:00:00 17.717682
2015-11-24 18:00:00 63.682387
2015-11-24 19:00:00 16.459204
2015-11-24 20:00:00 39.174167
2015-11-24 21:00:00 5.544962
2015-11-24 22:00:00 51.408889
2015-11-24 23:00:00 71.206396
2015-11-25 00:00:00 20.604607
2015-11-25 01:00:00 45.903558
2015-11-25 02:00:00 47.996068
2015-11-25 03:00:00 51.515777
2015-11-25 04:00:00 27.643937
2015-11-25 05:00:00 19.950425
2015-11-25 06:00:00 42.934676
2015-11-25 07:00:00 33.758964
2015-11-25 08:00:00 60.198257
2015-11-25 09:00:00 64.822648
2015-11-25 10:00:00 26.160919
2015-11-25 11:00:00 44.729294
2015-11-25 12:00:00 28.503025
2015-11-25 13:00:00 75.771776
2015-11-25 14:00:00 27.112065
2015-11-25 15:00:00 49.403191
2015-11-25 16:00:00 38.397854
2015-11-25 17:00:00 38.091870
2015-11-25 18:00:00 43.485536
2015-11-25 19:00:00 13.170863
2015-11-25 20:00:00 52.137698
2015-11-25 21:00:00 43.204897
2015-11-25 22:00:00 37.660492
2015-11-25 23:00:00 31.197636
2015-11-26 00:00:00 34.074007
2015-11-26 01:00:00 64.403364
2015-11-26 02:00:00 61.575249
2015-11-26 03:00:00 32.426134
2015-11-26 04:00:00 30.168290
2015-11-26 05:00:00 37.227840
2015-11-26 06:00:00 18.700339
2015-11-26 07:00:00 27.573602
2015-11-26 08:00:00 48.217705
2015-11-26 09:00:00 45.173003
2015-11-26 10:00:00 18.890009
2015-11-26 11:00:00 27.141646
2015-11-26 12:00:00 14.635885
2015-11-26 13:00:00 30.364299
2015-11-26 14:00:00 8.753475
2015-11-26 15:00:00 18.768489
2015-11-26 16:00:00 39.735482
2015-11-26 17:00:00 13.730282
2015-11-26 18:00:00 44.824872
2015-11-26 19:00:00 39.809994
2015-11-26 20:00:00 28.565875
2015-11-26 21:00:00 43.661477
2015-11-26 22:00:00 55.906271
2015-11-26 23:00:00 31.129181
2015-11-27 00:00:00 19.962453
2015-11-27 01:00:00 42.683700
2015-11-27 02:00:00 59.089857
2015-11-27 03:00:00 23.640381
2015-11-27 04:00:00 26.785668
2015-11-27 05:00:00 40.640046
2015-11-27 06:00:00 35.918847
2015-11-27 07:00:00 48.929382
2015-11-27 08:00:00 25.118402
2015-11-27 09:00:00 34.981362
2015-11-27 10:00:00 8.636697
2015-11-27 11:00:00 59.959267
2015-11-27 12:00:00 18.643766
2015-11-27 13:00:00 17.155756
2015-11-27 14:00:00 5.500306
2015-11-27 15:00:00 14.505197
2015-11-27 16:00:00 24.883430
2015-11-27 17:00:00 54.744878
2015-11-27 18:00:00 55.735616
2015-11-27 19:00:00 32.256413
2015-11-27 20:00:00 38.956010
2015-11-27 21:00:00 60.020956
2015-11-27 22:00:00 69.425402
2015-11-27 23:00:00 8.688084
2015-11-28 00:00:00 42.970294
2015-11-28 01:00:00 27.727545
2015-11-28 02:00:00 38.962854
2015-11-28 03:00:00 13.365612
2015-11-28 04:00:00 31.819558
2015-11-28 05:00:00 33.103063
2015-11-28 06:00:00 30.924940
2015-11-28 07:00:00 26.308201
2015-11-28 08:00:00 9.565704
2015-11-28 09:00:00 13.830709
2015-11-28 10:00:00 48.527078
2015-11-28 11:00:00 29.341300
2015-11-28 12:00:00 56.402469
2015-11-28 13:00:00 24.985439
2015-11-28 14:00:00 36.644183
2015-11-28 15:00:00 26.098598
2015-11-28 16:00:00 24.020212
2015-11-28 17:00:00 50.831756
2015-11-28 18:00:00 56.770995
2015-11-28 19:00:00 47.023474
2015-11-28 20:00:00 59.280305
2015-11-28 21:00:00 37.453182
2015-11-28 22:00:00 72.102666
2015-11-28 23:00:00 30.348483
2015-11-29 00:00:00 53.805047
2015-11-29 01:00:00 22.456437
2015-11-29 02:00:00 60.534383
2015-11-29 03:00:00 16.088490
2015-11-29 04:00:00 36.382437
2015-11-29 05:00:00 59.246121
2015-11-29 06:00:00 45.077214
2015-11-29 07:00:00 45.120941
2015-11-29 08:00:00 38.232433
2015-11-29 09:00:00 19.465618
2015-11-29 10:00:00 38.230367
2015-11-29 11:00:00 18.690932
2015-11-29 12:00:00 20.769636
2015-11-29 13:00:00 61.135055
2015-11-29 14:00:00 27.915517
2015-11-29 15:00:00 30.520160
2015-11-29 16:00:00 28.824846
2015-11-29 17:00:00 69.571855
2015-11-29 18:00:00 37.361398
2015-11-29 19:00:00 38.282275
2015-11-29 20:00:00 46.356586
2015-11-29 21:00:00 24.056497
2015-11-29 22:00:00 53.198139
2015-11-29 23:00:00 35.252730
2015-11-30 00:00:00 43.607553
2015-11-30 01:00:00 60.174882
2015-11-30 02:00:00 17.935532
2015-11-30 03:00:00 68.517692
2015-11-30 04:00:00 29.962754
2015-11-30 05:00:00 61.862104
2015-11-30 06:00:00 20.989968
2015-11-30 07:00:00 60.410201
2015-11-30 08:00:00 59.574523
2015-11-30 09:00:00 56.018735
2015-11-30 10:00:00 24.071468
2015-11-30 11:00:00 49.377007
2015-11-30 12:00:00 38.429695
2015-11-30 13:00:00 26.261928
2015-11-30 14:00:00 66.245234
2015-11-30 15:00:00 32.917481
2015-11-30 16:00:00 25.103363
2015-11-30 17:00:00 27.791581
2015-11-30 18:00:00 46.185805
2015-11-30 19:00:00 33.197581
2015-11-30 20:00:00 45.298259
2015-11-30 21:00:00 15.820063
2015-11-30 22:00:00 19.494634
2015-11-30 23:00:00 39.350548
2015-12-01 00:00:00 39.319314
2015-12-01 01:00:00 2.474597
2015-12-01 02:00:00 41.595853
2015-12-01 03:00:00 15.030481
2015-12-01 04:00:00 71.055191
2015-12-01 05:00:00 52.047501
2015-12-01 06:00:00 72.879618
2015-12-01 07:00:00 37.068471
2015-12-01 08:00:00 34.298235
2015-12-01 09:00:00 41.579046
2015-12-01 10:00:00 40.660273
2015-12-01 11:00:00 61.635744
2015-12-01 12:00:00 43.405853
2015-12-01 13:00:00 18.588931
2015-12-01 14:00:00 47.898820
2015-12-01 15:00:00 33.526542
2015-12-01 16:00:00 53.297195
2015-12-01 17:00:00 29.570191
2015-12-01 18:00:00 18.813022
2015-12-01 19:00:00 32.032767
2015-12-01 20:00:00 43.580802
2015-12-01 21:00:00 29.927978
2015-12-01 22:00:00 65.725895
2015-12-01 23:00:00 14.997650
2015-12-02 00:00:00 21.467634
2015-12-02 01:00:00 35.542969
2015-12-02 02:00:00 67.452311
2015-12-02 03:00:00 57.589935
2015-12-02 04:00:00 35.194673
2015-12-02 05:00:00 46.114270
2015-12-02 06:00:00 35.049139
2015-12-02 07:00:00 34.855851
2015-12-02 08:00:00 31.369865
2015-12-02 09:00:00 43.440536
2015-12-02 10:00:00 5.292336
2015-12-02 11:00:00 15.588859
2015-12-02 12:00:00 45.724622
2015-12-02 13:00:00 46.292510
2015-12-02 14:00:00 38.483379
2015-12-02 15:00:00 51.287088
2015-12-02 16:00:00 35.419347
2015-12-02 17:00:00 38.717686
2015-12-02 18:00:00 53.184185
2015-12-02 19:00:00 66.245006
2015-12-02 20:00:00 40.550695
2015-12-02 21:00:00 57.073648
2015-12-02 22:00:00 49.285885
2015-12-02 23:00:00 22.874043
2015-12-03 00:00:00 46.236585
2015-12-03 01:00:00 77.101826
2015-12-03 02:00:00 49.775351
2015-12-03 03:00:00 71.134530
2015-12-03 04:00:00 58.448860
2015-12-03 05:00:00 58.534300
2015-12-03 06:00:00 28.555859
2015-12-03 07:00:00 39.062662
2015-12-03 08:00:00 16.662519
2015-12-03 09:00:00 27.000278
2015-12-03 10:00:00 44.246493
2015-12-03 11:00:00 72.966772
2015-12-03 12:00:00 31.483105
2015-12-03 13:00:00 66.816731
2015-12-03 14:00:00 42.936656
2015-12-03 15:00:00 33.401326
2015-12-03 16:00:00 66.681471

pipe.1 is recorded at uneven time intervals from 23 October 2015 to 1 November 2015, while pipe.2 is recorded at even hourly intervals from 23 October 2015 to 3 December 2015. Before more exploration can be performed, the data needs to be transformed into a time-base sequence and aggregate based on the hour. Moreover, there are multiple recordings within an hour for pipe1 since the count within a day is more than 24, therefore the hourly mean will be used. pipe.2 doesn’t require data transformation at this moment since the count within a day is no more than 24.

Number of Records per Day for Pipe 1
Var1 Freq
2015-10-23 96
2015-10-24 109
2015-10-25 95
2015-10-26 118
2015-10-27 99
2015-10-28 104
2015-10-29 96
2015-10-30 111
2015-10-31 91
2015-11-01 81
Number of Records per Day for Pipe 2
Var1 Freq
2015-10-23 23
2015-10-24 24
2015-10-25 24
2015-10-26 24
2015-10-27 24
2015-10-28 24
2015-10-29 24
2015-10-30 24
2015-10-31 24
2015-11-01 24
2015-11-02 24
2015-11-03 24
2015-11-04 24
2015-11-05 24
2015-11-06 24
2015-11-07 24
2015-11-08 24
2015-11-09 24
2015-11-10 24
2015-11-11 24
2015-11-12 24
2015-11-13 24
2015-11-14 24
2015-11-15 24
2015-11-16 24
2015-11-17 24
2015-11-18 24
2015-11-19 24
2015-11-20 24
2015-11-21 24
2015-11-22 24
2015-11-23 24
2015-11-24 24
2015-11-25 24
2015-11-26 24
2015-11-27 24
2015-11-28 24
2015-11-29 24
2015-11-30 24
2015-12-01 24
2015-12-02 24
2015-12-03 17

Data Transformation

With not much data tidying and transformation necessary, the data is made into a workable time series. The transformed data set now highlights there are at most 24 recordings per day, suggesting one recording every hour, whether the average of all recordings within another or not.

pipe.1 = pipe.1 %>% 
  mutate(Date = date(`Date Time`),
         Hour = hour(`Date Time`)) %>% 
  group_by(Date, Hour) %>% 
  summarize(WaterFlow = mean(WaterFlow)) %>% 
  ungroup() %>%
  mutate(DateTime = ymd_h(paste(Date, Hour))) %>% 
  select(DateTime, WaterFlow)
Number of Records per Day for Pipe 1
Var1 Freq
2015-10-23 24
2015-10-24 24
2015-10-25 24
2015-10-26 24
2015-10-27 23
2015-10-28 23
2015-10-29 24
2015-10-30 24
2015-10-31 24
2015-11-01 22
pipe.1.ts = ts(pipe.1$WaterFlow)
pipe.2.ts = ts(pipe.2$WaterFlow)
Descriptive Statistics of the Pipelines
n mean sd median trimmed mad min max range skew kurtosis se
pipe.1.ts 236 19.89 4.24 19.78 19.84 4.32 8.92 31.73 22.81 0.13 -0.17 0.28
pipe.2.ts 1000 39.56 16.05 39.68 39.46 16.73 1.88 78.30 76.42 0.03 -0.55 0.51
p1 = ggplot(pipe.1, aes(y = WaterFlow)) +
  geom_boxplot(fill = "steelblue2", outlier.shape = NA) +
  coord_flip() +
  theme(axis.text.y = element_blank(),
        axis.ticks.y = element_blank()) +
  labs(title ="Boxplots of Waterflow Pipelines",
       subtitle = "Pipeline #1")
p2 = ggplot(pipe.2, aes(y = WaterFlow)) +
  geom_boxplot(fill = "steelblue2") +
  coord_flip() +
  theme(axis.text.y = element_blank(),
        axis.ticks.y = element_blank()) +
  labs(subtitle = "Pipeline #2")
gridExtra::grid.arrange(p1, p2, ncol=1)

From the few summary statistics below, the mean water flow from pipeline #1 is 19.89 (\(\sigma = 4.24\)), whereas for pipeline #2, it is 39.56 (\(\sigma = 16.05\)). Pipeline #2 has more water flowing through it. With a near-zero skewness and kurtosis, the data seems to follow a normal distribution.


Time Series Features

By examining the time series’ characteristics, the best modeling technique to forecast a week’s worth of water-flow from each pipeline can be determined

Pipeline #1

The time plot depicts the unsteadiness of the series. There is no apparent seasonality and no distinct trend. The ACF and PACF highlight that the autocorrelations are all white noise. Altogether, the time series plot confirms that it is already stationary, STL decomposition cannot be used for forecasting and it will not require differencing.

ggtsdisplay(pipe.1.ts, main = "Waterflow from Pipeline #1", ylab = "Amount of Water", xlab = "Time")

For this time series, it seems helpful to stabilize the variability, therefore Box-Cox transformation was calculated. The optimal \(lambda=0.27\). While the transformation made little difference to the forecast, it will have a large effect on prediction intervals.

bct = function(ts, title){
  a = autoplot(ts) +
    labs(title = sprintf("Before: %s", title),
         x = "Time",
         y = "Amount of Water")
  lambda = BoxCox.lambda(ts)
  at = autoplot(BoxCox(ts, lambda)) +
    labs(title = sprintf("Transformed: %s", title),
         subtitle = sprintf("lambda = %0.2f", lambda),
         y = "Box-Cox Transformed",
         x = "Time")
  gridExtra::grid.arrange(a, at)
}
lambda = BoxCox.lambda(pipe.1.ts)
bct(pipe.1.ts, title = "Waterflow from Pipeline #1")

Exponential smoothing methods were considered to fit the time series based on the variability. This technique will determine a possible model based on the best values in the AICc. It is of no surprise that the ETS(A, N, N) model best fits the data, i.e. exponential smoothing with additive error, no trend component, and no seasonality.

pipe.1.ts %>% ets(lambda = lambda, biasadj = TRUE)
## ETS(A,N,N) 
## 
## Call:
##  ets(y = ., lambda = lambda, biasadj = TRUE) 
## 
##   Box-Cox transformation: lambda= 0.272 
## 
##   Smoothing parameters:
##     alpha = 1e-04 
## 
##   Initial states:
##     l = 4.5771 
## 
##   sigma:  0.4936
## 
##      AIC     AICc      BIC 
## 960.1697 960.2731 970.5612

Moreover, it was already determined that the number of differences required for time series to be made stationary is 0. And so, an ARIMA model is also considered. The unit root test resulted in a smaller than the 1% critical value, therefore, d = 0. Based on the ACF and PACF, there is no significant spike, making (p,q) = 0.

An \(ARIMA(p,d,q)\) model is where p = order of the autoregressive part, d = degree of first differencing involved, and q = order of the moving average part. Altogether, a possible model is ARIMA(0,0,0) with a non-zero mean. This was further confirmed by the auto.arima().

pipe.1.ts %>% BoxCox(lambda) %>% ur.kpss() %>% summary()
## 
## ####################### 
## # KPSS Unit Root Test # 
## ####################### 
## 
## Test is of type: mu with 4 lags. 
## 
## Value of test-statistic is: 0.2346 
## 
## Critical value for a significance level of: 
##                 10pct  5pct 2.5pct  1pct
## critical values 0.347 0.463  0.574 0.739
pipe.1.ts %>% auto.arima(lambda = lambda, biasadj = TRUE)
## Series: . 
## ARIMA(0,0,0) with non-zero mean 
## Box Cox transformation: lambda= 0.271971 
## 
## Coefficients:
##         mean
##       4.5771
## s.e.  0.0320
## 
## sigma^2 estimated as 0.2425:  log likelihood=-167.21
## AIC=338.42   AICc=338.47   BIC=345.35

Therefore, the proposed models that might be suitable for fitting the time series include:

Technique Proposed Model
Forecasting with Exponential Smoothing ETS(A, N, N)
Forecasting with ARIMA ARIMA(0,0,0) with non-zero mean

Pipeline #2

Similar to the time plot of pipeline #1, pipeline #2 depicts an unsteadiness in its series. There is no apparent seasonality and no distinct trend. The ACF and PACF highlight a few significant autocorrelations with no pattern. Altogether, the time series will undergo unit testing to determine if these autocorrelations can be distinguished from white noise. If no, then the data will be treated as stationary, and it will not require differencing.

ggtsdisplay(pipe.2.ts, main = "Waterflow from Pipeline #2", ylab = "Amount of Water", xlab = "Time")

Box-Cox transformation was calculated to help stabilize the variability. The optimal \(lambda=0.85\). Once again, the transformation made little difference to the forecast, it will have a large effect on prediction intervals.

lambda = BoxCox.lambda(pipe.2.ts)
bct(pipe.2.ts, title = "Waterflow from Pipeline #2")

As with pipeline #1, it is of no surprise that the ETS(A, N, N) model best fits the data, i.e. exponential smoothing with additive error, no trend component, and no seasonality.

pipe.2.ts %>% ets(lambda = lambda, biasadj = TRUE)
## ETS(A,N,N) 
## 
## Call:
##  ets(y = ., lambda = lambda, biasadj = TRUE) 
## 
##   Box-Cox transformation: lambda= 0.8493 
## 
##   Smoothing parameters:
##     alpha = 1e-04 
## 
##   Initial states:
##     l = 25.2727 
## 
##   sigma:  9.3622
## 
##      AIC     AICc      BIC 
## 11385.12 11385.14 11399.84

Moreover, the unit root test resulted in a smaller than all the critical ranges. This suggests that the time series is already stationary. And so, an ARIMA model is also considered. With, d = 0, no significant peak are at the first lag, (p,q) = 0. Altogether, a possible model is ARIMA(0,0,0) with a non-zero mean, which was further confirmed by the auto.arima().

pipe.2.ts %>% BoxCox(lambda) %>% ur.kpss() %>% summary()
## 
## ####################### 
## # KPSS Unit Root Test # 
## ####################### 
## 
## Test is of type: mu with 7 lags. 
## 
## Value of test-statistic is: 0.1067 
## 
## Critical value for a significance level of: 
##                 10pct  5pct 2.5pct  1pct
## critical values 0.347 0.463  0.574 0.739
pipe.2.ts %>% auto.arima(lambda = lambda, biasadj = TRUE)
## Series: . 
## ARIMA(0,0,0) with non-zero mean 
## Box Cox transformation: lambda= 0.8493285 
## 
## Coefficients:
##          mean
##       25.2700
## s.e.   0.2957
## 
## sigma^2 estimated as 87.55:  log likelihood=-3654.57
## AIC=7313.14   AICc=7313.15   BIC=7322.96

Therefore, the proposed models that might be suitable for fitting the time series include:

Technique Proposed Model
Forecasting with Exponential Smoothing ETS(A, N, N)
Forecasting with ARIMA ARIMA(0,0,0) with non-zero mean

Forecast & Model Comparison

Simple cross-validation with these models is conducted to measure the root mean squared error. Because it is expected that they both will forecast close to the mean of the data, \(\Delta RMSE\) will be very small.

ts_accuracy = function(tseries, time, rmse){
  # Split to train and test
  train = window(tseries, end = time)
  test = window(tseries, start = time + 1)
  # Finds optimal lambda
  lambda = BoxCox.lambda(tseries)
  # Forecast Models
  ets.model = train %>% ets(model = 'ANN', lambda = lambda, biasadj = TRUE)
  arima.model = train %>% Arima(order = c(0,0,0), lambda = lambda, biasadj = TRUE)
  # Forecast
  ets.fc = forecast(ets.model, h = length(test))$mean
  arima.fc = forecast(arima.model, h = length(test))$mean
  # Performance statistics
  accuracy = data.frame(RMSE = cbind(accuracy(ets.fc, test)[,2],
                                     accuracy(arima.fc, test)[,2],
                                     accuracy(ets.fc, test)[,2]-accuracy(arima.fc, test)[,2]))
  row.names(accuracy) = c(sprintf("Test Starting: %d", time + 1))
  names(accuracy) = c("ETS", "ARIMA", "Delta RMSE")
  # Returns RMSE
  if(rmse){accuracy}
}

From the tables below, the overall smallest RMSE is the ETS model for Pipeline #1, and ARIMA(0,0,0) for Pipeline #2. The difference between the fit is quite small. While one model may fit the training data slightly better than the other model, but the one with the more accurate forecasts on the test set is usually the best choice.

df.p1 = data.frame()
for (time in seq(150,222,24)){
  df.p1 = rbind(df.p1, ts_accuracy(pipe.1.ts, time, rmse = TRUE))
}
df.p1 = rbind(df.p1, Mean = colMeans(df.p1))
Pipeline #1: RMSE for Each Models
ETS ARIMA Delta RMSE
Test Starting: 151 4.46197 4.46250 -0.00053
Test Starting: 175 4.44947 4.44998 -0.00051
Test Starting: 199 3.46861 3.46857 0.00004
Test Starting: 223 3.21729 3.21755 -0.00026
Mean 3.89933 3.89965 -0.00031
df.p2 = data.frame()
for (time in seq(850,976,24)){
  df.p2 = rbind(df.p2, ts_accuracy(pipe.2.ts, time, rmse = TRUE))
}
df.p2 = rbind(df.p2, Mean = colMeans(df.p2))
Pipeline #2: RMSE for Each Models
ETS ARIMA Delta RMSE
Test Starting: 851 17.00739 17.00745 -0.00006
Test Starting: 875 16.54871 16.54855 0.00016
Test Starting: 899 16.88023 16.88028 -0.00006
Test Starting: 923 16.79999 16.79957 0.00042
Test Starting: 947 16.83745 16.83094 0.00651
Test Starting: 971 17.61152 17.60991 0.00161
Mean 16.94755 16.94612 0.00143

For pipeline #1 and #2, there is nothing odd among the residuals for either model, and the Ljung Box Test Statistic suggests that the models do not show a lack of fit.

## 
##  Ljung-Box test
## 
## data:  Residuals from ETS(A,N,N)
## Q* = 5.4338, df = 8, p-value = 0.7104
## 
## Model df: 2.   Total lags used: 10
## 
##  Ljung-Box test
## 
## data:  Residuals from ARIMA(0,0,0) with non-zero mean
## Q* = 5.4337, df = 9, p-value = 0.795
## 
## Model df: 1.   Total lags used: 10
## 
##  Ljung-Box test
## 
## data:  Residuals from ETS(A,N,N)
## Q* = 6.5634, df = 8, p-value = 0.5844
## 
## Model df: 2.   Total lags used: 10
## 
##  Ljung-Box test
## 
## data:  Residuals from ARIMA(0,0,0) with non-zero mean
## Q* = 6.564, df = 9, p-value = 0.6824
## 
## Model df: 1.   Total lags used: 10

And so, the forecast is determined for every hour within a day for a week. The following plots show that the forecast for both the ETS and ARIMA model fits on each other, i.e. both forecasted to be the mean. For pipeline #1, the ETS and ARIMA model forecast that the water-flow is expected to be 19.892, with ETS 95% PI = (11.778, 28.406) while ARIMA 95% PI = (11.795, 28.386). Whereas, for pipeline #1, the ETS and ARIMA model forecast that the water-flow is expected to be 39.52, with ETS 95% PI = (9.686, 72.560) while ARIMA 95% PI = (9.697, 72.537).

# Forecast
ets.fc.p1 = forecast(ets.model.p1, h = 7*24)
arima.fc.p1 = forecast(arima.model.p1, h = 7*24)

ets.fc.p2 = forecast(ets.model.p2, h = 7*24)
arima.fc.p2 = forecast(arima.model.p2, h = 7*24)


Final Forecast

Analytically, each model does a good job fitting both pipeline time series. Therefore, based on the performance statistics, the best model for each pipeline is:

  • Pipeline #1: ETS(A, N, N) with a Box-Cox Transformation of 0.27.
  • Pipeline #2: ARIMA(0, 0, 0) with a Box-Cox Transformation of 0.85.

Finally, let’s save the forecast.

date.pipe1 = seq(ymd_hms('2015-11-01 24:00:00'), ymd_hms('2015-11-08 23:00:00'), by = as.difftime(hours(1)))
date.pipe2 = seq(ymd_hms('2015-12-03 17:00:00'), ymd_hms('2015-12-10 16:00:00'), by = as.difftime(hours(1)))

# openxlsx::write.xlsx(data.frame('Date.Time' = date.pipe1, 
#                                 'WaterFlow' = ets.fc.p1$mean), "pipe1_forecasts_Deokinanan.xlsx")
# openxlsx::write.xlsx(data.frame('Date.Time' = date.pipe2, 
#                                 'WaterFlow' = arima.fc.p2$mean), "pipe2_forecasts_Deokinanan.xlsx")

A Week of Hourly Forecast for Pipelines 1 & 2

Pipeline 1
Pipeline 2
Date.Time WaterFlow
2015-11-02 00:00:00 19.8923011584809
2015-11-02 01:00:00 19.8923011591691
2015-11-02 02:00:00 19.8923011598574
2015-11-02 03:00:00 19.8923011605456
2015-11-02 04:00:00 19.8923011612339
2015-11-02 05:00:00 19.8923011619221
2015-11-02 06:00:00 19.8923011626104
2015-11-02 07:00:00 19.8923011632987
2015-11-02 08:00:00 19.8923011639869
2015-11-02 09:00:00 19.8923011646752
2015-11-02 10:00:00 19.8923011653634
2015-11-02 11:00:00 19.8923011660517
2015-11-02 12:00:00 19.8923011667399
2015-11-02 13:00:00 19.8923011674282
2015-11-02 14:00:00 19.8923011681164
2015-11-02 15:00:00 19.8923011688047
2015-11-02 16:00:00 19.8923011694929
2015-11-02 17:00:00 19.8923011701812
2015-11-02 18:00:00 19.8923011708694
2015-11-02 19:00:00 19.8923011715577
2015-11-02 20:00:00 19.892301172246
2015-11-02 21:00:00 19.8923011729342
2015-11-02 22:00:00 19.8923011736225
2015-11-02 23:00:00 19.8923011743107
2015-11-03 00:00:00 19.892301174999
2015-11-03 01:00:00 19.8923011756872
2015-11-03 02:00:00 19.8923011763755
2015-11-03 03:00:00 19.8923011770637
2015-11-03 04:00:00 19.892301177752
2015-11-03 05:00:00 19.8923011784402
2015-11-03 06:00:00 19.8923011791285
2015-11-03 07:00:00 19.8923011798168
2015-11-03 08:00:00 19.892301180505
2015-11-03 09:00:00 19.8923011811933
2015-11-03 10:00:00 19.8923011818815
2015-11-03 11:00:00 19.8923011825698
2015-11-03 12:00:00 19.892301183258
2015-11-03 13:00:00 19.8923011839463
2015-11-03 14:00:00 19.8923011846345
2015-11-03 15:00:00 19.8923011853228
2015-11-03 16:00:00 19.892301186011
2015-11-03 17:00:00 19.8923011866993
2015-11-03 18:00:00 19.8923011873875
2015-11-03 19:00:00 19.8923011880758
2015-11-03 20:00:00 19.8923011887641
2015-11-03 21:00:00 19.8923011894523
2015-11-03 22:00:00 19.8923011901406
2015-11-03 23:00:00 19.8923011908288
2015-11-04 00:00:00 19.8923011915171
2015-11-04 01:00:00 19.8923011922053
2015-11-04 02:00:00 19.8923011928936
2015-11-04 03:00:00 19.8923011935818
2015-11-04 04:00:00 19.8923011942701
2015-11-04 05:00:00 19.8923011949583
2015-11-04 06:00:00 19.8923011956466
2015-11-04 07:00:00 19.8923011963349
2015-11-04 08:00:00 19.8923011970231
2015-11-04 09:00:00 19.8923011977114
2015-11-04 10:00:00 19.8923011983996
2015-11-04 11:00:00 19.8923011990879
2015-11-04 12:00:00 19.8923011997761
2015-11-04 13:00:00 19.8923012004644
2015-11-04 14:00:00 19.8923012011526
2015-11-04 15:00:00 19.8923012018409
2015-11-04 16:00:00 19.8923012025291
2015-11-04 17:00:00 19.8923012032174
2015-11-04 18:00:00 19.8923012039056
2015-11-04 19:00:00 19.8923012045939
2015-11-04 20:00:00 19.8923012052822
2015-11-04 21:00:00 19.8923012059704
2015-11-04 22:00:00 19.8923012066587
2015-11-04 23:00:00 19.8923012073469
2015-11-05 00:00:00 19.8923012080352
2015-11-05 01:00:00 19.8923012087234
2015-11-05 02:00:00 19.8923012094117
2015-11-05 03:00:00 19.8923012100999
2015-11-05 04:00:00 19.8923012107882
2015-11-05 05:00:00 19.8923012114764
2015-11-05 06:00:00 19.8923012121647
2015-11-05 07:00:00 19.892301212853
2015-11-05 08:00:00 19.8923012135412
2015-11-05 09:00:00 19.8923012142295
2015-11-05 10:00:00 19.8923012149177
2015-11-05 11:00:00 19.892301215606
2015-11-05 12:00:00 19.8923012162942
2015-11-05 13:00:00 19.8923012169825
2015-11-05 14:00:00 19.8923012176707
2015-11-05 15:00:00 19.892301218359
2015-11-05 16:00:00 19.8923012190472
2015-11-05 17:00:00 19.8923012197355
2015-11-05 18:00:00 19.8923012204238
2015-11-05 19:00:00 19.892301221112
2015-11-05 20:00:00 19.8923012218003
2015-11-05 21:00:00 19.8923012224885
2015-11-05 22:00:00 19.8923012231768
2015-11-05 23:00:00 19.892301223865
2015-11-06 00:00:00 19.8923012245533
2015-11-06 01:00:00 19.8923012252415
2015-11-06 02:00:00 19.8923012259298
2015-11-06 03:00:00 19.892301226618
2015-11-06 04:00:00 19.8923012273063
2015-11-06 05:00:00 19.8923012279945
2015-11-06 06:00:00 19.8923012286828
2015-11-06 07:00:00 19.8923012293711
2015-11-06 08:00:00 19.8923012300593
2015-11-06 09:00:00 19.8923012307476
2015-11-06 10:00:00 19.8923012314358
2015-11-06 11:00:00 19.8923012321241
2015-11-06 12:00:00 19.8923012328123
2015-11-06 13:00:00 19.8923012335006
2015-11-06 14:00:00 19.8923012341888
2015-11-06 15:00:00 19.8923012348771
2015-11-06 16:00:00 19.8923012355653
2015-11-06 17:00:00 19.8923012362536
2015-11-06 18:00:00 19.8923012369418
2015-11-06 19:00:00 19.8923012376301
2015-11-06 20:00:00 19.8923012383184
2015-11-06 21:00:00 19.8923012390066
2015-11-06 22:00:00 19.8923012396949
2015-11-06 23:00:00 19.8923012403831
2015-11-07 00:00:00 19.8923012410714
2015-11-07 01:00:00 19.8923012417596
2015-11-07 02:00:00 19.8923012424479
2015-11-07 03:00:00 19.8923012431361
2015-11-07 04:00:00 19.8923012438244
2015-11-07 05:00:00 19.8923012445126
2015-11-07 06:00:00 19.8923012452009
2015-11-07 07:00:00 19.8923012458892
2015-11-07 08:00:00 19.8923012465774
2015-11-07 09:00:00 19.8923012472657
2015-11-07 10:00:00 19.8923012479539
2015-11-07 11:00:00 19.8923012486422
2015-11-07 12:00:00 19.8923012493304
2015-11-07 13:00:00 19.8923012500187
2015-11-07 14:00:00 19.8923012507069
2015-11-07 15:00:00 19.8923012513952
2015-11-07 16:00:00 19.8923012520834
2015-11-07 17:00:00 19.8923012527717
2015-11-07 18:00:00 19.8923012534599
2015-11-07 19:00:00 19.8923012541482
2015-11-07 20:00:00 19.8923012548365
2015-11-07 21:00:00 19.8923012555247
2015-11-07 22:00:00 19.892301256213
2015-11-07 23:00:00 19.8923012569012
2015-11-08 00:00:00 19.8923012575895
2015-11-08 01:00:00 19.8923012582777
2015-11-08 02:00:00 19.892301258966
2015-11-08 03:00:00 19.8923012596542
2015-11-08 04:00:00 19.8923012603425
2015-11-08 05:00:00 19.8923012610307
2015-11-08 06:00:00 19.892301261719
2015-11-08 07:00:00 19.8923012624073
2015-11-08 08:00:00 19.8923012630955
2015-11-08 09:00:00 19.8923012637838
2015-11-08 10:00:00 19.892301264472
2015-11-08 11:00:00 19.8923012651603
2015-11-08 12:00:00 19.8923012658485
2015-11-08 13:00:00 19.8923012665368
2015-11-08 14:00:00 19.892301267225
2015-11-08 15:00:00 19.8923012679133
2015-11-08 16:00:00 19.8923012686015
2015-11-08 17:00:00 19.8923012692898
2015-11-08 18:00:00 19.892301269978
2015-11-08 19:00:00 19.8923012706663
2015-11-08 20:00:00 19.8923012713546
2015-11-08 21:00:00 19.8923012720428
2015-11-08 22:00:00 19.8923012727311
2015-11-08 23:00:00 19.8923012734193
Date.Time WaterFlow
2015-12-03 17:00:00 39.5229525523224
2015-12-03 18:00:00 39.5229525523224
2015-12-03 19:00:00 39.5229525523224
2015-12-03 20:00:00 39.5229525523224
2015-12-03 21:00:00 39.5229525523224
2015-12-03 22:00:00 39.5229525523224
2015-12-03 23:00:00 39.5229525523224
2015-12-04 00:00:00 39.5229525523224
2015-12-04 01:00:00 39.5229525523224
2015-12-04 02:00:00 39.5229525523224
2015-12-04 03:00:00 39.5229525523224
2015-12-04 04:00:00 39.5229525523224
2015-12-04 05:00:00 39.5229525523224
2015-12-04 06:00:00 39.5229525523224
2015-12-04 07:00:00 39.5229525523224
2015-12-04 08:00:00 39.5229525523224
2015-12-04 09:00:00 39.5229525523224
2015-12-04 10:00:00 39.5229525523224
2015-12-04 11:00:00 39.5229525523224
2015-12-04 12:00:00 39.5229525523224
2015-12-04 13:00:00 39.5229525523224
2015-12-04 14:00:00 39.5229525523224
2015-12-04 15:00:00 39.5229525523224
2015-12-04 16:00:00 39.5229525523224
2015-12-04 17:00:00 39.5229525523224
2015-12-04 18:00:00 39.5229525523224
2015-12-04 19:00:00 39.5229525523224
2015-12-04 20:00:00 39.5229525523224
2015-12-04 21:00:00 39.5229525523224
2015-12-04 22:00:00 39.5229525523224
2015-12-04 23:00:00 39.5229525523224
2015-12-05 00:00:00 39.5229525523224
2015-12-05 01:00:00 39.5229525523224
2015-12-05 02:00:00 39.5229525523224
2015-12-05 03:00:00 39.5229525523224
2015-12-05 04:00:00 39.5229525523224
2015-12-05 05:00:00 39.5229525523224
2015-12-05 06:00:00 39.5229525523224
2015-12-05 07:00:00 39.5229525523224
2015-12-05 08:00:00 39.5229525523224
2015-12-05 09:00:00 39.5229525523224
2015-12-05 10:00:00 39.5229525523224
2015-12-05 11:00:00 39.5229525523224
2015-12-05 12:00:00 39.5229525523224
2015-12-05 13:00:00 39.5229525523224
2015-12-05 14:00:00 39.5229525523224
2015-12-05 15:00:00 39.5229525523224
2015-12-05 16:00:00 39.5229525523224
2015-12-05 17:00:00 39.5229525523224
2015-12-05 18:00:00 39.5229525523224
2015-12-05 19:00:00 39.5229525523224
2015-12-05 20:00:00 39.5229525523224
2015-12-05 21:00:00 39.5229525523224
2015-12-05 22:00:00 39.5229525523224
2015-12-05 23:00:00 39.5229525523224
2015-12-06 00:00:00 39.5229525523224
2015-12-06 01:00:00 39.5229525523224
2015-12-06 02:00:00 39.5229525523224
2015-12-06 03:00:00 39.5229525523224
2015-12-06 04:00:00 39.5229525523224
2015-12-06 05:00:00 39.5229525523224
2015-12-06 06:00:00 39.5229525523224
2015-12-06 07:00:00 39.5229525523224
2015-12-06 08:00:00 39.5229525523224
2015-12-06 09:00:00 39.5229525523224
2015-12-06 10:00:00 39.5229525523224
2015-12-06 11:00:00 39.5229525523224
2015-12-06 12:00:00 39.5229525523224
2015-12-06 13:00:00 39.5229525523224
2015-12-06 14:00:00 39.5229525523224
2015-12-06 15:00:00 39.5229525523224
2015-12-06 16:00:00 39.5229525523224
2015-12-06 17:00:00 39.5229525523224
2015-12-06 18:00:00 39.5229525523224
2015-12-06 19:00:00 39.5229525523224
2015-12-06 20:00:00 39.5229525523224
2015-12-06 21:00:00 39.5229525523224
2015-12-06 22:00:00 39.5229525523224
2015-12-06 23:00:00 39.5229525523224
2015-12-07 00:00:00 39.5229525523224
2015-12-07 01:00:00 39.5229525523224
2015-12-07 02:00:00 39.5229525523224
2015-12-07 03:00:00 39.5229525523224
2015-12-07 04:00:00 39.5229525523224
2015-12-07 05:00:00 39.5229525523224
2015-12-07 06:00:00 39.5229525523224
2015-12-07 07:00:00 39.5229525523224
2015-12-07 08:00:00 39.5229525523224
2015-12-07 09:00:00 39.5229525523224
2015-12-07 10:00:00 39.5229525523224
2015-12-07 11:00:00 39.5229525523224
2015-12-07 12:00:00 39.5229525523224
2015-12-07 13:00:00 39.5229525523224
2015-12-07 14:00:00 39.5229525523224
2015-12-07 15:00:00 39.5229525523224
2015-12-07 16:00:00 39.5229525523224
2015-12-07 17:00:00 39.5229525523224
2015-12-07 18:00:00 39.5229525523224
2015-12-07 19:00:00 39.5229525523224
2015-12-07 20:00:00 39.5229525523224
2015-12-07 21:00:00 39.5229525523224
2015-12-07 22:00:00 39.5229525523224
2015-12-07 23:00:00 39.5229525523224
2015-12-08 00:00:00 39.5229525523224
2015-12-08 01:00:00 39.5229525523224
2015-12-08 02:00:00 39.5229525523224
2015-12-08 03:00:00 39.5229525523224
2015-12-08 04:00:00 39.5229525523224
2015-12-08 05:00:00 39.5229525523224
2015-12-08 06:00:00 39.5229525523224
2015-12-08 07:00:00 39.5229525523224
2015-12-08 08:00:00 39.5229525523224
2015-12-08 09:00:00 39.5229525523224
2015-12-08 10:00:00 39.5229525523224
2015-12-08 11:00:00 39.5229525523224
2015-12-08 12:00:00 39.5229525523224
2015-12-08 13:00:00 39.5229525523224
2015-12-08 14:00:00 39.5229525523224
2015-12-08 15:00:00 39.5229525523224
2015-12-08 16:00:00 39.5229525523224
2015-12-08 17:00:00 39.5229525523224
2015-12-08 18:00:00 39.5229525523224
2015-12-08 19:00:00 39.5229525523224
2015-12-08 20:00:00 39.5229525523224
2015-12-08 21:00:00 39.5229525523224
2015-12-08 22:00:00 39.5229525523224
2015-12-08 23:00:00 39.5229525523224
2015-12-09 00:00:00 39.5229525523224
2015-12-09 01:00:00 39.5229525523224
2015-12-09 02:00:00 39.5229525523224
2015-12-09 03:00:00 39.5229525523224
2015-12-09 04:00:00 39.5229525523224
2015-12-09 05:00:00 39.5229525523224
2015-12-09 06:00:00 39.5229525523224
2015-12-09 07:00:00 39.5229525523224
2015-12-09 08:00:00 39.5229525523224
2015-12-09 09:00:00 39.5229525523224
2015-12-09 10:00:00 39.5229525523224
2015-12-09 11:00:00 39.5229525523224
2015-12-09 12:00:00 39.5229525523224
2015-12-09 13:00:00 39.5229525523224
2015-12-09 14:00:00 39.5229525523224
2015-12-09 15:00:00 39.5229525523224
2015-12-09 16:00:00 39.5229525523224
2015-12-09 17:00:00 39.5229525523224
2015-12-09 18:00:00 39.5229525523224
2015-12-09 19:00:00 39.5229525523224
2015-12-09 20:00:00 39.5229525523224
2015-12-09 21:00:00 39.5229525523224
2015-12-09 22:00:00 39.5229525523224
2015-12-09 23:00:00 39.5229525523224
2015-12-10 00:00:00 39.5229525523224
2015-12-10 01:00:00 39.5229525523224
2015-12-10 02:00:00 39.5229525523224
2015-12-10 03:00:00 39.5229525523224
2015-12-10 04:00:00 39.5229525523224
2015-12-10 05:00:00 39.5229525523224
2015-12-10 06:00:00 39.5229525523224
2015-12-10 07:00:00 39.5229525523224
2015-12-10 08:00:00 39.5229525523224
2015-12-10 09:00:00 39.5229525523224
2015-12-10 10:00:00 39.5229525523224
2015-12-10 11:00:00 39.5229525523224
2015-12-10 12:00:00 39.5229525523224
2015-12-10 13:00:00 39.5229525523224
2015-12-10 14:00:00 39.5229525523224
2015-12-10 15:00:00 39.5229525523224
2015-12-10 16:00:00 39.5229525523224