Weibull Plot
NIST/SEMATECH Section 1.3.3.30 Weibull Plot
What It Is
A Weibull plot is a probability plot specifically designed to assess whether data follow a Weibull distribution and to estimate the Weibull shape and scale parameters. The axes are scaled so that data from a Weibull distribution appear as a straight line, with the slope providing the shape parameter and the intercept providing the scale parameter.
The axes are linearized for the Weibull distribution using the transformation: horizontal axis = where is the ordered data value (failure time), vertical axis = where is the cumulative probability estimated by the plotting position. On these axes, data from a Weibull distribution fall on a straight line. The shape parameter is the reciprocal of the slope of the fitted line (: infant mortality, : exponential/constant hazard, : wear-out). The scale parameter is the exponent of the intercept and can also be read at the 63.2nd percentile (where ).
Questions This Plot Answers
- Do the data follow a 2-parameter Weibull distribution?
- What is the best estimate of the shape parameter?
- What is the best estimate of the scale parameter?
Why It Matters
The Weibull distribution is the standard model for reliability and failure analysis because it can represent decreasing, constant, or increasing failure rates through a single shape parameter. The Weibull plot provides simultaneous fit assessment and parameter estimation, making it the most important single tool in reliability engineering.
When to Use a Weibull Plot
Use a Weibull plot primarily in reliability engineering and failure analysis, where the Weibull distribution is the standard model for time-to-failure data. The Weibull distribution is flexible enough to model decreasing failure rates (shape parameter less than 1, indicating infant mortality), constant failure rates (shape equal to 1, equivalent to the exponential distribution), and increasing failure rates (shape greater than 1, indicating wear-out). The Weibull plot provides simultaneous assessment of distributional fit and parameter estimation in a single graphical display.
How to Interpret a Weibull Plot
The horizontal axis shows of the data values and the vertical axis shows the Weibull probability scale . Points falling along a straight line indicate that the Weibull distribution is a good fit. The shape parameter equals the reciprocal of the slope of the fitted line, and the scale parameter can be read at the 63.2nd percentile where . indicates a decreasing hazard rate (infant mortality), indicates a constant hazard rate (exponential), and indicates an increasing hazard rate (wear-out). Departures from linearity indicate that the Weibull model is not appropriate and an alternative distribution should be considered.
Assumptions and Limitations
The Weibull plot assumes that all failure times are observed and come from a single failure mode. Censored data, where some units have not yet failed, require modified plotting positions. Mixed failure modes, where different components fail by different mechanisms, produce a curved or kinked Weibull plot and should be analyzed separately by failure mode. The visual parameter estimates from the plot are useful starting values but are less efficient than maximum likelihood estimates for formal inference.
See It In Action
This technique is demonstrated in the following case studies:
Reference: NIST/SEMATECH e-Handbook of Statistical Methods, Section 1.3.3.30
Formulas
Weibull CDF Linearization
Taking the double logarithm of the Weibull CDF linearizes the relationship. In this form, beta multiplies ln(t) and the intercept is -beta ln(eta). The shape parameter beta is the reciprocal of the slope of the fitted line and the scale parameter eta is the exponent of the intercept.
Plotting Position (Benard's Approximation)
Benard's median rank approximation estimates the cumulative probability for the i-th ordered observation out of N total. It provides a less biased estimate than the simple i/N formula.
Python Example
import numpy as npimport matplotlib.pyplot as pltfrom scipy.stats import probplot, weibull_min
# Generate Weibull-distributed failure times (shape=1.5, scale=100)rng = np.random.default_rng(42)shape = 1.5data = weibull_min.ppf(rng.uniform(0.01, 0.99, size=50), shape, scale=100)
fig, ax = plt.subplots(figsize=(8, 5))res = probplot(data, dist=weibull_min, sparams=(shape,), plot=ax)ax.set_xlabel("Theoretical Quantiles (Weibull)")ax.set_ylabel("Ordered Data")ax.set_title("Weibull Probability Plot")plt.tight_layout()plt.show()