此示例显示如何使用高级技术最大似然误差
函数来避免在拟合自定义分布时的数值问题。具体来说,你要学习如何:
指定足够的初始参数值。
具体说明logpdf
(概率密度函数的对数)和logsf
(生存函数的对数)。
具体说明nloglf
(负记录函数)并为优化功能提供负记录的渐变向量铁铬镍铁合金
(需要优化工具箱™)。
在此示例中,您可以将极端值分布符合右审查的数据。极值分布通常用于模拟机械部件的失效时间。这些类型的实验通常仅运行固定长度的时间。如果不是所有实验单元在该时间内都失败,那么数据值就会右缩放,否则有些故障时间值尚未完全知道,但是已知大于某个值。
两者埃夫菲特
功能与最大似然误差
函数将极值分布拟合到数据,包括带有截尾的数据最大似然误差
和自定义分布以适合模型来审查数据,使用极值分布。
因为删除数据的值尚不完全,所以最大似然估计需要更多信息。特别地,需要概率密度函数(PDF),累积分布函数(CDF)和足够的初始参数值来计算Loglikihie。你可以使用EVPDF.
和evcdf
函数指定PDF和cdf。
首先,生成一些未经审查的极值数据。
rng(0,“龙卷风”)n=50;mu=5;sigma=2.5;x=evrnd(mu,sigma,n,1);
接下来,通过用截止值替换这些值来审查大于预定截止的任何值。这种类型的审查被称为II型审查。
c =(x> 7);x(c)= 7;
检查审查的观察结果的百分比。
和(c) / (c)长度
ans = 0.1200.
12%的原始数据被右删失,截止值为7。
绘制数据的直方图,包括一个堆叠的条形图来代表被删的观测结果。
[Unsenscnts,Edges]=histcounts(x(~c),10);censCnts=histcounts(x(c),Edges);bar(Edges(1:end-1)+diff(Edges)/2[Unsenscnts'CensCts'],'堆积')传奇(“完全观测数据”,“审查数据”,“位置”,'西北')
虽然数据包括审查的观察,但是官方观察的分数相对较小。因此,矩的方法可以为参数估计提供合理的起点。计算初始参数值μ
和西格玛
这对应于未经审查数据的观察到的平均值和标准偏差。
sigma0 = sqrt(6)* std(x(〜c))./ pi
sigma0 = 2.3495
mu0=平均值(x(~c))-psi(1)。*sigma0
mu0=3.5629
求两个极值分布参数的最大似然估计,以及大约95%的置信区间。指定截尾向量、pdf、cdf和初始参数值。因为西格玛
(比例参数)必须为正,还需要指定参数下限。
[参数,参数]=mle(x,“审查”,C,...“pdf”,@ EVPDF,'CDF',@evcdf,...“开始”,[mu0-sigma0],“LowerBound”(从0))
paramEsts =1×24.5530 3.0215
帕拉米西斯=2×23.6455 2.2937 5.4605 3.7494
logpdf
和logsf
拟合自定义分发需要初始猜测参数,并确定起始点的好坏程度是多么困难。如果指定远离最大可能性估计的起点,则一些观察可以位于与起始点对应的极值分布的尾部。在这种情况下,可能发生其中一个条件:
其中一个pdf值变得非常小,以至于在双精度算法中会下溢到零。
其中一个cdf值变得非常接近1,以至于它以双精度取整。
cdf值也可能变得如此之小,以致于溢出,但这种情况并不构成问题。
任何一种情况都可能在以下情况下导致问题:最大似然误差
计算对数似然,因为每一个都导致的对数似然值负
中的优化算法最大似然误差
不能处理。
检查不同起点会发生什么。
start = [1 1];试一试[参数,参数]=mle(x,“审查”,C,...“pdf”,@ EVPDF,'CDF',@evcdf,...“开始”,开始,“LowerBound”(从0))抓住ME disp(ME.message)终止
自定义累积分布函数返回的值大于或等于1。
在本例中,出现了第二个问题条件。初始参数猜测中的某些cdf值正好为1,因此对数似然是无限的。您可以尝试设置欢乐支票
控制参数离开
通过使用选择权名称-值参数。的离开
选项禁用检查非小单似然值。然而,解决这个数值问题的最佳方法是它的根。
极值cdf的形式为
P = 1 -exp(-exp((x-mu)./sigma))
截尾观测对对数似然性的贡献是其生存函数(SF)值的对数,或日志(1-cdf)
.对于极值分布,SF的日志是exp ((xμ)。/σ)
。如果直接使用对数SF计算对数似然度,而不是计算日志(1 - (1-exp (logSF)))
,您可以避免cdf的舍入问题。cdf值无法与之区分的观测值1.
双重精度具有Log SF值,可轻松表示为非零值。例如,CDF值(1-1-20)
轮到1.
双精度,因为双精度eps.
是关于2E-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)/∑- exp((x)./∑)- log(∑);Evlogsf = @(x,mu,sigma) -exp((x-mu)./sigma);
使用相同的起点,备用日志PDF和Log SF规范的极值分布使得解决问题是可解释的。
start = [1 1];[参数,参数]=mle(x,“审查”,C,...'logpdf'evlogpdf,'logsf',evlogsf,...“开始”,开始,“LowerBound”(从0))
paramEsts =1×24.5530 3.0215
帕拉米西斯=2×23.6455 2.2937 5.4605 3.7494
此过程并不总是解决起点差的问题,因此建议仔细选择起点。
铁铬镍铁合金
默认情况下,最大似然误差
使用函数fminsearch
找到最大化自定义分发的loglikelious的参数值。fminsearch
使用无导数的优化算法,使其成为这类问题的一个很好的选择。然而,对于一些问题,选择一个使用对数似然函数导数的优化算法可能会决定是否收敛于最大似然估计,特别是当起点离最终答案很远的时候。提供衍生品也可以加快收敛速度。
您可以指定擎天柱
中的名称值参数最大似然误差
像铁铬镍铁合金
使用铁铬镍铁合金
函数(需要优化工具箱)铁铬镍铁合金
函数包括可以使用导数信息的优化算法。利用里面的算法铁铬镍铁合金
,使用对数似然函数指定自定义分布,写入该函数不仅返回对数似然,还返回其梯度。对数似然函数的梯度是其参数偏导数的向量。
这种策略需要额外的准备工作,以便编写计算对数似然及其梯度的代码。定义一个名为helper_evnegloglike
在一个单独的文件中。
函数[nll,ngrad] = helper_evnegloglike(params,x,cens,freq)%helper_evnegloglike为极值的负值日志可能性%分配。%此功能仅支持示例避免数值问题万博1manbetx%拟合自定义发行版(customdist2demo.mlx)并可能在%未来的版本。如果numel(参数)~=2错误(消息('统计数据:探针主义者:违法的公共者Length',2));终止μ= params (1);σ= params (2);nunc =总和(1-cens);Z = (x -) /;expz = exp (z);NLL = sum(expz) - sum(z(~cens)) + NLL .*log(sigma);如果nargout>1 ngrad=[-sum(expz)。/sigma+nunc./sigma,...-sum(z. * expz)./ sigma + sum(z(〜cens))./ sigma + nunc./sigma];终止
这个函数helper_evnegloglike
返回loglikeliach值和渐变值的负面,因为最大似然误差
最大限度地减少负值。
要使用基于梯度的优化算法计算最大似然估计,请指定nloglf
,擎天柱
,选择权
名称值参数。nloglf
指定用于计算负对数似然的自定义函数,擎天柱
指定铁铬镍铁合金
作为优化函数,以及选择权
指定铁铬镍铁合金
将自定义函数的第二个输出用于渐变。
start = [1 1];[参数,参数]=mle(x,“审查”,C,“nloglf”,@helper_evnegloglike,...“开始”,开始,“LowerBound”(负无穷,0),...“OptimFun”,“fmincon”,'选项',statset('gradobj',“开”)))
paramEsts =1×24.5530 3.0215
帕拉米西斯=2×23.6455 2.2937 5.4605 3.7493