常用于为失效时间数据建模。例如,一个制造商希望计算某个部件在一年、两年或更多年后失效的概率。此分布广泛地应用于工程、医学研究、金融和气候学。
Weibull 分布由形状、尺度和阈值等参数描述。阈值参数为零的情况称为 2 参数 Weibull 分布。只为非负变量定义此分布。
取决于参数的值,Weibull 分布可以具有各种形状。
这种分布的主要优点之一在于它可以具有其他类型分布的特征,从而在拟合不同类型的数据时极其灵活。
一般在可靠性分析中使用
常见数学统计算法包内包含各种分布的pdf,cdf,参数估计却很少提供,但是项目中必须要用,所以实现了一个经过优化的迭代算法(C#版本)
(其中有使用Gamma函数,正态分布等,比较常见,此处代码不提供了)
public
sealed
class
WeibullDistribution
{
/// 形状参数
private double _alpha;
/// 尺度参数
private double _beta;
/// 正交化分布(方便计算)
private double _norm;
/// <summary>
/// 创建一个分布
/// </summary>
/// <param name="shape"></param>
/// <param name="scale"></param>
public WeibullDistribution( double shape, double scale)
{
if (shape <= 0 )
throw new ArgumentOutOfRangeException(
" Shape parameter must be positive " );
if (scale <= 0 )
throw new ArgumentOutOfRangeException(
" Scale parameter must be positive " );
DefineParameters(shape, scale);
}
public
{
/// 形状参数
private double _alpha;
/// 尺度参数
private double _beta;
/// 正交化分布(方便计算)
private double _norm;
/// <summary>
/// 创建一个分布
/// </summary>
/// <param name="shape"></param>
/// <param name="scale"></param>
public WeibullDistribution( double shape, double scale)
{
if (shape <= 0 )
throw new ArgumentOutOfRangeException(
" Shape parameter must be positive " );
if (scale <= 0 )
throw new ArgumentOutOfRangeException(
" Scale parameter must be positive " );
DefineParameters(shape, scale);
}
public