Overview

This project includes 3 time series dataset and requires to select best forecasting model for all 3 datasets.

  • Part A - ATM Forecast
  • Part B - Forecasting Power
  • Part C - Waterflow Pipe

Part A - ATM Forecast

The dataset contains cash withdrawals from 4 different ATM machines from May 2009 to Apr 2010. The variable ‘Cash’ is provided in hundreds of dollars and data is in a single file. Before starting our analysis we will first download the excel from github and then read it through read_excel.

Exploratory Analysis

temp.file <- tempfile(fileext = ".xlsx")
download.file(url="https://github.com/amit-kapoor/data624/blob/main/Project1/ATM624Data.xlsx?raw=true", 
              destfile = temp.file, 
              mode = "wb", 
              quiet = TRUE)
atm.data <- read_excel(temp.file, skip=0, col_types = c("date","text","numeric"))

glimpse(atm.data)
## Rows: 1,474
## Columns: 3
## $ DATE <dttm> 2009-05-01, 2009-05-01, 2009-05-02, 2009-05-02, 2009-05-03, 2009…
## $ ATM  <chr> "ATM1", "ATM2", "ATM1", "ATM2", "ATM1", "ATM2", "ATM1", "ATM2", "…
## $ Cash <dbl> 96, 107, 82, 89, 85, 90, 90, 55, 99, 79, 88, 19, 8, 2, 104, 103, …
# rows missing values
atm.data[!complete.cases(atm.data),]
## # A tibble: 19 x 3
##    DATE                ATM    Cash
##    <dttm>              <chr> <dbl>
##  1 2009-06-13 00:00:00 ATM1     NA
##  2 2009-06-16 00:00:00 ATM1     NA
##  3 2009-06-18 00:00:00 ATM2     NA
##  4 2009-06-22 00:00:00 ATM1     NA
##  5 2009-06-24 00:00:00 ATM2     NA
##  6 2010-05-01 00:00:00 <NA>     NA
##  7 2010-05-02 00:00:00 <NA>     NA
##  8 2010-05-03 00:00:00 <NA>     NA
##  9 2010-05-04 00:00:00 <NA>     NA
## 10 2010-05-05 00:00:00 <NA>     NA
## 11 2010-05-06 00:00:00 <NA>     NA
## 12 2010-05-07 00:00:00 <NA>     NA
## 13 2010-05-08 00:00:00 <NA>     NA
## 14 2010-05-09 00:00:00 <NA>     NA
## 15 2010-05-10 00:00:00 <NA>     NA
## 16 2010-05-11 00:00:00 <NA>     NA
## 17 2010-05-12 00:00:00 <NA>     NA
## 18 2010-05-13 00:00:00 <NA>     NA
## 19 2010-05-14 00:00:00 <NA>     NA

In the next set of plots, we will see the data distribution for all ATMs alongwith individual summaries.

ggplot(atm.data[complete.cases(atm.data),] , aes(x=DATE, y=Cash, col=ATM )) + 
  geom_line(show.legend = FALSE) + 
  facet_wrap(~ATM, ncol=1, scales = "free")

ggplot(atm.data[complete.cases(atm.data),] , aes(x=Cash )) + 
  geom_histogram(bins=20) + 
  facet_grid(cols=vars(ATM), scales = "free")

# consider complete cases
atm.comp <- atm.data[complete.cases(atm.data),]
# pivot wider with cols from 4 ATMs and their values as Cash
atm.comp <- atm.comp %>% pivot_wider(names_from = ATM, values_from = Cash)
head(atm.comp)
## # A tibble: 6 x 5
##   DATE                 ATM1  ATM2  ATM3  ATM4
##   <dttm>              <dbl> <dbl> <dbl> <dbl>
## 1 2009-05-01 00:00:00    96   107     0 777. 
## 2 2009-05-02 00:00:00    82    89     0 524. 
## 3 2009-05-03 00:00:00    85    90     0 793. 
## 4 2009-05-04 00:00:00    90    55     0 908. 
## 5 2009-05-05 00:00:00    99    79     0  52.8
## 6 2009-05-06 00:00:00    88    19     0  52.2
# summary
atm.comp %>% select(-DATE) %>% summary()
##       ATM1             ATM2             ATM3              ATM4          
##  Min.   :  1.00   Min.   :  0.00   Min.   : 0.0000   Min.   :    1.563  
##  1st Qu.: 73.00   1st Qu.: 25.50   1st Qu.: 0.0000   1st Qu.:  124.334  
##  Median : 91.00   Median : 67.00   Median : 0.0000   Median :  403.839  
##  Mean   : 83.89   Mean   : 62.58   Mean   : 0.7206   Mean   :  474.043  
##  3rd Qu.:108.00   3rd Qu.: 93.00   3rd Qu.: 0.0000   3rd Qu.:  704.507  
##  Max.   :180.00   Max.   :147.00   Max.   :96.0000   Max.   :10919.762  
##  NA's   :3        NA's   :2

Per above exploratory analysis, all ATMs show different patterns. We would perform forecasting for each ATM separately.

  • ATM1 and ATM2 shows similar pattern (approx.) throughout the time. ATM1 and ATM2 have 3 and 2 missing entries respectively.
  • ATM3 appears to become online in last 3 days only and rest of days appears inactive. So tha data available for this ATM is very limited.
  • ATM4 requires replacement for outlier and we can assume that one day spike of cash withdrawal is unique. It has an outlier showing withdrawl amount 10920.

Data Cleaning

For this part we will first apply ts() function to get required time series. Next step is to apply tsclean function that will handle missing data along with outliers. To estimate missing values and outlier replacements, this function uses linear interpolation on the (possibly seasonally adjusted) series. Once we get the clean data we will use pivot_longer to get the dataframe in its original form.

atm.ts <- ts(atm.comp %>% select(-DATE))
head(atm.ts)
## Time Series:
## Start = 1 
## End = 6 
## Frequency = 1 
##   ATM1 ATM2 ATM3      ATM4
## 1   96  107    0 776.99342
## 2   82   89    0 524.41796
## 3   85   90    0 792.81136
## 4   90   55    0 908.23846
## 5   99   79    0  52.83210
## 6   88   19    0  52.20845
# apply tsclean
atm.ts.cln <- sapply(X=atm.ts, tsclean)
atm.ts.cln %>% summary()
##       ATM1             ATM2             ATM3              ATM4         
##  Min.   :  1.00   Min.   :  0.00   Min.   : 0.0000   Min.   :   1.563  
##  1st Qu.: 73.00   1st Qu.: 26.00   1st Qu.: 0.0000   1st Qu.: 124.334  
##  Median : 91.00   Median : 67.00   Median : 0.0000   Median : 402.770  
##  Mean   : 84.15   Mean   : 62.59   Mean   : 0.7206   Mean   : 444.757  
##  3rd Qu.:108.00   3rd Qu.: 93.00   3rd Qu.: 0.0000   3rd Qu.: 704.192  
##  Max.   :180.00   Max.   :147.00   Max.   :96.0000   Max.   :1712.075

If we compare this summary with previous one of original data, ATM1 and ATM2 has nomore NAs and ATM4 outlier value (10919.762) is handled and now the max value is 1712.075.

# convert into data frame, pivot longer , arrange by ATM and bind with dates
atm.new <- as.data.frame(atm.ts.cln) %>% 
  pivot_longer(everything(), names_to = "ATM", values_to = "Cash") %>% 
  arrange(ATM)

atm.new <- cbind(DATE = seq(as.Date("2009-05-1"), as.Date("2010-04-30"), length.out=365), 
                 atm.new)

head(atm.new)
##         DATE  ATM Cash
## 1 2009-05-01 ATM1   96
## 2 2009-05-02 ATM1   82
## 3 2009-05-03 ATM1   85
## 4 2009-05-04 ATM1   90
## 5 2009-05-05 ATM1   99
## 6 2009-05-06 ATM1   88
ggplot(atm.new , aes(x=DATE, y=Cash, col=ATM )) + 
  geom_line(show.legend = FALSE) + 
  facet_wrap(~ATM, ncol=1, scales = "free")

Though above plot doesn’t show much differences for ATM1,2,3 but tsclean handled the ATM4 data very well after replacing the outlier.

Time Series

ATM1

Seeing the time series plot, it is clear that there is a seasonality in the data. We can see increasing and decreasing activities over the weeks in below plot. From the ACF plot, we can see a slight decrease in every 7th lag due to trend. PACF plot shows some significant lags at the beginning.

atm1.ts <- atm.new %>% filter(ATM=="ATM1") %>% select(Cash) %>% ts(frequency = 7)
ggtsdisplay(atm1.ts, main="ATM1 Cash Withdrawal", ylab="cash withdrawal", xlab="week")

From the above plots it is evident that the time series is non stationary, showing seasonality and will require differencing to make it stationary.

ggsubseriesplot(atm1.ts, main="ATM1 Cash Withdrawal")

From the subseries plot, it is apparent that Tuesdays having highest mean of ash withdrawl while Saturdays being the lowest.

Next step is to apply BoxCox transformation. With \(\lambda\) being 0.26, the resulting transformation does handle the variablity in time series as shown in below transformed plot.

atm1.lambda <- BoxCox.lambda(atm1.ts)
atm1.ts.bc <- BoxCox(atm1.ts, atm1.lambda )
ggtsdisplay(atm1.ts.bc, main=paste("ATM1 Cash Withdrawal",round(atm1.lambda, 3)), ylab="cash withdrawal", xlab="week")

Next we will see the number of differences required for a stationary series and the number of differences required for a seasonally stationary series.

# Number of differences required for a stationary series
ndiffs(atm1.ts.bc)
## [1] 0
# Number of differences required for a seasonally stationary series
nsdiffs(atm1.ts.bc)
## [1] 1

It shows number of differences required for a seasonality stationary series is 1. Next step is to check kpss summary.

atm1.ts.bc %>% 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

We can see the test statistic small and well within the range we would expect for stationary data. So we can conclude that the data are stationary.

atm1.ts.bc %>% diff(lag=7) %>% ggtsdisplay()

The data is non-stationary with seasonality so there will be a seasonal difference of 1. Finally, the differencing of the data has now made it stationary. From the ACF plot, it is apparent now that there is a significant spike at lag 7 but none beyond lag 7.

