This function performs a Duane analysis (1962) doi:10.1109/TA.1964.4319640
on failure data by fitting a log-log linear regression of cumulative Mean Time
Between Failures (MTBF) versus cumulative time. The function accepts either
two numeric vectors (times, failures) or a data frame containing both.
Arguments
- times
 Either:
A numeric vector of cumulative failure times, or
A data frame containing two columns:
timesandfailures. Thetimescolumn contains cumulative failure times, and thefailurescolumn contains the number of failures at each corresponding time.
- failures
 A numeric vector of the number of failures at each corresponding time in
times. Ignored iftimesis a data frame. Must be the same length astimesif both are vectors. All values must be positive and finite.- conf.level
 Confidence level for the confidence bounds (default:
0.95). Must be between 0 and 1 (exclusive).
Value
A list of class "duane" containing:
- times
 The input cumulative failure times.
- failures
 The input number of failures.
- n_obs
 The number of observations (failures).
- MTBF
 The cumulative mean time between failures.
- model
 The fitted
lm(linear model) object containing the regression results.- logLik
 The log-likelihood of the fitted model.
- AIC
 Akaike Information Criterion (AIC).
- BIC
 Bayesian Information Criterion (BIC).
- conf.level
 The confidence level.
- Cumulative_Time
 The cumulative operating times.
- Cumulative_MTBF
 The cumulative mean time between failures.
- Fitted_Values
 The fitted values on the MTBF scale.
- Confidence_Bounds
 Matrix of fitted values and confidence bounds on the MTBF scale.
- Residuals_Log
 Residuals on the log(MTBF) scale (from the regression).
- Residuals_MTBF
 Residuals on the MTBF scale (observed - fitted).
Details
The scaling relationship between the size of input data (numbers of observations) and speed of algorithm execution is approximately linear (O(n)). The function is efficient and can handle large data sets (e.g., thousands of observations) quickly. The function uses base R functions and does not require any additional packages. The function includes comprehensive input validation and error handling to ensure robustness. The function is tested with a standard data set from a published paper and includes unit tests to verify correctness and performance.
See also
Other Duane functions:
plot.duane(),
print.duane()
Examples
times <- c(100, 200, 300, 400, 500)
failures <- c(1, 2, 1, 3, 2)
fit1 <- duane(times, failures, conf.level = 0.90)
print(fit1)
#> Duane Analysis Result
#> ----------------------
#> Linear model (log-log scale): log(MTBF) ~ log(Time)
#> 
#> Number of observations (failures): 5
#> 
#> Coefficients:
#>                Estimate Std. Error
#> (Intercept)   3.6144974 0.35199619
#> log_cum_times 0.2013244 0.05624037
#> 
#> Log-likelihood: 4.78
#> AIC: -3.55, BIC: -4.72
#> Confidence level: 90.0%
df <- data.frame(times = times, failures = failures)
fit2 <- duane(df, conf.level = 0.95)
print(fit2)
#> Duane Analysis Result
#> ----------------------
#> Linear model (log-log scale): log(MTBF) ~ log(Time)
#> 
#> Number of observations (failures): 5
#> 
#> Coefficients:
#>                Estimate Std. Error
#> (Intercept)   3.6144974 0.35199619
#> log_cum_times 0.2013244 0.05624037
#> 
#> Log-likelihood: 4.78
#> AIC: -3.55, BIC: -4.72
#> Confidence level: 95.0%