Skip to content
FlowScript templates

Reliability — Weibull life data with suspensions

Weibull life data analysis on a small population with censoring — seven failures and five units still running. Typed FlowScript for reliability engineering. Keywords: FMEA, failure mode, RPN, reliability.

Template previewFlowScript
Kaplan-Meier estimate — dryer bearing lifeFigure: Kaplan-Meier estimate — dryer bearing life. Kaplan-Meier survival plot. Horizontal axis: Time (operating hours), linear scale, from 0 to 60000. Vertical axis: Survival probability (probability), linear scale, from 0 to 1. 1 series. Felt roll bearings (38950 operating hours, n = 12). Observations: n = 12 subjects. Uncertainty: 95% confidence intervals. Not stated in the figure data: effect. Estimator: Kaplan–Meier product-limit, 95% confidence band by the log–log transform. Test: none — a single arm has nothing to be compared with. Felt roll bearings: n = 12, 7 events, 5 censored, median 38950 operating hours (95% CI 18100 to not reached). Numbers at risk, Felt roll bearings: 0: 12; 10000: 12; 20000: 10; 30000: 8; 40000: 6; 50000: 2; 60000: 0.Kaplan-Meier estimate — dryer bearing lifeFelt roll bearings: 95% confidence band (log–log)Felt roll bearings (n = 12, 7 events)Felt roll bearings: 5 censored0.000.250.500.751.00Survival probability0100002000030000400005000060000Time (operating hours)One arm — no comparison, so no log-rank test.Felt roll bearings: median 38950 operating hours (95% CI 18100 to not reached)Felt roll bearingsNumber at riskFelt roll bearings1212108620Kaplan–Meier product-limit estimate. 95% confidence band by the log–log transform (Greenwood variance).Numbers at risk are the subjects still under observation at each time-axis tick; a subject observed at exactly a tick is counted as at risk there.Ticks on the curves mark follow-up ending without the event (censoring).

Make it your own.

// Weibull life data analysis on a small population with censoring —
// seven failures and five units still running.
//
// Twelve spherical roller bearings on the dryer section of a paper
// machine. The five suspensions are the reason this is a life data
// analysis and not an average: throwing them away would drag the mean life
// down by a third, and treating them as failures would be worse.
//
// Beta is 2.4, comfortably above 1, so these bearings wear out rather than
// fail randomly — which is what licenses a planned replacement interval at
// all. B10 is the number the maintenance plan is built on: the age by
// which one bearing in ten has failed.

weibull_fit dryer_bearings {
  title: "Dryer section 3 — bearing life"
  population: "12 x SKF 23132 CCK/W33 spherical roller bearings, felt roll positions"
  duty: "Continuous, 8400 operating hours per year, 96 C bearing housing temperature"
  method: "Maximum likelihood with right-censored suspensions; rank regression cross-check agrees to 4%"
  units: 12
  failures: 7
  suspensions: 5
  failure_mode: "Grease carbonisation followed by raceway spalling; no evidence of misalignment"

  beta: 2.4 [1.5, 3.8] @ 95%
  eta: 38500 h [31200, 47500] @ 95%
  // Gamma(1 + 1/beta) is a tabulated function of beta alone, so it is an
  // input to the mean life rather than something these data produce.
  gamma_factor: 0.88673 source "Gamma(1 + 1/2.4), tabulated"

  b5: = eta * (0 - ln(0.95)) ^ (1 / beta)
  b10: = eta * (0 - ln(0.90)) ^ (1 / beta)
  b50: = eta * ln(2) ^ (1 / beta)
  mean_life: = eta * gamma_factor

  // Reliability and hazard at the current planned interval.
  planned_interval: 20000 h
  reliability_at_interval: = exp(0 - (planned_interval / eta) ^ beta)
  hazard_at_interval: = (beta / eta) * (planned_interval / eta) ^ (beta - 1)
  // Twelve positions, all assumed new at the start of the year — which is
  // the assumption behind every "expected failures" figure and the one
  // that is almost never stated. Bearings already halfway to eta fail at
  // several times this rate, because beta is 2.4 and hazard rises with age.
  failures_in_first_year: = 12 * (1 - exp(0 - (8400[h] / eta) ^ beta))
}

// The same twelve units as a life table, so the empirical curve can be
// read against the fit rather than taken on trust. Suspensions enter at
// 45000 and 52000 hours and remove units from the risk set without
// stepping the curve down.
survival dryer_bearing_life {
  title: "Kaplan-Meier estimate — dryer bearing life"
  time_unit: "operating hours"
  group: "Felt roll bearings"
  times: [0, 12400, 18100, 22700, 26500, 31200, 35800, 42100, 45000, 52000]
  at_risk: [12, 12, 11, 10, 9, 8, 7, 6, 5, 2]
  events: [0, 1, 1, 1, 1, 1, 1, 1, 0, 0]
  censored: [0, 0, 0, 0, 0, 0, 0, 0, 3, 2]
  survival: [1, 0.9167, 0.8333, 0.75, 0.6667, 0.5833, 0.5, 0.4167, 0.4167, 0.4167]
  estimator: "kaplan_meier"
  risk_table: true
  censor_marks: true
}

maintenance_policy bearing_replacement {
  of: dryer_bearings
  current: "Run to failure, replace at the next unplanned stop"
  proposed: "Planned replacement at 11000 operating hours, aligned with the annual shutdown"
  proposed_interval: 11000 h
  reliability_at_proposed: = exp(0 - (proposed_interval / dryer_bearings.eta) ^ dryer_bearings.beta)
  // A planned change costs a shutdown slot; an unplanned one costs the
  // machine. The ratio is what decides the interval.
  planned_cost: 4200
  unplanned_cost: 68000
  currency: "GBP"
  cost_ratio: = unplanned_cost / planned_cost
  unplanned_first_year: = dryer_bearings.failures_in_first_year
  expected_first_year_cost: = unplanned_first_year * unplanned_cost
}

cite oconnor {
  key: "oconnor2012"
  title: "Practical Reliability Engineering, 5th edition"
  authors: "Patrick D. T. O'Connor and Andre Kleyner"
  publisher: "Wiley"
  year: 2012
  type: "book"
  of: dryer_bearings
}

note small_sample {
  text: "Seven failures is a small dataset and the interval on beta (1.5 to 3.8) says so. The lower bound still exceeds 1, which is the only conclusion the replacement policy actually needs: these bearings wear out, so replacing them on age is worth doing."
  anchor: dryer_bearings
}

view life: km(dryer_bearing_life)

caption life_caption {
  of: life
  title: "Bearing survival with censoring"
  text: "Kaplan-Meier estimate of dryer bearing survival against operating hours. Ticks mark the five units still running at the end of the observation window; the risk table beneath the axis gives the population behind each step."
  statistics: "Steps are the product-limit estimator; censored units leave the risk set without stepping the curve."
  n_statement: "n = 12 bearings, 7 failures, 5 suspensions."
  style: journal
}