0

我正在使用 gosolnp 函数估计分布的六个参数。但结果非常奇怪。

这是功能,我想估计:

LV_EGEDD<-function(x,theta, teta = NULL){
  alpha <- ifelse('Alpha' %in% teta, 1, theta[1])
  sigma <- ifelse('Sigma' %in% teta, 1, theta[2 - sum('Alpha' %in% teta )])
  delta <- ifelse('Delta' %in% teta, 1, theta[3 - sum(c('Alpha','Sigma') %in% teta)])
  eta <- ifelse('Eta' %in% teta, 1, theta[4 - sum(c('Alpha','Sigma', 'Delta') %in% teta)])
  gama <- ifelse('Gama' %in% teta, 1, theta[5 - sum(c('Alpha','Sigma', 'Delta', 'Eta') %in% teta)])
  lambda <- ifelse('Lambda' %in% teta, 1, theta[6 - sum(c('Alpha','Sigma', 'Delta', 'Eta', 'Gama') %in% teta)])
  A<-(1+alpha*(x^(-delta)))^(-sigma-1)
  B<-1-(1+alpha*(x^(-delta)))^(-sigma)
  fxn<- -sum(log(lambda*alpha*sigma*delta*eta*gama*
                   (x^(-delta-1))*A*(B^(gama-1))*
                   ((1-(B^gama))^(eta-1))*((1-(1-(B^gama))^eta)^(lambda-1))))
  return(fxn)
}

也就是说,我要估计 Alpha、Sigma、Delta、Eta、Gama 和 Lambda。有时我必须修复一些参数,但 gosolnp 函数的“修复”效果不佳。

生成的样本如下:(随机)

x<-reged(1000,alpha=3.5,lambda=11.2,sigma=3,delta=0.9,eta=5,gama=3)

戈索尔普:

out<-gosolnp(fun=LV_EGEDD,n.restarts=nsp,LB=inf,UB=sup,n.sim=mint,x=x)

出去:

$pars
[1] 13.9548298 14.5500550  1.9030426  0.4334163
[5]  9.8731060  1.2410888

注意参数估计不好,不知道$pars的哪些值相当于Alpha、Sigma、Delta、Eta、Gama或Lambda。

所以我想知道是否有办法知道“pars”值指的是哪个参数,使用 gosolnp 函数的“固定”的正确方法是什么,以及是否有办法改进这种估计。

4

0 回答 0