Lets start with Holt-Winter’s additive model with damped trend since the seasonal variations are roughly constant through out the series.

# Holt Winters with damped True
atm1.ts %>% hw(h=31, seasonal = "additive", lambda = atm1.lambda, damped = TRUE)
##          Point Forecast      Lo 80     Hi 80      Lo 95     Hi 95
## 53.14286      86.726308 48.2873323 144.09156 34.0075240 183.86219
## 53.28571      99.656005 56.7502143 162.78119 40.5780934 206.17461
## 53.42857      74.268913 40.2785592 125.84028 27.8645027 161.94499
## 53.57143       3.946722  0.9101988  11.36403  0.3067520  18.00566
## 53.71429      99.554782 56.6834213 162.63577 40.5259535 206.00148
## 53.85714      78.851329 43.2063605 132.58498 30.1007501 170.06058
## 54.00000      85.114307 47.2424187 141.74438 33.2015587 181.05113
## 54.14286      86.658670 45.6127105 150.10813 30.9111908 195.01621
## 54.28571      99.582554 53.7351794 169.36386 37.0454815 218.30796
## 54.42857      74.210981 37.9429783 131.29091 25.1978202 172.11308
## 54.57143       3.940224  0.7732156  12.30036  0.2189239  20.04980
## 54.71429      99.485702 53.6737241 169.22060 36.9987686 218.13522
## 54.85714      78.794338 40.7477446 138.25412 27.2771480 180.60622
## 55.00000      85.055212 44.6156330 147.70043 30.1637147 192.09415
## 55.14286      86.599982 43.2340302 155.85781 28.2323452 205.80698
## 55.28571      99.518822 51.0490613 175.64880 33.9793617 230.03192
## 55.42857      74.160715 35.8698562 136.50504 22.8992462 181.96358
## 55.57143       3.934588  0.6604831  13.21942  0.1555673  22.09545
## 55.71429      99.425760 50.9921256 175.50745 33.9371713 229.85958
## 55.85714      78.744887 38.5634686 143.67495 24.8394878 190.81691
## 56.00000      85.003935 42.2795812 153.39265 27.5361909 202.77913
## 56.14286      86.549058 41.0923732 161.39633 25.8838357 216.31745
## 56.28571      99.463519 48.6265521 181.69785 31.2829118 241.43875
## 56.42857      74.117099 34.0067798 141.53228 20.8914243 191.57013
## 56.57143       3.929701  0.5664429  14.12646  0.1096150  24.14933
## 56.71429      99.373745 48.5734860 181.55814 31.2445441 241.26666
## 56.85714      78.701976 36.5988213 148.89936 22.7069013 200.76969
## 57.00000      84.959439 40.1763734 158.87600 25.2333014 213.18774
## 57.14286      86.504867 39.1457044 166.76293 23.8038208 226.60572
## 57.28571      99.415528 46.4210490 187.55457 28.8873888 252.59311
## 57.42857      74.079250 32.3163685 146.40758 19.1195026 200.98424

Next is to apply exponential smoothing method on this time series. It shows that the ETS(A, N, A) model best fits for the transformed ATM4, i.e. exponential smoothing with additive error, no trend component and additive seasonality.

atm1.ts %>% ets(lambda = atm1.lambda )
## ETS(A,N,A) 
## 
## Call:
##  ets(y = ., lambda = atm1.lambda) 
## 
##   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

Next we will find out the appropriate ARIMA model for this time series. The suggested model seems ARIMA(0,0,2)(0,1,1)[7].

atm1.fit3 <- atm1.ts %>% auto.arima(lambda = atm1.lambda )
atm1.fit3
## 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

Next is to see residuals time series plot which shows residuals are being near normal with mean of the residuals being near to zero. Also there is no significant autocorrelation that confirms that forecasts are good.

checkresiduals(atm1.fit3)

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

Let’s plot the forecast for all the considered models above which will shows a nice visual comparison. it will also show a zoomed in plot to have a clearer view. For this, we will create a generic function which will accept the time series and plot the forecast using all the models.

# function to plot forecast(s)
atm.forecast <- function(timeseries) {
  # lambda value
  lambda <- BoxCox.lambda(timeseries)
  # models for forecast
  hw.model <- timeseries %>% hw(h=31, seasonal = "additive", lambda = lambda, damped = TRUE)
  ets.model <- timeseries %>% ets(lambda = lambda)
  arima.model <- timeseries %>% auto.arima(lambda = lambda)
  # forecast
  atm.hw.fcst <- forecast(hw.model, h=31)
  atm.ets.fcst <- forecast(ets.model, h=31)
  atm.arima.fcst <- forecast(arima.model, h=31)
  # plot forecasts
  p1 <- autoplot(timeseries) + 
    autolayer(atm.hw.fcst, PI=FALSE, series="Holt-Winters") + 
    autolayer(atm.ets.fcst, PI=FALSE, series="ETS") + 
    autolayer(atm.arima.fcst, PI=FALSE, series="ARIMA") + 
    theme(legend.position = "top") + 
    ylab("Cash Withdrawl") 
  # zoom in plot
  p2 <- p1 + 
    labs(title = "Zoom in ") + 
    xlim(c(51,56))
  
  grid.arrange(p1,p2,ncol=1)

}
atm1.arima.fcst <- forecast(atm1.fit3, h=31)
atm.forecast(atm1.ts)
## Scale for 'x' is already present. Adding another scale for 'x', which will
## replace the existing scale.

Now we will check the accuracy of all the models considered above. Again for this purpose, we have created a function that accepts the timeseries and atm num. In this function we will first divide the data for training and testing, train all models with train set and then find out RMSE using test data.

model_accuracy <- function(timeseries, atm_num) {
  # lambda value
  lambda <- BoxCox.lambda(timeseries)
  
  # split the data to train and test
  train <- window(timeseries, end=c(40, 3))
  test <- window(timeseries, start=c(40, 4))
  
  # models for forecast
  hw.model <- train %>% hw(h=length(train), seasonal = "additive", lambda = lambda, damped = TRUE)
  ets.model <- train %>% ets(model='ANA', lambda = lambda)
  
  # Arima model
  if (atm_num == 1) {
    # for ATM1
    arima.model <- train %>% Arima(order=c(0,0,2), 
                                        seasonal = c(0,1,1), 
                                        lambda = lambda)
  } else if(atm_num == 2) {
    # for ATM2
    arima.model <- train %>% Arima(order=c(3,0,3), 
                                        seasonal = c(0,1,1), 
                                        include.drift = TRUE, 
                                        lambda = lambda,
                                        biasadj = TRUE)
  } else {
    # for ATM4
    arima.model <- train %>% Arima(order=c(0,0,1), 
                                    seasonal = c(2,0,0), 
                                    lambda = lambda)
  }
  
  # forecast
  hw.frct = forecast(hw.model, h = length(test))$mean
  ets.frct = forecast(ets.model, h = length(test))$mean
  arima.frct = forecast(arima.model, h = length(test))$mean
  
  # dataframe having rmse
  rmse = data.frame(RMSE=cbind(accuracy(hw.frct, test)[,2],
                                   accuracy(ets.frct, test)[,2],
                                   accuracy(arima.frct, test)[,2]))
  names(rmse) = c("Holt-Winters", "ETS", "ARIMA")
  # display rmse
  rmse
}
model_accuracy(atm1.ts,1)
##   Holt-Winters      ETS    ARIMA
## 1     49.35115 49.22521 49.18074

ATM2

From the time series plot, it is apparent that there is a seasonality in the data but dont see a trend over the period. ACF shows teh significant lags at 7,14 and 21 confirming seasonality. From the PACF, there are few significant lags at the beginning but others within critical limit. Overall, it is non stationary, having seasonality and would require differencing for it to become stationary.

atm2.ts <- atm.new %>% filter(ATM=="ATM2") %>% select(Cash) %>% ts(frequency = 7)
ggtsdisplay(atm2.ts, main="ATM2 Cash Withdrawal", ylab="cash withdrawal", xlab="week")

From the subseries plot, it is clear that Sunday is having highest mean for cash withdrawl while Saturday has the lowest.

ggsubseriesplot(atm2.ts, main="ATM2 Cash Withdrawal")

Next step is to apply BoxCox transformation. With \(\lambda\) being 0.72, the resulting transformation does handle the variablity in time series as shown in below transformed plot.

atm2.lambda <- BoxCox.lambda(atm2.ts)
atm2.ts.bc <- BoxCox(atm2.ts, atm2.lambda )
ggtsdisplay(atm2.ts.bc, main=paste("ATM2 Cash Withdrawal",round(atm2.lambda, 3)), ylab="cash withdrawal", xlab="week")

# Number of differences required for a stationary series
ndiffs(atm2.ts.bc)
## [1] 1
# Number of differences required for a seasonally stationary series
nsdiffs(atm2.ts.bc)
## [1] 1

It shows number of differences required is 1 for boxcox transformed data.

atm2.ts.bc %>% diff(lag=7) %>% 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

We can see the test statistic small and well within the range we would expect for stationary data. So we can conclude that the data are stationary

atm2.ts.bc %>% diff(lag=7) %>% ggtsdisplay()

First we will start with Holt-Winters damped method. Damping is possible with both additive and multiplicative Holt-Winters’ methods. This method often provides accurate and robust forecasts for seasonal data is the Holt-Winters method with a damped trend.

