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

  • $\begingroup$ Any chance you can post the data? Lag 2 in denominator could be spurious. $\endgroup$
    – forecaster
    Commented Oct 13, 2018 at 2:49
  • $\begingroup$ yes, I could use some assistance in figuring out how to post a .csv file; if there's a way, I could also email it. dropbox.com/s/mobnwmmgyft9bhs/sample_data.csv?dl=0 $\endgroup$ Commented Oct 13, 2018 at 3:04
  • $\begingroup$ posted my public dropbox link. see if that works. $\endgroup$ Commented Oct 13, 2018 at 3:12
  • $\begingroup$ Yes it does, I’ll try to work something up tomorrow $\endgroup$
    – forecaster
    Commented Oct 13, 2018 at 3:24
  • $\begingroup$ Very much appreciate your expertise! $\endgroup$ Commented Oct 13, 2018 at 3:26

2 Answers 2


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])


  • $\begingroup$ Thank you for your analysis. Intent is a latent measure obtained from a monthly assessment of customers attitudes. i.e. purchase intent. Spend is monthly spend on marketing. I was able to work out some of the math, and determined that the denominator as a kind of exponential decay for each time period. (I'm sure that everyone already knew that). $\endgroup$ Commented Oct 14, 2018 at 18:00
  • $\begingroup$ My concern was that when the marketing spend is held constant, the forecasted sales actually turns negative after the first two periods, which seems roughly consistent with the plots you provided above. I'm not entirely certain, but it seems that is the result of the "decay" coefficient being larger than the numerator (which I believe is interpreted as the auto-regressive part of variable) $\endgroup$ Commented Oct 14, 2018 at 18:08
  • $\begingroup$ How do real forecasters (hahaha) perform "what-if" scenarios for significant independent variables? because of SPSS limitations, I'm forced to essentially re-run the model in SPSS each time with different what-if values for each independent variable in the forecast period.... that seems awfully slow. $\endgroup$ Commented Oct 14, 2018 at 18:12
  • $\begingroup$ I would be interested to see what SAS produces and how it compares with SPSS output. Let me know if you have everything you need from me. $\endgroup$ Commented Oct 14, 2018 at 22:23
  • $\begingroup$ My mistake - for Spend, there is no denominator in the transfer function. This clears up a lot. Don't do complex time series late at night... $\endgroup$ Commented Oct 14, 2018 at 23:11

A useful model for the 28 observations is here enter image description here and also here as a familienter image description herear regression equation .

When identifying via pre-whitening it is often necessary to include any needed differencing operators. Some software provides recognize that the transfer function itself does not necessarily include the differencing operators and they provide the option to include differencing operators or not. For example if y and x are both upwards trending series , it is entirely possible for y=3x might be a useful model even though both y and x ( by themselves) are non-stationary.

In this case unwanted/unneeded differencing and unwarranted dynamic structure (INTENT) injects unneeded structure causing your consternation.

There are two seasonal pulses and 1 level/step shift at or around 12/2017. I have have also attached the litmus test for model adequacy ... the plot of the model errors and also the acf of the model errors.enter image description here . It would be interesting ( and probably revealing) to see the plot of the residuals and the residual acf of the SPSS model.

enter image description here

I would suggest that any complete/thorough analysis would include this presentation.

In terms of why neither SAS or SPSS include the automatic identification of deterministic structure https://pdfs.semanticscholar.org/09c4/ba8dd3cc88289caf18d71e8985bdd11ad21c.pdf when predictor series are employed, you might ask them as the last time I looked they were not available.

The actual/fit/forecast graph is here ## Heading ## and the statistical summary of the model is here enter image description here

Hope this helps your understanding.

p.s. You might look at steps to time series analysis on my data and note that for programming simplicity SPSS does not automatically assess the need for the inclusion of differencing operators into the transfer model .. it simply naively assumes it.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.