Я собираюсь опубликовать это как ответ на данный момент, хотя это может быть лучше комментарий, так что я могу позволить себе роскошь форматирования.
Когда я запускаю optim()
, я получаю
Ошибка в 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)
кажется более правдоподобным.
Но мы действительно не можем ответить на этот вопрос очень хорошо без ссылки на информацию, которой вы являетесьиспользуется для определения экспоненциального распределения эпсилон-асимметрии ...