Nothing
# Test coefficients
testthat::test_that("Test 1-COEF. Short Memory AR model coef match 'arima'", {
data(AirPassengers)
ap <- log(AirPassengers)
dap <- diff(ap)
testthat::expect_true(
# RMSE for difference in coefficients between GARMA and ARIMA is reasonably small
sqrt(mean((coef(garma(dap, order = c(2, 0, 0), k = 0, method = "CSS", include.mean = F)) -
coef(arima(dap, order = c(2, 0, 0), include.mean = F, method = "CSS")))^2)) < 0.005
)
})
testthat::test_that("Test 2-COEF. Short Memory MA model coef match 'arima'", {
data(AirPassengers)
ap <- log(AirPassengers)
dap <- diff(ap)
testthat::expect_true(
# RMSE for difference in coefficients between GARMA and ARIMA is reasonably small
sqrt(mean((coef(garma(dap, order = c(0, 0, 2), k = 0, method = "CSS", include.mean = F)) -
coef(arima(dap, order = c(0, 0, 2), include.mean = F, method = "CSS")))^2)) < 0.005
)
})
# RMSE for difference in coefficients between GARMA and ARIMA is reasonably small
testthat::test_that("Test 3-COEF. Short Memory ARMA model coef match 'arima'", {
data(AirPassengers)
ap <- log(AirPassengers)
dap <- diff(ap)
g_c <- coef(garma(dap, order = c(2, 0, 2), k = 0, method = "CSS", include.mean = T))
g_c2 <- c(g_c[2:5], g_c[1])
a_c <- coef(arima(dap, order = c(2, 0, 2), include.mean = T, method = "CSS"))
testthat::expect_true(sqrt(mean((g_c2 - a_c)^2)) < 0.05)
})
# Test residuals
testthat::test_that("Test 1-RESID. Short Memory AR model resid match 'arima'", {
data(AirPassengers)
ap <- log(AirPassengers)
dap <- diff(ap)
testthat::expect_true(
# RMSE for difference in residuals between GARMA and ARIMA is reasonably small
sqrt(mean((residuals(garma(dap, order = c(2, 0, 0), k = 0, method = "CSS", include.mean = F)) -
residuals(arima(dap, order = c(2, 0, 0), method = "CSS", include.mean = F)))^2)) < 0.03
)
})
testthat::test_that("Test 2-RESID. Short Memory AR model resid match 'arima'", {
data(AirPassengers)
ap <- log(AirPassengers)
dap <- diff(ap)
testthat::expect_true(
# RMSE for difference in residuals between GARMA and ARIMA is reasonably small with differencing.
sqrt(mean((residuals(garma(dap, order = c(2, 1, 0), k = 0, method = "CSS", include.mean = F)) -
residuals(arima(dap, order = c(2, 1, 0), method = "CSS", include.mean = F)))^2)) < 0.10
)
})
testthat::test_that("Test 3-RESID. Short Memory MA model resid match 'arima'", {
data(AirPassengers)
ap <- log(AirPassengers)
dap <- diff(ap)
testthat::expect_true(
# RMSE for difference in residuals between GARMA and ARIMA is reasonably small with differencing.
sqrt(mean((residuals(garma(dap, order = c(0, 0, 2), k = 0, method = "CSS", include.mean = F)) -
residuals(arima(dap, order = c(0, 0, 2), method = "CSS", include.mean = F)))^2)) < 0.05
)
})
# testthat::test_that("Test 4-RESID. Short Memory ARMA model resid match 'arima'", {
# data(AirPassengers)
# ap <- log(AirPassengers)
# dap <- diff(ap)
#
# gmdl <- garma(dap, order = c(2, 0, 2), k = 0, method = "Whittle", include.mean = F)
# amdl <- arima(dap, order = c(2, 0, 2), method = "CSS", include.mean = F)
# testthat::expect_true(
# # RMSE for difference in residuals between GARMA and ARIMA is reasonably small with differencing.
# sqrt(mean((resid(gmdl) - resid(amdl))^2)) < 0.05
# )
# })
testthat::test_that("Test 5-RESID. Short Memory ARMA model with intercept resid match 'arima'", {
data(AirPassengers)
ap <- log(AirPassengers)
dap <- diff(ap)
testthat::expect_true(
# RMSE for difference in residuals between GARMA and ARIMA is reasonably small with differencing.
sqrt(mean((residuals(garma(dap, order = c(2, 0, 2), k = 0, method = "CSS", include.mean = T)) -
residuals(arima(dap, order = c(2, 0, 2), method = "CSS", include.mean = T)))^2)) < 0.07
)
})
# Test predictions
testthat::test_that("Test 1-PRED. Short Memory AR model. Check that pred match 'arima'", {
data(AirPassengers)
ap <- log(AirPassengers)
dap <- diff(ap)
testthat::expect_true(
# RMSE for difference in residuals between GARMA and ARIMA is reasonably small
sqrt(mean((predict(garma(dap, order = c(2, 0, 0), k = 0, method = "CSS", include.mean = F), n.ahead = 12)$pred -
predict(arima(dap, order = c(2, 0, 0), method = "CSS", include.mean = F), n.ahead = 12)$pred)^2)) < 0.001
)
})
testthat::test_that("Test 2-PRED. Short Memory MA model. Check that pred match 'arima'", {
data(AirPassengers)
ap <- log(AirPassengers)
dap <- diff(ap)
testthat::expect_true(
# RMSE for difference in residuals between GARMA and ARIMA is reasonably small
sqrt(mean((predict(garma(dap, order = c(0, 0, 2), k = 0, method = "CSS", include.mean = F), n.ahead = 12)$pred -
predict(arima(dap, order = c(0, 0, 2), method = "CSS", include.mean = F), n.ahead = 12)$pred)^2)) < 0.03
)
})
testthat::test_that("Test 3-PRED. Short Memory AR model with diff. Check that pred match 'arima'", {
data(AirPassengers)
ap <- log(AirPassengers)
dap <- diff(ap)
testthat::expect_true(
# RMSE for difference in residuals between GARMA and ARIMA is reasonably small
sqrt(mean((predict(garma(ap, order = c(2, 1, 0), k = 0, method = "CSS", include.mean = F, include.drift = FALSE), n.ahead = 12)$pred -
predict(arima(ap, order = c(2, 1, 0), method = "CSS", include.mean = F), n.ahead = 12)$pred)^2)) < 0.001
)
})
testthat::test_that("Parameter checks on garma() function", {
df <- data.frame(x=runif(120), y =runif(120))
testthat::expect_error(
garma(df),
regexp = "x should be a numeric vector - not an entire data frame. Please select a single column and try again."
)
x <- runif(120)
x[30] <- NA_real_
testthat::expect_error(
garma(x),
regexp = "x should not have any missing values"
)
x <- runif(120)
testthat::expect_error(
garma(x, k=(-1)),
regexp = "The k parameter must be a non-negative integer"
)
testthat::expect_error(
garma(x, periods = "A"),
regexp = "The 'periods' parameter must be a numeric vector of at least 1 element"
)
testthat::expect_error(
garma(x, periods = numeric(0)),
regexp = "The 'periods' parameter must be a numeric vector of at least 1 element"
)
testthat::expect_error(
garma(x, periods = (-5)),
regexp = "The 'periods' parameter cannot contain negative values"
)
testthat::expect_error(
garma(x, order = c(1, 1)),
regexp = "The 'order' parameter must be a 3 integers only"
)
testthat::expect_error(
garma(x, order = c(-1, -1, -1)),
regexp = "The 'order' parameter must consist of positive integers"
)
testthat::expect_error(
garma(x, k = 0),
regexp = "At least one of p, q or k \\(or periods\\) must be positive"
)
testthat::expect_error(
garma(x, xreg = df),
regexp = "The parameter 'xreg' should be a numeric vector or matrix"
)
testthat::expect_error(
garma(x, xreg = runif(150)),
regexp = "The parameter 'xreg' should be the same length as 'x'"
)
testthat::expect_error(
garma(x, xreg = c(runif(119), NA_real_)),
regexp = "The parameter 'xreg' should not have any NA values"
)
testthat::expect_error(
garma(x, method = "invalid"),
regexp = "The parameter 'method' must be one of CSS, Whittle or WLL"
)
testthat::expect_error(
garma(x, opt_method = "invalid"),
regexp = "The following optimisation routines are not supported: invalid"
)
testthat::expect_error(
garma(x, d_lim = 0),
regexp = "The parameter 'd_lim' should be a list of 2 numerics, Eg c\\(0,0.5\\) and the minimum should be < maximum"
)
testthat::expect_error(
garma(x, d_lim = c(0.4, 0.1)),
regexp = "The parameter 'd_lim' should be a list of 2 numerics, Eg c\\(0,0.5\\) and the minimum should be < maximum"
)
testthat::expect_error(
garma(x, d_lim = c(NA, 1)),
regexp = "The parameter 'd_lim' should not have any NA values"
)
})
testthat::test_that("garma xreg", {
# Set up some synthetic data and compare the results
set.seed(31415926L)
x <- runif(200)
m <- matrix(runif(400), ncol = 2)
m.ahead <- matrix(runif(20), ncol = 2)
colnames(m) <- colnames(m.ahead) <- c("R1", "R2")
fit <- garma(x, xreg = m)
testthat::expect_snapshot({
print(fit)
predict(fit, n.ahead = 10, newdata = m.ahead)
})
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.