主要内容

在拟合自定义分布时避免数值问题

属性的高级技术大中型企业函数在拟合自定义分布时避免数值问题。具体来说,你将学习如何:

  • 指定足够的初始参数值。

  • 指定logpdf(概率密度函数的对数)和logsf(生存函数的对数)。

  • 指定nloglf(负对数似然函数),将负对数似然函数的梯度向量提供给优化函数fmincon(需要优化工具箱™)。

在本例中,将极值分布拟合到右截尾数据。一个极值分布常用于模拟机械部件的失效时间。这些类型的实验通常只进行固定的时间长度。如果不是所有的实验单元都在这段时间内失效,那么数据值就会被右截尾,这意味着一些失效时间值并不确切,但已知大于某个值。

这两个evfit功能和大中型企业函数拟合数据的极值分布,包括有审查的数据。但是,对于本例的目的,使用大中型企业以及自定义分布来拟合一个模型到删减数据,使用极值分布。

指定足够的初始参数值

由于截尾数据的值不准确,最大似然估计需要更多的信息。特别是,概率密度函数(pdf)、累积分布函数(cdf)和足够的初始参数值是计算对数似然的必要条件。您可以使用evpdf而且evcdf函数指定PDF和cdf。

首先,生成一些未经审查的极值数据。

rng (0,“旋风”);N = 50;Mu = 5;σ = 2.5;X = evrnd(mu,sigma,n,1);

接下来,检查任何大于预定截止值的值,将这些值替换为截止值。这种类型的截尾称为II型截尾。

C = (x > 7);X (c) = 7;

检查检查过的观察结果的百分比。

和(c) / (c)长度
Ans = 0.1200

12%的原始数据被右删减,截断点为7。

绘制数据的直方图,包括一个堆叠的条形图来表示经过删减的观察结果。

