Main Content

estimate

Fit vector autoregression (VAR) model to data

Description

example

EstMdl = estimate(Mdl,Y) returns the fully specified, estimated VAR(p) model EstMdl. This model stores the estimated parameter values resulting from fitting the VAR(p) model Mdl to all variables (columns) of the matrix of observed multivariate response series Y using maximum likelihood.

example

[EstMdl,EstSE,logL,E] = estimate(Mdl,Y) returns the estimated, asymptotic standard errors of the estimated parameters EstSE, optimized loglikelihood objective function value logL, and the multivariate residuals E.

example

EstMdl = estimate(Mdl,Tbl1) fits the VAR(p) model Mdl to variables in the input table or timetable Tbl1, which contains time series data, and returns the fully specified, estimated VAR(p) model EstMdl. estimate selects the variables in Mdl.SeriesNames or all variables in Tbl1. To select different variables in Tbl1 to fit the model to, use the ResponseVariables name-value argument. (since R2022b)

example

[EstMdl,EstSE,logL,Tbl2] = estimate(Mdl,Tbl1) returns the estimated, asymptotic standard errors of the estimated parameters EstSE, the optimized loglikelihood objective function value logL, and the table or timetable Tbl2 of all variables in Tbl1 and residuals corresponding to the response variables to which the model is fit (ResponseVariables). (since R2022b)

example

[___] = estimate(___,Name=Value) specifies options using one or more name-value arguments in addition to any of the input argument combinations in previous syntaxes. estimate returns the output argument combination for the corresponding input arguments. For example, estimate(Mdl,Y,Y0=PS,X=Exo) fits the VAR(p) model Mdl to the matrix of response data Y, and specifies the matrix of presample response data PS and the matrix of exogenous predictor data Exo.

Supply all input data using the same data type. Specifically:

  • If you specify the numeric matrix Y, optional data sets must be numeric arrays and you must use the appropriate name-value argument. For example, to specify a presample, set the Y0 name-value argument to a numeric matrix of presample data.

  • If you specify the table or timetable Tbl1, optional data sets must be tables or timetables, respectively, and you must use the appropriate name-value argument. For example, to specify a presample, set the Presample name-value argument to a table or timetable of presample data.

Examples

collapse all

Fit a VAR(4) model to the consumer price index (CPI) and unemployment rate series. Supply the response series as a numeric matrix.

Load the Data_USEconModel data set.

load Data_USEconModel

Plot the two series on separate plots.

figure;
plot(DataTimeTable.Time,DataTimeTable.CPIAUCSL);
title('Consumer Price Index')
ylabel('Index')
xlabel('Date')

Figure contains an axes object. The axes object with title Consumer Price Index, xlabel Date, ylabel Index contains an object of type line.

figure;
plot(DataTimeTable.Time,DataTimeTable.UNRATE);
title('Unemployment Rate');
ylabel('Percent');
xlabel('Date');

Figure contains an axes object. The axes object with title Unemployment Rate, xlabel Date, ylabel Percent contains an object of type line.

Stabilize the CPI by converting it to a series of growth rates. Synchronize the two series by removing the first observation from the unemployment rate series.

rcpi = price2ret(DataTimeTable.CPIAUCSL);
unrate = DataTimeTable.UNRATE(2:end);

Create a default VAR(4) model by using the shorthand syntax.

Mdl = varm(2,4)
Mdl = 
  varm with properties:

     Description: "2-Dimensional VAR(4) Model"
     SeriesNames: "Y1"  "Y2" 
       NumSeries: 2
               P: 4
        Constant: [2×1 vector of NaNs]
              AR: {2×2 matrices of NaNs} at lags [1 2 3 ... and 1 more]
           Trend: [2×1 vector of zeros]
            Beta: [2×0 matrix]
      Covariance: [2×2 matrix of NaNs]

Mdl is a varm model object. All properties containing NaN values correspond to parameters to be estimated given data.

Estimate the model using the entire data set.

