楼主: 飘零的枫叶
51979 206

[问答] 用lingo软件如何对DEA-DA模型进行编程 [推广有奖]

171
lxts 发表于 2011-8-25 14:14:23
QIANG`````````

172
tawjuan 发表于 2011-11-8 23:46:29
epoh老师好,我想问问你一个关于DYNARE问题,我编好程序后,开始运行,出现了错误提示:
Starting Dynare (version 4.2.1).
Starting preprocessing of the model file ...
ERROR: fs2000.mod:96.71: syntax error, unexpected ';'

??? Error using ==> dynare
DYNARE: preprocessing failed


这是我编好的程序,不知道是哪里出错了:
var c l y k i gi gc z b rk v r f kg a sb w taul tauk tauc ub ul ua uz utl utk utc ugc;
varexo e_b e_l e_a1 e_a2 e_z e_tl e_tk e_tc e_gc;

parameters alp bet gam h kappa phi0 phi1 phi2 phi3 phi4 phi5 phi6 phi7 phi8 phi9 phi10 phi11 del0 del1 del2 delg alpg rhob rhol rhoa1 rhoa2 rhoz rhotl rhotk rhotc rhogc sigmab sigmal sigmaa1 sigmaa2 sigmaz sigmatk sigmatl sigmatc sigmagc psiz psitk psitl gammaz gammatk gammatl gammagc;

alp = 0.436;
bet = 0.9897;
gam = 0.87;
h = 0.7;
kappa = 1.1;
phi0 = 0;
phi1 = 0.03125;
phi2 = 0.03125;
phi3 = 0.03125;
phi4 = 0.09375;
phi5 = 0.09375;
phi6 = 0.09375;
phi7 = 0.09375;
phi8 = 0.09375;
phi9 = 0.09375;
phi10 = 0.09375;
phi11 = 0.09375;
del0 = 0.0274;
del1 = 0.035;
del2 = 0.7;
delg = 0.025;
alpg = 0.2;
rhob = 0.5;
rhol = 0.5;
rhoa1 = 0.5;
rhoa2 = 0.5;
rhoz = 0.5;
rhotl = 0.5;
rhotk = 0.5;
rhotc = 0.5;
rhogc = 0.5;
sigmab = 1;
sigmal = 1;
sigmaa1 = 1;
sigmaa2 = 1;
sigmaz = 1;
sigmatl = 1;
sigmatk = 1;
sigmatc = 1;
sigmagc = 1;
psiz = 0.2;
psitk = 1;
psitl = 0.5;
gammaz = 0.15;
gammatk = 0.15;
gammatl = 0.15;
gammagc = 0.15;




model;
(c-h*c)^(-gam) = ((1+tauc)/ub)*bet*r*ub(+1)*(c(+1)-h*c)^(-gam)/(1+tauc(+1));
l^(1+kappa) = (1/(ul*(1+tauc))*((c-h*c(-1))^(-gam))*(1-taul)*(1-alp)*y;
y = rk*v*k(-1)+w*l;
ub = rhob*ub(-1)+sigmab*e_b;
ul = rhol*ul(-1)+sigmal*e_l;
k = (1-f)*k(-1)+i;
f = del0+del1*(v-1)+(del2*(v-1)^2)/2;
y = ua*((v*k(-1))^alp)*(i^(1-alp))*kg(-1)^alpg;
ua = rhoa1*ua(-1)+sigmaa1*e_a1;
i = del0*k;
z = tauc*c+tauk*rk*v*k(-1)+taul*w*l+b-gc-gi-r(-1)*b(-1);
rk = alp*y/k(-1);
w = (1-alp)*/l;
kg(-1) = (1-delg)*kg(-2)+a(-12);
gi = phi0*a+phi1*a(-1)+phi2*a(-2)+phi3*a(-3)+phi4*a(-4)+phi5*a(-5)+phi6*a(-6)+phi7*a(-7)+phi8*a(-8)+phi9*a(-9)+phi10*a(-10)+phi11*a(-11);
a = rhoa2*a(-1)+sigmaa2*e_a2;
y = c+i+gi+gc;
zhat = -psia*yhat-gammaz*sbhat(-8)+uzhat;
uzhat = rhoz*uzhat(-1)+sigmaz*e_z;
taulhat = psitl*yhat+gammatl*sbhat(-8)+utlhat;
utlhat = rhotl*utlhat(-1)+sigmatl*e_tl;
taukhat = psitk*yhat+gammatk*sbhat(-8)+utkhat;
utkhat = rhotk*utkhat(-1)+sigmatk*e_tk;
tauchat = utchat;
utchat = rhotc*utchat(-1)+sigmatc*e_tc;
gchat = -gammagc*sbhat(-8)+ugchat;
ugchat = rhogc*ugchat(-1)+sigmagc*e_gc;
sb = b/y;
end;

initval;
sb = 0.04;
v = 1;
rk = 0.057;
i =0.2096;
c = 0.45;
k = 7.649;
l = 0.2075;
y = 1;
gc = 0.0713;
b = 0.04;
gi = 0.0028;
kg = 3.627;
z = 0.03949
w = 2.7187;
taul = 0.1;
tauk = 0.1;
tauc = 0.1;
uz = 0;
utk = 0;
utl = 0;
utc = tauc;
ugc = 0;
ub = 1;
ua = 1.7084;
ul = 0.03674;
a = gi;
f = del0;
r = 1/bet;
e_b = 0;
e_l = 0;
e_a1 = 0;
e_a2 = 0;
e_z = 0;
e_tl = 0;
e_tk = 0;
e_tc = 0;
e_gc = 0;
end;


shocks;
var e_b; stderr 0.014;
var e_l; stderr 0.005;
var e_a1; stderr 0.005;
var e_a2; stderr 0.005;
var e_z; stderr 0.005;
var e_tl; stderr 0.005;
var e_tk; stderr 0.005;
var e_tc; stderr 0.005;
var e_gc; stderr 0.005;
end;

steady(solve_algo=0);

check;

estimated_params;
alp, beta_pdf, 0.4, 0.02;
bet, beta_pdf, 0.99, 0.002;
gam, gamma_pdf, 0.87, 0.5;
kappa , gamma_pdf, 1.1, 0.5;
h, beta_pdf, 0.7, 0.2;
del2, beta_pdf, 0.7, 0.5;
rhob, beta_pdf, 0.5, 0.2;
rhol, beta_pdf, 0.5, 0.2;
rhoa1, beta_pdf, 0.5, 0.2;
rhoa2, beta_pdf, 0.5, 0.2;
rhoz, beta_pdf, 0.5, 0.2;
rhotl, beta_pdf, 0.5, 0.2;
rhotk, beta_pdf, 0.5, 0.2;
rhotc, beta_pdf, 0.5, 0.2;
rhogc, beta_pdf, 0.5, 0.2;
sigmab, inv_gamma_pdf, 1, inf;
sigmal, inv_gamma_pdf, 1, inf;
sigmaa1, inv_gamma_pdf, 1, inf;
sigmaa2, inv_gamma_pdf, 1, inf;
sigmaz, inv_gamma_pdf, 1, inf;
sigmatl, inv_gamma_pdf, 1, inf;
sigmatk, inv_gamma_pdf, 1, inf;
sigmatc, inv_gamma_pdf, 1, inf;
sigmagc, inv_gamma_pdf, 1, inf;
psiz, gamma_pdf, 0.2, 0.1;
psitk, gamma_pdf, 1, 0.3;
psitl, gamma_pdf, 0.5, 0.25;
gammaz, normal_pdf, 0.15, 0.1;
gammatk, normal_pdf, 0.15, 0.1;
gammatl, normal_pdf, 0.15, 0.1;
gammagc, normal_pdf, 0.15, 0.1;
stderr e_b, inv_gamma_pdf, 0.035449, inf;
stderr e_l, inv_gamma_pdf, 0.008862, inf;
stderr e_a1, inv_gamma_pdf, 0.008862, inf;
stderr e_a2, inv_gamma_pdf, 0.008862, inf;
stderr e_z, inv_gamma_pdf, 0.008862, inf;
stderr e_tl, inv_gamma_pdf, 0.008862, inf;
stderr e_tk, inv_gamma_pdf, 0.008862, inf;
stderr e_tc, inv_gamma_pdf, 0.008862, inf;
stderr e_gc, inv_gamma_pdf, 0.008862, inf;
end;

varobs y c l;

estimation(order=1, datafile=fsdat_simul, mh_replic=2000, mh_nblocks=2, mh_jscale=0.8);


/*
* The following lines were used to generate the data file. If you want to
* generate another random data file, comment the "estimation" line and uncomment
* the following lines.
*/

//stoch_simul(periods=200, order=1);
//datatomfile('fsdat_simul', char('y', 'c', 'l'));

谢谢epoh老师!

173
epoh 发表于 2011-11-9 09:00:11

model部份,

初看有下列3点错

可能还有,请再仔细检查.

1.

l^(1+kappa) = (1/(ul*(1+tauc))*((c-h*c(-1))^(-gam))*(1-taul)*(1-alp)*y;

  漏掉 " ) "

我先改成这样:

l^(1+kappa) = (1/(ul*(1+tauc)))*((c-h*c(-1))^(-gam))*(1-taul)*(1-alp)*y;

%%%%%%

2.

w = (1-alp)* ? /l;  

%%%%%%

3.

zhat : Unknown symbol

174
tawjuan 发表于 2011-11-9 15:37:06
谢谢epoh老师,的确是这里出了错误!修改后,就好了。但是错误一直像冒水泡一样的不断出现。。。无语了,还得请教你这个问题:

Starting Dynare (version 4.2.1).
Starting preprocessing of the model file ...
Substitution of endo lags >= 2: added 19 auxiliary variables and equations.
Found 47 equation(s).
Evaluating expressions...done
Computing static model derivatives:
- order 1
Computing dynamic model derivatives:
- order 1
Processing outputs ...done
Preprocessing completed.
Starting MATLAB/Octave computing.

Residuals of the static equations:

Equation number 1 : 0
Equation number 2 : -1.2211
Equation number 3 : 0.15673
Equation number 4 : 0.5
Equation number 5 : 0.5
Equation number 6 : 0
Equation number 7 : 0.06635
Equation number 8 : 0.49994
Equation number 9 : 0.5
Equation number 10 : 0.033175
Equation number 11 : 0.065673
Equation number 12 : -0.31346
Equation number 13 : 0
Equation number 14 : 0
Equation number 15 : 0
Equation number 16 : 0
Equation number 17 : -0.09375
Equation number 18 : -0.00114
Equation number 19 : 0
Equation number 20 : 0.05896
Equation number 21 : 0
Equation number 22 : 0.06886
Equation number 23 : 0
Equation number 24 : -0.05
Equation number 25 : 0.075
Equation number 26 : 0
Equation number 27 : 0
Equation number 28 : 0


??? Error using ==> steady_
The steadystate values returned by fs2000_steadystate.m don't solve the static model!

Error in ==> steady at 54
steady_;

Error in ==> fs2000 at 573
steady;

Error in ==> dynare at 132
evalin('base',fname) ;

下面是设置的steady state的程序:
function [ys,check] = fs2000_steadystate(ys,exe)
  global M_
  
  alp = M_.params(1);
  bet = M_.params(2);
  gam = M_.params(3);
  h = M_.params(4);
  kappa = M_.params(5);
  phi0 = M_.params(6);
  phi1 = M_.params(7);
  phi2 = M_.params(8);
  phi3 = M_.params(9);
  phi4 = M_.params(10);
  phi5 = M_.params(11);
  phi6 = M_.params(12);
  phi7 = M_.params(13);
  phi8 = M_.params(14);
  phi9 = M_.params(15);
  phi10 = M_.params(16);
  phi11 = M_.params(17);
  del0 = M_.params(18);
  del1 = M_.params(19);
  del2 = M_.params(20);
  delg = M_.params(21);
  alpg = M_.params(22);
  rhob = M_.params(23);
  rhol = M_.params(24);
  rhoa1 = M_.params(25);
  rhoa2 = M_.params(26);
  rhoz = M_.params(27);
  rhotl = M_.params(28);
  rhotk = M_.params(29);
  rhotc = M_.params(30);
  rhogc = M_.params(31);
  sigmab = M_.params(32);
  sigmal = M_.params(33);
  sigmaa1 = M_.params(34);
  sigmaa2 = M_.params(35);
  sigmaz = M_.params(36);
  sigmatl = M_.params(37);
  sigmatk = M_.params(38);
  sigmatc = M_.params(39);
  sigmagc = M_.params(40);
  psiz = M_.params(41);
  psitk = M_.params(42);
  psitl = M_.params(43);
  gammaz = M_.params(44);
  gammatk = M_.params(45);
  gammatl = M_.params(46);
  gammagc = M_.params(47);
  taul = M_.params(48);
  tauk = M_.params(49);
  tauc = M_.params(50);
  check = 0;
  
  
  
  
  v = 1;
  r = 1/bet;
  rk = (1/bet-(1-del0))/(1-tauk);
  y = 0.5;
  k = 0.5;
  c = 0.5;
  l = 0.5;
  sb = 0.3396;
  ub = 1;
  ul = 1;
  ua = 1;
  uz = 0;
  utl = 0;
  ugc = 0;
  utk = 0;
  
  
  i = del0*k;
  w = (1-alp)*y/l;
  kg =(del0^(1-alp)*k/y)^(1/alpg);
  gi = delg*kg;
  a = gi;
  gc= c+i+gi-y;
  b = sb*y;   
  z = tauc*c+tauk*alp*y+taul*w*l-gi-gc+(1-r)*b;
  f = del0;
  yhat = (taul-gammatl*sb)/psitl;
  zhat = -psiz*yhat-gammaz*sb;
  gchat = -gammagc*sb;
  utc = tauc;
  
  
  
  
  
  ys =[
c
l
y
k
i
gi
gc
z
b
rk
v
r
f
kg
a
sb
w
zhat
yhat
gchat
ub
ul
ua
uz
utl
utk
utc
ugc    ];
不知道steady 的程序哪里出了问题,还请你帮忙给检查一下,谢谢你!

175
epoh 发表于 2011-11-9 16:51:37

哈哈!"美"的冒泡

问题出在这里,有点麻烦.

方便的话你把修改过的

model代码,放在我的短信息.

(有变更的部分)

我来实际跑程序,

这样好跟你的结果一致.

%%%%%%%

要不你就跟底下这篇文献一样

不要用fs2000_steadystate试试

Stochastic simulation of a DSGE model for Brazil.pdf
Brazilmodel_v4.mod
data33.mat

    Stochastic simulation of a DSGE model for Brazil.rar (361.01 KB)

176
tawjuan 发表于 2011-11-9 20:47:51
epoh 老师呀,你竟然说美的泡泡,真是太佩服你了! 我是心里堵得慌呀,不敢面对那些“泡泡”了。。。
我按照您给的文献修改了一下,不用steadystate了 ,结果还是不断冒泡呀,实在是快被淹窒息了。
现将这些代码发给您,请您救我呀!太感激您了!!!谢谢! governinv steadystate.rar (1.25 KB) governinv.rar (2.87 KB)

177
epoh 发表于 2011-11-9 21:31:14
Residuals of the static equations:

Equation number 1 : 0
Equation number 2 : -1.2211
Equation number 3 : 0.15673
Equation number 4 : 0
Equation number 5 : 0.06635
Equation number 6 : 0.49994
Equation number 7 : 0.033175
Equation number 8 : 0.065673
Equation number 9 : -0.31346
Equation number 10 : 0
Equation number 11 : 0
Equation number 12 : 0
Equation number 13 : 0
Equation number 14 : -0.09375
Equation number 15 : 0
Equation number 16 : -0.00114
Equation number 17 : 0.05896
Equation number 18 : 0.06886
Equation number 19 : -0.05
Equation number 20 : 0
Equation number 21 : 0.5
Equation number 22 : 0.5
Equation number 23 : 0.5
Equation number 24 : 0
Equation number 25 : 0
Equation number 26 : 0
Equation number 27 : 0.075
Equation number 28 : 0
************

solve_algo = 0

solve_algo = 1

solve_algo = 2

solve_algo = 3

我都试了,Residuals都很大

要麻烦你检查一下

1.你手算的 initial values 对不对?

2.每条输入的equation对不对?

**********

governinv_dynamic.m
% Model equations
%

residual = zeros(47, 1);
.....
.....
lhs =T15;
rhs =T25*T29/(1+params(8));
residual(1)= lhs-rhs;
lhs =y(36)^(1+params(5));
rhs =T48*y(37);
residual(2)= lhs-rhs;
lhs =y(37);
rhs =y(44)*y(45)*y(2)+y(36)*y(50);
residual(3)= lhs-rhs;
.....
.....
lhs =y(79);
rhs =y(32);
residual(46)= lhs-rhs;
lhs =y(80);
rhs =y(33);
residual(47)= lhs-rhs;



178
tawjuan 发表于 2011-11-9 22:44:51
设定了几个初始值,然后其它的 initial values就是手算的。

Jpfeifer认为:
“ If you computed the theoretical steady state, put the formulas in the initval-block and put resid(1) before the steady command. If the residuals are not 0, your theoretical steady state is wrong.”不是很明白,epoh老师能理解是什么意思吗?
错误就集中在我输入的equations 和initial values的正确性了。
谢谢epoh老师对我的帮助! you are so kind! thank you !

179
epoh 发表于 2011-11-10 07:42:47

put resid(1) before the steady command.

就是:

initval;
v = 1;
rk = 0.042;
.....
.....
e_tk = 0;
e_tc = 0;
e_gc = 0;
end;

resid(1);
/*
steady;

check;

estimated_params;
alp, beta_pdf, 0.4, 0.02;
.....
.....
estimation(datafile=gidat_simul,.....);

*/
%%%%%%%%%%%%%%%%

dynare governinv
Substitution of endo lags >= 2: added 19 auxiliary variables and equations.???
Found 47 equation(s).

Residuals of the static equations:

Equation number 1 : 0
Equation number 2 : -1.2211
Equation number 3 : 0.15673
Equation number 4 : 0
Equation number 5 : 0.06635
Equation number 6 : 0.49994
Equation number 7 : 0.033175
Equation number 8 : 0.065673
Equation number 9 : -0.31346
Equation number 10 : 0
Equation number 11 : 0
Equation number 12 : 0
Equation number 13 : 0
Equation number 14 : -0.09375
Equation number 15 : 0
Equation number 16 : -0.00114
Equation number 17 : 0.05896
Equation number 18 : 0.06886
Equation number 19 : -0.05
Equation number 20 : 0
Equation number 21 : 0.5
Equation number 22 : 0.5
Equation number 23 : 0.5
Equation number 24 : 0
Equation number 25 : 0
Equation number 26 : 0
Equation number 27 : 0.075
Equation number 28 : 0

%%%%%%%%%%%
dynare Brazilmodel_v4

Starting Dynare (version 4.2.2).
Starting preprocessing of the model file ...
Found 25 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.

Residuals of the static equations:

Equation number 1 : 0
Equation number 2 : 0
Equation number 3 : 0
Equation number 4 : 0
Equation number 5 : 0
Equation number 6 : 0
Equation number 7 : 0
Equation number 8 : 0
Equation number 9 : 0
Equation number 10 : 0
Equation number 11 : 0
Equation number 12 : 0
Equation number 13 : 0
Equation number 14 : 0
Equation number 15 : 0
Equation number 16 : 0
Equation number 17 : 0
Equation number 18 : 0
Equation number 19 : 0
Equation number 20 : 0
Equation number 21 : 0
Equation number 22 : 0
Equation number 23 : 0
Equation number 24 : 0
Equation number 25 : 0

%%%%%%%%%

你的是啥模型?

Dynare v4 - User Guide
page 35/106
For complicated models,finding suitable initial values for
the endogenous variables is the trickiest part of finding the
equilibrium of that model. Often,it is better to
start with a smaller model and add new variables one by one.

180
tawjuan 发表于 2011-11-10 08:58:43
epoh老师太精通了,我是想把这两篇文章中的model做成DYNARE的程序,自己编的,是不是有很大的问题,我不知道选择model的标准是什么,我是以有多少内生变量有多少方程来编的,哎,我好像是什么都不懂呢~~~~ model.rar (2.02 MB)

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-3 20:40