Main Content

dssm class

Superclasses:

Create diffuse state-space model

Description

dssmcreates a lineardiffuse state-space modelwith independent Gaussian state disturbances and observation innovations. A diffuse state-space model contains diffuse states, and variances of the initial distributions of diffuse states areInf。All diffuse states are independent of each other and all other states. The software implements the diffuse Kalman filter for filtering, smoothing, and parameter estimation.

You can:

  • Specify atime-invariantortime-varyingmodel.

  • Specify whether states are stationary,static, or nonstationary.

  • Specify the state-transition, state-disturbance-loading, measurement-sensitivity, or observation-innovation matrices:

    • Explicitly by providing the matrices

    • Implicitly by providing a function that maps the parameters to the matrices, that is, a parameter-to-matrix mapping function

After creating a diffuse state-space model containing unknown parameters, you can estimate its parameters by passing the createddssmmodel object and data toestimate。Theestimatefunction builds the likelihood function using the diffuse Kalman filter.

Use a completely specified model (that is, all parameter values of the model are known) to:

  • Filter or smooth states usingfilterorsmooth, respectively. These functions apply the diffuse Kalman filter and data to the state-space model.

  • Forecast states or observations usingforecast

Construction

Mdl= dssm(A,B,C)creates adiffuse state-space model(Mdl) using state-transition matrixA, state-disturbance-loading matrixB, and measurement-sensitivity matrixC

Mdl= dssm(A,B,C,D)creates a diffuse state-space model using state-transition matrixA, state-disturbance-loading matrixB, measurement-sensitivity matrixC, and observation-innovation matrixD

Mdl= dssm(___,Name,Value)uses any of the input arguments in the previous syntaxes and additional options that you specify by one or moreName,Valuepair arguments.

Mdl= dssm(ParamMap)creates a diffuse state-space model using a parameter-to-matrix mapping function (ParamMap) that you write. The function maps a vector of parameters to the matricesA,B, andC。Optionally,ParamMapcan map parameters toD,Mean0,Cov0。To specify the types of states, the function can returnStateType。To accommodate a regression component in the observation equation,ParamMapcan also return deflated observation data.

Mdl= dssm(SSMMdl)converts a state-space model object (SSMMdl) to a diffuse state-space model object (Mdl).dssmsets all initial variances of diffuse states inSSMMdl.Cov0toInf

输入参数

expand all

State-transition coefficient matrix for explicit state-space model creation, specified as a matrix or cell vector of matrices.

The state-transition coefficient matrix,At, specifies how the states,xt, are expected to transition from periodt– 1 tot, for allt= 1,...,T。That is, the expected state-transition equation at periodtisE(xt|xt–1) =Atxt–1

For time-invariant state-space models, specifyAas anm-by-mmatrix, wheremis the number of states per period.

For time-varying state-space models, specifyAas aT-dimensional cell array, whereA{t}contains anmt-by-mt– 1state-transition coefficient matrix. If the number of states changes from periodt– 1 tot, thenmtmt– 1

NaNvalues in any coefficient matrix indicate unique, unknown parameters in the state-space model.Acontributes:

  • sum(isnan(A(:)))unknown parameters to time-invariant state-space models. In other words, if the state-space model is time invariant, then the software uses the same unknown parameters defined inAat each period.

  • numParamsAunknown parameters to time-varying state-space models, wherenumParamsA = sum(cell2mat(cellfun(@(x)sum(sum(isnan(x))),A,'UniformOutput',0)))。In other words, if the state-space model is time varying, then the software assigns a new set of parameters for each matrix inA

You cannot specifyAandParamMapsimultaneously.

Data Types:double|cell

State-disturbance-loading coefficient matrix for explicit state-space model creation, specified as a matrix or cell vector of matrices.

The state disturbances,ut, are independent Gaussian random variables with mean 0 and standard deviation 1. The state-disturbance-loading coefficient matrix,Bt, specifies the additive error structure in the state-transition equation from periodt– 1 tot, for allt= 1,...,T。That is, the state-transition equation at periodtisxt=Atxt–1+Btut

For time-invariant state-space models, specifyBas anm-by-kmatrix, wheremis the number of states andkis the number of state disturbances per period.B*B'is the state-disturbance covariance matrix for all periods.

For time-varying state-space models, specifyBas aT-dimensional cell array, whereB{t}contains anmt-by-ktstate-disturbance-loading coefficient matrix. If the number of states or state disturbances changes at periodt, then the matrix dimensions betweenB{t-1}andB{t}vary.B{t}*B{t}'is the state-disturbance covariance matrix for periodt

NaNvalues in any coefficient matrix indicate unique, unknown parameters in the state-space model.Bcontributes:

  • sum(isnan(B(:)))unknown parameters to time-invariant state-space models. In other words, if the state-space model is time invariant, then the software uses the same unknown parameters defined inBat each period.

  • numParamsBunknown parameters to time-varying state-space models, wherenumParamsB = sum(cell2mat(cellfun(@(x)sum(sum(isnan(x))),B,'UniformOutput',0)))。In other words, if the state-space model is time varying, then the software assigns a new set of parameters for each matrix inB