EstMdl = estimate(Mdl,[rcpi unrate])
EstMdl = 
  varm with properties:

     Description: "AR-Stationary 2-Dimensional VAR(4) Model"
     SeriesNames: "Y1"  "Y2" 
       NumSeries: 2
               P: 4
        Constant: [0.00171639 0.316255]'
              AR: {2×2 matrices} at lags [1 2 3 ... and 1 more]
           Trend: [2×1 vector of zeros]
            Beta: [2×0 matrix]
      Covariance: [2×2 matrix]

EstMdl is an estimated varm model object. It is fully specified because all parameters have known values. The description indicates that the autoregressive polynomial is stationary.

Display summary statistics from the estimation.

summarize(EstMdl)
 
   AR-Stationary 2-Dimensional VAR(4) Model
 
    Effective Sample Size: 241
    Number of Estimated Parameters: 18
    LogLikelihood: 811.361
    AIC: -1586.72
    BIC: -1524
 
                      Value       StandardError    TStatistic      PValue  
                   ___________    _____________    __________    __________

    Constant(1)      0.0017164      0.0015988         1.0735        0.28303
    Constant(2)        0.31626       0.091961          3.439      0.0005838
    AR{1}(1,1)         0.30899       0.063356          4.877     1.0772e-06
    AR{1}(2,1)         -4.4834         3.6441        -1.2303        0.21857
    AR{1}(1,2)      -0.0031796      0.0011306        -2.8122       0.004921
    AR{1}(2,2)          1.3433       0.065032         20.656      8.546e-95
    AR{2}(1,1)         0.22433       0.069631         3.2217      0.0012741
    AR{2}(2,1)          7.1896          4.005         1.7951       0.072631
    AR{2}(1,2)       0.0012375      0.0018631         0.6642        0.50656
    AR{2}(2,2)        -0.26817        0.10716        -2.5025       0.012331
    AR{3}(1,1)         0.35333       0.068287         5.1742     2.2887e-07
    AR{3}(2,1)           1.487         3.9277        0.37858          0.705
    AR{3}(1,2)       0.0028594      0.0018621         1.5355        0.12465
    AR{3}(2,2)        -0.22709         0.1071        -2.1202       0.033986
    AR{4}(1,1)       -0.047563       0.069026       -0.68906        0.49079
    AR{4}(2,1)          8.6379         3.9702         2.1757       0.029579
    AR{4}(1,2)     -0.00096323      0.0011142       -0.86448        0.38733
    AR{4}(2,2)        0.076725       0.064088         1.1972        0.23123

 
   Innovations Covariance Matrix:
    0.0000   -0.0002
   -0.0002    0.1167

 
   Innovations Correlation Matrix:
    1.0000   -0.0925
   -0.0925    1.0000

Fit a VAR(4) model to the consumer price index (CPI) and unemployment rate data. The estimation sample starts at Q1 of 1980.

Load the Data_USEconModel data set.

load Data_USEconModel

Stabilize the CPI by converting it to a series of growth rates. Synchronize the two series by removing the first observation from the unemployment rate series.

rcpi = price2ret(DataTimeTable.CPIAUCSL);
unrate = DataTimeTable.UNRATE(2:end);

Identify the index corresponding to the start of the estimation sample.

estIdx = DataTimeTable.Time(2:end) > '1979-12-31';

Create a default VAR(4) model by using the shorthand syntax.

Mdl = varm(2,4);

Estimate the model using the estimation sample. Specify all observations before the estimation sample as presample data. Display a full estimation summary.

