DEFINITION MODULE AR1Fit;
(*******************************************************************
Module AR1Fit (Version 1.0)
Copyright (c) 1995-2006 by Dimitrios Gyalistras and ETH Zurich.
Purpose Fits the parameters of a multivariate AR1-process.
Remarks See e.g. Richardson, C.W., 1981: Stochastic simulation
of daily precipitation, temperature and solar radiation.
Water Resour. Res., 17:1, p182-190.
Programming
o Design
Dimitrios Gyalistras 12/05/1995
o Implementation
Dimitrios Gyalistras 12/05/1995
ETH Zurich
Systems Ecology
CHN E 35.1
Universitaetstrasse 16
8092 Zurich
SWITZERLAND
URLs:
<mailto:RAMSES@env.ethz.ch>
<http://www.sysecol.ethz.ch>
<http://www.sysecol.ethz.ch/SimSoftware/RAMSES>
Last revision of definition: 24/05/2002 AF
*******************************************************************)
IMPORT Errors;
FROM LgMatrices IMPORT LMatrix, LVector;
(******************************************************************)
CONST (* result codes returned *)
allOk = Errors.allOk;
notDone = Errors.onlyAnInsert;
(*
Note: the dimensions of all LVector and LMatrix objects used below
are determined automatically via procedures LgMatrices.NElems,
LgMatrices.NRows and LgMatrices.NCols.
*)
PROCEDURE GetCovMats( data : LMatrix;
errorIfMisCov : BOOLEAN;
M : LVector; (* out *)
C0 : LMatrix; (* out *)
C1 : LMatrix; (* out *)
VAR resCode : INTEGER;
VAR errTxt : ARRAY OF CHAR );
(*
Given in data realizations of a N-dimensional stochastic process
(variables = rows (!), realizations = columns), this procedure
estimates the lag-0 and lag-1 corelation matrices C0 and C1 of the
process. M returns the time series means. If errorIfMisCov = TRUE
and a covariance is a missing value, the procedure will return
FALSE.
*)
PROCEDURE FitAR1( C0 : LMatrix;
C1 : LMatrix;
A : LMatrix; (* out *)
B : LMatrix; (* out *)
VAR resCode : INTEGER;
VAR errTxt : ARRAY OF CHAR );
(*
Given the N x N sized lag-0 and lag-1 covariance matrices C0 and
C1, this procedure determines the N x N sized matrices A and B of
the correspoding stochastic AR(1) process
x(k+1) = A*x(k) + B*e(k),
where k is the time step, x is the state vector with E[x(i)]
= 0 for all system states i, and e is a vector of independent
random components from a normal distribution N(0,1).
NOTE: The procedure does not accept missing values in the
covariance matrices!
*)
END AR1Fit.