您好,我最近在研究DSGE,参考了Troy Matheson的《Assessing the fit of small open economy DSGEs》论文里的模型,加入了货币余额效用和ZF购买,遇到了很多问题,想请教老师们。
这是我在跑程序的时候出现的问题:
Configuring Dynare ...
[mex] Generalized QZ.
[mex] Sylvester equation solution.
[mex] Kronecker products.
[mex] Sparse kronecker products.
[mex] Local state space iteration (second order).
[mex] Bytecode evaluation.
[mex] k-order perturbation solver.
[mex] k-order solution simulation.
[mex] Quasi Monte-Carlo sequence (Sobol).
[mex] Markov Switching SBVAR.
Starting Dynare (version 4.4.2).
Starting preprocessing of the model file ...
Found 21 equation(s).
Evaluating expressions...done
Computing static model derivatives:
- order 1
Computing dynamic model derivatives:
- order 1
- order 2
Processing outputs ...done
Preprocessing completed.
Starting MATLAB/Octave computing.
STEADY-STATE RESULTS:
y 0
pi 0
pi_H 0
pi_N 0
mc_H 0
mc_N 0
a_H 0
a_N 0
c 0
e 0
q 0
s 0
p_N 0
r 0
ystar 0
rstar 0
pistar 0
g 0
Psi_F 0
pi_F 0
m 0
EIGENVALUES:
Modulus Real Imaginary
0.4507 0.3787 0.2445
0.4507 0.3787 -0.2445
0.4906 0.4906 0
0.5 0.5 0
0.5 0.5 0
0.7071 0.625 0.3307
0.7071 0.625 -0.3307
0.72 0.6299 0.3487
0.72 0.6299 -0.3487
0.8 0.8 0
0.8 0.8 0
0.8 0.8 0
0.8 0.8 0
0.9318 0.9318 0
1.93 1.803 0.6868
1.93 1.803 -0.6868
2.02 2.02 0
2.276 2.276 0
Inf Inf 0
There are 5 eigenvalue(s) larger than 1 in modulus
for 6 forward-looking variable(s)
The rank condition ISN'T verified!
Loading 72 observations from data_abc.m
Error in computing likelihood for initial parameter values
ESTIMATION_CHECKS: There was an error in computing the likelihood for initial parameter values.
ESTIMATION_CHECKS: You should try using the calibrated version of the model as starting values. To do
ESTIMATION_CHECKS: this, add an empty estimated_params_init-block with use_calibration option immediately before the estimation
ESTIMATION_CHECKS: command (and after the estimated_params-block so that it does not get overwritten):
Error using print_info (line 45)
Blanchard Kahn conditions are not satisfied: indeterminacy
Error in print_info (line 45)
error(['Blanchard Kahn conditions are not satisfied:' ...
Error in initial_estimation_checks (line 69)
print_info(info, DynareOptions.noprint, DynareOptions)
Error in dynare_estimation_1 (line 179)
oo_ =
initial_estimation_checks(objective_function,xparam1,dataset_,M_,estim_params_,options_,bayestopt_,oo_);
Error in dynare_estimation (line 89)
dynare_estimation_1(var_list,dname);
Error in mme (line 410)
dynare_estimation(var_list_);
Error in dynare (line 180)
evalin('base',fname) ;
这是我的程序:
var y, pi, pi_H, pi_N, mc_H, mc_N, a_H, a_N, c, e, q, s, p_N, r,
ystar, rstar, pistar, g, Psi_F, pi_F m;
varexo epsilon_H, epsilon_N, epsilon_uip, epsilon_ystar, epsilon_pistar,
epsilon_rstar, epsilon_g, epsilon_r;
parameters bet, alpha, nu, eta, lambda, kappa, h, sigma, omega_H, omega_N,
theta_H, theta_N, psi, rho_H, rho_N, rho_ystar, rho_pistar,
rho_rstar, rho_g, omega_F, theta_F, rho_r, psi_a, psi_b, psi_c phi;
bet = 0.99;
alpha = 0.5;
nu = 1;
eta = 1;
lambda = 0.5;
h = 0.5;
sigma = 2;
omega_H = 0.5;
omega_N = 0.5;
theta_H = 0.5;
theta_N = 0.5;
psi = 1;
kappa = 0.5;
rho_H = 0.5;
rho_N = 0.5;
rho_ystar = 0.8;
rho_pistar = 0.8;
rho_rstar = 0.8;
rho_g = 0.8;
omega_F = 0.5;
theta_F = 0.5;
rho_r = 0.8;
psi_a = 0.5;
psi_b = 1.5;
psi_c = 0.1;
phi = 1;
model;
y = alpha*(lambda-1)*(eta+nu*lambda*alpha)*s+nu*lambda*alpha*(lambda-1)*p_N+(1-alpha+alpha*lambda)*c+alpha*(1-lambda)*ystar+alpha*eta*(1-lambda)*q+g;
g=rho_g*g(-1)+epsilon_g;
c = (h/(1+h))*c(-1)+(1/(1+h))*c(+1)-((1-h)/(sigma+sigma*h))*(r-pi(+1));
pi_H = (((1-omega_H)*(1-theta_H)*(1-bet*theta_H))/(theta_H+omega_H*(1-theta_H*(1-bet))))*mc_H+((bet*theta_H)/(theta_H+omega_H*(1-theta_H*(1-bet))))*pi_H(+1)+(omega_H/(theta_H+omega_H*(1-theta_H*(1-bet))))*pi_H(-1);
pi_N = (((1-omega_N)*(1-theta_N)*(1-bet*theta_N))/(theta_N+omega_N*(1-theta_N*(1-bet))))*mc_N+((bet*theta_N)/(theta_N+omega_N*(1-theta_N*(1-bet))))*pi_N(+1)+(omega_N/(theta_N+omega_N*(1-theta_N*(1-bet))))*pi_N(-1);
pi_F = (((1-omega_F)*(1-theta_F)*(1-bet*theta_F))/(theta_F+omega_F*(1-theta_F*(1-bet))))*Psi_F+((bet*theta_F)/(theta_F+omega_F*(1-theta_F*(1-bet))))*pi_F(+1)+(omega_F/(theta_F+omega_F*(1-theta_F*(1-bet))))*pi_F(-1);
mc_H = (sigma/(1-h))*(c-h*c(-1))+psi*y-(psi*(1-lambda)+1)*a_H-psi*lambda*a_N+(lambda-1)*alpha*s+lambda*p_N;
mc_N = (sigma/(1-h))*(c-h*c(-1))+psi*y-psi*(1-lambda)*a_H-(psi*lambda+1)*a_N+(lambda-1)*alpha*s+(lambda-1)*p_N;
a_H = rho_H*a_H(-1)+epsilon_H;
a_N = rho_N*a_N(-1)+kappa*epsilon_N;
c = h*c(-1)+ystar-h*ystar(-1)+((1-h)/sigma)*q;
r = rstar+e(+1)-e+epsilon_uip;
s = s(-1)+pi_H-pi_F;
q = Psi_F-(1-alpha*(1-lambda))*s-lambda*p_N;
Psi_F = Psi_F(-1)+e+pistar-pi_F;
pi = (1-lambda)*pi_H+lambda*pi_N-(1-lambda)*alpha*(s-s(-1));
ystar = rho_ystar*ystar(-1)+epsilon_ystar;
pistar = rho_pistar*pistar(-1)+epsilon_pistar;
rstar = rho_rstar*rstar(-1)+epsilon_rstar;
r = rho_r*r(-1)+psi_a*y+psi_b*pi+psi_c*e+epsilon_r;
m = (sigma*(c-h*c(-1)))/((1-h)*phi)-r/phi;
end;
initval;
y=0;
pi=0;
pi_H=0;
pi_N=0;
mc_H=0;
mc_N=0;
a_H=0;
a_N=0;
c=0;
e=0;
q=0;
s=0;
p_N=0;
r=0;
ystar=0;
rstar=0;
pistar=0;
g=0;
Psi_F=0;
pi_F=0;
m = 0;
epsilon_H=0;
epsilon_N=0;
epsilon_uip=0;
epsilon_ystar=0;
epsilon_pistar=0;
epsilon_rstar=0;
epsilon_g=0;
epsilon_r=0;
end;
steady;
check;
shocks;
var epsilon_H;
stderr 0.01;
var epsilon_N;
stderr 0.01;
var epsilon_uip;
stderr 0.01;
var epsilon_ystar;
stderr 0.01;
var epsilon_pistar;
stderr 0.01;
var epsilon_rstar;
stderr 0.01;
var epsilon_g;
stderr 0.01;
var epsilon_r;
stderr 0.01;
end;
estimated_params;
bet, beta_pdf, 0.99, 0.01;
alpha, beta_pdf, 0.5, 0.1;
nu, gamma_pdf, 1, 0.2;
eta, gamma_pdf, 1, 0.2;
lambda, beta_pdf, 0.5, 0.1;
h, beta_pdf, 0.5, 0.1;
sigma, gamma_pdf, 2, 0.5;
omega_H, beta_pdf, 0.5, 0.1;
omega_N, beta_pdf, 0.5, 0.1;
theta_H, beta_pdf, 0.5, 0.1;
theta_N, beta_pdf, 0.5, 0.1;
psi, gamma_pdf, 1, 0.2;
kappa, gamma_pdf, 0.5, 0.2;
rho_H, beta_pdf, 0.8, 0.1;
rho_N, beta_pdf, 0.8, 0.1;
rho_ystar, beta_pdf, 0.8, 0.1;
rho_pistar, beta_pdf, 0.8, 0.1;
rho_rstar, beta_pdf, 0.8, 0.1;
rho_g, beta_pdf, 0.8, 0.1;
omega_F, beta_pdf, 0.5, 0.1;
theta_F, beta_pdf, 0.5, 0.1;
rho_r, beta_pdf, 0.8, 0.1;
psi_a, gamma_pdf, 0.5, 0.1;
psi_b, gamma_pdf, 1.5, 0.2;
psi_c, gamma_pdf, 0.1, 0.05;
phi, gamma_pdf, 1, 0.2;
stderr epsilon_H, inv_gamma_pdf, 0.01, inf;
stderr epsilon_N, inv_gamma_pdf, 0.01, inf;
stderr epsilon_uip, inv_gamma_pdf, 0.01, inf;
stderr epsilon_ystar, inv_gamma_pdf, 0.01, inf;
stderr epsilon_pistar, inv_gamma_pdf, 0.01, inf;
stderr epsilon_rstar, inv_gamma_pdf, 0.01, inf;
stderr epsilon_g, inv_gamma_pdf, 0.01, inf;
stderr epsilon_r, inv_gamma_pdf, 0.01, inf;
end;
varobs y s r pi pi_F e m;
estimation(datafile=data_abc) y s r pi pi_F e m;
现在最直接的问题是我的BK条件不满足,特征值大于1的少了一个,之前看老师的帖子说是要重新校准,我也试了一些还是一样的错误,但我觉得会不会是我的方程有问题,直觉是其中有五个方程包含了六个预期变量。或者是我的方程有的是矛盾的?毕竟原文中的有些数学细节我感觉没那么准确。我想知道到底是校准的问题还是模型方程的问题呢?
对数线性化是参考原论文的,我就自然地把方程中所有变量都当做是对稳态的偏离百分比,所以我在处理数据时是把所有数据(对应于对数线性化之前)都进行了季节调整然后取对数然后H-P滤波。(这些都是为了是模型中变量与数据变量对应)。在处理利率r时,我用的7天同业拆借,r先加的1(为了使R=r+1)然后进行的季节调整然后取对数然后H-P滤波。pi是用的p-p(-1)。我想知道我可以这样对应处理吗(这样处理是想方程中所有变量的稳态都是零)?我还没看到有人会进行像我这样的处理。
我看有的文章是一部分参数进行校准,一部分参数进行贝叶斯估计,不过我觉得这样可能会错误,因为直觉不是在一个层次上考虑问题了。上面的错误提示我进行一部分参数校准,如果我仍然全用贝叶斯估计,这样可以吗?或者,怎样把参数校准和贝叶斯估计写在一个mod里,怎么指定呢?有参考的mod吗?
如果我利用贝叶斯估计完成了参数估计,那么我下面是不是就可以用后验均值,然后进行模拟得到IRF呢?



雷达卡




京公网安备 11010802022788号







