Difference between revisions of "Weibull distribution"

 
(14 intermediate revisions by 3 users not shown)
Line 1: Line 1:
[[category:Distribution Functions]]
+
[[category:Continuous distributions]]
{{stub}}
+
[[category:Semi-bounded distributions]]
 +
[[category:Unimodal distributions]]
 +
[[category:Univariate distributions]]
 +
[[Category:Doc Status D]] <!-- For Lumina use, do not change -->
 +
{{ReleaseBar}}
 +
The [[Weibull]] distribution is often used to represent failure time in reliability models.  It is similar in shape to the [[Gamma|gamma distribution]], but tends to be less skewed and tail-heavy.  It is a [[:category:Continuous distributions|continuous distribution]] over the [[:category:Semi-bounded distributions|positive real numbers]].
 +
 
 +
<center><code>Weibull(10, 4) &rarr;</code> [[Image:Weibull_graph.jpg]]</center>
 +
 
 +
== Functions ==
 +
Both parameters most be positive, i.e., <math>shape, scale > 0</math>. The «scale» parameter is optional and defaults to 1.
 +
 
 +
=== Weibull(shape'', scale, over'') ===
 +
The distribution function. Use this to define a chance variable or other uncertain quantity as having a Weibull distribution.
 +
 
 +
You can use the optional «over» parameter to generate independent and identically distributed distributions over one or more indicated indexes.
 +
 
 +
=== <div id="DensWeibull">DensWeibull(x, shape'', scale'' )</div> ===
 +
 
 +
The density on <math>x\ge 0</math> is given by:
 +
:<math>p(x) = {{shape}\over{scale}} \left({x\over{scale}}\right)^{shape-1} \exp\left(-(x/{scale})^{shape}\right)</math>
 +
 
 +
=== <div id="CumWeibull">CumWeibull(x, shape'', scale'' )</div> ===
 +
The Weibull distribution has a cumulative density on <math>x\ge 0</math> given by:
 +
 
 +
:<math>F(x) = 1 - \exp\left({-\left({x\over{scale}}\right)^{shape}}\right)</math>
 +
 
 +
and ''F(x) = 0'' for ''x < 0''. 
 +
=== <div id="CumWeibullInv">CumWeibullInv(p, shape'', scale'' )</div> ===
 +
The inverse cumulative distribution, or quantile function. Returns the «p»<sup>th</sup> fractile/quantile/percentile.
 +
 
 +
:<math>F^{-1}(p) = scale * \left( \ln\left( 1\over{1-p} \right)\right)^{1/shape}</math>
 +
 
 +
== Statistics ==
 +
The theoretical statistics (i.e., without sampling error) for the Weibull distribution are as follows. I use <math>\alpha = 1/shape</math> and <math>\beta = scale</math>.
 +
 
 +
* [[Mean]] = <math>\beta \Gamma\left( 1 + \alpha\right)</math>
 +
