SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 930|回复: 5
打印 上一主题 下一主题

Sas help里的一个例子-----用NLP作Maximum Likelihood Weibull Estimatio

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2010-8-16 19:58:59 | 只看该作者

Sas help里的一个例子-----用NLP作Maximum Likelihood Weibull Estimatio

sas help里搜索Example 6.6: Maximum Likelihood Weibull Estimation,这个例子里,第三个程序,proc nlp中,为什么会把s 求最大值呢,不是应该整个log函数求吗?

proc nlp data=pike tech=tr inest=par1 outest=opar1   outmodel=model cov=2 vardef=n pcov phes;      
[color=#BF00BF:18rbghgd]max logf;   [/color:18rbghgd]
parms sig c;      
profile sig c / alpha = .9 to .1 by -.1 .09 to .01 by -.01;
x_th = days - theta;
s    = - (x_th / sig)**c;      
if cens=0 then s + log(c) - c*log(sig) + (c-1)*log(x_th);      
[color=#BF00FF:18rbghgd]logf = s;    [/color:18rbghgd]         /*只把s的值赋给logf,而对logf求最大值??*/
run;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2010-8-16 22:15:20 | 只看该作者

Re: Sas help里的一个例子-----用NLP作Maximum Likelihood Weibull Estim

对NLP还是不太理解
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2010-8-17 01:49:43 | 只看该作者

Re: Sas help里的一个例子-----用NLP作Maximum Likelihood Weibull Estim

In fact, here s = logf = log(Likelihood) = l, for an observation;
MAX logf; --->maximize the equation of summarization of [logf]i where i from 1 to m if you have m observations
另外,非常羡慕你学习sas两个月就可以做mathematical modeling.
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2010-8-17 02:33:37 | 只看该作者

Re: Sas help里的一个例子-----用NLP作Maximum Likelihood Weibull Estim

对 我知道max logf是对所有的变量求和之后再求最大值,
但是似然函数不应该是 s + log(c) - c*log(sig) + (c-1)*log(x_th)么 ,而不单是s:

proc nlp data=pike tech=tr inest=par1 outest=opar1 outmodel=model cov=2 vardef=n pcov phes;
max logf;
parms sig c;
profile sig c / alpha = .9 to .1 by -.1 .09 to .01 by -.01;
x_th = days - theta;
s = - (x_th / sig)**c;
if cens=0 then[color=#FF40FF:15q998no] f= s + log(c) - c*log(sig) + (c-1)*log(x_th)[/color:15q998no];
[color=#FF40FF:15q998no]logf = f[/color:15q998no];
run;

另外,非常高兴你的回复,但你不是讽我呢吧,呵呵。接触SAS很久了,不过没专门研究过,学统计很久了哈。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2010-8-17 05:22:52 | 只看该作者

Re: Sas help里的一个例子-----用NLP作Maximum Likelihood Weibull Estim

总共19个记录。所以maximize(l1+l2+...+l19);
前17个都是事件(cens = 0),所以 l =  - (x_th / sig)**c + log(c) - c*log(sig) + (c-1)*log(x_th) , for i = 1, 2, ..., 17;
后两个是censors(cens = 1),所以 l = - (x_th / sig)**c, for i = 18, 19;
也就是说19个记录生成19个loglikelihood,按照以上的方法。
你的改动有些问题,就是两个censored的值没有考虑其中。
如下的改动应该是等价的:

[code:4m505uxm]proc nlp data=pike tech=tr inest=par1 outest=opar1
      outmodel=model cov=2 vardef=n pcov phes;
/*   max logf;*/
                max s;
   parms sig c;
   profile sig c / alpha = .9 to .1 by -.1 .09 to .01 by -.01;

   x_th = days - theta;
   s    = - (x_th / sig)**c;
   if cens=0 then s + log(c) - c*log(sig) + (c-1)*log(x_th);
/*   logf = s;*/
run;[/code:4m505uxm]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2010-8-17 19:22:45 | 只看该作者

Re: Sas help里的一个例子-----用NLP作Maximum Likelihood Weibull Estim

还是不太明白,为什么cens = 1,所以 l = - (x_th / sig)**c,  而且也没写 else logf = s,
那前17个 l = - (x_th / sig)**c + log(c) - c*log(sig) + (c-1)*log(x_th) 也没有求最大值 : max l  ??
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2026-2-3 23:48 , Processed in 0.070054 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表