# Holt Winters
atm2.ts %>% hw(h=31, seasonal = "additive", lambda = atm2.lambda, damped = TRUE)
##          Point Forecast      Lo 80     Hi 80     Lo 95     Hi 95
## 53.14286      67.727881  35.291267 105.26894  20.74561 126.87010
## 53.28571      74.012766  40.580383 112.34286  25.35441 134.30920
## 53.42857      10.844773  -3.254323  36.70434 -13.45333  53.31462
## 53.57143       1.648706 -13.353074  22.08418 -26.56518  36.83677
## 53.71429     101.948220  64.792300 143.32926  47.14368 166.72907
## 53.85714      92.500300  56.498440 132.92025  39.58380 155.86508
## 54.00000      68.866332  36.243721 106.55382  21.56968 128.22256
## 54.14286      67.775348  33.216555 108.21505  18.01659 131.58961
## 54.28571      74.059485  38.420870 115.33960  22.46113 139.10021
## 54.42857      10.871202  -4.387783  38.91404 -15.98503  57.04338
## 54.57143       1.663821 -14.982817  24.01057 -29.59257  40.21221
## 54.71429     101.993433  62.324951 146.52593  43.68529 171.80421
## 54.85714      92.542577  54.122362 136.04975  36.29148 160.84582
## 55.00000      68.903765  34.144880 109.49813  18.80244 132.94355
## 55.14286      67.811143  31.293904 110.99079  15.54866 136.05209
## 55.28571      74.094716  36.416629 118.16249  19.82956 143.62898
## 55.42857      10.891142  -5.535746  41.01325 -18.47284  60.59806
## 55.57143       1.675242 -16.563883  25.85263 -32.52085  43.44674
## 55.71429     102.027528  60.025873 149.53496  40.49965 176.59647
## 55.85714      92.574457  51.911131 138.99687  33.26820 165.55113
## 56.00000      68.931993  32.200914 112.27407  16.29845 137.40928
## 56.14286      67.838136  29.500528 113.62437  13.30674 140.29932
## 56.28571      74.121282  34.544212 120.84032  17.42301 147.93815
## 56.42857      10.906182  -6.688629  43.01959 -20.91749  64.00567
## 56.57143       1.683868 -18.101954  27.62307 -35.36252  46.56110
## 56.71429     102.053237  57.869192 152.38739  37.54566 181.15191
## 56.85714      92.598496  49.839436 141.79169  30.47392 170.02576
## 57.00000      68.953279  30.388346 114.90931  14.02175 141.66104
## 57.14286      67.858490  27.819168 116.13717  11.26493 144.36295
## 57.28571      74.141315  32.785857 123.39486  15.21412 152.06003
## 57.42857      10.917527  -7.840726  44.94651 -23.32042  67.28683

Next is to apply exponential smoothing method on this time series. It shows that the ETS(A, N, A) model best fits for the transformed ATM4, i.e. exponential smoothing with additive error, no trend component and additive seasonality.

# ETS
atm2.ts %>% ets(lambda = atm2.lambda)
## ETS(A,N,A) 
## 
## Call:
##  ets(y = ., lambda = atm2.lambda) 
## 
##   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

We will now find out the appropriate ARIMA model for this time series. The suggested model seeems ARIMA(3,0,3)(0,1,1)[7] with drift.

atm2.fit3 <- atm2.ts %>% auto.arima(lambda = atm2.lambda )
atm2.fit3
## 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

Next is to see residuals time series plot which shows residuals are being near normal with mean of the residuals being near to zero. Also there is no significant autocorrelation that confirms that forecasts are good.

checkresiduals(atm2.fit3)

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

Next step is to plot the forecast for all the considered models above which will shows a nice visual comparison. it will also show a zoomed in plot to have a clearer view.

atm2.arima.fcst <- forecast(atm2.fit3, h=31)
atm.forecast(atm2.ts)
## Scale for 'x' is already present. Adding another scale for 'x', which will
## replace the existing scale.

model_accuracy(atm2.ts,2)
##   Holt-Winters      ETS    ARIMA
## 1     57.20467 57.58101 56.58658

ATM3

atm3.ts <- atm.new %>% filter(ATM=="ATM3") %>% select(Cash) %>% ts(frequency = 7)
autoplot(atm3.ts, main="ATM3 Cash Withdrawal", ylab="cash withdrawal", xlab="week")

As described and evident above, we only have 3 observations for ATM3 and only these observations will be used for the forecast. Thus, a Simple mean forecast will be used for ATM3.

# ATM3 forecast
atm3.fcst <- meanf(window(atm3.ts, start=c(52,6)), h=31)
autoplot(atm3.ts) + 
  autolayer(atm3.fcst, PI=FALSE)

ATM4

Seeing the time series plot, it is apparent that there is seasonality in this series. ACF shows a decrease in every 7th lag. From the PACF, there are few significant lags at the beginning but others within critical limit. Overall, it is non stationary, having seasonality and might require differencing for it to become stationary.

atm4.ts <- atm.new %>% filter(ATM=="ATM4") %>% select(Cash) %>% ts(frequency = 7)
ggtsdisplay(atm4.ts, main="ATM4 Cash Withdrawal", ylab="cash withdrawal", xlab="week")

From the subseries plot, it is clear that Sunday is having highest mean for cash withdrawl while Saturday has the lowest.

ggsubseriesplot(atm4.ts, main="ATM4 Cash Withdrawal")

Next step is to apply BoxCox transformation. With \(\lambda\) being 0.45, the resulting transformation does handle the variablity in time series as shown in below transformed plot.

atm4.lambda <- BoxCox.lambda(atm4.ts)
atm4.ts.bc <- BoxCox(atm4.ts, atm4.lambda )
ggtsdisplay(atm4.ts.bc, main=paste("ATM4 Cash Withdrawal",round(atm4.lambda, 3)), ylab="cash withdrawal", xlab="week")

# Number of differences required for a stationary series
ndiffs(atm4.ts.bc)
## [1] 0
# Number of differences required for a seasonally stationary series
nsdiffs(atm4.ts.bc)
## [1] 0

It shows number of differences required is 0 for boxcox transformed data.

atm4.ts.bc %>% 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

We can see the test statistic small and well within the range we would expect for stationary data. So we can conclude that the data are stationary.

atm4.ts.bc %>% ggtsdisplay()

First we will start with Holt-Winters damped method. Damping is possible with both additive and multiplicative Holt-Winters’ methods. This method often provides accurate and robust forecasts for seasonal data is the Holt-Winters method with a damped trend.

# Holt Winters
atm4.ts %>% hw(h=31, seasonal = "additive", lambda = atm4.lambda, damped = TRUE)
##          Point Forecast         Lo 80     Hi 80       Lo 95     Hi 95
## 53.14286      326.46664  5.361266e+01  872.7889   4.7560920 1283.0394
## 53.28571      390.55947  7.881312e+01  980.9502  12.8286778 1416.0583
## 53.42857      397.88339  8.186526e+01  993.0862  13.9675943 1430.9036
## 53.57143       88.16707 -1.188133e-04  412.7690 -21.7513686  696.1136
## 53.71429      437.83425  9.906165e+01 1058.5849  20.8852913 1510.7692
## 53.85714      284.50971  3.881453e+01  799.7425   1.5164332 1192.4004
## 54.00000      507.20922  1.308726e+02 1169.8559  35.4549744 1645.5454
## 54.14286      324.77262  5.208909e+01  874.0891   4.2406561 1287.4075
## 54.28571      388.90207  7.701404e+01  982.6924  11.9597845 1421.1069
## 54.42857      396.39921  8.010639e+01  995.1580  13.0852412 1436.3713
## 54.57143       87.59346 -4.150601e-03  414.2213 -22.8793652  700.0263
## 54.71429      436.60517  9.725297e+01 1061.2815  19.8415430 1517.0757
## 54.85714      283.65049  3.777331e+01  802.2506   1.2832703 1198.1842
## 55.00000      506.16225  1.288966e+02 1173.1625  34.1181908 1652.7103
## 55.14286      324.04660  5.092781e+01  877.1018   3.8375566 1293.9333
## 55.28571      388.19148  7.560926e+01  986.0591  11.2521458 1428.1862
## 55.42857      395.76275  7.870397e+01  998.6853  12.3531475 1443.6612
## 55.57143       87.34775 -1.273091e-02  416.4752 -23.8878631  705.0385
## 55.71429      436.07791  9.575384e+01 1065.1735  18.9437425 1524.8790
## 55.85714      283.28192  3.689963e+01  805.6726   1.0925953 1205.1449
## 56.00000      505.71298  1.272021e+02 1177.4724  32.9319224 1661.1294
## 56.14286      323.73508  4.992740e+01  880.8442   3.4901477 1301.3790
## 56.28571      387.88653  7.438035e+01  990.1166  10.6232674 1436.1287
## 56.42857      395.48959  7.746167e+01 1002.8304  11.6956591 1451.7237
## 56.57143       87.24235 -2.513721e-02  419.0707 -24.8511354  710.5204
## 56.71429      435.85159  9.439585e+01 1069.5705  18.1202396 1533.3133
## 56.85714      283.12372  3.610421e+01  809.4805   0.9275239 1212.6021
## 57.00000      505.52010  1.256379e+02 1182.2034  31.8238709 1670.0733
## 57.14286      323.60135  4.900310e+01  884.8928   3.1755185 1309.2095
## 57.28571      387.75561  7.323505e+01  994.4625  10.0390607 1444.4301
## 57.42857      395.37231  7.629643e+01 1007.2323  11.0813715 1460.1059

Next is to apply exponential smoothing method on this time series. It shows that the ETS(A, N, A) model best fits for the transformed ATM4, i.e. exponential smoothing with additive error, no trend component and additive seasonality.

# ETS
atm4.ts %>% ets(lambda = atm4.lambda)
## ETS(A,N,A) 
## 
## Call:
##  ets(y = ., lambda = atm4.lambda) 
## 
##   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

Next we will find out the appropriate ARIMA model for this time series. The suggested model seeems ARIMA(0,0,1)(2,0,0)[7] with non-zero mean.

# Arima
atm4.fit3 <- atm4.ts %>% auto.arima(lambda = atm4.lambda)
atm4.fit3
## 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

Next is to see residuals time series plot which shows residuals are being near normal with mean of the residuals being near to zero. Also there is no significant autocorrelation that confirms that forecasts are good.

checkresiduals(atm4.fit3)

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

Next is to plot the forecast for all the considered models above which will shows a nice visual comparison. it will also show a zoomed in plot to have a clearer view.

atm4.arima.fcst <- forecast(atm4.fit3, h=31)
atm.forecast(atm4.ts)
## Scale for 'x' is already present. Adding another scale for 'x', which will
## replace the existing scale.

model_accuracy(atm4.ts,4)
##   Holt-Winters      ETS    ARIMA
## 1     360.3953 360.7951 315.7226

Forecast May, 2010

