【发布时间】:2021-11-05 17:14:11
【问题描述】:
我正在尝试通过在 R 中使用 optim 来估计参数 a、b、c 和 s。这是我的代码。
age <- c(0,30,60,90)
Dx <- c(49294.57, 2975.1, 11456.38, 2977.08)
Ex <- c(1572608.38, 1531956.05, 650404.58, 9728.47)
log_lik <- function(par,x,y,z){
a <- par[1]
b <- par[2]
c <- par[3]
s <- par[4]
mu <- (a*exp(b*x))/(1+s * (a)/(b) * (exp(b*x)-1)) + c
lambda <- mu * z
lnL <- sum(y*log(lambda) - log(factorial(y)) - lambda)
-lnL
}
optim(c(1,1,1,1),log_lik, x = age, y = Dx, z = Ex)
但是,我得到一个错误
Error in optim(c(1, 1, 1, 1), log_lik, x = age, y = Dx, z = Ex) :
function cannot be evaluated at initial parameters
我尝试了几个初始值,但仍然得到相同的错误。你能解决这个问题吗?或者也许有其他代码可以解决这个问题?
谢谢。
【问题讨论】:
-
问题已经出在
factorial(y)部分,这从一开始就是无限的,你的值太大了。 -
那么,如何解决这个问题呢?因为方程由
factorial(y) -
不要使用
log(factorial(x));而是使用lfactorial(x)。
标签: r optimization nonlinear-optimization