楼主: jisongbian
1698 0

[问答] 求助关于simulated maximum likelihood的问题 [推广有奖]

  • 0关注
  • 0粉丝

初中生

23%

还不是VIP/贵宾

-

威望
0
论坛币
211 个
通用积分
5.6178
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
246 点
帖子
15
精华
0
在线时间
5 小时
注册时间
2015-6-16
最后登录
2017-2-13

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
小弟最近在学习simulated maximum likelihood estimation,在做最简单的一个random coefficient linear model的时候遇到了一些问题,请大家帮我解答一下。我参照greene第七版example 15.11的做法编了程序来estimate自己造的一组数据,但是发现group-level variance完全没有办法估算出来。msl估算的结果与简单ols的结果完全一致,请大家帮我看看问题出在了哪里?感谢!











程序如下:
new;cls;
library maxlik;
maxset;

n=1000;
ndraw=1000;
group=10;
seed1=1234;
seed2=2222;

/*generating group-level variance*/
mu0=rndu(group,1);
mu0=3*(mu0-meanc(mu0))/stdc(mu0);

id=seqa(1,1,group);
id=reshape(id,n,1);
mu=mu0[id];
/*theta=theta0;data=x~y;r=1;i=1;*/
/*generating data, y_it=x_it*(b_0+sigma_u*w_i)+sigma_ksi_it, w_i is the unobserved random variance*/
x=rndns(n,1,seed1)*10~rndus(n,1,seed2)*2;
x=ones(n,1)~x;
b0_true=2|5|4;
y=x*b0_true+mu+rndn(n,1)*4;

/*random draws for unobserved heterogeneity*/
draw=rndn(group,ndraw);
theta0=1|1|1|1|1; /*initial values*/

/*loglikelihood function*/
proc ll(theta,data);
local b, w, sigma, loglik, ind;
b=theta[1:3];
w=theta[4];
sigma=theta[5];
loglik=zeros(group,1);

for r(1,ndraw,1);
    for i(1, group,1);
        ind=indexcat(id,i);
        loglik=loglik+exp(sumc( -(data[ind,cols(data)]-data[ind,1:cols(data)-1]*b-draw[i,r]*w).^2/(2*sigma^2)-0.5*ln(2*pi*sigma^2) )/1000);  
    endfor;
endfor;
retp(sumc(ln(loglik/ndraw)));
endp;

/*gradient function*/
proc gr(theta,data);
local b, w, sigma, loglik, gra, gr12, gr3, gr4, llk, ind;
b=theta[1:3];
w=theta[4];
sigma=theta[5];
gra=zeros(group,rows(theta));
loglik=zeros(group,1);

for r(1,ndraw,1);
    for i(1, group,1); /*aggregating over t*/
        ind=indexcat(id,i);
        llk=exp(sumc(-(data[ind,cols(data)]-data[ind,1:cols(data)-1]*b-draw[i,r]*w).^2/(2*sigma^2)-0.5*ln(2*pi*sigma^2))/1000);
        gr12=sumc((data[ind,1:cols(data)-1].*(data[ind,cols(data)]-data[ind,1:cols(data)-1]*b-w*draw[i,r])/sigma^2)/1000)*llk; /*gradient for beta*/
        gr3=sumc((draw[i,r]*(data[ind,cols(data)]-data[ind,1:cols(data)-1]*b-w*draw[i,r])/sigma^2)/1000)*llk; /*gradient for sigma_u*/
        gr4=sumc(((data[ind,cols(data)]-data[ind,1:cols(data)-1]*b-w*draw[i,r]).^2/sigma^3-1/sigma)/1000)*llk; /*gradient for sigma_ksi*/
        loglik=loglik+llk;
        gra[i,.]=gra[i,.]+(gr12'~gr3~gr4);  
    endfor;
endfor;
retp(sumc((gra/ndraw)./(loglik/ndraw))');
endp;

/*coding check*/
/*theta3=2|5|4|0|5;theta4=2|5|4|3|4;
sumc(ll(theta3,x~y));sumc(ll(theta4,x~y));
if sumc(ll(theta3,x~y))<sumc(ll(theta4,x~y));
    print "right";
else;
    print "wrong";
endif;*/

/*gr(theta0,x~y);*/
_max_Algorithm=2;
_max_GradProc=&gr;
_max_GradCheckTol=1e-3;
{x0,f,g,cov,retcode}=maxlik(x~y,0,&ll,theta0);
call maxprt(x0,f,g,cov,retcode);
二维码

扫码加我 拉你入群

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

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

关键词:Likelihood Simulated simulate Maximum Late example 程序

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

本版微信群
加好友,备注jltj
拉您入交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-25 01:32