R/dataframe_DLM.R

Defines functions plot.dataframe_DLM summary.dataframe_DLM print.dataframe_DLM as.data.frame.dataframe_DLM dataframe_DLM

Documented in dataframe_DLM

dataframe_DLM <- function( X, lag, dynamic_vars = NULL, arglag = list(fun = 'bs'), ... ) {

  if ( is.null(dynamic_vars) ) {
    warning( 'No dynamic variables listed. Returning given data.' )
    return( X )
  }

  if ( missing(lag) ) {
    stop( "The 'lag' argument must be supplied." )
  }

  X <- as.data.frame( X )
  static_vars <- setdiff( colnames(X), dynamic_vars )
  X_static <- select( X, static_vars )
  X_dynamic_raw <- select( X, dynamic_vars )
  X_dynamic <- lapply( X_dynamic_raw, crossbasis, lag = lag, arglag = arglag, ... ) %>%
    do.call( what = 'cbind' )

  l <- ncol( X_dynamic ) / length( dynamic_vars )
  dynamic_names <- paste0( rep( dynamic_vars, each = l ), paste0('.l', 1:l) )
  colnames( X_dynamic ) <- dynamic_names
  dynamic_names_list <- split( dynamic_names, rep(1:ncol(X_dynamic_raw), each = l) )
  names( dynamic_names_list ) <- dynamic_vars

  res <- list( data = cbind(X_static, X_dynamic) %>% na.omit,
               dynamic_names = dynamic_names_list, lag = lag, arglag = arglag )
  class( res ) <- 'dataframe_DLM'
  res

}

as.data.frame.dataframe_DLM <- function( x, ... ) {
  as.data.frame( x$data, ... )
}

print.dataframe_DLM <- function( x, ... ) {
  cat( 'Data:\n')
  print( x$data, ... )
  cat( paste0('\nLag: ', x$lag, '\n\n') )
  cat( 'Arglag:\n' )
  print( x$arglag, ... )
  cat( '\n' )
}

summary.dataframe_DLM <- function( object, ... ) {
  print( summary(as.data.frame(object), ...) )
  cat( paste0('\nLag: ', object$lag, '\n\n') )
}

plot.dataframe_DLM <- function( x, ... ) {
  plot( as.data.frame(x), ... )
}

Try the DiscreteDLM package in your browser

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

DiscreteDLM documentation built on April 3, 2025, 6:19 p.m.