カスタム分布はめ时の数値回避回避
この例,カスタムを当てはめるに问题を回避するため,关数mle
で高度使用する方法说明ます。具体には,,以下のの方法をを说明。
适切なパラメーター値の。。
logpdf
(确率密度の)およびlogsf
(生存时间の)の指定。nloglf
(负の关数)のの,の尤度成る勾配の化关数化关数Fmincon
(优化工具箱™が)への。
こので极値分布を右侧データに当てはめます。部品のの故障故障时间时间时间ののモデル化化にははしばしばしばしば,,极値分布分布を使用使用しししますこのこのこのこのさません単位の一部だけその时间内に失败し场合,,データデータ値値値はは右侧打ち切り打ち切りとなりなりますます。。つまり,,一部のの故障故障故障时间正确正确正确正确把握できませ。
关数evfit
および关数mle
は両方,れたがれいるに极値极値分布を当てはめはめます。。ただし,このこの例例mle
とカスタム使用,极値分布使ってをデータに当て当てます。
适切なパラメーター値の指定
データ値正确に把握ないため,最尤尤推定推定はさらにさらに情报情报情报がががが必要必要必要必要ですですですです。。。。特に特に特に特に特に特に,,,,,,,密度密度关数关数关数关数关数关数关数关数关数关数关数关数关数关数关数关数关数关数关数关数关数关数关数关数关数关数关数关数关数关数关数关数关数关数关数关数关数关数关数关数关数关数关数关数关数关数关数关数关数关数关数关数关数关数关数关数关数关数关数关数关数关数计算に必要となり关数关数EVPDF
およびEVCDF
Pdf cdfをををを指定。。。。。。。。
最初に打ち切らてない极値データ生成します。
rng(0,'twister');n = 50;Mu = 5;Sigma = 2.5;x = evrnd(Mu,Sigma,n,1);
次,さたカットオフオフより大きい大きいすべてを,,カットオフオフオフ値値にに置き换える置き换えることことによってによって,,打ち切り打ち切り打ち切り。。このタイプ
c =(x> 7);x(c)= 7;
打ち切られ観测の割合确认します。
总和(c)/长度(c)
ANS = 0.1200
12%が,,データのカットオフで打ち切りさ打ち切りされい。。。。
データのたとえばをプロットして打ち切らた観测値をします。
[uncenscnts,边缘] = HistCounts(X(〜C),10);Censcnts = HistCounts(X(C),边缘);bar(边缘(1:end-1)+diff(edges)/2,[uncenscnts'Censcnts'],“堆积”) 传奇(“完全观察到的数据”,,,,“审查数据”,,,,'地点',,,,'西北')
にはた値が含まれますが,打ち切ら観测観测値値のの比率比率比率はは比较小さい小さいものものですです。。そのためため,モーメントモーメント法法法法パラメーター推定推定推定推定ためためためのののののデータの平均および标准偏差にするする亩
と西格玛
の初期値を计算。。
sigma0 = sqrt(6)*std(x(〜c))./ pi
Sigma0 = 2.3495
mu0 =平均值(x(〜c)) - psi(1)。*sigma0
MU0 = 3.5629
2つの极値の最尤95%ののの信頼を求め求めます。。打ち切り打ち切りベクトルベクトルベクトル,,,,,,,,,,,,,西格玛
(スケール)は正ない,パラメーター下限指定必要があります
[paramest,paramcis] = mle(x,“审查”,C,...'PDF',@evpdf,'CDF',@evcdf,...'开始',[Mu0 sigma0],“下界”,[ - inf,0])
paramests =1×24.5530 3.0215
paramcis =2×23.6455 2.2937 5.4605 3.7494
logpdf
およびlogsf
の指定
分布のにはパラメーターの初期推定が必要ですです点がが前提前提としとしとしてどの优れ优れてているかかを判断するするのははは场合场合ありありありますますますますますますますますます。値いくつ,その开始点にする极値の裾部大きくずれるずれるずれる可能性性性ががありますます。そのそのようような,,次の状况状况
pdf値値つがに小さく,精度演算演算演算でで演算ににアンダーフローする。
cdf値のつががにになり倍精度で。。。
cdf値非常小さくなっアンダーする场合ありますが,このこのはは问题にに。。
いずれの状况,mle
が対数计算ときに问题原因なることがますます。その理由はは,,尤度値尤度値尤度値- inf
となり,値をmle
の最适アルゴリズム处理できないから。。
别の点はどうか调べます。
开始= [1 1];尝试[paramest,paramcis] = mle(x,“审查”,C,...'PDF',@evpdf,'CDF',@evcdf,...'开始',开始,“下界”,[ - inf,0])抓住我disp(me.message)结尾
自定义累积分布函数返回的值大于或等于1。
2番目,番目问题の状况が発生ていますます推定推定のののののののののののののののの値値がが値が厳密厳密ににににににななななので,対数対数选项を使用し,funvalcheck
制御パラメーターを离开
に设定てみることができ。。离开
オプションは有限尤度値のチェックします。しかし,この数値数値问题を解决解决する最善のの方法方法方法は
CDFの形式は次のとおり。。。
p = 1-exp(-exp((x-mu)./ sigma))
打ち切り観测のへの寄与はその时间时间(SF)値値の対数すなわちすなわちすなわちすなわち日志(1-CDF)
です。分布场合场合,,のののは-exp((x-mu)./ sigma)
です。log(1-(1-exp(logsf))))
を计算のではなく生存时间关数を直接し尤度をを计算できるできる,,,,,,,,,,でででの四舍五入五入五入ののの问题1
cdf cdf値値なる観测値非ゼロ値として容易に表现表现できる対数対数生存时间时间关数关数値をををもっもっもっもっててて(1-1e-20)
は倍精度で1
に丸めます。は,倍精度EPS
が约2E-16
であるためです。
sfval = 1e-20;cdfval = 1 -sfval
cdfval = 1
対応する时间値対数は容易表现できます。
日志(sfval)
ANS = -46.0517
pdfのの场合に成り立ち成り立ち尤度,,打ち切られてていいない観测値値の寄与寄与はは,,,,そのlog(exp(logpdf))
pdfを対数をを直接すればば,,でででで精度値値がががががががががががととととととと区别できできないないアンダーアンダーアンダーフローフローフロー问题问题问题をを回避回避できできできますますますます。。。。。。。。。。対数対数対数対数対数対数対数対数対数対数対数対数対数対数対数対数対数対数1E-400
は倍でフローします。精度精度领域
が约2E-308
であるためです。
logpdfval = -921;pdfval = exp(logpdfval)
PDFVAL = 0
关数mle
を使用て,と値の引数logpdf
およびlogsf
を設定することにより、(pdf や cdf ではなく) 対数 pdf および対数 SF でカスタム分布を指定できます。関数 pdf および関数 cdf とは異なり、対数 pdf および対数 SF には組み込み関数がありません。したがって、これらの値计算无名を作成するがあります。
evlogpdf = @(x,mu,sigma)((x -mu)./ sigma -exp((x -mu)./ sigma)) - log(sigma);evlogsf = @(x,mu,sigma)-exp((x -mu)./ sigma);
pdfおよび対数対数対数てててて対数対数および対数対数対数をを指定することで,,问题が解决解决
开始= [1 1];[paramest,paramcis] = mle(x,“审查”,C,...'logpdf',evlogpdf,'logsf',evlogsf,...'开始',开始,“下界”,[ - inf,0])
paramests =1×24.5530 3.0215
paramcis =2×23.6455 2.2937 5.4605 3.7494
この手顺适切开始のを解决できるではありません。开始开始点は慎重慎重に选択しし
最适化关数Fmincon
への勾配提供
既定の设定は,mle
は关数fminsearch
を使用カスタム分布対数尤度を化パラメーター値を计算します。fminsearch
导关数し最适化アルゴリズムを使用するので,のの问题问题に対するに対する适切适切适切なな选択ととなりなりますます。。ただし,,问题によってによってはははは対数尤度尤度尤度尤度ののの导关导关导关导关导关点最终回答とかけ离れて场合,最尤推定値にするかか,,最最最尤尤推定値にに收束ししないないかにかに大きな差差が出出てててき。。。。ます。
名前と値引数Optimfun
をmle
にFmincon
として指定する,关数Fmincon
(优化工具箱が)ををます关数关数Fmincon
には数を使用できる最适が含まれてい。Fmincon
アルゴリズムをに,対数尤度尤度その勾配をに记述记述さされれてている対数尤度尤度关数をを使用して,カスタムカスタムカスタムカスタムに关连偏导关数の。。
この手法,尤度そののを计算コードを记述するためための追加准备准备が必要ににhelper_evnegloglike
という名前关数别のに定义します。
功能[nll,ngrad] = helper_evnegloglike(params,x,Cens,freq)%helper_evnegloglike the Extreme Value的负模样% 分配。%此功能仅支持示例避免避免数字问金宝app题%拟合自定义分布(custydist2demo.mlx),可能会更改%未来的版本。如果numel(params)〜= 2错误(消息(消息)'统计:概率:错误参数范围',2));结尾mu = params(1);sigma = params(2);nunc = sum(1元);z =(x -mu)./ sigma;expz = exp(z);nll = sum(expz) - sum(z(〜cens)) + nunc。*log(sigma);如果nargout> 1 ngrad = [-sum(expz)./ sigma + nunc./sigma,...-sum(z。*expz)./ sigma + sum(z(〜cens))./ sigma + nunc./sigma];结尾
关数helper_evnegloglike
は,値勾配値の両方を返します。それ,mle
によって,の尤度が化するためです。
勾配基づく化を使用て最尤値をするため,名前ととの引数引数引数nloglf
,Optimfun
,および选项
を指定し。nloglf
は负対数をするカスタム关数指定します。Optimfun
はFmincon
を最适关数として指定。。选项
は,Fmincon
2番目の番目番目出力勾配にすることを指定。。
开始= [1 1];[paramest,paramcis] = mle(x,“审查”,C,'nloglf',@helper_evnegloglike,...'开始',开始,“下界”,[ - inf,0],...“ OptimFun”,,,,'fmincon',,,,'选项',statset('gradobj',,,,'在'))
paramests =1×24.5530 3.0215
paramcis =2×23.6455 2.2937 5.4605 3.7493