Нахождение параметров распределения Вейбулла - PullRequest
0 голосов
/ 25 апреля 2018

Я пытаюсь оценить параметры распределения Вейбулла, решая два одновременных уравнения: F (Q1) = 0,25 и F (Q3) = 0,75.Алгебраически я знаю, что ответ должен быть следующим: параметр формы a = 0,8038, параметр масштаба b = 1889, но я получаю совершенно разные ответы, независимо от того, что я ставлю в качестве начальных значений p.Почему следующее не работает, пожалуйста?

# Sample quartiles
Q1<-401
Q3<-2836.75
# function:  |F(Q1)+F(Q3)-1|   so perfect fit should = 0
f<-function(params) {
  abs(pweibull(Q1,params[1],params[2])+pweibull(Q3,params[1],params[2])-1)
}
# minimise function, using starting values a=1, b=2000
p<-c(1,2000)
estimates<-nlm(f,p); estimates

(я пытаюсь сделать это в базе R, без дополнительных пакетов.)

1 Ответ

0 голосов
/ 26 апреля 2018

Требовались две модификации.На первый был намекает комментарий, но вместо двух уравнений я просто использовал два термина abs ().Но это не дало точных результатов, пока я не добавил typsize -аргумент:

f<-function(params) {
   abs(pweibull(Q1,params[1],params[2])-0.25) + abs(pweibull(Q3,params[1],params[2])-0.75)
 }

 p<-c(shape=1, scale=2000)
 estimates<-nlm(f,p, fscale=.1, typsize=c(1,1500) ); estimates
#####------
$minimum
[1] 5.548144e-07

$estimate
[1]    0.8037664 1889.4379691

$gradient
[1] -1.936062e-01  5.132625e-05

$code
[1] 2

$iterations
[1] 13

Параметр по умолчанию fscale, похоже, не очень помог.Большинство моих предыдущих попыток возвращали код 3, который означал: «последний глобальный шаг не смог найти точку ниже, чем оценка. Либо оценка является приблизительным локальным минимумом функции, либо стептол слишком мал».

...