help with possible mistake in data?
Posted:
Sat Jul 02, 2011 4:06 pm
by Bubba_Smith
Hi, I got this code, in order to estimate a basic NK model, which works well with a different datafile (an US one). When arranging a file with data from a different country (Japan, the attached one) I find the following error messages:
??? Error using ==> chol
Matrix must be positive definite.
Error in ==> metropolis_hastings_initialization at 52
d = chol(vv);
Error in ==> random_walk_metropolis_hastings at 58
[ ix2, ilogpo2, ModelName, MhDirectoryName, fblck, fline, npar, nblck, nruns,
NewFile, MAX_nruns, d ] = ...
Error in ==> dynare_estimation_1 at 1106
feval(options_.posterior_sampling_method,'DsgeLikelihood',options_.proposal_distribution,xparam1,invhess,bounds,gend,data,...
Error in ==> dynare_estimation at 62
dynare_estimation_1(var_list,varargin{:});
Error in ==> nkmbasic at 133
dynare_estimation(var_list_);
Error in ==> dynare at 132
evalin('base',fname) ;
>> anyone could guide me to what exactly I'm doing wrong?? I'm nob enough to don't notice it!!
Thanks!
Re: help with possible mistake in data?
Posted:
Sat Jul 02, 2011 7:01 pm
by jpfeifer
Hi, this is most probably not a problem with the data. There are dozens of posts already discussing this issue. Ill-shaped Hessians occur fairly often after slight changes to the setup. Use mode_compute=6.
Re: help with possible mistake in data?
Posted:
Sat Jul 02, 2011 7:18 pm
by Bubba_Smith
Thanks!! I'm trying with that tiny change.. to be honest, almost everything on programming is new for me, so I have to I bet I'll sweat blood in order to finish my thesis!
Re: help with possible mistake in data?
Posted:
Sun Jul 03, 2011 8:49 pm
by Bubba_Smith
Now it returns me to this weird situation, in which any value I plug isn't valid:
Loading 129 observations from Untitled2.m
Initial value of the log posterior (or likelihood): -8767320096687087
==========================================================
Change in the covariance matrix = 3.0765.
Mode improvement = 8767319996687086
New value of jscale = 0.84121
==========================================================
Change in the covariance matrix = 38.167.
Mode improvement = 8.9407e-006
RESULTS FROM POSTERIOR MAXIMIZATION
parameters
prior mean mode s.d. t-stat prior pstdev
sig 2.000 1.6210 0.3812 4.2527 norm 0.1000
eta 2.000 1.7276 0.3708 4.6593 norm 0.1000
beta 0.990 1.0000 0.0369 27.1283 norm 0.0100
omeg 0.750 0.9834 0.2664 3.6908 beta 0.1000
rho 0.750 0.7785 0.2446 3.1834 beta 0.1000
psi1 1.500 1.0847 0.6030 1.7987 norm 0.3000
psi2 0.125 1.8371 0.5511 3.3337 gamm 0.1000
rhou 0.500 0.0695 0.2685 0.2589 beta 0.1500
rhoz 0.500 0.5868 0.2957 1.9845 beta 0.1500
rhov 0.500 0.2524 0.2800 0.9013 beta 0.1500
standard deviation of shocks
prior mean mode s.d. t-stat prior pstdev
e_u 0.150 4.1078 3.9876 1.0301 invg 0.1500
e_z 0.150 8.4475 6.4239 1.3150 invg 0.1500
e_v 0.150 2.2820 5.6762 0.4020 invg 0.1500
Log data density [Laplace approximation] is -99999997.995301.
MH: Multiple chains mode.
MH: Old metropolis.log file successfully erased!
MH: Creation of a new metropolis.log file.
MH: Searching for initial values...
MH: I couldn't get a valid initial value in 100 trials.
MH: You should Reduce mh_init_scale...
MH: Parameter mh_init_scale is equal to 0.400000.
MH: Enter a new value...
given that the mod file is the following, i suspect is something related with the estimation options......
close all;
var yy infl r u z v;
varexo e_u e_z e_v;
parameters sig eta beta omeg rho psi1 psi2 rhou rhoz rhov;
model(linear);
yy= yy(+1) - (1/sig)*(r - infl(+1))+u;
infl= beta*infl(+1) + ((sig+eta)*(1-omeg)*(1-beta*omeg)/omeg)*yy + z;
r=rho*r(-1)+(1-rho)*(psi1*infl+psi2*yy)+v;
u=rhou*u(-1)+e_u;
z=rhoz*z(-1)+e_z;
v=rhov*v(-1)+e_v;
end;
estimated_params;
stderr e_u, inv_gamma_pdf, 0.15,0.15;
stderr e_z, inv_gamma_pdf, 0.15,0.15;
stderr e_v, inv_gamma_pdf, 0.15,0.15;
sig, normal_pdf, 2,0.1;
eta, normal_pdf, 2,0.1;
beta, normal_pdf, 0.99,0.01;
omeg, beta_pdf, 0.75, 0.1;
rho, beta_pdf, 0.75, 0.1;
psi1, normal_pdf, 1.5 ,0.3;
psi2, gamma_pdf, 0.125 ,0.1;
rhou, beta_pdf, 0.5, 0.15;
rhoz, beta_pdf, 0.5, 0.15;
rhov, beta_pdf, 0.5, 0.15;
end;
varobs yy infl r;
estimation(datafile=Untitled2, nobs=129,mh_replic=100000,mh_drop=0.2,mh_nblocks=5,mh_jscale=0.3,mode_compute=6,bayesian_irf,moments_varendo);
am I right??
thanks
Re: help with possible mistake in data?
Posted:
Mon Jul 04, 2011 7:23 am
by jpfeifer
Hi, it looks as if your model is non-stationary. The first equation seems to have a unit root. In this case, you need to specify lik_init=2 in the estimation command, see
http://www.dynare.org/phpBB3/viewtopic.php?f=1&t=2955&p=7219.
Re: help with possible mistake in data?
Posted:
Thu Jul 07, 2011 1:48 pm
by Bubba_Smith
Hi, the problem is already solved, surprisingly, with this options:
varobs yy infl r;
estimation(datafile=japan,mode_compute=6,lik_init=2,mh_replic=5000, bayesian_irf)yy infl r;
and also using the data from an excel file instead of a "m" file seemed to help.. don't know why but it works well now
Anyway, thanks !!