lampiranrepository.uksw.edu/bitstream/123456789/15161/6/t1...lampiran 1 : kode matlab untuk...

28
LAMPIRAN

Upload: dinhliem

Post on 14-Jul-2019

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: LAMPIRANrepository.uksw.edu/bitstream/123456789/15161/6/T1...Lampiran 1 : Kode MATLAB untuk model-model khusus APARCH Berdistribusi Normal 1.1. Kode Utama 1.1.1. Kode Utama ARCH function

LAMPIRAN

Page 2: LAMPIRANrepository.uksw.edu/bitstream/123456789/15161/6/T1...Lampiran 1 : Kode MATLAB untuk model-model khusus APARCH Berdistribusi Normal 1.1. Kode Utama 1.1.1. Kode Utama ARCH function

Lampiran 1 : Kode MATLAB untuk model-model khusus APARCH Berdistribusi Normal

1.1.Kode Utama

1.1.1. Kode Utama ARCH

function [ Hasil ] = MCMC_ARCH_RW_adapt(R)

%%%%% Function : Distribusi posterior dari parameter model GARCH

%%%%% Inputs : %%%%% R : returns %%%%% its_MCMC : banyak iterasi MCMC %%%%% RW_step : suatu skalar yang merupakan variansi untuk

distribusi proposal dalam proses Random Walk

%%%%% Outputs : %%%%% post_theta_RW : Posterior MCMC untuk omega, alfa, beta,

gamma, dan %%%%% delta %%%%% post_theta_RW_adapt : Posterior MCMC untuk Omega,Alpha,Beta,

Gamma, Delta dengan proses adaptive (selama burn-in) %%%%% post_like_RW : Log-likelihood dari posterior %%%%% post_like_RW_adapt : Log-likelihood posterior dari proses

adaptive %%%%% Ditampilkan juga hasil test diagnosa

if(nargin<4) graph = 1; if(nargin<3) RW_step = 1; if(nargin<2) its_MCMC = 15000; end end end

%%%% Returns simpan dalam variabel T T = max(size(R)); if(T~=size(R,1)) R = R'; end R2 = R.*R;

%%%%%%%%%% Dipilih nilai awal theta0 = [0.1 0.2]; theta_RW_adapt = theta0; like_current = ARCH_likelihood_adapt(R,R2,theta0); like_current_RW_adapt = like_current;

%%%%%%%%%% Batas-batas dari prior : Omega ~ U[0,wka] ; alpha ~

U[0,1] ; %%%%%%%%%% beta|alpha ~ U[0,1-alpha], delta ~ [0,10], gamma ~ [-

1,1] %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

wka = 10; burn_in = 5000; N = its_MCMC-burn_in; post_like = zeros(N,1);

Page 3: LAMPIRANrepository.uksw.edu/bitstream/123456789/15161/6/T1...Lampiran 1 : Kode MATLAB untuk model-model khusus APARCH Berdistribusi Normal 1.1. Kode Utama 1.1.1. Kode Utama ARCH function

%%%%%%%%%%% Proses Random Walk dengan adaptative selama burn-in %%%%%%%%%%% Lihat Atchadé and Rosenthal (2005)

RW_step_adapt = [0.005 0.005]'; theta = zeros(N,2); min_max_var = [1e-5 10]; eta = 0.6;

%%MCMC accept_adapt = ones(1,2); thetaProp = zeros(1,2); thetaAcc = zeros(1,2);

tic for i=1:its_MCMC

thetaProp = thetaProp + 1; theta_prop = theta_RW_adapt; for q=1:5 theta_prop(q) = theta_RW_adapt(q) +

sqrt(RW_step_adapt(q))*randn(); test = 0;

if(q==1) %omega if(theta_prop(q)>0 && theta_prop(q)<wka) test = 1; end % alfa else if(theta_prop(q)>0 && theta_prop(q)<1) test = 1; end end

if(test==1) [log_like_move] = ARCH_likelihood_adapt(R,R2,theta_prop); prior_lama = -log(wka) - log(1-theta_RW_adapt(2)); prior_baru = -log(wka) - log(1-theta_prop(2));

if(exp(log_like_move+prior_baru-like_current_RW_adapt-

prior_lama)>rand()) like_current_RW_adapt = log_like_move; theta_RW_adapt(q) = theta_prop(q); accept_adapt(q) = accept_adapt(q)+1; thetaAcc(q) = thetaAcc(q) + 1; else theta_prop(q) = theta_RW_adapt(q); end else theta_prop(q) = theta_RW_adapt(q); end RW_step_adapt(q) = max(min_max_var(1),RW_step_adapt(q) +

(accept_adapt(q)/i - 0.44)/(i^eta));

if(RW_step_adapt(q)>min_max_var(2)) RW_step_adapt(q) = min_max_var(2); end end

Page 4: LAMPIRANrepository.uksw.edu/bitstream/123456789/15161/6/T1...Lampiran 1 : Kode MATLAB untuk model-model khusus APARCH Berdistribusi Normal 1.1. Kode Utama 1.1.1. Kode Utama ARCH function

if mod(i,100) == 0 thetaProp = zeros(1,2); thetaAcc = zeros(1,2); end %theta_RW_adapt

% simpan w, a, b, del if i>burn_in theta(i-burn_in,:) = theta_RW_adapt; post_like(i-burn_in,1) = like_current_RW_adapt; end

% Start timer after burn-in if i == burn_in disp('Burn-in complete, now drawing posterior samples.') end end toc % ----- Algoritma MCMC. Step 2: Menghitung rata-rata Monte Carlo

Hasil.post_theta = theta; Hasil.post_like = post_like; Hasil.post_step = theta_RW_adapt;

MP = mean(Hasil.post_theta); SP = std(Hasil.post_theta);

% ===== Integrated Autocorrelation Time (IACT)

======================== % Berapa banyak sampel yang harus dibangkitkan untuk mendapatkan

sampel % yang independen (seberapa cepat konvergensi simulasi)

resultsIAT = IACT(Hasil.post_theta); IAT = [resultsIAT.iact];

% ===== Uji Konvergensi Geweke

============================================ idraw1 = round(.1*N); resultCV = momentg(Hasil.post_theta(1:idraw1,:)); meansa = [resultCV.pmean]; nsea = [resultCV.nse1];

idraw2 = round(.5*N)+1; resultCV = momentg(Hasil.post_theta(idraw2:N,:)); meansb = [resultCV.pmean]; nseb = [resultCV.nse1];

CD = (meansa - meansb)./sqrt(nsea+nseb); onetail = 1-normcdf(abs(CD),0,1); pV = 2*onetail;

% ===== 95% Highest Posterior Density (HPD) Interval

====================== resultsHPD = HPD(Hasil.post_theta,0.05); LB = [resultsHPD.LB]; UB = [resultsHPD.UB];

Page 5: LAMPIRANrepository.uksw.edu/bitstream/123456789/15161/6/T1...Lampiran 1 : Kode MATLAB untuk model-model khusus APARCH Berdistribusi Normal 1.1. Kode Utama 1.1.1. Kode Utama ARCH function

% ===== Numerical Standard Error (NSE)