Y0 = [rcpi(~estIdx) unrate(~estIdx)];
EstMdl = estimate(Mdl,[rcpi(estIdx) unrate(estIdx)],'Y0',Y0,'Display',"full");
 
   AR-Stationary 2-Dimensional VAR(4) Model
 
    Effective Sample Size: 117
    Number of Estimated Parameters: 18
    LogLikelihood: 419.837
    AIC: -803.674
    BIC: -753.955
 
                     Value       StandardError    TStatistic      PValue  
                   __________    _____________    __________    __________

    Constant(1)      0.003564      0.0024697         1.4431        0.14898
    Constant(2)       0.29922        0.11882         2.5182       0.011795
    AR{1}(1,1)       0.022379       0.092458        0.24204        0.80875
    AR{1}(2,1)        -2.6318         4.4484       -0.59163         0.5541
    AR{1}(1,2)     -0.0082357      0.0020373        -4.0425     5.2884e-05
    AR{1}(2,2)         1.2567        0.09802          12.82     1.2601e-37
    AR{2}(1,1)        0.20954        0.10182         2.0581       0.039584
    AR{2}(2,1)         10.106         4.8987          2.063       0.039117
    AR{2}(1,2)      0.0058667       0.003194         1.8368       0.066236
    AR{2}(2,2)       -0.14226        0.15367       -0.92571        0.35459
    AR{3}(1,1)        0.56095       0.098691         5.6839     1.3167e-08
    AR{3}(2,1)        0.44406         4.7483       0.093518        0.92549
    AR{3}(1,2)      0.0049062       0.003227         1.5204        0.12841
    AR{3}(2,2)      -0.040037        0.15526       -0.25787         0.7965
    AR{4}(1,1)       0.046125        0.11163        0.41321        0.67945
    AR{4}(2,1)          6.758         5.3707         1.2583        0.20827
    AR{4}(1,2)     -0.0030032       0.002018        -1.4882         0.1367
    AR{4}(2,2)       -0.14412       0.097094        -1.4843        0.13773

 
   Innovations Covariance Matrix:
    0.0000   -0.0003
   -0.0003    0.0790

 
   Innovations Correlation Matrix:
    1.0000   -0.1686
   -0.1686    1.0000

Because the VAR model degree p is 4, estimate uses only the last four observations in Y0 as a presample.

Since R2022b

Fit a VAR(4) model to the consumer price index (CPI) and unemployment rate series. Supply a timetable of data and specify the series for the fit.

Load and Preprocess Data

Load the Data_USEconModel data set. Compute the CPI growth rate. Because the growth rate calculation consumes the earliest observation, include the rate variable in the timetable by prepending the series with NaN.

load Data_USEconModel
DataTimeTable.RCPI = [NaN; price2ret(DataTimeTable.CPIAUCSL)];
numobs = height(DataTimeTable)
numobs = 249

Prepare Timetable for Estimation

When you plan to supply a timetable directly to estimate, you must ensure it has all the following characteristics:

  • All selected response variables are numeric and do not contain any missing values.

  • The timestamps in the Time variable are regular, and they are ascending or descending.

Remove all missing values from the table, relative to the CPI rate (RCPI) and unemployment rate (UNRATE) series.

varnames = ["RCPI" "UNRATE"];
DTT = rmmissing(DataTimeTable,DataVariables=varnames);
numobs = height(DTT)
numobs = 245

rmmissing removes the four initial missing observations from the DataTimeTable to create a sub-table DTT. The variables RCPI and UNRATE of DTT do not have any missing observations.

Determine whether the sampling timestamps have a regular frequency and are sorted.

areTimestampsRegular = isregular(DTT,"quarters")
areTimestampsRegular = logical
   0

areTimestampsSorted = issorted(DTT.Time)
areTimestampsSorted = logical
   1

areTimestampsRegular = 0 indicates that the timestamps of DTT are irregular. areTimestampsSorted = 1 indicates that the timestamps are sorted. Macroeconomic series in this example are timestamped at the end of the month. This quality induces an irregularly measured series.

Remedy the time irregularity by shifting all dates to the first day of the quarter.

dt = DTT.Time;
dt = dateshift(dt,"start","quarter");
DTT.Time = dt;
areTimestampsRegular = isregular(DTT,"quarters")
areTimestampsRegular = logical
   1

DTT is regular with respect to time.

Create Model Template for Estimation

Create a default VAR(4) model by using the shorthand syntax. Specify the response variable names.

