楼主: zlqs1985
1187 1

[问答] 求最大似然值的loop报错,请老师们帮忙看看 [推广有奖]

  • 2关注
  • 17粉丝

已卖:32份资源

副教授

2%

还不是VIP/贵宾

-

威望
0
论坛币
1020 个
通用积分
12.0990
学术水平
2 点
热心指数
6 点
信用等级
2 点
经验
8730 点
帖子
323
精华
0
在线时间
815 小时
注册时间
2008-9-18
最后登录
2023-1-16

楼主
zlqs1985 发表于 2013-6-5 22:16:53 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
    代码如下,标红的是出错的地方

    /**
***
***     Program to find the MLEs using several iterations of Newton-Raphson
***
**/

library pgraph;

graphset;
gausset;

cls;

rndseed 123457;



/**    (1) - Simulate the model   **/

t = 5;

x = { 1,2,4,5,8 };

beta = 1.0;
sig2 = 4.0;

y = beta*x + sqrt(sig2)*rndn(t,1);



/**     (3) - Evaluate gradient and Hessian at theta0      **/

beta_0  = 1.0;

sig2_0  = 4.0;

theta_0 = beta_0 | sig2_0;

g       = zeros(2,1);

g[1]    = meanc( (y - beta_0*x).*x ) / sig2_0;
g[2]    = -0.5/sig2_0 + 0.5*meanc( (y - beta_0*x).^2 )/sig2_0^2;


h       = zeros(2,2);

h[1,1]  = -meanc(x.^2)/sig2_0;
h[1,2]  = -meanc( (y - beta_0*x).*x )/sig2_0^2;
h[2,1]  = -meanc( (y - beta_0*x).*x )/sig2_0^2;
h[2,2]  = 0.5/sig2_0^2 - meanc( (y - beta_0*x).^2 )/sig2_0^3;



/**     (4) - Log-likelihood at theta0      **/

lnl_0     = -0.5*ln(2*pi) - 0.5*ln(sig2_0) - 0.5*meanc( (y - beta_0*x).*2 )/sig2_0;

i=1;

/**     (5) - Newton-Raphson update      **/
do while i<=5;


theta_i = theta_i - inv(h_i)*g_i;

beta_i  = theta_i[1];
sig2_i  = theta_i[2];

g_i[1]    = meanc( (y - beta_i*x).*x ) / sig2_i;
g_i[2]    = -0.5/sig2_i + 0.5*meanc( (y - beta_i*x).^2 )/sig2_i^2;

h_i[1,1]  = -meanc(x.^2)/sig2_i;
h_i[1,2]  = -meanc( (y - beta_i*x).*x )/sig2_i^2;
h_i[2,1]  = -meanc( (y - beta_i*x).*x )/sig2_i^2;
h_i[2,2]  = 0.5/sig2_i^2 - meanc( (y - beta_i*x).^2 )/sig2_i^3;



lnl_i     = -0.5*ln(2*pi) - 0.5*ln(sig2_i) - 0.5*meanc( (y - beta_i*x).*2 )/sig2_i;
print "Log-likelihood at theta_i =" lnl_i;
i=i+1;
endo;

  运行后显示Line 69 in D:\GAUSS\prc\max_nr_iter.g
   Illegal redefinition of procedure G0156 : 'g_i'
Line 70 in D:\GAUSS\prc\max_nr_iter.g
   Illegal redefinition of procedure G0156 : 'g_i'
Line 72 in D:\GAUSS\prc\max_nr_iter.g
   Illegal redefinition of procedure G0156 : 'h_i'

    在下是Gauss新手,妄自考虑了一下,想到两个可能的问题,首先可能是代码h_i 和g_i 的idex _i的表示问题,另外我在main program中也定义了g 和 h(分别代表梯度向量和hessian矩阵)。这个程序主要是为了连续有关loop的编写。

二维码

扫码加我 拉你入群

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

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

关键词:loop 最大似然 似然值 Likelihood iterations

沙发
xuelida 在职认证  发表于 2013-6-7 23:07:15
你试试用gauss里的内嵌函数,调用命令来计算梯度向量,Hessian矩阵

g=gradp(&f,beta); @ gradp 是gauss内嵌函数,计算梯度向量@
H=hessp(&f,beta); @ hessp 是gauss内嵌函数,计算Hessian矩阵@
此外,你这种迭代5次,能否找到最优解?Newton-Raphson method的计算过程是不断更新参数,只能小于容忍度,才停止更新
已有 1 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
xuehe + 100 + 100 + 5 + 3 + 4 根据规定进行奖励

总评分: 经验 + 100  论坛币 + 100  学术水平 + 5  热心指数 + 3  信用等级 + 4   查看全部评分

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-1-3 12:18