全部版块 我的主页
论坛 经济学论坛 三区 宏观经济学
14979 28
2014-08-07
请教各位牛人,知不知道如何在DSGE模型中做脉冲响应函数呢?
我的模型已经用Dynare构建好了,稳态、参数等都没有问题,共有四个冲击变量,现在可以按四个冲击变量同时随机变动来运行程序,输出所有变量的模拟时间序列。但在现在的情况下,将任一冲击变量的方差设为0,则程序就会报出错误:
??? Error using ==> initial_estimation_checks at 38
initial_estimation_checks:: Estimation can't take place because too many shocks have been calibrated
with a zero variance!

Error in ==> initial_estimation_checks at 38
    error(['initial_estimation_checks:: Estimation can''t take place because too many shocks have been
    calibrated with a zero variance!'])

Error in ==> dynare_estimation_1 at 179
    oo_ =
    initial_estimation_checks(objective_function,xparam1,dataset_,M_,estim_params_,options_,bayestopt_,oo_);
   
Error in ==> dynare_estimation at 89
    dynare_estimation_1(var_list,dname);

Error in ==> dsge_zhaolog_est at 280
dynare_estimation(var_list_);

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

请问各位大牛知不知道在Matlab中如何对某一个冲击变量施加定量的冲击,让其他冲击变量保持不变,输出脉冲响应函数呢?或者是否有直接的命令输出单一冲击变量或两个冲击变量的脉冲响应呢?
谢谢!

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2014-8-9 11:23:29
如果你去读dynare 的源代码,你会发现这个问题其实不难。我自己动手做过。

如果没记错的话,你可以使用simult_.m  and irf.m 两个函数来实现你的目的,借用他的代码。使用simult_.m 的目的是获取模型的简化解形式,即近似解。irf就是脉冲响应,在这里你可以单独设置某个冲击,然后获取IRF的时间序列
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-8-9 11:29:17
出现这个问题的原因,可能是你使用了估计命令,而不是stoch_simul
当冲击变量的个数少于  什么来着,忘的好快,一个月不用全忘了,就会出现这个错误。你看看04年JEDC上的那篇经典的二阶求解文章,会得到答案。
另一个可能的解决方案是 你使用随机模拟命令stoch_simul,而不是估计命令。既然你参数都估计了,就用估计出来的那些值进行校准。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-8-9 11:29:51
出现这个问题的原因,可能是你使用了估计命令,而不是stoch_simul
当冲击变量的个数少于  什么来着,忘的好快,一个月不用全忘了,就会出现这个错误。你看看04年JEDC上的那篇经典的二阶求解文章,会得到答案。
另一个可能的解决方案是 你使用随机模拟命令stoch_simul,而不是估计命令。既然你参数都估计了,就用估计出来的那些值进行校准。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-8-10 18:03:04
ahnulxy 发表于 2014-8-9 11:29
出现这个问题的原因,可能是你使用了估计命令,而不是stoch_simul
当冲击变量的个数少于  什么来着,忘的 ...
非常感谢前辈!我确实一直在用stoch_simul,所以每次都是几个冲击变量一起随机变化来着哈~知道有irf这个命令,对我来说很有帮助!非常感谢!!!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-9-14 12:13:25
ahnulxy 发表于 2014-8-9 11:23
如果你去读dynare 的源代码,你会发现这个问题其实不难。我自己动手做过。

如果没记错的话,你可以使用s ...
前辈你好!我现在在用DSGE模型做政策试验,已经用dynare把模型描述完毕,想试着做两个冲击变量同时冲击的复合的脉冲响应图。想向前辈请教Matlab里面有没有可以直接实现输出双变量脉冲响应的命令呢?
另外,我对于DSGE模型的参数估计的原理有点不太清楚,我先是根据前人论文中的设定以及实际数据的回归设置了参数值,然后在dynare程序里面有Markov Chain-Monte Carlo对参数分布的设定中设置成参数的均值,进行校准。我请教了其他做过DSGE的同学,他们是在进行数据模拟的同时进行参数校准的,参数的后验分布和变量的模拟数值是同时输出的。但我不太明白,这个参数的校准是基于什么进行的呢?或者说,本应该基于什么进行校准呢?不知道前辈有没有相关带程序的参考文献能够推荐呢?
此外,我在dynare中对冲击变量的残差值的参数进行设定的时候,程序使用手册中给的例子中通常是只包括对epsilon的方差设定为inverse gamma分布,但没有对epsilon的均值进行设定的例子,是说shock残差的均值不需要设定吗?如果可以设定应该怎么在dynare里进行设定校准呢?
最后,我目前用simult做出来的数据模拟值,很奇怪地出现,冲击变量的数值极大。因为是用对数线性化做的,变量的初始值都是0,冲击变量的方差设定的也是0.001左右的数值,但模拟出来的冲击变量的数值确达到50左右这么大,如果按对数来算的话,变化值就太大了!是因为参数校准和模拟数据同时进行导致的吗?还是我没有设定冲击变量的变化残差的均值导致的呢?
不好意思,一下问了这么多问题,但我身边没有熟悉DSGE模型和Matlab编程的人,只好将您当做专家向您咨询了。或者我有什么可以向您表达感谢的方式吗?您可以尽管提~非常感激!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群