Mdl = varm(2,4);
Mdl.SeriesNames = varnames
Mdl = 
  varm with properties:

     Description: "2-Dimensional VAR(4) Model"
     SeriesNames: "RCPI"  "UNRATE" 
       NumSeries: 2
               P: 4
        Constant: [2×1 vector of NaNs]
              AR: {2×2 matrices of NaNs} at lags [1 2 3 ... and 1 more]
           Trend: [2×1 vector of zeros]
            Beta: [2×0 matrix]
      Covariance: [2×2 matrix of NaNs]

Fit Model to Data

Estimate the model. Pass the entire timetable DTT. By default, estimate selects the response variables in Mdl.SeriesNames to fit to the model. Alternatively, you can use the ResponseVariables name-value argument.

Return the timetable of residuals and data fit to the model. Summarize the estimated model.

[EstMdl,~,~,Tbl2] = estimate(Mdl,DTT);
summarize(EstMdl)
 
   AR-Stationary 2-Dimensional VAR(4) Model
 
    Effective Sample Size: 241
    Number of Estimated Parameters: 18
    LogLikelihood: 811.361
    AIC: -1586.72
    BIC: -1524
 
                      Value       StandardError    TStatistic      PValue  
                   ___________    _____________    __________    __________

    Constant(1)      0.0017164      0.0015988         1.0735        0.28303
    Constant(2)        0.31626       0.091961          3.439      0.0005838
    AR{1}(1,1)         0.30899       0.063356          4.877     1.0772e-06
    AR{1}(2,1)         -4.4834         3.6441        -1.2303        0.21857
    AR{1}(1,2)      -0.0031796      0.0011306        -2.8122       0.004921
    AR{1}(2,2)          1.3433       0.065032         20.656      8.546e-95
    AR{2}(1,1)         0.22433       0.069631         3.2217      0.0012741
    AR{2}(2,1)          7.1896          4.005         1.7951       0.072631
    AR{2}(1,2)       0.0012375      0.0018631         0.6642        0.50656
    AR{2}(2,2)        -0.26817        0.10716        -2.5025       0.012331
    AR{3}(1,1)         0.35333       0.068287         5.1742     2.2887e-07
    AR{3}(2,1)           1.487         3.9277        0.37858          0.705
    AR{3}(1,2)       0.0028594      0.0018621         1.5355        0.12465
    AR{3}(2,2)        -0.22709         0.1071        -2.1202       0.033986
    AR{4}(1,1)       -0.047563       0.069026       -0.68906        0.49079
    AR{4}(2,1)          8.6379         3.9702         2.1757       0.029579
    AR{4}(1,2)     -0.00096323      0.0011142       -0.86448        0.38733
    AR{4}(2,2)        0.076725       0.064088         1.1972        0.23123

 
   Innovations Covariance Matrix:
    0.0000   -0.0002
   -0.0002    0.1167

 
   Innovations Correlation Matrix:
    1.0000   -0.0925
   -0.0925    1.0000

EstMdl is an estimated varm model object. It is fully specified because all parameters have known values.

Display the head of the table Tbl2.

head(Tbl2)
    Time      COE     CPIAUCSL    FEDFUNDS    GCE      GDP     GDPDEF    GPDI    GS10    HOANBS    M1SL    M2SL    PCEC     TB3MS    UNRATE       RCPI       RCPI_Residuals    UNRATE_Residuals
    _____    _____    ________    ________    ____    _____    ______    ____    ____    ______    ____    ____    _____    _____    ______    __________    ______________    ________________

    Q1-49    144.1     23.91        NaN       45.6      270    16.531    40.9    NaN     53.961    NaN     NaN       177    1.17        5      -0.0058382      -0.013422             0.64674   
    Q2-49    141.9     23.92        NaN       47.3    266.2     16.35      34    NaN     53.058    NaN     NaN     178.6    1.17      6.2      0.00041815      0.0051673              0.6439   
    Q3-49      141     23.75        NaN       47.2    267.7    16.256    37.3    NaN     52.501    NaN     NaN       178    1.07      6.6      -0.0071324      0.0030175           -0.099092   
    Q4-49    140.5     23.61        NaN       46.6    265.2    16.272    35.2    NaN     52.291    NaN     NaN     180.4     1.1      6.6      -0.0059122      -0.001196          -0.0066535   
    Q1-50    144.6     23.64        NaN       45.6    275.2    16.222    44.4    NaN     52.696    NaN     NaN     183.1    1.12      6.3       0.0012698      0.0024607           -0.013354   
    Q2-50    150.6     23.88        NaN       46.1    284.6    16.286    49.9    NaN     53.997    NaN     NaN       187    1.15      5.4        0.010101       0.010823            -0.53098   
    Q3-50      159     24.34        NaN       45.9      302     16.63    56.1    NaN       55.7    NaN     NaN     200.7     1.3      4.4         0.01908       0.012566            -0.38177   
    Q4-50    166.9     24.98        NaN       49.5    313.4     16.95    65.9    NaN     56.213    NaN     NaN     198.1    1.34      4.3        0.025954       0.010998             0.50761   

