Time Series – How to Perform Accurate Time Series Forecast with Transfer Function

arimaforecastingspsstime series

I'm trying to interpret the forecast values from an ARIMAX function, and I'm confused about what's happening in the actual forecasted values as I change the values for the predictor during the forecast period.

The ARIMAX model shows one of the predictors (Spend) has the following (significant) transfer function coefficients

Numerator (lag 0)= .029
Denominator (lag 2) = .038

I held the forecast values of the predictor "Spend" constant and the compared different level – i.e. 6 periods at 100,000, then 6 periods at 200,000

One would expect that doubling the value of "Spend" would dramatically increase the predicted forecast – holding everything else constant. But it does not.

The effect was two periods of positive forecast values, followed by 4 periods of negative forecast values. I suspect this may have something to do with the denominator being larger than the numerator in the transfer function. (that's a guess). However, I also cannot explain why the forecast is positive for two periods and then goes negative, and stays negative. Why wouldn't it oscillate given the 2-period lag in the denominator?

(I've been trying to make good use of this post: Transfer function in forecasting models – interpretation)

Your help is appreciated, as always!

enter image description here

enter image description here

Best Answer

Identifying transfer functions in Arima is more of an art than science. Automatic procedures aren't always right. I have used SPSS in the past, but currently don't have access to it. So I'll try to do in SAS and R you could easily do it in SPSS.

There are two forms of identifying Transfer functions (see here for more details):

  1. Prewhitening and looking cross correlation functions (see for example Box, Jenkins and Reinsel).
  2. Lagged regression of independent variable, with AR(1) error term and plot the effect of coefficients and see if you have a pattern that can determine transfer function. (See Pankratz)

Procedure #1 is awfully complex, no one uses it in practice when you have more than 2 independent variables.

Going by #2, I lagged your spend and intent variable 4 and 5 times respectively and ran an arima model in R using auto.arima (in SPSS you could do the same by just running an AR(1) instead of auto.arima).

Spend on Profit:

enter image description here

Intent on Profit:

enter image description here

You do see a up and down pattern in Spend and you could potentially see a delay effect on intent. Without knowing exactly what these variable means I have no way to provide additional insights on why these variable behave the way they do. Does this makes sense?

IF you can provide additional context I can model this using SAS and provide you transfer function modeling and interpretation. Here is the R code for replication.

input <- read.csv("transfer.csv")

input.ts <- ts(input,frequency = 1)

spend1 = lag(input.ts[,2],-1,na.pad = TRUE)
spend2 = lag(input.ts[,2],-2,na.pad = TRUE)
spend3 = lag(input.ts[,2],-3,na.pad = TRUE)
spend4 = lag(input.ts[,2],-4,na.pad = TRUE)

intent1 = lag(input.ts[,3],-1,na.pad = TRUE)
intent2 = lag(input.ts[,3],-2,na.pad = TRUE)
intent3 = lag(input.ts[,3],-3,na.pad = TRUE)
intent4 = lag(input.ts[,3],-4,na.pad = TRUE)
intent5 = lag(input.ts[,3],-5,na.pad = TRUE)

input.lagged <- cbind(input.ts,spend1,spend2,spend3,spend4,intent1,intent2,intent3,intent4,intent5)

new_lagged_data <- na.remove(input.lagged)

model <- auto.arima(y = new_lagged_data[,1],xreg = new_lagged_data[,-1])

barplot(model$coef[c(1,3,4,5,6)])

barplot(model$coef[c(2,7,8,9,10,11)])