Keywords: Reliability Growth Analysis, ReliaGrowR, R package, reliability engineering, life data analysis

Summary & Conclusions

ReliaGrowR is an open-source R package designed for Reliability Growth Analysis (RGA), providing essential tools for analyzing and visualizing reliability growth data. The package includes functions for various reliability growth models, such as the Duane Model, Crow-AMSAA Model, Piecewise NHPP Model, and Piecewise NHPP with Change Point Detection. ReliaGrowR is lightweight, easy to use, and extensible, allowing users to add custom models or features as needed. The package is available on the Comprehensive R Archive Network (CRAN) and has been verified through unit tests and example analyses to ensure reliability and correctness. ReliaGrowR is the only R package for RGA currently available on CRAN, making it a valuable resource for reliability engineers and researchers.

Introduction

Reliability Growth Analysis (RGA) is a critical aspect of reliability engineering by focusing on improving system reliability throughout the development and testing phases. ReliaGrowR [1] is an open-source software package developed to support the analysis of reliability growth data. The package provides a set of simple yet effective functions for analyzing failure data, estimating reliability parameters, and visualizing reliability trends over time. The package is built on the R [2] programming language, which is widely used for statistical computing and data analysis.

ReliaGrowR is the only R package for RGA currently available on the CRAN. Complimentary to other R packages, such as WeibullR [3], ReliaGrowR focuses on providing essential functionality for RGA without unnecessary complexity. Other open source packages, such as the library reliability [4], provide functionality for RGA, but do not include advanced models such as the Piecewise NHPP with Change Point Detection. ReliaGrowR includes functions for various reliability growth models, such as the Duane Model [5], Crow-AMSAA Model [6], Piecewise NHPP Model [7], and Piecewise NHPP with Change Point Detection [8]. These models are essential for understanding how reliability improves (or degrades) over time as changes are made to a product or system.

Implementation

ReliaGrowR is an R package designed for Reliability Growth Analysis (RGA), providing tools to analyze and visualize reliability growth data. The package includes functions for various reliability growth models, both statistical and graphical. The package is built on the R programming language, which is widely used for statistical computing and data analysis.

The package is designed to be lightweight and easy to use, with a focus on providing essential functionality for RGA without unnecessary complexity. It is also designed to be extensible, allowing users to add custom models or features as needed. ReliaGrowR has one primary dependency on the segmented package [9] for regression modeling with break or change points, which is the underlying library for the Piecewise NHPP with or without change point detection.

Usage

ReliaGrowR is available on CRAN. To install R, follow the instructions provided on the CRAN website for the applicable operating system. Once R is installed, install the ReliaGrowR package from CRAN using the following command:

install.packages("ReliaGrowR")

To use the ReliaGrowR package, load the package into the current R session with the following command:

library(ReliaGrowR)

The Duane Model

The Duane Model provides a simple and graphical way to observe and analyze whether failure rates are improving as changes are made to a product or system. The Duane Model is a log-log plot of the cumulative Mean Time Between Failures (MTBF) vs cumulative time.

The slope of the line on the plot indicates the rate of reliability growth:

  • A positive slope means that the system is improving (reliability is growing, the failure rate is decreasing).
  • A zero slope means there is no change in reliability (the system is stable).
  • A negative slope indicates that reliability is worsening (the failure rate is increasing).

To use the Duane Model in ReliaGrowR, use the duane_plot function. This function takes a a vector of failure times and a vector of failure counts, and generates a log-log plot of cumulative MTBF vs cumulative time.

First, set up some dummy cumulative time and failure data:

times <- c(100, 200, 300, 400, 500)
failures <- c(1, 2, 1, 3, 2)

Next, use the duane_plot function to create the plot:

fit <- duane_plot(times, failures)

The plot shows the cumulative MTBF on the y-axis and cumulative time on the x-axis, with a fitted line indicating the reliability growth trend. The duane_plot function returns a duane object with the model results that can be further customized or saved. To view the model results, print the duane object using the print function:

