Chapter 29. Forecasting
260
The forecast range
The range defaultsto the currently definedsample range. If this remains unchanged followingesti-
mation of the model in question, the forecast will be “within sample” and (with some qualifications
noted below) it will essentially duplicate the information available via the retrieval of fitted values
(see section29.2 above).
A common situation is that a model is estimated over a given sample and then forecasts are
wanted for a subsequent out-of-sample range. The simplest way to accomplish this is via the
--out-of-sample option to fcast. For example, assuming we have a quarterly time-series dataset
containing observations from 1980:1 to 2008:4, four of which are to be reserved for forecasting:
# reserve the last 4 observations
smpl 1980:1 2007:4
ols y 0 xlist
fcast --out-of-sample
This will generate a forecast from 2008:1 to 2008:4.
There are two other ways of adjusting the forecast range, offering finer control:
 Use the smpl command to adjust the sample range prior to invoking fcast.
 Use the optional startobs andendobs arguments to fcast (which shouldcome right after the
commandword). These values set the forecast range independently of the sample range.
What if one wants to generate a true forecast that goes beyond the available data? In that case
one can use the dataset command with the addobs parameter to add extra observations before
forecasting. For example:
# use the entire dataset, which ends in 2008:4
ols y 0 xlist
dataset addobs 4
fcast 2009:1 2009:4
But this will work as stated only if the set of regressors in xlist does not contain any stochastic
regressors other than lags of y. The dataset addobs command attempts to detect andextrapolate
certain common deterministic variables (e.g., time trend, periodic dummy variables). In addition,
lagged values of the dependent variable can be supported via a dynamic forecast (see below for
discussion of the static/dynamic distinction). But “future” values of any other included regressors
must be supplied before such a forecast is possible. Note that specific values in a series can be
set directly by date, for example: x1[2009:1] = 120.5. Or, if the assumption of no change in the
regressors is warranted, one can do something like this:
loop t=2009:1..2009:4
loop foreach i xlist
$i[t] = $i[2008:4]
endloop
endloop
Static, dynamic and rolling forecasts
The distinction between static and dynamic forecasts applies only to dynamic models, i.e., those
that feature one or more lags of the dependent variable. The simplest case is the AR(1) model,
y
t

0

1
y
t 1

t
(29.1)
How to convert pdf into powerpoint presentation - control Library platform:C# Create PDF from PowerPoint Library to convert pptx, ppt to PDF in C#.net, ASP.NET MVC, WinForms, WPF
Online C# Tutorial for Creating PDF from Microsoft PowerPoint Presentation
www.rasteredge.com
How to convert pdf into powerpoint presentation - control Library platform:VB.NET Create PDF from PowerPoint Library to convert pptx, ppt to PDF in vb.net, ASP.NET MVC, WinForms, WPF
VB.NET Tutorial for Export PDF file from Microsoft Office PowerPoint
www.rasteredge.com
Chapter 29. Forecasting
261
In some cases the presence of a lagged dependent variable is implicit in the dynamics of the error
term, for example
y
t
u
t
u
t
u
t 1

t
which implies that
y
t
1 y
t 1

