为啥 knitr 使用 auto.arima 显示警告?

Posted

技术标签:

【中文标题】为啥 knitr 使用 auto.arima 显示警告?【英文标题】:Why does knitr show a warning using auto.arima?为什么 knitr 使用 auto.arima 显示警告? 【发布时间】:2013-02-27 22:21:12 【问题描述】:

似乎在knitr 脚本中从forecast 包运行auto.arima 总是会产生一个警告——当我在普通R 中运行它时不会收到这个警告。

knitr Markdown 示例代码:

```r
library(forecast)
```
Spurious warning from forecast and knitr
========================================

The following generates a warning that I don't think is valid

```r
summary(auto.arima(WWWusage))
```

产生这个:

而在 R 中运行以下命令通常不会产生这样的警告:

> library(forecast)
This is forecast 4.02 

> summary(auto.arima(WWWusage))
Series: WWWusage 
ARIMA(1,1,1)                    

Coefficients:
         ar1     ma1
      0.6504  0.5256
s.e.  0.0842  0.0896

sigma^2 estimated as 9.793:  log likelihood=-254.15
AIC=514.3   AICc=514.55   BIC=522.08

Training set error measures:
       ME      RMSE       MAE       MPE      MAPE      MASE 
0.3035616 3.1137542 2.4052748 0.2805566 1.9174634 0.5315228 

此外,由于此数据集是 auto.arima 的示例数据集,我倾向于认为警告是不正确的(因为我怀疑会给出一个“好”的示例)。

知道发生了什么吗?

【问题讨论】:

你试过写r, warning=FALSE ???更多详情请见Here @Jilber 只是禁用了警告。警告首先不应该存在。我没有在 R 中禁用警告。 +1。我也时不时地观察到与drc 包相同的东西。在 R 中运行代码不会显示任何警告,但在 knitr 中运行时会弹出一些警告。我可以举一个可行的例子,但是需要评论。 见here。 我可以重现该问题。我会试着找出原因。谢谢! 【参考方案1】:

该警告确实存在,但在内部被forecast 压制;参见forecast:::search.arima 中的options(warn = -1)

knitr(实际上是evaluate 包)捕获警告,而不管getOption('warn') 值如何。在这种情况下,您必须按照 Jilber 的建议使用 warning=FALSE 选项。

【讨论】:

这似乎也适用于我的 drc-example。 警告被forecast 抑制是正确的,但它不是来自forecast:::search.arima。此警告由tseries::kpss.test 中的单位根测试生成,由auto.arima 调用。不幸的是,它会产生毫无意义的警告,我禁止这样做,因为它们不必要地打扰了用户。 @RobHyndman 哦,是的,我忘了提这个;感谢您指出。我确实从tseries 找到了警告的来源,我不明白(我不是时间序列专家)。您是否试图就这个毫无意义的警告与作者/维护者争论?如果他们不同意您的意见,您可以使用suppressWarnings(kpss.test()) 从根目录中删除警告。

以上是关于为啥 knitr 使用 auto.arima 显示警告?的主要内容,如果未能解决你的问题,请参考以下文章

SAS中的“Auto.arima”?

auto.arima() 函数中的错误

等价于 python 的 auto.arima()

使用 auto.arima() 和 xreg 进行样本外预测

使用 auto.arima 和 xreg=解释变量进行 R 时间序列预测

Auto.arima() 函数不会产生白噪声。我还应该如何对数据进行建模