print(fit)
## Duane Analysis Result
## ----------------------
## Linear model (log-log scale): log(MTBF) ~ log(Time)
## 
## Coefficients:
##  (Intercept) log_cum_time 
##    3.6144974    0.2013244 
## 
## AIC: -3.55, BIC: -4.72

The Crow-AMSAA Model

The Army Materiel Systems Analysis Activity Model by Crow (Crow-AMSAA) takes failure behavior as a Non-Homogeneous Poisson Process (NHPP) governed by a power law, making the model particularly effective for systems undergoing reliability growth due to continuous improvements.

Similar to the Duane Model, the shape of the model indicates the rate of reliability growth:

  • A model fit with downward curvature means that the system is improving (reliability is growing, the failure rate is decreasing).
  • A linear model means there is no change in reliability (the system is stable).
  • A model fit with upward curvature indicates that reliability is worsening (the failure rate is increasing).

To use the Crow-AMSAA Model in ReliaGrowR, use the rga function. This function takes a vector of failure times and a vector of failure counts, and generates a plot of cumulative MTBF vs cumulative time with the fitted model.

First, set up some dummy cumulative time and failure data:

times <- c(100, 200, 300, 400, 500)
failures <- c(1, 2, 1, 3, 2)

Then use the rga function to fit the model and the plot_rga function to plot the results:

result <- rga(times, failures)
plot_rga(result)

The plot_rga function generates a plot showing the cumulative MTBF on the y-axis and cumulative time on the x-axis, with a fitted curve indicating the reliability growth trend. The rga function returns an rga object containing the fitted model parameters. To view the model results, print the rga object:

print(result)
## Reliability Growth Analysis (RGA)
## ---------------------------------
## Model Type: Crow-AMSAA 
## 
## Parameters (per segment):
##   Beta: 0.7987
##   Lambda: 0.0269
## 
## Goodness of Fit:
##   AIC: -3.55
##   BIC: -4.72

The Piecewise NHPP Model

The Piecewise NHPP model is an extension of the standard NHPP model that includes different segments or phases of time that follow separate failure distributions. This model is particularly useful when a system experiences changes in failure behavior over different development phases, such as the initial, interim and final phases of a development process.

To use the Piecewise NHPP model in ReliaGrowR, first, set up some cumulative time and failure data and specify a 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 <- 500

Then use the rga function with model type “Piecewise NHPP model” to fit the model and the plot_rga function to plot the results:

result <- rga(times, failures, model_type = "Piecewise NHPP", breaks = breaks)
plot_rga(result)

To view the model results, print the rga object using the print function:

print(result)
## Reliability Growth Analysis (RGA)
## ---------------------------------
## Model Type: Piecewise NHPP 
## 
## Breakpoints (original scale):
## 500 
## 
## Parameters (per segment):
##   Betas: 0.8182, 0.3902
##   Lambdas: 0.0642, 0.9362
## 
## Goodness of Fit:
##   AIC: -24.64
##   BIC: -21.10

The Piecewise NHPP with Change Point Detection

The Piecewise NHPP with Change Point Detection is an advanced model to identify changes in failure behavior and model system reliability. This method builds on the Piecewise NHPP model by introducing the concept of change points, which represent the time when the underlying failure behavior changes. Detection of change points involves statistical techniques that analyze failure data to automatically identify when the behavior changes, allowing for a more precise segmentation of the model into different distributions.

To use the Piecewise NHPP with Change Point Detection in ReliaGrowR, use the rga function with the model type set to “Piecewise NHPP” and breaks set to NULL. The function will automatically detect change points based on the provided failure data. First, set up some cumulative time and failure data:

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)

Then use the rga function with model type “Piecewise NHPP model” to fit the model and the plot_rga function to plot the results:

result <- rga(times, failures, model_type = "Piecewise NHPP")
plot_rga(result)

Print the rga object using the print function to view the model results:

