如何解决Ox 中的有序 Probit 模型
我正在学习 Ox,因为它在涉及与我的工作相关的复杂计量经济学模型时非常灵活。但是我正在为我的有序概率模型而苦苦挣扎。对于简单的probit模型(阶数=2),函数如下:
decl g_mX,g_mY;
fProbit(const vP,const adFunc,const avscore,const amHessian)
{
decl prob = probn(g_mX * vP); // vP is column vector
adFunc[0] = double(
meanc(g_mY .* log(prob) + (1-g_mY) .* log(1-prob)));
return 1; // 1 indicates success
}
在“主要”部分,我模拟我的数据并调用集成在 Ox 包中的 BFGS 最大化器“最大化”:
main()
{
decl ct,mx,vbeta,veps;
decl vp,dfunc,ir;
println("Probit example 1,run on ",date());
ct = 546 ;
mx = ranbinomial(ct,1,0.35)~ ranbinomial(ct,2,0.45)~ranbinomial(ct,8,0.48) ;
veps = rann(ct,1);
g_mX = 1~mx[][1:10]; // regressors: 1,Marital,Gender,Age,etc.
vp0 = <.7034119;-.0416732;-.2973156;-.1419538 ;-.4537812; -.3036446;-.1783031 ; .0619869; .0310086; .0011324; -.0310052 > ; // starting values
g_mY = (g_mX*vp0 + veps) .> 0 ; // dependent variable: 0,1 dummy
vp = <0 ;0 ;0;0 ;0;0;0 ;0;0;0; 0 >;
MaxControl(-1,1); // print each iteration maximize
ir = MaxBFGS(fProbit,&vp,&dfunc,TRUE);
print("\n",MaxConvergenceMsg(ir)," using numerical derivatives","\n Function value = ",dfunc * rows(g_mY),"; parameters:",vp);
}
效果很好,收敛性强,vp ~ vp0。
现在假设我有一个大于 2 的顺序(具有 3 个或更多类别的因变量)。你如何编码这个有序的概率?
非常感谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。