Open In App

Weibull Plot

Weibull plot is a graphical technique to determining if the dataset comes from a population that is logically be fit by a 2-parameter Weibull distribution. Before, discussing the Weibull plot in detail, we first need to know about Weibull distribution.

Weibull Distribution:

The formula for probability density distribution for Weibull distribution is:



where, Y (gamma) is the shape parameter, u (mu) is called location parameter and ∝ (alpha) is called scale parameter. The case where u=0 and ∝ =1 is called standard weibull distribution.



Two -parameter Weibull distribution:

Two parameters Weibull distribution is the special case of Weibull distribution in which u=0. In this case, the equation for standard Weibull distribution reduces to:

The formula for the cumulative distribution function of Weibull distribution is:

Weibull plot

The Weibull plot have special scales of axes that if the dataset in the weibull distribution, then the points will be in an almost straight line. The least-square fit of the line gives the shape and scale parameter of the Weibull distribution considering the location parameter to be 0.

The Weibull distribution also has the property that a scale parameter passes 63.2% points irrespective of the value of the shape parameter. In this plot, we draw a horizontal line at 63.2% of the y-axis. The x-axis component of the point where it intersects the least square fitted line is called the scale parameter.

Weibull plot is formed of the following two axes:

The vertical scale is derived by formula:

Where, i is the rank of the observation.

Weibull plot is used to answer the following questions:

Applications:

The Weibull plot is generally used in the following areas:

Implementation

# code
import pandas as pd
import matplotlib.pyplot as plt
import scipy.stats as ss
import numpy as np
import seaborn as sns
import weibull
 
# generate standard weibull distribution of different Shape parameter
gamma_1  = np.random.weibull(a=1,size=1000)
gamma_half  = np.random.weibull(a=0.5,size=1000)
gamma_5 = np.random.weibull(a=5,size=1000)
gamma_10  = np.random.weibull(a=10,size=1000)
 
# plot different Weibull distribution
sns.set_style('darkgrid')
fig, ax  = plt.subplots(2,2)
sns.histplot(gamma_1,kde=True,ax= ax[0,0] )
ax[0,0].set_title('Gamma = 1 ')
sns.histplot(gamma_half,kde=True, ax= ax[0,1], legend='Y=0.5')
ax[0,1].set_ylim([0,200])
ax[0,1].set_title('Gamma = 0.5 ')
sns.histplot(gamma_5,kde=True, ax= ax[1,0], legend='Y=5')
ax[1,0].set_title('Gamma = 5 ')
sns.histplot(gamma_10,kde=True, ax= ax[1,1], legend='Y=10')
ax[1,1].set_title('Gamma = 10 ')
plt.show()
 
# load dataset
specimen_strength = pd.read_csv('tensile strength.txt', header=None)
specimen_strength.head()
 
# perform weibull analysis
analysis=weibull.Analysis(specimen_strength[0])
 
# Here, we can fit using two method, mle (maximum likelihood)
# and lr (linear regression). Generally mle is better fit
analysis.fit(method='lr')
 
# print shape parameter (Beta) and scale parameter (eta)
print(f'shape Parameter: {analysis.beta: .02f}')
print(f'Scale Parameter: {analysis.eta: .02f}')
 
# print values of different parameters confidence interval
analysis.stats
 
# generate Weibull probplot
analysis.probplot()

                    

 
 

Standard Weibull Distribution @ different value of shape parameter

    0
-----------------
0    25.722681
1    24.319706
2    31.007387
3    25.240414
4    35.406261
shape Parameter:  3.55
Scale Parameter:  31.87
r_squared                     0.96102
p_value                   7.32837e-71
fit method          linear regression
confidence                        0.9
beta lower limit               3.1598
beta nominal                  3.55485
beta upper limit               3.9993
eta lower limit                30.284
eta nominal                   31.8747
eta upper limit               33.5488
mean life                     28.7029
median life                   28.7521
b10 life                      16.9246
dtype: object

Weibull Probability plot

References:


 


Article Tags :