You cannot specifyBandParamMapsimultaneously.

Data Types:double|cell

Measurement-sensitivity coefficient matrix for explicit state-space model creation, specified as a matrix or cell vector of matrices.

The measurement-sensitivity coefficient matrix,Ct, specifies how the states are expected to linearly combine at periodt形成了观察,yt, for allt= 1,...,T。That is, the expected observation equation at periodtisE(yt|xt) =Ctxt

For time-invariant state-space models, specifyCas ann-by-mmatrix, wherenis the number of observations andmis the number of states per period.

For time-varying state-space models, specifyCas aT-dimensional cell array, whereC{t}contains annt-by-mtmeasurement-sensitivity coefficient matrix. If the number of states or observations changes at periodt, then the matrix dimensions betweenC{t-1}andC{t}vary.

NaNvalues in any coefficient matrix indicate unique, unknown parameters in the state-space model.Ccontributes:

  • sum(isnan(C(:)))unknown parameters to time-invariant state-space models. In other words, if the state-space model is time invariant, then the software uses the same unknown parameters defined inCat each period.

  • numParamsCunknown parameters to time-varying state-space models, wherenumParamsC = sum(cell2mat(cellfun(@(x)sum(sum(isnan(x))),C,'UniformOutput',0)))。In other words, if the state-space model is time varying, then the software assigns a new set of parameters for each matrix inC

You cannot specifyCandParamMapsimultaneously.

Data Types:double|cell

Observation-innovation coefficient matrix for explicit state-space model creation, specified as a matrix or cell vector of matrices.

The observation innovations,εt, are independent Gaussian random variables with mean 0 and standard deviation 1. The observation-innovation coefficient matrix,Dt, specifies the additive error structure in the observation equation at periodt, for allt= 1,...,T。That is, the observation equation at periodtisyt=Ctxt+Dtεt

For time-invariant state-space models, specifyDas ann-by-hmatrix, wherenis the number of observations andhis the number of observation innovations per period.D*D'is the observation-innovation covariance matrix for all periods.

For time-varying state-space models, specifyDas aT-dimensional cell array, whereD{t}contains annt-by-htmatrix. If the number of observations or observation innovations changes at periodt, then the matrix dimensions betweenD{t-1}andD{t}vary.D{t}*D{t}'is the observation-innovation covariance matrix for periodt

NaNvalues in any coefficient matrix indicate unique, unknown parameters in the state-space model.Dcontributes:

  • sum(isnan(D(:)))unknown parameters to time-invariant state-space models. In other words, if the state-space model is time invariant, then the software uses the same unknown parameters defined inDat each period.

  • numParamsDunknown parameters to time-varying state-space models, wherenumParamsD = sum(cell2mat(cellfun(@(x)sum(sum(isnan(x))),D,'UniformOutput',0)))。In other words, if the state-space model is time varying, then the software assigns a new set of parameters for each matrix inD

By default,Dis an empty matrix indicating no observation innovations in the state-space model.

You cannot specifyDandParamMapsimultaneously.

Data Types:double|cell

Parameter-to-matrix mapping function for implicit state-space model creation, specified as a function handle.

ParamMapmust be a function that takes at least one input argument and returns at least three output arguments. The requisite input argument is a vector of unknown parameters, and the requisite output arguments correspond to the coefficient matricesA,B, andC, respectively. If your parameter-to-mapping function requires the input parameter vector argument only, then implicitly create a diffuse state-space model by entering the following:

Mdl = dssm(@ParamMap)

In general, you can write an intermediate function, for example,ParamFun, using this syntax:

function [A,B,C,D,Mean0,Cov0,StateType,DeflateY] = ... ParamFun(params,...otherInputArgs...)

In this general case, create the diffuse state-space model by entering

Mdl = dssm(@(params)ParamMap(params,...otherInputArgs...))

However:

  • Follow the order of the output arguments.

  • paramsis a vector, and each element corresponds to an unknown parameter.

  • ParamFunmust returnA,B, andC, which correspond to the state-transition, state-disturbance-loading, and measurement-sensitivity coefficient matrices, respectively.

  • If you specify more input arguments than the parameter vector (params), such as observed responses and predictors, then implicitly create the diffuse state-space model using the syntax pattern

    Mdl = dssm(@(params)ParamFun(params,y,z))

  • For the optional output argumentsD,Mean0,Cov0,StateType, andDeflateY:

    • The optional output arguments correspond to the observation-innovation coefficient matrixDand the name-value pair argumentsMean0,Cov0, andStateType

    • To skip specifying an optional output argument, set the argument to[]in the function body. For example, to skip specifyingD, then setD = [];in the function.

    • DeflateYis the deflated-observation data, which accommodates a regression component in the observation equation. For example, in this function, which has a linear regression component,Yis the vector of observed responses andZis the vector of predictor data.

      function [A,B,C,D,Mean0,Cov0,StateType,DeflateY] = ParamFun(params,Y,Z) ... DeflateY = Y - params(9) - params(10)*Z; ... end

    • For the default values ofMean0,Cov0, andStateType, seeAlgorithms

  • It is best practice to:

    • Load the data to the MATLAB®Workspace before specifying the model.

    • Create the parameter-to-matrix mapping function as its own file.

