## ============================================================================= ## arimasel tests: exploratory data analysis and feature-guided search ## ============================================================================= context("ts_features") test_that("ts_features returns a one-row data.frame with expected columns", { feats <- ts_features(.x_stat) expect_s3_class(feats, "data.frame") expect_equal(nrow(feats), 1L) expect_true(all(c("n", "mean", "sd", "skewness", "kurtosis", "entropy", "acf1", "lumpiness", "stability", "adf_stat", "adf_pvalue") %in% names(feats))) }) test_that("ts_features trend/seasonal strength are NA for non-seasonal input", { feats <- ts_features(.x_stat) expect_true(is.na(feats$trend_strength)) expect_true(is.na(feats$seasonal_strength)) }) test_that("ts_features trend/seasonal strength are populated for seasonal input", { feats <- ts_features(.x_seas) expect_false(is.na(feats$trend_strength)) expect_false(is.na(feats$seasonal_strength)) }) test_that("ts_features errors on too-short series", { expect_error(ts_features(rnorm(5)), "at least 10") }) test_that("ts_features entropy is within [0, 1]", { feats <- ts_features(.x_ar11) expect_true(feats$entropy >= 0 && feats$entropy <= 1) }) ## --------------------------------------------------------------------------- # context("ts_eda") test_that("ts_eda returns a list with features, stationarity, suggested_d", { eda <- ts_eda(.x_stat) expect_true(is.list(eda)) expect_true(all(c("features", "stationarity", "suggested_d", "suggested_D") %in% names(eda))) }) test_that("ts_eda suggested_d is an integer", { eda <- ts_eda(.x_stat) expect_true(eda$suggested_d %in% 0:2) }) test_that("ts_eda works on seasonal input and returns suggested_D", { eda <- ts_eda(.x_seas) expect_true(eda$suggested_D %in% c(0L, 1L)) }) test_that("ts_eda prints a console summary", { expect_output(ts_eda(.x_stat), "Exploratory Data Analysis") }) ## --------------------------------------------------------------------------- # context("smart_arima") test_that("smart_arima returns a cartARIMA object with an eda component", { res <- smart_arima(.x_stat, p_set = 0:1, q_set = 0:1) expect_s3_class(res, "cartARIMA") expect_false(is.null(res$eda)) }) test_that("smart_arima automatically enables seasonal search for seasonal input", { res <- smart_arima(.x_seas, p_set = 0:1, q_set = 0:1) expect_false(is.null(res$seasonal)) }) test_that("smart_arima stays non-seasonal for non-seasonal input", { res <- smart_arima(.x_stat, p_set = 0:1, q_set = 0:1) expect_null(res$seasonal) }) test_that("smart_arima prints its chosen search space", { expect_output(smart_arima(.x_stat, p_set = 0:1, q_set = 0:1), "feature-guided search space") })