在 fable 的 ARIMA 函数中,是否可以捕获 trace = TRUE 的输出?
In fable's ARIMA function, is it possible to capture the output from trace = TRUE?
在 fable
的 ARIMA
函数中,我们可以选择查看使用 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
# ...
# ...
# ...
有一些选项可以读取输出
- 将
capture.output
的输出写入 file
capture.output(fcst <- df |>
model(arima = ARIMA(Count, trace = TRUE)),
file = file.path(getwd(), 'arimaout.text'))
- 也可以使用包(
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)
在 fable
的 ARIMA
函数中,我们可以选择查看使用 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
# ...
# ...
# ...
有一些选项可以读取输出
- 将
capture.output
的输出写入file
capture.output(fcst <- df |>
model(arima = ARIMA(Count, trace = TRUE)),
file = file.path(getwd(), 'arimaout.text'))
- 也可以使用包(
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)