If you specifyParamMap, then you cannot specify any name-value pair arguments or any other input arguments.

Data Types:function_handle

State-space model to convert to a diffuse state-space model, specified as anssmmodel object.

dssmsets all initial variances of diffuse states inSSMMdl.Cov0toInf

To use the diffuse Kalman filter for filtering, smoothing, and parameter estimation instead of the standard Kalman filter, convert a state-space model to a diffuse state-space model.

Name-Value Arguments

Specify optional pairs of arguments asName1=Value1,...,NameN=ValueN, whereNameis the argument name andValueis 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 encloseNamein quotes.

Initial state mean for explicit state-space model creation, specified as the comma-separated pair consisting of'Mean0'and a numeric vector with length equal to the number of initial states. For the default values, seeAlgorithms

If you specifyParamMap, then you cannot specifyMean0。Instead, specify the initial state mean in the parameter-to-matrix mapping function.

Data Types:double

Initial state covariance matrix for explicit state-space model creation, specified as the comma-separated pair consisting of'Cov0'and a square matrix with dimensions equal to the number of initial states. For the default values, seeAlgorithms

If you specifyParamMap, then you cannot specifyCov0。Instead, specify the initial state covariance in the parameter-to-matrix mapping function.

Data Types:double

Initial state distribution indicator for explicit state-space model creation, specified as the comma-separated pair consisting of'StateType'and a numeric vector with length equal to the number of initial states. This table summarizes the available types of initial state distributions.

Value Initial State Distribution Type
0 Stationary (for example, ARMA models)
1 The constant 1 (that is, the state is 1 with probability 1)
2 Diffuse or nonstationary (for example, random walk model, seasonal linear time series) orstatic state

例如,假设状态方程two state variables: The first state variable is an AR(1) process, and the second state variable is a random walk. Specify the initial distribution types by setting'StateType',[0; 2]

If you specifyParamMap, then you cannot specifyMean0。Instead, specify the initial state distribution indicator in the parameter-to-matrix mapping function.

For the default values, seeAlgorithms

Data Types:double

Properties

expand all

State-transition coefficient matrix for explicitly created state-space models, specified as a matrix, a cell vector of matrices, or an empty array ([]). For implicitly created state-space models and before estimation,Ais[]and read only.

The state-transition coefficient matrix,At, specifies how the states,xt, are expected to transition from periodt– 1 tot, for allt= 1,...,T。That is, the expected state-transition equation at periodtisE(xt|xt–1) =Atxt–1

For time-invariant state-space models,Ais anm-by-mmatrix, wheremis the number of states per period.

For time-varying state-space models,Ais aT-dimensional cell array, whereA{t}contains anmt-by-mt– 1state-transition coefficient matrix. If the number of states changes from periodt– 1 tot, thenmtmt– 1

NaNvalues in any coefficient matrix indicate unknown parameters in the state-space model.Acontributes:

  • sum(isnan(A(:)))unknown parameters to time-invariant state-space models. In other words, if the state-space model is time invariant, then the software uses the same unknown parameters defined inAat each period.

  • numParamsAunknown parameters to time-varying state-space models, wherenumParamsA = sum(cell2mat(cellfun(@(x)sum(sum(isnan(x))),A,'UniformOutput',0)))。In other words, if the state-space model is time varying, then the software assigns a new set of parameters for each matrix inA

Data Types:double|cell

State-disturbance-loading coefficient matrix for explicitly created state-space models, specified as a matrix, a cell vector of matrices, or an empty array ([]). For implicitly created state-space models and before estimation,Bis[]and read only.

The state disturbances,ut, are independent Gaussian random variables with mean 0 and standard deviation 1. The state-disturbance-loading coefficient matrix,Bt, specifies the additive error structure in the state-transition equation from periodt– 1 tot, for allt= 1,...,T。That is, the state-transition equation at periodtisxt=Atxt–1+Btut

For time-invariant state-space models,Bis anm-by-kmatrix, wheremis the number of states andkis the number of state disturbances per period.B*B'is the state-disturbance covariance matrix for all periods.

For time-varying state-space models,Bis aT-dimensional cell array, whereB{t}contains anmt-by-ktstate-disturbance-loading coefficient matrix. If the number of states or state disturbances changes at periodt, then the matrix dimensions betweenB{t-1}andB{t}vary.B{t}*B{t}'is the state-disturbance covariance matrix for periodt

NaNvalues in any coefficient matrix indicate unknown parameters in the state-space model.Bcontributes:

  • sum(isnan(B(:)))unknown parameters to time-invariant state-space models. In other words, if the state-space model is time invariant, then the software uses the same unknown parameters defined inBat each period.

  • numParamsBunknown parameters to time-varying state-space models, wherenumParamsB = sum(cell2mat(cellfun(@(x)sum(sum(isnan(x))),B,'UniformOutput',0)))。In other words, if the state-space model is time varying, then the software assigns a new set of parameters for each matrix inB