Because the VAR model has degree of 4, estimation requires four presample observations. Consequently, estimate uses the first four rows (all quarters of 1948) of DTT as a presample, fits the model to the remaining observations, and returns only those observations used in estimation in Tbl2.

Plot the residuals.

figure
tiledlayout(2,1)
nexttile
plot(Tbl2.Time,Tbl2.RCPI_Residuals)
hold on
yline(0,"r--");
hold off
title("CPI Rate Residuals")
nexttile
plot(Tbl2.Time,Tbl2.UNRATE_Residuals)
hold on
yline(0,"r--");
hold off
title("Unemployment Rate Residuals")

Figure contains 2 axes objects. Axes object 1 with title CPI Rate Residuals contains 2 objects of type line, constantline. Axes object 2 with title Unemployment Rate Residuals contains 2 objects of type line, constantline.

Estimate a VAR(4) model of the consumer price index (CPI), unemployment rate, and real gross domestic product (GDP). Include a linear regression component containing the current quarter and the last four quarters of government consumption expenditures and investment (GCE).

Load the Data_USEconModel data set. Compute the real GDP.

load Data_USEconModel
DataTimeTable.RGDP = DataTimeTable.GDP./DataTimeTable.GDPDEF*100;

Plot all variables on separate plots.

figure
tiledlayout(2,2)
nexttile
plot(DataTimeTable.Time,DataTimeTable.CPIAUCSL);
ylabel('Index')
title('Consumer Price Index')
nexttile
plot(DataTimeTable.Time,DataTimeTable.UNRATE);
ylabel('Percent')
title('Unemployment Rate')
nexttile
plot(DataTimeTable.Time,DataTimeTable.RGDP);
ylabel('Output')
title('Real Gross Domestic Product')
nexttile
plot(DataTimeTable.Time,DataTimeTable.GCE);
ylabel('Billions of $')
title('Government Expenditures')

Figure contains 4 axes objects. Axes object 1 with title Consumer Price Index, ylabel Index contains an object of type line. Axes object 2 with title Unemployment Rate, ylabel Percent contains an object of type line. Axes object 3 with title Real Gross Domestic Product, ylabel Output contains an object of type line. Axes object 4 with title Government Expenditures, ylabel Billions of $ contains an object of type line.

Stabilize the CPI, GDP, and GCE series by converting each to a series of growth rates. Synchronize the unemployment rate series with the others by removing its first observation.

inputVariables = {'CPIAUCSL' 'RGDP' 'GCE'};
Data = varfun(@price2ret,DataTimeTable,'InputVariables',inputVariables);
Data.Properties.VariableNames = inputVariables;
Data.UNRATE = DataTimeTable.UNRATE(2:end);

Expand the GCE rate series to a matrix that includes its current value and up through four lagged values. Remove the GCE variable from Data.

rgcelag4 = lagmatrix(Data.GCE,0:4);
Data.GCE = [];

Create a default VAR(4) model by using the shorthand syntax. You do not have to specify the regression component when creating the model.

Mdl = varm(3,4);

