One of the important issues being faced by forecasters is if the given series can be forecasted or not ?
I stumbled on an article entitled "Entropy as an A Priori Indicator of Forecastability" by Peter Catt that uses Approximate Entropy (ApEn) as a relative measure to determine of a given time series is forecastable.
The article says,
"Smaller ApEn values indicate a greater chance that a set of data will be followed by similar data (regularity). Conversely, a larger value of ApEn indicates a lower chance of similar data being repeated (irregularity). Hence, larger values convey more disorder, randomness and system complexity."
And is followed by mathematical formulas for calculating ApEn. This is an interesting approach because it provides a numerical value that can be used to assess forecastablity in relative sense. I don't know what Approximate Entropy means, I'm reading more about it.
There is a package called pracma in R
that lets you calculate ApEn. For an illustrative purpose, I used 3 different time series and calculated the ApEn numbers.
- Series 1: The famous AirPassenger time series - is highly deterministic and we should be able to forecast easily.
- Series 2: Sunspot Time Series - is very well defined but should be less forecastable than series 1.
- Series 3: Random Number There is no way to forecast this series.
So if we calculate ApEn, Series 1 should be less than Series 2 should be very very less Series 3.
Below is the R snippet that calculates ApEn for all the three series.
library("pracma")
> series1 <- approx_entropy(AirPassengers)
> series1
[1] 0.5157758
> series2 <- approx_entropy(sunspot.year)
> series2
[1] 0.762243
> series3 <- approx_entropy(rnorm(1:30))
> series3
[1] 0.1529609
This is not what I expected. The random series has a lower number than the well defined AirPassenger series. Even if I increase the random number to 100, I still get the following which is less than the well defined series 2/Sunspot.yealry series.
> series3 <- approx_entropy(rnorm(1:100))
> series3
[1] 0.747275
Below are my questions:
- There are 2 parameters in calculating ApEn (
m
andr
) ? How to determine them. Iused defaults in theR
code above. - What am I doing incorrectly that is showing that incorrectly that ApEn is lower for random numbers vs. a well defined series such as sunspot.yearly.
- Should I deseasonalize/detrend the series and then estimate ApEn. The author however has applied ApEn directly to the series.
- Is there any other way to determine if the series is forecastable ?
Thanks in advance for your help