To run a repairable systems analysis, start by loading
ReliaGrowR and ReliaPlotR:
Repairable systems experience multiple failure events over their lifetime. Standard survival analysis (Kaplan-Meier, Weibull) applies to the first failure; repairable-systems methods model the entire recurrence process (Nelson 2003).
The Mean Cumulative Function (MCF), \(M(t) = E[N(t)]\), is the expected cumulative number of repairs per system by time \(t\). The nonparametric Nelson-Aalen estimator
\[\hat{M}(t) = \sum_{t_i \leq t} \frac{d_i}{r_i},\]
where \(d_i\) is the number of events at time \(t_i\) and \(r_i\) is the number of systems at risk (still under observation), provides an unbiased estimate that properly accounts for systems observed only up to a censoring time (Nelson 2003). This differs fundamentally from the Kaplan-Meier estimator: Kaplan-Meier estimates survival to first event; MCF sums expected recurrences and can exceed 1.
The NHPP Power Law (Crow-AMSAA) model fits a parametric intensity function \(\lambda(t) = \lambda \beta t^{\beta - 1}\) to the recurrent process. It is the repairable-systems analog of the Crow-AMSAA model for development testing: \(\beta < 1\) indicates improving reliability; \(\beta > 1\) indicates deterioration; \(\beta = 1\) is a homogeneous Poisson process (Crow 1974).
The examples below use a fleet of five field units. Each row records which unit failed and when:
The Mean Cumulative Function (MCF) is a non-parametric estimate of the expected cumulative number of failures per system by time t. It is computed using the Nelson-Aalen estimator, which accounts for systems that are still operating (censored) at the end of the observation window.
end_times <- c(U1 = 600, U2 = 600, U3 = 600, U4 = 600, U5 = 600)
fit_mcf <- mcf(id = id, time = time, end_time = end_times)
plotly_mcf(fit_mcf)The shaded band shows the pointwise confidence interval. Hover over the step function to read exact MCF values at each event time.
The exposure plot tracks the cumulative event rate — total failures divided by total system-time — over the observation period. A rising rate indicates a deteriorating fleet; a flat or falling rate indicates stability or improvement.
The Non-Homogeneous Poisson Process (NHPP) fits a parametric model to the recurrent failure process. The Power Law model (also called the Crow-AMSAA model for repairable systems) describes how the failure intensity changes over time:
\[\lambda(t) = \lambda \beta \, t^{\beta - 1}\]
A shape parameter \(\beta < 1\) indicates reliability improvement; \(\beta > 1\) indicates deterioration; \(\beta = 1\) reduces to a homogeneous Poisson process.
When a corrective action or design change is introduced mid-program, the failure process may shift. A piecewise NHPP fits separate Power Law segments on either side of a specified breakpoint, shown as a vertical dotted line:
# Dense failures before the design change (t < 500), sparse afterwards
times2 <- c(30, 65, 105, 150, 200, 255, 315, 380, 450, 800, 1300, 1950, 2800)
events2 <- rep(1, 13)
fit_nhpp2 <- nhpp(time = times2, event = events2, breaks = 500, method = "LS")
plotly_nhpp(fit_nhpp2, fitCol = "steelblue", confCol = "steelblue", breakCol = "red")Multiple MCF or NHPP estimates can be overlaid on the same plot by passing a list of objects. This is useful for comparing two fleets, two time periods, or a before/after scenario.