在 fable 的 ARIMA 函数中,是否可以捕获 trace = TRUE 的输出?

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

fableARIMA 函数中,我们可以选择查看使用 trace = TRUE 选项评估的所有模型。 (下面的示例。)此输出仅打印到控制台。

是否有任何地方可以保存此模型评估历史记录,或者是否有任何方法可以保存打印的控制台输出?

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 
# ...
# ...
# ...

有一些选项可以读取输出

  1. capture.output 的输出写入 file
capture.output(fcst <- df |>
        model(arima = ARIMA(Count, trace = TRUE)), 
       file = file.path(getwd(),  'arimaout.text'))
  1. 也可以使用包(logger)将其写入日志文件
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()

-读取日志文件

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 如果临时文件

unlink(t)