Estimate the model using the entire sample. Specify the GCE rate matrix as data for the regression component. Extract standard errors and the loglikelihood value.

[EstMdl,EstSE,logL] = estimate(Mdl,Data.Variables,'X',rgcelag4);

Display the regression coefficient matrix.

EstMdl.Beta
ans = 3×5

    0.0777   -0.0892   -0.0685   -0.0181    0.0330
    0.1450   -0.0304    0.0579   -0.0559    0.0185
   -2.8138   -0.1636    0.3905    1.1799   -2.3328

EstMdl.Beta is a 3-by-5 matrix. Rows correspond to response series, and columns correspond to predictors.

Display the matrix of standard errors corresponding to the coefficient estimates.

EstSE.Beta
ans = 3×5

    0.0250    0.0272    0.0275    0.0274    0.0243
    0.0368    0.0401    0.0405    0.0403    0.0358
    1.4552    1.5841    1.6028    1.5918    1.4145

EstSE.Beta is commensurate with EstMdl.Beta.

Display the loglikelihood value.

logL
logL = 1.7056e+03

Input Arguments

collapse all

VAR model containing unknown parameter values, specified as a varm model object returned by varm.

NaN-valued elements in properties indicate unknown, estimable parameters. Specified elements indicate equality constraints on parameters in model estimation. The innovations covariance matrix Mdl.Covariance cannot contain a mix of NaN values and real numbers; you must fully specify the covariance or it must be completely unknown (NaN(Mdl.NumSeries)).

Observed multivariate response series to which estimate fits the model, specified as a numobs-by-numseries numeric matrix.

numobs is the sample size. numseries is the number of response variables (Mdl.NumSeries).

Rows correspond to observations, and the last row contains the latest observation.

Columns correspond to individual response variables.

Y represents the continuation of the presample response series in Y0.

Data Types: double

Since R2022b

Time series data, to which estimate fits the model, specified as a table or timetable with numvars variables and numobs rows.

Each variable is a numeric vector representing a single path of numobs observations. You can optionally specify numseries response variables to fit to the model by using the ResponseVariables name-value argument, and you can specify numpreds predictor variables for the exogenous regression component by using the PredictorVariables name-value argument.

Each row is an observation, and measurements in each row occur simultaneously.

If Tbl1 is a timetable, it must represent a sample with a regular datetime time step (see isregular), and the datetime vector Tbl1.Time must be ascending or descending.

If Tbl1 is a table, the last row contains the latest observation.

Name-Value Arguments

Specify optional pairs of arguments as Name1=Value1,...,NameN=ValueN, where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Before R2021a, use commas to separate each name and value, and enclose Name in quotes.

Example: estimate(Mdl,Y,Y0=Presample,X=Exo) fits the VAR(p) model Mdl to the matrix of response data Y, and specifies the matrix of presample response data Presample and the matrix of exogenous predictor data Exo.

Since R2022b

Variables to select from Tbl1 to treat as response variables yt, specified as one of the following data types:

  • String vector or cell vector of character vectors containing numseries variable names in Tbl1.Properties.VariableNames

  • A length numseries vector of unique indices (integers) of variables to select from Tbl1.Properties.VariableNames

  • A length numvars logical vector, where ResponseVariables(j) = true selects variable j from Tbl1.Properties.VariableNames, and sum(ResponseVariables) is numseries

The selected variables must be numeric vectors and cannot contain missing values (NaN).

If the number of variables in Tbl1 matches Mdl.NumSeries, the default specifies all variables in Tbl1. If the number of variables in Tbl1 exceeds Mdl.NumSeries, the default matches variables in Tbl1 to names in Mdl.SeriesNames.

Example: ResponseVariables=["GDP" "CPI"]

Example: ResponseVariables=[true false true false] or ResponseVariable=[1 3] selects the first and third table variables as the response variables.

Data Types: double | logical | char | cell | string

Presample response observations to initialize the model for estimation, specified as a numpreobs-by-numseries numeric matrix. numpreobs is the number of presample observations. Use Y0 only when you supply a matrix of response data Y.

