context("Check that forecasters behave as expected") ts_data = system.file("testdata","ts_test.csv",package="talweg") exo_data = system.file("testdata","exo_test.csv",package="talweg") data00 <<- getData(ts_data, exo_data, input_tz="GMT", date_format="%Y-%m-%d %H:%M", working_tz="GMT", predict_at=0, limit=Inf) data13 <<- getData(ts_data, exo_data, input_tz="GMT", date_format="%Y-%m-%d %H:%M", working_tz="GMT", predict_at=13, limit=Inf) #Forecast at sunday to saturday (series 7 to 1), for monday to sunday (series 1 to 7) indices <<- seq(as.Date("2007-04-01"),as.Date("2007-04-07"),"days") pred_order = c(7,1:6) #will facilitate tests test_that("Average method behave as expected", { pred00_z = getForecast(data00, indices, "Average", "Zero", Inf, 24) pred00_p = getForecast(data00, indices, "Average", "Persistence", Inf, 24) for (i in seq_along(indices)) { #zero jump: should predict true values minus 1 expect_equal(pred00_z$getSerie(i), rep(pred_order[i],24)) #persistence jump == 1: should predict true values expect_equal(pred00_p$getSerie(i), rep(i,24)) } #NOTE: days become #1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 (14h-->0h then 1h-->13h) #No jump between days, thus zero and persistence are equivalent (and wrong) pred13_z = getForecast(data13, indices, "Average", "Zero", Inf, 24) pred13_p = getForecast(data13, indices, "Average", "Persistence", Inf, 24) prediction = c(rep(-13/24,11),rep(11/24,13)) for (i in seq_along(indices)) { expect_equal(pred13_z$getSerie(i), prediction ) ##TODO: prendre en compte recollement expect_equal(pred13_p$getSerie(i), prediction ) } #A few extra checks expect_identical( pred00_sd$getIndexInData(1), dateIndexToInteger("2007-04-01",data00) ) expect_identical( pred13_dd$getIndexInData(3), dateIndexToInteger("2007-04-03",data13) ) expect_identical( pred00_dd$getIndexInData(5), dateIndexToInteger("2007-04-05",data00) ) }) test_that("Persistence method behave as expected", { #Situation A: +Zero; always wrong pred00_sd = getForecast(data00, indices, "Persistence", "Zero", Inf, 24, same_day=TRUE) pred00_dd = getForecast(data00, indices, "Persistence", "Zero", Inf, 24, same_day=FALSE) for (i in seq_along(indices)) { expect_identical(pred00_sd$getSerie(i), rep(i,24)) expect_identical(pred00_dd$getSerie(i), rep(i,24)) } pred13_sd = getForecast(data13, indices, "Persistence", "Zero", Inf, 24, same_day=TRUE) pred13_dd = getForecast(data13, indices, "Persistence", "Zero", Inf, 24, same_day=FALSE) for (i in seq_along(indices)) { expect_identical(pred13_sd$getSerie(i), c( rep(i,11), rep(i%%7+1,13) ) ) expect_identical(pred13_dd$getSerie(i), c( rep(i,11), rep(i%%7+1,13) ) ) } #Situation B: +Persistence, correct when predict_at==0 pred00_sd = getForecast(data00, indices, "Persistence", "Persistence", Inf, 24, same_day=TRUE) pred00_dd = getForecast(data00, indices, "Persistence", "Persistence", Inf, 24, same_day=FALSE) for (i in seq_along(indices)) { expect_identical(pred00_sd$getSerie(i), rep(i%%7+1,24)) expect_identical(pred00_dd$getSerie(i), rep(i%%7+1,24)) } pred13_sd = getForecast(data13, indices, "Persistence", "Persistence", Inf, 24, same_day=TRUE) pred13_dd = getForecast(data13, indices, "Persistence", "Persistence", Inf, 24, same_day=FALSE) for (i in seq_along(indices)) { expect_identical(pred13_sd$getSerie(i), c( rep(i,11), rep(i%%7+1,13) ) ) expect_identical(pred13_dd$getSerie(i), c( rep(i,11), rep(i%%7+1,13) ) ) } #A few extra checks expect_identical( pred13_sd$getIndexInData(1), dateIndexToInteger("2007-04-01",data12) ) expect_identical( pred00_dd$getIndexInData(3), dateIndexToInteger("2007-04-03",data00) ) expect_identical( pred13_dd$getIndexInData(5), dateIndexToInteger("2007-04-05",data13) ) }) test_that("Neighbors+Zero method behave as expected", { }) test_that("Neighbors+Neighbors method behave as expected", { })