t
Suppose we want to forecast y for period s using a dynamic model, say (29.1) for example. If
we have data on y available for period s   1 we could form a fitted value in the usual way: ˆy
s
ˆ
0
ˆ
1
y
s 1
. But suppose that data are available only up to s  2. In that case we can apply the
chain rule of forecasting:
ˆy
s 1
ˆ
0
ˆ
1
y
s 2
ˆy
s
ˆ
0
ˆ
1
ˆy
s 1
This is what is called a dynamic forecast. A static forecast, on the other hand, is simply a fitted
value (even if it happens to be computedout-of-sample).
Printing and saving forecasts
To be written.
29.4 Univariate forecast evaluation statistics
Let y
t
be the value of a variable of interest at time t and let f
t
be a forecast of y
t
. We define the
forecast error as e
t
y
t
f
t
. Given a series of T observations and associated forecasts we can
construct several measuresofthe overall accuracy oftheforecasts. Somecommonly usedmeasures
are the Mean Error (ME), Mean Squared Error (MSE), Root Mean SquaredError (RMSE), Mean Absolute
Error (MAE), Mean Percentage Error (MPE) and Mean Absolute Percentage Error (MAPE). These are
defined as follows.
ME 
1
T
XT
t1
e
t
MSE
1
T
XT
t1
e
2
t
RMSE 
v
u
u
u
t
1
T
XT
t1
e
2
t
MAE
1
T
XT
t1
je
t
j
MPE
1
T
XT
t1
100
e
t
y
t
MAPE 
1
T
XT
t1
100
je
t
j
y
t
Afurther relevant statistic is Theil’s U (Theil,1966), defined as the positive square root of
U
2
1
T
TX 1
t1
f
t1
y
t1
y
t
!
2
2
4
1
T
TX 1
t1
y
t1
y
t
y
t
!
2
3
5
1
The more accurate the forecasts, the lower the value of Theil’s U, which has a minimum of 0.1
This measure can be interpreted as the ratio of the RMSE of the proposed forecasting model to the
RMSE of a naïve model which simply predicts y
t1
y
t
for all t. The naïve model yields U  1;
values less than 1 indicate an improvement relative to this benchmark and values greater than 1 a
deterioration.
1
This statistic is sometimes called U
2
,to distinguish itfrom a related but different U defined in an earlier work by
Theil(1961).ItseemstobegenerallyacceptedthatthelaterversionofTheil’sUisasuperiorstatistic,soweignorethe
earlier version here.
control Library platform:VB.NET PowerPoint: Use PowerPoint SDK to Create, Load and Save PPT
starting guide for PPT document, we divide this page into three parts a fully customized blank PowerPoint file by using the smart PowerPoint presentation control
www.rasteredge.com
control Library platform:C# Create PDF from OpenOffice to convert odt, odp files to PDF in
public override void ConvertToDocument(DocumentType targetType, Stream stream). Description: Convert to PDF/TIFF and save it into stream. Parameters:
www.rasteredge.com
Chapter 29. Forecasting
262
In addition, Theil (1966, pp. 33–36) proposed a decomposition of the MSE which can be useful in
evaluatinga set offorecasts. Heshowedthat the MSEcouldbe broken down into three non-negative
components as follows
MSE
¯
 ¯y
2
s
f
rs
y
2
1 r
2
s
2
y
where
¯
f and ¯y are the sample means of the forecasts and the observations, s
f
and s
y
are the re-
spective standarddeviations (using T in the denominator), and r is the sample correlation between
yand f. Dividing through by MSE we get
¯
  y¯
