Time Series Analysis and Innovative Outliers
Build-up
In the graph above, a significant outlier can be found in September 2001. However, unlike additive outliers, it continues to have an effect thereafter. The number of air passengers was steadily increasing, showing seasonality, but the fear from the 9/11 terrorist attacks can be interpreted as sharply reducing the number of users itself.
Definition 1
Outliers that change the landscape of analysis itself are called Innovative Outliers.
Practice
Such innovative outliers can be found intuitively or using the detectIO()
function of the TSA
package. The method of use is as follows:
- Conduct a time-series analysis with the original data, without considering innovative outliers.
- Put the returned model itself into the
detectIO()
function. Then, the following results are obtained: - Prioritize the index with the largest absolute value of lambda. In the screenshot above, it’s the 69th.
- Reflect the innovative outlier and analyze again. Repeat until satisfactory results are obtained.
Analysis with innovative outliers incorporated uses Intervention Analysis, which is mathematically difficult to approach in many parts. Fortunately, the code is not very difficult, and you just need to directly enter the index into the io
option of arima()
. For instance, if the 69th is suspected, just add it as io=c(69)
.
Indeed, analysis significantly improves once the IO is reflected.
Code
Below is an example code written in R.
library(TSA)
data("airmiles")
win.graph(6,4)
plot(airmiles, main="미국의 여객기 이용자 수")
out1<-auto.arima(airmiles)
detectIO(out1)
out2<-arima(airmiles,order=c(1,0,1),seasonal=list(order=c(0,1,1),period=12),io=c(69))
win.graph(6,4); par(mfrow=c(1,2))
plot(airmiles,main="IO 미반영",xlim=c(2000,2003),xaxt='n'); lines(fitted(out1),col='red')
plot(airmiles,main="IO 반영",xlim=c(2000,2003),xaxt='n'); lines(fitted(out2),col='red')
Cryer. (2008). Time Series Analysis: With Applications in R(2nd Edition): p257. ↩︎