我正在对forecast
包运行单元测试,特别是针对forecast.ar()
函数。我有一段代码在单独运行时工作得很好。
require(testthat)
require(forecast)
set.seed(55)
simseries <- stats::arima.sim(model = list(ar = c(-0.42, 0.832, 0.1, -0.34)), n = 400)
arfit <- stats::ar(simseries)
fc1 <- forecast(arfit)$mean
fc2 <- forecast(arfit, bootstrap = TRUE, npaths = 100, fan = TRUE)$mean
expect_true(all(fc1 == fc2))
但是,当我将它嵌入到一个test_that()
函数中时(在开始一个新的干净的 R 会话之后),我收到一个错误,即 ts 为空。我已经确定错误发生在生成fc1
和的两行上fc2
;simseries
被正确保存。
require(testthat)
require(forecast)
test_that("tests for forecast.ar", {
set.seed(55)
simseries <- stats::arima.sim(model = list(ar = c(-0.42, 0.832, 0.1, -0.34)), n = 400)
arfit <- stats::ar(simseries)
fc1 <- forecast(arfit)$mean
fc2 <- forecast(arfit, bootstrap = TRUE, npaths = 100, fan = TRUE)$mean
expect_true(all(fc1 == fc2))
})
为什么会这样?ar
我认为使用包中的andarima.sim
函数可能是命名空间问题stats
,因此我在函数调用中包含了 stats 命名空间,但这并不能解决问题。
R 3.1.1 预测 6.1 测试 0.10.0