Data Types:double|cell

Measurement-sensitivity coefficient matrix for explicitly created state-space models, specified as a matrix, a cell vector of matrices, or an empty array ([]). For implicitly created state-space models and before estimation,Cis[]and read only.

The measurement-sensitivity coefficient matrix,Ct, specifies how the states are expected to combine linearly at periodt形成了观察,yt, for allt= 1,...,T。That is, the expected observation equation at periodtisE(yt|xt) =Ctxt

For time-invariant state-space models,Cis ann-by-mmatrix, wherenis the number of observations andmis the number of states per period.

For time-varying state-space models,Cis aT-dimensional cell array, whereC{t}contains annt-by-mtmeasurement-sensitivity coefficient matrix. If the number of states or observations changes at periodt, then the matrix dimensions betweenC{t-1}andC{t}vary.

NaNvalues in any coefficient matrix indicate unknown parameters in the state-space model.Ccontributes:

  • sum(isnan(C(:)))unknown parameters to time-invariant state-space models. In other words, if the state-space model is time invariant, then the software uses the same unknown parameters defined inCat each period.

  • numParamsCunknown parameters to time-varying state-space models, wherenumParamsC = sum(cell2mat(cellfun(@(x)sum(sum(isnan(x))),C,'UniformOutput',0)))。In other words, if the state-space model is time varying, then the software assigns a new set of parameters for each matrix inC

Data Types:double|cell

Observation-innovation coefficient matrix for explicitly created state-space models, specified as a matrix, a cell vector of matrices, or an empty array ([]). For implicitly created state-space models and before estimation,Dis[]and read only.

The observation innovations,εt, are independent Gaussian random variables with mean 0 and standard deviation 1. The observation-innovation coefficient matrix,Dt, specifies the additive error structure in the observation equation at periodt, for allt= 1,...,T。That is, the observation equation at periodtisyt=Ctxt+Dtεt

For time-invariant state-space models,Dis ann-by-hmatrix, wherenis the number of observations andhis the number of observation innovations per period.D*D'is the observation-innovation covariance matrix for all periods.

For time-varying state-space models,Dis aT-dimensional cell array, whereD{t}contains annt-by-htmatrix. If the number of observations or observation innovations changes at periodt, then the matrix dimensions betweenD{t-1}andD{t}vary.D{t}*D{t}'is the state-disturbance covariance matrix for periodt

NaNvalues in any coefficient matrix indicate unknown parameters in the state-space model.Dcontributes:

  • sum(isnan(D(:)))unknown parameters to time-invariant state-space models. In other words, if the state-space model is time invariant, then the software uses the same unknown parameters defined inDat each period.

  • numParamsDunknown parameters to time-varying state-space models, wherenumParamsD = sum(cell2mat(cellfun(@(x)sum(sum(isnan(x))),D,'UniformOutput',0)))。In other words, if the state-space model is time varying, then the software assigns a new set of parameters for each matrix inD

Data Types:double|cell

Initial state mean, specified as a numeric vector or an empty array ([]).Mean0has length equal to the number of initial states (size(A,1)orsize(A{1},1)).

Mean0is the mean of the Gaussian distribution of the states at period 0.

For implicitly created state-space models and before estimation,Mean0is[]and read only. However,estimatespecifiesMean0after estimation.

Data Types:double

Initial state covariance matrix, specified as a square matrix or an empty array ([]).Cov0has dimensions equal to the number of initial states (size(A,1)orsize(A{1},1)).

Cov0is the covariance of the Gaussian distribution of the states at period 0.

For implicitly created state-space models and before estimation,Cov0is[]and read only. However,estimatespecifiesCov0after estimation.

Diagonal elements ofCov0that have valueInfcorrespond to diffuse initial state distributions. This specification indicates complete ignorance or no prior knowledge of the initial state value. Subsequently, the software filters, smooths, and estimates parameters in the presence of diffuse initial state distributions using the diffuse Kalman filter. To use the standard Kalman filter for diffuse states instead, set each diagonal element ofCov0to a large, positive value, for example,1e7。This specification suggests relatively weak knowledge of the initial state value.

Data Types:double

Initial state distribution indicator, specified as a numeric vector or empty array ([]).StateTypehas length equal to the number of initial states.

For implicitly created state-space models or models with unknown parameters,StateTypeis[]and read only.

This table summarizes the available types of initial state distributions.

Value Initial State Distribution Type
0 Stationary (e.g., ARMA models)
1 The constant 1 (that is, the state is 1 with probability 1)
2 Nonstationary (e.g., random walk model, seasonal linear time series) orstatic state

例如,假设状态方程two state variables: The first state variable is an AR(1) process, and the second state variable is a random walk. Then,StateTypeis[0; 2]

For nonstationary states,dssmsetsCov0toInfby default. Subsequently, the software assumes that diffuse states are uncorrelated and implements the diffuse Kalman filter for filtering, smoothing, and parameter estimation. This specification imposes no prior knowledge on the initial state values of diffuse states.