* Mode = <math>\left\{ \begin{array}{ll}
 +
\beta \left( 1 - \alpha \right)^\alpha & \alpha>1 \\
 +
0 & \alpha \leq 1
 +
\end{array}\right.</math>
 +
* [[Median]] = <math>\beta \left( \ln 2\right)^\alpha</math>
 +
* [[Variance]] = <math>\beta^2 \Gamma(1+2\alpha) -  \left(\beta \Gamma(1+\alpha)\right)^2</math>
 +
 
 +
== Parameter Estimation ==
 +
Suppose you have sampled historic data in <code>Data</code>, indexed by <code>I</code>, and you want to find the parameters for the best-fit [[Weibull]] distribution.  The parameters can be estimated using a linear regression as follows:
 +
 
 +
:<code>Index bm := ['b', 'm'];</code>
 +
:<code>Var Fx :=  (Rank(Data, I) - 0.5)/Size(I);</code>
 +
:<code>Var Z := Ln(-Ln(1 - Fx));</code>
 +
:<code>Var fit := Regression(Z, Array(bm, [1, Ln(Data)]), I, bm);</code>
 +
:<code>Var shape := fit[bm = 'm'];</code>
 +
:<code>Var b := fit[bm = 'b'];</code>
 +
:<code>Var scale := Exp(-b/shape);</code>
 +
:<code>[shape, scale]</code>
 +
 
 +
== See Also ==
 +
* [[Rayleigh]]
 +
* [[Weibull_10_50_90]]
 +
* [[Gamma]]
 +
* [[Normal]]
 +
* [[Regression]]
 +
* [[Exp]]
 +
* [[Ln]]
 +
* [[Parametric continuous distributions]]

Revision as of 00:37, 11 October 2018

Release:

 • 4.6 •  5.0 •  5.1 •  5.2 •  5.3 •  5.4 •   •  6.0 •  6.1 •  6.2 •  6.3 •  6.4 •  6.5 •  6.6

The Weibull distribution is often used to represent failure time in reliability models. It is similar in shape to the gamma distribution, but tends to be less skewed and tail-heavy. It is a continuous distribution over the positive real numbers.

Weibull(10, 4) → Weibull graph.jpg

Functions

Both parameters most be positive, i.e., [math]\displaystyle{ shape, scale \gt 0 }[/math]. The «scale» parameter is optional and defaults to 1.

Weibull(shape, scale, over)

The distribution function. Use this to define a chance variable or other uncertain quantity as having a Weibull distribution.

You can use the optional «over» parameter to generate independent and identically distributed distributions over one or more indicated indexes.

DensWeibull(x, shape, scale )

The density on [math]\displaystyle{ x\ge 0 }[/math] is given by:

[math]\displaystyle{ p(x) = {{shape}\over{scale}} \left({x\over{scale}}\right)^{shape-1} \exp\left(-(x/{scale})^{shape}\right) }[/math]

CumWeibull(x, shape, scale )

The Weibull distribution has a cumulative density on [math]\displaystyle{ x\ge 0 }[/math] given by:

[math]\displaystyle{ F(x) = 1 - \exp\left({-\left({x\over{scale}}\right)^{shape}}\right) }[/math]

and F(x) = 0 for x < 0.

CumWeibullInv(p, shape, scale )

The inverse cumulative distribution, or quantile function. Returns the «p»th fractile/quantile/percentile.

[math]\displaystyle{ F^{-1}(p) = scale * \left( \ln\left( 1\over{1-p} \right)\right)^{1/shape} }[/math]

Statistics

The theoretical statistics (i.e., without sampling error) for the Weibull distribution are as follows. I use [math]\displaystyle{ \alpha = 1/shape }[/math] and [math]\displaystyle{ \beta = scale }[/math].

  • Mean = [math]\displaystyle{ \beta \Gamma\left( 1 + \alpha\right) }[/math]
  • Mode = [math]\displaystyle{ \left\{ \begin{array}{ll} \beta \left( 1 - \alpha \right)^\alpha & \alpha\gt 1 \\ 0 & \alpha \leq 1 \end{array}\right. }[/math]
  • Median = [math]\displaystyle{ \beta \left( \ln 2\right)^\alpha }[/math]
  • Variance = [math]\displaystyle{ \beta^2 \Gamma(1+2\alpha) - \left(\beta \Gamma(1+\alpha)\right)^2 }[/math]

Parameter Estimation

Suppose you have sampled historic data in Data, indexed by I, and you want to find the parameters for the best-fit Weibull distribution. The parameters can be estimated using a linear regression as follows:

Index bm := ['b', 'm'];
Var Fx := (Rank(Data, I) - 0.5)/Size(I);
Var Z := Ln(-Ln(1 - Fx));
Var fit := Regression(Z, Array(bm, [1, Ln(Data)]), I, bm);
Var shape := fit[bm = 'm'];
Var b := fit[bm = 'b'];
Var scale := Exp(-b/shape);
[shape, scale]

See Also

Comments


You are not allowed to post comments.