为什么使用auto.arima时,knitr会显示警告?

7

看起来,在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))
```

产生以下结果:

knitroutput

然而在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}吗?详细信息请参见这里 - Jilber Urbina
@Jilber那只是禁用了警告。首先,这个警告本来就不应该存在。我在R中没有禁用警告。 - Corvus
1
我也注意到使用drc包时有时会出现相同的情况。在R中运行代码没有警告,但在knitr中运行时会弹出一些警告。我可以提供一个工作示例,但它太长了,不适合评论区。 - EDi
请参见这里 - EDi
2
我可以重现这个问题。我会尝试找出原因。谢谢! - Yihui Xie
1个回答

8

虽然存在警告,但是由forecast内部抑制;请参见 forecast:::search.arima 中的 options(warn = -1)

knitr(实际上是evaluate包)无论getOption('warn')的值如何,都会捕获警告。在这种情况下,您必须像Jilber建议的那样使用warning=FALSE选项。


这似乎也适用于我的drc示例。 - EDi
1
您说得对,警告是被“forecast”抑制了,但它并不来自于“forecast:::search.arima”。这个警告是由“tseries::kpss.test”中的单位根检验生成的,而该函数是由“auto.arima”调用的。不幸的是,它会生成无意义的警告,因此我将其抑制,以免给用户带来不必要的困扰。 - Rob Hyndman
1
@RobHyndman 哦,是的,我忘了提到这一点;感谢您指出。我找到了tseries警告的来源,但我不理解(我不是时间序列专家)。您是否试图与作者/维护者争论这个无意义的警告?如果他们不同意您的看法,您可以使用suppressWarnings(kpss.test())来消除根源处的警告。 - Yihui Xie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接