To run a Reliability Growth Analysis, start by loading
ReliaGrowR and ReliaPlotR
The Crow-AMSAA model (Non-Homogeneous Poisson Process, Power Law) describes the expected cumulative failures as
\[E[N(t)] = \lambda t^{\beta},\]
where \(\lambda > 0\) is a scale parameter and \(\beta > 0\) is the shape parameter. A value \(\beta < 1\) indicates reliability growth (the failure rate \(\lambda\beta t^{\beta-1}\) is decreasing over time); \(\beta > 1\) indicates degradation; \(\beta = 1\) gives a homogeneous Poisson process (constant rate). Parameters are estimated by fitting a log-log linear regression to cumulative failures versus cumulative test time (Crow 1974).
The Duane model predates the NHPP formulation and postulates that the cumulative mean time between failures follows a power law in cumulative test time: \(\text{CMTBF}(T) = K T^\alpha\), where \(\alpha\) is the growth rate. Empirically, managed reliability growth programs tend to achieve \(\alpha \approx 0.3\)–\(0.5\) (Duane 1964).
Piecewise NHPP. When a design change or corrective
action divides the test program into distinct phases, separate Power Law
parameters are fit within each interval defined by the specified
breaks. A vertical dotted line marks each change point.
To run a Crow-AMSAA model, first set up some cumulative time and failure data:
Then run the rga and plot the results:
result <- rga(times, failures)
plotly_rga(result)
#> No trace type specified:
#> Based on info supplied, a 'scatter' trace seems appropriate.
#> Read more about this trace type -> https://plotly.com/r/reference/#scatter
#> No trace type specified:
#> Based on info supplied, a 'scatter' trace seems appropriate.
#> Read more about this trace type -> https://plotly.com/r/reference/#scatter
#> No trace type specified:
#> Based on info supplied, a 'scatter' trace seems appropriate.
#> Read more about this trace type -> https://plotly.com/r/reference/#scatterTo run a Piecewise NHPP, first set up some cumulative time/failure data and specify the breakpoint:
times <- c(25, 55, 97, 146, 201, 268, 341, 423, 513, 609, 710, 820, 940, 1072, 1217)
failures <- c(1, 1, 2, 4, 4, 1, 1, 2, 1, 4, 1, 1, 3, 3, 4)
breaks <- 500Then run the rga and plot the results:
result <- rga(times, failures, model_type = "Piecewise NHPP", breaks = breaks)
plotly_rga(result, fitCol = "blue", confCol = "blue", breakCol = "red")
#> No trace type specified:
#> Based on info supplied, a 'scatter' trace seems appropriate.
#> Read more about this trace type -> https://plotly.com/r/reference/#scatter
#> No trace type specified:
#> Based on info supplied, a 'scatter' trace seems appropriate.
#> Read more about this trace type -> https://plotly.com/r/reference/#scatter
#> No trace type specified:
#> Based on info supplied, a 'scatter' trace seems appropriate.
#> Read more about this trace type -> https://plotly.com/r/reference/#scatterTo run a Duane Model, first set up some cumulative time and failure data:
Then plot the results:
Multiple rga models can be overlaid on the same plot by
passing a list of objects. Each model is rendered in a distinct color,
and clicking a legend entry toggles all traces for that model.
times1 <- c(100, 200, 300, 400, 500)
failures1 <- c(1, 2, 1, 3, 2)
result1 <- rga(times1, failures1)
times2 <- c(50, 150, 250, 350, 450)
failures2 <- c(2, 1, 3, 1, 2)
result2 <- rga(times2, failures2)
plotly_rga(list(result1, result2), cols = c("steelblue", "tomato"))
#> No trace type specified:
#> Based on info supplied, a 'scatter' trace seems appropriate.
#> Read more about this trace type -> https://plotly.com/r/reference/#scatter
#> No trace type specified:
#> Based on info supplied, a 'scatter' trace seems appropriate.
#> Read more about this trace type -> https://plotly.com/r/reference/#scatter
#> No trace type specified:
#> Based on info supplied, a 'scatter' trace seems appropriate.
#> Read more about this trace type -> https://plotly.com/r/reference/#scatter
#> No trace type specified:
#> Based on info supplied, a 'scatter' trace seems appropriate.
#> Read more about this trace type -> https://plotly.com/r/reference/#scatter
#> No trace type specified:
#> Based on info supplied, a 'scatter' trace seems appropriate.
#> Read more about this trace type -> https://plotly.com/r/reference/#scatter
#> No trace type specified:
#> Based on info supplied, a 'scatter' trace seems appropriate.
#> Read more about this trace type -> https://plotly.com/r/reference/#scatter