1

我正在对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和的两行上fc2simseries被正确保存。

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

4

0 回答 0