-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathts_prior.m
115 lines (107 loc) · 2.5 KB
/
ts_prior.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
function [aols,vbar,a0,ssig1,a02mo] = ts_prior(rawdat,tau,p,plag,const)
yt = rawdat(plag+1:tau+plag,:)';
%m is the number of elements in the state vector
if const==1 % including constants
m = p + plag*(p^2);
Zt=[];
for i = plag+1:tau+plag
ztemp = eye(p);
for j = 1:plag;
xlag = rawdat(i-j,1:p);
xtemp = zeros(p,p*p);
for jj = 1:p;
xtemp(jj,(jj-1)*p+1:jj*p) = xlag;
end
ztemp = [ztemp xtemp];
end
Zt = [Zt ; ztemp];
end
else
m = plag*(p^2);
Zt=[];
for i = plag+1:tau+plag
ztemp=[];
for j = 1:plag;
xlag = rawdat(i-j,1:p);
xtemp = zeros(p,p*p);
for jj = 1:p;
xtemp(jj,(jj-1)*p+1:jj*p) = xlag;
end
ztemp = [ztemp xtemp];
end
Zt = [Zt ; ztemp];
end
end;
vbar = zeros(m,m);
xhy = zeros(m,1);
for i = 1:tau
zhat1 = Zt((i-1)*p+1:i*p,:);
vbar = vbar + zhat1'*zhat1;
xhy = xhy + zhat1'*yt(:,i);
end
vbar = inv(vbar);
aols = vbar*xhy;
sse2 = zeros(p,p);
for i = 1:tau
zhat1 = Zt((i-1)*p+1:i*p,:);
sse2 = sse2 + (yt(:,i) - zhat1*aols)*(yt(:,i) - zhat1*aols)';
end
hbar = sse2./tau;
vbar = zeros(m,m);
for i = 1:tau
zhat1 = Zt((i-1)*p+1:i*p,:);
vbar = vbar + zhat1'*inv(hbar)*zhat1;
end
vbar = inv(vbar);
achol = chol(hbar)';
ssig = zeros(p,p);
for i = 1:p
ssig(i,i) = achol(i,i);
for j = 1:p
achol(j,i) = achol(j,i)/ssig(i,i);
end
end
achol = inv(achol);
numa = p*(p-1)/2;
a0 = zeros(numa,1);
ic = 1;
for i = 2:p
for j = 1:i-1
a0(ic,1) = achol(i,j);
ic = ic + 1;
end
end
ssig1 = zeros(p,1);
for i = 1:p
ssig1(i,1) = log(ssig(i,i)^2);
end
hbar1 = inv(tau*hbar);
hdraw = zeros(p,p);
a02mo = zeros(numa,numa);
a0mean = zeros(numa,1);
for irep = 1:4000
hdraw = wish(hbar1,tau);
hdraw = inv(hdraw);
achol = chol(hdraw)';
ssig = zeros(p,p);
for i = 1:p
ssig(i,i) = achol(i,i);
for j = 1:p
achol(j,i) = achol(j,i)/ssig(i,i);
end
end
achol = inv(achol);
a0draw = zeros(numa,1);
ic = 1;
for i = 2:p
for j = 1:i-1
a0draw(ic,1) = achol(i,j);
ic = ic + 1;
end
end
a02mo = a02mo + a0draw*a0draw';
a0mean = a0mean + a0draw;
end
a02mo = a02mo./4000;
a0mean = a0mean./4000;
a02mo = a02mo - a0mean*a0mean';