Data Types:double

Parameter-to-matrix mapping function, specified as a function handle or an empty array ([]).ParamMapcompletely specifies the structure of the state-space model. That is,ParamMapdefinesA,B,C,D, and, optionally,Mean0,Cov0, andStateType。For explicitly created state-space models,ParamMapis[]and read only.

Data Types:function_handle

Object Functions

expand all

estimate Maximum likelihood parameter estimation of diffuse state-space models
refine 完善帮助扩散state-spa初始参数ce model estimation
disp Display summary information for diffuse state-space model
filter Forward recursion of diffuse state-space models
smooth Backward recursion of diffuse state-space models
irf Impulse response function (IRF) of state-space model
irfplot Plot impulse response function (IRF) of state-space model
forecast Forecast states and observations of diffuse state-space models

Copy Semantics

Value. To learn how value classes affect copy operations, seeCopying Objects

Examples

collapse all

创建一个包含两个状态空间模型independent states, x 1 , t and x 3 , t , and an observation, y t , that is the deterministic sum of the two states at time t x 1 is an AR(1) model with a constant and x 3 is a random walk. Symbolically, the state-space model is

[ x 1 , t x 2 , t x 3 , t ] = [ ϕ 1 c 1 0 0 1 0 0 0 1 ] [ x t - 1 , 1 x t - 1 , 2 x t - 1 , 3 ] + [ σ 1 0 0 0 0 σ 2 ] [ u t , 1 u t , 3 ]

y t = [ 1 0 1 ] [ x t , 1 x t , 2 x t , 3 ]

The state disturbances, u 1 , t and u 3 , t , are standard Gaussian random variables.

Specify the state-transition matrix.

A = [NaN NaN 0; 0 1 0; 0 0 1];

TheNaNvalues indicate unknown parameters.

Specify the state-disturbance-loading matrix.

B = [NaN 0; 0 0; 0 NaN];

Specify the measurement-sensitivity matrix.

C = [1 0 1];

Create a vector that specifies the state types. In this example:

  • x 1 , t is a stationary AR(1) model, so its state type is0

  • x 2 , t is a placeholder for the constant in the AR(1) model. Because the constant is unknown and is expressed in the first equation, x 2 , t is1for the entire series. Therefore, its state type is1

  • x 3 , t is a nonstationary, random walk with drift, so its state type is2

StateType = [0 1 2];

Create the state-space model usingdssm

Mdl = dssm(A,B,C,'StateType',StateType)
类型:状态空间模型Mdl = dssm状态向量ngth: 3 Observation vector length: 1 State disturbance vector length: 2 Observation innovation vector length: 0 Sample size supported by model: Unlimited Unknown parameters for estimation: 4 State variables: x1, x2,... State disturbances: u1, u2,... Observation series: y1, y2,... Observation innovations: e1, e2,... Unknown parameters: c1, c2,... State equations: x1(t) = (c1)x1(t-1) + (c2)x2(t-1) + (c3)u1(t) x2(t) = x2(t-1) x3(t) = x3(t-1) + (c4)u2(t) Observation equation: y1(t) = x1(t) + x3(t) Initial state distribution: Initial state means are not specified. Initial state covariance matrix is not specified. State types x1 x2 x3 Stationary Constant Diffuse

Mdlis adssmmodel object containing unknown parameters. A detailed summary ofMdlprints to the Command Window. If you do not specify the initial state covariance matrix, then the initial variance of x 3 , t isInf

It is good practice to verify that the state and observation equations are correct. If the equations are not correct, then expand the state-space equation and verify it manually.

创建一个包含两个状态空间模型random walk states. The observations are the sum of the two states, plus Gaussian error. Symbolically, the equation is

[ x t , 1 x t , 2 ] = [ 1 0 0 1 ] [ x t - 1 , 1 x t - 1 , 2 ] + [ σ 1 0 0 σ 2 ] [ u t , 1 u t , 2 ]

y t = [ 1 1 ] [ x t , 1 x t , 2 ] + σ 3 ε t

Define the state-transition matrix.

A = [1 0; 0 1];

Define the state-disturbance-loading matrix.

B = [NaN 0; 0 NaN];

Define the measurement-sensitivity matrix.

C = [1 1];

Define the observation-innovation matrix.

D = NaN;

Create a vector that specifies that both states are nonstationary.

StateType = [2; 2];

Create the state-space model usingdssm

Mdl = dssm(A,B,C,D,'StateType',StateType)
类型:状态空间模型Mdl = dssm状态向量ngth: 2 Observation vector length: 1 State disturbance vector length: 2 Observation innovation vector length: 1 Sample size supported by model: Unlimited Unknown parameters for estimation: 3 State variables: x1, x2,... State disturbances: u1, u2,... Observation series: y1, y2,... Observation innovations: e1, e2,... Unknown parameters: c1, c2,... State equations: x1(t) = x1(t-1) + (c1)u1(t) x2(t) = x2(t-1) + (c2)u2(t) Observation equation: y1(t) = x1(t) + x2(t) + (c3)e1(t) Initial state distribution: Initial state means are not specified. Initial state covariance matrix is not specified. State types x1 x2 Diffuse Diffuse