print(result)
## Reliability Growth Analysis (RGA)
## ---------------------------------
## Model Type: Piecewise NHPP 
## 
## Breakpoints (original scale):
## 523.9797 
## 
## Parameters (per segment):
##   Betas: 0.8182, 0.3902
##   Lambdas: 0.0642, 0.9362
## 
## Goodness of Fit:
##   AIC: -24.64
##   BIC: -21.10

Verification

ReliaGrowR was verified through unit tests and example analyses to ensure that the package performs as expected. The package includes a suite of tests that cover the core functionalities, including model fitting, plotting, and change point detection. These tests run automatically during package development to ensure reliability and correctness.

ReliaGrowR was also tested on different operating systems and R versions to ensure compatibility and performance. The results of these tests are documented on CRAN. Full documentation and working examples are available on the project website, where users can also contribute to or report issues with the package.

Extensibility

ReliaGrowR is designed to be extensible, allowing users to add custom models or features as needed. The package has already been extended in a number of ways, including education [10], advanced visualization [11], and web-based applications [12]. Users can contribute to the package by submitting pull requests on the project repository, where the source code is hosted. The package is also open to contributions from the community, and users are encouraged to report issues or suggest improvements.

References

  1. Placeholder, “ReliaGrowR: Reliability Growth Analysis”, R package version 0.1, 2024, doi:10.32614/CRAN.package.ReliaGrowR, https://cran.r-project.org/package=ReliaGrowR.

  2. R Core Team, “R: A Language and Environment for Statistical Computing”, R Foundation for Statistical Computing, Vienna, Austria, 2024, https://www.R-project.org/.

  3. D. Silkworth, J. Symynck, “WeibullR: Weibull Analysis for Reliability Engineering”, R package version 1.2.1, 2022, https://CRAN.R-project.org/package=WeibullR.

  4. M. Reid, “Reliability – a Python library for reliability engineering”, Version 0.8.2, 2022, https://doi.org/10.5281/ZENODO.3938000.

  5. J. T. Duane, “Learning Curve Approach to Reliability Monitoring”, IEEE Transactions on Aerospace, vol. 2, no. 2, pp. 563-566, April 1964, doi: 10.1109/TA.1964.4319640.

  6. L.H. Crow, “Reliability analysis for complex repairable systems.”, Reliability and biometry: Statistical analysis of lifelength, pp. 379-410, 1974.

  7. H. Guo, A. Mettas, G. Sarakakis and P. Niu, “Piecewise NHPP models with maximum likelihood estimation for repairable systems”, 2010 Proceedings - Annual Reliability and Maintainability Symposium (RAMS), San Jose, CA, USA, 2010, pp. 1-7, doi:10.1109/RAMS.2010.5448029.

  8. S. Fasola, V.M.R Muggeo, K. Kuchenhoff, “A heuristic, iterative algorithm for change-point detection in abrupt change models”, Computational Statistics, 33, pp. 997-1015, 2018.

  9. V.M.V Muggeo, “segmented: an R Package to Fit Regression Models with Broken-Line Relationships”, R News, 8/1, pp. 20-25, https://cran.r-project.org/doc/Rnews/.

  10. Placeholder, “WeibullR.learnr: An Interactive Introduction to Life Data Analysis”, R package version 0.1.1, 2023, doi:10.32614/CRAN.package.WeibullR.learnr, https://CRAN.R-project.org/package=WeibullR.learnr.

  11. Placeholder, “WeibullR.plotly: Interactive Weibull Probability Plots”, R package version 0.2.0, 2023, doi:10.32614/CRAN.package.WeibullR.plotly https://CRAN.R-project.org/package=WeibullR.plotly.

  12. Placeholder, “WeibullR.shiny: A Shiny App for Weibull Analysis”, R package version 0.2.0, 2023, doi:10.32614/CRAN.package.WeibullR.shiny https://CRAN.R-project.org/package=WeibullR.shiny.