1

我想估计 beta 正态分布的参数。我使用了 maxLik 包

library(VGAM)
library(maxLik)
alfa=2;beta=3;mu=0;sigma=1
n=100
x=rbetanorm(n,alfa,beta,mu,sigma)
logLikFun=function(w){
  alfa=w[1]
  beta=w[2]
  mu=w[3]
  sigma=w[4]
  ll={-n*log(beta(alfa,beta))+(alfa-1)*sum(log(pnorm((x-mu)/sigma,mean=0,sd=1)))+(beta-1)*sum(log(1-pnorm((x-mu)/sigma,mean=0,sd=1)))-n*log(sigma)+sum(log(dnorm((x-mu)/sigma,mean=0,sd=1)))}
  ll
}
mle=maxLik(logLikFun,start=c(alfa=3,beta=2,mu=1,sigma=2))
summary(mle)

但它给出了错误

----------------------------------
Maximum Likelihood estimation
Newton-Raphson maximisation, 4 iterations
Return code 2: successive function values within tolerance limit
Log-Likelihood: -86.16515 
4  free parameters
Estimates:
      Estimate Std. error t value Pr(> t)
alfa     3.000        Inf       0       1
beta     2.941        Inf       0       1
mu       1.000        Inf       0       1
sigma    2.000        Inf       0       1
--------------------------------------------

问题是错误的无限值是不可接受的。如果有人能解决这个问题,我会很高兴。

4

1 回答 1

0

结果非常依赖于初始值。此外,您可以将一些初始值设置为固定值。

有关代码背后的理论问题的更多信息,请参阅此链接

library(VGAM)
library(maxLik)
alfa=1;beta=1;mu=0;sigma=1
n=100
x<-rbetanorm(n,alfa,beta,mu,sigma)
logLikFun<-function(w){
        alfa<-w[1]
        beta<-w[2]
        mu<-w[3]
        sigma<-w[4]
        ll<-{-n*log(beta(alfa,beta))+(alfa-1)*sum(log(pnorm((x-mu)/sigma,mean=0,sd=1)))+(beta-1)*sum(log(1-pnorm((x-mu)/sigma,mean=0,sd=1)))-n*log(sigma)+sum(log(dnorm((x-mu)/sigma,mean=0,sd=1)))}
        ll
}
mle<-maxLik(logLikFun,grad=NULL,hess=NULL,start=c(alfa=1,beta=1,mu=mean(x),sigma=1),"NR")
summary(mle)


OUTPUT:
--------------------------------------------
Maximum Likelihood estimation
Newton-Raphson maximisation, 10 iterations
Return code 2: successive function values within tolerance limit
Log-Likelihood: -139.6822 
3  free parameters
Estimates:
        Estimate Std. error t value  Pr(> t)    
alfa    0.4026     0.1190   3.384 0.000714 ***
beta    4.3981     2.9560   1.488 0.136794    
mu      2.0340     0.6135   3.315 0.000915 ***
sigma   1.0000     0.0000      NA       NA    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
--------------------------------------------
于 2017-11-25T14:13:11.923 回答