Mdlis andssmmodel containing unknown parameters. A detailed summary ofMdlprints to the Command Window.

Pass the data andMdltoestimateto estimate the parameters. During estimation, the initial state variances areInf, andestimateimplements the diffuse Kalman filter.

Create a diffuse state-space model, where:

  • The state x 1 , t is a stationary AR(2) model with ϕ 1 = 0 6 , ϕ 2 = 0 2 , and a constant 0.5. The state disturbance is a mean zero Gaussian random variable with standard deviation 0.3.

  • The state x 4 , t is a random walk. The state disturbance is a mean zero Gaussian random variable with standard deviation 0.05.

  • The observation y 1 , t is the difference between the current and previous value in the AR(2) state, plus a mean 0 Gaussian observation innovation with standard deviation 0.1.

  • The observation y 2 , t is the random walk state plus a mean 0 Gaussian observation innovation with standard deviation 0.02.

Symbolically, the state-space model is

[ x 1 , t x 2 , t x 3 , t x 4 , t ] = [ 0 6 0 2 0 5 0 1 0 0 0 0 0 1 0 0 0 0 1 ] [ x 1 , t - 1 x 2 , t - 1 x 3 , t - 1 x 4 , t - 1 ] + [ 0 3 0 0 0 0 0 0 0 0 5 ] [ u 1 , t u 4 , t ]

[ y 1 , t y 2 , t ] = [ 1 - 1 0 0 0 0 0 1 ] [ x 1 , t x 2 , t x 3 , t x 4 , t ] + [ 0 1 0 0 0 0 2 ] [ ε 1 , t ε 2 , t ]

The model has four states: x 1 , t is the AR(2) process, x 2 , t represents x 1 , t - 1 , x 3 , t is the AR(2) model constant, and x 4 , t is the random walk.

Define the state-transition matrix.

A = [0.6 0.2 0.5 0; 1 0 0 0; 0 0 1 0; 0 0 0 1];

Define the state-disturbance-loading matrix.

B = [0.3 0; 0 0; 0 0; 0 0.05];

Define the measurement-sensitivity matrix.

C = [1 -1 0 0; 0 0 0 1];

Define the observation-innovation matrix.

D = [0.1; 0.02];

Usedssmto create the state-space model. Identify the type of initial state distributions (StateType) by noting the following:

  • x 1 , t is a stationary AR(2) process.

  • x 2 , t is also a stationary AR(2) process.

  • x 3 , t is the constant 1 for all periods.

  • x 4 , t is nonstationary.

Set the initial state means (Mean0) to 0. The initial state mean for constant states must be 1.

Mean0 = [0; 0; 1; 0]; StateType = [0; 0; 1; 2]; Mdl = dssm(A,B,C,D,'Mean0',Mean0,'StateType',StateType)
类型:状态空间模型Mdl = dssm状态向量ngth: 4 Observation vector length: 2 State disturbance vector length: 2 Observation innovation vector length: 1 Sample size supported by model: Unlimited State variables: x1, x2,... State disturbances: u1, u2,... Observation series: y1, y2,... Observation innovations: e1, e2,... State equations: x1(t) = (0.60)x1(t-1) + (0.20)x2(t-1) + (0.50)x3(t-1) + (0.30)u1(t) x2(t) = x1(t-1) x3(t) = x3(t-1) x4(t) = x4(t-1) + (0.05)u2(t) Observation equations: y1(t) = x1(t) - x2(t) + (0.10)e1(t) y2(t) = x4(t) + (0.02)e1(t) Initial state distribution: Initial state means x1 x2 x3 x4 0 0 1 0 Initial state covariance matrix x1 x2 x3 x4 x1 0.21 0.16 0 0 x2 0.16 0.21 0 0 x3 0 0 0 0 x4 0 0 0 Inf State types x1 x2 x3 x4 Stationary Stationary Constant Diffuse

Mdlis adssmmodel object.dssmsets the initial state:

  • Covariance matrix for the stationary states to the asymptotic covariance of the AR(2) model

  • Variance for constant states to0

  • Variance for diffuse states toInf

You can display or modify properties ofMdlusing dot notation. For example, display the initial state covariance matrix.

Mdl.Cov0
ans =4×40.2143 0.1607 0 0 0.1607 0.2143 0 0 0 0 0 0 0 0 0 Inf

Reset the initial state means for the stationary states to their asymptotic values.

Mdl.Mean0(1:2) = 0.5/(1-0.2-0.6); Mdl.Mean0
ans =4×12.5000 2.5000 1.0000 0

Use a parameter mapping function to create a time-invariant state-space model, where the state model is AR(1) model. The states are observed with bias, but without random error. Set the initial state mean and variance, and specify that the state is stationary.

Write a function that specifies how the parameters inparamsmap to the state-space model matrices, the initial state values, and the type of state. Symbolically, the model is

