评论: 首先,我要非常感谢新tsoutliers软件包的作者,该软件包实现了 Chen 和 Liu 的时间序列异常值检测,该软件包于 1993 年发表在美国统计协会杂志的开源软件中。
该包在时间序列数据中迭代检测 5 种不同类型的异常值:
- 加性异常值 (AO)
 - 创新异常值 (IO)
 - 电平转换 (LS)
 - 临时变更 (TC)
 - 季节性水平偏移 (SLS)
 
更棒的是,这个包从预测包中实现了 auto.arima,因此检测异常值是无缝的。该软件包还可以生成漂亮的图,以便更好地理解时间序列数据。
以下是我的问题:
我尝试使用这个包运行几个示例,效果很好。加性异常值和水平偏移是直观的。但是,关于处理临时变更异常值和创新异常值,我有 2 个问题,我无法理解。
临时变化异常值示例:
考虑以下示例:
library(tsoutliers)
library(expsmooth)
library(fma)
outlier.chicken <- tsoutliers::tso(chicken,types = c("AO","LS","TC"),maxit.iloop=10)
outlier.chicken
plot(outlier.chicken)
该程序正确地检测到以下位置的电平偏移和临时变化。
Outliers:
  type ind time coefhat tstat
1   LS  12 1935   37.14 3.153
2   TC  20 1943   36.38 3.350
以下是情节和我的问题。
- 如何以方程式格式编写临时更改?(电平位移可以很容易地写成二进制变量,在 1935/Obs 12 之前的任何时间都是 0,而在 1935 和之后的任何时间都是 1。)
 
包装手册和文章中临时更改的公式如下:
其中为 0.7。我只是在努力将其翻译为上面的示例。
- 我的第二个问题是关于创新异常值,我在实践中从未遇到
过创新异常值。任何数值示例或案例示例都会非常有帮助。 

编辑: @Irishstat,tsoutliers 函数在识别异常值和建议适当的 ARIMA 模型方面做得很好。查看 Nile 数据集,请参阅下面的 auto.arima 应用程序,然后应用 tsoutliers(默认值包括 auto.arima):
auto.arima(Nile)
Series: Nile 
ARIMA(1,1,1)                    
Coefficients:
         ar1      ma1
      0.2544  -0.8741
s.e.  0.1194   0.0605
sigma^2 estimated as 19769:  log likelihood=-630.63
AIC=1267.25   AICc=1267.51   BIC=1275.04
应用 tsoutliers 函数后,它会识别 LS 异常值和加性异常值,并推荐 ARIMA 顺序 (0,0,0)。
nile.outliers <- tso(Nile,types = c("AO","LS","TC"))
nile.outliers
Series: Nile 
ARIMA(0,0,0) with non-zero mean 
Coefficients:
      intercept       LS29       AO43
      1097.7500  -242.2289  -399.5211
s.e.    22.6783    26.7793   120.8446
sigma^2 estimated as 14401:  log likelihood=-620.65
AIC=1249.29   AICc=1249.71   BIC=1259.71
Outliers:
  type ind time coefhat  tstat
1   LS  29 1899  -242.2 -9.045
2   AO  43 1913  -399.5 -3.306

