Нелинейная оценка с gosolnp в R

#r #parameters #nonlinear-optimization #estimation #non-linear

Вопрос:

Я работаю с оценкой шести параметров распределения, используя функцию 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)
}
 

То есть я хочу оценить Альфа, Сигма, Дельта, Эта, Гама и Лямбда.
Иногда мне приходится исправлять какой-то параметр, но «исправлено» функции 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 эквивалентны Альфа, Сигма, Дельта, Эта, Гама или Лямбда.

Поэтому я хотел бы знать, есть ли способ узнать, на какой параметр ссылаются значения «pars», как правильно использовать «фиксированную» функцию gosolnp и есть ли способ улучшить эту оценку.