forked from burakbayramli/books
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathch11q7.m
66 lines (61 loc) · 2.05 KB
/
ch11q7.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
%Matlab code for Question 7 of Chapter 11
%This program calculates posterior means and standard deviations for
%theta(1) and theta(2) using both Monte Carlo integration and Gibbs sampling
%norm-rnd is James LeSage's script for drawing from the multivariate Normal (0,SIGMA)
%Specify the number of replications
r=100100;
%For Gibbs sampling, discard r0 burnin replications and specify starting value for theta(2)
r0=100;
th2draw=1;
%Specify the correlation between theta(1) and theta(2)
rho=0.999;
SIG= [ 1 rho; rho 1];
%Initialize MC and Gibbs sums to zero
thgibbs=zeros(2,1);
thgibbs2=zeros(2,1);
thmc=zeros(2,1);
thmc2=zeros(2,1);
keepgraph=[];
for i = 1:r
%Monte Carlo draw from bivariate Normal posterior
thmcdraw=norm_rnd(SIG);
%Gibbs sampling draw from 2 univariate Normal posterior conditionals
th1mean= rho*th2draw;
th1var = 1 - rho^2;
th1draw = th1mean + norm_rnd(th1var);
th2mean= rho*th1draw;
th2var = 1 - rho^2;
th2draw = th2mean + norm_rnd(th2var);
if i>r0
%For Gibbs discard r0 burnin draws
%Don't need to do this for MC, but we do to maintain comparability with Gibbs results
thmc=thmc+thmcdraw;
thmc2=thmc2+thmcdraw.^2;
thdraw = [th1draw; th2draw];
thgibbs=thgibbs+thdraw;
thgibbs2=thgibbs2+thdraw.^2;
keepgraph=[keepgraph; [i-r0 thmcdraw(1,1) th1draw]];
end
end
'Number of burn in replications'
r0
r1=r-r0;
'Number of included replications'
r1
'Correlation between theta(1) and theta(2)'
rho
thmc=thmc./r1;
thmc2=thmc2./r1;
thmcsd=sqrt(thmc2 - thmc.^2);
'Monte Carlo Posterior Mean and Standard Deviation'
[thmc thmcsd]
thgibbs=thgibbs./r1;
thgibbs2=thgibbs2./r1;
thgibbssd=sqrt(thgibbs2 - thgibbs.^2);
'Gibbs Sampling Posterior Mean and Standard Deviation'
[thgibbs thgibbssd]
figure(1)
plot(keepgraph(:,1),keepgraph(:,2),'-', keepgraph(:,1),keepgraph(:,3),':')
legend('Monte Carlo','Gibbs sampler')
title('Figure 1: Draws of \theta_{1} for \rho = 0.999')
xlabel('Replication Number')