当某些值大于170时,如何最小化二项分布。在这种情况下,阶乘函数返回Inf。请看以下两个例子。在第一种情况下,所有事情都可以:
案例1:
n<-c(100,103,170,100)
k<-c(85,86,112,84)
DF<-data.frame(n,k)
BINO<-function(pii,data) {
A= log((factorial(n)/ (factorial(k)*factorial(n-k)) ) *(pii^k)*(1-pii)^(n-k) )
cat( pii, '\n')
flush.console()
sum(abs(A))
}
library(bbmle)
mle2(BINO, start=list(pii=0.1), data=DF)
Coefficients:
pii
0.7758984
Log-likelihood: -19.59
但是在案例2中,两个计数(226和183)超过170,计算失败。
案例2:
n<-c(100,103,226,100)
k<-c(85,86,183,84)
DF<-data.frame(n,k)
mle2(BINO, start=list(pii=0.1), data=DF)
0.1
Error in optim(par = 0.1, fn = function (p) :
initial value in 'vmmin' is not finite
In addition: Warning messages:
1: In factorial(n) : value out of range in 'gammafn'
2: In factorial(k) : value out of range in 'gammafn'