[英]How to do I calculate the hazard rate accurately in Matlab?
我需要計算x
瑞利函數的危險率PDF /(1-CDF)。
x = 0:0.001:2.5;
HR = pdf('rayl',x,sqrt(1/18))./(1-cdf('rayl',x,sqrt(1/18)));
plot(x,HR)
在這里,情節變得有趣,大約x = 2
。 如何提高HR的准確性?
您正在遇到數字問題,特別是災難性的取消 。 嘗試在semilogy
圖上semilogy
繪制危險率函數的分母, 即補充CDF :
x = 0:0.001:2.5;
semilogy(x,1-cdf('rayl',x,sqrt(1/18)))
如您所見,當分母大約為機器epsilon eps
時,x = 2之前就有問題了。 這是cdf('rayl',x,sqrt(1/18))
約為1。
幸運的是,Matlab提供了一種解決此問題的方法,該選項可以直接通過cdf
的'upper'
選項來計算互補CDF或CDF的尾部概率:
x = 0:0.001:2.5;
HR = pdf('rayl',x,sqrt(1/18))./cdf('rayl',x,sqrt(1/18),'upper');
plot(x,HR)
如預期的那樣,它現在返回斜率為18的直線。 raylcdf
函數也支持此選項。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.