Finally we will do forecast for May 2010 for all 4 ATMs and save it in an excel. Here are the best fit models for cash withdrawls forecast of all 4 ATMs.

  • ATM1 - ARIMA(0,0,2)(0,1,1)[7] with Box-Cox transformation 0.262
  • ATM2 - ARIMA(3,0,3)(0,1,1)[7] with drift and Box-Cox transformation 0.724
  • ATM3 - Simple Mean Forecast
  • ATM4 - ARIMA(0,0,1)(2,0,0)[7] with non-zero mean and Box-Cox transformation 0.45
Date <- seq(as.Date('2010-05-01'), as.Date('2010-05-31'), by="day") 
ATM <- c(rep('ATM1',31),rep('ATM2',31),rep('ATM3',31),rep('ATM4',31))
Cash=c(atm1.arima.fcst$mean, atm2.arima.fcst$mean, atm3.fcst$mean,atm4.arima.fcst$mean)

write.xlsx(data.frame(Date, ATM, Cash), 
           "Kapoor_data624_atm_forecasts.xlsx")
pow.fcst.ak <- read_excel("Kapoor_data624_atm_forecasts.xlsx", skip=0, col_types = c("date","text","numeric"))
pow.fcst.ak %>% 
  kbl() %>% 
  kable_paper() %>% 
  scroll_box(width = "500px", height = "200px")
Date ATM Cash
2010-05-01 ATM1 86.6586443
2010-05-02 ATM1 100.5720071
2010-05-03 ATM1 73.7188092
2010-05-04 ATM1 4.2285430
2010-05-05 ATM1 100.1587348
2010-05-06 ATM1 79.3468403
2010-05-07 ATM1 85.7338546
2010-05-08 ATM1 87.1676511
2010-05-09 ATM1 100.3884814
2010-05-10 ATM1 73.7188092
2010-05-11 ATM1 4.2285430
2010-05-12 ATM1 100.1587348
2010-05-13 ATM1 79.3468403
2010-05-14 ATM1 85.7338546
2010-05-15 ATM1 87.1676511
2010-05-16 ATM1 100.3884814
2010-05-17 ATM1 73.7188092
2010-05-18 ATM1 4.2285430
2010-05-19 ATM1 100.1587348
2010-05-20 ATM1 79.3468403
2010-05-21 ATM1 85.7338546
2010-05-22 ATM1 87.1676511
2010-05-23 ATM1 100.3884814
2010-05-24 ATM1 73.7188092
2010-05-25 ATM1 4.2285430
2010-05-26 ATM1 100.1587348
2010-05-27 ATM1 79.3468403
2010-05-28 ATM1 85.7338546
2010-05-29 ATM1 87.1676511
2010-05-30 ATM1 100.3884814
2010-05-31 ATM1 73.7188092
2010-05-01 ATM2 57.0022951
2010-05-02 ATM2 62.2798852
2010-05-03 ATM2 7.2063600
2010-05-04 ATM2 0.3456494
2010-05-05 ATM2 89.8398423
2010-05-06 ATM2 81.5691544
2010-05-07 ATM2 60.0626996
2010-05-08 ATM2 57.4480083
2010-05-09 ATM2 62.8071210
2010-05-10 ATM2 7.4370968
2010-05-11 ATM2 0.4060141
2010-05-12 ATM2 90.1467675
2010-05-13 ATM2 81.8753121
2010-05-14 ATM2 60.1929496
2010-05-15 ATM2 57.5248105
2010-05-16 ATM2 62.9411138
2010-05-17 ATM2 7.4704488
2010-05-18 ATM2 0.3941616
2010-05-19 ATM2 90.1268184
2010-05-20 ATM2 81.8627435
2010-05-21 ATM2 60.0812606
2010-05-22 ATM2 57.3871088
2010-05-23 ATM2 62.8416413
2010-05-24 ATM2 7.3874716
2010-05-25 ATM2 0.3413394
2010-05-26 ATM2 89.9145967
2010-05-27 ATM2 81.6613847
2010-05-28 ATM2 59.8298098
2010-05-29 ATM2 57.1252090
2010-05-30 ATM2 62.6036986
2010-05-31 ATM2 7.2370006
2010-05-01 ATM3 87.6666667
2010-05-02 ATM3 87.6666667
2010-05-03 ATM3 87.6666667
2010-05-04 ATM3 87.6666667
2010-05-05 ATM3 87.6666667
2010-05-06 ATM3 87.6666667
2010-05-07 ATM3 87.6666667
2010-05-08 ATM3 87.6666667
2010-05-09 ATM3 87.6666667
2010-05-10 ATM3 87.6666667
2010-05-11 ATM3 87.6666667
2010-05-12 ATM3 87.6666667
2010-05-13 ATM3 87.6666667
2010-05-14 ATM3 87.6666667
2010-05-15 ATM3 87.6666667
2010-05-16 ATM3 87.6666667
2010-05-17 ATM3 87.6666667
2010-05-18 ATM3 87.6666667
2010-05-19 ATM3 87.6666667
2010-05-20 ATM3 87.6666667
2010-05-21 ATM3 87.6666667
2010-05-22 ATM3 87.6666667
2010-05-23 ATM3 87.6666667
2010-05-24 ATM3 87.6666667
2010-05-25 ATM3 87.6666667
2010-05-26 ATM3 87.6666667
2010-05-27 ATM3 87.6666667
2010-05-28 ATM3 87.6666667
2010-05-29 ATM3 87.6666667
2010-05-30 ATM3 87.6666667
2010-05-31 ATM3 87.6666667
2010-05-01 ATM4 239.7979583
2010-05-02 ATM4 346.9440740
2010-05-03 ATM4 421.5648644
2010-05-04 ATM4 159.6944234
2010-05-05 ATM4 385.1453661
2010-05-06 ATM4 263.9577995
2010-05-07 ATM4 328.3982051
2010-05-08 ATM4 209.4374649
2010-05-09 ATM4 382.4595340
2010-05-10 ATM4 373.0129669
2010-05-11 ATM4 201.7099184
2010-05-12 ATM4 354.7975149
2010-05-13 ATM4 243.9843388
2010-05-14 ATM4 368.1424296
2010-05-15 ATM4 292.8743266
2010-05-16 ATM4 354.0063792
2010-05-17 ATM4 366.6870237
2010-05-18 ATM4 271.2571543
2010-05-19 ATM4 355.9792548
2010-05-20 ATM4 306.6311697
2010-05-21 ATM4 347.3093062
2010-05-22 ATM4 304.8318050
2010-05-23 ATM4 355.2934571
2010-05-24 ATM4 356.0600938
2010-05-25 ATM4 298.2412327
2010-05-26 ATM4 350.2377260
2010-05-27 ATM4 316.0619880
2010-05-28 ATM4 351.0947381
2010-05-29 ATM4 326.6117087
2010-05-30 ATM4 349.9374740
2010-05-31 ATM4 352.6257802

Part B - Forecasting Power

The dataset contains residential power usage for January 1998 until December 2013. Its monthly data from 1998 and power consumed is in KWH column. This dataset contains a total 192 records.

download.file(
  url="https://github.com/amit-kapoor/data624/blob/main/Project1/ResidentialCustomerForecastLoad-624.xlsx?raw=true", 
  destfile = temp.file, 
  mode = "wb", 
  quiet = TRUE)
power.data <- read_excel(temp.file, skip=0, col_types = c("numeric","text","numeric"))

head(power.data)
## # A tibble: 6 x 3
##   CaseSequence `YYYY-MMM`     KWH
##          <dbl> <chr>        <dbl>
## 1          733 1998-Jan   6862583
## 2          734 1998-Feb   5838198
## 3          735 1998-Mar   5420658
## 4          736 1998-Apr   5010364
## 5          737 1998-May   4665377
## 6          738 1998-Jun   6467147

Exploratory Analysis

Seeing the plot closely, it is apparent that there is an outlier and a missing entry too. We will use the tsclean function to take care of missing entry and outlier in the data. Other than this data seems to be good shape.

power.data$`YYYY-MMM` <- paste0(power.data$`YYYY-MMM`,"-01")
power.data$Date <- lubridate::ymd(power.data$`YYYY-MMM`)

ggplot(power.data, aes(x=Date, y=KWH )) + 
  geom_line(color="darkblue")

Data Cleaning

We will first create the time series of given data and then perform tsclean function.

power.ts <- ts(power.data$KWH, start=c(1998, 1), frequency = 12)
head(power.ts)
##          Jan     Feb     Mar     Apr     May     Jun
## 1998 6862583 5838198 5420658 5010364 4665377 6467147
power.ts %>% summary()
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max.     NA's 
##   770523  5429912  6283324  6502475  7620524 10655730        1
power.ts <- tsclean(power.ts)
power.ts %>% summary()
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
##  4313019  5443502  6351262  6529701  7608792 10655730

It is apparent that tsclean did take care of NA’s and outlier in the data.

Time Series

So far we have analyzed the data and perform data cleaning to handle missing and outlier data. In this section we will delve into the time series and see the models that perform best for prediction.

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

From the above time series plot, it is evident that seasonality exists in the data. We dont see a trend in the data. ACF plot sgows the auto correlation and PACF shows few significant lags in the beginning. Overall, it shows seasonality and non stationary data. It could require differencing to make it stationary which will be confirmed in further steps.

ggsubseriesplot(power.ts, main="Pwer Usage Subseries Plot", ylab="Power Used")

ggseasonplot(power.ts, polar=TRUE, main="Power Usage Seasonal Plot", ylab="Power Used")

The seasonal plots above shows a decline in power usage from Jan to May, increase till Aug and then decline in Nov. Aug is the month of most power consumption.

gglagplot(power.ts )

In the above lagplot, colors show different month. The lines connect points in chronological order. The relationship is strongly positive at lag 12, reflecting the strong seasonality in the data.

Next step is to apply Box-Cox transformation and check the transformed data.

powerts.lambda <- BoxCox.lambda(power.ts)
power.ts.bc <- BoxCox(power.ts, powerts.lambda )
ggtsdisplay(power.ts, main=paste("Residential Power Usage",round(powerts.lambda, 3)), ylab="Power Used", xlab="Month")

The Box-Cox transformation above did handle the variation in the data with \(\lambda\) as 0.144 and appears stable now. Next we see that Number of differences required for a stationary and seasonally stationary series are 1.

