R/55_fcast_print.R

Defines functions print.bvar_fcast_summary summary.bvar_fcast .print_fcast print.bvar_fcast print.bv_fcast

Documented in summary.bvar_fcast

#' @export
print.bv_fcast <- function(x, ...) {

  cat("Object with settings for computing forecasts.\n")

  .print_fcast(x, ...)

  return(invisible(x))
}


#' @export
print.bvar_fcast <- function(x, ...) {

  cat("Forecast object from `bvar()`.\n")

  .print_fcast(x[["setup"]], ...)

  cat("Variables: ", dim(x[["fcast"]])[3], "\n",
    "Iterations: ", dim(x[["fcast"]])[1], "\n", sep = "")

  return(invisible(x))
}


#' @noRd
.print_fcast <- function(x, ...) {

  cat("Horizon: ", x[["horizon"]], "\n",
    "Conditional: ", !is.null(x[["cond_path"]]), "\n", sep = "")

  return(invisible(x))
}


#' @rdname predict.bvar
#' @export
summary.bvar_fcast <- function(object, vars = NULL, ...) {

  quants <- object[["quants"]]
  has_quants <- length(dim(quants)) == 3
  M <- if(has_quants) {dim(quants)[3]} else {dim(quants)[2]}

  variables <- name_deps(variables = object[["variables"]], M = M)
  pos <- pos_vars(vars, variables = variables, M = M)

  out <- structure(list(
    "fcast" = object, "quants" = quants,
    "variables" = variables, "pos" = pos, "has_quants" = has_quants),
    class = "bvar_fcast_summary")

  return(out)
}


#' @export
print.bvar_fcast_summary <- function(x, digits = 2L, ...) {

  print.bvar_fcast(x[["fcast"]])

  if(!is.null(x[["fcast"]][["setup"]][["constr_mat"]])) {
    cat("Constraints for conditional forecast:\n")
    print(x[["fcast"]][["setup"]][["constr_mat"]])
  }

  cat(if(!x[["has_quants"]]) {"\nMedian forecast:\n"} else {"\nForecast:\n"})

  for(i in x[["pos"]]) {
    cat("\tVariable ", x[["variables"]][i], ":\n", sep = "")
    print(round(
      if(x[["has_quants"]]) {x[["quants"]][, , i]} else {x[["quants"]][, i]},
      digits = digits))
  }

  return(invisible(x))
}

Try the BVAR package in your browser

Any scripts or data that you put into this service are public.

BVAR documentation built on May 29, 2024, 5:34 a.m.