You are here: Symbol Reference > StatProbPlots Namespace > Functions > StatProbPlots.StatWeibullPlot Function
Stats Master VCL
ContentsIndex
PreviousUpNext
StatProbPlots.StatWeibullPlot Function

Constructs the Weibull Probability Chart.

Pascal
procedure StatWeibullPlot(const Data: TVec; const XDrawVec: TVec; const YDrawVec: TVec; out MinX: double; out MaxX: double; out MinY: double; out MaxY: double; const DataSorted: boolean = true);
Parameters 
Description 
Data 
Data to be drawn. 
XDrawVec 
Returns vector of X values to be drawn - > Data estimated quantiles or in this case ordered data values. 
YDrawVec 
Returns vector of Y values to be drawn - > theretical Weibull probability values or in this case ln(ln(1/(1-p)), where p are predefined theoretical probabilities. 
MinX 
Returns slope line start X point, XDrawVec 25th percentile. These value are used by Dew.Stats.Tee.ProbabilityPlot series. 
MaxX 
Returns slope line end X point, XDrawVec 75th percentile. These value are used by Dew.Stats.Tee.ProbabilityPlot series. 
MinY 
Returns slope line start Y point, YDrawVec 25th percentile. These value are used by Dew.Stats.Tee.ProbabilityPlot series. 
MaxY 
Returns slope line end Y point, YDrawVec 75th percentile. These value are used by Dew.Stats.Tee.ProbabilityPlot series. 
DataSorted 
If true, algorithm assumes Data is already sorted in ascending order. If Data is not sorted, you must set this parameter to false so that internal algorithm will automatically do the sorting. 

Constructs the Weibull Probability Chart. Use Dew.Stats.Tee.ProbabilityPlot to visualize/plot constructed values. The Weibull plot is a graphical technique for determining if a data set comes from a population that would logically be fitted by a 2-parameter Weibull distribution (the location is assumed to be zero). 

 

The Weibull plot has special scales that are designed so that if the data do in fact follow a Weibull distribution, the points will be linear (or nearly linear). The least squares fit of this line yields estimates for the shape and scale parameters of the Weibull distribution. Weibull distribution (the location is assumed to be zero). 

 

How to construct Weibull distribution probability plot?  

  1. If needed, Data values are sorted (DataSorted parameter set to false).
  2. Abscissa drawing values are formed by estimated data quantiles - ordered Data values. After calculation they are copied to XDrawVec. crefTMtxVecBase.Length and crefTMtxVec.Complex properties of XDrawVec are adjusted automatically.
  3. Ordinate drawing values are formed by using theoretical probability p to p - > ln[ln[1/(1-p)]]. After calculation they are copied to YDrawVec. crefTMtxVecBase.Length and crefTMtxVec.Complex properties of YDrawVec are adjusted automatically.
  4. XDrawVec and YDrawVec 25th and 75th percentile points are used to construct a reference line. Drawing points departures from this straight line indicate departures from Weibull distribution.

The Weibull plot can be used to answer the following questions:

  • Do the data follow a 2-parameter Weibull distribution?
  • What is the best estimate of the shape parameter for the 2-parameter Weibull distribution?
  • What is the best estimate of the scale (= variation) parameter for the 2-parameter Weibull distribution?

Dew.Stats.Tee.ProbabilityPlot

The following code will create probability plot and then plot calculated values.

Uses MtxExpr, StatProbPlots, StatSeries, Math387, MtxVecTee;
procedure Example(Series1: TStatProbSeries);
var Data, XVec, YVec: Vector;
  X1,Y1,X2,Y2: double;
begin
  // generate some random values for Data vec
  Data.Size(100);
  RandomWeibull(3,1.2,Data);
  StatWeibullPlot(Data,XVec,YVec,X1,X2,Y1,Y2,false);
  With Series1 do
  begin
    MinX := X1;
    MinY := Y1;
    MaxX := X2;
    MaxY := Y2;
  end;
  DrawValues(XVec,YVec,Series1);
end;
#include "Math387.hpp"
#include "MtxExpr.hpp"
#include "StatProbPlots.hpp"
#include "StatSeries.hpp"
#include "MtxVecTee.hpp"
void __fastcall Example(TStatProbSeries * Series1);
{
  sVector data,xvec,yvec;
  double x1,x2,y1,y2;

  data.Size(100,false);
  RandomWeibull(3, 1.2, data,-1);
  StatWeibullPlot(data,xvec,yvec,x1,x2,y1,y2,false);
  Series1->MinX = x1;
  Series1->MaxX = x2;
  Series1->MinY = y1;
  Series1->MaxY = y2;
  DrawValues(xvec,yvec,Series1);
}
Examples on GitHub
Copyright (c) 1999-2025 by Dew Research. All rights reserved.
What do you think about this topic? Send feedback!