Rows correspond to presample observations, and the last row contains the latest observation. Y0 must have at least Mdl.P rows. If you supply more rows than necessary, estimate uses the latest Mdl.P observations only.

Columns must correspond to the numseries response variables in Y.

By default, estimate uses Y(1:Mdl.P,:) as presample observations, and then fits the model to Y((Mdl.P + 1):end,:). This action reduces the effective sample size.

Data Types: double

Since R2022b

Presample data to initialize the model for estimation, specified as a table or timetable, the same type as Tbl1, with numprevars variables and numpreobs rows. Use Presample only when you supply a table or timetable of data Tbl1.

Each variable is a single path of numpreobs observations representing the presample of the corresponding variable in Tbl1.

Each row is a presample observation, and measurements in each row occur simultaneously. numpreobs must be at least Mdl.P. If you supply more rows than necessary, estimate uses the latest Mdl.P observations only.

If Presample is a timetable, all the following conditions must be true:

  • Presample must represent a sample with a regular datetime time step (see isregular).

  • The inputs Tbl1 and Presample must be consistent in time such that Presample immediately precedes Tbl1 with respect to the sampling frequency and order.

  • The datetime vector of sample timestamps Presample.Time must be ascending or descending.

If Presample is a table, the last row contains the latest presample observation.

By default, estimate uses the first or earliest Mdl.P observations in Tbl1 as a presample, and then it fits the model to the remaining numobs – Mdl.P observations. This action reduces the effective sample size.

Since R2022b

Variables to select from Presample to use for presample data, specified as one of the following data types:

  • String vector or cell vector of character vectors containing numseries variable names in Presample.Properties.VariableNames

  • A length numseries vector of unique indices (integers) of variables to select from Presample.Properties.VariableNames

  • A length numprevars logical vector, where PresampleResponseVariables(j) = true selects variable j from Presample.Properties.VariableNames, and sum(PresampleResponseVariables) is numseries

The selected variables must be numeric vectors and cannot contain missing values (NaN).

PresampleResponseNames does not need to contain the same names as in Tbl1; estimate uses the data in selected variable PresampleResponseVariables(j) as a presample for ResponseVariables(j).

The default specifies the same response variables as those selected from Tbl1, see ResponseVariables.

Example: PresampleResponseVariables=["GDP" "CPI"]

Example: PresampleResponseVariables=[true false true false] or PresampleResponseVariable=[1 3] selects the first and third table variables for presample data.

Data Types: double | logical | char | cell | string

Predictor data for the regression component in the model, specified as a numeric matrix containing numpreds columns. Use X only when you supply a matrix of response data Y.

numpreds is the number of predictor variables.

Rows correspond to observations, and the last row contains the latest observation. estimate does not use the regression component in the presample period. X must have at least as many observations as are used after the presample period:

  • If you specify Y0, X must have at least numobs rows (see Y).

  • Otherwise, X must have at least numobsMdl.P observations to account for the presample removal.

In either case, if you supply more rows than necessary, estimate uses the latest observations only.

Columns correspond to individual predictor variables. All predictor variables are present in the regression component of each response equation.

By default, estimate excludes the regression component, regardless of its presence in Mdl.

Data Types: double

Since R2022b

Variables to select from Tbl1 to treat as exogenous predictor variables xt, specified as one of the following data types:

  • String vector or cell vector of character vectors containing numpreds variable names in Tbl1.Properties.VariableNames

  • A length numpreds vector of unique indices (integers) of variables to select from Tbl1.Properties.VariableNames

  • A length numvars logical vector, where PredictorVariables(j) = true selects variable j from Tbl1.Properties.VariableNames, and sum(PredictorVariables) is numpreds

The selected variables must be numeric vectors and cannot contain missing values (NaN).

By default, estimate excludes the regression component, regardless of its presence in Mdl.

Example: PredictorVariables=["M1SL" "TB3MS" "UNRATE"]

Example: PredictorVariables=[true false true false] or PredictorVariable=[1 3] selects the first and third table variables to supply the predictor data.

