test_metrics.R 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. library(prophet)
  2. context("Prophet metrics tests")
  3. ## Makes R CMD CHECK happy due to dplyr syntax below
  4. globalVariables(c("y", "yhat"))
  5. DATA <- head(read.csv('data.csv'), 100)
  6. DATA$ds <- as.Date(DATA$ds)
  7. test_that("metrics_tests_using_model", {
  8. # Create dummy model
  9. m <- prophet(DATA)
  10. # Create metric data
  11. forecast <- predict(m, NULL)
  12. df <- na.omit(dplyr::inner_join(m$history, forecast, by="ds"))
  13. # Check all metrics wether it is equal to its definition
  14. y <- df$y
  15. yhat <- df$yhat
  16. expect_equal(me(m), mean(y-yhat))
  17. expect_equal(mse(m), mean((y-yhat)^2))
  18. expect_equal(rmse(m), sqrt(mean((y-yhat)^2)))
  19. expect_equal(mae(m), mean(abs(y-yhat)))
  20. expect_equal(mpe(m), 100*mean((y-yhat)/y))
  21. expect_equal(mape(m), 100*mean(abs((y-yhat)/y)))
  22. answer <- data.frame(
  23. me=me(m),
  24. mse=mse(m),
  25. rmse=rmse(m),
  26. mae=mae(m),
  27. mpe=mpe(m),
  28. mape=mape(m)
  29. )
  30. expect_equal(all_metrics(m), answer)
  31. })
  32. test_that("metrics_tests_using_simulated_historical_forecast", {
  33. #skip_if_not(Sys.getenv('R_ARCH') != '/i386')
  34. # Create dummy model
  35. m <- prophet(DATA)
  36. # Run simulated historical forecast
  37. df <- simulated_historical_forecasts(m, horizon = 3, units = 'days', k = 2, period = 3)
  38. # Check all metrics wether it is equal to its definition
  39. y <- df$y
  40. yhat <- df$yhat
  41. expect_equal(me(df=df), mean(y-yhat))
  42. expect_equal(mse(df=df), mean((y-yhat)^2))
  43. expect_equal(rmse(df=df), sqrt(mean((y-yhat)^2)))
  44. expect_equal(mae(df=df), mean(abs(y-yhat)))
  45. expect_equal(mpe(df=df), 100*mean((y-yhat)/y))
  46. expect_equal(mape(df=df), 100*mean(abs((y-yhat)/y)))
  47. answer <- data.frame(
  48. me=me(df=df),
  49. mse=mse(df=df),
  50. rmse=rmse(df=df),
  51. mae=mae(df=df),
  52. mpe=mpe(df=df),
  53. mape=mape(df=df)
  54. )
  55. expect_equal(all_metrics(df=df), answer)
  56. })