[uncensCnts,Edges] = histcounts(x(~c),10);censCnts = histcounts(x(c),Edges);栏((1:end-1) + diff边缘(边缘)/ 2,[uncensCnts ' censCnts '],“堆叠”)传说(“完全观察到的数据”审查数据的“位置”“西北”

图中包含一个轴对象。axis对象包含2个bar类型的对象。这些对象代表完全观察到的数据,经过删减的数据。

虽然数据中包含删失观测值,但删失观测值的比例相对较小。因此,矩量法可以为参数估计提供合理的起点。计算的初始参数值μ而且σ对应于未截尾数据的观测均值和标准差。

Sigma0 =√(6)*std(x(~c))./pi
Sigma0 = 2.3495
Mu0 = mean(x(~c))-psi(1).*sigma0
Mu0 = 3.5629

求两个极值分布参数的最大似然估计,以及近似的95%置信区间。指定审查向量、pdf、cdf和初始参数值。因为σ(缩放参数)必须为正数,还需要指定参数下界。

[参数,paramci] = mle(x,“审查”c...“pdf”@evpdf,“提供”@evcdf,...“开始”, (mu0 sigma0),下界的(从0))
paramEsts =1×24.5530 - 3.0215
paramCIs =2×23.6455 2.2937 5.4605 3.7494

指定logpdf而且logsf

拟合一个自定义分布需要对参数进行初始猜测,并且判断一个起始点是好是坏是很困难的。如果指定的起始点距离最大似然估计值较远,则一些观测值可能位于与起始点对应的极值分布的较远尾部。在这种情况下,可能会发生以下情况之一:

  • 其中一个pdf值变得非常小,以至于在双精度算术中下溢为零。

  • 其中一个cdf值变得非常接近1,以至于它以双倍精度舍入。

cdf值也可能小到下溢,但这种情况不会造成问题。

任何一种情况都可能导致问题大中型企业计算对数似然,因为每个都导致的对数似然值,其中优化算法在大中型企业不能处理。

看看换个起点会发生什么。

Start = [1 1];试一试[参数,paramci] = mle(x,“审查”c...“pdf”@evpdf,“提供”@evcdf,...“开始”开始,下界的(从0))我disp (ME.message)结束
自定义累积分布函数返回值大于或等于1。

在这种情况下,出现了第二个问题条件。在初始参数猜想处的一些cdf值恰好为1,因此对数似然是无穷大的。您可以尝试设置FunValCheck控制参数为通过使用选项名称-值参数。的选项禁止检查非有限似然值。然而,解决这一数值问题的最佳方法在于其根源。

极值cdf有这样的形式

P = 1 -exp(-exp((x-mu)./sigma))

截尾观测值对对数似然的贡献是其生存函数(SF)值的对数,或日志(1-cdf).对于极值分布,SF的对数为exp ((xμ)。/σ).如果您直接使用log SF来计算对数可能性,而不是计算日志(1 - (1-exp (logSF))),可以避免cdf的舍入问题。cdf值无法与之区分的观测值1在双精度中有log SF值,很容易表示为非零值。例如,的cdf值(1-1e-20)轮,1在双精度,因为双精度每股收益是关于2 e-16

SFval = 1e-20;cdfval = 1 - SFval
Cdfval = 1

该软件可以很容易地表示对应SF值的日志。

日志(SFval)
Ans = -46.0517

同样的情况也适用于日志pdf;未经审查的观察对对数似然的贡献是其PDF值的对数。您可以直接使用日志pdf,而不是计算日志(exp (logpdf)),以避免在双重精度下PDF无法与零区分的下溢问题。该软件可以很容易地将日志pdf表示为一个有限的负数。例如,的pdf值1 e - 400下料在双精度,因为双精度最小正浮点数是关于2 e - 308

Logpdfval = -921;Pdfval = exp(logpdfval)
Pdfval = 0

使用大中型企业函数时,可以使用日志pdf和日志SF(而不是pdf和cdf)指定自定义分发logpdf而且logsf名称-值参数。与pdf和cdf函数不同,log pdf和log SF没有内置函数。因此,您需要创建匿名函数来计算这些值。

Evlogpdf = @(x,mu,sigma) ((x-mu)。/sigma - exp((x-mu)./sigma)) - log(sigma);Evlogsf = @(x,mu,sigma) -exp((x-mu)./sigma);

使用相同的起点,极端值分布的交替log pdf和log SF规范使问题可以解决。

Start = [1 1];[参数,paramci] = mle(x,“审查”c...“logpdf”evlogpdf,“logsf”evlogsf,...“开始”开始,下界的(从0))
paramEsts =1×24.5530 - 3.0215
paramCIs =2×23.6455 2.2937 5.4605 3.7494

这个过程并不总是解决起点不好的问题,所以建议仔细选择起点。

优化函数的供给梯度fmincon

默认情况下,大中型企业使用函数fminsearch找出使自定义分布的对数似然最大的参数值。fminsearch使用无导数的优化算法,使其成为这类问题的一个很好的选择。然而,对于某些问题,选择使用对数似然函数导数的优化算法可能会导致是否收敛到最大似然估计的差异,特别是当起点远离最终答案时。提供衍生品也可以加快收敛速度。

您可以指定OptimFun中的名称-值参数大中型企业作为fmincon使用fmincon函数(需要优化工具箱)。的fmincon函数包括可以使用导数信息的优化算法。利用算法的优势fmincon,使用对数似然函数指定一个自定义分布,该函数不仅返回对数似然,还返回其梯度。对数似然函数的梯度是关于其参数的偏导数的向量。

这种策略需要额外的准备来编写计算对数似然及其梯度的代码。定义一个名为helper_evnegloglike在一个单独的文件中。

函数[nll,ngrad] = helper_evnegloglike(params,x,cens,freq)极值的负对数可能性%分布。此函数仅支持避免数值问题的示例金宝app%拟合自定义分布(customdist2demo.mlx),并可能在%未来的版本。如果元素个数(params) ~ = 2错误消息(“统计数据:probdists: WrongParameterLength”2));结束Mu = params(1);σ =参数(2);Nunc =总和(1 cens);Z = (x -) ./;Expz = exp(z);NLL = sum(expz) - sum(z(~cens)) + nunc.*log(sigma);如果Nargout > 1 ngrad = [-sum(expz).]/sigma + nunc./sigma,...总和(z。* expz)。/sigma + sum(z(~cens))。/sigma + nunc./sigma];结束

这个函数helper_evnegloglike返回对数似然值和梯度值的负数大中型企业最小化负对数似然。

若要使用基于梯度的优化算法计算最大似然估计,请指定nloglfOptimFun,选项名称-值参数。nloglf指定计算负对数似然的自定义函数,OptimFun指定fmincon为优化函数,和选项指定fmincon为梯度使用自定义函数的第二个输出。

Start = [1 1];[参数,paramci] = mle(x,“审查”c“nloglf”@helper_evnegloglike,...“开始”开始,下界的(负无穷,0),...“OptimFun”“fmincon”“选项”statset (“GradObj”“上”))
paramEsts =1×24.5530 - 3.0215
paramCIs =2×23.6455 2.2937 5.4605 3.7493

另请参阅

|

相关的话题