From 36899dfff934d01b0ba89b5d492f3796332d6be9 Mon Sep 17 00:00:00 2001 From: Nicholas Clark Date: Mon, 13 Jun 2022 14:52:30 +1000 Subject: [PATCH] improve squared exponential trend extension --- NEON_manuscript/ixodes_hyp_tests.R | 2 +- NEON_manuscript/neon_utility_functions.R | 20 +-- NEON_manuscript/simulation_component.R | 6 +- NEON_manuscript/testing_tweedie.R | 106 ++++++++++---- R/add_base_dgam_lines.R | 8 +- R/add_stan_data.R | 96 +++++++------ R/add_trend_lines.R | 9 +- R/eval_mvgam.R | 168 +++++++++++++++++------ R/get_mvgam_resids.R | 17 ++- R/mvgam.R | 46 ++++++- R/pfilter_mvgam_fc.R | 15 +- R/pfilter_mvgam_init.R | 32 ++--- R/pfilter_mvgam_online.R | 4 +- R/pfilter_mvgam_smooth.R | 32 +++-- R/plot_mvgam_fc.R | 57 +++++++- R/plot_mvgam_resids.R | 6 - R/plot_mvgam_trace.R | 6 - R/plot_mvgam_trend.R | 15 +- R/plot_mvgam_uncertainty.R | 16 +-- R/sim_mvgam.R | 1 + R/summary.mvgam.R | 6 - Results/sim_results.rda | Bin 7820 -> 0 bytes docs/README-unnamed-chunk-10-1.png | Bin 3070 -> 3069 bytes docs/README-unnamed-chunk-11-1.png | Bin 2861 -> 2825 bytes docs/README-unnamed-chunk-13-1.png | Bin 10456 -> 10439 bytes docs/README-unnamed-chunk-14-1.png | Bin 15517 -> 15464 bytes docs/README-unnamed-chunk-15-1.png | Bin 4958 -> 4935 bytes docs/README-unnamed-chunk-16-1.png | Bin 8240 -> 8289 bytes docs/README-unnamed-chunk-17-1.png | Bin 4762 -> 4740 bytes docs/README-unnamed-chunk-18-1.png | Bin 13069 -> 13205 bytes docs/README-unnamed-chunk-19-1.png | Bin 3831 -> 3788 bytes docs/README-unnamed-chunk-20-1.png | Bin 3435 -> 3366 bytes docs/README-unnamed-chunk-21-1.png | Bin 3575 -> 3589 bytes docs/README-unnamed-chunk-22-1.png | Bin 2638 -> 2988 bytes docs/README-unnamed-chunk-23-1.png | Bin 5744 -> 5724 bytes docs/README-unnamed-chunk-24-1.png | Bin 9585 -> 9581 bytes docs/README-unnamed-chunk-7-1.png | Bin 3703 -> 3686 bytes docs/README-unnamed-chunk-8-1.png | Bin 3731 -> 3722 bytes docs/README-unnamed-chunk-9-1.png | Bin 3759 -> 3756 bytes docs/README.Rmd | 12 +- docs/README.md | 95 +++++++------ man/mvgam.Rd | 11 +- man/pfilter_mvgam_online.Rd | 4 +- man/pfilter_mvgam_smooth.Rd | 8 +- 44 files changed, 524 insertions(+), 274 deletions(-) delete mode 100644 Results/sim_results.rda diff --git a/NEON_manuscript/ixodes_hyp_tests.R b/NEON_manuscript/ixodes_hyp_tests.R index 6a56889f..a646cdb2 100644 --- a/NEON_manuscript/ixodes_hyp_tests.R +++ b/NEON_manuscript/ixodes_hyp_tests.R @@ -53,7 +53,7 @@ hyp3 = y ~ # Fit each hypothesis burnin = 5000 -n_samples = 2000 +n_samples = 1000 fit_null <- fit_mvgam(data_train = all_data$data_train, data_test = all_data$data_test, diff --git a/NEON_manuscript/neon_utility_functions.R b/NEON_manuscript/neon_utility_functions.R index 67666118..5e0ea403 100644 --- a/NEON_manuscript/neon_utility_functions.R +++ b/NEON_manuscript/neon_utility_functions.R @@ -3,7 +3,7 @@ calculate_pit = function(out_gam_mod, series, data_test, data_train){ # Pull out predictions and truths for the specific series - ends <- seq(0, dim(MCMCvis::MCMCchains(out_gam_mod$jags_output, 'ypred'))[2], + ends <- seq(0, dim(MCMCvis::MCMCchains(out_gam_mod$model_output, 'ypred'))[2], length.out = NCOL(out_gam_mod$ytimes) + 1) starts <- ends + 1 starts <- c(1, starts[-c(1, (NCOL(out_gam_mod$ytimes)+1))]) @@ -24,7 +24,7 @@ calculate_pit = function(out_gam_mod, series, data_test, data_train){ dplyr::arrange(time) %>% dplyr::pull(y) - preds <- MCMCvis::MCMCchains(out_gam_mod$jags_output, 'ypred')[,starts[series]:ends[series]] + preds <- MCMCvis::MCMCchains(out_gam_mod$model_output, 'ypred')[,starts[series]:ends[series]] preds <- t(preds[, (last_obs +1):NCOL(preds)]) if(any(!is.na(truth))){ @@ -83,7 +83,7 @@ calculate_drps = function(out_gam_mod, pred_matrix = NULL, series, data_test, da scores } - ends <- seq(0, dim(MCMCvis::MCMCchains(out_gam_mod$jags_output, 'ypred'))[2], + ends <- seq(0, dim(MCMCvis::MCMCchains(out_gam_mod$model_output, 'ypred'))[2], length.out = NCOL(out_gam_mod$ytimes) + 1) starts <- ends + 1 starts <- c(1, starts[-c(1, (NCOL(out_gam_mod$ytimes)+1))]) @@ -105,7 +105,7 @@ calculate_drps = function(out_gam_mod, pred_matrix = NULL, series, data_test, da dplyr::pull(y) if(is.null(pred_matrix)){ - preds <- MCMCvis::MCMCchains(out_gam_mod$jags_output, 'ypred')[,starts[series]:ends[series]] + preds <- MCMCvis::MCMCchains(out_gam_mod$model_output, 'ypred')[,starts[series]:ends[series]] preds <- t(preds[, (last_obs +1):NCOL(preds)]) } else { preds <- t(pred_matrix[, (last_obs +1):NCOL(pred_matrix)]) @@ -136,7 +136,7 @@ plot_mvgam_season = function(out_gam_mod, series, data_test, data_train, siteID = as.character(unique(data_train$siteID[which(data_train$series == levels(data_train$series)[series])]))) Xp <- predict(out_gam_mod$mgcv_model, newdata = pred_dat, type = 'lpmatrix') - betas <- MCMCvis::MCMCchains(out_gam_mod$jags_output, 'b') + betas <- MCMCvis::MCMCchains(out_gam_mod$model_output, 'b') plot((Xp %*% betas[1,]) ~ pred_dat$season, ylim = range((Xp %*% betas[1,]) + 2.5, (Xp %*% betas[1,]) - 2.5), @@ -172,11 +172,11 @@ plot_mvgam_gdd = function(out_gam_mod, series, data_test, data_train, siteID = as.character(unique(data_train$siteID[which(data_train$series == levels(data_train$series)[series])]))) Xp <- predict(out_gam_mod$mgcv_model, newdata = pred_dat, type = 'lpmatrix') - betas <- MCMCvis::MCMCchains(out_gam_mod$jags_output, 'b') + betas <- MCMCvis::MCMCchains(out_gam_mod$model_output, 'b') preds <- matrix(NA, nrow = 1000, ncol = length(pred_dat$cum_gdd)) for(i in 1:1000){ preds[i,] <- rnbinom(length(pred_dat$cum_gdd), mu = exp((Xp %*% betas[i,])), - size = MCMCvis::MCMCsummary(out_gam_mod$jags_output, 'r')$mean) + size = MCMCvis::MCMCsummary(out_gam_mod$model_output, 'r')$mean) } int <- apply(preds, 2, hpd, 0.95) @@ -343,7 +343,7 @@ fit_mvgam = function(data_train, # Condition the model on the observed data if(missing(knots)){ - out_gam_mod <- mvjagam(formula = formula, + out_gam_mod <- mvgam(formula = formula, data_train = data_train, data_test = data_test, burnin = burnin, @@ -355,7 +355,7 @@ fit_mvgam = function(data_train, family = family, phi_prior = phi_prior) } else { - out_gam_mod <- mvjagam(formula = formula, + out_gam_mod <- mvgam(formula = formula, data_train = data_train, data_test = data_test, burnin = burnin, @@ -373,7 +373,7 @@ fit_mvgam = function(data_train, #### If GAM component is LESS supported, we should see evidence in the form of: #### # 1. Poorer convergence of smoothing parameter estimates, suggesting the model # is more 'mis-specified' and harder to fit - rho_summary <- MCMCvis::MCMCsummary(out_gam_mod$jags_output, + rho_summary <- MCMCvis::MCMCsummary(out_gam_mod$model_output, c('rho'), HPD = TRUE) # 2. Stronger residual correlations, suggesting we are missing some site-level structure diff --git a/NEON_manuscript/simulation_component.R b/NEON_manuscript/simulation_component.R index 8148c6bf..db4551e3 100644 --- a/NEON_manuscript/simulation_component.R +++ b/NEON_manuscript/simulation_component.R @@ -31,7 +31,7 @@ sim_results <- lapply(seq_len(nrow(run_parameters)), function(x){ seasonality = 'hierarchical') # Fit a multivariate gam with no seasonality (null model) - nullmod <- mvjagam(data_train = sim_data$data_train, + nullmod <- mvgam(data_train = sim_data$data_train, data_test = sim_data$data_test, formula = y ~ s(series, bs = 're'), family = 'nb', @@ -80,7 +80,7 @@ sim_results <- lapply(seq_len(nrow(run_parameters)), function(x){ correlations$mean_correlations)) # Fit a multivariate gam with hierarchical seasonality - hier_mod <- mvjagam(data_train = sim_data$data_train, + hier_mod <- mvgam(data_train = sim_data$data_train, data_test = sim_data$data_test, formula = y ~ s(series, bs = 're') + s(season, k = 12, m = 2, bs = 'cc') + @@ -117,7 +117,7 @@ sim_results <- lapply(seq_len(nrow(run_parameters)), function(x){ Xp <- rbind(predict(mgcv_hier_mod, type = 'lpmatrix'), predict(mgcv_hier_mod, newdata = sim_data$data_test, type = 'lpmatrix')) vc <- vcov(mgcv_hier_mod) - sim <- MASS::mvrnorm(dim(MCMCvis::MCMCchains(hier_mod$jags_output, 'ypred'))[1], + sim <- MASS::mvrnorm(dim(MCMCvis::MCMCchains(hier_mod$model_output, 'ypred'))[1], mu = coef(mgcv_hier_mod), Sigma = vc) dims_needed <- dim(exp(Xp %*% t(sim))) mus <- as.vector(exp(Xp %*% t(sim))) diff --git a/NEON_manuscript/testing_tweedie.R b/NEON_manuscript/testing_tweedie.R index 14cf1cd8..d94da003 100644 --- a/NEON_manuscript/testing_tweedie.R +++ b/NEON_manuscript/testing_tweedie.R @@ -1,42 +1,100 @@ # Generate series with independent latent GP trends library(mvgam) -sim_data <- sim_mvgam(T = 70, n_series = 2, +sim_data <- sim_mvgam(T = 90, n_series = 2, use_lv = F, trend_model = 'GP', trend_rel = 0.6, family = 'poisson', - mu_obs = c(7, 10)) -mod1stan <- mvgam(data_train = sim_data$data_train, - data_test = sim_data$data_test, - formula = y ~ s(season, k = 12, bs = 'cc'), - knots = list(season = c(0.5, 12.5)), - family = 'poisson', - trend_model = 'GP', - chains = 4, - burnin = 1000, - use_stan = T, run_model = T) -mod1stan$model_file -summary(mod1stan) -plot(mod1stan, 'forecast', series = 2) + mu_obs = c(7, 10), + train_prop = 1) + +# To run outside of mvgam (maybe show how other elements could be added?) +train_dat <- sim_data$data_train %>% + dplyr::filter(time <= 75) +test_dat <- sim_data$data_train %>% + dplyr::filter(time > 75) +# mod1stan <- mvgam(data_train = train_dat, +# data_test = test_dat, +# formula = y ~ s(season, k = 12, bs = 'cc'), +# knots = list(season = c(0.5, 12.5)), +# family = 'nb', +# trend_model = 'GP', +# use_stan = T, +# run_model = F) +# test <- rstan::stan(model_code = mod1stan$model_file, +# data = mod1stan$model_data, +# chains = 1, iter = 1000, +# init = mod1stan$inits) + +mod1jags <- mvgam(data_train = train_dat, + data_test = test_dat, + formula = y ~ s(season, k = 12, bs = 'cc'), + knots = list(season = c(0.5, 12.5)), + family = 'poisson', + trend_model = 'AR3') + +mod1stan <- mvgam(data_train = train_dat, + data_test = test_dat, + formula = y ~ s(season, k = 12, bs = 'cc'), + knots = list(season = c(0.5, 12.5)), + family = 'poisson', + trend_model = 'GP', + use_stan = T, + burnin = 1000) + +# Compare the out of sample DRPS for each model +plot(mod1jags, 'forecast', series = 1, data_test = test_dat) +plot(mod1stan, 'forecast', series = 1, data_test = test_dat) + +plot(mod1jags, 'forecast', series = 2, data_test = test_dat) +plot(mod1stan, 'forecast', series = 2, data_test = test_dat) + +compare_mvgams(mod1jags, mod1stan, fc_horizon = 10, + n_evaluations = 20, n_cores = 4) + +plot(mod1stan, 'residuals', series = 1) +plot(mod1stan, 'residuals', series = 2) +plot(mod1stan, 'uncertainty', data_test = test_dat, series = 1) +plot(mod1stan, 'uncertainty', data_test = test_dat, series = 2) +plot(mod1stan, 'forecast', series = 1, data_test = test_dat) +plot(mod1stan, 'forecast', series = 2, data_test = test_dat) +plot(mod1stan, 'smooths', series = 1) plot(mod1stan, 'smooths', series = 2) -plot(mod1stan, 'trend') +plot(mod1stan, 'trend', series = 2) +plot(sim_data$true_trends[,2]) -pfilter_mvgam_init(object = mod1stan, data_assim = sim_data$data_test %>% - dplyr::filter(time == 54), - n_particles = 10000) +# Need to fix the particle filter so it can initiate even if only one series has a next observation +pfilter_mvgam_init(object = mod1stan, data_assim = test_dat, + n_particles = 1000) -pfilter_mvgam_online(data_assim = sim_data$data_test[1:10, ], n_cores = 3, kernel_lambda = 1) +pfilter_mvgam_online(data_assim = test_dat[1:14, ], + n_cores = 3, use_resampling = T, + threshold = 0.6) -fcs <- pfilter_mvgam_fc(data_test = sim_data$data_test, ylim = c(0, 17)) +fcs <- pfilter_mvgam_fc(data_test = test_dat, ylim = c(0, 20), n_cores = 3) -layout(matrix(c(1:2), ncol = 2, nrow = 1)) -plot_mvgam_fc(mod1stan, series = 1, data_test = sim_data$data_test, - ylim = c(0, 17)) +layout(matrix(c(1:2), ncol = 1, nrow = 2)) +plot_mvgam_fc(mod1stan, series = 1, data_test = test_dat, + ylim = c(0, 20)) fcs$series_1() points(c(sim_data$data_train %>% dplyr::filter(series == 'series_1')%>% dplyr::pull(y), sim_data$data_test %>% dplyr::filter(series == 'series_1') %>% - dplyr::pull(y))) + dplyr::pull(y)), + pch = 16, cex = 0.4) + +layout(matrix(c(1:2), ncol = 1, nrow = 2)) +plot_mvgam_fc(mod1stan, series = 2, data_test = test_dat, + ylim = c(0, 20)) +fcs$series_2() +points(c(sim_data$data_train %>% + dplyr::filter(series == 'series_2')%>% + dplyr::pull(y), + sim_data$data_test %>% + dplyr::filter(series == 'series_2') %>% + dplyr::pull(y)), + pch = 16, cex = 0.4) +unlink('pfilter', recursive = T) diff --git a/R/add_base_dgam_lines.R b/R/add_base_dgam_lines.R index bcde184e..f516578d 100644 --- a/R/add_base_dgam_lines.R +++ b/R/add_base_dgam_lines.R @@ -67,8 +67,12 @@ add_base_dgam_lines = function(use_lv, stan = FALSE){ tau = sigma ^ -2; // posterior predictions - int ypred[total_obs]; - ypred = poisson_log_rng(eta + to_vector(trend)); + matrix[n, n_series] ypred; + for(i in 1:n){ + for(s in 1:n_series){ + ypred[i, s] = poisson_log_rng(eta[ytimes[i, s]] + trend[i, s]); + } + } } " diff --git a/R/add_stan_data.R b/R/add_stan_data.R index 9afe3e8f..d3e26d46 100644 --- a/R/add_stan_data.R +++ b/R/add_stan_data.R @@ -41,22 +41,22 @@ add_stan_data = function(jags_file, stan_file, jags_data, family = 'poisson'){ 'r_vec[1:n,s] = rep_vector(inv(r_inv[s]), n);\n}\n') to_negbin <- gsub('poisson_log_rng', 'neg_binomial_2_rng', - stan_file[grep('ypred = poisson_log_rng', stan_file, fixed = T)]) - stan_file[grep('ypred = poisson_log_rng', stan_file, fixed = T)] <- - gsub(');', ', to_vector(r_vec));', to_negbin) + stan_file[grep('ypred[i, s] = poisson_log_rng', stan_file, fixed = T)]) + stan_file[grep('ypred[i, s] = poisson_log_rng', stan_file, fixed = T)] <- + gsub(');', ', r_vec[i, s]);', to_negbin) add_exp_open <- gsub('\\(eta', '(exp(eta', - stan_file[grep('ypred = neg_binomial', stan_file, fixed = T)]) + stan_file[grep('ypred[i, s] = neg_binomial', stan_file, fixed = T)]) - if(any(grepl('to_vector(trend)', stan_file, fixed = T))){ - add_exp_cl <- gsub('to_vector(trend)', 'to_vector(trend))', + if(any(grepl('trend[i, s]', stan_file, fixed = T))){ + add_exp_cl <- gsub('trend[i, s]', 'trend[i, s])', add_exp_open, fixed = T) } else { - add_exp_cl <- gsub('eta)', 'eta,),', + add_exp_cl <- gsub('eta[i, s])', 'eta[i, s],),', add_exp_open) } - stan_file[grep('ypred = neg_binomial', stan_file, fixed = T)] <- + stan_file[grep('ypred[i, s] = neg_binomial', stan_file, fixed = T)] <- add_exp_cl stan_file <- readLines(textConnection(stan_file), n = -1) @@ -79,6 +79,14 @@ add_stan_data = function(jags_file, stan_file, jags_data, family = 'poisson'){ '; // mgcv smooth penalty matrix ', snames[i]) } + # Get parametric prior locations and precisions if necessary + if('p_taus' %in% names(jags_data)){ + p_terms <- paste0('real p_taus[', length(jags_data$p_taus),']; // prior precisions for parametric coefficients\n', + 'real p_coefs[', length(jags_data$p_taus), ']; // prior locations for parametric coefficients\n') + } else { + p_terms <- NULL + } + # Search for any non-contiguous indices that sometimes are used by mgcv if(any(grep('in c\\(', jags_file))){ add_idxs <- TRUE @@ -104,40 +112,42 @@ add_stan_data = function(jags_file, stan_file, jags_data, family = 'poisson'){ # Update the Stan data block stan_file[grep('##insert data', - stan_file)] <- paste0('//Stan code generated by package mvgam\n', - 'data {', - '\n', - paste0(idx_data, collapse = '\n'), '\n', - 'int total_obs; // total number of observations\n', - 'int n; // number of timepoints per series\n', - 'int n_sp; // number of smoothing parameters\n', - 'int n_series; // number of series\n', - 'int num_basis; // total number of basis coefficients\n', - 'vector[num_basis] zero; // priro locations for basis coefficients\n', - 'matrix[num_basis, total_obs] X; // transposed mgcv GAM design matrix\n', - 'int ytimes[n, n_series]; // time-ordered matrix (which col in X belongs to each [time, series] observation?)\n', - paste0(smooth_penalty_data, collapse = '\n'), '\n', - 'int y_observed[n, n_series]; // indices of missing vs observed\n', - 'int y[n, n_series]; // time-ordered observations, with -1 indicating missing\n', - '}\n') + stan_file)] <- paste0('//Stan model code generated by package mvgam\n', + 'data {', + '\n', + paste0(idx_data, collapse = '\n'), '\n', + 'int total_obs; // total number of observations\n', + 'int n; // number of timepoints per series\n', + 'int n_sp; // number of smoothing parameters\n', + 'int n_series; // number of series\n', + 'int num_basis; // total number of basis coefficients\n', + p_terms, + 'vector[num_basis] zero; // prior locations for basis coefficients\n', + 'matrix[num_basis, total_obs] X; // transposed mgcv GAM design matrix\n', + 'int ytimes[n, n_series]; // time-ordered matrix (which col in X belongs to each [time, series] observation?)\n', + paste0(smooth_penalty_data, collapse = '\n'), '\n', + 'int y_observed[n, n_series]; // indices of missing vs observed\n', + 'int y[n, n_series]; // time-ordered observations, with -1 indicating missing\n', + '}\n') } else { add_idxs <- FALSE stan_file[grep('##insert data', - stan_file)] <- paste0('//Stan code generated by package mvgam\n', - 'data {', - '\n', - 'int total_obs; // total number of observations\n', - 'int n; // number of timepoints per series\n', - 'int n_sp; // number of smoothing parameters\n', - 'int n_series; // number of series\n', - 'int num_basis; // total number of basis coefficients\n', - 'vector[num_basis] zero; // prior locations for basis coefficients\n', - 'matrix[num_basis, total_obs] X; // transposed mgcv GAM design matrix\n', - 'int ytimes[n, n_series]; // time-ordered matrix (which col in X belongs to each [time, series] observation?)\n', - paste0(smooth_penalty_data, collapse = '\n'), '\n', - 'int y_observed[n, n_series]; // indices of missing vs observed\n', - 'int y[n, n_series]; // time-ordered observations, with -1 indicating missing\n', - '}\n') + stan_file)] <- paste0('//Stan model code generated by package mvgam\n', + 'data {', + '\n', + 'int total_obs; // total number of observations\n', + 'int n; // number of timepoints per series\n', + 'int n_sp; // number of smoothing parameters\n', + 'int n_series; // number of series\n', + 'int num_basis; // total number of basis coefficients\n', + 'vector[num_basis] zero; // prior locations for basis coefficients\n', + p_terms, + 'matrix[num_basis, total_obs] X; // transposed mgcv GAM design matrix\n', + 'int ytimes[n, n_series]; // time-ordered matrix (which col in X belongs to each [time, series] observation?)\n', + paste0(smooth_penalty_data, collapse = '\n'), '\n', + 'int y_observed[n, n_series]; // indices of missing vs observed\n', + 'int y[n, n_series]; // time-ordered observations, with -1 indicating missing\n', + '}\n') } stan_file <- readLines(textConnection(stan_file), n = -1) @@ -252,7 +262,7 @@ add_stan_data = function(jags_file, stan_file, jags_data, family = 'poisson'){ ':', as.numeric(substr(sub(".*\\:", "", stan_file[grep('// parametric effect', stan_file) + 1]), 1, 1)), - ') {\nb_raw[i] ~ normal(0, 1);\n}') + ') {\nb_raw[i] ~ normal(p_coefs[i], 1 / p_taus[i]);\n}') stan_file <- readLines(textConnection(stan_file), n = -1) } unlink('base_gam_stan.txt') @@ -303,6 +313,12 @@ add_stan_data = function(jags_file, stan_file, jags_data, family = 'poisson'){ stan_data <- append(stan_data, idx_vals) } + # Add parametric prior means and precisions if required + if('p_taus' %in% names(jags_data)){ + stan_data$p_coefs <- array(jags_data$p_coefs, dim = length(jags_data$p_taus)) + stan_data$p_taus <- array(jags_data$p_taus, dim = length(jags_data$p_taus)) + } + return(list(stan_file = stan_file, model_data = stan_data)) } diff --git a/R/add_trend_lines.R b/R/add_trend_lines.R index 0d617636..e81f854e 100644 --- a/R/add_trend_lines.R +++ b/R/add_trend_lines.R @@ -27,8 +27,8 @@ add_trend_lines = function(model_file, stan = FALSE, 'y[i, s] ~ poisson_log(eta[ytimes[i, s]]);' - model_file[grep('ypred =', model_file, fixed = T)] <- - "ypred = poisson_log_rng(eta );" + model_file[grep('ypred[i, s] =', model_file, fixed = T)] <- + "ypred[i, s] = poisson_log_rng(eta[ytimes[i, s]]);" model_file <- model_file[-grep('tau =', model_file)] @@ -68,7 +68,7 @@ add_trend_lines = function(model_file, stan = FALSE, 'real boundary;\n', 'boundary = (5.0/4) * max(times);\n', 'int num_gp_basis;\n', - 'num_gp_basis = max(30, n);\n', + 'num_gp_basis = max(40, n);\n', 'matrix[n, num_gp_basis] gp_phi;\n', 'for (m in 1:num_gp_basis){\n', 'gp_phi[,m] = phi_SE(boundary, m, times);\n', @@ -76,7 +76,8 @@ add_trend_lines = function(model_file, stan = FALSE, 'parameters {') model_file[grep('##insert data', model_file)-1] <- - paste0('functions {\n', + paste0('//Stan GP functions generated by package mvgam\n', + 'functions {\n', 'real lambda_gp(real L, int m) {\n', 'real lam;\n', 'lam = ((m*pi())/(2*L))^2;\n', diff --git a/R/eval_mvgam.R b/R/eval_mvgam.R index 519f959d..b1a1583f 100644 --- a/R/eval_mvgam.R +++ b/R/eval_mvgam.R @@ -55,12 +55,12 @@ eval_mvgam = function(object, } } - # Convert stanfit objects to coda samples - if(class(object$model_output) == 'stanfit'){ - object$model_output <- coda::mcmc.list(lapply(1:NCOL(object$model_output), - function(x) coda::mcmc(as.array(object$model_output)[,x,]))) + if(eval_timepoint < 3){ + stop('argument "eval_timepoint" must be >= 3', + call. = FALSE) } + #### 1. Generate linear predictor matrix for covariates and extract trend estimates at timepoint data_train <- object$obs_data n_series <- NCOL(object$ytimes) @@ -161,12 +161,37 @@ eval_mvgam = function(object, starts <- ends + 1 starts <- c(1, starts[-c(1, (n_series + 1))]) ends <- ends[-1] - trends <- lapply(seq_len(n_series), function(series){ - trend_estimates <- MCMCvis::MCMCchains(object$model_output, 'trend')[,starts[series]:ends[series]] - as.matrix(trend_estimates[,(eval_timepoint - 2):eval_timepoint]) - }) - taus <- MCMCvis::MCMCchains(object$model_output, 'tau') + if(object$trend_model == 'GP'){ + # Pull out entire series of trend estimates up to the evaluation timepoint if this is a GP trend + trends <- lapply(seq_len(n_series), function(series){ + MCMCvis::MCMCchains(object$model_output, 'trend')[,seq(series, + dim(MCMCvis::MCMCchains(object$model_output, + 'trend'))[2], + by = NCOL(object$ytimes))] + }) + + taus <- NULL + } else { + # Otherwise only keep the preceeding three trend estimates to save memory + if(object$fit_engine == 'stan'){ + trends <- lapply(seq_len(n_series), function(series){ + trend_estimates <- MCMCvis::MCMCchains(object$model_output, 'trend')[,seq(series, + dim(MCMCvis::MCMCchains(object$model_output, + 'trend'))[2], + by = NCOL(object$ytimes))] + as.matrix(trend_estimates[,(eval_timepoint - 2):eval_timepoint]) + }) + } else { + trends <- lapply(seq_len(n_series), function(series){ + trend_estimates <- MCMCvis::MCMCchains(object$model_output, 'trend')[,starts[series]:ends[series]] + as.matrix(trend_estimates[,(eval_timepoint - 2):eval_timepoint]) + }) + } + + taus <- MCMCvis::MCMCchains(object$model_output, 'tau') + } + } lvs <- NULL @@ -198,7 +223,17 @@ eval_mvgam = function(object, } # AR term estimates + if(object$trend_model == 'GP'){ + alpha_gps <- MCMCvis::MCMCchains(object$model_output, 'alpha_gp') + rho_gps <- MCMCvis::MCMCchains(object$model_output, 'rho_gp') + ar1s <- NULL + ar2s <- NULL + ar3s <- NULL + } + if(object$trend_model %in% c('RW', 'None')){ + alpha_gps <- NULL + rho_gps <- NULL if(object$use_lv){ ar1s <- matrix(0, nrow = NROW(betas), ncol = object$n_lv) ar2s <- matrix(0, nrow = NROW(betas), ncol = object$n_lv) @@ -212,6 +247,8 @@ eval_mvgam = function(object, if(object$trend_model == 'AR1'){ ar1s <- MCMCvis::MCMCchains(object$model_output, 'ar1') + alpha_gps <- NULL + rho_gps <- NULL if(object$use_lv){ ar2s <- matrix(0, nrow = NROW(betas), ncol = object$n_lv) @@ -225,6 +262,8 @@ eval_mvgam = function(object, if(object$trend_model == 'AR2'){ ar1s <- MCMCvis::MCMCchains(object$model_output, 'ar1') ar2s <- MCMCvis::MCMCchains(object$model_output, 'ar2') + alpha_gps <- NULL + rho_gps <- NULL if(object$use_lv){ ar3s <- matrix(0, nrow = NROW(betas), ncol = object$n_lv) @@ -234,6 +273,8 @@ eval_mvgam = function(object, } if(object$trend_model == 'AR3'){ + alpha_gps <- NULL + rho_gps <- NULL ar1s <- MCMCvis::MCMCchains(object$model_output, 'ar1') ar2s <- MCMCvis::MCMCchains(object$model_output, 'ar2') ar3s <- MCMCvis::MCMCchains(object$model_output, 'ar3') @@ -266,6 +307,7 @@ eval_mvgam = function(object, #### 2. Run trends forward fc_horizon steps to generate the forecast distribution #### use_lv <- object$use_lv upper_bounds <- object$upper_bounds + trend_model <- object$trend_model # Function to simulate trends / latent factors ahead using ar3 model sim_ar3 = function(phi, ar1, ar2, ar3, tau, state, h){ @@ -281,6 +323,21 @@ eval_mvgam = function(object, states[-c(1:3)] } + # Function to simulate trends ahead using squared exponential GP + sim_gp = function(alpha_gp, rho_gp, state, h){ + t <- 1:length(state) + t_new <- 1:(length(state) + h) + + Sigma_new <- alpha_gp^2 * exp(- outer(t, t_new, "-")^2 / (2 * rho_gp^2)) + Sigma_star <- alpha_gp^2 * exp(- outer(t_new, t_new, "-")^2 / (2 * rho_gp^2)) + Sigma <- alpha_gp^2 * exp(- outer(t, t, "-")^2 / (2 * rho_gp^2)) + + diag(1e-4, length(state)) + + tail(t(Sigma_new) %*% solve(Sigma, state), h) + + tail(MASS::mvrnorm(1, mu = rep(0, dim(Sigma_star - t(Sigma_new) %*% solve(Sigma, Sigma_new))[2]), + Sigma = Sigma_star - t(Sigma_new) %*% solve(Sigma, Sigma_new)), h) + } + # Run particles forward in time to generate their forecasts if(n_cores > 1){ @@ -298,6 +355,9 @@ eval_mvgam = function(object, 'ar1s', 'ar2s', 'ar3s', + 'alpha_gps', + 'rho_gps', + 'trend_model', 'lvs', 'lv_coefs', 'trends', @@ -306,7 +366,8 @@ eval_mvgam = function(object, 'twdis', 'n_series', 'upper_bounds', - 'sim_ar3'), + 'sim_ar3', + 'sim_gp'), envir = environment()) pbapply::pboptions(type = "none") @@ -398,14 +459,19 @@ eval_mvgam = function(object, trends[[trend]][samp_index, ] }) - # Sample AR parameters - phi <- phis[samp_index, ] - ar1 <- ar1s[samp_index, ] - ar2 <- ar2s[samp_index, ] - ar3 <- ar3s[samp_index, ] + if(trend_model == 'GP'){ + alpha_gp <- alpha_gps[samp_index, ] + rho_gp <- rho_gps[samp_index, ] + } else { + # Sample AR parameters + phi <- phis[samp_index, ] + ar1 <- ar1s[samp_index, ] + ar2 <- ar2s[samp_index, ] + ar3 <- ar3s[samp_index, ] - # Sample trend precisions - tau <- taus[samp_index,] + # Sample trend precisions + tau <- taus[samp_index,] + } # Family-specific parameters if(family == 'Negative Binomial'){ @@ -418,13 +484,21 @@ eval_mvgam = function(object, } series_fcs <- lapply(seq_len(n_series), function(series){ - trend_preds <- sim_ar3(phi = phi[series], - ar1 = ar1[series], - ar2 = ar2[series], - ar3 = ar3[series], - tau = tau[series], - state = last_trends[[series]], - h = fc_horizon) + if(trend_model == 'GP'){ + trend_preds <- sim_gp(alpha_gp = alpha_gp[series], + rho_gp = rho_gp[series], + state = last_trends[[series]], + h = fc_horizon) + } else { + trend_preds <- sim_ar3(phi = phi[series], + ar1 = ar1[series], + ar2 = ar2[series], + ar3 = ar3[series], + tau = tau[series], + state = last_trends[[series]], + h = fc_horizon) + } + if(family == 'Negative Binomial'){ fc <- rnbinom(fc_horizon, mu = exp(as.vector((Xp[which(as.numeric(data_assim$series) == series),] %*% @@ -544,14 +618,19 @@ eval_mvgam = function(object, trends[[trend]][samp_index, ] }) - # Sample AR parameters - phi <- phis[samp_index, ] - ar1 <- ar1s[samp_index, ] - ar2 <- ar2s[samp_index, ] - ar3 <- ar3s[samp_index, ] - - # Sample trend precisions - tau <- taus[samp_index,] + if(trend_model == 'GP'){ + alpha_gp <- alpha_gps[samp_index, ] + rho_gp <- rho_gps[samp_index, ] + } else { + # Sample AR parameters + phi <- phis[samp_index, ] + ar1 <- ar1s[samp_index, ] + ar2 <- ar2s[samp_index, ] + ar3 <- ar3s[samp_index, ] + + # Sample trend precisions + tau <- taus[samp_index,] + } # Family-specific parameters if(family == 'Negative Binomial'){ @@ -564,13 +643,21 @@ eval_mvgam = function(object, } series_fcs <- lapply(seq_len(n_series), function(series){ - trend_preds <- sim_ar3(phi = phi[series], - ar1 = ar1[series], - ar2 = ar2[series], - ar3 = ar3[series], - tau = tau[series], - state = last_trends[[series]], - h = fc_horizon) + if(trend_model == 'GP'){ + trend_preds <- sim_gp(alpha_gp = alpha_gp[series], + rho_gp = rho_gp[series], + state = last_trends[[series]], + h = fc_horizon) + } else { + trend_preds <- sim_ar3(phi = phi[series], + ar1 = ar1[series], + ar2 = ar2[series], + ar3 = ar3[series], + tau = tau[series], + state = last_trends[[series]], + h = fc_horizon) + } + if(family == 'Negative Binomial'){ fc <- rnbinom(fc_horizon, mu = exp(as.vector((Xp[which(as.numeric(data_assim$series) == series),] %*% @@ -613,7 +700,7 @@ eval_mvgam = function(object, # Evaluate against the truth series_truths <- lapply(seq_len(n_series), function(series){ - if(class(object$obs_data) == 'list'){ + if(class(object$obs_data)[1] == 'list'){ data_assim[['y']][which(as.numeric(data_assim$series) == series)] } else { data_assim[which(as.numeric(data_assim$series) == series),'y'] @@ -662,5 +749,4 @@ eval_mvgam = function(object, names(series_drps) <- levels(data_assim$series) return(series_drps) - } diff --git a/R/get_mvgam_resids.R b/R/get_mvgam_resids.R index cd4a9a9c..a397b506 100644 --- a/R/get_mvgam_resids.R +++ b/R/get_mvgam_resids.R @@ -9,12 +9,8 @@ #'@return A \code{list} of residual distributions get_mvgam_resids = function(object, n_cores = 1){ - # Convert stanfit objects to coda samples - if(object$fit_engine == 'stan'){ - preds <- rstan::extract(object$model_output, 'ypred')[[1]] - } else { - preds <- MCMCvis::MCMCchains(object$model_output, 'ypred') - } + +preds <- MCMCvis::MCMCchains(object$model_output, 'ypred') # Functions for calculating randomised quantile (Dunn-Smyth) residuals ds_resids_nb = function(truth, fitted, draw, size){ @@ -125,7 +121,14 @@ series_resids <- pbapply::pblapply(seq_len(NCOL(object$ytimes)), function(series dplyr::filter(series == !!(levels(object$obs_data$series)[series])) %>% nrow() } - preds <- preds[,starts[series]:ends[series]] + + if(object$fit_engine == 'stan'){ + preds <- preds[,seq(series, + dim(MCMCvis::MCMCchains(object$model_output, 'ypred'))[2], + by = NCOL(object$ytimes))] + } else { + preds <- preds[,starts[series]:ends[series]] + } if(class(object$obs_data)[1] == 'list'){ obj_dat <- data.frame(y = object$obs_data$y, diff --git a/R/mvgam.R b/R/mvgam.R index e60688db..a7a5e264 100644 --- a/R/mvgam.R +++ b/R/mvgam.R @@ -126,7 +126,17 @@ #'If the fitted model is appropriate then Dunn-Smyth residuals will be standard normal in distribution and no #'autocorrelation will be evident. When a particular observation is missing, the residual is calculated by comparing independent #'draws from the model's posterior distribution -#' +#'\cr +#'\cr +#'*Using Stan*: An in-development feature of `mvgam` is the ability to use Hamiltonian Monte Carlo for parameter estimation +#'via the software `Stan` (using the `rstan` interface). Note that the `rstan` library is currently required for this option to work, +#'though support for other `Stan` interfaces will be added in future. Also note that currently there is no support for +#'fitting `Tweedie` responses or dynamic factor models in `Stan`, though again these will be added in future. +#'However there are great advantages when using `Stan`, which includes the option to estimate smooth latent trends +#'via [Hilbert space approximate Gaussian Processes](https://arxiv.org/abs/2004.11408). This often makes sense for +#'ecological series, which we expect to change smoothly. In `mvgam`, latent squared exponential GP trends are approximated using +#'by default \code{40} basis functions, which saves computational costs compared to fitting full GPs while adequately estimating +#'GP \code{alpha} and \code{rho} parameters #'@author Nicholas J Clark #' #'@seealso \code{\link[rjags]{jags.model}}, \code{\link[mcgv]{jagam}}, \code{\link[mcgv]{gam}} @@ -718,7 +728,7 @@ mvgam = function(formula, parametric_tdata <- NULL } - model_file <- c('JAGS code generated by package mvgam', + model_file <- c('JAGS model code generated by package mvgam', '\n', 'GAM formula:', gsub('\"', '', paste(formula[2],formula[3],sep=' ~ ')), @@ -765,6 +775,19 @@ mvgam = function(formula, jags_data = ss_jagam$jags.data, family = family) + # Sensible inits needed for the betas + if(trend_model != 'None'){ + initf1 <- function() { + list(b_raw = runif(stan_objects$model_data$num_basis, -0.25, 0.25)) + } + } else { + initf1 <- function() { + list(b_raw = runif(stan_objects$model_data$num_basis, -0.25, 0.25), + sigma = runif(stan_objects$model_data$n_series, 0.075, 1)) + } + } + inits <- initf1 + output <- structure(list(call = formula, family = dplyr::case_when(family == 'tw' ~ 'Tweedie', family == 'poisson' ~ 'Poisson', @@ -774,6 +797,7 @@ mvgam = function(formula, pregam = ss_jagam$pregam, model_file = stan_objects$stan_file, model_data = stan_objects$model_data, + inits = inits, mgcv_model = ss_gam, sp_names = names(ss_jagam$pregam$lsp0), ytimes = ytimes, @@ -784,6 +808,9 @@ mvgam = function(formula, fit_engine = 'stan'), class = 'mvgam_prefit') } else { + initlist <- replicate(chains, ss_jagam$jags.ini, + simplify = FALSE) + inits <- initlist output <- structure(list(call = formula, family = dplyr::case_when(family == 'tw' ~ 'Tweedie', family == 'poisson' ~ 'Poisson', @@ -793,6 +820,7 @@ mvgam = function(formula, pregam = ss_jagam$pregam, model_file = trimws(model_file), model_data = ss_jagam$jags.data, + inits = inits, mgcv_model = ss_gam, sp_names = names(ss_jagam$pregam$lsp0), ytimes = ytimes, @@ -834,7 +862,7 @@ mvgam = function(formula, require(rstan) options(mc.cores = parallel::detectCores()) - # Sensible inits needed for the betas + # Sensible inits needed for the betas (and trend alphas??) if(trend_model != 'None'){ initf1 <- function() { list(b_raw = runif(stan_objects$model_data$num_basis, -0.25, 0.25)) @@ -854,12 +882,14 @@ mvgam = function(formula, stan_control <- list(max_treedepth = 10) } + message("Compiling the Stan model") + message() fit1 <- stan(model_code = stan_objects$stan_file, iter = burnin + 1000, chains = chains, data = stan_objects$model_data, cores = min(c(chains, parallel::detectCores() - 1)), - init = initf1, + init = inits, verbose = F, control = stan_control, pars = get_monitor_pars(family = family, @@ -893,6 +923,10 @@ mvgam = function(formula, # is more crucial than little adaptation but long 'burnin' https://mmeredith.net/blog/2016/Adapt_or_burn.htm unlink('base_gam.txt') cat(model_file, file = 'base_gam.txt', sep = '\n', append = T) + + message("Compiling the JAGS model") + message() + if(parallel){ cl <- parallel::makePSOCKcluster(min(c(chains, parallel::detectCores() - 1))) setDefaultCluster(cl) @@ -908,7 +942,7 @@ mvgam = function(formula, jags = jags_path, thin = thin, method = "rjparallel", - monitor = c(param, 'deviance'), + monitor = param, silent.jags = TRUE, cl = cl) stopCluster(cl) @@ -925,7 +959,7 @@ mvgam = function(formula, jags = jags_path, thin = thin, method = "rjags", - monitor = c(param, 'deviance'), + monitor = param, silent.jags = TRUE) } out_gam_mod <- coda::as.mcmc.list(gam_mod) diff --git a/R/pfilter_mvgam_fc.R b/R/pfilter_mvgam_fc.R index 4fd8e44e..bd654f4d 100644 --- a/R/pfilter_mvgam_fc.R +++ b/R/pfilter_mvgam_fc.R @@ -62,17 +62,14 @@ pfilter_mvgam_fc = function(file_path = 'pfilter', t <- 1:length(state) t_new <- 1:(length(state) + h) - # Evaluate on a fine a grid of points to preserve the - # infinite dimensionality - scale_down <- (100 / length(state)) * rho_gp - t <- t / scale_down - t_new <- t_new / scale_down - - Sigma_new <- alpha_gp^2 * exp(-(rho_gp/scale_down) * outer(t, t_new, "-")^2) - Sigma <- alpha_gp^2 * exp(-(rho_gp/scale_down) * outer(t, t, "-")^2) + + Sigma_new <- alpha_gp^2 * exp(- outer(t, t_new, "-")^2 / (2 * rho_gp^2)) + Sigma_star <- alpha_gp^2 * exp(- outer(t_new, t_new, "-")^2 / (2 * rho_gp^2)) + Sigma <- alpha_gp^2 * exp(- outer(t, t, "-")^2 / (2 * rho_gp^2)) + diag(1e-4, length(state)) - tail(t(Sigma_new) %*% solve(Sigma, state), h) + tail(t(Sigma_new) %*% solve(Sigma, state), h) + + tail(MASS::mvrnorm(1, mu = rep(0, dim(Sigma_star - t(Sigma_new) %*% solve(Sigma, Sigma_new))[2]), + Sigma = Sigma_star - t(Sigma_new) %*% solve(Sigma, Sigma_new)), h) } if(missing(ylim)){ diff --git a/R/pfilter_mvgam_init.R b/R/pfilter_mvgam_init.R index 028b4779..97894ed7 100644 --- a/R/pfilter_mvgam_init.R +++ b/R/pfilter_mvgam_init.R @@ -29,12 +29,6 @@ pfilter_mvgam_init = function(object, stop('argument "object" must be of class "mvgam"') } - # Convert stanfit objects to coda samples - if(class(object$model_output) == 'stanfit'){ - object$model_output <- coda::mcmc.list(lapply(1:NCOL(object$model_output), - function(x) coda::mcmc(as.array(object$model_output)[,x,]))) - } - #### 1. Generate linear predictor matrix for the next timepoint and extract last trend estimates # (NOTE, all series must have observations for the next timepoint, even if they are NAs!!!!) #### data_train <- object$obs_data @@ -124,7 +118,14 @@ if(object$use_lv){ starts <- c(1, starts[-c(1, (n_series + 1))]) ends <- ends[-1] trends <- lapply(seq_len(n_series), function(series){ - trend_estimates <- MCMCvis::MCMCchains(object$model_output, 'trend')[,starts[series]:ends[series]] + if(object$fit_engine == 'stan'){ + trend_estimates <- MCMCvis::MCMCchains(object$model_output, 'trend')[,seq(series, + dim(MCMCvis::MCMCchains(object$model_output, + 'trend'))[2], + by = NCOL(object$ytimes))] + } else { + trend_estimates <- MCMCvis::MCMCchains(object$model_output, 'trend')[,starts[series]:ends[series]] + } # Need to only use estimates from the training period end_train <- object$obs_data %>% @@ -435,17 +436,15 @@ particles <- pbapply::pblapply(sample_seq, function(x){ t <- 1:length(last_trends[[trend]]) t_new <- 1:(length(last_trends[[trend]]) + 1) - # Evaluate on a fine a grid of points to preserve the - # infinite dimensionality - scale_down <- (100 / length(last_trends[[trend]])) * rho_gp[trend] - t <- t / scale_down - t_new <- t_new / scale_down - Sigma_new <- alpha_gp[trend]^2 * exp(-(rho_gp[trend]/scale_down) * outer(t, t_new, "-")^2) - Sigma <- alpha_gp[trend]^2 * exp(-(rho_gp[trend]/scale_down) * outer(t, t, "-")^2) + + Sigma_new <- alpha_gp[trend]^2 * exp(- outer(t, t_new, "-")^2 / (2 * rho_gp[trend]^2)) + Sigma_star <- alpha_gp[trend]^2 * exp(- outer(t_new, t_new, "-")^2 / (2 * rho_gp[trend]^2)) + Sigma <- alpha_gp[trend]^2 * exp(- outer(t, t, "-")^2 / (2 * rho_gp[trend]^2)) + diag(1e-4, length(last_trends[[trend]])) - tail(t(Sigma_new) %*% solve(Sigma, last_trends[[trend]]), 1) + tail(t(Sigma_new) %*% solve(Sigma, last_trends[[trend]]), 1) + + tail(MASS::mvrnorm(1, mu = rep(0, dim(Sigma_star - t(Sigma_new) %*% solve(Sigma, Sigma_new))[2]), + Sigma = Sigma_star - t(Sigma_new) %*% solve(Sigma, Sigma_new)), 1) })) } @@ -502,7 +501,6 @@ particles <- pbapply::pblapply(sample_seq, function(x){ alpha_gp = as.numeric(alpha_gp), rho_gp = as.numeric(rho_gp), trend_states = lapply(last_trends, unname), - trend_states = trends, weight = weight, liks = liks, upper_bounds = upper_bounds, @@ -542,7 +540,6 @@ particles <- pbapply::pblapply(sample_seq, function(x){ alpha_gp = as.numeric(alpha_gp), rho_gp = as.numeric(rho_gp), trend_states = lapply(last_trends, unname), - trend_states = trends, weight = weight, liks = liks, upper_bounds = upper_bounds, @@ -584,7 +581,6 @@ particles <- pbapply::pblapply(sample_seq, function(x){ alpha_gp = as.numeric(alpha_gp), rho_gp = as.numeric(rho_gp), trend_states = lapply(last_trends, unname), - trend_states = trends, weight = weight, liks = liks, upper_bounds = upper_bounds, diff --git a/R/pfilter_mvgam_online.R b/R/pfilter_mvgam_online.R index 4fa13096..5a599117 100644 --- a/R/pfilter_mvgam_online.R +++ b/R/pfilter_mvgam_online.R @@ -17,7 +17,9 @@ #'the specified \code{threshold}. Default for this option is \code{FALSE}, relying instead on kernel smoothing only #'to maintain particle diversity #'@param kernel_lambda \code{proportional numeric} specifying the strength of kernel smoothing to use when -#'pulling low weight particles toward the high likelihood state space. Should be between \code{0} and \code{1} +#'pulling low weight particles toward the high likelihood state space. Should be between \code{0} and \code{1}. Note +#'however that kernel smoothing is not currently supported for Gaussian Process trend models. For these models, +#'it is still preferable to use resampling with a reasonable \code{threshold} value (i.e. \code{0.5}) #'@param file_path \code{character} string specifying the file path for locating the particles #'@param n_cores \code{integer} specifying number of cores for generating particle forecasts in parallel #'@return A \code{list} object of \code{length = n_particles} containing information on parameters and diff --git a/R/pfilter_mvgam_smooth.R b/R/pfilter_mvgam_smooth.R index c962585e..b7ab07c7 100644 --- a/R/pfilter_mvgam_smooth.R +++ b/R/pfilter_mvgam_smooth.R @@ -22,11 +22,13 @@ #'the specified \code{threshold}. Note that resampling can result in loss of the original model's diversity of #'GAM beta coefficients, which may have undesirable consequences for the forecast distribution. If #'\code{use_resampling} is \code{TRUE}, some effort is made to remedy this by assigning randomly sampled draws of -#'beta coefficients from the original model's distribution to each particle. This does not however guarantee that there -#'will be no loss of diversity, especially if successive resamples take place. Default for this option is therefore +#'GAM beta coefficients from the original model's distribution to each particle. This does not however guarantee there +#'will be no loss of diversity, especially if successive resampling take place. Default for this option is therefore #'\code{FALSE} #'@param kernel_lambda \code{proportional numeric} specifying the strength of smoothing to use when -#'pulling low weight particles toward the high likelihood state space. Should be between \code{0} and \code{1} +#'pulling low weight particles toward the high likelihood state space. Should be between \code{0} and \code{1}. Note +#'however that kernel smoothing is not currently supported for Gaussian Process trend models. For these models, +#'it is still preferable to use resampling with a reasonable \code{threshold} value (i.e. \code{0.5}) #'@param file_path \code{character} string specifying the file path for locating the particles #'@param n_cores \code{integer} specifying number of cores for generating particle forecasts in parallel #'@return A \code{list} object of \code{length = n_particles} containing information on parameters and @@ -93,18 +95,17 @@ pfilter_mvgam_smooth = function(particles, t <- 1:length(particles[[x]]$trend_states[[series]]) t_new <- 1:(length(particles[[x]]$trend_states[[series]])+1) - # Evaluate on a fine a grid of points to preserve the - # infinite dimensionality - scale_down <- (100 / length(particles[[x]]$trend_states[[series]])) * particles[[x]]$rho_gp[series] - t <- t / scale_down - t_new <- t_new / scale_down - - Sigma_new <- particles[[x]]$alpha_gp[series]^2 * exp(-(particles[[x]]$rho_gp[series]/scale_down) * outer(t, t_new, "-")^2) + Sigma_new <- particles[[x]]$alpha_gp[series]^2 * + exp(- outer(t, t_new, "-")^2 / (2 * particles[[x]]$rho_gp[series]^2)) + Sigma_star <- particles[[x]]$alpha_gp[series]^2 * + exp(- outer(t_new, t_new, "-")^2 / (2 * particles[[x]]$rho_gp[series]^2)) Sigma <- particles[[x]]$alpha_gp[series]^2 * - exp(-(particles[[x]]$rho_gp[series]/scale_down) * outer(t, t, "-")^2) + + exp(- outer(t, t, "-")^2 / (2 * particles[[x]]$rho_gp[series]^2)) + diag(1e-4, length(particles[[x]]$trend_states[[series]])) - tail(t(Sigma_new) %*% solve(Sigma, particles[[x]]$trend_states[[series]]), 1) + tail(t(Sigma_new) %*% solve(Sigma, particles[[x]]$trend_states[[series]]), 1) + + tail(MASS::mvrnorm(1, mu = rep(0, dim(Sigma_star - t(Sigma_new) %*% solve(Sigma, Sigma_new))[2]), + Sigma = Sigma_star - t(Sigma_new) %*% solve(Sigma, Sigma_new)), 1) })) } else { @@ -491,6 +492,7 @@ pfilter_mvgam_smooth = function(particles, orig_betas <- NULL } else { # If resampling, must preserve the original diversity of GAM beta coefficients + cat('Resampling particles ...\n') next_update_seq <- index orig_betas <- do.call(rbind, purrr::map(particles, 'betas')) } @@ -661,7 +663,11 @@ pfilter_mvgam_smooth = function(particles, } # Return the updated particle, preserving original betas - betas <- particles[[x]]$betas + if(use_resampling){ + betas <- orig_betas[x,] + } else { + betas <- particles[[x]]$betas + } if(particles[[x]]$family == 'Negative Binomial'){ if(particles[[x]]$trend_model == 'GP'){ diff --git a/R/plot_mvgam_fc.R b/R/plot_mvgam_fc.R index f977359d..222db527 100644 --- a/R/plot_mvgam_fc.R +++ b/R/plot_mvgam_fc.R @@ -40,7 +40,11 @@ plot_mvgam_fc = function(object, series = 1, data_test, hide_xlabels = FALSE, yl ends <- ends[-1] if(object$fit_engine == 'stan'){ - preds <- rstan::extract(object$model_output, 'ypred')[[1]][,starts[series]:ends[series]] + + # For stan objects, ypred is stored as a vector in column-major order + preds <- MCMCvis::MCMCchains(object$model_output, 'ypred')[,seq(series, + dim(MCMCvis::MCMCchains(object$model_output, 'ypred'))[2], + by = NCOL(object$ytimes))] } else { preds <- MCMCvis::MCMCchains(object$model_output, 'ypred')[,starts[series]:ends[series]] } @@ -130,6 +134,7 @@ plot_mvgam_fc = function(object, series = 1, data_test, hide_xlabels = FALSE, yl time = data_test$time) } + # Plot training and testing points points(dplyr::bind_rows(data_train, data_test) %>% dplyr::filter(series == s_name) %>% dplyr::select(time, y) %>% @@ -143,6 +148,56 @@ plot_mvgam_fc = function(object, series = 1, data_test, hide_xlabels = FALSE, yl dplyr::arrange(time) %>% dplyr::pull(y), pch = 16, col = "black", cex = 0.55) abline(v = NROW(data_train) / NCOL(object$ytimes), lty = 'dashed') + + # Calculate out of sample DRPS and print the score + drps_score <- function(truth, fc, interval_width = 0.9){ + nsum <- 1000 + Fy = ecdf(fc) + ysum <- 0:nsum + indicator <- ifelse(ysum - truth >= 0, 1, 0) + score <- sum((indicator - Fy(ysum))^2) + + # Is value within empirical interval? + interval <- quantile(fc, probs = c((1-interval_width)/2, (interval_width + (1-interval_width)/2))) + in_interval <- ifelse(truth <= interval[2] & truth >= interval[1], 1, 0) + return(c(score, in_interval)) + } + + # Wrapper to operate on all observations in fc_horizon + drps_mcmc_object <- function(truth, fc, interval_width = 0.9){ + indices_keep <- which(!is.na(truth)) + if(length(indices_keep) == 0){ + scores = data.frame('drps' = rep(NA, length(truth)), + 'interval' = rep(NA, length(truth))) + } else { + scores <- matrix(NA, nrow = length(truth), ncol = 2) + for(i in indices_keep){ + scores[i,] <- drps_score(truth = as.vector(truth)[i], + fc = fc[,i], interval_width) + } + } + scores + } + + truth <- as.matrix(data_test %>% + dplyr::filter(series == s_name) %>% + dplyr::select(time, y) %>% + dplyr::distinct() %>% + dplyr::arrange(time) %>% + dplyr::pull(y)) + last_train <- length(data_train %>% + dplyr::filter(series == s_name) %>% + dplyr::select(time, y) %>% + dplyr::distinct() %>% + dplyr::arrange(time) %>% + dplyr::pull(y)) + + fc <- preds[,(last_train+1):NCOL(preds)] + + message('Out of sample DRPS:') + print(sum(drps_mcmc_object(as.vector(truth), + fc)[,1])) + message() } else { if(class(data_train)[1] == 'list'){ data_train <- data.frame(series = data_train$series, diff --git a/R/plot_mvgam_resids.R b/R/plot_mvgam_resids.R index 6851c6c4..285e440b 100644 --- a/R/plot_mvgam_resids.R +++ b/R/plot_mvgam_resids.R @@ -19,12 +19,6 @@ plot_mvgam_resids = function(object, series = 1, n_bins = 25){ stop('argument "object" must be of class "mvgam"') } - # Convert stanfit objects to coda samples - if(class(object$model_output) == 'stanfit'){ - object$model_output <- coda::mcmc.list(lapply(1:NCOL(object$model_output), - function(x) coda::mcmc(as.array(object$model_output)[,x,]))) - } - if(sign(series) != 1){ stop('argument "series" must be a positive integer', call. = FALSE) diff --git a/R/plot_mvgam_trace.R b/R/plot_mvgam_trace.R index c2d2ad64..e74ccbb0 100644 --- a/R/plot_mvgam_trace.R +++ b/R/plot_mvgam_trace.R @@ -22,12 +22,6 @@ plot_mvgam_trace = function(object, param = 'rho', overlay_prior = TRUE){ stop('argument "object" must be of class "mvgam"') } - # Convert stanfit objects to coda samples - if(class(object$model_output) == 'stanfit'){ - object$model_output <- coda::mcmc.list(lapply(1:NCOL(object$model_output), - function(x) coda::mcmc(as.array(object$model_output)[,x,]))) - } - if(param == 'rho'){ param_names <- object$sp_names prior_mat <- matrix(NA, nrow = dim(MCMCvis::MCMCchains(object$model_output, 'rho'))[1], diff --git a/R/plot_mvgam_trend.R b/R/plot_mvgam_trend.R index 1e927ae1..2bb30655 100644 --- a/R/plot_mvgam_trend.R +++ b/R/plot_mvgam_trend.R @@ -16,12 +16,6 @@ plot_mvgam_trend = function(object, series = 1, data_test, stop('argument "object" must be of class "mvgam"') } - # Convert stanfit objects to coda samples - if(class(object$model_output) == 'stanfit'){ - object$model_output <- coda::mcmc.list(lapply(1:NCOL(object$model_output), - function(x) coda::mcmc(as.array(object$model_output)[,x,]))) - } - if(sign(series) != 1){ stop('argument "series" must be a positive integer', call. = FALSE) @@ -40,7 +34,14 @@ plot_mvgam_trend = function(object, series = 1, data_test, starts <- c(1, starts[-c(1, (NCOL(object$ytimes)+1))]) ends <- ends[-1] - preds <- MCMCvis::MCMCchains(object$model_output, 'trend')[,starts[series]:ends[series]] + if(object$fit_engine == 'stan'){ + preds <- MCMCvis::MCMCchains(object$model_output, 'trend')[,seq(series, + dim(MCMCvis::MCMCchains(object$model_output, + 'trend'))[2], + by = NCOL(object$ytimes))] + } else { + preds <- MCMCvis::MCMCchains(object$model_output, 'trend')[,starts[series]:ends[series]] + } preds_last <- preds[1,] pred_vals <- seq(1:length(preds_last)) diff --git a/R/plot_mvgam_uncertainty.R b/R/plot_mvgam_uncertainty.R index 15b4807f..154aece5 100644 --- a/R/plot_mvgam_uncertainty.R +++ b/R/plot_mvgam_uncertainty.R @@ -17,12 +17,6 @@ plot_mvgam_uncertainty = function(object, series = 1, data_test, legend_position stop('argument "object" must be of class "mvgam"') } - # Convert stanfit objects to coda samples - if(class(object$model_output) == 'stanfit'){ - object$model_output <- coda::mcmc.list(lapply(1:NCOL(object$model_output), - function(x) coda::mcmc(as.array(object$model_output)[,x,]))) - } - if(sign(series) != 1){ stop('argument "series" must be a positive integer', call. = FALSE) @@ -81,7 +75,14 @@ plot_mvgam_uncertainty = function(object, series = 1, data_test, legend_position betas <- MCMCvis::MCMCchains(object$model_output, 'b') # Extract current trend estimates - trend <- MCMCvis::MCMCchains(object$model_output, 'trend')[,starts[series]:ends[series]] + if(object$fit_engine == 'stan'){ + trend <- MCMCvis::MCMCchains(object$model_output, 'trend')[,seq(series, + dim(MCMCvis::MCMCchains(object$model_output, + 'trend'))[2], + by = NCOL(object$ytimes))] + } else { + trend <- MCMCvis::MCMCchains(object$model_output, 'trend')[,starts[series]:ends[series]] + } if(length(unique(data_train$series)) == 1){ trend <- matrix(trend[, NCOL(trend)]) @@ -94,7 +95,6 @@ plot_mvgam_uncertainty = function(object, series = 1, data_test, legend_position } } - # Function to calculate intersection of two uncertainty distributions intersect_hist = function(fullpreds, gampreds){ from <- min(min(fullpreds, na.rm = T), diff --git a/R/sim_mvgam.R b/R/sim_mvgam.R index 814ca9d6..4a9f70b6 100644 --- a/R/sim_mvgam.R +++ b/R/sim_mvgam.R @@ -141,6 +141,7 @@ sim_mvgam = function(T = 100, cat('trend_rhos = ', trend_rhos, '\n\n') # Generate latent GP trends trends <- do.call(cbind, lapply(seq_len(n_lv), function(lv){ + set.seed(runif(1, 1, 100)) sim_exp_gp(N = T, alpha = trend_alphas[lv], rho = trend_rhos[lv]) })) diff --git a/R/summary.mvgam.R b/R/summary.mvgam.R index a29e6b3e..c6e09d58 100644 --- a/R/summary.mvgam.R +++ b/R/summary.mvgam.R @@ -15,12 +15,6 @@ summary.mvgam = function(object){ # calculate effective degrees of freedom for smooth terms jam = object$jam_model - # Convert stanfit objects to coda samples - if(class(object$model_output) == 'stanfit'){ - object$model_output <- coda::mcmc.list(lapply(1:NCOL(object$model_output), - function(x) coda::mcmc(as.array(object$model_output)[,x,]))) - } - #### Standard summary of formula and model argumements #### message("GAM formula:") print(object$call) diff --git a/Results/sim_results.rda b/Results/sim_results.rda deleted file mode 100644 index 1c8016bccee91465e9fcfc9f0f9714cc77abc9e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7820 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 HCp`7vg9O8y delta 2440 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 literal 2861 zcmdUxdsGuw9>-%CHBsKMQWTAmQmIm*QUV)LcDN zqKU{*Uk=(EAGhlW6@$@j(~KpLVsC$q!K_I1a(6jME07ju`b+#*E%mr1#&_>XwUtC@ zsgdEVp_I_*ZS