$$\begin{array}{*{20}{c}}
{{x_t} = \phi {x_{t - 1}} + \sigma {u_t}}\\
{{y_t} = a{x_t}}
\end{array}.$$

% Copyright 2015 The MathWorks, Inc.function[A,B,C,D,Mean0,Cov0,StateType] = timeInvariantParamMap(params)% Time-invariant state-space model parameter mapping function example. This% function maps the vector params to the state-space matrices (A, B, C, and% D), the initial state value and the initial state variance (Mean0 and% Cov0), and the type of state (StateType). The state model is AR(1)% without observation error.varu1 = exp(params(2));% Positive variance constraintA = params(1); B = sqrt(varu1); C = params(3); D = []; Mean0 = 0.5; Cov0 = 100; StateType = 0;end

Save this code as a file namedtimeInvariantParamMap.mto a folder on your MATLAB® path.

Create the state-space model by passing the functiontimeInvariantParamMapas a function handle tossm

Mdl = ssm(@timeInvariantParamMap);

ssmimplicitly creates the state-space model. Usually, you cannot verify implicitly defined state-space models.

By default,ssmassigns a large scalar (1e7) to the initial state variance of all diffuse states in a standard state-space model. Using this specification, the software subsequently estimates, filters, and smooths a standard state-space model using the standard Kalman filter. A standard state-space model treatment is an approximation to results from an analysis that treats diffuse states using infinite variance. To implement the diffuse Kalman filter instead, convert the standard state-space model to a diffuse state-space model. This conversion attributes infinite variance to all diffuse states.

Explicitly create a two-dimensional standard state-space model. Specify that the first state equation is x 1 , t = x 1 , t - 1 + u 1 , t and that the second state equation is x 2 , t = 0 2 x 2 , t - 1 + u 2 , t 。Specify that the first observation equation is y 1 , t = x 1 , t + ε 1 , t and that the second observation equation is y 2 , t = x 2 , t + ε 2 , t 。Specify that the states are diffuse and nonstationary, respectively.

A = [1 0; 0 0.2]; B = [1 0; 0 1]; C = [1 0;0 1]; D = [1 0; 0 1]; StateType = [2 0]; MdlSSM = ssm(A,B,C,D,'StateType',StateType)
MdlSSM = State-space model type: ssm State vector length: 2 Observation vector length: 2 State disturbance vector length: 2 Observation innovation vector length: 2 Sample size supported by model: Unlimited State variables: x1, x2,... State disturbances: u1, u2,... Observation series: y1, y2,... Observation innovations: e1, e2,... State equations: x1(t) = x1(t-1) + u1(t) x2(t) = (0.20)x2(t-1) + u2(t) Observation equations: y1(t) = x1(t) + e1(t) y2(t) = x2(t) + e2(t) Initial state distribution: Initial state means x1 x2 0 0 Initial state covariance matrix x1 x2 x1 1.00e+07 0 x2 0 1.04 State types x1 x2 Diffuse Stationary

MdlSSMis anssmmodel object. In some cases,ssmcan detect the state type, but it is good practice to specify whether the state is stationary, diffuse, or the constant1。Because the model does not contain any unknown parameters,ssminfers the initial state distributions.

ConvertMdlSSMto a diffuse state-space model.

Mdl = dssm(MdlSSM)
类型:状态空间模型Mdl = dssm状态向量ngth: 2 Observation vector length: 2 State disturbance vector length: 2 Observation innovation vector length: 2 Sample size supported by model: Unlimited State variables: x1, x2,... State disturbances: u1, u2,... Observation series: y1, y2,... Observation innovations: e1, e2,... State equations: x1(t) = x1(t-1) + u1(t) x2(t) = (0.20)x2(t-1) + u2(t) Observation equations: y1(t) = x1(t) + e1(t) y2(t) = x2(t) + e2(t) Initial state distribution: Initial state means x1 x2 0 0 Initial state covariance matrix x1 x2 x1 Inf 0 x2 0 1.04 State types x1 x2 Diffuse Stationary

Mdlis adssmmodel object. The structures ofMdlandMdlSSMare equivalent, except that the initial state variance of the state inMdlisInfrather than1e7

To see the difference between the two models, simulate 10 periods of data from a state-space model that is similar toMdlSSM。Set the initial state covariance matrix to I 2

Mdl0 = MdlSSM; Mdl0.Cov0 = eye(2); T = 10; rng(1);% For reproducibilityy = simulate(Mdl0,T);

Obtain filtered and smoothed states fromMdlandMdlSSMusing the simulated data.

fY = filter(MdlSSM,y); fYD = filter(Mdl,y); sY = smooth(MdlSSM,y); sYD = smooth(Mdl,y);

Plot the filtered and smoothed states.

figure; subplot(2,1,1) plot(1:T,y(:,1),'-o',1:T,fY(:,1),'-d',1:T,fYD(:,1),'-*'); title('Filtered States for x_{1,t}') legend('Simulated Data','Filtered States -- MdlSSM','Filtered States -- Mdl'); subplot(2,1,2) plot(1:T,y(:,1),'-o',1:T,sY(:,1),'-d',1:T,sYD(:,1),'-*'); title('Smoothed States for x_{1,t}') legend('Simulated Data','Smoothed States -- MdlSSM','Smoothed States -- Mdl');

