【发布时间】:2017-06-12 00:52:15
【问题描述】:
nll <- function(lambda, kappa){
logit=function(x) {log(x/(1-x))}
a=c(1-exp(-(15/lambda)^kappa), 1-exp(-(25/lambda)^kappa), 1-exp(-(35/lambda)^kappa))
a=logit(a)
mu = c(0.1, 0.2, 0.3)
mu = logit(mu)
cov = matrix(c(0.18830690, 0.00235681, 0.00071954, 0.00235681, 0.00736811, 0.00110457, 0.00071954, 0.00110457, 0.00423955), nrow =3)
L1 = dmvnorm(a, mu, cov)
a=c(1-exp(-(25/lambda)^kappa), 1-exp(-(35/lambda)^kappa), 1-exp(-(45/lambda)^kappa))
a=logit(a)
mu = c(0.4, 0.1, 0.9)
mu = logit(mu)
cov = matrix(c(2.7595442, 0.0045178, 0.0010505, 0.0045178, 0.00972309, 0.0015120, 0.0010505, 0.0015120, 0.0088425), nrow =3)
L2 = dmvnorm(a, mu, cov)
-sum(log(L1*L2))
}
> mle(nll, start = list(lambda = 1, kappa = 1))
Error in optim(start, f, method = method, hessian = TRUE, ...) :
initial value in 'vmmin' is not finite
我试图找到最大化上述函数的 lambda 和 kappa 值。
我原来的似然函数返回L1*L2,但是因为mle函数需要传入负对数似然,所以我修改了函数以返回-sum(log(L1*L2))。
但是,我遇到了上述错误。而且我也尝试过指定dmvnorm(... ,log = TRUE),但这并没有解决问题。
【问题讨论】:
-
您的方差-协方差矩阵看起来很可疑。如果它们都是常数,那么它们将是非正定的(即不是合法的方差-协方差矩阵),
dmvnorm将返回一个非有限值 ... -
@BenBolker 我更改了协方差矩阵。但是错误仍然存在?
标签: r statistics mle