Data Types: double | logical | char | cell | string

Estimation information display type, specified as a value in this table.

ValueDescription
"off"estimate does not display estimation information at the command line.
"table"estimate displays a table of estimation information. Rows correspond to parameters, and columns correspond to estimates, standard errors, t statistics, and p values.
"full"In addition to a table of summary statistics, estimate displays the estimated innovations covariance and correlation matrices, loglikelihood value, Akaike Information Criterion (AIC), Bayesian Information Criterion (BIC), and other estimation information.

Example: Display="full"

Data Types: string | char

Maximum number of solver iterations allowed, specified as a positive numeric scalar.

estimate dispatches MaxIterations to mvregress.

Example: MaxIterations=2000

Data Types: double

Note

  • NaN values in Y, Y0, and X indicate missing values. estimate removes missing values from the data by list-wise deletion.

    • For the presample, estimate removes any row containing at least one NaN.

    • For the estimation sample, estimate removes any row of the concatenated data matrix [Y X] containing at least one NaN.

    This type of data reduction reduces the effective sample size.

  • estimate issues an error when any table or timetable input contains missing values.

Output Arguments

collapse all

Estimated VAR(p) model, returned as a varm model object. EstMdl is a fully specified varm model.

estimate uses mvregress to implement multivariate normal, maximum likelihood estimation. For more details, see Estimation of Multivariate Regression Models.

Estimated, asymptotic standard errors of the estimated parameters, returned as a structure array containing the fields in this table.

FieldDescription
ConstantStandard errors of model constants corresponding to the estimates in EstMdl.Constant, a numseries-by-1 numeric vector
ARStandard errors of the autoregressive coefficients corresponding to estimates in EstMdl.AR, a cell vector with elements corresponding to EstMdl.AR
BetaStandard errors of regression coefficients corresponding to the estimates in EstMdl.Beta, a numseries-by-numpreds numeric matrix
TrendStandard errors of linear time trends corresponding to the estimates in EstMdl.Trend, a numseries-by-1 numeric vector

If estimate applies equality constraints during estimation by fixing any parameters to a value, then corresponding standard errors of those parameters are 0.

estimate extracts all standard errors from the inverse of the expected Fisher information matrix returned by mvregress (see Standard Errors).

Optimized loglikelihood objective function value, returned as a numeric scalar.

Multivariate residuals from the fitted model EstMdl, returned as a numeric matrix containing numseries columns. estimate returns E only when you supply a matrix of response data Y.

  • If you specify Y0, then E has numobs rows (see Y).

  • Otherwise, E has numobsMdl.P rows to account for the presample removal.

Since R2022b

Multivariate residuals and estimation data, returned as a table or timetable, the same data type as Tbl1. estimate returns Tbl2 only when you supply the input Tbl1.

Tbl2 contains the residuals E from the model fit to the selected variables in Tbl1, and it contains all variables in Tbl1. estimate names the residuals corresponding to variable ResponseJ in Tbl1 ResponseJ_Residuals. For example, if one of the selected response variables for estimation in Tbl1 is GDP, Tbl2 contains a variable for the residuals in the response equation of GDP with the name GDP_Residuals.

If you specify presample response data, Tbl2 and Tbl1 have the same number of rows, and their rows correspond. Otherwise, because estimate removes initial observations from Tbl1 for the required presample by default, Tbl2 has numobs – Mdl.P rows to account for that removal.

If Tbl1 is a timetable, Tbl1 and Tbl2 have the same row order, either ascending or descending.

References

[1] Hamilton, James D. Time Series Analysis. Princeton, NJ: Princeton University Press, 1994.

[2] Johansen, S. Likelihood-Based Inference in Cointegrated Vector Autoregressive Models. Oxford: Oxford University Press, 1995.

[3] Juselius, K. The Cointegrated VAR Model. Oxford: Oxford University Press, 2006.

[4] Lütkepohl, H. New Introduction to Multiple Time Series Analysis. Berlin: Springer, 2005.

Version History

Introduced in R2017a

expand all