# Number of differences required for a stationary series
ndiffs(power.ts.bc)
## [1] 1
# Number of differences required for a seasonally stationary series
nsdiffs(power.ts.bc)
## [1] 1

It shows number of differences required is 1 for boxcox transformed data.

power.ts.bc %>% 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

We can see the test statistic small and well within the range we would expect for stationary data. So we can conclude that the data are stationary.

power.ts.bc %>% 
  diff(lag=12) %>% 
  ggtsdisplay(main="Residential Power Usage", ylab="Power Used", xlab="Month")

Now we will apply four models in this time series: Holt Winters additive with damped True, Holt Winters multiplicative with damped True, exponential smoothing and arima. First we will start with Holt-Winters damped method. Damping is possible with both additive and multiplicative Holt-Winters’ methods. This method often provides accurate and robust forecasts for seasonal data is the Holt-Winters method with a damped trend.

# Holt Winters additive with damped True
power.ts %>% hw(h=31, seasonal = "additive", lambda = powerts.lambda, damped = TRUE)
##          Point Forecast   Lo 80    Hi 80   Lo 95    Hi 95
## Jan 2014        9107297 8076875 10290936 7585779 10988269
## Feb 2014        7770646 6904466  8763438 6490967  9347335
## Mar 2014        6660179 5928390  7497188 5578499  7988664
## Apr 2014        5969397 5319026  6712381 5007781  7148238
## May 2014        5625182 5013393  6323915 4720557  6733732
## Jun 2014        7275964 6451637  8223053 6058824  8781111
## Jul 2014        8859946 7822939 10057288 7330606 10765524
## Aug 2014        9322020 8216844 10600620 7692933 11358099
## Sep 2014        8668636 7644836  9852384 7159284 10553344
## Oct 2014        6321057 5601315  7148606 5258532  7636511
## Nov 2014        5469798 4855427  6174761 4562382  6589737
## Dec 2014        6775208 5987467  7683813 5613190  8220830
## Jan 2015        9113992 8005052 10402262 7480984 11167935
## Feb 2015        7776112 6844659  8855485 6403639  9495747
## Mar 2015        6664665 5878334  7573701 5505361  8111924
## Apr 2015        5973271 5274971  6779388 4943398  7256143
## May 2015        5628725 4972370  6386125 4660623  6833931
## Jun 2015        7280622 6397096  8306589 5979421  8916161
## Jul 2015        8865659 7755195 10161867 7232276 10935129
## Aug 2015        9327948 8145442 10711046 7589442 11537448
## Sep 2015        8673977 7579322  9953345 7064335 10717313
## Oct 2015        6324700 5555572  7218128 5192069  7749092
## Nov 2015        5472821 4816718  6233216 4506100  6684315
## Dec 2015        6778989 5938447  7758475 5542135  8342027
## Jan 2016        9119188 7936962 10507290 7382692 11339177
## Feb 2016        7780354 6787930  8942347 6321671  9637208
## Mar 2016        6668146 5830831  7645926 5436663  8229419
## Apr 2016        5976278 5233146  6842661 4882887  7359020
## May 2016        5631476 4933411  6444895 4604266  6929491
## Jun 2016        7284237 6345305  8385579 5904772  9045098
## Jul 2016        8870093 7690866 10260839 7139837 11097210
# Holt Winters multiplicative with damped True
power.ts %>% hw(h=31, seasonal = "multiplicative", damped = TRUE)
##          Point Forecast   Lo 80    Hi 80   Lo 95    Hi 95
## Jan 2014        9017833 7957065 10078601 7395529 10640137
## Feb 2014        7828457 6875211  8781704 6370593  9286322
## Mar 2014        6739385 5891755  7587016 5443046  8035725
## Apr 2014        5958146 5185614  6730678 4776661  7139631
## May 2014        5658721 4903631  6413811 4503910  6813531
## Jun 2014        7362538 6353007  8372069 5818594  8906483
## Jul 2014        8756962 7524819  9989104 6872562 10641361
## Aug 2014        9316480 7972982 10659977 7261778 11371181
## Sep 2014        8596291 7327223  9865359 6655419 10537163
## Oct 2014        6299672 5348552  7250791 4845060  7754283
## Nov 2014        5499685 4651304  6348065 4202198  6797171
## Dec 2014        6805669 5733940  7877398 5166601  8444737
## Jan 2015        9020418 7571435 10469400 6804390 11236445
## Feb 2015        7830653 6548528  9112778 5869812  9791493
## Mar 2015        6741234 5616962  7865507 5021809  8460660
## Apr 2015        5959745 4947971  6971519 4412371  7507120
## May 2015        5660207 4682622  6637793 4165119  7155295
## Jun 2015        7364430 6071164  8657697 5386550  9342311
## Jul 2015        8759163 7195971 10322356 6368467 11149860
## Aug 2015        9318772 7629505 11008038 6735261 11902282
## Sep 2015        8598360 7015852 10180868 6178123 11018597
## Oct 2015        6301155 5124217  7478094 4501183  8101127
## Nov 2015        5500952 4458640  6543264 3906873  7095031
## Dec 2015        6807204 5499264  8115143 4806883  8807524
## Jan 2016        9022407 7265105 10779709 6334846 11709969
## Feb 2016        7832343 6286498  9378187 5468177 10196508
## Mar 2016        6742658 5394587  8090729 4680961  8804355
## Apr 2016        5960977 4754078  7167875 4115184  7806769
## May 2016        5661351 4500929  6821774 3886639  7436064
## Jun 2016        7365887 5837827  8893947 5028921  9702853
## Jul 2016        8760859 6921934 10599783 5948466 11573251

Next model to ETS: Exponential Smoothing methods.

# exponential smoothing
power.ts %>% ets(lambda = powerts.lambda, biasadj = TRUE)
## ETS(A,Ad,A) 
## 
## Call:
##  ets(y = ., lambda = powerts.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

We can see here that the ets model that best describes the data is ETS(A,Ad,A) i.e. exponential smoothing with additive error, additive damped trend and additive seasonality.

Next we will find the best Arima model that fits this time series data.

power.fit4 <- power.ts %>% auto.arima(lambda = powerts.lambda, biasadj = TRUE)
power.fit4
## 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 best Arima model comes out is ARIMA(0,0,1)(2,1,0)[12] with drift.

checkresiduals(power.fit4)

## 
##  Ljung-Box test
## 
## data:  Residuals from ARIMA(0,0,1)(2,1,0)[12] with drift
## Q* = 28.193, df = 20, p-value = 0.1049
## 
## Model df: 4.   Total lags used: 24

Next is to plot the forecasts using all of 4 models described above: HW additive, HW multiplicative, ets and arima. For this, we will create a generic function which will accept the time series and plot the forecast for all these 4 models. There is also a zoomed in plot of the forecast for better clarity.

# function to plot forecast(s)
power.forecast <- function(timeseries) {
  # lambda value
  lambda <- BoxCox.lambda(timeseries)
  
  # models for forecast
  hwa.model <- timeseries %>% hw(h=12, seasonal = "additive", lambda = lambda, damped = TRUE)
  hwm.model <- timeseries %>% hw(h=12, seasonal = "multiplicative", damped = TRUE)
  ets.model <- timeseries %>% ets(lambda = lambda )
  arima.model <- timeseries %>% auto.arima(lambda = lambda, biasadj = TRUE)
  
  # forecast
  pow.hwa.fcst <- forecast(hwa.model, h=12)
  pow.hwm.fcst <- forecast(hwm.model, h=12)
  pow.ets.fcst <- forecast(ets.model, h=12)
  pow.arima.fcst <- forecast(arima.model, h=12)
  
  # plot forecasts
  p1 <- autoplot(timeseries) + 
    autolayer(pow.hwa.fcst, PI=FALSE, series="Holt-Winters Additive") + 
    autolayer(pow.hwm.fcst, PI=FALSE, series="Holt-Winters Multiplicative") + 
    autolayer(pow.ets.fcst, PI=FALSE, series="ETS") + 
    autolayer(pow.arima.fcst, PI=FALSE, series="ARIMA") + 
    theme(legend.position = "top") + 
    ylab("Power Used") 
  
  # zoom in plot
  p2 <- p1 + 
    labs(title = "Zoom in ") + 
    xlim(c(2012,2015))
  
  grid.arrange(p1,p2,ncol=1)

}

Lets plot the forecast now using the above function for power usage.

power.arima.fcst <- forecast(power.fit4, h=12)
power.forecast(power.ts)
## Scale for 'x' is already present. Adding another scale for 'x', which will
## replace the existing scale.

Now we will check the accuracy of all 4 models. Again for this purpose, we have created a function that accepts the timeseries and divide the data for training and testing. In this function we will first divide the data for training and testing, train all models with train set and then find out RMSE using test data.

powm_accuracy <- function(timeseries) {
  # lambda value
  lambda <- BoxCox.lambda(timeseries)
  
  # split the data to train and test
  train <- window(timeseries, end=c(2009, 12))
  test <- window(timeseries, start=2010)
  
  # models for forecast
  hwa.model <- train %>% hw(h=length(train), seasonal = "additive", lambda = lambda, damped = TRUE)
  hwm.model <- train %>% hw(h=length(train), seasonal = "multiplicative", damped = TRUE)
  ets.model <- train %>% ets(model="AAA", lambda = lambda, biasadj = TRUE)
  arima.model <- train %>% Arima(order=c(0,0,1), 
                                        seasonal = c(2,1,0), 
                                        include.drift = TRUE, 
                                        lambda = lambda,
                                        biasadj = TRUE)
  
  
  # forecast
  hwa.frct = forecast(hwa.model, h = length(test))$mean
  hwm.frct = forecast(hwm.model, h = length(test))$mean
  ets.frct = forecast(ets.model, h = length(test))$mean
  arima.frct = forecast(arima.model, h = length(test))$mean
  
  # dataframe having rmse
  rmse = data.frame(RMSE=cbind(accuracy(hwa.frct, test)[,2],
                               accuracy(hwm.frct, test)[,2],
                               accuracy(ets.frct, test)[,2],
                              accuracy(arima.frct, test)[,2]))
  names(rmse) = c("Holt-Winters Additive", "Holt-Winters Multiplicative", "ETS", "ARIMA")
  
  # display rmse
  rmse
}
powm_accuracy(power.ts)
##   Holt-Winters Additive Holt-Winters Multiplicative     ETS    ARIMA
## 1               1172803                     1141901 1151275 950035.4

