0 ratings 0% found this document useful (0 votes) 11 views 45 pages VAR Python Guide
The document is a comprehensive guide on Vector Autoregression (VAR), a multivariate forecasting algorithm that models the relationship between multiple time series that influence each other. It covers the concepts, intuition, and step-by-step procedures for building and forecasting VAR models in Python using the statsmodels library. Key topics include testing for causation, checking for stationarity, and visualizing time series data.
AI-enhanced title and description
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content,
claim it here .
Available Formats
Download as PDF or read online on Scribd
Go to previous items Go to next items
‘210724, 235 PME ‘Vector Autoregression (VAR) - Comprehensive Guide wth Examples in Pytnon - Machine Learning Plus
courses
Search searct
Login
Get 37% Off on Complete Data Science (AI/ML) Pathway! —_ Enroll Now
ntps:[Link]-seresivector-autoregression-oxamples python! 18,‘210724, 235 PME ‘Vector Autoregression (VAR) - Comprehensive Guide wth Examples in Pytnon - Machine Learning Plus
Python
Decorators in Python ~ How
to enhance functions without
changing the code?
Generators in Python ~ How
to lazily return values only
when needed and save
memory?
Iterators in Python ~ What.
are Iterators and Iterables?
Python Module ~ What are
modules and packages in
python?
Object Oriented
Programming (OOPS) in
Python
How to create conda virtual
environment
Vector Autoregression
(VAR) - Comprehensive
Guide with Examples in
Python
Vector Autoregression (VAR) is a forecasting algorithm that
can be used when two or more time series influence each
other. That is, the relationship between the time series
involved is bi-directional. In this post, we will see the
concepts, intuition behind VAR models and see a
comprehensive and correct method to train and forecast
VAR models in python using statsnodels .
Get 37% Off on Complete Data Science (AI/ML) Pathway! —_ Enroll Now
ntps:[Link]-seresivector-autoregression-oxamples python! 2145‘210724, 235 PME ‘Vector Autoregression (VAR) - Comprehensive Guide wth Examples in Python - Machine Learning Plus
How to use Numpy Random
Funetion in Python
Profile ~ How to profile your
python code
Dask Tutorial - How to
handle big data in Python
Numpy Reshape - How to
reshape arrays and what
does -1 mean?
Modin - How to speedup
pandas
What does Python Global
Interpreter Lock ~ (GIL) do?
Python Yield ~ What does
the yield keyword do?
Lambda Function in Python ~
How and When to use?
Investor's Portfolio
Optimization with Python
datetime in Python -
Simplified Guide with Clear
Examples
Python Collections -
Complete Guide
pdb — How to use Python
debugger
Python JSON — Guide
How to use tffunetion to
speed up Python code in
Tensorflow
List Comprehensions in
Python ~ My Simplified
Guide
Mahalonobis Distance -
Understanding the math with
examples (python)
Parallel Processing in Python
~ A Practical Guide with
Vector Autoregression (VAR) - Comprehensive Guide with
Examples in Python, Photo by Kyran Low.
Content
1. Introduction
2. Intuition behind VAR Model Formula
3. Building a VAR model in Python
4, Import the datasets
5, Visualize the Time Series
6. Testing Causation using Granger's Causality Test
7. Cointegration Test
8. Split the Series into Training and Testing Data
9. Check for Stationarity and Make the Time Series
Stationary
10. How to Select the Order (P) of VAR model
Ti. Train the VAR Model of Selected Order(p)
12. Check for Serial Correlation of Residuals (Errors) using
Durbin Watson Statistic
13, How to Forecast VAR model using statsmodels
14, Train the VAR Model of Selected Order(p)
15, Invert the transformation to get the real forecast
16. Plot of Forecast vs Actuals
Get 37% Off on Complete Data Science (AI/ML) Pathway! —_ Enroll Now
ntps:[Link]-seresivector-autoregression-oxamples python! 314512/0124, 298 PM ‘Vector Autoregression (VAR) - Comprehensive Guide with Examples in Pytnon - Machine Learning Plus
Python @Property Explained
- How to Use and When?
(Full Examples)
Python Logging — Simplest
Guide with Full Code and
Examples
Python Regular Expressions
Tutorial and Examples: A
Simplified Guide
Requests in Python Tutorial —
How to send HTTP requests
in Python?
Simulated Annealing
Algorithm Explained from
Scratch
Setup Python environment
for ML
[Link]) - How to
compute median in Python
add Python to PATH - How
to add Python to the PATH
environment variable in
Windows?
Install pip mac ~ How to
install pip in MacOs?: A
Comprehensive Guide
Install opency python - A
Comprehensive Guide to
Installing “OpenCV-Python”
Machine Learning
Gradient Boosting
Bias Variance Tradeoff
Caret Package in R
Linear Regression in Julia
ARIMA Model for Time Series
Forecasting
1. Introduction
First, what is Vector Autoregression (VAR) and when to use
it?
Vector Autoregression (VAR) is a multivariate forecasting
algorithm that is used when two or more time series
influence each other.
That means, the basic requirements in order to use VAR
are
1. You need at least two time series (variables)
2. The time series should influence each other.
Alright. So why is it called ‘Autoregressive’?
It is considered as an Autoregressive model because, each
variable (Time Series) is modeled as a function of the past
values, that is the predictors are nothing but the lags (time
delayed value) of the series.
Ok, so how is VAR different from other Autoregressive
models like AR, ARMA or ARIMA?
The primary difference is those models are uni-directional,
where, the predictors influence the Y and not vice-versa
Whereas, Vector Auto Regression (VAR) is bi-directional.
That is, the variables influence each other.
We will go more in detail in the next section.
In this article you will gain a clear understanding of:
Intuition behind VAR Model formula
How to check the bi-directional relationship using Granger
Causality
Procedure to building a VAR model in Python
Get 37% Off on Complete Data Science (AI/ML) Pathway! —_ Enroll Now
hitos www. [Link]-setiesvector-autoregression-examples-python! 419512/0124, 298 PM ‘Vector Autoregression (VAR) - Comprehensive Guide with Examples in Pytnon - Machine Learning Plus
Principal Component Analysis
(PCA)
Mahalonobis Distance
Portfolio Optimization
Augmented Dickey Fuller Test
(ADF Test)
Linear Regression in R
Cosine Similarity
Feature Selection Approaches
Gensim Tutorial (NLP)
K-Means Clustering
Algorithm
KPSS Test for Stationarity
Lemmatization Approaches
Numpy Tutorial - Part 1
Numpy Tutorial - Part 2
P-Value ~ Understanding
from Scratch
Vector Autoregression (VAR)
Time Series Analysis in
Python
Evaluation Metrics for
Classification models
Topic modeling visualization
Topic Modeling with Gensim
(Python)
Building chatbot with Rasa
and spaCy
Detect outliers using 1QR and
Boxplots?
Detect outliers with z-score
Time Series
Time Series Analysis in
Puthon
Interpreting the results of VAR model
How to generate forecasts to original scale of time series
2. Intu
ion behind VAR Model Formula
If you remember in Autoregression models, the time series
is modeled as a linear combination of it's own lags. That is,
s are used to forecast the
the past values of the seri
current and future.
A typical AR(p) model equation looks something like this:
Y, = a+ BY-1 + BY-2 + + ByN-p + &
where a is the intercept, a constant and B1, B2 till Bp are
the coefficients of the lags of Y till order p.
Data Science Walsiauli
ae Notre
‘Machine Learning
eed) ‘Machine wumning IMI tiene rece
Soe ene erted
Order ‘p' means, up to p-lags of Y is used and they are the
predictors in the equation. The e_{t} is the error, which is
considered as white noise.
Alright. So, how does a VAR model's formula look like?
In the VAR model, each variable is modeled as a linear
combination of past values of itself and the past values
of other variables in the system. Since you have multiple
time series that influence each other, it is modeled as a
Enroll Now
[Link]-setiesvector-autoregression-examples-python! 514512/0124, 298 PM ‘Vector Autoregression (VAR) - Comprehensive Guide with Examples in Pytnon - Machine Learning Plus
ARIMA Modeling
Augmented Dickey Fuller Test
(ADF Test)
KPSS Test for Stationarity
Granger Causality Test
That is, if you have 5 time series that influence each other,
we will have a system of 5 equations.
Well, how is the equation exactly framed?
Let's suppose, you have two variables (Time series) Y1 and
Y2, and you need to forecast the values of these variables
at time (t).
To calculate Y1(t), VAR will use the past values of both Y1
as well as Y2. Likewise, to compute Y2(t), the past values of
both Y1 and Y2 be used.
For example, the system of equations for a VAR(1) model
with two time series (variables °Y1° and "Y2’) is as follows:
Yi = 1 + Bi Vig-1 + Bra You + €14
Yo = 2 + Bai Vig—-1 + Bo2,1 You-1 + €24
Where, ¥(1,t-1} and Y(2,t-1) are the first lag of time series
Y1 and Y2 respectively.
The above equation is referred to as a VAR(1) model,
because, each equation is of order 1, that is, it contains up
to one lag of each of the predictors (Y1 and Y2).
Since the Y terms in the equations are interrelated, the Y's
are considered as endogenous variables, rather than as
exogenous predictors.
Likewise, the second order VAR(2) model for two variables
would include up to two lags for each variable (V1 and Y2)
Yay = a+ Pras Yasct + Boa Yona + Pita¥ise2 + Bra2¥ar-2 tes
Yay = 3 + Bots Yast + Bras Yori + Bata Yis-2 + Pra ¥as-2 + es
Can you imagine what a second order VAR(2) model with
three variables (V1, Y2 and Y3) would look like?
y+ Bins Yisa + Pra Yar + insYoet + BiaYira Baa + OnaYra ty
ay Pausini + + Bass Yarot + Briain + BnaYiy-a + PaYava +e
ay Assit + Bas Yarot + PaiaYigna + BrsaYisoa + PuaYaea + 6,
Get 37% Off on Complete Data Science (AI/ML) Pathway! —_ Enroll Now
hitos www. [Link]-setiesvector-autoregression-examples-python! eas‘ars24, 295 pm Vector Autoreression (VAR) - Comprehensive Guie wih Example in Pyton - Machine Learning Pus
‘As you increase the number of time series (variables) in the
model the system of equations become larger.
3. Building a VAR model in Python
The procedure to build a VAR model involves the following
steps:
1. Analyze the time series characteristics
2. Test for causation amongst the time series
3. Test for stationarity
4, Transform the series to make it stationary, if needed
5. Find optimal order (p)
6. Prepare training and test datasets
7. Train the model
8. Roll back the transformations, if any.
9. Evaluate the model using test set
10. Forecast to future
import pandas as pd
import numpy as np
import [Link] as plt
Ymatplotlib inline
# Import Statsmodels
from [Link] import VAR
from [Link] import adfuller
from [Link].eval_measures import rmse,
[Link] datasets
For this article let's use the time series used in Yash P
Get 37% Off on Complete Data Science (AI/ML) Pathway! —_ Enroll Now
ntps:[Link]-seresivector-autoregression-examples python! 185‘210724, 235 PME ‘Vector Autoregression (VAR) - Comprehensive Guide wth Examples in Pytnon - Machine Learning Plus
Process: An Empirical Approach”.
This dataset has the following 8 quarterly time series:
rgnp : Real GNP.
pgnp : Potential real GNP.
ule: Unit labor cost.
1
2
3
4, gdfco : Fixed weight deflator for persor
S. gf : Fixed weight GNP deflator.
6. gdfim : Fixed weight import deflator.
7, gdfcf : Fixed weight deflator for food i
8
gdfce : Fixed weight deflator for energy
«(DP »
Let's import the data.
filepath = ‘https: //[Link]/se]
df = pd.read_csv(filepath, parse_dates=[‘date'], i
print([Link]) # (123, 8)
[Link]()
ed »
romp pnp ule gdfco df _gdfim gdfet gdtce
date
1088-07-01 40427 39719 1796 1315 1289 1062 1235 928
1988-10-01 4069.4 39958 1813 1323 1262 1073 1249 929
1989-01-01 41068 40199 1841 1348 1277 1095 1266 940
1989-04-01 41325 40441 1861 1348 1293 1111 1290 1006
1989-07-01 41629 40684 1874 1372 1302 1098 1299 982
5. Visualize the Time Series
# Plot
fig, axes = [Link](nrows=4, ncols=2, dpi-12€
for i. ax in enumerate([Link]()):
Get 37% Off on Complete Data Science (AI/ML) Pathway! —_ Enroll Now
ntps:[Link]-seresivector-autoregression-examples python! 814512/0/24, 2:35 PM. \Vector Autoregression (VAR) - Comprehensive Guide with Examples in Python - Machine Learning Plus
[Link](data, color="red’, linewidth=1)
# Decorations
ax.set_title([Link][i])
ax. xaxis.set_
icks_position(‘none’)
[Link].set_ticks_position( ‘none’ )
ax. spines["top"].set_alpha(@)
ax. tick_params(labelsize=6)
plt.tight_layout (
\
\
Actual Multi Dimensional Time Series for VAR model
Each of the series have a fairly similar trend patterns over
the years except for gdfce and gdfim , where a
different pattern is noticed starting in 1980
Alright, next step in the analysis is to check for causality
amongst these series, The Granger's Causality test and the
Cointegration test can help us with that.
6. Testing Causation using Granger's
Causality Test
Get 37% Off on Complete Data Science (AI/ML) Pathway! —_ Enroll Now
ntps:[Link]-seresivector-autoregression-examples python! 9145‘2/024, 235 Pe ‘Vector Autoregression (VAR) - Comprehensive Guide with Examples in Python - Machine Learning Plus
can predict the series with past values of itself along with
other series in the system.
Using Granger's Causality Test, it's possible to test this
relationship before even building the model.
So what does Granger's Causality really test?
Granger's causality tests the null hypothesis that the
coefficients of past values in the regression equation is
zero.
In simpler terms, the past values of time series (X) do not
cause the other series (Y). So, if the p-value obtained from
the test is lesser than the significance level of 0.05, then,
you can safely reject the null hypothesis.
The below code implements the Granger's Causality test
for all possible combinations of the time series in a given
dataframe and stores the p-values of each combination in
the output matrix,
from [Link] import grangercaus
maxlag=12
test = ‘ssr_chi2test’
def grangers_causation_matrix(data, variables, tes
“""Check Granger Causality of all possible cor
The rows are the response variable, columns ar
are the P-Values. P-Values lesser than the sig
the Null Hypothesis that the coefficients of t
zero, that is, the X does not cause Y can be r
data : pandas dataframe containing the ti
variables : list containing names of the time
df = [Link]([Link]((len(variables), le
for ¢ in [Link]:
for r in df. index:
Get 37% Off on Complete Data Science (AI/ML) Pathway! —_ Enroll Now
[Link]-setiesvector-autoregression-examples-python! 104512/024, 235 Pet ‘Vector Autoregression (VAR) - Comprehensive Guide with Examples in Python - Machine Learning Plus
[Link] = [round(test_result[i+1] [0] [
if verbose: print(f'Y = {r}, X = {c},
min_p_value = [Link](p_values)
[Link][r, ¢] = min_p_value
[Link] = [var + '_x' for var in variables]
[Link] = [var + ‘_y' for var in variables]
return df
grangers_causation_matrix(df, variables = [Link]
ranpx ponpx ule.x gdfeox gdtx gdfimx gdfelx gdfee x
ranpy 10000 0.0003 00001 0.0212 0.0014 0.0620 0.0001 00071
pgnpy 0.0000 10000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
luley 00000 00000 10000 0.0002 0.0000 0.0000 0.0000 0.0041
sadeay 0.0000 0.0000 0.0000 10000 0.0000 0.0000 0.0000 0.0000
‘gdty 20000 0.0000 00000 0.0000 10000 0.0000 0.0000 0.0000
‘adfimy 0.0011 0.0067 0.0014 0.0083 0.0011 10000 0.0004 0.0000
gdfety 0.0000 0.0009 0.0008 00008 0.0000 0.0038 1.0000 0.0009,
gates y 00025 0.0485 0.0000 0.0002 0.0000 0.0000 0.0000 10000
So how to read the above output?
The row are the Response (Y) and the columns are the
predictor series (X).
For example, if you take the value 0.0003 in (row 1, column
2), it refers to the p-value of pgnp_x causing rgnp_y
Whereas, the 0.000 in (row 2, column 1) refers to the p-
value of rgnp_y causing pgnp_x
So, how to interpret the p-values?
4 alicia »
Ifa given p-value is < significance level (0.05), then, the
corresponding X series (column) causes the Y (row).
For example, P-Value of 0.0003 at (row 1, column 2)
represents the p-value of the Grangers Causality test for
penp_x causing rgnp_y , which is less that the
cinmificance level of 0.95
Get 37% Off on Complete Data Science (AI/ML) Pathway! —_ Enroll Now
ntps:[Link]-seresivector-autoregression-examples python! 5‘ars24, 296 Pm Vector Autoreression (VAR) - Comprehensive Guie wih Example in Pyton - Machine Learning Pus
So, you can reject the null hypothesis and conclude
penp_x causes rgnp_y
Looking at the P-Values in the above table, you can pretty
much observe that all the variables (time series) in the
system are interchangeably causing each other.
This makes this system of multi time series a good
candidate for using VAR models to forecast.
Next, let's do the Cointegration test.
7. Cointegration Test
Cointegration test helps to establish the presence of a
statistically significant connection between two or more
time series.
But, what does Cointegration mean?
To understand that, you first need to know what is ‘order of
integration’ (d)
Order of integration(d) is nothing but the number of
differencing required to make a non-stationary time series
stationary.
Now, when you have two or more time series, and there
exists a linear combination of them that has an order of
integration (d) less than that of the individual series, then
the collection of series is said to be cointegrated.
ok?
When two or more time series are cointegrated, it means
they have a long run, statistically significant relationship,
This is the basic premise on which Vector
‘Autoregression(VAR) models is based on. So, it's fairly
common to implement the cointegration test before
ctartine tn hesild VAD madale
Get 37% Off on Complete Data Science (AI/ML) Pathway! —_ Enroll Now
hitos www. [Link]-setiesvector-autoregression-examples-python! sas‘ars24, 295 pm Vector Autoreression (VAR) - Comprehensive Guie wih Example in Pyton - Machine Learning Pus
Soren Johanssen in his paper (1991) devised a procedure
to implement the cointegration test.
It is fairly straightforward to implement in python’s
statsmodels , as you can see below.
from [Link].vector_ar.vecm import coint,
def cointegration_test(df, alpha=0..
"Perform Johanson's Cointegration Test and R
out = coint_johansen(df,-1,5)
d= ('0.90':8, '0.95':1, '0.99':
traces = out.1rd
cvts = [Link][:, d{str(1-alpha)]]
def adjust(val, length= 6): return str(val).1j
# Summary
print (‘Name Test Stat > C(95%) s
for col, trace, cvt in zip([Link], traces,
print(adjust(col), ':: ', adjust(round(tre
cointegration_test (df)
<(eD >»
Results:
Name :: Test Stat > (95%) => Signif
renp 248.0 > 143.6691 => True
penp :: 183.12 > 111.7797 => True
ule 130.01 > 83.9383 => True
gdfco 85.28 > 60.0627 => True
edt rr 55.05 > 40.1749 => True
gdfim 31.59 > 24.2761 => True
adfct 14.06 > 12.3212 => True
Get 37% Off on Complete Data Science (AI/ML) Pathway! —_ Enroll Now
ntps:[Link]-seresivector-autoregression-examples python! 13145‘210724, 235 PME ‘Vector Autoregression (VAR) - Comprehensive Guide wth Examples in Pytnon - Machine Learning Plus
8. Split the Series into Training and
Testing Data
Splitting the dataset into training and test data.
The VAR model will be fitted on df_train and then
used to forecast the next 4 observations. These forecasts
will be compared against the actuals present in test data.
To do the comparisons, we will use multiple forecast
accuracy metrics, as seen later in this article.
nobs = 4
df_train, df_test = df[@:-nobs], df[-nobs:]
# Check size
print(df_train.shape) # (119, 8)
print(df_test.shape) # (4, 8)
9. Check for Stationarity and Make the
Time Series Stationary
Since the VAR model requires the time series you want to
forecast to be stationary, it is customary to check all the
time series in the system for stationarity.
Just to refresh, a stationary time series is one whose
characteristics like mean and variance does not change
cover time.
So, how to test for stationarity?
There is a suite of tests called unit-root tests. The popular
‘ones are’
Get 37% Off on Complete Data Science (AI/ML) Pathway! —_ Enroll Now
ntps:[Link]-seresivector-autoregression-oxamples python! alas12/0124, 298 PM ‘Vector Autoregression (VAR) - Comprehensive Guide wth Examples in Pytnon - Machine Learning Plus
3. Philip-Perron test
Let's use the ADF test for our purpose.
By the way, if a series is found to be non-stationary, you
make it stationary by differencing the series once and
repeat the test again until it becomes stationary.
Since, differencing reduces the length of the series by 1
and since all the time series has to be of the same length,
you need to difference all the series in the system if you
choose to difference at all.
Got it?
Let's implement the ADF Test.
First, we implement a nice function ( adfuller_test() )
that writes out the results of the ADF test for any given
time series and implement this function on each series
one-by-one.
def adfuller_test(series, signif:
+05, nam
Perform ADFuller to test for Stationarity c
*alc')
output = {'test_statistic’:round(r[@], 4), ‘pv
r= adfuller(series, autola;
p_value = output[‘pvalue’]
def adjust(val, length= 6): return str(val).13
# Print Summary
print(#' Augmented Dickey-Fuller Test on "{
print(#' Null Hypothesis: Data has unit root.
print(#' Significance Level = {signif}")
print(#' Test Statistic
{output["test
print(f' No. Lags Chosen
{output [“n_lz
for key,val in r[4].items():
print(#' Critical value {adjust(key)} = {r
Get 37% Off on Complete Data Science (AI/ML) Pathway! —_ Enroll Now
[Link]-setiesvector-autoregression-examples-python! 18145‘210724, 235 PME ‘Vector Autoregression (VAR) - Comprehensive Guide wth Examples in Pytnon - Machine Learning Plus
print (#"
> P-Value = {p_value}. Rejecting
print(#" => Series is Stationary.")
else:
print (F"
=> P-Value = {p_value}. Weak evic
print(#" => Series is Non-Stationary.")
Call the adfuller_test() on each series.
# ADF Test on each column
for name, column in df_train.iteritems():
adfuller_test(column, name=[Link])
print(‘\n")
Results:
Augmented Dickey-Fuller Test on “rgnp"
Null Hypothesis: Data has unit root. Non-Stationz
Significance Level
Test Statistic =
No. Lags Chosen =
Critical value 1%
Critical value 5% =
Critical value 10%
0.05
0.5428
2
-3.488
-2.887
-2.58
=> P-Value = 0.9861. Weak evidence to reject the
=> Series is Non-Stationary.
Augmented Dickey-Fuller Test on “pgnp”
Null Hypothesis: Data has unit root. Non-Statione
Significance Level =
Test Statistic
Get 37% Off on Complete Data Science (AI/ML) Pathway!
ntps:[Link]-seresivector-autoregression-examples python!
0.05
1.1556
Enroll Now
16185‘210724, 235 PME
‘Vector Autoregression (VAR) - Comprehensive Guide wth Examples in Pytnon - Machine Learning Plus
Critical value 5% = -2.887
Critical value 10% = -2.58
=> P-Value = 8.9957. Weak evidence to reject the
=> Series is Non-Stationary.
alc
Augmented Dickey-Fuller Test on
Null Hypothesis: Data has unit root. Non-Statione
Significance Level = 0.05
Test Statistic = 1.2474
No. Lags Chosen =2
Critical value 1% = -3.488
Critical value 5% = -2.887
Critical value 10% = -2.58
P-value
8.9963. Weak evidence to reject the
=> Series is Non-Stationary.
‘Augmented Dickey-Fuller Test on "gdfco”
Null Hypothesis: Data has unit root. Non-Stationz
Significance Level = 0.05
Test Statistic = 1.1954
No. Lags Chosen =3
Critical value 1% = -3.489
Critical value 5% = -2.887
Critical value 10%
-2.58
=> P-Value = @.996. Weak evidence to reject the N
=> Series is Non-Stationary.
Augmented Dickey-Fuller Test on "gdf”
Get 37% Off on Complete Data Science (AI/ML) Pathway! —_ Enroll Now
ntps:[Link]-seresivector-autoregression-examples python! 8s‘210724, 235 PME
‘Vector Autoregression (VAR) - Comprehensive Guide wth Examples in Pytnon - Machine Learning Plus
Test Statistic = 1.676
No. Lags Chosen =7
Critical value 1% = -3.491
Critical value 5% = -2.888
Critical value 10% = -2.581
=> P-Value = @.9981. Weak evidence to reject the
=> Series is Non-Stationary.
Augmented Dickey-Fuller Test on "gdfin”
Null Hypothesis: Data has unit root. Non-Statione
Significance Level = 0.05
Test Statistic = -0.0799
No. Lags Chosen =1
Critical value 1% = -3.488
Critical value 5X = -2.887
Critical value 10% = -2.58
=> P-Value = .9514. Weak evidence to reject the
=> Series is Non-Stationary.
Augmented Dickey-Fuller Test on "gdfcf"
Null Hypothesis: Data has unit root. Non-Stationz
Significance Level = 0.05
Test Statistic = 1.4395
No. Lags Chosen =8
Critical value 1% = -3.491
Critical value 5% = -2.888
Critical value 10% -2.581
=> P-Value = 0.9973. Weak evidence to reject the
=> Series is Non-Stationary.
Get 37% Off on Complete Data Science (AI/ML) Pathway! —_ Enroll Now
ntps:[Link]-seresivector-autoregression-examples python! 8185‘210724, 235 PME ‘Vector Autoregression (VAR) - Comprehensive Guide wth Examples in Pytnon - Machine Learning Plus
Null Hypothesis: Data has unit root. Non-Stationz
Significance Level = 0.05
Test Statistic = -0.3402
No. Lags Chosen =8
Critical value 1% = -3.491
Critical value 5% = -2.888
Critical value 10% = -2.581
=> P-Value = 0.9196. Weak evidence to reject the
=> Series is Non-Stationary.
The ADF test confirms none of the time series is stationary.
Let's difference all of them once and check again.
# Ist difference
df_differenced = df_train.diff().dropna()
Re-run ADF test on each differenced series.
# ADF Test on each column of 1st Differences Date
for name, column in df_differenced.iteritems():
adfuller_test (column, name=
print(*\n')
‘olumn .name)
Augmented Dickey-Fuller Test on “rgnp”
Null Hypothesis: Data has unit root. Non-Statione
Significance Level 0.05
Test Statistic -5.3448
No. Lags Chosen 1
Critical value 1% = -3.488
Critical value 5%
-2.887
Get 37% Off on Complete Data Science (AI/ML) Pathway! —_ Enroll Now
ntps:[Link]-seresivector-autoregression-examples python! 19145‘210724, 235 PME
‘Vector Autoregression (VAR) - Comprehensive Guide wth Examples in Pytnon - Machine Learning Plus
=> P-Value = 0.8. Rejecting Null Hypothesis.
=> Series is Stationary.
Augmented Dickey-Fuller Test on "pgnp"
Null Hypothesis: Data has unit root. Non-Statione
Significance Level = 0.05
Test Statistic = -1,8282
No. Lags Chosen =e
Critical value 1X = -3.488
Critical value 5% = -2.887
Critical value 10% = -2.58
P-Value = 0.3666. Weak evidence to reject the
=> Series is Non-Stationary.
Augmented Dickey-Fuller Test on “ulc”
Null Hypothesis: Data has unit root. Non-Statione
Significance Level = 0.05
Test Statistic = -3.4658
No. Lags Chosen 1
Critical value 1% = -3.488
Critical value 5% -2.887
Critical value 10% -2.58
=> P-Value = 0.0089. Rejecting Null Hypothesis.
=> Series is stationary.
Augmented Dickey-Fuller Test on "gdfco"
Null Hypothesis: Data has unit root. Non-Stationz
Significance Level = 0.05
Get 37% Off on Complete Data Science (AI/ML) Pathway! —_ Enroll Now
ntps:[Link]-seresivector-autoregression-oxamples python! 20185‘210724, 235 PME
‘Vector Autoregression (VAR) - Comprehensive Guide wth Examples in Pytnon - Machine Learning Plus
Critical value 1% = -3.489
Critical value 5% = -2.887
Critical value 10% = = -2.58
=> P-Value = 0.5637. Weak evidence to reject the
Series is Non-Stationary.
Augmented Dickey-Fuller Test on "gdf"
Null Hypothesis: Data has unit root. Non-Stationz
Significance Level = 0.05
Test Statistic = -1.1289
No. Lags Chosen =2
Critical value 1X = -3.489
Critical value 5% = -2.887
Critical value 10% = -2.58
=> P-Value = 0.7034. Weak evidence to reject the
=> Series is Non-Stationary.
Augmented Dickey-Fuller Test on “gdfin”
Null Hypothesis: Data has unit root. Non-Statione
Significance Level = 0.05
Test Statistic -4.1256
No. Lags Chosen e
Critical value 1% = -3.488
Critical value 5X = -2.887
Critical value 10% == -2.58
=> P-Value = 0.0009. Rejecting Null Hypothesis.
=> Series is Stationary.
Augmented Dickey-Fuller Test on "gdfcf"
Get 37% Off on Complete Data Science (AI/ML) Pathway! —_ Enroll Now
ntps:[Link]-seresivector-autoregression-oxamples python! 245,‘210724, 235 PME ‘Vector Autoregression (VAR) - Comprehensive Guide wth Examples in Pytnon - Machine Learning Plus
Significance Level = 0.05
Test Statistic = -2.0545
No. Lags Chosen =7
Critical value 1% = -3.491
Critical value 5% = -2.888
Critical value 10% © = -2.581
=> P-Value = 0.2632. Weak evidence to reject the
=> Series is Non-Stationary.
Augmented Dickey-Fuller Test on "gdfce"
Null Hypothesis: Data has unit root. Non-Stationz
Significance Level = 0.05
Test Statistic = -3,1543
No. Lags Chosen 7
Critical value 1X = -3.491
Critical value 5% = -2.888
Critical value 10% = -2.581
=> P-Value = 0.0228. Rejecting Null Hypothesis.
=> Series is Stationary.
After the first difference, Real Wages (Manufacturing) is still
not stationary. It's critical value is between 5% and 10%
significance level.
All of the series in the VAR model should have the same
number of observations.
So, we are left with one of two choices.
That is, either proceed with 1st differenced series or
difference all the series one more time.
# Second Differencing
AE AiEfananrad — AE Aikfamancad ALEEL\ dnannal\
Get 37% Off on Complete Data Science (AI/ML) Pathway! —_ Enroll Now
ntps:[Link]-seresivector-autoregression-oxamples python! 225‘210724, 235 PME ‘Vector Autoregression (VAR) - Comprehensive Guide with Examples in Pytnon - Machine Learning Plus
Re-run ADF test again on each second differenced series.
# ADF Test on each column of 2nd Differences Date
for name, column in df_differenced. iteritems():
adfuller_test (column, name=[Link])
print(‘\n")
Augmented Dickey-Fuller Test on “rgnp”
Null Hypothesis: Data has unit root. Non-Statione
Significance Level = 0.05
Test Statistic = -9.0123
No. Lags Chosen 2
Critical value 1% = -3.489
Critical value 5% = -2.887
Critical value 10% = -2.58
=> P-Value = @.@. Rejecting Null Hypothesis.
Series is Stationary.
Augmented Dickey-Fuller Test on
penp"
Null Hypothesis: Data has unit root. Non-Stationz
Significance Level = 0.05
Test Statistic -10.9813
No. Lags Chosen =e
Critical value 1% -3.488
Critical value 5% = -2.887
critical value 10% -2.58
=> P-Value = 0.0. Rejecting Null Hypothesis.
=> Series is Stationary.
Get 37% Off on Complete Data Science (AI/ML) Pathway! —_ Enroll Now
ntps:[Link]-seresivector-autoregression-oxamples python! 235‘210724, 235 PME
‘Vector Autoregression (VAR) - Comprehensive Guide wth Examples in Pytnon - Machine Learning Plus
Augmented Dickey-Fuller Test on “ulc”
Null Hypothesis: Data has unit root. Non-Statione
Significance Level
Test Statistic =
No. Lags Chosen =
Critical value 1% =
Critical value 5x =
Critical value 10%
0.05
-8.769
2
-3.489
-2.887
-2.58
=> P-Value = @.0. Rejecting Null Hypothesis.
=> Series is Stationary.
Augmented Dickey-Fuller Test on "gdfco"
Null Hypothesis: Data has unit root. Non-Stationz
Significance Level =
Test Statistic
No. Lags Chosen :
Critical value 1%
Critical value 5%
Critical value 10%
=> Series is Stationary.
0.05
-7.9102
3
-3.49
-2.887
-2.581
P-Value = 0.0, Rejecting Null Hypothesis.
Augmented Dickey-Fuller Test on "gdf”
Null Hypothesis: Data has unit root. Non-Statione
Significance Level =
Test Statistic
No. Lags Chosen =
Critical value 1% =
Critical value 5%
Get 37% Off on Complete Data Science (AI/ML) Pathway!
ntps:[Link]-seresivector-autoregression-oxamples python!
0.05
-10.0351
1
-3.489
-2.887
Enroll Now
2045,‘210724, 235 PME
‘Vector Autoregression (VAR) - Comprehensive Guide wth Examples in Pytnon Machine Learning Plus
=> Series is Stationary.
Augmented Dickey-Fuller Test on "gdfin"
Null Hypothesis: Data has unit root. Non-Statione
Significance Level = 0.05
Test Statistic -9.4059
No. Lags Chosen 1
Critical value 1X = -3.489
Critical value 5% = = -2.887
Critical value 10% = = -2.58
=> P-Value = 0.0. Rejecting Null Hypothesis.
Series is Stationary.
Augmented Dickey-Fuller Test on "gdfcf"
Null Hypothesis: Data has unit root. Non-Stationz
Significance Level = 0.05
Test Statistic = 6.922
No. Lags Chosen 5
Critical value 1% -3.491
Critical value 5% = -2.888
critical value 10% -2.581
=> P-Value = 8.0. Rejecting Null Hypothesis.
=> Series is Stationary.
Augmented Dickey-Fuller Test on "gdfce”
Null Hypothesis: Data has unit root. Non-Statione
Significance Level = 0.05
Test Statistic -5.1732
Get 37% Off on Complete Data Science (AI/ML) Pathway! —_ Enroll Now
ntps:[Link]-seresivector-autoregression-oxamples python! 2585‘210724, 235 PME
ntps:[Link]-seresivector-autoregression-oxamples python!
‘Vector Autoregression (VAR) - Comprehensive Guide wth Examples in Pytnon - Machine Learning Plus
Critical value 5% = -2.889
Critical value 10% -2.581
=> P-Value = @.0. Rejecting Null Hypothesis.
=> Series is Stationary.
All the series are now stationary.
Let's prepare the training and test datasets.
10. How to Select the Order (P) of VAR
model
To select the right order of the VAR model, we iteratively
fit increasing orders of VAR model and pick the order that
gives a model with least AIC.
Though the usual practice is to look at the AIC, you can
also check other best fit comparison estimates of BIC ,
FPE and HQIC .
model = VAR(d#_differenced)
for i in [1,2,3,4,5,6,7,8,9]:
result = model. fit (i)
" 4)
» [Link])
print(‘Lag Order =
print (‘AIC
print(‘BIC : ', [Link])
print(‘FPE : ', [Link])
print(‘HQIC: ', [Link], ‘\n')
Results:
1
AIC : -1.3679402315450664
Lag Order
BIC : 0.3411847146588838
Get 37% Off on Complete Data Science (AI/ML) Pathway! —_ Enroll Now
285‘210724, 235 PME
HQIC: -¢.6741331335699554
Lag Order = 2
AIC : -1.621237394447824
BIC : 1.6249432095295848
FPE : 0.211349437137139
HQIC: -0.3036288826795923
Lag Order = 3
AIC : -1.7658008387012791
BIC : 3.0345473163767833
FPE : .18125103746164364
Lag
AIC :
BIC
FRE :
HQIC:
Lag
AIC :
BIC :
FPE :
Hor
Lag
AIC :
BIC :
FPE :
HOI
Lag
AIC :
8.18239143783963296
Order = 4
-2. 0735164470318
4,3712151376540875
8.15556966521481097
2.5849359332771069
Order = 5
-1.9619535608363954
5.9993645622420955
8.18692794389114886
1. 2682633117833
Order = 6
-2.3303386524829053,
7, 2384526890885805
8.16380374017443664
1.5514371669548073
Order = 7
-2.592331352347129
Get 37% Off on Complete Data Science (AI/ML) Pathway!
ntps:[Link]-seresivector-autoregression-examples python!
‘Vector Autoregression (VAR) - Comprehensive Guide wth Examples in Pytnon - Machine Learning Plus
Enroll Now
an,‘210724, 235 PME ‘Vector Autoregression (VAR) - Comprehensive Guide wth Examples in Pytnon - Machine Learning Plus
HQIC: 1.9483069621146551
Lag Order = 8
AIC
BIC : 9.52219581032303
-3.317261976458205
FPE : @.15573163248209088
1,8896071386220985
Lag Order = 9
AIC : -4,804763125958631
BIC : 9.698613139231597
FPE : 0.08421466682671915
: 1,0758291640834052
In the above output, the AIC drops to lowest at lag 4, then
increases at lag 5 and then continuously drops further.
Let's go with the lag 4 model.
An alternate method to choose the order(p) of the VAR
models is to use the model.select_order(maxlags)
method.
The selected order(p) is the order that gives the lowest
‘AIC’, ‘BIC, ‘FPE’ and ‘HQIC’ scores.
x = model. select_order(maxlags=12)
x. summary()
Get 37% Off on Complete Data Science (AI/ML) Pathway! —_ Enroll Now
ntps:[Link]-seresivector-autoregression-examples python! 205‘270724, 2:5 PME ‘Vector Autoregression (VAR) - Comprehensive Guide wth Examples in Pytnon - Machine Learning Plus
VAR Order Selection (* highlights the minimums)
AIC BIC FPE HQIC
0 -0.07898 0.1232 0.9241 0.002961
1 -0.5721 1.248 0.5662 0.1653
2 -08256 2.612 0.4482 0.5674
3 -1.007 4.048 0.3937 1.042
4 1.255 5.418 0.3399 1.449
5 -1.230 7.060 0.4147 2129
6 -1.739 8.169 0.3286 2.276
7 -2.142 9.384 0.3340 2.528
8 -2.964 10.18 0.2744 2.362
9 -4.562 10.20 0.1413 1.420
10-6541 9838 0.08188 0.09578
1 =--8.923. 9.073 0.08023 -1.631
12 -21.28" -1.667* 3.604e-05" -13.33*
According to FPE and HQIC, the optimal lag is observed at
a lag order of 3.
|, however, don't have an explanation for why the observed
AIC and BIC values differ when using [Link] versus
‘as seen using model.select_order()
Since the explicitly computed AIC is the lowest at lag 4, |
choose the selected order as 4.
11. Train the VAR Model of Selected
Order(p)
Get 37% Off on Complete Data Science (AI/ML) Pathway! —_ Enroll Now
ntps:[Link]-seresivector-autoregression-examples python! 2985‘210724, 235 PME ‘Vector Autoregression (VAR) - Comprehensive Guide wth Examples in Pytnon - Machine Learning Plus
model_fitted
Results:
= model. fit(4)
model_fitted. summary()
Summary of Regression
Model:
Method:
Date:
Time
sat, 18,
No. of Equations:
Nobs:
Log likelihood:
AIC:
Results for equation rgnp
-2.00074
Results
VAR
ous.
May, 2019
11:35:15
8.0000@ BIC:
113.008 © HQIC:
-905.679 FE:
Det (Omega_mle
const
Li. renp
[Link]
[Link]
Li. edFco
[Link]
[Link]
Li edtet
[Link]
[Link]
[Link]
[Link]
[Link]
coefficient
2.430021
-0.750066
0.095621
6.213996
-7.414768
-24, 864063
1.082913
16. 327252
@.910522
-0.568178
1.156201
-11.157111
3.012518
Get 37% Off on Complete Data Science (AI/ML) Pathway!
ntps:[Link]-seresivector-autoregression-examples python!
std. error
2.677505
@.159023
4.938865
4.637452
10.184884
20.071245
4.309034
5.892522
2.476361
@.163971
4.931931
5.381825
12.928317
Enroll Now
0145‘210724, 235 PME ‘Vector Autoregression (VAR) - Comprehensive Guide wth Examples in Pytnon - Machine Learning Plus
L2. gdfim ~4.438115 4.410654
[Link] 13.468228 7.279772
[Link] 5.130419 2.805310
[Link] -0.514985 0.152724
[Link] -11.483607 5.392037
[Link] -14.195308 5.188718
[Link] -16.154967 13.105508
[Link] -15.438858 2.610822
[Link] -6.405290 4.292798
[Link] 9.217402 7.081652
[Link] 5.279941 2.833925,
[Link] -0.166878 0.138786
[Link] 5.329900 5.795837
[Link] 4.834548 5.259608
[Link] 10.841602 10.526530
[Link] -17.651510 18.746673
L4. gd#im -1,971233 4.029415
[Link] 0.617824 5.842684
[Link] -2.977187 2.594251,
Results for equation pgnp
coefficient std. error
const 0.094556 0.063491
[Link] 0.004231 0.003771
[Link] @.082204 @.117114
[Link] -0.097769 @.109966
(... TRUNCATED because of long output...)
(+. TRUNCATED because of long output...)
(... TRUNCATED because of long output...)
Get 37% Off on Complete Data Science (AI/ML) Pathway! —_ Enroll Now
ntps:[Link]-seresivector-autoregression-oxamples python! 1185‘270724, 2:5 PME ‘Vector Autoregression (VAR) - Comprehensive Guide wth Examples in Pytnon - Machine Learning Plus
renp —-1.0000@@ 0.248342 -0.668492 -0.160133 -¢
penp —-@. 248342 1.000000 -0.148392 -0.167766 -¢
ule --@.668492 -@.148392 1.000000 0.268127 ¢
gdfco -0.160133 -0.167766 0.268127 1.000000 €
gdf —--0.047777 -0.134896 0.327761 0.33563 1
gdfim —@.084925 0.007830 0.171497 0.232997 €
gdfcf 0.099962 -0.169435 0.135410 -0.035042 €
gdfce 0.205557 0.032134 -0.026037 0.184834 &
12. Check for Serial Correlation of
Residuals (Errors) using Durbin Watson
Statistic
Serial correlation of residuals is used to check if there is
any leftover pattern in the residuals (errors).
What does this mean to us?
If there is any correlation left in the residuals, then, there is
some pattern in the time series that is still left to be
explained by the model. In that case, the typical course of
action is to either increase the order of the model or
induce more predictors into the system or look for a
different algorithm to model the time series.
So, checking for serial correlation is to ensure that the
model is sufficiently able to explain the variances and
patterns in the time series.
Alright, coming back to topic.
A common way of checking for serial correlation of errors
can be measured using the Durbin Watson's Statistic.
Get 37% Off on Complete Data Science (AI/ML) Pathway! —_ Enroll Now
ntps:[Link]-seresivector-autoregression-oxamples python! 245‘210724, 235 PME ‘Vector Autoregression (VAR) - Comprehensive Guide wth Examples in Pytnon - Machine Learning Plus
The value of this statistic can vary between 0 and 4. The
closer ii
to the value 2, then there is no significant s
correlation. The closer to 0, there is a positive serial
correlation, and the closer it is to 4 implies negative serial
correlation.
from [Link] import durbin_w:
out = durbin_watson(model_fitted.resid)
for col, val in zip(d¥.columns, out):
print(adjust(col), ':', round(val, 2))
laa »
Results:
rgnp : 2.09
penp : 2.02
ule: 2.17
gdfco : 2.05
edf —: 2.25
gdfim : 1.99
gdfcf : 2.2
gdfce : 2.17
The serial correlation seems quite alright. Let's proceed
with the forecast.
13. How to Forecast VAR model using
statsmodels
Get 37% Off on Complete Data Science (AI/ML) Pathway! —_ Enroll Now
ntps:[Link]-seresivector-autoregression-oxamples python! 3145‘ars24, 295 pm Vector Autoreression (VAR) - Comprehensive Guie wih Example in Pyton - Machine Learning Pus
In order to forecast, the VAR model expects up to the lag
order number of observations from the past data.
This is because, the terms in the VAR model are essentially
the lags of the various time series in the dataset, so you
need to provide it as many of the previous values as
indicated by the lag order used by the model.
# Get the Lag order
lag_order = model_fitted.k_ar
print(lag order) #> 4
# Input data for forecasting
forecast_input = df_differenced.values[-lag_order:
forecast_input
‘ee
array([[ 13.5, 0.1, 1.4, @.1, @.1, -0.1,
[-23.6, 0.2, -2., -0.5, -@.1, -0.2,
[-3.3, 0.1, 3.1, 0.5, 0.3, 0.4,
[-3.9, 0.2, -2.1, -0.4, 0.2, -1.5,
ced >
Let's forecast.
# Forecast
fc = model_fitted. forecast(y=forecast_input, steps
df_forecast = [Link](fc, index-df. index[ -not
df_forecast
eD »
Get 37% Off on Complete Data Science (AI/ML) Pathway! —_ Enroll Now
ntps:[Link]-seresivector-autoregression-oxamples python! 44s‘210724, 235 PME ‘Vector Autoregression (VAR) - Comprehensive Guide wth Examples in Pytnon - Machine Learning Plus
rm.24 pom.2 we.2d gien.2d 24 git. 2¢ getdate 24
The forecasts are generated but it is on the scale of the
training data used by the model. So, to bring it back up to
its original scale, you need to de-difference it as many
times you had differenced the original input data.
In this case it is two times.
14. Invert the transformation to get the
real forecast
def invert_transformation(df_train, df_forecast,
Revert back the differencing to get the for
df_fc = df_forecast.copy()
columns = df_train.columns
for col in columns:
# ROLL back 2nd Diff
if second_diff:
df_fc[str(col)+'_1d"] = (df_train{col]
# ROLL back Ist Diff
df_fc[str(col)+'_forecast'] = df_train[col
return df_fc
df_results = invert_transformation(train, df_fore
df_results.loc[:, ['rgnp_forecast', 'pgnp_forecast
“gdf_forecast’, ‘gdfim_forecast
Get 37% Off on Complete Data Science (AI/ML) Pathway! —_ Enroll Now
ntps:[Link]-seresivector-autoregression-oxamples python! 35145‘210724, 235 PME ‘Vector Autoregression (VAR) - Comprehensive Guide with Examples in Pytnon Machine Learning Plus
The forecasts are back to the original scale. Let's plot the
forecasts against the actuals from test data,
15. Plot of Forecast vs Actuals
fig, axes = [Link](nrows=int(1en(df. column:
for i, (col,ax) in enumerate(zip([Link], axes.
df_results[col+'_forecast"].plot(legend=True,
df_test[col][-nobs:].plot(legend=True, ax=ax);
ax.set_title(col + ": Forecast vs Actuals")
[Link].set_ticks_position(‘none’)
[Link].set_ticks_position( ‘none’ )
ax. spines["top"].set_alpha(@)
ax. tick_params(labelsize=6)
plt.tight_layout (
Get 37% Off on Complete Data Science (AI/ML) Pathway! —_ Enroll Now
ntps:[Link]-seresivector-autoregression-oxamples python! 36145‘210724, 235 PME ‘Vector Autoregression (VAR) - Comprehensive Guide wth Examples in Pytnon - Machine Learning Plus
Forecast vs Actuals comparison of VAR model
16. Evaluate the Forecasts
To evaluate the forecasts, let’s compute a comprehensive
set of metrics, namely, the MAPE, ME, MAE, MPE, RMSE,
corr and minmax.
from [Link] import acf
def forecast_accuracy(forecast, actual):
mape = [Link]([Link](forecast - actual)/[Link]
me = [Link](forecast - actual)
mae = [Link]([Link](forecast - actual))
mpe = [Link]((forecast - actual)/actual)
rmse = [Link]((forecast - actual)**2)**.5
se ee
corr = [Link] (forecast, actual) [0,1]
mins = [Link]([Link]([ forecast : None],
Get 37% Off on Complete Data Science (AI/ML) Pathway! —_ Enroll Now
ntps:[Link]-seresivector-autoregression-examples python! 3718s‘2/024, 235 Pe ‘Vector Autoregression (VAR) - Comprehensive Guide with Examples in Python - Machine Learning Plus
maxs = [Link]([Link]([forecast[ : None],
actual[:,None]]), ax
minmax = 1 - [Link](mins/maxs) #
return({‘mape":
‘me':me, ‘mae’: mae,
i mpe, ‘rmse':rmse, ‘corr’ :corr,
print(‘Forecast Accuracy of: rgnp")
accuracy_prod = forecast_accuracy(df_results|'rgnr
for k, v in accuracy_prod.items():
print(adjust(k), ‘: ', round(v,4))
print(‘\nForecast Accuracy of: pgnp')
accuracy_prod = forecast_accuracy(df_results['pgnr
for k, v in accuracy_prod.items():
print(adjust(k), ‘: ', round(v,4))
print('\nForecast Accuracy of: ulc')
accuracy_prod = forecast_accuracy(df_results[‘ulc_
for k, v in accuracy_prod.items():
print(adjust(k), ': ', round(v,4))
print('\nForecast Accuracy of: gdfco")
accuracy_prod = forecast_accuracy(df_results| ‘gdfc
for k, v in accuracy_prod.items():
print(adjust(k), ': ', round(v,4))
print(‘\nForecast Accuracy of: gdf’)
accuracy_prod = forecast_accuracy(d#_results['gdf_
for k, v in accuracy_prod.items():
print(adjust(k), ': ', round(v,4))
print(‘\nForecast Accuracy of: gdfim')
accuracy_prod = forecast_accuracy(df_results['gdfi
for k, v in accuracy_prod.items():
Get 37% Off on Complete Data Science (AI/ML) Pathway! —_ Enroll Now
hitos www. [Link]-setiesvector-autoregression-examples-python! 3814512/024, 235 Pet ‘Vector Autoregression (VAR) - Comprehensive Guide with Examples in Python - Machine Learning Plus
print("\nForecast Accuracy of: gdfcf*)
accuracy_prod = forecast_accuracy(df_results|['gdfc
for k, v in accuracy_prod.items():
print(adjust(k), ‘: ', round(v,4))
print(‘\nForecast Accuracy of: gdfce')
accuracy_prod = forecast_accuracy(d#_results[‘gdfc
for k, v in accuracy_prod.items():
print(adjust(k), ‘: ', round(v,4))
Forecast Accuracy of: rgnp
mape : 0.0192
me 79.1031
mae =: 79,1031
me : 0.0192
mse: 82.0245
corr: 0.9849
minmax : 0.0188
Forecast Accuracy of: penp
mape : 0.0005
me 2.0432
mae: 2.0432
mpe 0.0005
rmse : 2.146
corr: 1.0
minmax : 2.0005
Forecast Accuracy of: ulc
mape : 0.0081
me: 1.4987
mae: 1.4947
mpe : -0.0081
Get 37% Off on Complete Data Science (AI/ML) Pathway! —_ Enroll Now
ntps:[Link]-seresivector-autoregression-oxamples python! 39145‘210724, 235 PME
corr:
minmax :
Forecast
mape
me
mae
mpe
rmse
corr
minmax :
Forecast
mape
me
mae
mpe
rmse
corr
minmax :
Forecast
mape
me
mae
mpe
rmse
corr
minmax.:
Forecast
mape:
me
mae
Get 37% Off on Complete Data Science (AI/ML) Pathway!
ntps:[Link]-seresivector-autoregression-oxamples python!
‘Vector Autoregression (VAR) - Comprehensive Guide wth Examples in Pytnon - Machine Learning Plus
0.963
2.0081
Accuracy of: gdfco
0.0033
0.0007
0.4384
0.0
0.5169
0.9407
0.0032
Accuracy of: gdf
0.0023,
0.2554
0.29
0.002
0.3392
0.9905
0.0022
Accuracy of: gdfim
0.0097
-0.4166
1.06
-0.0038
1.0826
0.807
@.0096
Accuracy of: gdfcf
0.0036
-0.0271
0.4604
Enroll Now
4018512/0124, 298 PM ‘Vector Autoregression (VAR) - Comprehensive Guide wth Examples in Pytnon - Machine Learning Plus
corr: 0.9713
minmax : 0.0036
Forecast Accuracy of: gdfce
mape : 0.0177
me: 0.2577
mae: 1.72
mpe 0.0031
rmse : 2.034
corr: 0.764
minmax : 0.0175
17. Conclusion
In this article we covered VAR from scratch beginning from
the intuition behind it, interpreting the formula, causality
tests, finding the optimal order of the VAR model,
preparing the data for forecasting, build the model,
checking for serial autocorrelation, inverting the transform
to get the actual forecasts, plotting the results and
computing the accuracy metrics.
Hope you enjoyed reading this as much as I did writing it. |
will see you in the next one.
More Articles
Get 37% Off on Complete Data Science (AI/ML) Pathway! —_ Enroll Now
[Link]-seriesvector-autoregression-examples-python! 45,‘210724, 235 PME ‘Vector Autoregression (VAR) - Comprehensive Guide wth Examples in Python - Machine Learning Plus
Python
Granger Causality Tes!
‘Aug 30, 2022
Granger Causality Test
Aug 29, 2022
ARIMA Model - Complete Guide to
ime Series
Forecasting in Python
Aug 22, 2021
Augmented Dickey Fuller Test (ADF Test) ~ Must
Read Guide
Nov 02, 2019
Get 37% Off on Complete Data Science (AI/ML) Pathway! —_ Enroll Now
ntps:[Link]-seresivector-autoregression-oxamples python! 4245,‘210724, 235 PME ‘Vector Autoregression (VAR) - Comprehensive Guide with Examples in Pytnon - Machine Learning Plus
KPSS Test for Stationarity
Vector Autoregression (VAR) - Comprehensive
Guide with Examples in Python
Julo7, 2019
Complete Introduction to Linear Regression in R
Selva Prabhakaran , 12/03/2017 ,7 Comments
Read More »
Get 37% Off on Complete Data Science (AI/ML) Pathway! —_ Enroll Now
ntps:[Link]-seresivector-autoregression-examples python! 435‘210724, 235 PME ‘Vector Autoregression (VAR) - Comprehensive Guide wth Examples in Pytnon - Machine Learning Plus
How to implement common stati:
tests and find the p value?
Selva Prabhakaran , 13/03/2017 , 3 Comments
Read More »
Logistic Regression - A Complete Tutorial With
Examples in R
Selva Prabhakaran , 13/09/2017 , 24 Comments
Read More »
Connect with us
Get our new articles, videos and live sessions info.
Join 54,000+ fine folks. Stay as long as you'd like. Unsubscribe anytime.
‘What's your e-mail?"
We Accept
ve Pl OE @ 4
° oe ' *
Empowering you to master Data Science, Al and Machine Learning.
About Us
Terms of Use
Get 37% Off on Complete Data Science (AI/ML) Pathway! —_ Enroll Now
ntps:[Link]-seresivector-autoregression-oxamples python! 4085,‘210724, 235 PME ‘Vector Autoregression (VAR) - Comprehensive Guide wth Examples in Pytnon - Machine Learning Plus
Refund Policy
1. The Complete Roadmap
2. Programming for DS
3. ML Algorithms
4, ML Ops
[Link] Learning
6. Time Series
7. DS Industry Projects
8, Supplementary Courses
AU Courses
Complete Univ Access
Industry DS Projects
Youtube
List of Blogs
30 Day DS Interviews Prep
Tasklist for DS Projects
Jobs
Drop a Query
FAQ's
Contact Us
Testimonials
‘Subscribe to newsletter
Copyright 2024 | All Rights Reserved by machinelearningplus
* Privacy Policy
* Terms of service
* Terms & Conditions
Get 37% Off on Complete Data Science (AI/ML) Pathway! —_ Enroll Now
ntps:[Link]-seresivector-autoregression-oxamples python! 4585