Figure contains 2 axes objects. Axes object 1 with title Filtered States for x indexOf 1 , t baseline contains 3 objects of type line. These objects represent Simulated Data, Filtered States -- MdlSSM, Filtered States -- Mdl. Axes object 2 with title Smoothed States for x indexOf 1 , t baseline contains 3 objects of type line. These objects represent Simulated Data, Smoothed States -- MdlSSM, Smoothed States -- Mdl.

figure; subplot(2,1,1) plot(1:T,y(:,2),'-o',1:T,fY(:,2),'-d',1:T,fYD(:,2),'-*'); title('Filtered States for x_{2,t}') legend('Simulated Data','Filtered States -- MdlSSM','Filtered States -- Mdl'); subplot(2,1,2) plot(1:T,y(:,2),'-o',1:T,sY(:,2),'-d',1:T,sYD(:,2),'-*'); title('Smoothed States for x_{2,t}') legend('Simulated Data','Smoothed States -- MdlSSM','Smoothed States -- Mdl');

Figure contains 2 axes objects. Axes object 1 with title Filtered States for x indexOf 2 , t baseline contains 3 objects of type line. These objects represent Simulated Data, Filtered States -- MdlSSM, Filtered States -- Mdl. Axes object 2 with title Smoothed States for x indexOf 2 , t baseline contains 3 objects of type line. These objects represent Simulated Data, Smoothed States -- MdlSSM, Smoothed States -- Mdl.

In addition to apparent transient behavior in the random walk, the filtered and smoothed states between the standard and diffuse state-space models appear nearly equivalent. The slight difference occurs becausefilterandsmoothset all diffuse state estimates in the diffuse state-space model to 0 while they implement the diffuse Kalman filter. Once the covariance matrices of the smoothed states attain full rank,filterandsmoothswitch to using the standard Kalman filter. In this case, the switching time occurs after the first period.

More About

expand all

Tips

  • SpecifyParamMapin a more general or complex setting, where, for example:

    • The initial state values are parameters.

    • In time-varying models, you want to use the same parameters for more than one period.

    • You want to impose parameter constraints.

  • You can create adssmmodel object that does not contain any diffuse states. However, subsequent computations, for example, filtering and parameter estimation, can be inefficient. If all states have stationary distributions or are the constant 1, then create anssmmodel object instead.

Algorithms

  • Default values forMean0andCov0:

    • 如果你explicitly specify the state-space model (that is, you provide the coefficient matricesA,B,C, and optionallyD), then:

      • For stationary states, the software generates the initial value using the stationary distribution. If you provide all values in the coefficient matrices (that is, your model has no unknown parameters), thendssmgenerates the initial values. Otherwise, the software generates the initial values during estimation.

      • For states that are always the constant 1,dssmsetsMean0to 1 andCov0to0

      • For diffuse states, the software setsMean0to 0 andCov0toInfby default.

    • If you implicitly specify the state-space model (that is, you provide the parameter vector to the coefficient-matrices-mapping functionParamMap), then the software generates the initial values during estimation.

  • For static states that do not equal 1 throughout the sample, the software cannot assign a value to the degenerate, initial state distribution. Therefore, set static states to2using the name-value pair argumentStateType。随后,该软件将静态状态as nonstationary and assigns the static state a diffuse initial distribution.

  • It is best practice to setStateTypefor each state. By default, the software generatesStateType, but this behavior might not be accurate. For example, the software cannot distinguish between a constant 1 state and a static state.

  • The software cannot inferStateTypefrom data because the data theoretically comes from the observation equation. The realizations of the state equation are unobservable.

  • dssmmodels do not store observed responses or predictor data. Supply the data wherever necessary using the appropriate input or name-value pair arguments.

  • Suppose that you want to create a diffuse state-space model using a parameter-to-matrix mapping function with this signature:

    [A,B,C,D,Mean0,Cov0,StateType,DeflateY] = paramMap(params,Y,Z)
    and you specify the model using an anonymous function
    Mdl = dssm(@(params)paramMap(params,Y,Z))
    The observed responsesYand predictor dataZare not input arguments in the anonymous function. IfYandZexist in the MATLAB Workspace before you createMdl, then the software establishes a link to them. Otherwise, if you passMdltoestimate, the software throws an error.

    The link to the data established by the anonymous function overrides all other corresponding input argument values ofestimate。This distinction is important particularly when conducting a rolling window analysis. For details, seeRolling-Window Analysis of Time-Series Models

Alternatives

Create anssmmodel object instead of adssmmodel object when:

  • The model does not contain any diffuse states.

  • The diffuse states are correlated with each other or to other states.

  • You want to implement the standard Kalman filter.

References

[1] Durbin J., and S. J. Koopman.Time Series Analysis by State Space Methods。2nd ed. Oxford: Oxford University Press, 2012.

Version History

Introduced in R2015b