zJqsith8TK&sLsTSzmiW>+pf^o0qUnu-Dx}skkUz)?;Grp8?W& za7@3??2ni9GUA>|rVfLR?KvNO+4Q?LTK}b?JnYnk5?ZyhLfV3F_hx|s9Y(Y{IEls_ zFvIc5N3cx3(@O-I&IBW`Sis5yDwy7}${q;L+be91emPg33Qm3}wc;hR z)iff^gQ*&*8xul(>ioxgJYkT~T$VvC0wq;|^86|ZF(2$-4?E%b-l zw$*OJ3N8FV1@r`G>};}8`CeZ&U6*I8k#aMBY)IA(5~`t3Bi8}JU!m$3O=wRYu;FRo z%zC)w6wtGbHSPj=NN@!@SYaBN*>2#l2Dq`DWpdFxj)Zg4!&2mq13AHr4FbVOP@r@z03sNKt)YzKYN8#axKk) zwp?k?lK1+?Sm!g7km-5*JHvy<%BsWy%Pq^Z%JW3u_Hd2$A|*0Z_Py2N3Qo+a?O$mpsY2KYG^)tuuXMe8++&xhAzNqcN7mmZ?IvoA^>DvZ# zIKFbaDvDn*bpPF{PA)LKl~p7B!H_G6d8QtbKPg>D$b|wwgXN}2u)P7>MZHs=JiYfZ z_51w2YS*3wJQq!kRtsBI9YvRPrS%3|w4(a}!O1y*sCeg~J$!F-k%i)K zcsir~B$G}`OfJtBbY(aDhFa{kTiCW;?kFLW`#0S@XNYrhGVj!gRG^yazG+!azI$kd zC2=Qo?5RL-*P2!wCMZtVXZZ%VjFxpSJ!j~OF6(~+TCZ94$!?s%HFE{Y4Nt`83R|Vb zZYpf(hW`>f*GpLIkb<|;u>kN+)WKJe|CA-nsO!943}E&CC?XwVnIQ2a4O_43JHa3q zaD3R|hh^z#Tj=+Jzlum-@nM$wCf^M3*D#e0E%W9V+px}RST`luyut-jG(X|pC)Gm_ z*kG47ijwXSMF__8pZK|61AlB17}4^I(;Zk{lDQBd_-jj|AM{hF84!HjlDHq5kQlx- z-spyZiY@2e6KhO-0lzj@E4m$j;RV1Ke0X+xxYN%y3!Jcyp1Y%Mk&Y`E`Nv^RDg!j# zvY6^NpkLQ~m~GI2EYNg!hJk~sOe)AJPG8Ro&)!pepy1cT@^8F=UN@o0`^(=7zh)m- zHpmyf{o^H#MO0okA`xM60w)mbxTSvD{^)8FFvq7I5b6EYfju#@3mqnBSDPWT zp4V2kG46nJdHzsQbqJ?Io1R3Cn=0}>DU;7CBbg1Nnt8d}c)XJtVgsM($ew3aHPLmg zWTcCX(#ffmhhVI8(J-P4zi-ra{`uJSy${fcP)6h}yd9H<@B5%Yo>M<3WXs140uqEZfXh;y0v%(x`n=cXaeRN6QdmQY|9 z-Fd!0iOC6n>Mad}erl0i9!QyXm^ccxSKh$$HolVGt0>yfEL$sPj2+GayZUC!g;K4E zwi%gKoTxH0xi6;DarWKA(h=~r=Of$dOSuaI)zvU4C8p|y8=jxh1&Sl;ol?7M)M7$J z(ME5_)a#D%m$byo_{=&;00RE^IANAa5&G>L^M- zcF6?g_$bDcgM@-YkKFN|LvMD9Ue++=@8(M{*S{GziX5(fQP{IqSfWfz78=l3=CURU zE|ZM;`EjT+Qci`7k^Zt=y_+m$QJS)?e!)GObHHbvE3dKHHIz&EUv7N!%TIKqJes@N R&dU^P`SG$I${u7@>M#2C9 diff --git a/docs/README-unnamed-chunk-13-1.png b/docs/README-unnamed-chunk-13-1.png index b27a9d12f5d2e9ce4fdd7c7e6fd7da9c80d09175..24f5bf4e917e9eab0a4742d2b613884cbacb05c2 100644 GIT binary patch literal 10439 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 literal 10456 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 L8fa9hq3`}b;Bw8N diff --git a/docs/README-unnamed-chunk-15-1.png b/docs/README-unnamed-chunk-15-1.png index 583fb601cf2940b929681bebcbf5ed51f99ba3c2..62539648c2560e7741a98200c5431232d6a555c2 100644 GIT binary patch delta 4407 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 Vom`p^tNiVQoUydCpqcpq{{y0$Z$|(C diff --git a/docs/README-unnamed-chunk-16-1.png b/docs/README-unnamed-chunk-16-1.png index a19664c7ce7fc41945864a7da4d358d4a5ce7c8d..c2a467ae663a6e27b991ef63cb1e2212807ed09f 100644 GIT binary patch literal 8289 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 literal 8240 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 Bx`F@z literal 4762 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 diff --git a/docs/README-unnamed-chunk-18-1.png b/docs/README-unnamed-chunk-18-1.png index 0ceb3e3e2c5bf4be828407c37b939eebd1e37590..e373426980c5419121699ae1233299e18e521251 100644 GIT binary patch literal 13205 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 KK3{2!!T%3VkzBR_ literal 3831 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 E&-I)n)&Kwi diff --git a/docs/README-unnamed-chunk-20-1.png b/docs/README-unnamed-chunk-20-1.png index fe3701b4e5ab7f52ae79f9458b5870ddb31dc433..fde5aa6b2a637983f1c475dec9a866c38c3cd92c 100644 GIT binary patch delta 2842 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 delta 2924 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 Bfz$v1 diff --git a/docs/README-unnamed-chunk-21-1.png b/docs/README-unnamed-chunk-21-1.png index 4b5227a0f9d91e151d820cc3c3393affe59a6b8c..4a0140278b1fa928aae3afa1c022d41def1eba7e 100644 GIT binary patch literal 3589 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 DPnxv3 diff --git a/docs/README-unnamed-chunk-23-1.png b/docs/README-unnamed-chunk-23-1.png index be91fd92b7b9d9fee23a0a439e5273200a49259b..1c78e949cfb43737f6ba933b2e01f83ca4f5a0cd 100644 GIT binary patch delta 4989 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 delta 8583 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 RTp)j%_jJ|1+}9|g;16G!q*|I9U&Q9F=J8~f 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 OF_)#8t!cFh8u$-$@AU@& delta 3174 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 diff --git a/docs/README-unnamed-chunk-8-1.png b/docs/README-unnamed-chunk-8-1.png index 759fbe875b9a7ab7aeb27eab33d93dd0fa5639a2..fe6c60adce1233a6b59c4a6253e36eb4629ee076 100644 GIT binary patch literal 3722 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 Ef{-9KYybcN delta 3180 zcmV-y43qP$9j_gbv_R%bL_t(|ob8?KV&k?Eh2^cSO=2axYU?U%GZuAu|7R@0nop)rY+KKvG8{__S@cX3w9GZ%0PLLhy0(qxqP3RMKqHN5Vv~PYD*>js##LxM+jx zBHY;qQ}9UG2req=ssZRIzZ5(gMuNw_9qEFC!Lb&cu@^lpBbQ+L@Qiq}cYJ)jzu*40 ztfEn%U~niH0L6doBn78WT{QovntnE#i@s#WUUV=Q!HUE}!5-=yr|r-}Fa`T_CHVcL zY-$CGr6qV+U47Y0q9yi}q7#iJ9 z{d`?euqS_Mjc)zX2rlaA=g(c(vBBB>RJGtlE8=bxg7c@h%yqJY49`yRIq8cWuf_Fia(ewGeTER1`n`_iX-p0vyWcK^H4Ri-E8VB!ItCup;PFH_1Pxbe5f~S6ls2H8_cWw0QrCK`< zzukzGg5T#h7V5z+Mn_&&;&Y49u|F?ca8V-Lz3<(_q%z7*HH?~5l%1lx{By>w?PFMi zFI0kEDF#9}4j!UygF7!yQSiAL4o&?WG11Lr4Kll4bWwWeJsj#nGtm(v!f0y0V<~v* zhp;d}Q-TLOSuyh+iAwMXR`u+#Uhtnwl%0J!KBC~@?2?@MgB%~#a7V}aGCo3tJ37vj zX#^gBzpM{V{U|n=?C6+LK=3`>`rsE#c67`rq<UvZG^GB^Y%4+hDZdKZ}t5 zMd^Kq9sf2MO?1p6q<<|KY<=(xOAg`C2*$0S&x;M=@MS;jv=3v-;zBsw9|N80NycGu zAsps<3{=bFLO9fdakfnku&@vgGe3u-U_mE;{I5@?jGy~dEKKnDxlYZ}1iybQq-t(h zh~Q>ca@<@~U|E8pCnXMovfwJNp^rK_+~ATf~6N8)&qO8V&*GnzwlP~7ELFs+-H?;oUBF8NOq!s z9|w2smn?A$#;%}umUCmlKbJNm*@=D}+&5Y({eFMz88lPyNSKu1@?cuEXKUiLe(BDQThSd{;viA*HDbZ9euATagMT?kylDHIhWFE&JJCgGy8TQbMhq-E}ZRWe(_tc?9I5^NeqiLI>ws}K%WVU(Ko zSDAcy$R|2Ht~Ct8!uD5)M)2UyXu~i{3*G#x$3(DA32rANlwtR``6q-Gvdm3!9BTIM16Ou<^T zrwhX(RmueK+4$-a3*J>j+^lPW8#~`KTi_t1g4=D9hxKS@lh^_WAQXHR;BLHVvlJYF zd{<@jhp~c@0>89s4D`!|V}%ocrr;nb7@YJ4bA~dA#0Bp;1szD@bI}|Ehm!bIB?X6) zxZpDd2O<_+O?4dBflI=E`Lg*9Mk?67kK_7(d+C|Z^cC!N8RKzsJFKANU?Vs<$`1GG#6lzZxLG}a z?s~?-;W0XBHx>%P`O{l}p{;+pFf_^z1;;`&(eYZA%bvvsmf&>I93TBrYU^7r42`nG zNy=#GOK|UMQec!F3XX=l4K{tX9R){2*^9P*IVA{~ zFkcFehoS`U!du|}d|5$9L{~-U!J9hz1&7?3+@NlQPg}F&qZAx}5td+Zl$-7>+h8vB z$0WgCGzG^b!ErDJ$0R|)Y=dJWKYZ36{x#}FbDlCP>6KvWjf$d^Rlh&jDoz#!M@28# zDi|pRM@4)-_;UCpD9%o2zHEWxqA$U{WQC_HGQ4zGCH=<5Xyg0STRkB{!4snq?6%u= zZkKda+h$MOp3Sv?6g(1|_26==WZ#Tsv+=#SQYx5DaAb7*q8&ZMq;})`?nN%x_koBP zx_!}(zF|`HZ^w-^(j5gyMo~pqJEHr;kv6-gJGTW;@JMJnS%__wP1F##wUON=ePD(AGrh%McLsfDFVCK)3!Z-IF{IYF#U#e`2KcvEIY9_ zn1aJ`a-HM~Bf;7zI}{unaTV?L-XwLD9SV+(q6Amc@}7aPK1K%xck$jwPdd$1WwpxC z^Uel+lpPB0px5uM;4)@=)+`0tE;g_PPk{@`=iauZg+u#<8b{-98D){Fxsr>c2`hv94>um?J#K|+N|Vu*HCaA4u4#F zz`BW!p=h&$+g-8eFgOm`RpqKL!9(vZ^t{~_JlY?Bg~R&VjJgdrh&D^X2B;@G40csg zumK5;gZZ*i3-pT((eq^=+5-J@Vf=h4*Z@r@D`a72O@{5_A4N>4UWuo+3rWc`eLZ*oN%f@#(A2@}D?iw){KkCh_P$Fi&WQo1t*8<5hSDcFFN?o7c3q;zKrHXx-t zQ?LOk-I;<7Na@ZLY(PqPreFg&w+NF#0Uk>K3#9 z>&otjtlmuGo1)rl`Xb5Wu&xq_o=Sy{VD}#JzITb&95>|wiT3LI4>z2)lROL^f4C8S z5iKTyt0NG*mx0Uj>X>4C_5Fuis$iOhGVc`U@vlL>UaDJQZ(myyi?SXBPCx% zjfvpaMDJDk>b3l7+N{_BvwL)5Z;CRMu78r^e;-^M?4M%yd(}1YPLY56dm~Gs$3$?|hIq6j7T?^l1{L9isQz$*gL^vWveng|BLXetC*YMyy;^JewWks`O`m1 z^L{^JCdF6r7yR@lOrd9HRdjW%QChRPX4^MO`Da-bU8P(9@J>-Rv62*eeTY`kVTX6`J$O{wb>8E0+#Pc9LO| zJdZZ^>s*IP-lO$gG|_QbH^v>77EJN8Zf2N}fsu7aPEn@eQSufDQ#0oc{wN)$~9Q S%lH@o0000 [1] "n_eff / iter looks reasonable for all parameters" +#> [1] "Rhat looks reasonable for all parameters" +#> [1] "0 of 4000 iterations ended with a divergence (0%)" +#> [1] "69 of 4000 iterations saturated the maximum tree depth of 10 (1.725%)" +#> [1] " Run again with max_treedepth set to a larger value to avoid saturation" +#> [1] "E-FMI indicated no pathological behavior" ``` Perform a series of posterior predictive checks to see if the model is @@ -193,7 +198,7 @@ summary(lynx_mvgam) #> log #> #> Trend model: -#> AR2 +#> AR3 #> #> N series: #> 1 @@ -202,42 +207,43 @@ summary(lynx_mvgam) #> 50 #> #> Status: -#> Fitted using runjags::run.jags() +#> Fitted using rstan::stan() #> #> GAM smooth term estimated degrees of freedom: #> edf df -#> s(season) 5214 17 +#> s(season) 9011 17 #> #> GAM coefficient (beta) estimates: -#> 2.5% 50% 97.5% Rhat n.eff -#> (Intercept) 6.6278432 6.76661720 6.89681964 1.03 87 -#> s(season).1 -1.1277700 -0.68473902 -0.22962380 1.34 133 -#> s(season).2 -0.2229482 0.28944913 0.86452547 1.16 103 -#> s(season).3 0.6519581 1.13340639 1.73032941 1.06 45 -#> s(season).4 1.2603487 1.74322315 2.34746633 1.14 53 -#> s(season).5 1.4442400 1.94342290 2.70066342 1.42 59 -#> s(season).6 0.4456740 1.02894020 1.61028936 1.14 51 -#> s(season).7 -0.8433434 -0.22754522 0.28449496 1.07 94 -#> s(season).8 -1.3271281 -0.72048653 -0.14820460 1.01 110 -#> s(season).9 -1.5807970 -0.79675279 -0.04589625 1.03 141 -#> s(season).10 -1.2656095 -0.44005281 0.41195850 1.05 82 -#> s(season).11 -0.3393578 0.33089693 0.99094619 1.07 75 -#> s(season).12 0.7295668 1.34967548 1.91774349 1.19 56 -#> s(season).13 0.7150178 1.46943619 2.20605335 1.47 47 -#> s(season).14 0.2769248 1.09164305 1.76202078 1.42 52 -#> s(season).15 -0.6892971 -0.07206227 0.46319419 1.07 88 -#> s(season).16 -1.3544063 -0.81086047 -0.26011986 1.02 144 -#> s(season).17 -1.5709996 -1.07117890 -0.54800861 1.09 170 +#> 2.5% 50% 97.5% Rhat n.eff +#> (Intercept) 6.79095318 6.80222670 6.81317305 1 6082 +#> s(season).1 -1.22012054 -0.70687316 -0.13550066 1 1533 +#> s(season).2 -0.34422058 0.23657666 0.84322640 1 1784 +#> s(season).3 0.44107251 1.10363234 1.72974673 1 1725 +#> s(season).4 0.95960079 1.74495643 2.40358999 1 1310 +#> s(season).5 1.15835797 2.00171701 2.70516103 1 1244 +#> s(season).6 0.42168311 1.17645507 1.82805556 1 1499 +#> s(season).7 -0.78622518 -0.11099717 0.58368607 1 1758 +#> s(season).8 -1.35633593 -0.67924442 0.05796520 1 1762 +#> s(season).9 -1.58002424 -0.81464343 0.07228273 1 1510 +#> s(season).10 -1.22512971 -0.45385323 0.48789845 1 1448 +#> s(season).11 -0.52903561 0.27259212 1.13203943 1 1948 +#> s(season).12 0.29771680 1.22695736 2.01184910 1 1826 +#> s(season).13 0.31480665 1.39836005 2.18521162 1 1223 +#> s(season).14 0.05866046 1.09845407 1.83787390 1 1041 +#> s(season).15 -0.77257545 -0.04440334 0.54493012 1 1373 +#> s(season).16 -1.37554751 -0.78647085 -0.21917617 1 2239 +#> s(season).17 -1.56201026 -1.06732513 -0.49428374 1 1756 #> #> GAM smoothing parameter (rho) estimates: -#> 2.5% 50% 97.5% Rhat n.eff -#> s(season) 3.08043 3.88746 4.563715 1.01 1930 +#> 2.5% 50% 97.5% Rhat n.eff +#> s(season) 3.287832 4.159986 4.87422 1 2857 #> #> Latent trend parameter estimates: -#> 2.5% 50% 97.5% Rhat n.eff -#> ar1 0.4236962 0.7313141 1.0300245 1.03 1112 -#> ar2 -0.4069726 -0.1131876 0.1877084 1.03 1213 -#> sigma 0.3680085 0.4601895 0.5877884 1.00 1010 +#> 2.5% 50% 97.5% Rhat n.eff +#> ar1[1] 0.5231943 0.82710459 0.9895406 1 2007 +#> ar2[1] -0.5841628 -0.22174449 0.1588171 1 2723 +#> ar3[1] -0.3304613 0.07239184 0.4249637 1 1279 +#> sigma[1] 0.3677681 0.46126809 0.5929270 1 2374 #> ``` @@ -294,6 +300,9 @@ the entire series (testing and training) ``` r plot(lynx_mvgam, type = 'forecast', data_test = lynx_test) +#> Out of sample DRPS: +#> [1] 683.5812 +#> ``` @@ -376,7 +385,7 @@ ignore the cyclic pattern of seasonality and force it to be fairly non-wiggly. We also use a random walk process for the trend ``` r -lynx_mvgam_poor <- mvjagam(data_train = lynx_train, +lynx_mvgam_poor <- mvgam(data_train = lynx_train, data_test = lynx_test, formula = y ~ s(season, bs = 'gp', k = 3), family = 'poisson', @@ -404,11 +413,11 @@ markedly better (far lower DRPS) for this evaluation timepoint ``` r summary(mod1_eval$series1$drps) -#> Min. 1st Qu. Median Mean 3rd Qu. Max. -#> 0.3335 8.4668 96.5577 94.4811 130.9125 232.9926 +#> Min. 1st Qu. Median Mean 3rd Qu. Max. +#> 1.781 11.172 106.428 97.483 136.918 227.490 summary(mod2_eval$series1$drps) #> Min. 1st Qu. Median Mean 3rd Qu. Max. -#> 40.37 46.08 300.00 282.02 436.08 658.25 +#> 39.26 48.04 299.49 284.69 446.13 672.41 ``` Nominal coverages for both models’ 90% prediction intervals diff --git a/man/mvgam.Rd b/man/mvgam.Rd index 9315480f..4aa0f03d 100644 --- a/man/mvgam.Rd +++ b/man/mvgam.Rd @@ -182,14 +182,9 @@ The \code{p} parameter is therefore fixed at \code{1.5} (i.e. a so-called Geomet \emph{Factor regularisation}: When using a dynamic factor model for the trends, factor precisions are given regularized penalty priors to theoretically allow some factors to be dropped from the model by squeezing increasing factors' variances to zero. This is done to help protect against selecting too many latent factors than are needed to -capture dependencies in the data, so it can often be advantageous to set `n_lv`` to a slightly larger number. However -larger numbers of factors do come with additional computational costs so these should be balanced as well. -\cr -\cr -\emph{Residuals}: For each series, randomized quantile (i.e. Dunn-Smyth) residuals are calculated for inspecting model diagnostics -If the fitted model is appropriate then Dunn-Smyth residuals will be standard normal in distribution and no -autocorrelation will be evident. When a particular observation is missing, the residual is calculated by comparing independent -draws from the model's posterior distribution +capture dependencies in the data, so it can often be advantageous to set \verb{n_lv`` to a slightly larger number. However larger numbers of factors do come with additional computational costs so these should be balanced as well. \\cr \\cr *Residuals*: For each series, randomized quantile (i.e. Dunn-Smyth) residuals are calculated for inspecting model diagnostics If the fitted model is appropriate then Dunn-Smyth residuals will be standard normal in distribution and no autocorrelation will be evident. When a particular observation is missing, the residual is calculated by comparing independent draws from the model's posterior distribution \\cr \\cr *Using Stan*: An in-development feature of }mvgam\verb{is the ability to use Hamiltonian Monte Carlo for parameter estimation via the software}Stan\verb{(using the}rstan\verb{interface). Note that the}rstan\verb{library is currently required for this option to work, though support for other}Stan\verb{interfaces will be added in future. Also note that currently there is no support for fitting}Tweedie\verb{responses or dynamic factor models in}Stan\verb{, though again these will be added in future. However there are great advantages when using }Stan\verb{, which includes the option to estimate smooth latent trends via [Hilbert space approximate Gaussian Processes](https://arxiv.org/abs/2004.11408). This often makes sense for ecological series, which we expect to change smoothly. In }mvgam`, latent squared exponential GP trends are approximated using +by default \code{40} basis functions, which saves computational costs compared to fitting full GPs while adequately estimating +GP \code{alpha} and \code{rho} parameters } \seealso{ \code{\link[rjags]{jags.model}}, \code{\link[mcgv]{jagam}}, \code{\link[mcgv]{gam}} diff --git a/man/pfilter_mvgam_online.Rd b/man/pfilter_mvgam_online.Rd index e590584e..74e7184e 100644 --- a/man/pfilter_mvgam_online.Rd +++ b/man/pfilter_mvgam_online.Rd @@ -31,7 +31,9 @@ the specified \code{threshold}. Default for this option is \code{FALSE}, relying to maintain particle diversity} \item{kernel_lambda}{\code{proportional numeric} specifying the strength of kernel smoothing to use when -pulling low weight particles toward the high likelihood state space. Should be between \code{0} and \code{1}} +pulling low weight particles toward the high likelihood state space. Should be between \code{0} and \code{1}. Note +however that kernel smoothing is not currently supported for Gaussian Process trend models. For these models, +it is still preferable to use resampling with a reasonable \code{threshold} value (i.e. \code{0.5})} \item{n_cores}{\code{integer} specifying number of cores for generating particle forecasts in parallel} } diff --git a/man/pfilter_mvgam_smooth.Rd b/man/pfilter_mvgam_smooth.Rd index a95dc0c3..01d4418a 100644 --- a/man/pfilter_mvgam_smooth.Rd +++ b/man/pfilter_mvgam_smooth.Rd @@ -36,12 +36,14 @@ Should be between \code{0} and \code{1}} the specified \code{threshold}. Note that resampling can result in loss of the original model's diversity of GAM beta coefficients, which may have undesirable consequences for the forecast distribution. If \code{use_resampling} is \code{TRUE}, some effort is made to remedy this by assigning randomly sampled draws of -beta coefficients from the original model's distribution to each particle. This does not however guarantee that there -will be no loss of diversity, especially if successive resamples take place. Default for this option is therefore +GAM beta coefficients from the original model's distribution to each particle. This does not however guarantee there +will be no loss of diversity, especially if successive resampling take place. Default for this option is therefore \code{FALSE}} \item{kernel_lambda}{\code{proportional numeric} specifying the strength of smoothing to use when -pulling low weight particles toward the high likelihood state space. Should be between \code{0} and \code{1}} +pulling low weight particles toward the high likelihood state space. Should be between \code{0} and \code{1}. Note +however that kernel smoothing is not currently supported for Gaussian Process trend models. For these models, +it is still preferable to use resampling with a reasonable \code{threshold} value (i.e. \code{0.5})} \item{file_path}{\code{character} string specifying the file path for locating the particles} }