Calculate Hazard Rate, Reliability, and CDF based on Weibull Distribution parameters.
Slope of the Weibull plot
Characteristic Life (hours, cycles, etc.)
Specific time to calculate failure rate
Please enter valid positive numbers for all fields.
Hazard Rate (h(t)):
Reliability (R(t)):
Unreliability / CDF (F(t)):
Interpretation:
Understanding Weibull Analysis
The Weibull distribution is one of the most widely used probability distributions in reliability engineering and failure analysis. Its versatility allows it to model various stages of a product's life cycle, from early "infant mortality" failures to random constant failures and final wear-out phases.
This calculator determines the Hazard Rate (instantaneous failure rate), Reliability (probability of survival), and Unreliability (Cumulative Distribution Function) at a specific time $t$.
Key Parameters Explained
Shape Parameter ($\beta$ or Beta): This defines the failure behavior.
$\beta < 1$: Decreasing Failure Rate (Infant Mortality). High initial failure rate that drops over time.
$\beta > 1$: Increasing Failure Rate (Wear-out). Failures increase as the product ages.
Scale Parameter ($\eta$ or Eta): Also known as the Characteristic Life. This is the time at which exactly 63.2% of the population will have failed. It defines the time scale of the distribution.
Time ($t$): The specific operating time (in hours, cycles, miles, etc.) for which you want to calculate the reliability metrics.
The Formulas
The calculations performed by this tool use the standard 2-parameter Weibull formulas:
1. Hazard Rate (Failure Rate) $h(t)$:
h(t) = (β / η) * (t / η)β – 1
2. Reliability Function $R(t)$:
R(t) = e-(t / η)β
3. Cumulative Distribution Function $F(t)$:
F(t) = 1 – e-(t / η)β
Example Calculation
Suppose you are testing a mechanical bearing with the following parameters:
Reliability: 91.46% (probability the bearing survives past 1000 hours)
Unreliability: 8.54% (probability the bearing fails before 1000 hours)
Why is the Weibull Failure Rate Important?
In maintenance planning and warranty analysis, understanding the failure rate is critical. If $\beta > 1$, preventive maintenance is beneficial because the component is wearing out. If $\beta < 1$, burn-in testing might be required to screen out weak components before shipping. If $\beta = 1$, preventive maintenance is ineffective, and condition monitoring is preferred.
function calculateWeibull() {
// Get input elements
var betaInput = document.getElementById('shapeParam');
var etaInput = document.getElementById('scaleParam');
var timeInput = document.getElementById('timeVal');
var errorDiv = document.getElementById('wbError');
var resultsDiv = document.getElementById('wbResults');
// Parse values
var beta = parseFloat(betaInput.value);
var eta = parseFloat(etaInput.value);
var t = parseFloat(timeInput.value);
// Validation
if (isNaN(beta) || isNaN(eta) || isNaN(t) || beta <= 0 || eta <= 0 || t < 0) {
errorDiv.style.display = 'block';
resultsDiv.style.display = 'none';
return;
}
// Hide error if valid
errorDiv.style.display = 'none';
// 1. Calculate Reliability R(t) = exp(-(t/eta)^beta)
var timeRatio = t / eta;
var exponent = Math.pow(timeRatio, beta);
var reliability = Math.exp(-exponent);
// 2. Calculate CDF F(t) = 1 – R(t)
var cdf = 1 – reliability;
// 3. Calculate Hazard Rate h(t) = (beta/eta) * (t/eta)^(beta-1)
// Handle t=0 case separately to avoid 0^-1 if beta < 1
var hazardRate = 0;
if (t === 0) {
if (beta < 1) hazardRate = Infinity; // Theoretical singularity
else if (beta === 1) hazardRate = 1 / eta;
else hazardRate = 0;
} else {
hazardRate = (beta / eta) * Math.pow(timeRatio, beta – 1);
}
// Determine interpretation
var interpretation = "";
if (beta 1 && beta < 4) {
interpretation = "Early Wear-out";
} else {
interpretation = "Rapid Wear-out (Old Age)";
}
// Display results
document.getElementById('resHazard').innerHTML = hazardRate.toExponential(4) + " (failures/unit time)";
document.getElementById('resReliability').innerHTML = (reliability * 100).toFixed(4) + "%";
document.getElementById('resCDF').innerHTML = (cdf * 100).toFixed(4) + "%";
document.getElementById('resInterp').innerText = interpretation;
// Show results container
resultsDiv.style.display = 'block';
}