==================================== resultsNSE = NSE(Hasil.post_theta); NSEd = [resultsNSE.nse];

%====================== Mengatur hasil pencetakan

=========================

%----- Statistik Parameter: in.cnames = char('w','a'); in.rnames = char('Parameter','Mean','SD','LB','UB','IACT','NSE','G-

CD','p-Value'); in.fmt = '%16.6f'; tmp = [MP; SP; LB; UB; IAT; NSEd; CD; pV]; fprintf(1,'Estimasi menggunakan MCMC dan Uji Diagnosa\n'); % cetak

hasil mprint(tmp,in);

1.1.2. Kode Utama GARCH

function [ Hasil ] = MCMC_GARCH_RW_adapt(R)

%%%%% Function : Distribusi posterior dari parameter model GARCH

%%%%% Inputs : %%%%% R : returns %%%%% its_MCMC : banyak iterasi MCMC %%%%% RW_step : suatu skalar yang merupakan variansi untuk

distribusi proposal dalam proses Random Walk

%%%%% Outputs : %%%%% post_theta_RW : Posterior MCMC untuk omega, alfa, beta,

gamma, dan %%%%% delta %%%%% post_theta_RW_adapt : Posterior MCMC untuk Omega,Alpha,Beta,

Gamma, Delta dengan proses adaptive (selama burn-in) %%%%% post_like_RW : Log-likelihood dari posterior %%%%% post_like_RW_adapt : Log-likelihood posterior dari proses

adaptive %%%%% Ditampilkan juga hasil test diagnosa

if(nargin<4) graph = 1; if(nargin<3) RW_step = 1; if(nargin<2) its_MCMC = 15000; end end end

%%%% Returns simpan dalam variabel T T = max(size(R)); if(T~=size(R,1)) R = R'; end R2 = R.*R;

Page 6: LAMPIRANrepository.uksw.edu/bitstream/123456789/15161/6/T1...Lampiran 1 : Kode MATLAB untuk model-model khusus APARCH Berdistribusi Normal 1.1. Kode Utama 1.1.1. Kode Utama ARCH function

%%%%%%%%%% Dipilih nilai awal theta0 = [0.1 0.2 0.3]; theta_RW_adapt = theta0; like_current = GARCH_likelihood_adapt(R,R2,theta0); like_current_RW_adapt = like_current;

%%%%%%%%%% Batas-batas dari prior : Omega ~ U[0,wka] ; alpha ~

U[0,1] ; %%%%%%%%%% beta|alpha ~ U[0,1-alpha], delta ~ [0,10], gamma ~ [-

1,1] %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

wka = 10; burn_in = 5000; N = its_MCMC-burn_in; post_like = zeros(N,1);

%%%%%%%%%%% Proses Random Walk dengan adaptative selama burn-in %%%%%%%%%%% Lihat Atchadé and Rosenthal (2005)

RW_step_adapt = [0.005 0.005 0.005]'; theta = zeros(N,3); min_max_var = [1e-5 10]; eta = 0.6;

%%MCMC accept_adapt = ones(1,3); thetaProp = zeros(1,3); thetaAcc = zeros(1,3);

tic for i=1:its_MCMC

thetaProp = thetaProp + 1; theta_prop = theta_RW_adapt; for q=1:5 theta_prop(q) = theta_RW_adapt(q) +

sqrt(RW_step_adapt(q))*randn(); test = 0;

if(q==1) %omega if(theta_prop(q)>0 && theta_prop(q)<wka) test = 1; end % alfa dan beta else if(theta_prop(q)>0 && sum(theta_prop(2:3))<1 && theta_prop(q)<1) test = 1; end end

if(test==1) [log_like_move] = GARCH_likelihood_adapt(R,R2,theta_prop); prior_lama = -log(wka) - log(1-theta_RW_adapt(2)); prior_baru = -log(wka) - log(1-theta_prop(2));

if(exp(log_like_move+prior_baru-like_current_RW_adapt-

prior_lama)>rand()) like_current_RW_adapt = log_like_move;

Page 7: LAMPIRANrepository.uksw.edu/bitstream/123456789/15161/6/T1...Lampiran 1 : Kode MATLAB untuk model-model khusus APARCH Berdistribusi Normal 1.1. Kode Utama 1.1.1. Kode Utama ARCH function

theta_RW_adapt(q) = theta_prop(q); accept_adapt(q) = accept_adapt(q)+1; thetaAcc(q) = thetaAcc(q) + 1; else theta_prop(q) = theta_RW_adapt(q); end else theta_prop(q) = theta_RW_adapt(q); end RW_step_adapt(q) = max(min_max_var(1),RW_step_adapt(q) +

(accept_adapt(q)/i - 0.44)/(i^eta));

if(RW_step_adapt(q)>min_max_var(2)) RW_step_adapt(q) = min_max_var(2); end end

if mod(i,100) == 0 thetaProp = zeros(1,3); thetaAcc = zeros(1,3); end %theta_RW_adapt

% simpan w, a, b if i>burn_in theta(i-burn_in,:) = theta_RW_adapt; post_like(i-burn_in,1) = like_current_RW_adapt; end

% Start timer after burn-in if i == burn_in disp('Burn-in complete, now drawing posterior samples.') end end toc % ----- Algoritma MCMC. Step 2: Menghitung rata-rata Monte Carlo

Hasil.post_theta = theta; Hasil.post_like = post_like; Hasil.post_step = theta_RW_adapt;

MP = mean(Hasil.post_theta); SP = std(Hasil.post_theta);

% ===== Integrated Autocorrelation Time (IACT)

======================== % Berapa banyak sampel yang harus dibangkitkan untuk mendapatkan

sampel % yang independen (seberapa cepat konvergensi simulasi)

resultsIAT = IACT(Hasil.post_theta); IAT = [resultsIAT.iact];

% ===== Uji Konvergensi Geweke

============================================ idraw1 = round(.1*N); resultCV = momentg(Hasil.post_theta(1:idraw1,:)); meansa = [resultCV.pmean]; nsea = [resultCV.nse1];

Page 8: LAMPIRANrepository.uksw.edu/bitstream/123456789/15161/6/T1...Lampiran 1 : Kode MATLAB untuk model-model khusus APARCH Berdistribusi Normal 1.1. Kode Utama 1.1.1. Kode Utama ARCH function

idraw2 = round(.5*N)+1; resultCV = momentg(Hasil.post_theta(idraw2:N,:)); meansb = [resultCV.pmean]; nseb = [resultCV.nse1];

CD = (meansa - meansb)./sqrt(nsea+nseb); onetail = 1-normcdf(abs(CD),0,1); pV = 2*onetail;

% ===== 95% Highest Posterior Density (HPD) Interval

====================== resultsHPD = HPD(Hasil.post_theta,0.05); LB = [resultsHPD.LB]; UB = [resultsHPD.UB];

% ===== Numerical Standard Error (NSE)

==================================== resultsNSE = NSE(Hasil.post_theta); NSEd = [resultsNSE.nse];

%====================== Mengatur hasil pencetakan

=========================

%----- Statistik Parameter: in.cnames = char('w','a'); in.rnames = char('Parameter','Mean','SD','LB','UB','IACT','NSE','G-

CD','p-Value'); in.fmt = '%16.6f'; tmp = [MP; SP; LB; UB; IAT; NSEd; CD; pV]; fprintf(1,'Estimasi menggunakan MCMC dan Uji Diagnosa\n'); % cetak

hasil mprint(tmp,in);

1.1.3. Kode Utama TARCH

function [ Hasil ] = MCMC_TARCH_RW_adapt(R)

%%%%% Function : Distribusi posterior dari parameter model GARCH

%%%%% Inputs : %%%%% R : returns %%%%% its_MCMC : banyak iterasi MCMC %%%%% RW_step : suatu skalar yang merupakan variansi untuk

distribusi proposal dalam proses Random Walk

%%%%% Outputs : %%%%% post_theta_RW : Posterior MCMC untuk omega, alfa, beta,

gamma, dan %%%%% delta %%%%% post_theta_RW_adapt : Posterior MCMC untuk Omega,Alpha,Beta,

Gamma, Delta dengan proses adaptive (selama burn-in) %%%%% post_like_RW : Log-likelihood dari posterior %%%%% post_like_RW_adapt : Log-likelihood posterior dari proses

adaptive %%%%% Ditampilkan juga hasil test diagnosa

Page 9: LAMPIRANrepository.uksw.edu/bitstream/123456789/15161/6/T1...Lampiran 1 : Kode MATLAB untuk model-model khusus APARCH Berdistribusi Normal 1.1. Kode Utama 1.1.1. Kode Utama ARCH function

if(nargin<4) graph = 1; if(nargin<3) RW_step = 1; if(nargin<2) its_MCMC = 15000; end end end

%%%% Returns simpan dalam variabel T T = max(size(R)); if(T~=size(R,1)) R = R'; end R2 = R.*R;

%%%%%%%%%% Dipilih nilai awal theta0 = [0.1 0.2 0.1 0.1]; theta_RW_adapt = theta0; like_current = TARCH_likelihood_adapt(R,R2,theta0); like_current_RW_adapt = like_current;

%%%%%%%%%% Batas-batas dari prior : Omega ~ U[0,wka] ; alpha ~

U[0,1] ; %%%%%%%%%% beta|alpha ~ U[0,1-alpha], delta ~ [0,10], gamma ~ [-

1,1] %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

wka = 10; burn_in = 5000; N = its_MCMC-burn_in; post_like = zeros(N,1);

%%%%%%%%%%% Proses Random Walk dengan adaptative selama burn-in %%%%%%%%%%% Lihat Atchadé and Rosenthal (2005)

RW_step_adapt = [0.003 0.001 0.002 0.004]'; theta = zeros(N,4); min_max_var = [1e-5 10]; eta = 0.6;

%%MCMC accept_adapt = ones(1,4); thetaProp = zeros(1,4); thetaAcc = zeros(1,4);

tic for i=1:its_MCMC

thetaProp = thetaProp + 1; theta_prop = theta_RW_adapt; for q=1:5 theta_prop(q) = theta_RW_adapt(q) +

sqrt(RW_step_adapt(q))*randn(); test = 0; pos = theta(2) - 0.5*theta(4) - theta(3); if(q==1) %omega if(theta_prop(q)>0 && theta_prop(q)<wka && pos<1) test = 1;

Page 10: LAMPIRANrepository.uksw.edu/bitstream/123456789/15161/6/T1...Lampiran 1 : Kode MATLAB untuk model-model khusus APARCH Berdistribusi Normal 1.1. Kode Utama 1.1.1. Kode Utama ARCH function

end elseif q==4 %gamma if(theta_prop(q)>=-1 && theta_prop(q)<=1 && pos<1) test = 1; end % alfa dan beta else if(theta_prop(q)>0 && sum(theta_prop(2:3))<1 && theta_prop(q)<1) test = 1; end end

if(test==1) [log_like_move] = TARCH_likelihood_adapt(R,R2,theta_prop); prior_lama = -log(wka) - log(1-theta_RW_adapt(2)); prior_baru = -log(wka) - log(1-theta_prop(2));

if(exp(log_like_move+prior_baru-like_current_RW_adapt-

prior_lama)>rand()) like_current_RW_adapt = log_like_move; theta_RW_adapt(q) = theta_prop(q); accept_adapt(q) = accept_adapt(q)+1; thetaAcc(q) = thetaAcc(q) + 1; else theta_prop(q) = theta_RW_adapt(q); end else theta_prop(q) = theta_RW_adapt(q); end RW_step_adapt(q) = max(min_max_var(1),RW_step_adapt(q) +

(accept_adapt(q)/i - 0.44)/(i^eta));

if(RW_step_adapt(q)>min_max_var(2)) RW_step_adapt(q) = min_max_var(2); end end

if mod(i,100) == 0 thetaProp = zeros(1,4); thetaAcc = zeros(1,4); end %theta_RW_adapt

% simpan w, a, b, del if i>burn_in theta(i-burn_in,:) = theta_RW_adapt; post_like(i-burn_in,1) = like_current_RW_adapt; end

% Start timer after burn-in if i == burn_in disp('Burn-in complete, now drawing posterior samples.') end end toc % ----- Algoritma MCMC. Step 2: Menghitung rata-rata Monte Carlo

Hasil.post_theta = theta; Hasil.post_like = post_like; Hasil.post_step = theta_RW_adapt;

Page 11: LAMPIRANrepository.uksw.edu/bitstream/123456789/15161/6/T1...Lampiran 1 : Kode MATLAB untuk model-model khusus APARCH Berdistribusi Normal 1.1. Kode Utama 1.1.1. Kode Utama ARCH function

MP = mean(Hasil.post_theta); SP = std(Hasil.post_theta);

% ===== Integrated Autocorrelation Time (IACT)

======================== % Berapa banyak sampel yang harus dibangkitkan untuk mendapatkan

sampel % yang independen (seberapa cepat konvergensi simulasi)

resultsIAT = IACT(Hasil.post_theta); IAT = [resultsIAT.iact];

% ===== Uji Konvergensi Geweke

============================================ idraw1 = round(.1*N); resultCV = momentg(Hasil.post_theta(1:idraw1,:)); meansa = [resultCV.pmean]; nsea = [resultCV.nse1];

idraw2 = round(.5*N)+1; resultCV = momentg(Hasil.post_theta(idraw2:N,:)); meansb = [resultCV.pmean]; nseb = [resultCV.nse1];

CD = (meansa - meansb)./sqrt(nsea+nseb); onetail = 1-normcdf(abs(CD),0,1); pV = 2*onetail;

% ===== 95% Highest Posterior Density (HPD) Interval

====================== resultsHPD = HPD(Hasil.post_theta,0.05); LB = [resultsHPD.LB]; UB = [resultsHPD.UB];

% ===== Numerical Standard Error (NSE)

==================================== resultsNSE = NSE(Hasil.post_theta); NSEd = [resultsNSE.nse];

%====================== Mengatur hasil pencetakan

=========================

%----- Statistik Parameter: in.cnames = char('w','a',’b’. 'y'); in.rnames = char('Parameter','Mean','SD','LB','UB','IACT','NSE','G-

CD','p-Value'); in.fmt = '%16.6f'; tmp = [MP; SP; LB; UB; IAT; NSEd; CD; pV]; fprintf(1,'Estimasi menggunakan MCMC dan Uji Diagnosa\n'); % cetak

hasil mprint(tmp,in);

1.1.4. Kode Utama TS-GARCH

function [ Hasil ] = MCMC_TSGARCH_RW_adapt(R)

Page 12: LAMPIRANrepository.uksw.edu/bitstream/123456789/15161/6/T1...Lampiran 1 : Kode MATLAB untuk model-model khusus APARCH Berdistribusi Normal 1.1. Kode Utama 1.1.1. Kode Utama ARCH function

%%%%% Function : Distribusi posterior dari parameter model GARCH

%%%%% Inputs : %%%%% R : returns %%%%% its_MCMC : banyak iterasi MCMC %%%%% RW_step : suatu skalar yang merupakan variansi untuk

distribusi proposal dalam proses Random Walk

%%%%% Outputs : %%%%% post_theta_RW : Posterior MCMC untuk omega, alfa, beta,

gamma, dan %%%%% delta %%%%% post_theta_RW_adapt : Posterior MCMC untuk Omega,Alpha,Beta,

Gamma, Delta dengan proses adaptive (selama burn-in) %%%%% post_like_RW : Log-likelihood dari posterior %%%%% post_like_RW_adapt : Log-likelihood posterior dari proses

adaptive %%%%% Ditampilkan juga hasil test diagnosa

if(nargin<4) graph = 1; if(nargin<3) RW_step = 1; if(nargin<2) its_MCMC = 15000; end end end

%%%% Returns simpan dalam variabel T T = max(size(R)); if(T~=size(R,1)) R = R'; end R2 = R.*R;

%%%%%%%%%% Dipilih nilai awal theta0 = [0.1 0.2 0.3]; theta_RW_adapt = theta0; like_current = TSGARCH_likelihood_adapt(R,R2,theta0); like_current_RW_adapt = like_current;

%%%%%%%%%% Batas-batas dari prior : Omega ~ U[0,wka] ; alpha ~

U[0,1] ; %%%%%%%%%% beta|alpha ~ U[0,1-alpha], delta ~ [0,10], gamma ~ [-

1,1] %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

wka = 10; burn_in = 5000; N = its_MCMC-burn_in; post_like = zeros(N,1);

%%%%%%%%%%% Proses Random Walk dengan adaptative selama burn-in %%%%%%%%%%% Lihat Atchadé and Rosenthal (2005)

RW_step_adapt = [0.005 0.005 0.005]'; theta = zeros(N,3); min_max_var = [1e-5 10]; eta = 0.6;

Page 13: LAMPIRANrepository.uksw.edu/bitstream/123456789/15161/6/T1...Lampiran 1 : Kode MATLAB untuk model-model khusus APARCH Berdistribusi Normal 1.1. Kode Utama 1.1.1. Kode Utama ARCH function

%%MCMC accept_adapt = ones(1,3); thetaProp = zeros(1,3); thetaAcc = zeros(1,3);

tic for i=1:its_MCMC

thetaProp = thetaProp + 1; theta_prop = theta_RW_adapt; for q=1:5 theta_prop(q) = theta_RW_adapt(q) +

sqrt(RW_step_adapt(q))*randn(); test = 0; pos = theta(2) - 0.5*theta(4) - theta(3); if(q==1) %omega if(theta_prop(q)>0 && theta_prop(q)<wka && pos<1) test = 1; end % alfa dan beta else if(theta_prop(q)>0 && sum(theta_prop(2:3))<1 && theta_prop(q)<1) test = 1; end end

if(test==1) [log_like_move] =

TSGARCH_likelihood_adapt(R,R2,theta_prop); prior_lama = -log(wka) - log(1-theta_RW_adapt(2)); prior_baru = -log(wka) - log(1-theta_prop(2));

if(exp(log_like_move+prior_baru-like_current_RW_adapt-

prior_lama)>rand()) like_current_RW_adapt = log_like_move; theta_RW_adapt(q) = theta_prop(q); accept_adapt(q) = accept_adapt(q)+1; thetaAcc(q) = thetaAcc(q) + 1; else theta_prop(q) = theta_RW_adapt(q); end else theta_prop(q) = theta_RW_adapt(q); end RW_step_adapt(q) = max(min_max_var(1),RW_step_adapt(q) +

(accept_adapt(q)/i - 0.44)/(i^eta));

if(RW_step_adapt(q)>min_max_var(2)) RW_step_adapt(q) = min_max_var(2); end end

if mod(i,100) == 0 thetaProp = zeros(1,3); thetaAcc = zeros(1,3); end %theta_RW_adapt

Page 14: LAMPIRANrepository.uksw.edu/bitstream/123456789/15161/6/T1...Lampiran 1 : Kode MATLAB untuk model-model khusus APARCH Berdistribusi Normal 1.1. Kode Utama 1.1.1. Kode Utama ARCH function

% simpan w, a, b, del if i>burn_in theta(i-burn_in,:) = theta_RW_adapt; post_like(i-burn_in,1) = like_current_RW_adapt; end

% Start timer after burn-in if i == burn_in disp('Burn-in complete, now drawing posterior samples.') end end toc % ----- Algoritma MCMC. Step 2: Menghitung rata-rata Monte Carlo

Hasil.post_theta = theta; Hasil.post_like = post_like; Hasil.post_step = theta_RW_adapt;

MP = mean(Hasil.post_theta); SP = std(Hasil.post_theta);

% ===== Integrated Autocorrelation Time (IACT)

======================== % Berapa banyak sampel yang harus dibangkitkan untuk mendapatkan

sampel % yang independen (seberapa cepat konvergensi simulasi)

resultsIAT = IACT(Hasil.post_theta); IAT = [resultsIAT.iact];

% ===== Uji Konvergensi Geweke

============================================ idraw1 = round(.1*N); resultCV = momentg(Hasil.post_theta(1:idraw1,:)); meansa = [resultCV.pmean]; nsea = [resultCV.nse1];

idraw2 = round(.5*N)+1; resultCV = momentg(Hasil.post_theta(idraw2:N,:)); meansb = [resultCV.pmean]; nseb = [resultCV.nse1];

CD = (meansa - meansb)./sqrt(nsea+nseb); onetail = 1-normcdf(abs(CD),0,1); pV = 2*onetail;

% ===== 95% Highest Posterior Density (HPD) Interval

====================== resultsHPD = HPD(Hasil.post_theta,0.05); LB = [resultsHPD.LB]; UB = [resultsHPD.UB];

% ===== Numerical Standard Error (NSE)

==================================== resultsNSE = NSE(Hasil.post_theta); NSEd = [resultsNSE.nse];

%====================== Mengatur hasil pencetakan

Page 15: LAMPIRANrepository.uksw.edu/bitstream/123456789/15161/6/T1...Lampiran 1 : Kode MATLAB untuk model-model khusus APARCH Berdistribusi Normal 1.1. Kode Utama 1.1.1. Kode Utama ARCH function

=========================

%----- Statistik Parameter: in.cnames = char('w','a','b'); in.rnames = char('Parameter','Mean','SD','LB','UB','IACT','NSE','G-

CD','p-Value'); in.fmt = '%16.6f'; tmp = [MP; SP; LB; UB; IAT; NSEd; CD; pV]; fprintf(1,'Estimasi menggunakan MCMC dan Uji Diagnosa\n'); % cetak

hasil mprint(tmp,in);

1.1.5. Kode Utama GJR-GARCH

function [ Hasil ] = MCMC_GJR_RW_adapt(R)

%%%%% Function : Distribusi posterior dari parameter model GARCH

%%%%% Inputs : %%%%% R : returns %%%%% its_MCMC : banyak iterasi MCMC %%%%% RW_step : suatu skalar yang merupakan variansi untuk

distribusi proposal dalam proses Random Walk

%%%%% Outputs : %%%%% post_theta_RW : Posterior MCMC untuk omega, alfa, beta,

gamma, dan %%%%% delta %%%%% post_theta_RW_adapt : Posterior MCMC untuk Omega,Alpha,Beta,

Gamma, Delta dengan proses adaptive (selama burn-in) %%%%% post_like_RW : Log-likelihood dari posterior %%%%% post_like_RW_adapt : Log-likelihood posterior dari proses

adaptive %%%%% Ditampilkan juga hasil test diagnosa

if(nargin<4) graph = 1; if(nargin<3) RW_step = 1; if(nargin<2) its_MCMC = 15000; end end end

%%%% Returns simpan dalam variabel T T = max(size(R)); if(T~=size(R,1)) R = R'; end R2 = R.*R;

%%%%%%%%%% Dipilih nilai awal theta0 = [0.1 0.3 0.1 -0.6]; theta_RW_adapt = theta0; like_current = GJR_likelihood_adapt(R,R2,theta0);

Page 16: LAMPIRANrepository.uksw.edu/bitstream/123456789/15161/6/T1...Lampiran 1 : Kode MATLAB untuk model-model khusus APARCH Berdistribusi Normal 1.1. Kode Utama 1.1.1. Kode Utama ARCH function

like_current_RW_adapt = like_current;

%%%%%%%%%% Batas-batas dari prior : Omega ~ U[0,wka] ; alpha ~

U[0,1] ; %%%%%%%%%% beta|alpha ~ U[0,1-alpha], delta ~ [0,10], gamma ~ [-

1,1] %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

wka = 10; burn_in = 5000; N = its_MCMC-burn_in; post_like = zeros(N,1);

%%%%%%%%%%% Proses Random Walk dengan adaptative selama burn-in %%%%%%%%%%% Lihat Atchadé and Rosenthal (2005)

RW_step_adapt = [0.005 0.005 0.005 0.005]'; theta = zeros(N,4); min_max_var = [1e-5 10]; eta = 0.6;

%%MCMC accept_adapt = ones(1,4); thetaProp = zeros(1,4); thetaAcc = zeros(1,4);

tic for i=1:its_MCMC

thetaProp = thetaProp + 1; theta_prop = theta_RW_adapt; for q=1:5 theta_prop(q) = theta_RW_adapt(q) +

sqrt(RW_step_adapt(q))*randn(); test = 0; pos = theta(2) - 0.5*theta(4) - theta(3); if(q==1) %omega if(theta_prop(q)>0 && theta_prop(q)<wka && pos<1) test = 1; end elseif q==4 %gamma if(theta_prop(q)>=-1 && theta_prop(q)<=1 && pos<1) test=1; end % alfa dan beta else if(theta_prop(q)>0 && pos<1 && theta_prop(q)<1) test = 1; end end

if(test==1) [log_like_move] = GJR_likelihood_adapt(R,R2,theta_prop); prior_lama = -log(wka) - log(1-theta_RW_adapt(2)); prior_baru = -log(wka) - log(1-theta_prop(2));

if(exp(log_like_move+prior_baru-like_current_RW_adapt-

prior_lama)>rand()) like_current_RW_adapt = log_like_move; theta_RW_adapt(q) = theta_prop(q);

Page 17: LAMPIRANrepository.uksw.edu/bitstream/123456789/15161/6/T1...Lampiran 1 : Kode MATLAB untuk model-model khusus APARCH Berdistribusi Normal 1.1. Kode Utama 1.1.1. Kode Utama ARCH function

accept_adapt(q) = accept_adapt(q)+1; thetaAcc(q) = thetaAcc(q) + 1; else theta_prop(q) = theta_RW_adapt(q); end else theta_prop(q) = theta_RW_adapt(q); end RW_step_adapt(q) = max(min_max_var(1),RW_step_adapt(q) +

(accept_adapt(q)/i - 0.44)/(i^eta));

if(RW_step_adapt(q)>min_max_var(2)) RW_step_adapt(q) = min_max_var(2); end end

if mod(i,100) == 0 thetaProp = zeros(1,4); thetaAcc = zeros(1,4); end %theta_RW_adapt

% simpan w, a, b, y if i>burn_in theta(i-burn_in,:) = theta_RW_adapt; post_like(i-burn_in,1) = like_current_RW_adapt; end

% Start timer after burn-in if i == burn_in disp('Burn-in complete, now drawing posterior samples.') end end toc % ----- Algoritma MCMC. Step 2: Menghitung rata-rata Monte Carlo

Hasil.post_theta = theta; Hasil.post_like = post_like; Hasil.post_step = theta_RW_adapt;

MP = mean(Hasil.post_theta); SP = std(Hasil.post_theta);

% ===== Integrated Autocorrelation Time (IACT)

======================== % Berapa banyak sampel yang harus dibangkitkan untuk mendapatkan

sampel % yang independen (seberapa cepat konvergensi simulasi)

resultsIAT = IACT(Hasil.post_theta); IAT = [resultsIAT.iact];

% ===== Uji Konvergensi Geweke

============================================ idraw1 = round(.1*N); resultCV = momentg(Hasil.post_theta(1:idraw1,:)); meansa = [resultCV.pmean]; nsea = [resultCV.nse1];

Page 18: LAMPIRANrepository.uksw.edu/bitstream/123456789/15161/6/T1...Lampiran 1 : Kode MATLAB untuk model-model khusus APARCH Berdistribusi Normal 1.1. Kode Utama 1.1.1. Kode Utama ARCH function

idraw2 = round(.5*N)+1; resultCV = momentg(Hasil.post_theta(idraw2:N,:)); meansb = [resultCV.pmean]; nseb = [resultCV.nse1];

CD = (meansa - meansb)./sqrt(nsea+nseb); onetail = 1-normcdf(abs(CD),0,1); pV = 2*onetail;

% ===== 95% Highest Posterior Density (HPD) Interval

====================== resultsHPD = HPD(Hasil.post_theta,0.05); LB = [resultsHPD.LB]; UB = [resultsHPD.UB];

% ===== Numerical Standard Error (NSE)

==================================== resultsNSE = NSE(Hasil.post_theta); NSEd = [resultsNSE.nse];

%====================== Mengatur hasil pencetakan

=========================

%----- Statistik Parameter: in.cnames = char('w','a','b','y'); in.rnames = char('Parameter','Mean','SD','LB','UB','IACT','NSE','G-

CD','p-Value'); in.fmt = '%16.6f'; tmp = [MP; SP; LB; UB; IAT; NSEd; CD; pV]; fprintf(1,'Estimasi menggunakan MCMC dan Uji Diagnosa\n'); % cetak

hasil mprint(tmp,in);

1.1.6. Kode Utama NARCH

function [ Hasil ] = MCMC_NARCH_RW_adapt(R)

%%%%% Function : Distribusi posterior dari parameter model GARCH

%%%%% Inputs : %%%%% R : returns %%%%% its_MCMC : banyak iterasi MCMC %%%%% RW_step : suatu skalar yang merupakan variansi untuk

distribusi proposal dalam proses Random Walk

%%%%% Outputs : %%%%% post_theta_RW : Posterior MCMC untuk omega, alfa, beta,

gamma, dan %%%%% delta %%%%% post_theta_RW_adapt : Posterior MCMC untuk Omega,Alpha,Beta,

Gamma, Delta dengan proses adaptive (selama burn-in) %%%%% post_like_RW : Log-likelihood dari posterior %%%%% post_like_RW_adapt : Log-likelihood posterior dari proses

adaptive %%%%% Ditampilkan juga hasil test diagnosa

if(nargin<4)

Page 19: LAMPIRANrepository.uksw.edu/bitstream/123456789/15161/6/T1...Lampiran 1 : Kode MATLAB untuk model-model khusus APARCH Berdistribusi Normal 1.1. Kode Utama 1.1.1. Kode Utama ARCH function

graph = 1; if(nargin<3) RW_step = 1; if(nargin<2) its_MCMC = 15000; end end end

%%%% Returns simpan dalam variabel T T = max(size(R)); if(T~=size(R,1)) R = R'; end R2 = R.*R;

%%%%%%%%%% Dipilih nilai awal theta0 = [0.1 0.3 -0.6]; theta_RW_adapt = theta0; like_current = NARCH_likelihood_adapt(R,R2,theta0); like_current_RW_adapt = like_current;

%%%%%%%%%% Batas-batas dari prior : Omega ~ U[0,wka] ; alpha ~

U[0,1] ; %%%%%%%%%% beta|alpha ~ U[0,1-alpha], delta ~ [0,10], gamma ~ [-

1,1] %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

wka = 10; burn_in = 5000; N = its_MCMC-burn_in; post_like = zeros(N,1);

%%%%%%%%%%% Proses Random Walk dengan adaptative selama burn-in %%%%%%%%%%% Lihat Atchadé and Rosenthal (2005)

RW_step_adapt = [0.005 0.005 0.005]'; theta = zeros(N,3); min_max_var = [1e-5 10]; eta = 0.6;

%%MCMC accept_adapt = ones(1,3); thetaProp = zeros(1,3); thetaAcc = zeros(1,3);

tic for i=1:its_MCMC

thetaProp = thetaProp + 1; theta_prop = theta_RW_adapt; for q=1:5 theta_prop(q) = theta_RW_adapt(q) +

sqrt(RW_step_adapt(q))*randn(); test = 0; pos = theta(2) - 0.5*theta(4) - theta(3); if(q==1) %omega if(theta_prop(q)>0 && theta_prop(q)<wka && pos<1) test = 1; end

Page 20: LAMPIRANrepository.uksw.edu/bitstream/123456789/15161/6/T1...Lampiran 1 : Kode MATLAB untuk model-model khusus APARCH Berdistribusi Normal 1.1. Kode Utama 1.1.1. Kode Utama ARCH function

elseif q==3 %delta if(theta_prop(q)>=-1 && theta_prop(q)<=10) test=1; end % alfa else if(theta_prop(q)>0 && theta_prop(q)<1) test = 1; end end

if(test==1) [log_like_move] = NARCH_likelihood_adapt(R,R2,theta_prop); prior_lama = -log(wka) - log(1-theta_RW_adapt(2)); prior_baru = -log(wka) - log(1-theta_prop(2));

if(exp(log_like_move+prior_baru-like_current_RW_adapt-

prior_lama)>rand()) like_current_RW_adapt = log_like_move; theta_RW_adapt(q) = theta_prop(q); accept_adapt(q) = accept_adapt(q)+1; thetaAcc(q) = thetaAcc(q) + 1; else theta_prop(q) = theta_RW_adapt(q); end else theta_prop(q) = theta_RW_adapt(q); end RW_step_adapt(q) = max(min_max_var(1),RW_step_adapt(q) +

(accept_adapt(q)/i - 0.44)/(i^eta));

if(RW_step_adapt(q)>min_max_var(2)) RW_step_adapt(q) = min_max_var(2); end end

if mod(i,100) == 0 thetaProp = zeros(1,3); thetaAcc = zeros(1,3); end %theta_RW_adapt

% simpan w, a, del if i>burn_in theta(i-burn_in,:) = theta_RW_adapt; post_like(i-burn_in,1) = like_current_RW_adapt; end

% Start timer after burn-in if i == burn_in disp('Burn-in complete, now drawing posterior samples.') end end toc % ----- Algoritma MCMC. Step 2: Menghitung rata-rata Monte Carlo

Hasil.post_theta = theta; Hasil.post_like = post_like; Hasil.post_step = theta_RW_adapt;

Page 21: LAMPIRANrepository.uksw.edu/bitstream/123456789/15161/6/T1...Lampiran 1 : Kode MATLAB untuk model-model khusus APARCH Berdistribusi Normal 1.1. Kode Utama 1.1.1. Kode Utama ARCH function

MP = mean(Hasil.post_theta); SP = std(Hasil.post_theta);

% ===== Integrated Autocorrelation Time (IACT)

======================== % Berapa banyak sampel yang harus dibangkitkan untuk mendapatkan

sampel % yang independen (seberapa cepat konvergensi simulasi)

resultsIAT = IACT(Hasil.post_theta); IAT = [resultsIAT.iact];

% ===== Uji Konvergensi Geweke

============================================ idraw1 = round(.1*N); resultCV = momentg(Hasil.post_theta(1:idraw1,:)); meansa = [resultCV.pmean]; nsea = [resultCV.nse1];

idraw2 = round(.5*N)+1; resultCV = momentg(Hasil.post_theta(idraw2:N,:)); meansb = [resultCV.pmean]; nseb = [resultCV.nse1];

CD = (meansa - meansb)./sqrt(nsea+nseb); onetail = 1-normcdf(abs(CD),0,1); pV = 2*onetail;

% ===== 95% Highest Posterior Density (HPD) Interval

====================== resultsHPD = HPD(Hasil.post_theta,0.05); LB = [resultsHPD.LB]; UB = [resultsHPD.UB];

% ===== Numerical Standard Error (NSE)

==================================== resultsNSE = NSE(Hasil.post_theta); NSEd = [resultsNSE.nse];

%====================== Mengatur hasil pencetakan

=========================

%----- Statistik Parameter: in.cnames = char('w','a','del'); in.rnames = char('Parameter','Mean','SD','LB','UB','IACT','NSE','G-

CD','p-Value'); in.fmt = '%16.6f'; tmp = [MP; SP; LB; UB; IAT; NSEd; CD; pV]; fprintf(1,'Estimasi menggunakan MCMC dan Uji Diagnosa\n'); % cetak

hasil mprint(tmp,in);

1.1.7. Kode Utama APARCH

function [ Hasil ] = MCMC_APARCH_RW_adapt(R)

Page 22: LAMPIRANrepository.uksw.edu/bitstream/123456789/15161/6/T1...Lampiran 1 : Kode MATLAB untuk model-model khusus APARCH Berdistribusi Normal 1.1. Kode Utama 1.1.1. Kode Utama ARCH function

%%%%% Function : Distribusi posterior dari parameter model GARCH

%%%%% Inputs : %%%%% R : returns %%%%% its_MCMC : banyak iterasi MCMC %%%%% RW_step : suatu skalar yang merupakan variansi untuk

distribusi proposal dalam proses Random Walk

%%%%% Outputs : %%%%% post_theta_RW : Posterior MCMC untuk omega, alfa, beta,

gamma, dan %%%%% delta %%%%% post_theta_RW_adapt : Posterior MCMC untuk Omega,Alpha,Beta,

Gamma, Delta dengan proses adaptive (selama burn-in) %%%%% post_like_RW : Log-likelihood dari posterior %%%%% post_like_RW_adapt : Log-likelihood posterior dari proses

adaptive %%%%% Ditampilkan juga hasil test diagnosa

if(nargin<4) graph = 1; if(nargin<3) RW_step = 1; if(nargin<2) its_MCMC = 15000; end end end

%%%% Returns simpan dalam variabel T T = max(size(R)); if(T~=size(R,1)) R = R'; end R2 = R.*R;

%%%%%%%%%% Dipilih nilai awal theta0 = [0.5 0.1 0.1 0.1 1]; theta_RW_adapt = theta0; like_current = APARCH_likelihood_adapt(R,R2,theta0); like_current_RW_adapt = like_current;

%%%%%%%%%% Batas-batas dari prior : Omega ~ U[0,wka] ; alpha ~

U[0,1] ; %%%%%%%%%% beta|alpha ~ U[0,1-alpha], delta ~ [0,10]

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

wka = 10; burn_in = 5000; N = its_MCMC-burn_in; post_like = zeros(N,1);

%%%%%%%%%%% Proses Random Walk dengan adaptative selama burn-in %%%%%%%%%%% Lihat Atchadé and Rosenthal (2005)

RW_step_adapt = [0.003 0.001 0.001 0.003 0.003]'; theta = zeros(N,5); min_max_var = [1e-5 10]; eta = 0.6;

Page 23: LAMPIRANrepository.uksw.edu/bitstream/123456789/15161/6/T1...Lampiran 1 : Kode MATLAB untuk model-model khusus APARCH Berdistribusi Normal 1.1. Kode Utama 1.1.1. Kode Utama ARCH function

%%MCMC accept_adapt = ones(1,5); thetaProp = zeros(1,5); thetaAcc = zeros(1,5);

tic for i=1:its_MCMC

thetaProp = thetaProp + 1; theta_prop = theta_RW_adapt; for q=1:5 theta_prop(q) = theta_RW_adapt(q) +

sqrt(RW_step_adapt(q))*randn(); test = 0; pos = theta(2)*(1-theta(4))^(theta(5)) + theta(3); if(q==1) %omega if(theta_prop(q)>0 && theta_prop(q)<wka && pos<1) test = 1; end elseif q==4 %gamma if(theta_prop(q)>=-1 && theta_prop(q)<=1 && pos<1) test=1; end elseifq==5 %delta if(theta_prop(q)>0 && theta_prop(q)<5 && pos<1) test=1; end % alfa dan beta else if(theta_prop(q)>0 && pos<1 && theta_prop(q)<1) test = 1; end end

if(test==1) [log_like_move] = APARCH_likelihood_adapt(R,R2,theta_prop); prior_lama = -log(wka) - log(1-theta_RW_adapt(2)); prior_baru = -log(wka) - log(1-theta_prop(2));

if(exp(log_like_move+prior_baru-like_current_RW_adapt-

prior_lama)>rand()) like_current_RW_adapt = log_like_move; theta_RW_adapt(q) = theta_prop(q); accept_adapt(q) = accept_adapt(q)+1; thetaAcc(q) = thetaAcc(q) + 1; else theta_prop(q) = theta_RW_adapt(q); end else theta_prop(q) = theta_RW_adapt(q); end RW_step_adapt(q) = max(min_max_var(1),RW_step_adapt(q) +

(accept_adapt(q)/i - 0.44)/(i^eta));

if(RW_step_adapt(q)>min_max_var(2)) RW_step_adapt(q) = min_max_var(2); end end

Page 24: LAMPIRANrepository.uksw.edu/bitstream/123456789/15161/6/T1...Lampiran 1 : Kode MATLAB untuk model-model khusus APARCH Berdistribusi Normal 1.1. Kode Utama 1.1.1. Kode Utama ARCH function

if mod(i,100) == 0 thetaProp = zeros(1,5); thetaAcc = zeros(1,5); end %theta_RW_adapt

% simpan w, a, b, del if i>burn_in theta(i-burn_in,:) = theta_RW_adapt; post_like(i-burn_in,1) = like_current_RW_adapt; end

% Start timer after burn-in if i == burn_in disp('Burn-in complete, now drawing posterior samples.') end end toc % ----- Algoritma MCMC. Step 2: Menghitung rata-rata Monte Carlo

Hasil.post_theta = theta; Hasil.post_like = post_like; Hasil.post_step = theta_RW_adapt;

MP = mean(Hasil.post_theta); SP = std(Hasil.post_theta);

% ===== Integrated Autocorrelation Time (IACT)

======================== % Berapa banyak sampel yang harus dibangkitkan untuk mendapatkan

sampel % yang independen (seberapa cepat konvergensi simulasi)

resultsIAT = IACT(Hasil.post_theta); IAT = [resultsIAT.iact];

% ===== Uji Konvergensi Geweke

============================================ idraw1 = round(.1*N); resultCV = momentg(Hasil.post_theta(1:idraw1,:)); meansa = [resultCV.pmean]; nsea = [resultCV.nse1];

idraw2 = round(.5*N)+1; resultCV = momentg(Hasil.post_theta(idraw2:N,:)); meansb = [resultCV.pmean]; nseb = [resultCV.nse1];

CD = (meansa - meansb)./sqrt(nsea+nseb); onetail = 1-normcdf(abs(CD),0,1); pV = 2*onetail;

% ===== 95% Highest Posterior Density (HPD) Interval

====================== resultsHPD = HPD(Hasil.post_theta,0.05); LB = [resultsHPD.LB]; UB = [resultsHPD.UB];

% ===== Numerical Standard Error (NSE)

Page 25: LAMPIRANrepository.uksw.edu/bitstream/123456789/15161/6/T1...Lampiran 1 : Kode MATLAB untuk model-model khusus APARCH Berdistribusi Normal 1.1. Kode Utama 1.1.1. Kode Utama ARCH function

==================================== resultsNSE = NSE(Hasil.post_theta); NSEd = [resultsNSE.nse];

%====================== Mengatur hasil pencetakan

=========================

%----- Statistik Parameter: in.cnames = char('w','a','b','y','del'); in.rnames = char('Parameter','Mean','SD','LB','UB','IACT','NSE','G-

CD','p-Value'); in.fmt = '%16.6f'; tmp = [MP; SP; LB; UB; IAT; NSEd; CD; pV]; fprintf(1,'Estimasi menggunakan MCMC dan Uji Diagnosa\n'); % cetak

hasil mprint(tmp,in);

1.2.Kode Likelihood

1.2.1. Kode Likelihood ARCH

function [log_likelihood] = ARCH_likelihood_adapt(R,R2,theta)

T = max(size(R2));

sigmadel = zeros(T,1);

sigmadel(1) = theta(1) /(1 - theta(2));

log_likelihood = -

0.5*(log(2*pi)+log(sigmadel(1))+R2(1)/sigmadel(1));

for i=2:T

sigmadel(i) = theta(1) + theta(2)*(abs(R(i-1))^2);

log_likelihood = log_likelihood -

0.5*(log(2*pi)+log(sigmadel(i))+R2(i)/sigmadel(i));

end

1.2.2. Kode Likelihood GARCH

function [log_likelihood] = GARCH_likelihood_adapt(R,R2,theta)

T = max(size(R2));

sigmadel = zeros(T,1);

sigmadel(1) = theta(1) /(1 - theta(2) - theta(3));

log_likelihood = -

0.5*(log(2*pi)+log(sigmadel(1))+R2(1)/sigmadel(1));

for i=2:T

sigmadel(i) = theta(1) + theta(2)*(abs(R(i-1))^2) +

theta(3)*(sigmadel(i-1)^2);

log_likelihood = log_likelihood -

0.5*(log(2*pi)+log(sigmadel(i))+R2(i)/sigmadel(i));

end

1.2.3. Kode Likelihood TARCH

function [log_likelihood] = TARCH_likelihood_adapt(R,R2,theta)

T = max(size(R2));

sigmadel = zeros(T,1);

sigmadel(1) = theta(1) /(1 - theta(2)*(1-theta(4)) - theta(3));

Page 26: LAMPIRANrepository.uksw.edu/bitstream/123456789/15161/6/T1...Lampiran 1 : Kode MATLAB untuk model-model khusus APARCH Berdistribusi Normal 1.1. Kode Utama 1.1.1. Kode Utama ARCH function

log_likelihood = -

0.5*(log(2*pi)+log(sigmadel(1)^2)+R2(1)/sigmadel(1)^2);

for i=2:T

sigmadel(i) = theta(1) + theta(2)*(abs(R(i-1)) -

theta(4)*R(i-1)) + theta(3)*(sigmadel(i-1));

log_likelihood = log_likelihood -

0.5*(log(2*pi)+log(sigmadel(i)^2)+R2(i)/sigmadel(i)^2);

end

1.2.4. Kode Likelihood TS-GARCH

Function [log_likelihood] =TSGARCH_likelihood_adapt(R,R2,theta)

T = max(size(R2));

sigmadel = zeros(T,1);

sigmadel(1) = theta(1) /(1 - theta(2) - theta(3));

log_likelihood = -

0.5*(log(2*pi)+log(sigmadel(1))+R2(1)/sigmadel(1));

for i=2:T

sigmadel(i) = theta(1) + theta(2)*(abs(R(i-1))) +

theta(3)*(sigmadel(i-1));

log_likelihood = log_likelihood -

0.5*(log(2*pi)+log(sigmadel(i))+R2(i)/sigmadel(i));

end

1.2.5. Kode Likelihood GJR-GARCH

function [log_likelihood] = GJR_likelihood_adapt(R,R2,theta)

T = max(size(R2));

sigmadel = zeros(T,1);

sigmadel(1) = theta(1) /(1 - theta(2) - 0.5*theta(4)) - theta(3));

log_likelihood = -

0.5*(log(2*pi)+log(sigmadel(1))+R2(1)/sigmadel(1));

for i=2:T

sigmadel(i) = theta(1) + theta(2)*((abs(R(i-1)) -

theta(4)*R(i-1))^2) + theta(3)*((sigmadel(i-1))^2);

log_likelihood = log_likelihood -

0.5*(log(2*pi)+log(sigmadel(i))+R2(i)/sigmadel(i));

end

1.2.6. Kode Likelihood NARCH

function [log_likelihood] = NARCH_likelihood_adapt(R,R2,theta)

T = max(size(R2));

sigmadel = zeros(T,1);

sigmadel(1) = theta(1) /(1 - theta(2));

sigma2(1) = sigmadel(1) \^(2/theta(3));

log_likelihood = -

0.5*(log(2*pi)+log(sigmadel(1))+R2(1)/sigmadel(1));

for i=2:T

sigmadel(i) = theta(1) + theta(2)*(abs(R(i-1)))^theta(3);

sigma2(i) = sigmadel(i)^(2/theta(3);

log_likelihood = log_likelihood -

0.5*(log(2*pi)+log(sigmadel(i))+R2(i)/sigmadel(i));

end

Page 27: LAMPIRANrepository.uksw.edu/bitstream/123456789/15161/6/T1...Lampiran 1 : Kode MATLAB untuk model-model khusus APARCH Berdistribusi Normal 1.1. Kode Utama 1.1.1. Kode Utama ARCH function

1.2.7. Kode Likelihood APARCH

function [log_likelihood] = APARCH_likelihood_adapt(R,R2,theta)

T = max(size(R2));

sigma2 = zeros(T,1);

sigmadel(1) = theta(1) /(1 - theta(2)*(1-theta(4))^(theta(5)) -

theta(3));

sigma2(1) = sigmadel(1)^(2/theta(5));

log_likelihood = -0.5*(log(2*pi)+log(sigma2(1))+R2(1)/sigma2(1));

for i=2:T

sigmadel(i) = theta(1) + theta(2)*((abs(R(i-1)) -

theta(4)*R(i-1))^theta(5)) ...

+ theta(3)*((sigmadel(i-1))^theta(5));

sigma2(i) = sigmadel(i)^(2/theta(5));

log_likelihood = log_likelihood -

0.5*(log(2*pi)+log(sigma2(i))+R2(i)/sigma2(i));

end

1.3.Kode Pendukung

Kode IACT, momentg, HPD, NSE, dan mprint dapat dilihat dalam Nugroho (2014).

Page 28: LAMPIRANrepository.uksw.edu/bitstream/123456789/15161/6/T1...Lampiran 1 : Kode MATLAB untuk model-model khusus APARCH Berdistribusi Normal 1.1. Kode Utama 1.1.1. Kode Utama ARCH function

Lampiran 2 : Sertifikat Seminar