Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unexpected prediction output #12

Open
ghost opened this issue Mar 3, 2022 · 2 comments
Open

Unexpected prediction output #12

ghost opened this issue Mar 3, 2022 · 2 comments

Comments

@ghost
Copy link

ghost commented Mar 3, 2022

Environment

Lib version: arima@0.2.5
Node version: v14.18.2
OS: Linux and macOS

Description

Hi @zemlyansky, we have been happily using your library without issue for some time to forecast some monthly cost data until the beginning of this month, when the predictions have suddenly become wildly inaccurate.

Below is a snippet of js which demonstrates our problem:

const Arima = require('Arima');

const inputA = [
  105.82911266800008, 191.51075963815438, 124.22193611229298, 88.42792338363537,
  85.84729763073994, 88.41525425858667, 72.47634627063404, 68.10950727140339,
  50.184748575943566, 41.052736303601996, 49.81397574690716, 64.4913229728772
];

const inputB = [ // FYI this is the same as inputA, except the first element is removed and a new element has been appended
  191.51075963815438, 124.22193611229298, 88.42792338363537, 85.84729763073994,
  88.41525425858667, 72.47634627063404, 68.10950727140339, 50.184748575943566,
  41.052736303601996, 49.81397574690716, 64.4913229728772, 24.585994644050356
];

for (const input of [inputA, inputB]) {
  const autoArima = new Arima({ auto: true, verbose: false }).fit(input);

  // Predict next 3 values
  const [pred, errors] = autoArima.predict(3);
  console.log('pred', pred, 'errors', errors);
}

If you run this snippet, you should get the following output:

0.05 
pred [ 79.41748022969402, 83.61169866651056, 83.61169866651056 ] errors [ 962.4714568849391, 1393.6548836716488, 1393.6548836716488 ]
0.05 
pred [ -2906.1716859202693, -1885.065226527455, -1340.891848101933 ] errors [ 3.8195924253e-313, 88.41525425858667, 3.8195924261e-313 ]

As you can see, the predictions for inputA look sensible, but the ones for inputB do not.

If it assists, when you set verbose to true, you get the following output:

0.05 
p: 2 d: 0 q: 2 P: 0 D: 0 Q: 0 Drift/Mean: 1 ic: 1.79769e+308 
p: 0 d: 0 q: 0 P: 0 D: 0 Q: 0 Drift/Mean: 1 ic: 127.525 
p: 1 d: 0 q: 0 P: 0 D: 0 Q: 0 Drift/Mean: 1 ic: 126.271 
p: 0 d: 0 q: 1 P: 0 D: 0 Q: 0 Drift/Mean: 1 ic: 126.178 
p: 0 d: 0 q: 0 P: 0 D: 0 Q: 0 Drift/Mean: 0 ic: 145.608 
p: 1 d: 0 q: 1 P: 0 D: 0 Q: 0 Drift/Mean: 1 ic: 1.79769e+308 
p: 0 d: 0 q: 2 P: 0 D: 0 Q: 0 Drift/Mean: 1 ic: 130.095 
p: 1 d: 0 q: 2 P: 0 D: 0 Q: 0 Drift/Mean: 1 ic: 1.79769e+308 

 AutoARIMA summary: 


 Exit Status 
Return Code : 1 
Exit Message : Probable Success

  ARIMA Seasonal Order : ( 0, 0, 1) * (0, 0, 0) 

Coefficients        Value               Standard Error       

MA1              -0.669343           0.251052             

MEAN             83.6117             14.5387              
TREND            0                    

SIGMA^2          1154.95              

ESTIMATION METHOD : CSS-MLE

OPTIMIZATION METHOD : L-BFGS

AIC criterion : 123.083 

BIC criterion : 124.537 

AICC criterion : 126.083 

Log Likelihood : -58.5413 

Auto ARIMA Parameters 

Approximation: TRUE 
pred [ 79.41748022969402, 83.61169866651056, 83.61169866651056 ] errors [ 962.4714568849391, 1393.6548836716488, 1393.6548836716488 ]
Stepwise: TRUE0.05 
p: 2 d: 1 q: 2 P: 0 D: 0 Q: 0 Drift/Mean: 1 ic: 121.451 
p: 0 d: 1 q: 0 P: 0 D: 0 Q: 0 Drift/Mean: 1 ic: 99.1227 
p: 1 d: 1 q: 0 P: 0 D: 0 Q: 0 Drift/Mean: 1 ic: 102.541 
p: 0 d: 1 q: 1 P: 0 D: 0 Q: 0 Drift/Mean: 1 ic: 100.922 
p: 0 d: 1 q: 0 P: 0 D: 0 Q: 0 Drift/Mean: 0 ic: 100.024 

 AutoARIMA summary: 


 Exit Status 
Return Code : 1 
Exit Message : Probable Success

  ARIMA Seasonal Order : ( 0, 1, 0) * (0, 0, 0) 

Coefficients        Value               Standard Error       


MEAN             0                    
TREND            0                    
EXOG             -15.175             6.95421              

SIGMA^2          585.16               

ESTIMATION METHOD : CSS-MLE

OPTIMIZATION METHOD : L-BFGS

AIC criterion : 104.259 

BIC criterion : 105.055 

AICC criterion : 105.759 

Log Likelihood : -50.1295 

Auto ARIMA Parameters 

Approximation: TRUE 
pred [ -2906.1716859202693, -1885.065226527455, -1340.891848101933 ] errors [ 3.8195924253e-313, 88.41525425858667, 3.8195924261e-313 ]

Please could you assist me in understanding this dramatic change in prediction? Is it a bug?

Many thanks in advance for your time.

Miles

@ghost
Copy link
Author

ghost commented Mar 3, 2022

As a minor aside, do you know why we are seeing 0.05 in the output as well?

@IbrahimShamma99
Copy link

Same issue

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant