Mathematica Stack Exchange is a question and answer site for users of Mathematica. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

To estimate 1-dimensional VAR process (which is AR process) you can easily use functions EstimatedProcess or FindProcessParameters like this:

sample = RandomFunction[ARProcess[{.2,-.4},.1], {1,300}];

EstimatedProcess[sample, ARProcess[{a,b},v]]
FindProcessParameters[sample, ARProcess[{a,b},v]]

Now lets say we have sample

alpha = {{.2,.1}, {-.3,.2}};
sigma = {{1.0,0}, {0,0.3}};
sample = RandomFunction[ARProcess[{alpha},sigma], {1,100}]

which is based on two dimensional VAR process (I took this definition from ARProcess documentation).

Then neither of this two ways does work:

EstimatedProcess[sample,ARProcess[{{{a1,a2}, {a3,a4}}}, {{v1,v2}, {v3,v4}}]]

FindProcessParameters[sample,ARProcess[{{{a1,a2}, {a3,a4}}}, {{v1,v2}, {v3,v4}}]]

Is it possible to estimate vector autoregressive process in Mathematica?

share|improve this question
The error message "Estimation is not currently supported for the parameters in process ARProcess[{{{a1,a2},{a3,a4}}},{{v1,v2},{v3,v4}}]" says no. So, other than programming it yourself it looks like it's not possible. – Sjoerd C. de Vries Jan 30 '14 at 21:54
Thanks for asking, I've long wanted to ask the same question here. It seems that in time series and macroeconomic modeling mma lags far behind packages such as free IRIS Toolbox for Matlab or EViews. – iav Apr 10 '14 at 14:57
Look at this demo: If you download the source code you'll easily find functions for OLS and Yule-Walker estimation procedures. – iav Apr 10 '14 at 17:21
Thanks for the answer and especially thanks for recommending my demo. :) At first, I was using EViews as well but its not that difficult to apply those methods using such a friendly language as Wolfram language. – matt525252 Apr 11 '14 at 19:04
@iav, thank you. I focused only on VAR models. Every function I developed should be included in demo. I basically made this demo as a tool because of some calculations in my masters thesis. But maybe in the future I will have time to create some other functions for estimating different types of models. And what do you mean by mma? – matt525252 Apr 28 '14 at 12:22

As was mentioned in the comments above as of yet Mathematica is not able to estimate VAR processes.

So I've tried and implemented VAR estimation function. Actually I've directly translated Cesa-Bianchi's MATLAB code [1].

My code is available here:

Here is a simple example:

S = Import[FileNameJoin[{$UserBaseDirectory, "Applications", "Economica", 
 "Kernel", "TimeSeries", "VAR", "BQ_Data.xls"}], {"Data", 1}];
data = S[[3 ;;, {2, 3}]];

Then fit VAR:

 VARout = VARModelFit[data, 8];

VARModelFit returns association with a number of results. Matrix of coefficient estimates is Ft:


Other properties are fit residuals and variance-covariance matrix. Generally all the names are similar to those used by [1].

  1. Ambrogio Cesa-Bianchi, 2014. "VAR Toolbox",".
share|improve this answer

Let's estimate the parameters for the following model.

sample = 
    ARProcess[{{{.2, -.4}, {-.2, 0}}}, {{.1, -0.05}, {-0.05, .15}}], 
    {1, 1000}]

Next, use the function EstimatedProcess to perform the estimation:

α = {{α1, α2}, {α3, α4}};
Σ = {{σ11, σ12}, {σ21, σ22}};
EstimatedProcess[sample, ARProcess[{α}, Σ]] 

Note that when you pass ARProcess to EstimatedProcess the matrix α should be under curly brackets {α}.

If you want to run a Restricted VAR, you only need to include the restricted parameters in the α matrix. For example, if you want to set α2 = 0.5 and α3 = 0.03`, you can run

α = {{α1, 0.5}, {0.03, α4}};
Σ = {{σ11, σ12}, {σ21, σ22}};
EstimatedProcess[sample, ARProcess[{α}, Σ]] 
share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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