Search code examples
rarimafable-r

In fable's ARIMA function, is it possible to capture the output from trace = TRUE?


In fable's ARIMA function, we have the option to see all models that are evaluated with the trace = TRUE option. (Example below.) This output just prints to the console.

Is there any place that this model evaluation history is getting saved or is there any way to save the printed console output?

library(dplyr)
library(fable)
library(tsibble)
library(tsibbledata)

df <- aus_livestock |> 
    filter(Animal == 'Pigs', State == 'Queensland')

fcst <- df |>
    model(arima = ARIMA(Count, trace = TRUE))

# Prints all models tried, but only saves final selected model:
# Model specification       Selection metric
# ARIMA(2,1,2)(1,0,1)[12]+c Inf
# ARIMA(0,1,0)(0,0,0)[12]+c 21811.280078
# ARIMA(1,1,0)(1,0,0)[12]+c 21524.227259
# ARIMA(0,1,1)(0,0,1)[12]+c 21470.955343
# Search iteration complete: Current best fit is  0 1 1 0 0 1 1 
# ARIMA(0,1,1)(0,0,0)[12]+c 21562.904816
# ARIMA(0,1,0)(0,0,1)[12]+c 21710.467789
# ARIMA(0,1,1)(0,0,1)[12]   21469.103988
# Search iteration complete: Current best fit is  0 1 1 0 0 1 0 
# ...
# ...
# ...

Solution

  • There are some options to read the output

    1. Write the output of capture.output to a file
    capture.output(fcst <- df |>
            model(arima = ARIMA(Count, trace = TRUE)), 
           file = file.path(getwd(),  'arimaout.text'))
    
    1. May also use a package (logger) to write it to a log file
    library(logger)
    log_formatter(formatter_glue)
     t <- tempfile()
     log_appender(appender_file(t))
     log_info('{capture.output(fcst <- df |> model(arima = ARIMA(Count, trace = TRUE)))}') 
     log_appender()
    

    -read the log file

    readLines(t) |> 
         head()
    [1] "INFO [2021-12-04 12:20:58] Model specification\t\tSelection metric"                       
    [2] "INFO [2021-12-04 12:20:58] ARIMA(2,1,2)(1,0,1)[12]+c\tInf"                                
    [3] "INFO [2021-12-04 12:20:58] ARIMA(0,1,0)(0,0,0)[12]+c\t21811.280078"                       
    [4] "INFO [2021-12-04 12:20:58] ARIMA(1,1,0)(1,0,0)[12]+c\t21524.227259"                       
    [5] "INFO [2021-12-04 12:20:58] ARIMA(0,1,1)(0,0,1)[12]+c\t21470.955343"                       
    [6] "INFO [2021-12-04 12:20:58] Search iteration complete: Current best fit is  0 1 1 0 0 1 1 "
    

    unlink if temporary file

    unlink(t)