2
MSE
s
f
rs
y
2
MSE
1 r2
s2
y
MSE
1
(29.2)
Theil labeled the three terms on the left-hand side of (29.2) the bias proportion (UM), regression
proportion (UR) and disturbance proportion (UD), respectively. If y and f represent the in-sample
observations of the dependent variable and the fitted values from a linear regression then the first
two components, UM and UR, will be zero (apart from rounding error), and the entire MSE will be
accounted for by the unsystematic part, U
D
. In the case of out-of-sample prediction, however (or
“prediction” over a sub-sample of the data used in the regression), U
M
and U
R
are not necessarily
close to zero, although this is a desirable property for a forecast to have. U
M
differs from zero if
and only if the mean of the forecasts differs from the mean of the realizations, and U
R
is non-zero
if and only if the slope of a simple regression of the realizations on the forecasts differs from 1.
The above-mentioned statistics are printed as part of the output of the fcast command. They can
also be retrieved in the form of a column vector usingthe function fcstats, which takes two series
arguments corresponding to y and f. The vector returned is
ME MSE MAE MPE MAPE U
U
M
U
R
U
D
0
(Note that the RMSE is not included since it can easily be obtained given the MSE.) The series given
as arguments to fcstats must not contain any missing values in the currently defined sample
range; use the smpl command to adjust the range if needed.
29.5 Forecasts based on VAR models
To be written.
29.6 Forecasting from simultaneous systems
To be written.
control Library platform:VB.NET PowerPoint: Merge and Split PowerPoint Document(s) with PPT
sample code in VB.NET to finish PowerPoint document splitting &ltsummary> ''' Split a document into 2 sub Note: If you want to see more PDF processing functions
www.rasteredge.com
control Library platform:VB.NET PowerPoint: VB Codes to Create Linear and 2D Barcodes on
PowerPoint PDF 417 barcode library is a mature and easy-to-use barcode Install and integrate our PowerPoint PLANET barcode creating tool into VB.NET
www.rasteredge.com
Chapter 30
The Kalman Filter
30.1 Preamble
The Kalman filter has been used “behind the scenes” in gretl for quite some time, in computing
ARMA estimates. But user access to the Kalman filter is new and it has not yet been tested to any
great extent. We have run some tests of relatively simple cases against the benchmark of SsfPack
Basic. This is state-space software written by Koopman, Shephard and Doornik anddocumented in
Koopman, Shephard and Doornik(1999). ItrequiresDoornik’soxprogram. . BothoxandSsfPack
are available as free downloads for academic use but neither is open-source; see http://www.
ssfpack.com.SinceKoopmanisoneoftheleadingresearchersinthisarea,presumablytheresults
from SsfPack are generally reliable. To date we have been able to replicate the SsfPack results in
gretl with a high degree of precision.
We welcome both success reports and bug reports.
30.2 Notation
It seems that in econometrics everyone is happy with y  X u, but we can’t, as a community,
make up our minds on a standardnotation for state-space models.Harvey(1989),Hamilton(1994),
Harvey and Proietti(2005)and Pollock(1999)allusedifferentconventions. Thenotationusedhere
is based on James Hamilton’s, with slight variations.
Astate-space model can be written as
t1
F
t
t
v
t
(30.1)
y
t
A
0
t
x
t
H
0
t
t
w
t
(30.2)
where (30.1) is the state transition equation and(30.2) isthe observation or measurement equation.
The state vector, 
t
,is (r 1) and the vector of observables, y
t
,is (n 1); x
t
is a (k 1) vector of
exogenous variables. The (r 1) vector v
t
and the (n1) vector w
t
are assumed to be vector white
noise:
Ev
t
v
0
s
 Q
t
for t s; otherwise 0
Ew
t
w
0
s
 R
t
for t s; otherwise 0
The number of time-series observations will be denoted by T. In the special case when F
t
 F,
H
t
H, A
t
A, Q
t
Q and R
t
R for all t, the model is said to be time-invariant.
The Kalman recursions
Using this notation, and assuming for the moment that v
t
and w
t
are mutually independent, the
Kalman recursions can be written as follows.
Initialization is via the unconditional mean and variance of 
1
:
ˆ

1j0
E
1
P
1j0
E
n
1
E
1

1
E
1
0
o
263
control Library platform:VB.NET PowerPoint: Sort and Reorder PowerPoint Slides by Using VB.
you can choose to show your PPT presentation in inverted clip art or screenshot to PowerPoint document slide & profession imaging controls, PDF document, image
www.rasteredge.com
control Library platform:VB.NET Create PDF from OpenOffice to convert odt, odp files to PDF
Convert OpenOffice Spreadsheet data to PDF. Export PDF document from OpenOffice Presentation. Turn ODT, ODS, ODP forms into fillable PDF formats.
www.rasteredge.com
Chapter 30. The Kalman Filter
264
Usually these are given by
ˆ
1j0
0 and
vecP
1j0

I
r2
F F
1
vecQ
(30.3)
but see belowfor further discussion ofthe initial variance.
Iteration then proceeds in two steps.1 First we update the estimate of the state
ˆ

t1jt
F
t
ˆ

tjt 1
K
t
e
t
(30.4)
where e
t
is the prediction error for the observable:
e
t
y
t
A
0
t
x
t
H
0
t
ˆ

tjt 1
and K
t
is the gain matrix, given by
K
t
F
t
P
tjt 1
H
t
ÖÖÖ
1
t
(30.5)
with
ÖÖÖ
t
H
0
t
P
tjt 1
H
t
R
t
The secondstep then updates the estimate of the variance of the state using
P
t1jt
F
t
P
tjt 1
F
0
t
K
t
Ö
Ö
Ö
t
K
0
t
Q
t
(30.6)
Cross-correlated disturbances
The formulation given above assumes mutual independence of the disturbances in the state and
observation equations, v
t
and w
t
.This assumption holds good in many practical applications, but
amore general formulation allows for cross-correlation. In place of (30.1)–(30.2) we may write

t1
F
t

t
B
t
"""
t
y
t
A
0
t
x
t
H
0
t
t
C
t
"
"
"
t
where """
t
is a (p 1) disturbance vector, all the elements of which have unit variance, B
t
is (r p)
and C
t
is (n p).
The no-correlation case is nestedthus: define v
t
and w
t
as modified versions of v
t
and w
t
,scaled
such that each element has unit variance, and let
"""
t
"
v
t
w
t
#
so that p r n. Then (suppressing time subscripts for simplicity) let
B
h
———
rr
.
.
.
. 0
rn
i
C
h
0
nr
.
.
.
. Ó
Ó
Ó
nn
i
where —
— and Ó
Ó
Óare lower triangular matrices satisfying Q —
——
0
and R Ó
Ó
ÓÓ
Ó
Ó
0
respectively. The zero
sub-matrices in the above expressions for B and C produce the case of mutual independence; this
corresponds to the condition BC0 0.
In the general case p is not necessarily equal to r n, and BC
0
may be non-zero. This means that
the Kalman gain equation (30.5) must be modified as
K
t
F
t
P
tjt 1
H
t
B
t
C
0
t
ÖÖÖ
1
t
(30.7)
Otherwise, the equations given earlier hold good, if we write BB0 in place of Q and CC0 in place of
R.
In the account of gretl’s Kalman facility below we take the uncorrelated case as the baseline, but
addremarks on how to handle the correlated case where applicable.
1
For a justification of the following formulae see the classic book byAnderson and Moore (1979) or, for a more
modern treatment,Pollock (1999)orHamilton(1994). A transcription of R. E. Kalman’s original paper (Kalman,1960) is
available athttp://www.cs.unc.edu/~welch/kalman/kalmanPaper.html.
control Library platform:VB.NET PowerPoint: Add Image to PowerPoint Document Slide/Page
to add, insert or delete any certain PowerPoint slide without a multi-page PPT document into 2, 4, 6 powerful & profession imaging controls, PDF document, tiff
www.rasteredge.com
control Library platform:C# PDF Text Extract Library: extract text content from PDF file in
But sometimes, we need to extract or fetch text content from source PDF document file for word processing, presentation and desktop publishing applications.
www.rasteredge.com
Chapter 30. The Kalman Filter
265
30.3 Intended usage
The Kalman filter can be used in three ways: two of these are the classic forward and backward
pass, or filteringand smoothing respectively; the thirduse issimulation. In the filtering/smoothing
case you have the data y
t
andyou want to reconstruct the states 
t
(andthe forecast errors asa by-
product), but we may also have a computational apparatus that does the reverse: given artificially-
generated series w
t
and v
t
,generate the states 
t
(and the observables y
t
as a by-product).
The usefulness of the classical filter is well known; the usefulness of the Kalman filter as a sim-
ulation tool may be huge too. Think for instance of Monte Carlo experiments, simulation-based
inference—seeGourierouxandMonfort(1996)—or Bayesian methods, especially in the context of
the estimation ofDSGE models.
30.4 Overview of syntax
Using the Kalman filter in gretl is a two-step process. First you set up your filter, using a block
of commands starting with kalman and ending with end kalman—much like the gmm command.
Then you invoke the functions kfilter, ksmooth or ksimul to do the actual work. The next two
sections expand on these points.
30.5 Defining the filter
Each line within the kalman ... end kalman block takes the form
keyword value
where keyword represents a matrix, as shown below. (An additional matrix which may be useful in
some cases is introduced later under the heading “Constant term in the state transition”.)
Keyword
Symbol Dimensions
obsy
y
Tn
obsymat
H
rn
obsx
x
Tk
obsxmat
A
kn
obsvar
R
nn
statemat
F
rr
statevar
Q
rr
inistate
ˆ

1j0
r1
inivar
P
1j0
rr
For the data matrices y and x the corresponding value may be the name of a predefined matrix, the
name of a data series, or the name of a list of series.
2
For the other inputs, value may be the name of a predefined matrix or, if the input in question
happens to be (11), the name of a scalar variable or a numerical constant. If the value of a
coefficient matrix is given as the name of a matrix or scalar variable, the input is not “hard-wired”
into the Kalman structure, rather a record is made of the name of the variable and on each run
of a Kalman function (as described below) its value is re-read. It is therefore possible to write one
kalmanblock andthen do several filteringor smoothingpassesusingdifferent setsofcoefficients.3
2Note thatthedatamatricesobsyand obsxhaveT rows. . Thatis,thecolumnvectorsy
t
and x
t
in (30.1) and (30.2)
arein factthetransposesof the t-dated rowsof the fullmatrices.
3
Note, however, that the dimensionsofthe variousinput matricesare defined via the initialkalman set-up and it is
an errorif any ofthematricesarechanged in size.
Chapter 30. The Kalman Filter
266
An example of this technique is provided later, in the example scripts30.1 and30.2. This facility
to alter the values of the coefficients between runs of the filter is to be distinguished from the case
of time-varying matrices, which is discussed below.
Not all of the above-mentioned inputs need be specified in every case; some are optional. (In
addition, you can specify the matrices in any order.) The mandatory elements are y, H, F and Q, so
the minimal kalman block looks like this:
kalman
obsy y
obsymat H
statemat F
statevar Q
end kalman
The optional matrices are listed below, along with the implication of omitting the given matrix.
Keyword
If omitted...
obsx
no exogenous variables in observation equation
obsxmat
no exogenous variables in observation equation
obsvar
no disturbance term in observation equation
inistate
ˆ

1j0
is set to a zero vector
inivar
P
1j0
is set automatically
It might appear that the obsx (x) and obsxmat (A) matrices must go together—either both are
given or neither is given. But an exception is granted for convenience. If the observation equation
includesa constant but no additional exogenous variables,you can give a (1n) value for Awithout
having to specify obsx. More generally, if the row dimension of A is 1 greater than the column
dimension of x, it is assumed that the first element of A is associated with an implicit column of
1s.
Regarding the automatic initialization of P
1j0
(in case no inivar input is given): by default this
is done as in equation (30.3). However, this method is applicable only if all the eigenvalues of F
lie inside the unit circle. If this condition is not satisfied we instead apply a diffuse prior, setting
P
1j0
I
r
with   107. Ifyou wish to impose this diffuse prior from the outset, appendthe option
flag --diffuse to the end kalman statement.4
Time-varying matrices
Any or all of the matrices obsymat, obsxmat, obsvar, statemat and statevar may be time-
varying. In that case the value corresponding to the matrix keyword should be given in a special
form: the name of an existing matrix plus a function call which modifies that matrix, separated by
asemicolon. Note that in this case you must use a matrix variable, even if the matrix in question
happens to be 1 1.
For example, suppose the matrixH is time-varying. Then we might write
obsymat H ; modify_H(&H, theta)
where modify_H is a user-defined function which modifies matrix H (and theta is a suitable addi-
tional argument to that function, ifrequired).
4
Initialization of the Kalman filter outside of the case where equation (30.3) applies has been the subject of much
discussion in theliterature—see for exampledeJong(1991),Koopman(1997). At presentgretldoesnotimplement any
ofthemoreelaborate proposalsthathavebeen made.
Chapter 30. The Kalman Filter
267
The above is just an illustration: the matrix argument doesnot have to come first, andthe function
can have as many arguments as you like. The essential point is that the function must modify the
specified matrix, which requires that it be given as an argument in “pointer” form (preceded by &).
The function need not return any value directly; if it does, that value is ignored.
Such matrix-modifying functions will be called at each time-step of the filter operation, prior to
performing any calculations. They have access to the current time-step of the Kalman filter via the
internal variable $kalman_t, which has value 1 on the first step, 2 on the second, and so on, up
to step T. They also have access to the previous n-vector of forecast errors, e
t 1
,under the name
$kalman_uhat. When t 1 this will be a zero vector.
Correlated disturbances
Defining a filter in which the disturbances v
t
and w
t
are correlated involvesone modification to the
account given above. If you append the --cross option flag to the end kalman statement, then
the matrices corresponding to the keywords statevar and obsvar are interpreted not as Q and R
but rather as B and C as discussed in section30.2. Gretl then computes Q  BB
0
and R  CC
0
as
well as the cross-product BC
0
and utilizes the modified expression for the gain as given in equation
(30.7). As mentioned above, B should be (r p) and C should be (np), where p is the number of
elements in the combined disturbance vector "
"
"
t
.
Constant term in the state transition
In some applications it is useful to be able to represent a constant term in the state transition
equation explicitly; that is, equation (30.1) becomes

t1
 F
t

t
v
t
(30.8)
This is never strictly necessary; the system (30.1) and (30.2) is general enough to accommodate
such a term, by absorbing it as an extra (unvarying) element in the state vector. But this comes
at the cost of expanding all the matrices that touch the state (
, F, v, Q, H), making the model
relatively awkward to formulate and forecasts relatively expensive to compute.
As a simple illustration, consider a univariate model in which the state, s
t
,is just a random walk
with drift  and the observed variable, y
t
,is the state plus white noise:
s
t1
 s
t
v
t
(30.9)
y
t
s
t
w
t
(30.10)
Putting this into the standard form of(30.1) and (30.2) we get:
"
s
t1
#
"
1 1
0 1
#"
s
t
#
"
v
t
0
#
;
Q
"
2
v
0
0
0
#
y
t
h
1 0
i
"
s
t
#
w
t
In such a simple case the notational and computational burden is not very great; nonetheless it is
clearly more “natural” to express this system in the form of(30.9) and (30.10) and in a multivariate
model the gain in parsimony could be substantial.
For this reason we support the use of an additional named matrix in the kalman setup, namely
stconst. This corresponds to 
in equation (30.8); it should be an r 1 vector (or if r  1 may be
given as the name of a scalar variable). The use of stconst in setting up a filter corresponding to
(30.9) and (30.10) is shown below.
matrix H = {1}
matrix R = {1}
Chapter 30. The Kalman Filter
268
matrix F = {1}
matrix Q = {1}
matrix mu = {0.05}
kalman
obsy y
obsymat H
obsvar R
statemat F
statevar Q
stconst mu
end kalman
Handling of missing values
It is acceptable for the data matrices, obsy and obsx, to contain missing values. In this case the
filtering operation will work around the missing values, and the ksmooth function can be used to
obtain estimates of these values. However, there are two points to note.
First, gretl’s default behavior is to skipmissingobservations when constructing matrices from data
series. To change this, use the set command thus:
set skip_missing off
Second, the handling of missing values is not yet quite right for the case where the observable
vector y
t
contains more than one element. At present, if any of the elements of y
t
are missing
the entire observation is ignored. Clearly it should be possible to make use of any non-missing
elements, and this is not very difficult in principle, it’s just awkward and is not implemented yet.
Persistence and identity of the filter
At present there is no facility to create a “named filter”. Only one filter can exist at any point
in time, namely the one created by the last kalman block.
5
If a filter is already defined, and you
give a new kalman block, the old filter is over-written. Otherwise the existing filter persists (and
remains available for the kfilter, ksmooth and ksimul functions) until either (a) the gretl session
is terminated or (b) the command delete kalman is given.
30.6 The kfilter function
Once a filter is established, as discussed in the previous section, kfilter can be used to run a
forward, forecasting pass. This function returns a scalar code: 0 for successful completion, or 1
if numerical problems were encountered. On successful completion, two scalar accessor variables
become available: $kalman_lnl, which gives the overall log-likelihood under the joint normality
assumption,
‘  
1
2
2
4
nT log2 
XT
t1
logjÖÖÖ
t
j
XT
t1
e
0
t
ÖÖÖ
1
t
e
t
3
5
and $kalman_s2, which gives the estimated variance,
ˆ
2
1
nT
XT
t1
e
0
t
Ö
Ö
Ö
1
t
e
t
5
Thisisnotquitetrue: moreprecisely,therecanbe nomorethan one Kalmanfilterateachlevel of functionexecution.
That is, if a gretl script creates a Kalman filter, a user-defined function called from that script may also create a filter,
withoutinterfering with theoriginal one.
Chapter 30. The Kalman Filter
269
(but see below for modifications to these formulae for the case of a diffuse prior). In addition the
accessor $kalman_llt gives a (T 1) vector, element t of which is
t
 
1
2
h
nlog2logjÖ
Ö
Ö
t
je
0
t
Ö
Ö
Ö
1
t
e
t
i
The kfilter function does not require any arguments, but up to five matrix quantities may be
retrieved via optional pointer arguments. Each of these matrices has T rows, one for each time-
step; the contents of the rows are shown in the following listing.
1. Forecast errors for the observable variables: e
0
t
,n columns.
2. Variance matrix for the forecast errors: vechÖÖÖ
t
0, nn1=2 columns.
3. Estimate of the state vector:
ˆ

0
tjt 1
,r columns.
4. MSE of estimate of the state vector: vechP
tjt 1
0
,rr 1=2 columns.
5. Kalman gain: vecK
t
0
,rn columns.
Unwanted trailing arguments can be omitted, otherwise unwanted arguments can be skipped by
using the keyword null. For example, the following call retrieves the forecast errors in the matrix
Eand the estimate of the state vector in S:
matrix E S
kfilter(&E, null, &S)
Matrices given as pointer arguments do not have to be correctly dimensioned in advance; they will
be resizedto receive the specified content.
Further note: in general, the arguments to kfilter should all be matrix-pointers, but under two
conditions you can give a pointer to a series variable instead. The conditions are: (i) the matrix
in question has just one column in context (for example, the first two matrices will have a single
column if the length of the observables vector, n, equals 1) and (ii) the time-series length of the
filter is equal to the current gretl sample size.
Likelihood under the diffuse prior
There seems to be general agreement in the literature that the log-likelihood calculation should
be modified in the case of a diffuse prior for P
1j0
. However, it is not clear to us that there is a
well-defined “correct” method for this. At present we emulate SsfPack (seeKoopmanetal.(1999)
and section30.1). In case P
1j0
I
r
,we set d  r and calculate
‘  
1
2
2
4
nT  dlog2
XT
t1
logjÖÖÖ
t
j
XT
t1
e
0
t
ÖÖÖ
1
t
e
t
dlog
3
5
and
ˆ
2
1
nT  d
XT
t1
e
0
t
ÖÖÖ
1
t
e
t
30.7 The ksmooth function
This function returns the (T r) matrix of smoothed estimates of the state vector—that is, esti-
mates based on all T observations: row t of this matrix holds
ˆ

0
tjT
. This function has no required
arguments but it offers one optional matrix-pointer argument, which retrieves the variance of the
smoothed state estimate, P
tjT
.The latter matrix is (T rr 1=2); each row is in transposedvech
form. Examples:
Documents you may be interested
Documents you may be interested