全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Gauss专版
2681 2
2010-09-01
请问Chang Jin Kim and C.R. Nelson(1999)那本State-Space Models with Regime Switching第九章GIBS_MS0.PRG 这个程序中的rg1(), rg2()两个子程序的目的是什么啊?看了半天没看明白,请高手指点
二维码

扫码加我 拉你入群

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

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

全部回复
2010-9-3 15:17:49
帮楼主贴出来,请能看明白的人解释....

proc rg1(a);
local x,j,w,u;

if a gt 1;
    x = rg2(a);
elseif a lt 1;
    a = a + 1;
    u = rndu(1,1);
    x = rg2(a)*u^(1/a);
elseif a == 1;
    x = -ln(rndu(1,1));
endif;

retp(x);
endp;


proc rg2(a);
local gam,accept,b,c,j,x,z,u,v,w,y;

b = a-1;
c = 3*a - .75;
accept = 0;
do while accept == 0;
    u = rndu(1,1);
    v = rndu(1,1);
    w = u*(1-u);
    y = sqrt(c/w)*(u-.5);
    x = b+y;
    if x ge 0;
        z = 64*(w^3)*(v^2);
        accept = z le ( 1-(2*y^2)/x );
        if accept == 0;
            accept = ln(z) le 2*(b*ln(x/b) - y);
        endif;
    endif;
endo;

retp(x);
endp;
二维码

扫码加我 拉你入群

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

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

2010-9-3 18:38:34
PROC  GEN_SIG;

local ystarr,ystar,xstar,v,psi,c,accept,psi_g,root,rootmod,nn,d,t2,
      sig2_v_g,coef,tstar,SIG2,Y_TMP;

     Y_TMP=YTT-MU0TT*ONES(T,1)-MU1TT*STT;

     TSTAR=ROWS(Y_tmp);

     nn = tstar + v0_;
     d = d0_ + (Y_tmp)'(Y_tmp);
     c = rndc(nn);
     t2 = c/d;
     SIG2=1/t2;


RETP(SIG2);
ENDP;

这是第一次引用的地方,这里的目的是生成IG inverted gamma 分布
IG(v/2, 1/2)=G(v/2, 2) = Chi-square(k)
所以作者用卡方分布来生成IG分布 其他都是scale的问题

再来看引用RG的2小段:

proc rndc(a);       /* chisquare */  作者在这里提到了 这是为了生成卡方分布
local x,w;

a = a/2;
w= rg1(a);
x = w * 2;

retp(x);
endp;

proc rndb(a,b);                /* beta */ 这段用来生成beta分布 Beta(a,b)
local x,a1n,a1d;

a1n = rg1(a);
a1d = rg1(b);
x = a1n / (a1n + a1d);   Gamma(a, t)/G(a,t)+G(b,t)  = Beta(a,b)


retp(x);
endp;

RG1 RG2 事实上是用来生成Gamma分布或者说Chi2(k)=Gamma(k/2, 1/2)
RG2 用的是acceptance-rejection method 具体细节得查查课本了,但基本意思就是这样了
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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