我正在使用 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 函数的“固定”的正确方法是什么,以及是否有办法改进这种估计。