# Load data endog_data <- monetary_var_data # Create list for input # specs <- list() # Fill list lags_endog_lin <- NaN lags_endog_nl <- NaN lags_criterion <- 'AIC' max_lags <- 2 trend <- 1 shock_type <- 1 # Specifications for switching variable switching <- endog_data$FF use_hp <- 1 lambda <- 129600 gamma <- 3 # Horizons and cinfidence intervals confint <- 1.96 hor <- 24 test_that("Test whether data is a data.frame", { endog_data <- as.matrix(endog_data) testthat::expect_error(lp_nl(endog_data, lags_endog_lin = lags_endog_lin, lags_endog_nl = lags_endog_nl, lags_criterion = lags_criterion, max_lags = max_lags, trend = trend, shock_type = shock_type, switching = switching, use_hp = use_hp, lambda = lambda, gamma = gamma, confint = confint, hor = hor), 'The data has to be a data.frame().', fixed = TRUE) }) test_that("Test whether trend is given", { trend <- NULL testthat::expect_error(lp_nl(endog_data, lags_endog_lin = lags_endog_lin, lags_endog_nl = lags_endog_nl, lags_criterion = lags_criterion, max_lags = max_lags, trend = trend, shock_type = shock_type, switching = switching, use_hp = use_hp, lambda = lambda, gamma = gamma, confint = confint, hor = hor), 'Please specify whether and which type of trend to include.', fixed = TRUE) }) test_that("Test whether shock_type is given", { shock_type <- NULL testthat::expect_error(lp_nl(endog_data, lags_endog_lin = lags_endog_lin, lags_endog_nl = lags_endog_nl, lags_criterion = lags_criterion, max_lags = max_lags, trend = trend, shock_type = shock_type, switching = switching, use_hp = use_hp, lambda = lambda, gamma = gamma, confint = confint, hor = hor), 'Please specify which type of shock to use.', fixed = TRUE) }) test_that("Test whether a switching variable is given", { switching <- NULL testthat::expect_error(lp_nl(endog_data, lags_endog_lin = lags_endog_lin, lags_endog_nl = lags_endog_nl, lags_criterion = lags_criterion, max_lags = max_lags, trend = trend, shock_type = shock_type, switching = switching, use_hp = use_hp, lambda = lambda, gamma = gamma, confint = confint, hor = hor), 'Please provide a switching variable.', fixed = TRUE) }) test_that("Test whether 'use_hp' is given", { use_hp <- NULL testthat::expect_error(lp_nl(endog_data, lags_endog_lin = lags_endog_lin, lags_endog_nl = lags_endog_nl, lags_criterion = lags_criterion, max_lags = max_lags, trend = trend, shock_type = shock_type, switching = switching, use_hp = use_hp, lambda = lambda, gamma = gamma, confint = confint, hor = hor), 'Please specify whether to use the HP-filter for the switching variable.', fixed = TRUE) }) test_that("Test whether lambda is given if use_hp == 1", { use_hp <- T lambda <- NULL testthat::expect_error(lp_nl(endog_data, lags_endog_lin = lags_endog_lin, lags_endog_nl = lags_endog_nl, lags_criterion = lags_criterion, max_lags = max_lags, trend = trend, shock_type = shock_type, switching = switching, use_hp = use_hp, lambda = lambda, gamma = gamma, confint = confint, hor = hor), 'Please specify lambda for the HP-filter.', fixed = TRUE) }) test_that("Test whether 'gamma' is given", { gamma <- NULL testthat::expect_error(lp_nl(endog_data, lags_endog_lin = lags_endog_lin, lags_endog_nl = lags_endog_nl, lags_criterion = lags_criterion, max_lags = max_lags, trend = trend, shock_type = shock_type, switching = switching, use_hp = use_hp, lambda = lambda, gamma = gamma, confint = confint, hor = hor), 'Please specify gamma for the transition function.', fixed = TRUE) }) test_that("Test whether 'confint' is given", { confint <- NULL testthat::expect_error(lp_nl(endog_data, lags_endog_lin = lags_endog_lin, lags_endog_nl = lags_endog_nl, lags_criterion = lags_criterion, max_lags = max_lags, trend = trend, shock_type = shock_type, switching = switching, use_hp = use_hp, lambda = lambda, gamma = gamma, confint = confint, hor = hor), 'Please specify a value for the width of the confidence bands.', fixed = TRUE) }) test_that("Test whether number of horizons is given", { hor <- NULL testthat::expect_error(lp_nl(endog_data, lags_endog_lin = lags_endog_lin, lags_endog_nl = lags_endog_nl, lags_criterion = lags_criterion, max_lags = max_lags, trend = trend, shock_type = shock_type, switching = switching, use_hp = use_hp, lambda = lambda, gamma = gamma, confint = confint, hor = hor), 'Please specify the number of horizons.', fixed = TRUE) }) test_that("Test whether wrong lag length is given", { lags_criterion <- 'AICCd' testthat::expect_error(lp_nl(endog_data, lags_endog_lin = lags_endog_lin, lags_endog_nl = lags_endog_nl, lags_criterion = lags_criterion, max_lags = max_lags, trend = trend, shock_type = shock_type, switching = switching, use_hp = use_hp, lambda = lambda, gamma = gamma, confint = confint, hor = hor), 'Possible lag length criteria are AICc, AIC or BIC or NaN if lag length is specified.', fixed = TRUE) } ) test_that("Test whether lag criterion AND fixed number of lags for non-linear are given", { lags_endog_nl <- 1 testthat::expect_error(lp_nl(endog_data, lags_endog_lin = lags_endog_lin, lags_endog_nl = lags_endog_nl, lags_criterion = lags_criterion, max_lags = max_lags, trend = trend, shock_type = shock_type, switching = switching, use_hp = use_hp, lambda = lambda, gamma = gamma, confint = confint, hor = hor), 'You can not provide a lag criterion (AICc, AIC or BIC) and a fixed number of lags.', fixed = TRUE) } ) test_that("Test whether lag criterion AND fixed number of lags for linear are given", { lags_endog_lin <- 1 testthat::expect_error(lp_nl(endog_data, lags_endog_lin = lags_endog_lin, lags_endog_nl = lags_endog_nl, lags_criterion = lags_criterion, max_lags = max_lags, trend = trend, shock_type = shock_type, switching = switching, use_hp = use_hp, lambda = lambda, gamma = gamma, confint = confint, hor = hor), 'You can not provide a lag criterion (AICc, AIC or BIC) and a fixed number of lags.', fixed = TRUE) } ) test_that("Test whether lag criterion AND maximum number of lags are given", { max_lags <- NaN testthat::expect_error(lp_nl(endog_data, lags_endog_lin = lags_endog_lin, lags_endog_nl = lags_endog_nl, lags_criterion = lags_criterion, max_lags = max_lags, trend = trend, shock_type = shock_type, switching = switching, use_hp = use_hp, lambda = lambda, gamma = gamma, confint = confint, hor = hor), 'Please provide a maximum number of lags for the lag length criterion.', fixed = TRUE) } ) test_that("Test whether values for horizons are correct", { hor <- -1 testthat::expect_error(lp_nl(endog_data, lags_endog_lin = lags_endog_lin, lags_endog_nl = lags_endog_nl, lags_criterion = lags_criterion, max_lags = max_lags, trend = trend, shock_type = shock_type, switching = switching, use_hp = use_hp, lambda = lambda, gamma = gamma, confint = confint, hor = hor), 'The number of horizons has to be an integer and > 0.', fixed = TRUE) } ) test_that("Test whether lags are integers", { lags_endog_lin <- 1.4 lags_endog_nl <- -2 lags_criterion <- NaN testthat::expect_error(lp_nl(endog_data, lags_endog_lin = lags_endog_lin, lags_endog_nl = lags_endog_nl, lags_criterion = lags_criterion, max_lags = max_lags, trend = trend, shock_type = shock_type, switching = switching, use_hp = use_hp, lambda = lambda, gamma = gamma, confint = confint, hor = hor), 'The number of lags have to be a positive integer.', fixed = TRUE) } ) test_that("Test whether trend is correctly specified", { trend <- 12 testthat::expect_error(lp_nl(endog_data, lags_endog_lin = lags_endog_lin, lags_endog_nl = lags_endog_nl, lags_criterion = lags_criterion, max_lags = max_lags, trend = trend, shock_type = shock_type, switching = switching, use_hp = use_hp, lambda = lambda, gamma = gamma, confint = confint, hor = hor), 'For trend please set 0 = no trend, 1 = trend, 2 = trend and quadratic trend.', fixed = TRUE) } ) test_that("Test shock type is correctly specified", { shock_type <- 12 testthat::expect_error(lp_nl(endog_data, lags_endog_lin = lags_endog_lin, lags_endog_nl = lags_endog_nl, lags_criterion = lags_criterion, max_lags = max_lags, trend = trend, shock_type = shock_type, switching = switching, use_hp = use_hp, lambda = lambda, gamma = gamma, confint = confint, hor = hor), 'The shock_type has to be 0 = standard deviation shock or 1 = unit shock.', fixed = TRUE) } ) test_that("Test whether width of confidence bands is correctly specified", { confint <- -1 testthat::expect_error(lp_nl(endog_data, lags_endog_lin = lags_endog_lin, lags_endog_nl = lags_endog_nl, lags_criterion = lags_criterion, max_lags = max_lags, trend = trend, shock_type = shock_type, switching = switching, use_hp = use_hp, lambda = lambda, gamma = gamma, confint = confint, hor = hor), 'The width of the confidence bands has to be >=0.', fixed = TRUE) } ) test_that("Test whether gamma is positive", { gamma <- -1 testthat::expect_error(lp_nl(endog_data, lags_endog_lin = lags_endog_lin, lags_endog_nl = lags_endog_nl, lags_criterion = lags_criterion, max_lags = max_lags, trend = trend, shock_type = shock_type, switching = switching, use_hp = use_hp, lambda = lambda, gamma = gamma, confint = confint, hor = hor), 'Gamma has to be a positive number.', fixed = TRUE) } ) test_that("Test whether use_hp is 0 or 1", { use_hp <- - 2 testthat::expect_error(lp_nl(endog_data, lags_endog_lin = lags_endog_lin, lags_endog_nl = lags_endog_nl, lags_criterion = lags_criterion, max_lags = max_lags, trend = trend, shock_type = shock_type, switching = switching, use_hp = use_hp, lambda = lambda, gamma = gamma, confint = confint, hor = hor), 'Please set use_hp = 0 (do not use HP-filter), or use_hp = 1 (use HP-filter).', fixed = TRUE) } ) test_that("Test whether maximum number of lags is positive", { max_lags <- - 2 testthat::expect_error(lp_nl(endog_data, lags_endog_lin = lags_endog_lin, lags_endog_nl = lags_endog_nl, lags_criterion = lags_criterion, max_lags = max_lags, trend = trend, shock_type = shock_type, switching = switching, use_hp = use_hp, lambda = lambda, gamma = gamma, confint = confint, hor = hor), 'The maximum number of lags has to be a positive integer.', fixed = TRUE) } ) test_that("Test whether whether no lag length criterion is given but maximum number of lags.", { lags_endog_lin <- 3 lags_endog_nl <- 2 lags_criterion <- NaN max_lags <- 3 testthat::expect_error(lp_nl(endog_data, lags_endog_lin = lags_endog_lin, lags_endog_nl = lags_endog_nl, lags_criterion = lags_criterion, max_lags = max_lags, trend = trend, shock_type = shock_type, switching = switching, use_hp = use_hp, lambda = lambda, gamma = gamma, confint = confint, hor = hor), 'The maximum number of lags can only be used if a lag length criterion is given.', fixed = TRUE) } ) test_that("Test that model works when irfs are based on lag length criterion.", { testthat::expect_error(lp_nl(endog_data, lags_endog_lin = lags_endog_lin, lags_endog_nl = lags_endog_nl, lags_criterion = lags_criterion, max_lags = max_lags, trend = trend, shock_type = shock_type, switching = switching, use_hp = use_hp, lambda = lambda, gamma = gamma, confint = confint, hor = hor, num_cores = 1), NA) } ) test_that("Test that model works wfor different newey west options.", { # Load (endogenous) data endog_data <- interest_rules_var_data # Choose data for switching variable (here Federal Funds Rate) # Important: The switching variable does not have to be used within the VAR! switching_data <- endog_data$Infl # Estimate model a testthat::expect_error(lp_nl(endog_data, lags_endog_lin = 4, lags_endog_nl = 3, trend = 0, shock_type = 1, confint = 1.96, hor = 24, switching = switching_data, use_nw = T, nw_prewhite = F, use_hp = TRUE, lambda = 1600, gamma = 3, num_cores = 1), NA) # Estimate model and save results testthat::expect_error(lp_nl(endog_data, lags_endog_lin = 4, lags_endog_nl = 3, trend = 0, shock_type = 1, confint = 1.96, hor = 24, switching = switching_data, use_nw = F, nw_prewhite = F, use_hp = TRUE, lambda = 1600, gamma = 3, num_cores = 1), NA) # Estimate model and save results testthat::expect_error(lp_nl(endog_data, lags_endog_lin = 4, lags_endog_nl = 3, trend = 0, shock_type = 1, confint = 1.96, hor = 24, switching = switching_data, use_nw = T, nw_prewhite = T, use_hp = TRUE, lambda = 1600, gamma = 3, num_cores = 1), NA) # Estimate model and save results testthat::expect_error(lp_nl(endog_data, lags_endog_lin = 4, lags_endog_nl = 3, trend = 0, shock_type = 1, confint = 1.96, hor = 24, switching = switching_data, use_nw = F, nw_prewhite = T, use_hp = TRUE, lambda = 1600, gamma = 3, num_cores = 1), NA) } )