mirror of
https://github.com/saymrwulf/prophet.git
synced 2026-07-23 19:32:25 +00:00
* Add metrics for model validation * Update to reflect comments on Github * Change all_metrics() implementation to more sophisticated style * Update metrics functions * Remove redundant argument * Use v0.3 files for diagnostics.R and prophet.R * Use v0.3 file for man/predict.prophet.Rd * Change the interface and do some refactoring
60 lines
1.8 KiB
R
60 lines
1.8 KiB
R
library(prophet)
|
|
context("Prophet metrics tests")
|
|
|
|
## Makes R CMD CHECK happy due to dplyr syntax below
|
|
globalVariables(c("y", "yhat"))
|
|
|
|
DATA <- head(read.csv('data.csv'), 100)
|
|
DATA$ds <- as.Date(DATA$ds)
|
|
|
|
test_that("metrics_tests_using_model", {
|
|
# Create dummy model
|
|
m <- prophet(DATA)
|
|
# Create metric data
|
|
forecast <- predict(m, NULL)
|
|
df <- na.omit(dplyr::inner_join(m$history, forecast, by="ds"))
|
|
# Check all metrics wether it is equal to its definition
|
|
y <- df$y
|
|
yhat <- df$yhat
|
|
expect_equal(me(m), mean(y-yhat))
|
|
expect_equal(mse(m), mean((y-yhat)^2))
|
|
expect_equal(rmse(m), sqrt(mean((y-yhat)^2)))
|
|
expect_equal(mae(m), mean(abs(y-yhat)))
|
|
expect_equal(mpe(m), 100*mean((y-yhat)/y))
|
|
expect_equal(mape(m), 100*mean(abs((y-yhat)/y)))
|
|
answer <- data.frame(
|
|
me=me(m),
|
|
mse=mse(m),
|
|
rmse=rmse(m),
|
|
mae=mae(m),
|
|
mpe=mpe(m),
|
|
mape=mape(m)
|
|
)
|
|
expect_equal(all_metrics(m), answer)
|
|
})
|
|
|
|
test_that("metrics_tests_using_simulated_historical_forecast", {
|
|
#skip_if_not(Sys.getenv('R_ARCH') != '/i386')
|
|
# Create dummy model
|
|
m <- prophet(DATA)
|
|
# Run simulated historical forecast
|
|
df <- simulated_historical_forecasts(m, horizon = 3, units = 'days', k = 2, period = 3)
|
|
# Check all metrics wether it is equal to its definition
|
|
y <- df$y
|
|
yhat <- df$yhat
|
|
expect_equal(me(df=df), mean(y-yhat))
|
|
expect_equal(mse(df=df), mean((y-yhat)^2))
|
|
expect_equal(rmse(df=df), sqrt(mean((y-yhat)^2)))
|
|
expect_equal(mae(df=df), mean(abs(y-yhat)))
|
|
expect_equal(mpe(df=df), 100*mean((y-yhat)/y))
|
|
expect_equal(mape(df=df), 100*mean(abs((y-yhat)/y)))
|
|
answer <- data.frame(
|
|
me=me(df=df),
|
|
mse=mse(df=df),
|
|
rmse=rmse(df=df),
|
|
mae=mae(df=df),
|
|
mpe=mpe(df=df),
|
|
mape=mape(df=df)
|
|
)
|
|
expect_equal(all_metrics(df=df), answer)
|
|
})
|