2022-04-11 17:03:43 +02:00
|
|
|
function generate_trend_stationary_AR1(fname)
|
2016-03-31 19:57:16 +02:00
|
|
|
n_periods=10000;
|
|
|
|
rho_y=0.5;
|
|
|
|
rho_p=0.5;
|
|
|
|
g_y=0.0001;
|
|
|
|
g_p=-0.0001;
|
|
|
|
const_y=2;
|
|
|
|
const_p=2;
|
|
|
|
sigma_y=0.001;
|
|
|
|
sigma_p=0.001;
|
|
|
|
|
|
|
|
orig_params=[rho_y rho_p g_y g_p sigma_y sigma_p]';
|
2017-10-10 10:05:59 +02:00
|
|
|
param_names={'rho_y'; 'rho_p'; 'g_y'; 'g_p'; 'sigma_y'; 'sigma_p'};
|
2016-03-31 19:57:16 +02:00
|
|
|
|
2022-04-11 17:03:43 +02:00
|
|
|
save([fname '_orig_params_prefilter.mat'],'orig_params','param_names')
|
2016-03-31 19:57:16 +02:00
|
|
|
|
2017-10-10 10:05:59 +02:00
|
|
|
orig_params = [rho_y rho_p g_y g_p const_y const_p sigma_y sigma_p]';
|
|
|
|
param_names = {'rho_y'; 'rho_p'; 'g_y'; 'g_p'; 'const_y'; 'const_p'; 'sigma_y'; 'sigma_p'};
|
2016-03-31 19:57:16 +02:00
|
|
|
|
2022-04-11 17:03:43 +02:00
|
|
|
save([fname '_orig_params.mat'],'orig_params','param_names')
|
2016-03-31 19:57:16 +02:00
|
|
|
|
|
|
|
jumping_covariance=diag([1e-8; 1e-8; 1e-16; 1e-16; 1e-8; 1e-8; 1e-12; 1e-12;])^-1;
|
2022-04-11 17:03:43 +02:00
|
|
|
save([fname '_MCMC_jump_covar.mat'],'jumping_covariance');
|
2016-03-31 19:57:16 +02:00
|
|
|
jumping_covariance=diag([1e-8; 1e-8; 1e-16; 1e-16; 1e-12; 1e-12;])^-1;
|
2022-04-11 17:03:43 +02:00
|
|
|
save([fname '_MCMC_jump_covar_prefilter.mat'],'jumping_covariance');
|
2016-03-31 19:57:16 +02:00
|
|
|
|
|
|
|
%% data without constant
|
|
|
|
log_P=zeros(1,n_periods);
|
|
|
|
log_Y=zeros(1,n_periods);
|
|
|
|
junk2_orig=zeros(1,n_periods);
|
|
|
|
for ii=2:n_periods
|
|
|
|
log_P(ii)=rho_p*log_P(ii-1)+sigma_p*randn;
|
|
|
|
log_Y(ii)=rho_y*log_Y(ii-1)+sigma_y*randn;
|
|
|
|
junk2_orig(ii)=0.9*junk2_orig(ii-1)+randn;
|
|
|
|
end
|
|
|
|
%add trend
|
|
|
|
log_P=log_P+g_p*(1:n_periods);
|
|
|
|
log_Y=log_Y+g_y*(1:n_periods);
|
|
|
|
|
|
|
|
Y_obs=exp(log_Y);
|
|
|
|
P_obs=exp(log_P);
|
|
|
|
junk2=exp(junk2_orig);
|
2022-04-11 17:03:43 +02:00
|
|
|
save([fname '_Exp_AR1_trend_data_no_constant.mat'],'Y_obs','P_obs','junk2')
|
2016-03-31 19:57:16 +02:00
|
|
|
%
|
|
|
|
% [b_p,~,~,~,stats_p] = regress(log(P_obs(2:end))',[ones(n_periods-1,1) (2:n_periods)' log(P_obs(1:end-1)')]);
|
|
|
|
% [b_y,~,~,~,stats_y] = regress(log(Y_obs(2:end))',[ones(n_periods-1,1) (2:n_periods)' log(Y_obs(1:end-1)')]);
|
|
|
|
|
|
|
|
Y_obs=log_Y;
|
|
|
|
P_obs=log_P;
|
|
|
|
junk2=junk2_orig;
|
2022-04-11 17:03:43 +02:00
|
|
|
save([fname '_AR1_trend_data_no_constant.mat'],'Y_obs','P_obs','junk2')
|
2016-03-31 19:57:16 +02:00
|
|
|
|
|
|
|
% [b_p,~,~,~,stats_p] = regress((P_obs(2:end))',[ones(n_periods-1,1) (2:n_periods)' (P_obs(1:end-1)')]);
|
|
|
|
% [b_y,~,~,~,stats_y] = regress((Y_obs(2:end))',[ones(n_periods-1,1) (2:n_periods)' (Y_obs(1:end-1)')]);
|
|
|
|
|
|
|
|
%% data with constant
|
|
|
|
log_P=zeros(1,n_periods);
|
|
|
|
log_Y=zeros(1,n_periods);
|
|
|
|
log_P(1,1)=const_p;
|
|
|
|
log_Y(1,1)=const_y;
|
|
|
|
for ii=2:n_periods
|
|
|
|
log_P(ii)=(1-rho_p)*const_p+rho_p*log_P(ii-1)+sigma_p*randn;
|
|
|
|
log_Y(ii)=(1-rho_y)*const_y+rho_y*log_Y(ii-1)+sigma_y*randn;
|
|
|
|
end
|
|
|
|
%add trend
|
|
|
|
log_P=log_P+g_p*(1:n_periods);
|
|
|
|
log_Y=log_Y+g_y*(1:n_periods);
|
|
|
|
|
|
|
|
Y_obs=exp(log_Y);
|
|
|
|
P_obs=exp(log_P);
|
|
|
|
junk2=exp(junk2_orig);
|
2022-04-11 17:03:43 +02:00
|
|
|
save([fname '_Exp_AR1_trend_data_with_constant.mat'],'Y_obs','P_obs','junk2')
|
2016-03-31 19:57:16 +02:00
|
|
|
|
|
|
|
% [b,bint,r,rint,stats] = regress(log(P_obs(2:end))',[ones(n_periods-1,1) (2:n_periods)' log(P_obs(1:end-1)')]);
|
|
|
|
% [b,bint,r,rint,stats] = regress(log(Y_obs(2:end))',[ones(n_periods-1,1) (2:n_periods)' log(Y_obs(1:end-1)')]);
|
|
|
|
|
|
|
|
Y_obs=log_Y;
|
|
|
|
P_obs=log_P;
|
|
|
|
junk2=junk2_orig;
|
2022-04-11 17:03:43 +02:00
|
|
|
save([fname '_AR1_trend_data_with_constant.mat'],'Y_obs','P_obs','junk2')
|
2016-03-31 19:57:16 +02:00
|
|
|
|
|
|
|
% [b_p,~,~,~,stats_p] = regress((P_obs(2:end))',[ones(n_periods-1,1) (2:n_periods)' (P_obs(1:end-1)')]);
|
2022-04-11 17:03:43 +02:00
|
|
|
% [b_y,~,~,~,stats_y] = regress((Y_obs(2:end))',[ones(n_periods-1,1) (2:n_periods)' (Y_obs(1:end-1)')]);
|