Thus ARIMA(0,0,1)(2,1,0)[12] with drift has been the best model to describe the gicen time series.

Forecast 2014

In this last step we will perform the forecast for 2014.

  • Power Usage - ARIMA(0,0,1)(2,1,0)[12] with drift and Box-Cox transformation -0.144
pow.fcst.date <- seq(as.Date('2014-01-01'), as.Date('2014-12-01'), by="month") %>% format("%Y-%b")

write.xlsx(data.frame('DateTime' = pow.fcst.date, 'Waterflow'= power.arima.fcst$mean), 
           "Kapoor_data624_pow_forecasts.xlsx")
pow.fcst.ak <- read_excel("Kapoor_data624_pow_forecasts.xlsx", skip=0, col_types = c("text","numeric"))
pow.fcst.ak %>% 
  kbl() %>% 
  kable_paper() %>% 
  scroll_box(width = "500px", height = "200px")
DateTime Waterflow
2014-Jan 9501939
2014-Feb 8519991
2014-Mar 6633101
2014-Apr 5970555
2014-May 5921709
2014-Jun 8262795
2014-Jul 9524528
2014-Aug 10077395
2014-Sep 8489194
2014-Oct 5838172
2014-Nov 6108522
2014-Dec 7596503

Part C - Waterflow Pipe

In part C we have been provided 2 datasets for waterflow pipes. These are simple 2 columns sets, however they have different time stamps. Each dataset contains 1000 records and has no missing data.

download.file(url="https://github.com/amit-kapoor/data624/blob/main/Project1/Waterflow_Pipe1.xlsx?raw=true", 
              destfile = temp.file, 
              mode = "wb", 
              quiet = TRUE)
pipe1.data <- read_excel(temp.file, skip=0, col_types = c("date","numeric"))

download.file(url="https://github.com/amit-kapoor/data624/blob/main/Project1/Waterflow_Pipe2.xlsx?raw=true", 
              destfile = temp.file, 
              mode = "wb", 
              quiet = TRUE)

pipe2.data <- read_excel(temp.file, skip=0, col_types = c("date","numeric"))

It is apparent here that the data is recorded on different time intervals for pipe1 and pipe2. For pipe1 it shows records for multiple time intervals within an hour i.e. not evenly distributed while for pipe2 it seems hourly recorded.

pipe1.data %>% 
  kbl() %>% 
  kable_paper() %>% 
  scroll_box(width = "500px", height = "200px")
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
pipe2.data %>% 
  kbl() %>% 
  kable_paper() %>% 
  scroll_box(width = "500px", height = "200px")
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

Exploratory Analysis

In this first step for analysis, We will check the daily frequency count for both datasets. It is apparent here that number of records daily for pipe1 is not evenly distributed and there are more recording per hour for pipe1.

p1 <- pipe1.data 
p1$Date <- ymd_hms(p1$`Date Time`)
p1$Date <- as.Date(p1$Date)

p1 <- p1 %>% group_by(Date) %>% summarise("Pipe1 Records count"=n())

p2 <- pipe2.data 
p2$Date <- ymd_hms(p2$`Date Time`)
p2$Date <- as.Date(p2$Date)

p2 <- p2 %>% group_by(Date) %>% summarise("Pipe2 Records count"=n())

merge(p1,p2,by="Date")
##          Date Pipe1 Records count Pipe2 Records count
## 1  2015-10-23                  96                  23
## 2  2015-10-24                 109                  24
## 3  2015-10-25                  95                  24
## 4  2015-10-26                 118                  24
## 5  2015-10-27                  99                  24
## 6  2015-10-28                 104                  24
## 7  2015-10-29                  96                  24
## 8  2015-10-30                 111                  24
## 9  2015-10-31                  91                  24
## 10 2015-11-01                  81                  24

It is evident here that pipe1 dataset has an uneven count distribution for given date while pipe2 has even count daily.

Data Cleaning

In this step we will make pipe1 data evenly distributed (per hour) for every day. As mentioned in the problem for multiple recordings within an hour, take the mean, we will take mean of records per hour and then recreate the Date Time column. Next we will do the same count comparison that was done earlier and check number of records per day.

pipe1.data <- pipe1.data %>% 
  mutate(Date=date(`Date Time`), Hour=hour(`Date Time`)) %>% 
  group_by(Date, Hour) %>% 
  summarise(WaterFlow=mean(WaterFlow)) %>% 
  ungroup() %>% 
  mutate(`Date Time`=ymd_h(paste(Date, Hour))) %>% 
  select(`Date Time`, WaterFlow)
## `summarise()` has grouped output by 'Date'. You can override using the `.groups` argument.
# check the number of records per hour daily
p1 <- pipe1.data 
p1$Date <- ymd_hms(p1$`Date Time`)
p1$Date <- as.Date(p1$Date)

p1 <- p1 %>% group_by(Date) %>% summarise("Pipe1 Records count"=n())

p2 <- pipe2.data 
p2$Date <- ymd_hms(p2$`Date Time`)
p2$Date <- as.Date(p2$Date)

p2 <- p2 %>% group_by(Date) %>% summarise("Pipe2 Records count"=n())

merge(p1,p2,by="Date")
##          Date Pipe1 Records count Pipe2 Records count
## 1  2015-10-23                  24                  23
## 2  2015-10-24                  24                  24
## 3  2015-10-25                  24                  24
## 4  2015-10-26                  24                  24
## 5  2015-10-27                  23                  24
## 6  2015-10-28                  23                  24
## 7  2015-10-29                  24                  24
## 8  2015-10-30                  24                  24
## 9  2015-10-31                  24                  24
## 10 2015-11-01                  22                  24

Time Series

In this section we will create the timeseries out of both datasets and check out the best model that will eventually provide a week forward forecast.

Pipe1

We will start with pipe1 dataset by creating its time series, plot the waterflow data and check the trend and seasonality, if exist.

pipe1.ts <- ts(pipe1.data$WaterFlow)
pipe1.ts %>% summary()
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   8.923  17.033  19.784  19.893  22.789  31.730
ggtsdisplay(pipe1.ts, main="Pipe1 Waterflow", ylab="Water")

By seeing the time series, it is apparent there is no seasonality or trend in the data. The ACF and PACF plots shows white noise. It depicts that the time series is stationary and doesnt require diffencing.

pipe1.lambda <- BoxCox.lambda(pipe1.ts)
pipe1.ts.bc <- BoxCox(pipe1.ts, pipe1.lambda )
ggtsdisplay(pipe1.ts.bc, main=paste("Pipe1 Waterflow",round(pipe1.lambda, 3)), ylab="Water")

# Number of differences required for a stationary series
ndiffs(pipe1.ts.bc)
## [1] 0
pipe1.ts.bc %>% 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

We can see the test statistic small and well within the range we would expect for stationary data. So we can conclude that the data are stationary.

# ets
pipe1.ets.model <- pipe1.ts %>% ets(lambda = pipe1.lambda)
pipe1.ets.model
## ETS(A,N,N) 
## 
## Call:
##  ets(y = ., lambda = pipe1.lambda) 
## 
##   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

We can see here that the ets model that best describes the data is ETS(A,N,N) i.e. exponential smoothing with additive error, no trend and no seasonality.

Next we will find the best Arima model that fits this time series data.

# arima
pipe1.arima.model <- pipe1.ts %>% auto.arima(lambda = pipe1.lambda)
pipe1.arima.model
## 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

The best Arima model comes out is ARIMA(0,0,0) with non-zero mean.

Next is to plot the forecasts using both the models described above: ets and arima. For this, we will create a generic function which will accept the time series and pipe number and plot the forecast using both the models.

# function to plot forecast(s)
pipe.forecast <- function(timeseries, pipe_num) {
  # lambda value
  lambda <- BoxCox.lambda(timeseries)
  
  # models for forecast
  ets.model <- timeseries %>% ets(lambda = lambda)
  arima.model <- timeseries %>% auto.arima(lambda = lambda)
  
  # forecast h=24*7=168
  pipe.ets.fcst <- forecast(ets.model, h=168)
  #print(pipe.ets.fcst$mean)
  pipe.arima.fcst <- forecast(arima.model, h=168)
  #print(pipe.arima.fcst$mean)
  
  # plot forecasts
  p1 <- autoplot(timeseries) + 
    autolayer(pipe.ets.fcst, PI=FALSE, series="ETS") + 
    autolayer(pipe.arima.fcst, PI=FALSE, series="ARIMA") + 
    theme(legend.position = "top") + 
    ylab("Water") 
  
  # zoom in plot
  if (pipe_num == 1) {
    p2 <- p1 + 
      labs(title = "Zoom in ") + 
      xlim(c(225,325))
  } else {
    p2 <- p1 + 
      labs(title = "Zoom in ") + 
      xlim(c(990,1150))    
  }
  
  
  grid.arrange(p1,p2,ncol=1)

}

Lets plot the forecast for pipe1. The forecast is for every hour in a day for a week.

pipe1.ets.fcst <- forecast(pipe1.ets.model, h=168)
pipe1.arima.fcst <- forecast(pipe1.arima.model, h=168)
pipe.forecast(pipe1.ts, 1)
## Scale for 'x' is already present. Adding another scale for 'x', which will
## replace the existing scale.

We can see that forecasts for both ETS and ARIMA models are almost on top of each other and for pipe1, the waterflow is forecasted to be 19.5548.

Now we will check the accuracy of both the models ETS and ARIMA. Again for this purpose, we have created a function that accepts the timeseries and a timebreak (for train and test data). In this function we will first divide the data for training and testing, train both models with train set and then find out RMSE using test data.

pipe_accuracy <- function(timeseries, time_break) {
  # lambda value
  lambda <- BoxCox.lambda(timeseries)
  
  # split the data to train and test
  train <- window(timeseries, end=time_break)
  test <- window(timeseries, start=time_break+1)
  
  # models for forecast
  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.frct = forecast(ets.model, h = length(test))$mean
  arima.frct = forecast(arima.model, h = length(test))$mean
  
  # dataframe having rmse
  rmse = data.frame(RMSE=cbind(accuracy(ets.frct, test)[,2],
                              accuracy(arima.frct, test)[,2]))
  names(rmse) = c("ETS", "ARIMA")
  
  # display rmse
  rmse
}

