首页 > 解决方案 > 寻找 Weibull 分布的参数

问题描述

我试图通过求解两个联立方程来估计 Weibull 分布的参数: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 中执行此操作,没有额外的包。)

标签: rsimultaneousweibull

解决方案


需要进行两次修改。第一个是由评论暗示的,但我没有使用两个方程,而是简单地使用了两个 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参数 default 似乎没有多大帮助。我之前的大部分努力都是返回一个代码 3,这意味着:“最后一个全局步骤未能找到低于估计值的点。估计值是函数的近似局部最小值,或者 steptol 太小了。”


推荐阅读