# Class WeibullDistribution

java.lang.Object
smile.stat.distribution.WeibullDistribution
All Implemented Interfaces:
`Serializable`, `Distribution`

public class WeibullDistribution extends Object implements Distribution
The Weibull distribution is one of the most widely used lifetime distributions in reliability engineering. It is a versatile distribution that can take on the characteristics of other types of distributions, based on the value of the shape parameter. The distribution has two parameters: `k > 0` is the shape parameter and λ `> 0` is the scale parameter of the distribution. The probability density function is f(x;λ,k) = k/λ (x/λ)k-1e-(x/λ)^k for `x >= 0`.

The Weibull distribution is often used in the field of life data analysis due to its flexibility - it can mimic the behavior of other statistical distributions such as the normal and the exponential. If the failure rate decreases over time, then `k < 1`. If the failure rate is constant over time, then `k = 1`. If the failure rate increases over time, then `k > 1`.

An understanding of the failure rate may provide insight as to what is causing the failures:

• A decreasing failure rate would suggest "infant mortality". That is, defective items fail early and the failure rate decreases over time as they fall out of the population.
• A constant failure rate suggests that items are failing from random events.
• An increasing failure rate suggests "wear out" - parts are more likely to fail as time goes on.
Under certain parameterizations, the Weibull distribution reduces to several other familiar distributions:
• When `k = 1`, it is the exponential distribution.
• When `k = 2`, it becomes equivalent to the Rayleigh distribution, which models the modulus of a two-dimensional uncorrelated bivariate normal vector.
• When `k = 3.4`, it appears similar to the normal distribution.
• As k goes to infinity, the Weibull distribution asymptotically approaches the Dirac delta function.
• ## Field Summary

Fields
Modifier and Type
Field
Description
`final double`
`k`
The shape parameter.
`final double`
`lambda`
The scale parameter.
• ## Constructor Summary

Constructors
Constructor
Description
`WeibullDistribution(double k)`
Constructor.
```WeibullDistribution(double k, double lambda)```
Constructor.
• ## Method Summary

Modifier and Type
Method
Description
`double`
`cdf(double x)`
Cumulative distribution function.
`double`
`entropy()`
Returns Shannon entropy of the distribution.
`int`
`length()`
Returns the number of parameters of the distribution.
`double`
`logp(double x)`
The density at x in log scale, which may prevents the underflow problem.
`double`
`mean()`
Returns the mean of distribution.
`double`
`p(double x)`
The probability density function for continuous distribution or probability mass function for discrete distribution at x.
`double`
`quantile(double p)`
The quantile, the probability to the left of quantile is p.
`double`
`rand()`
Generates a random number following this distribution.
`String`
`toString()`

`double`
`variance()`
Returns the variance of distribution.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Methods inherited from interface smile.stat.distribution.Distribution

`inverseTransformSampling, likelihood, logLikelihood, quantile, quantile, rand, rejectionSampling, sd`
• ## Field Details

• ### k

public final double k
The shape parameter.
• ### lambda

public final double lambda
The scale parameter.
• ## Constructor Details

• ### WeibullDistribution

public WeibullDistribution(double k)
Constructor. The default scale parameter is 1.0.
Parameters:
`k` - the shape parameter.
• ### WeibullDistribution

public WeibullDistribution(double k, double lambda)
Constructor.
Parameters:
`k` - the shape parameter.
`lambda` - the scale parameter.
• ## Method Details

• ### length

public int length()
Description copied from interface: `Distribution`
Returns the number of parameters of the distribution. The "length" is in the sense of the minimum description length principle.
Specified by:
`length` in interface `Distribution`
Returns:
The number of parameters.
• ### mean

public double mean()
Description copied from interface: `Distribution`
Returns the mean of distribution.
Specified by:
`mean` in interface `Distribution`
Returns:
The mean.
• ### variance

public double variance()
Description copied from interface: `Distribution`
Returns the variance of distribution.
Specified by:
`variance` in interface `Distribution`
Returns:
The variance.
• ### entropy

public double entropy()
Description copied from interface: `Distribution`
Returns Shannon entropy of the distribution.
Specified by:
`entropy` in interface `Distribution`
Returns:
Shannon entropy.
• ### toString

public String toString()
Overrides:
`toString` in class `Object`
• ### rand

public double rand()
Description copied from interface: `Distribution`
Generates a random number following this distribution.
Specified by:
`rand` in interface `Distribution`
Returns:
a random number.
• ### p

public double p(double x)
Description copied from interface: `Distribution`
The probability density function for continuous distribution or probability mass function for discrete distribution at x.
Specified by:
`p` in interface `Distribution`
Parameters:
`x` - a real number.
Returns:
the density.
• ### logp

public double logp(double x)
Description copied from interface: `Distribution`
The density at x in log scale, which may prevents the underflow problem.
Specified by:
`logp` in interface `Distribution`
Parameters:
`x` - a real number.
Returns:
the log density.
• ### cdf

public double cdf(double x)
Description copied from interface: `Distribution`
Cumulative distribution function. That is the probability to the left of x.
Specified by:
`cdf` in interface `Distribution`
Parameters:
`x` - a real number.
Returns:
the probability.
• ### quantile

public double quantile(double p)
Description copied from interface: `Distribution`
The quantile, the probability to the left of quantile is p. It is actually the inverse of cdf.
Specified by:
`quantile` in interface `Distribution`
Parameters:
`p` - the probability.
Returns:
the quantile.