By passing multiple time breaks for training and test data, we see below RMSEs.

pipe_accuracy(pipe1.ts, 190)
##        ETS    ARIMA
## 1 3.950938 3.951593
pipe_accuracy(pipe1.ts, 178)
##        ETS    ARIMA
## 1 4.585535 4.585881
pipe_accuracy(pipe1.ts, 200)
##        ETS    ARIMA
## 1 3.275964 3.276062

It is evident here that the model best describes the pipe1 time series is ETS(A,N,N) with Box-Cox transformation of 0.272.

checkresiduals(pipe1.ets.model)

## 
##  Ljung-Box test
## 
## data:  Residuals from ETS(A,N,N)
## Q* = 5.684, df = 8, p-value = 0.6826
## 
## Model df: 2.   Total lags used: 10

Pipe2

Similar to pipe1, we will create time series for pipe2, plot the waterflow data and check the trend and seasonality, if exist.

pipe2.ts <- ts(pipe2.data$WaterFlow)
pipe2.ts %>% summary()
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   1.885  28.140  39.682  39.556  50.782  78.303
ggtsdisplay(pipe2.ts, main="Pipe2 Waterflow", ylab="Water")

By seeing the time series, it is apparent there is no seasonality or trend in the data. The ACF and PACF plots shows few significant auto correlations.

pipe2.lambda <- BoxCox.lambda(pipe2.ts)
pipe2.ts.bc <- BoxCox(pipe2.ts, pipe2.lambda )
ggtsdisplay(pipe2.ts.bc, main=paste("Pipe2 Waterflow",round(pipe2.lambda, 3)), ylab="Water")

# Number of differences required for a stationary series
ndiffs(pipe2.ts.bc)
## [1] 0
pipe2.ts.bc %>% 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

We can see the test statistic small and well within the range we would expect for stationary data. So we can conclude that the data are stationary.

# ets
pipe2.ets.model <- pipe2.ts %>% ets(lambda = pipe2.lambda)
pipe2.ets.model
## ETS(A,N,N) 
## 
## Call:
##  ets(y = ., lambda = pipe2.lambda) 
## 
##   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

We can see here that the ets model that best describes the data is ETS(A,N,N) i.e. exponential smoothing with additive error, no trend and no seasonality.

Next we will find the best Arima model that fits this time series data.

# arima
pipe2.arima.model <- pipe2.ts %>% auto.arima(lambda = pipe2.lambda)
pipe2.arima.model
## 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

The best Arima model for pipe1 comes out is ARIMA(0,0,0) with non-zero mean, similar to pipe1.

Next we will see the forecast plots using both these models for pipe1.

pipe2.ets.fcst <- forecast(pipe2.ets.model, h=168)
pipe2.arima.fcst <- forecast(pipe2.arima.model, h=168)
pipe.forecast(pipe2.ts, 2)
## Scale for 'x' is already present. Adding another scale for 'x', which will
## replace the existing scale.

Similar to pipe1, ee can see that forecasts in this case for both ETS and ARIMA models are almost on top of each other and for pipe2, the waterflow is forecasted to be 39.012.

By passing multiple time breaks for training and test data, we see below RMSEs.

pipe_accuracy(pipe2.ts, 969)
##        ETS    ARIMA
## 1 18.36835 18.35826
pipe_accuracy(pipe2.ts, 850)
##        ETS    ARIMA
## 1 17.00739 17.00745
pipe_accuracy(pipe2.ts, 877)
##        ETS    ARIMA
## 1 16.60519 16.60477

It is evident here that the model best describes the pipe2 time series is ARIMA(0,0,0) with Box-Cox transformation of 0.849.

checkresiduals(pipe2.arima.model)

## 
##  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

Forecast a week forward

Finally lets do the forecast for both pipes (pipe1 and pipe2) using the above selected best models and save the corresponding xlsx.

  • Pipe1 - ETS(A,N,N) with Box-Cox transformation of 0.272
  • Pipe2 - ARIMA(0,0,0) with Box-Cox transformation of 0.849
pipe1.fcst.date <- seq(ymd_hm('2015-11-01 24:00'), ymd_hm('2015-11-08 23:00'), by="hour")
pipe2.fcst.date <- seq(ymd_hm('2015-12-03 17:00'), ymd_hm('2015-12-10 16:00'), by="hour")

write.xlsx(data.frame('DateTime' = pipe1.fcst.date, 'Waterflow'= pipe1.ets.fcst$mean), 
           "Kapoor_data624_pipe1_forecasts.xlsx")

write.xlsx(data.frame('DateTime' = pipe2.fcst.date, 'Waterflow'= pipe2.arima.fcst$mean), 
           "Kapoor_data624_pipe2_forecasts.xlsx")
pipe1.fcst.ak <- read_excel("Kapoor_data624_pipe1_forecasts.xlsx", skip=0, col_types = c("date","numeric"))
pipe1.fcst.ak %>% 
  kbl() %>% 
  kable_paper() %>% 
  scroll_box(width = "500px", height = "200px")
DateTime Waterflow
2015-11-02 00:00:00 19.55481
2015-11-02 01:00:00 19.55481
2015-11-02 02:00:00 19.55481
2015-11-02 03:00:00 19.55481
2015-11-02 04:00:00 19.55481
2015-11-02 05:00:00 19.55481
2015-11-02 06:00:00 19.55481
2015-11-02 07:00:00 19.55481
2015-11-02 08:00:00 19.55481
2015-11-02 09:00:00 19.55481
2015-11-02 10:00:00 19.55481
2015-11-02 11:00:00 19.55481
2015-11-02 12:00:00 19.55481
2015-11-02 13:00:00 19.55481
2015-11-02 14:00:00 19.55481
2015-11-02 15:00:00 19.55481
2015-11-02 16:00:00 19.55481
2015-11-02 17:00:00 19.55481
2015-11-02 18:00:00 19.55481
2015-11-02 19:00:00 19.55481
2015-11-02 20:00:00 19.55481
2015-11-02 21:00:00 19.55481
2015-11-02 22:00:00 19.55481
2015-11-02 23:00:00 19.55481
2015-11-03 00:00:00 19.55481
2015-11-03 01:00:00 19.55481
2015-11-03 02:00:00 19.55481
2015-11-03 03:00:00 19.55481
2015-11-03 04:00:00 19.55481
2015-11-03 05:00:00 19.55481
2015-11-03 06:00:00 19.55481
2015-11-03 07:00:00 19.55481
2015-11-03 08:00:00 19.55481
2015-11-03 09:00:00 19.55481
2015-11-03 10:00:00 19.55481
2015-11-03 11:00:00 19.55481
2015-11-03 12:00:00 19.55481
2015-11-03 13:00:00 19.55481
2015-11-03 14:00:00 19.55481
2015-11-03 15:00:00 19.55481
2015-11-03 16:00:00 19.55481
2015-11-03 17:00:00 19.55481
2015-11-03 18:00:00 19.55481
2015-11-03 19:00:00 19.55481
2015-11-03 20:00:00 19.55481
2015-11-03 21:00:00 19.55481
2015-11-03 22:00:00 19.55481
2015-11-03 23:00:00 19.55481
2015-11-04 00:00:00 19.55481
2015-11-04 01:00:00 19.55481
2015-11-04 02:00:00 19.55481
2015-11-04 03:00:00 19.55481
2015-11-04 04:00:00 19.55481
2015-11-04 05:00:00 19.55481
2015-11-04 06:00:00 19.55481
2015-11-04 07:00:00 19.55481
2015-11-04 08:00:00 19.55481
2015-11-04 09:00:00 19.55481
2015-11-04 10:00:00 19.55481
2015-11-04 11:00:00 19.55481
2015-11-04 12:00:00 19.55481
2015-11-04 13:00:00 19.55481
2015-11-04 14:00:00 19.55481
2015-11-04 15:00:00 19.55481
2015-11-04 16:00:00 19.55481
2015-11-04 17:00:00 19.55481
2015-11-04 18:00:00 19.55481
2015-11-04 19:00:00 19.55481
2015-11-04 20:00:00 19.55481
2015-11-04 21:00:00 19.55481
2015-11-04 22:00:00 19.55481
2015-11-04 23:00:00 19.55481
2015-11-05 00:00:00 19.55481
2015-11-05 01:00:00 19.55481
2015-11-05 02:00:00 19.55481
2015-11-05 03:00:00 19.55481
2015-11-05 04:00:00 19.55481
2015-11-05 05:00:00 19.55481
2015-11-05 06:00:00 19.55481
2015-11-05 07:00:00 19.55481
2015-11-05 08:00:00 19.55481
2015-11-05 09:00:00 19.55481
2015-11-05 10:00:00 19.55481
2015-11-05 11:00:00 19.55481
2015-11-05 12:00:00 19.55481
2015-11-05 13:00:00 19.55481
2015-11-05 14:00:00 19.55481
2015-11-05 15:00:00 19.55481
2015-11-05 16:00:00 19.55481
2015-11-05 17:00:00 19.55481
2015-11-05 18:00:00 19.55481
2015-11-05 19:00:00 19.55481
2015-11-05 20:00:00 19.55481
2015-11-05 21:00:00 19.55481
2015-11-05 22:00:00 19.55481
2015-11-05 23:00:00 19.55481
2015-11-06 00:00:00 19.55481
2015-11-06 01:00:00 19.55481
2015-11-06 02:00:00 19.55481
2015-11-06 03:00:00 19.55481
2015-11-06 04:00:00 19.55481
2015-11-06 05:00:00 19.55481
2015-11-06 06:00:00 19.55481
2015-11-06 07:00:00 19.55481
2015-11-06 08:00:00 19.55481
2015-11-06 09:00:00 19.55481
2015-11-06 10:00:00 19.55481
2015-11-06 11:00:00 19.55481
2015-11-06 12:00:00 19.55481
2015-11-06 13:00:00 19.55481
2015-11-06 14:00:00 19.55481
2015-11-06 15:00:00 19.55481
2015-11-06 16:00:00 19.55481
2015-11-06 17:00:00 19.55481
2015-11-06 18:00:00 19.55481
2015-11-06 19:00:00 19.55481
2015-11-06 20:00:00 19.55481
2015-11-06 21:00:00 19.55481
2015-11-06 22:00:00 19.55481
2015-11-06 23:00:00 19.55481
2015-11-07 00:00:00 19.55481
2015-11-07 01:00:00 19.55481
2015-11-07 02:00:00 19.55481
2015-11-07 03:00:00 19.55481
2015-11-07 04:00:00 19.55481
2015-11-07 05:00:00 19.55481
2015-11-07 06:00:00 19.55481
2015-11-07 07:00:00 19.55481
2015-11-07 08:00:00 19.55481
2015-11-07 09:00:00 19.55481
2015-11-07 10:00:00 19.55481
2015-11-07 11:00:00 19.55481
2015-11-07 12:00:00 19.55481
2015-11-07 13:00:00 19.55481
2015-11-07 14:00:00 19.55481
2015-11-07 15:00:00 19.55481
2015-11-07 16:00:00 19.55481
2015-11-07 17:00:00 19.55481
2015-11-07 18:00:00 19.55481
2015-11-07 19:00:00 19.55481
2015-11-07 20:00:00 19.55481
2015-11-07 21:00:00 19.55481
2015-11-07 22:00:00 19.55481
2015-11-07 23:00:00 19.55481
2015-11-08 00:00:00 19.55481
2015-11-08 01:00:00 19.55481
2015-11-08 02:00:00 19.55481
2015-11-08 03:00:00 19.55481
2015-11-08 04:00:00 19.55481
2015-11-08 05:00:00 19.55481
2015-11-08 06:00:00 19.55481
2015-11-08 07:00:00 19.55481
2015-11-08 08:00:00 19.55481
2015-11-08 09:00:00 19.55481
2015-11-08 10:00:00 19.55481
2015-11-08 11:00:00 19.55481
2015-11-08 12:00:00 19.55481
2015-11-08 13:00:00 19.55481
2015-11-08 14:00:00 19.55481
2015-11-08 15:00:00 19.55481
2015-11-08 16:00:00 19.55481
2015-11-08 17:00:00 19.55481
2015-11-08 18:00:00 19.55481
2015-11-08 19:00:00 19.55481
2015-11-08 20:00:00 19.55481
2015-11-08 21:00:00 19.55481
2015-11-08 22:00:00 19.55481
2015-11-08 23:00:00 19.55481
pipe2.fcst.ak <- read_excel("Kapoor_data624_pipe2_forecasts.xlsx", skip=0, col_types = c("date","numeric"))
pipe2.fcst.ak %>% 
  kbl() %>% 
  kable_paper() %>% 
  scroll_box(width = "500px", height = "200px")
