【问题标题】:finding MLE for Epsilon skew exponential distrbiution寻找 Epsilon 偏斜指数分布的 MLE
【发布时间】:2018-10-15 10:59:15
【问题描述】:

我正在运行以下 R 代码来查找 Epsilon Skew 指数分布的 MLE:

但我有以下错误以及许多警告。我已经彻底搜索,但没有找到有用的答案。

fn(par, ...) 中的错误:缺少参数“sig”,没有默认值

警告信息:

1: 在 nlminb(start = c(1, 2, 0.5, 2), 目标 = fESEP1, ... : NA/NaN函数评估

2: 在 nlminb(start = c(1, 2, 0.5, 2), objective = fESEP1, ... :

这是我的程序

x <- c(2,5,3,7,3,2,0,2)
fESEP<- function(theta){
   th<-theta[1]
   sig<-theta[2]
   eps<-theta[3]
   alp<-theta[4]

   a = log(gamma(1+1/alp))
   b = ((1+eps)*sig*sqrt(2))^alp
   c = ((1-eps)*sig*sqrt(2))^alp
   d = log (sig)
   y1= (x-th)^alp
   y2= (th-x)^alp
   ans <- a + d + sum(y1/b)*ifelse(y2 < 0 ,1,0) +
          a + d + sum(y2/c)*ifelse( y1>= 0 ,1,0)
return(ans)
} 

optim(c(3,2,0.5, 1), fESEP, hessian=TRUE)
nlminb(start=c(1,2,0.5, 2), objective = fESEP,
       control=list(abs.tol = 0.00001,iter.max=100,trace=TRUE))

【问题讨论】:

  • 我试图清理您的格式,但没有使用该发行版的经验,因此需要查看参考资料以检​​查代码的准确性。 (似乎是一个非常少的数据集,用于估计具有 4 个参数的分布配置。)
  • 分布是
  • 我提供的数据集只是一个例子。如果您需要数据集,我可以通过电子邮件发送。我需要你们的帮助。

标签: r


【解决方案1】:

我现在将其作为答案发布,即使它可能是一个评论更好,所以我可以享受格式化的乐趣。

当我运行 optim() 时,我得到了

优化错误(c(3, 2, 0.5, 1), fESEP, hessian = TRUE): optim 中的目标函数计算长度为 8 而不是 1

这是一个明显的危险信号,表明您的目标函数有问题。你的最后一句话有问题:

ans <- a + d + sum(y1/b)*ifelse(y2 < 0 ,1,0) +
       a + d + sum(y2/c)*ifelse( y1>= 0 ,1,0)

应该是这样的

ans <- a + d + sum(y1/b*as.numeric(y2<0)) +
       a + d + sum(y2/c*as.numeric(y1>=0))

sum() 应该围绕整个向量。但实际上,我认为这可能仍然是错误的:类似于

ans <- a + d + sum(abs(x-th)^alp)/((1+sign(x-th)*eps)*sig*sqrt(2))^alp)

似乎更合理。

但是如果没有指向您用于定义 epsilon 偏斜指数分布的信息的链接,我们真的无法很好地回答这个问题......

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2014-01-17
  • 2014-02-20
  • 1970-01-01
  • 2011-08-18
  • 1970-01-01
  • 2021-01-29
  • 2020-01-03
  • 1970-01-01
相关资源
最近更新 更多