nag_tsa_uni_garch_asym1_estim (g13fa) estimates the parameters of either a standard univariate regression GARCH process, or a univariate regression-type I
process (see
Engle and Ng (1993)).
Note: the interface to this routine has changed since earlier releases of the toolbox:
At Mark 25: |
nreg was made optional |
A univariate regression-type I
process, with
coefficients
, for
,
coefficients
, for
, and
linear regression coefficients
, for
, can be represented by:
where
or
. Here
is a standardized Student's
-distribution with
degrees of freedom and variance
,
is the number of terms in the sequence,
denotes the endogenous variables,
the exogenous variables,
the regression mean,
the regression coefficients,
the residuals,
the conditional variance,
the number of degrees of freedom of the Student's
-distribution, and
the set of all information up to time
.
Note: if the
, where
is known (not to be estimated by
nag_tsa_uni_garch_asym1_estim (g13fa)) then
(1) can be written as
, where
. This corresponds to the case
No Regression and No Mean, with
replaced by
.
Engle R (1982) Autoregressive conditional heteroskedasticity with estimates of the variance of United Kingdom inflation Econometrica 50 987–1008
Not applicable.
None.
function g13fa_example
fprintf('g13fa example results\n\n');
num = 100;
yt = [ 9.04; 9.49; 9.12; 9.23; 9.35;
9.09; 9.75; 9.23; 8.76; 9.17;
9.20; 9.64; 8.74; 9.23; 9.42;
9.70; 9.55; 10.00; 9.18; 9.77;
9.80; 9.56; 9.28; 9.68; 9.51;
9.51; 8.97; 9.30; 9.52; 9.41;
9.53; 9.75; 9.72; 9.38; 9.28;
9.42; 9.74; 9.75; 9.60; 9.90;
9.06; 9.92; 9.21; 9.57; 9.42;
8.65; 8.85; 9.61; 10.77; 10.19;
10.47; 10.10; 10.21; 9.96; 9.66;
9.79; 10.30; 9.68; 10.08; 10.38;
9.69; 9.02; 9.89; 10.46; 10.47;
9.99; 9.76; 9.78; 9.62; 10.43;
10.42; 9.95; 9.95; 9.70; 10.24;
9.78; 9.98; 8.73; 10.23; 9.10;
10.27; 9.85; 10.44; 10.30; 10.08;
10.20; 10.14; 9.89; 9.90; 11.33;
9.71; 9.40; 9.97; 10.92; 9.76;
10.16; 10.43; 9.60; 10.29; 10.03];
x = [0.12, 2.40; 0.12, 2.40; 0.13, 2.40; 0.14, 2.40; 0.14, 2.40;
0.15, 2.40; 0.16, 2.40; 0.16, 2.40; 0.17, 2.40; 0.18, 2.41;
0.19, 2.41; 0.19, 2.41; 0.20, 2.41; 0.21, 2.41; 0.21, 2.41;
0.22, 2.41; 0.23, 2.41; 0.23, 2.41; 0.24, 2.41; 0.25, 2.42;
0.25, 2.42; 0.26, 2.42; 0.26, 2.42; 0.27, 2.42; 0.28, 2.42;
0.28, 2.42; 0.29, 2.42; 0.30, 2.42; 0.30, 2.42; 0.31, 2.43;
0.32, 2.43; 0.32, 2.43; 0.33, 2.43; 0.33, 2.43; 0.34, 2.43;
0.35, 2.43; 0.35, 2.43; 0.36, 2.43; 0.37, 2.43; 0.37, 2.44;
0.38, 2.44; 0.38, 2.44; 0.39, 2.44; 0.39, 2.44; 0.40, 2.44;
0.41, 2.44; 0.41, 2.44; 0.42, 2.44; 0.42, 2.44; 0.43, 2.45;
0.43, 2.45; 0.44, 2.45; 0.45, 2.45; 0.45, 2.45; 0.46, 2.45;
0.46, 2.45; 0.47, 2.45; 0.47, 2.45; 0.48, 2.45; 0.48, 2.46;
0.49, 2.46; 0.49, 2.46; 0.50, 2.46; 0.50, 2.46; 0.51, 2.46;
0.51, 2.46; 0.52, 2.46; 0.52, 2.46; 0.53, 2.46; 0.53, 2.47;
0.54, 2.47; 0.54, 2.47; 0.54, 2.47; 0.55, 2.47; 0.55, 2.47;
0.56, 2.47; 0.56, 2.47; 0.57, 2.47; 0.57, 2.47; 0.57, 2.48;
0.58, 2.48; 0.58, 2.48; 0.59, 2.48; 0.59, 2.48; 0.59, 2.48;
0.60, 2.48; 0.60, 2.48; 0.61, 2.48; 0.61, 2.48; 0.61, 2.49;
0.62, 2.49; 0.62, 2.49; 0.62, 2.49; 0.63, 2.49; 0.63, 2.49;
0.63, 2.49; 0.64, 2.49; 0.64, 2.49; 0.64, 2.49; 0.64, 2.50];
dist = 't';
n1 = int64(1);
ip = n1;
iq = n1;
isym = n1;
mn = n1;
nreg = 2*n1;
copts = [true; true];
maxit = int64(200);
tol = 0.00001;
gammaval = -0.1;
theta = [0.05; 0.1; 0.15; gammaval; 2.6; 1.5; 0; 0];
nt = 4*n1;
[theta, se, sc, covar, hp, et, ht, lgf, ifail] = ...
g13fa( ...
dist, yt, x, ip, iq, mn, isym, theta, 0, copts, maxit, tol);
[fht, ifail] = g13fb( ...
nt, ip, iq, theta, gammaval, ht, et);
fprintf('\n Parameter Standard\n');
fprintf(' estimates errors\n');
fprintf('Alpha0 %16.2f%16.2f\n', theta(1), se(1));
l = 2;
for i = l:l+iq-1
fprintf('Alpha%d %16.2f%16.2f\n', i-1, theta(i), se(i));
end
l = l+iq;
fprintf('\n');
for i = l:l+ip-1
fprintf(' Beta%d %16.2f%16.2f\n', i-l+1, theta(i), se(i));
end
l = l+ip;
if (isym == 1)
fprintf('\n Gamma %16.2f%16.2f\n', theta(l), se(l));
l = l+1;
end
if (dist == 't')
fprintf('\n DF %16.2f%16.2f\n', theta(l), se(l));
l = l + 1;
end
if (mn == 1)
fprintf('\n B0 %16.2f%16.2f\n', theta(l), se(l));
l = l + 1;
end
for i = l:l+nreg-1
fprintf(' B%d %16.2f%16.2f\n', i-l+1, theta(i), se(i));
end
fprintf('\nVolatility forecast = %12.4f\n', fht(nt));