DateTime Waterflow
2015-12-03 17:00:00 39.01295
2015-12-03 18:00:00 39.01295
2015-12-03 19:00:00 39.01295
2015-12-03 20:00:00 39.01295
2015-12-03 21:00:00 39.01295
2015-12-03 22:00:00 39.01295
2015-12-03 23:00:00 39.01295
2015-12-04 00:00:00 39.01295
2015-12-04 01:00:00 39.01295
2015-12-04 02:00:00 39.01295
2015-12-04 03:00:00 39.01295
2015-12-04 04:00:00 39.01295
2015-12-04 05:00:00 39.01295
2015-12-04 06:00:00 39.01295
2015-12-04 07:00:00 39.01295
2015-12-04 08:00:00 39.01295
2015-12-04 09:00:00 39.01295
2015-12-04 10:00:00 39.01295
2015-12-04 11:00:00 39.01295
2015-12-04 12:00:00 39.01295
2015-12-04 13:00:00 39.01295
2015-12-04 14:00:00 39.01295
2015-12-04 15:00:00 39.01295
2015-12-04 16:00:00 39.01295
2015-12-04 17:00:00 39.01295
2015-12-04 18:00:00 39.01295
2015-12-04 19:00:00 39.01295
2015-12-04 20:00:00 39.01295
2015-12-04 21:00:00 39.01295
2015-12-04 22:00:00 39.01295
2015-12-04 23:00:00 39.01295
2015-12-05 00:00:00 39.01295
2015-12-05 01:00:00 39.01295
2015-12-05 02:00:00 39.01295
2015-12-05 03:00:00 39.01295
2015-12-05 04:00:00 39.01295
2015-12-05 05:00:00 39.01295
2015-12-05 06:00:00 39.01295
2015-12-05 07:00:00 39.01295
2015-12-05 08:00:00 39.01295
2015-12-05 09:00:00 39.01295
2015-12-05 10:00:00 39.01295
2015-12-05 11:00:00 39.01295
2015-12-05 12:00:00 39.01295
2015-12-05 13:00:00 39.01295
2015-12-05 14:00:00 39.01295
2015-12-05 15:00:00 39.01295
2015-12-05 16:00:00 39.01295
2015-12-05 17:00:00 39.01295
2015-12-05 18:00:00 39.01295
2015-12-05 19:00:00 39.01295
2015-12-05 20:00:00 39.01295
2015-12-05 21:00:00 39.01295
2015-12-05 22:00:00 39.01295
2015-12-05 23:00:00 39.01295
2015-12-06 00:00:00 39.01295
2015-12-06 01:00:00 39.01295
2015-12-06 02:00:00 39.01295
2015-12-06 03:00:00 39.01295
2015-12-06 04:00:00 39.01295
2015-12-06 05:00:00 39.01295
2015-12-06 06:00:00 39.01295
2015-12-06 07:00:00 39.01295
2015-12-06 08:00:00 39.01295
2015-12-06 09:00:00 39.01295
2015-12-06 10:00:00 39.01295
2015-12-06 11:00:00 39.01295
2015-12-06 12:00:00 39.01295
2015-12-06 13:00:00 39.01295
2015-12-06 14:00:00 39.01295
2015-12-06 15:00:00 39.01295
2015-12-06 16:00:00 39.01295
2015-12-06 17:00:00 39.01295
2015-12-06 18:00:00 39.01295
2015-12-06 19:00:00 39.01295
2015-12-06 20:00:00 39.01295
2015-12-06 21:00:00 39.01295
2015-12-06 22:00:00 39.01295
2015-12-06 23:00:00 39.01295
2015-12-07 00:00:00 39.01295
2015-12-07 01:00:00 39.01295
2015-12-07 02:00:00 39.01295
2015-12-07 03:00:00 39.01295
2015-12-07 04:00:00 39.01295
2015-12-07 05:00:00 39.01295
2015-12-07 06:00:00 39.01295
2015-12-07 07:00:00 39.01295
2015-12-07 08:00:00 39.01295
2015-12-07 09:00:00 39.01295
2015-12-07 10:00:00 39.01295
2015-12-07 11:00:00 39.01295
2015-12-07 12:00:00 39.01295
2015-12-07 13:00:00 39.01295
2015-12-07 14:00:00 39.01295
2015-12-07 15:00:00 39.01295
2015-12-07 16:00:00 39.01295
2015-12-07 17:00:00 39.01295
2015-12-07 18:00:00 39.01295
2015-12-07 19:00:00 39.01295
2015-12-07 20:00:00 39.01295
2015-12-07 21:00:00 39.01295
2015-12-07 22:00:00 39.01295
2015-12-07 23:00:00 39.01295
2015-12-08 00:00:00 39.01295
2015-12-08 01:00:00 39.01295
2015-12-08 02:00:00 39.01295
2015-12-08 03:00:00 39.01295
2015-12-08 04:00:00 39.01295
2015-12-08 05:00:00 39.01295
2015-12-08 06:00:00 39.01295
2015-12-08 07:00:00 39.01295
2015-12-08 08:00:00 39.01295
2015-12-08 09:00:00 39.01295
2015-12-08 10:00:00 39.01295
2015-12-08 11:00:00 39.01295
2015-12-08 12:00:00 39.01295
2015-12-08 13:00:00 39.01295
2015-12-08 14:00:00 39.01295
2015-12-08 15:00:00 39.01295
2015-12-08 16:00:00 39.01295
2015-12-08 17:00:00 39.01295
2015-12-08 18:00:00 39.01295
2015-12-08 19:00:00 39.01295
2015-12-08 20:00:00 39.01295
2015-12-08 21:00:00 39.01295
2015-12-08 22:00:00 39.01295
2015-12-08 23:00:00 39.01295
2015-12-09 00:00:00 39.01295
2015-12-09 01:00:00 39.01295
2015-12-09 02:00:00 39.01295
2015-12-09 03:00:00 39.01295
2015-12-09 04:00:00 39.01295
2015-12-09 05:00:00 39.01295
2015-12-09 06:00:00 39.01295
2015-12-09 07:00:00 39.01295
2015-12-09 08:00:00 39.01295
2015-12-09 09:00:00 39.01295
2015-12-09 10:00:00 39.01295
2015-12-09 11:00:00 39.01295
2015-12-09 12:00:00 39.01295
2015-12-09 13:00:00 39.01295
2015-12-09 14:00:00 39.01295
2015-12-09 15:00:00 39.01295
2015-12-09 16:00:00 39.01295
2015-12-09 17:00:00 39.01295
2015-12-09 18:00:00 39.01295
2015-12-09 19:00:00 39.01295
2015-12-09 20:00:00 39.01295
2015-12-09 21:00:00 39.01295
2015-12-09 22:00:00 39.01295
2015-12-09 23:00:00 39.01295
2015-12-10 00:00:00 39.01295
2015-12-10 01:00:00 39.01295
2015-12-10 02:00:00 39.01295
2015-12-10 03:00:00 39.01295
2015-12-10 04:00:00 39.01295
2015-12-10 05:00:00 39.01295
2015-12-10 06:00:00 39.01295
2015-12-10 07:00:00 39.01295
2015-12-10 08:00:00 39.01295
2015-12-10 09:00:00 39.01295
2015-12-10 10:00:00 39.01295
2015-12-10 11:00:00 39.01295
2015-12-10 12:00:00 39.01295
2015-12-10 13:00:00 39.01295
2015-12-10 14:00:00 39.01295
2015-12-10 15:00:00 39.01295
2015-12-10 16:00:00 39.01295