首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中的Weibull MLE

R中的Weibull MLE
EN

Stack Overflow用户
提问于 2017-11-13 12:34:00
回答 2查看 4.7K关注 0票数 0

对数似然函数看起来像这样。我在R中给这个函数写了一个函数,这个负数的返回是逻辑概率的一倍。我用rWeibull生成了一个包含参数shape=1.5,scale=0.5的向量。但是当我用逻辑似然函数调用nlm函数时,参数的估计值是: 2.124180和4.003675。我的R码怎么了?守则:

代码语言:javascript
复制
vec<-rWeibull(n=1000, params=list(shape=1.5, scale=0.5))
weibull_loglik<-function(parm){
n<-length(vec)
gamma<-parm[1]
lambda<-parm[2]
loglik<-n*log(gamma/lambda)+(gamma-1)*sum(vec-log((lambda^(gamma-1))))-sum((vec/lambda)^gamma)
return(-loglik)}
weibull<-nlm(weibull_loglik,parm<-c(1,1), hessian=TRUE)
weibull$estimate
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-13 12:48:59

你的日志可能不正确。当我使用dweibull(..., log=TRUE)时,我得到正确的估计

代码语言:javascript
复制
vec <- rweibull(n=1000, shape=1.5, scale=0.5)
weibull_loglik <- function(parm){
  n <- length(vec)
  gamma <- parm[1]
  lambda <- parm[2]
  loglik <- sum(dweibull(vec, shape=gamma, scale=lambda, log=TRUE))
  return(-loglik)
}
weibull <- nlm(weibull_loglik, p = c(1,1), hessian=TRUE)

> weibull$estimate
[1] 1.5547181 0.5116119
票数 1
EN

Stack Overflow用户

发布于 2017-11-13 12:55:14

我认为应该是:

代码语言:javascript
复制
loglik<-n*log(gamma/lambda)+(gamma-1)*sum(vec)-log((lambda^(gamma-1)))-
sum((vec/lambda)^gamma)

因为您没有对LogLik-函数的第三部分进行求和。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47264485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档