Commit | Line | Data |
---|---|---|
6d97bfec BA |
1 | context("Check that forecasters behave as expected") |
2 | ||
44a9990b BA |
3 | ts_data = system.file("testdata","ts_test.csv",package="talweg") |
4 | exo_data = system.file("testdata","exo_test.csv",package="talweg") | |
5 | data00 <<- getData(ts_data, exo_data, input_tz="GMT", date_format="%Y-%m-%d %H:%M", | |
6 | working_tz="GMT", predict_at=0, limit=Inf) | |
7 | data13 <<- getData(ts_data, exo_data, input_tz="GMT", date_format="%Y-%m-%d %H:%M", | |
8 | working_tz="GMT", predict_at=13, limit=Inf) | |
9 | #Forecast at sunday to saturday, for monday to sunday | |
10 | indices <<- seq(as.Date("2007-04-01"),as.Date("2007-04-07"),"days") | |
11 | ||
12 | test_that("Average method behave as expected", | |
6d97bfec | 13 | { |
44a9990b BA |
14 | pred00_z = getForecast(data00, indices, "Average", "Zero", Inf, 24) |
15 | pred00_p = getForecast(data00, indices, "Average", "Persistence", Inf, 24) | |
16 | for (i in seq_along(indices)) | |
17 | { | |
18 | #zero jump: should predict true values minus 1 | |
19 | expect_identical(pred00_z$getSerie(i), rep(i,24)) | |
20 | #persistence jump == 1: should predict true values | |
21 | expect_identical(pred00_p$getSerie(i), rep(i%%7+1,24)) | |
22 | } | |
23 | ||
24 | #NOTE: days become | |
25 | #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) | |
26 | #No jump between days, thus zero and persistence are equivalent (and wrong) | |
27 | pred13_z = getForecast(data13, indices, "Average", "Zero", Inf, 24) | |
28 | pred13_p = getForecast(data13, indices, "Average", "Persistence", Inf, 24) | |
29 | prediction = c(rep(-13/24,11),rep(11/24,13)) | |
30 | for (i in seq_along(indices)) | |
31 | { | |
32 | expect_equal(pred13_z$getSerie(i), prediction ) | |
33 | expect_equal(pred13_p$getSerie(i), prediction ) | |
34 | } | |
613a986f | 35 | |
44a9990b BA |
36 | #A few extra checks |
37 | expect_identical( pred00_sd$getIndexInData(1), dateIndexToInteger("2007-04-01",data00) ) | |
38 | expect_identical( pred13_dd$getIndexInData(3), dateIndexToInteger("2007-04-03",data13) ) | |
39 | expect_identical( pred00_dd$getIndexInData(5), dateIndexToInteger("2007-04-05",data00) ) | |
40 | }) | |
41 | ||
42 | test_that("Persistence method behave as expected", | |
43 | { | |
44 | #Situation A: +Zero; always wrong | |
45 | pred00_sd = getForecast(data00, indices, "Persistence", "Zero", Inf, 24, same_day=TRUE) | |
46 | pred00_dd = getForecast(data00, indices, "Persistence", "Zero", Inf, 24, same_day=FALSE) | |
47 | for (i in seq_along(indices)) | |
48 | { | |
49 | expect_identical(pred00_sd$getSerie(i), rep(i,24)) | |
50 | expect_identical(pred00_dd$getSerie(i), rep(i,24)) | |
51 | } | |
613a986f | 52 | |
44a9990b BA |
53 | pred13_sd = getForecast(data13, indices, "Persistence", "Zero", Inf, 24, same_day=TRUE) |
54 | pred13_dd = getForecast(data13, indices, "Persistence", "Zero", Inf, 24, same_day=FALSE) | |
55 | for (i in seq_along(indices)) | |
56 | { | |
57 | expect_identical(pred13_sd$getSerie(i), c( rep(i,11), rep(i%%7+1,13) ) ) | |
58 | expect_identical(pred13_dd$getSerie(i), c( rep(i,11), rep(i%%7+1,13) ) ) | |
59 | } | |
613a986f | 60 | |
44a9990b BA |
61 | #Situation B: +Persistence, correct when predict_at==0 |
62 | pred00_sd = getForecast(data00, indices, "Persistence", "Persistence", Inf, 24, same_day=TRUE) | |
63 | pred00_dd = getForecast(data00, indices, "Persistence", "Persistence", Inf, 24, same_day=FALSE) | |
613a986f BA |
64 | for (i in seq_along(indices)) |
65 | { | |
44a9990b BA |
66 | expect_identical(pred00_sd$getSerie(i), rep(i%%7+1,24)) |
67 | expect_identical(pred00_dd$getSerie(i), rep(i%%7+1,24)) | |
613a986f BA |
68 | } |
69 | ||
44a9990b BA |
70 | pred13_sd = getForecast(data13, indices, "Persistence", "Persistence", Inf, 24, same_day=TRUE) |
71 | pred13_dd = getForecast(data13, indices, "Persistence", "Persistence", Inf, 24, same_day=FALSE) | |
72 | for (i in seq_along(indices)) | |
73 | { | |
74 | expect_identical(pred13_sd$getSerie(i), c( rep(i,11), rep(i%%7+1,13) ) ) | |
75 | expect_identical(pred13_dd$getSerie(i), c( rep(i,11), rep(i%%7+1,13) ) ) | |
76 | } | |
6d97bfec | 77 | |
44a9990b BA |
78 | #A few extra checks |
79 | expect_identical( pred13_sd$getIndexInData(1), dateIndexToInteger("2007-04-01",data12) ) | |
80 | expect_identical( pred00_dd$getIndexInData(3), dateIndexToInteger("2007-04-03",data00) ) | |
81 | expect_identical( pred13_dd$getIndexInData(5), dateIndexToInteger("2007-04-05",data13) ) | |
82 | }) | |
6d97bfec BA |
83 | |
84 | test_that("Neighbors+Zero method behave as expected", | |
85 | { | |
44a9990b | 86 | }) |
6d97bfec BA |
87 | |
88 | test_that("Neighbors+Neighbors method behave as expected", | |
89 | { | |
44a9990b | 90 | }) |