R/print.R

#' Print Method for Cointegration Models (Modified OLS).
#'
#' Printing objects of class \code{"cointReg"}.
#'
#' @param x [\code{cointReg}]\cr
#'   Object of class \code{"cointReg"}, i.e. the result of
#'   \code{cointRegFM}, \code{cointRegD} or \code{cointRegIM}.
#' @param ... ignored
#' @param digits [\code{numeric}]\cr
#'   Number of significant digits to be used.
#' @param all.coeffs [\code{logical}]\cr
#'   Whether to show all coefficients (i. e. the "real" regressors AND the
#'   auxiliary regressors). Default is \code{FALSE}.
#'
#' @return
#'   [\code{matrix}]\cr
#'   A matrix including the coefficients along with standard errors,
#'   t and p values.
#'
#' @family cointReg
#'
#' @examples
#' set.seed(42)
#' x = data.frame(x1 = cumsum(rnorm(200)), x2 = cumsum(rnorm(200)))
#' eps1 = rnorm(200, sd = 2)
#' y = x$x1 - x$x2 + 10 + eps1
#' deter = cbind(level = rep(1, 200))
#'
#' test.fm = cointRegFM(x = x, y = y, deter = deter)
#' print(test.fm)
#'
#' test.d = cointRegD(x = x, y = y, deter = deter)
#' print(test.d)
#'
#' test.im2 = cointRegIM(x = x, y = y, deter = deter)
#' print(test.im2)
#'
#' \dontrun{
#' # The coefficients matrix can be transferred e.g. to LaTeX via xtable:
#' if (!require("xtable")) {install.packages("xtable"); library("xtable")}
#' xtab = xtable(print(test.fm))
#' print.xtable(xtab)
#' }
#'
#' @export



print.cointReg <- function(x, ..., digits = getOption("digits"),
                           all.coeffs = FALSE) {

  if (!(class(x) == "cointReg"))
    stop("Argument x must be of type \"cointReg\".")

  cat(paste0("\n### ", x$mod, "-OLS model ###\n\n"))

  cat("Model:\t")
  cat(paste0("\t",  x$name, "\n\n"))

  cat("Parameters:")
  cat(paste0("\t", "Kernel = \"", x$kernel, "\""),
      " //  Bandwidth =", format(x$bandwidth$number, digits = digits),
      paste0("(\"", x$bandwidth$name, "\")\n\n"))
  if(!is.null(x$lead.lag)) {
    cat(paste0("\t\t", "Leads ="), x$lead.lag$n.lead,
        "/ Lags =", x$lead.lag$n.lag,
        ifelse(!is.null(x$lead.lag$kmax),
               paste("/ kmax =", x$lead.lag$kmax), "(set manually)"),
        ifelse(!is.null(x$lead.lag$info.crit),
               paste("/ IC =", x$lead.lag$info.crit, "\n\n"), "\n\n"))
  }

  cat("Coefficients:\n")
  if (!is.null(x$t.theta)) {
    if (!all.coeffs | x$mod == "FM") {
      estim <- x$theta
      sd <- x$sd.theta
      tval <- x$t.theta
      pval <- x$p.theta
    } else {
      estim <- x$theta.all
      sd <- x$sd.theta.all
      tval <- x$t.theta.all
      pval <- x$p.theta.all
    }
    tab <- cbind(Estimate = estim, Std.Err = sd, "t value" = tval,
                 "Pr(|t|>0)" = pval)
    return(stats::printCoefmat(tab))
  } else {
    out <- drop(x$theta)
    print.default(format(out, digits = digits), print.gap = 2L, quote = FALSE)
    return(out)
  }
}
aschersleben/cointReg documentation built on May 12, 2019, 4:33 a.m.