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%