R optim()L-BFGS-B需要有限的';fn';-韦布尔
我尝试使用R optim()L-BFGS-B需要有限的';fn';-韦布尔,r,weibull,R,Weibull,我尝试使用optim()函数估计三个参数a、b0和b1。但我总是犯错误: optim中的错误(par=c(1,1,1),fn=logweibull,方法=“L-BFGS-B”,: L-BFGS-B需要有限的“fn”值 t<-c(6,6,6,6,7,9,10,10,11,13,16,17,19,20,22,23,25,32,32,34,35,1,1,2,2,3,4,4,5,5,8,8,8,8,11,11,12,12,15,17,22,23) d<-c(0,1,1,1,1,0,0,1,0
optim()
函数估计三个参数a、b0和b1。但我总是犯错误:
optim中的错误(par=c(1,1,1),fn=logweibull,方法=“L-BFGS-B”,:
L-BFGS-B需要有限的“fn”值
t<-c(6,6,6,6,7,9,10,10,11,13,16,17,19,20,22,23,25,32,32,34,35,1,1,2,2,3,4,4,5,5,8,8,8,8,11,11,12,12,15,17,22,23)
d<-c(0,1,1,1,1,0,0,1,0,1,1,0,0,0,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1)
X<-c(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
logweibull <- function (a,b0,b1) {a <- v[1];b0 <- v[2]; b1 <- v[3];
sum (d*log(t^a*exp(b0+X*b1)-t^a*exp(b0+X*b1))) + sum (d + log((a*t^(a-1))/t^a)) }
v<-c(1,1,1)
optim( par=c(1,1,1) ,fn = logweibull, method = "L-BFGS-B",lower = c(0.1, 0.1,0.1), upper = c(100, 100,100),control = list(fnscale = -1) )
t您也可以考虑
(1) 将附加数据变量与要估计的参数一起传递给目标函数
(2) 传递梯度函数(添加梯度函数)
(3) 原始目标函数可进一步简化(如下所示)
logweibull您也可以考虑
(1) 将附加数据变量与要估计的参数一起传递给目标函数
(2) 传递梯度函数(添加梯度函数)
(3) 原始目标函数可进一步简化(如下所示)
logweibulllogweibulllogweibulllogweibull,但理想情况下,不应该使用条件pdf计算条件期望值?看看这一点:,它们是如何从任意pdf中采样的(通过计算cdf,然后找到根),monte carlo采样不应该从这个截短的pdf中进行吗?但理想情况下,条件期望不应该使用条件pdf计算吗?看看这个:,它们是如何从任意pdf中进行采样的(通过计算cdf,然后找到根),monte carlo采样不应该从这个截短的pdf中进行吗?
logweibull <- function (v,t,d,X) {
a <- v[1]
b0 <- v[2]
b1 <- v[3]
sum(d*(1+a*log(t)+b0+X*b1) - t^a*exp(b0+X*b1) + log(a/t)) # simplified function
}
grad.logweibull <- function (v,t,d,X) {
a <- v[1]
b0 <- v[2]
b1 <- v[3]
c(sum(d*log(t) - t^a*log(t)*exp(b0+X*b1) + 1/a),
sum(d-t^a*exp(b0+X*b1)),
sum(d*X - t^a*X*exp(b0+X*b1)))
}
optim(par=c(1,1,1), fn = logweibull, gr = grad.logweibull,
method = "L-BFGS-B",
lower = c(0.1, 0.1,0.1),
upper = c(100, 100,100),
control = list(fnscale = -1),
t=t, d=d, X=X)
$par
[1] 0.2604334 0.1000000 0.1000000
$value
[1] -191.5938
$counts
function gradient
10 10
$convergence
[1] 0
$message
[1] "CONVERGENCE: REL_REDUCTION_OF_F <= FACTR*EPSMCH"