对数似然函数看起来像这样。我在R中给这个函数写了一个函数,这个负数的返回是逻辑概率的一倍。我用rWeibull生成了一个包含参数shape=1.5,scale=0.5的向量。但是当我用逻辑似然函数调用nlm函数时,参数的估计值是: 2.124180和4.003675。我的R码怎么了?守则:
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发布于 2017-11-13 12:48:59
你的日志可能不正确。当我使用dweibull(..., log=TRUE)时,我得到正确的估计
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发布于 2017-11-13 12:55:14
我认为应该是:
loglik<-n*log(gamma/lambda)+(gamma-1)*sum(vec)-log((lambda^(gamma-1)))-
sum((vec/lambda)^gamma)因为您没有对LogLik-函数的第三部分进行求和。
https://stackoverflow.com/questions/47264485
复制相似问题