DLM demo no 2, testing DLM functions
Generate seasonal data and fit DLM model with 12 seasons.
Data
t = (1:1:(6*12))'; % time n = length(t); s = 0.1; % obs error std y = 2 + 0.5*(t-0)/12.*((t-0)<2*12) + ... 0.5*(2*12)/12.*((t-0)>=2*12) + ... 0.8*sin((t-0)/12*2*pi) + ... randn(n,1)*s;
figure(1); clf plot(t,y,'o-'); xlabel('time'); ylabel('y'); title('observations');grid;
Model error diagonal, first non zero values.
w123 = [0.0000,3.1e-5,1e-8,1e-8,1e-8,1e-8];
Options for dlmfit function. Use harmonic functions with 2 components and 12 seasons. Optimize some variance parameters using maximum likelihood.
clear options
options.ns = 12;
options.trig = 2;
options.opt = 1;
options.winds = [0 1 2 2 2 2];
DLM fit.
out = dlmfit(y,s,w123,[],[],[],options);
Iteration Func-count min f(x) Procedure
0 1 56.4488
1 3 56.4488 initial simplex
2 5 48.2807 expand
3 7 33.1171 expand
4 9 -166.988 expand
5 11 -214.797 expand
6 13 -214.797 contract outside
7 15 -214.797 contract inside
8 17 -214.797 contract inside
9 19 -216.244 contract inside
10 21 -217.027 contract inside
11 22 -217.027 reflect
12 24 -217.027 contract inside
13 26 -217.027 contract inside
14 28 -217.027 contract inside
15 30 -217.044 contract inside
16 31 -217.044 reflect
17 33 -217.044 contract inside
18 35 -217.045 contract outside
19 37 -217.046 contract inside
20 38 -217.046 reflect
21 40 -217.046 contract inside
22 42 -217.046 contract inside
23 44 -217.046 contract inside
24 46 -217.046 contract inside
25 48 -217.046 contract outside
26 50 -217.046 contract inside
27 51 -217.046 reflect
28 53 -217.046 contract inside
29 54 -217.046 reflect
30 56 -217.046 contract inside
31 58 -217.046 contract outside
32 60 -217.046 contract inside
33 61 -217.046 reflect
34 63 -217.046 contract inside
35 65 -217.046 contract inside
36 67 -217.046 contract inside
37 68 -217.046 reflect
38 70 -217.046 contract inside
39 71 -217.046 reflect
40 73 -217.046 contract inside
41 75 -217.046 contract outside
42 77 -217.046 contract inside
43 78 -217.046 reflect
44 80 -217.046 contract inside
45 82 -217.046 contract inside
46 84 -217.046 contract outside
47 86 -217.046 contract inside
48 88 -217.046 contract inside
49 90 -217.046 contract inside
50 94 -217.046 shrink
51 98 -217.046 shrink
52 102 -217.046 shrink
53 104 -217.046 contract outside
54 106 -217.046 contract outside
55 110 -217.046 shrink
56 112 -217.046 contract inside
57 116 -217.046 shrink
Optimization terminated:
the current x satisfies the termination criteria using OPTIONS.TolX of 1.000000e-04
and F(X) satisfies the convergence criteria using OPTIONS.TolFun of 1.000000e-04
woptv =
0x1 empty double column vector
woptw =
0.0085116
1.3657e-09
woptg =
0x1 empty double column vector
Default plots.
dlmplot(out);