Autoclub #4 Reliability - Refined

## An attempt to decipher Autoclub #4 Reliabilty and Availbility
## The Weibull distribution is commonly useed to model electronic/complex systems
## The lognormal distribution is commonly used to model the lives of units
## whose failure modes are of a fatigue-stress nature
## Sources: http://reliawiki.org and WeibullR for R

library(WeibullR)
rm(list = ls()) # remove all environment
Auto4 <- read.csv("Auto4 v3.csv",header = T, sep = ",", encoding = "UTF-8")
# View(Auto4)

f <- function(time, title, pch) {
  today = as.numeric(Sys.Date()-as.Date("2015-01-01"))
  fday = as.numeric(as.Date("2018-06-01")-as.Date("2015-01-01"))

  d <- wblr(time, pp = "median", pch = pch)
  d$options$main <- c(title , d$options$main)
  d2 <- wblr.conf(wblr.fit(d, dist = "weibull2p"))
  d3 <- wblr.fit(d, dist = "weibull3p")
  e2 <- wblr.conf(wblr.fit(d, dist = "lognormal"))
  e3 <- wblr.fit(d, dist = "lognormal3p")

  time<-c(sort(time),fday)
  l<-length(time)
  w <- c(d2$fit[[1]]$beta,d2$fit[[1]]$eta)
  haz2 <- w["Beta"]/w["Eta"]*(time/w["Eta"])^(w["Beta"]-1)
  w <- c(d3$fit[[1]]$beta,d3$fit[[1]]$eta, d3$fit[[1]]$t0)
  haz3 <- w["Beta"]/w["Eta"]*((time-w["t0"])/w["Eta"])^(w["Beta"]-1)

  w4 <- e2$fit[[1]]$fit_vec
  w5 <- e3$fit[[1]]$fit_vec
  haz4 <- dlnorm(time, w4["Mulog"], w4["Sigmalog"],log = F)/(plnorm(time,w4["Mulog"], w4["Sigmalog"],lower.tail = F, log.p = F))
  haz5 <- dlnorm(time, w5["Mulog"], w5["Sigmalog"],log = F)/(plnorm(time,w5["Mulog"], w5["Sigmalog"],lower.tail = F, log.p = F))

  LEGEND<-c(paste("Weibull 2p:",format(d2$fit[[1]]$fit_vec[3],digits = 3)),
            paste("Weibull 3p:",format(d3$fit[[1]]$fit_vec[4],digits = 3)),
            paste("Lognormal 2p:",format(w4[3], digits = 3)),
            paste("Lognormal 3p:",format(w5[4], digits = 3)))

  cat("Weibull 2-paprameters likelyhood")
  plot.wblr(d2, in.legend.blives = F)
  lines(c(today,today),c(-10,100),type = "l", col = "blue")
  lines(c(fday,fday),c(-10,100),type = "l", col = "red")
  cat("Weibull 3-paprameters likelyhood")
  plot.wblr(d3)
  lines(c(today,today),c(-10,100),type = "l", col = "blue")
  lines(c(fday,fday),c(-10,100),type = "l", col = "red")
  cat("Log-normal 2-paprameters likelyhood")
  plot.wblr(e2, in.legend.blives = F)
  lines(c(today,today),c(-10,100),type = "l", col = "blue")
  lines(c(fday,fday),c(-10,100),type = "l", col = "red")
  cat("Log-normal 3-paprameters likelyhood")
  plot.wblr(e3)
  lines(c(today,today),c(-10,100),type = "l", col = "blue")
  lines(c(fday,fday),c(-10,100),type = "l", col = "red")

  if (w["t0"]>0) {
    YLIM<-c(min(haz3,haz2,haz4,haz5),max(haz3,haz2,haz4,haz5))
  } else { YLIM<-c(min(haz2,haz4),max(haz2,haz4)) }
  YLIM<-YLIM*100
  cat("Failure prediction")
  plot(time,haz2*100, type = "b", main = c(title,"Hazard rate"), xlab = "Time", ylab="Failure rate [%]",col="blue", ylim = YLIM, pch=0, family = "serif")
  lines(time,haz4*100, type = "b", col="green", lty=3,pch=2)
  if (w["t0"]>0) {
    lines(time,haz3*100, type = "b", col="red", lty=2,pch=1 )
    lines(time,haz5*100, type = "b" ,col="black" , lty=4,pch=3)
  }
  grid()
  legend(x="topleft",legend = LEGEND, cex = 0.7, col=c("blue","red","green","black"),pch=c(0,1,2,3))
}

f2<-function(frame, title) {
  mldt<-mean(frame$LDT , na.rm = T)*8
  mttr<-mean(frame$TTR , na.rm = T)
  mtbf<-f3(frame$Event)*8
  cat(paste(title," Availability:\n"))
  cat(paste("MTBF:",mtbf,"\n"))
  cat(paste("MTTR:",mttr,"\n"))
  cat(paste("MLDT:",mldt,"\n"))
  cat(paste("Technical:",format(mtbf/(mtbf+mttr),digits = 3),"\n"))
  cat(paste("Operational:",format(mtbf/(mtbf+mldt+mttr),digits = 3),"\n"))
}

f3<-function(frame) {
  frame<-sort(frame)
  l<-length(frame)
  x<-0.0
  for (i in 2:l) {
    x<-x+frame[i]-frame[i-1]
  }
  return(x/(l-1))
}

q <- wblr(Auto4$Event, pch = 0)
q1 <- wblr.conf(wblr.fit(q, dist = "weibull2p"))
plot.wblr(q1, in.legend.blives = F)

q2 <- wblr.conf(wblr.fit(q, dist = "lognormal"))
plot.wblr(q2, in.legend.blives = F)

q3 <- wblr.fit(q, dist = "weibull3p")
plot.wblr(q3, in.legend.blives = F)

q4 <- wblr.fit(q, dist = "lognormal3p")
plot.wblr(q4, in.legend.blives = F)

f2(Auto4,"Auto-Club #4")
## Auto-Club #4  Availability:
## MTBF: 100.8 
## MTTR: 2.54166666666667 
## MLDT: 5.33333333333333 
## Technical: 0.975 
## Operational: 0.928
f(time = Auto4$Event[8:11], title = "Bridge", pch = 1)
## Weibull 2-paprameters likelyhood

## Weibull 3-paprameters likelyhood

## Log-normal 2-paprameters likelyhood

## Log-normal 3-paprameters likelyhood

## Failure prediction

f2(Auto4[8:11,],"Bridge")
## Bridge  Availability:
## MTBF: 1690.66666666667 
## MTTR: 2 
## MLDT: 0 
## Technical: 0.999 
## Operational: 0.999
f(time = Auto4$Event[12:24], title = "Control", pch = 2)
## Weibull 2-paprameters likelyhood

## Weibull 3-paprameters likelyhood

## Log-normal 2-paprameters likelyhood

## Log-normal 3-paprameters likelyhood

## Failure prediction

f2(Auto4[12:24,],"Control")
## Control  Availability:
## MTBF: 586.666666666667 
## MTTR: 1.75 
## MLDT: 24 
## Technical: 0.997 
## Operational: 0.958
f(time = Auto4$Event[16:24], title = "Control (Electric Events)", pch = 3)
## Weibull 2-paprameters likelyhood

## Weibull 3-paprameters likelyhood

## Log-normal 2-paprameters likelyhood

## Log-normal 3-paprameters likelyhood

## Failure prediction

f2(Auto4[16:24,],"Control (Electric)")
## Control (Electric)  Availability:
## MTBF: 836 
## MTTR: 1.75 
## MLDT: 24 
## Technical: 0.998 
## Operational: 0.97
f(time = Auto4$Event[25:56], title = "Cooling", pch = 4)
## Weibull 2-paprameters likelyhood

## Weibull 3-paprameters likelyhood

## Log-normal 2-paprameters likelyhood

## Log-normal 3-paprameters likelyhood

## Failure prediction

f2(Auto4[25:56,],"Cooling")
## Cooling  Availability:
## MTBF: 248.258064516129 
## MTTR: 3.1666666666 
## MLDT: 0 
## Technical: 0.987 
## Operational: 0.987
f(time = Auto4$Event[52:56], pch = 5, title = "Cooling (Valve events)")
## Weibull 2-paprameters likelyhood

## Weibull 3-paprameters likelyhood

## Log-normal 2-paprameters likelyhood

## Log-normal 3-paprameters likelyhood

## Failure prediction

f2(Auto4[52:56,],"Cooling (Valves)")
## Cooling (Valves)  Availability:
## MTBF: 1198 
## MTTR: NaN 
## MLDT: NaN 
## Technical: NaN 
## Operational: NaN
f(time = Auto4$Event[34:51], pch = 6, title = "Cooling (Pump Flange Events)")
## Weibull 2-paprameters likelyhood

## Weibull 3-paprameters likelyhood

## Log-normal 2-paprameters likelyhood

## Log-normal 3-paprameters likelyhood

## Failure prediction

f2(Auto4[34:51,],"Cooling (Pump Flange)")
## Cooling (Pump Flange)  Availability:
## MTBF: 430.117647058824 
## MTTR: 2 
## MLDT: 0 
## Technical: 0.995 
## Operational: 0.995
f(time = Auto4$Event[26:28], pch = 8, title = "Cooling (Fan Events)")
## Weibull 2-paprameters likelyhood

## Weibull 3-paprameters likelyhood

## Log-normal 2-paprameters likelyhood

## Log-normal 3-paprameters likelyhood

## Failure prediction

f2(Auto4[26:28,],"Cooling (Fan)")
## Cooling (Fan)  Availability:
## MTBF: 1624 
## MTTR: 5.1666666665 
## MLDT: 0 
## Technical: 0.997 
## Operational: 0.997
f(time = Auto4$Event[57:72], pch = 9, title = "Door Events")
## Weibull 2-paprameters likelyhood

## Weibull 3-paprameters likelyhood

## Log-normal 2-paprameters likelyhood

## Log-normal 3-paprameters likelyhood

## Failure prediction

f2(Auto4[57:72,],"Door")
## Door  Availability:
## MTBF: 532.266666666667 
## MTTR: 1.7083333335 
## MLDT: 0 
## Technical: 0.997 
## Operational: 0.997
f(time = Auto4$Event[57:59], pch = 10, title = "Door Mechanism Events")
## Weibull 2-paprameters likelyhood

## Weibull 3-paprameters likelyhood

## Log-normal 2-paprameters likelyhood

## Log-normal 3-paprameters likelyhood

## Failure prediction

f2(Auto4[57:59,],"Door Mechanism")
## Door Mechanism  Availability:
## MTBF: 1240 
## MTTR: NaN 
## MLDT: NaN 
## Technical: NaN 
## Operational: NaN
f(time = Auto4$Event[60:65], pch = 11, title = "Door Micro-Switch Events")
## Weibull 2-paprameters likelyhood

## Weibull 3-paprameters likelyhood

## Log-normal 2-paprameters likelyhood

## Log-normal 3-paprameters likelyhood

## Failure prediction

f2(Auto4[60:65,],"Door Micro-switch")
## Door Micro-switch  Availability:
## MTBF: 894.4 
## MTTR: NaN 
## MLDT: NaN 
## Technical: NaN 
## Operational: NaN
f(time = Auto4$Event[66:72], pch = 12, title = "Door Seal Events")
## Weibull 2-paprameters likelyhood

## Weibull 3-paprameters likelyhood

## Log-normal 2-paprameters likelyhood

## Log-normal 3-paprameters likelyhood

## Failure prediction

f2(Auto4[66:72,],"Door Seal")
## Door Seal  Availability:
## MTBF: 1162.66666666667 
## MTTR: 1.7083333335 
## MLDT: 0 
## Technical: 0.999 
## Operational: 0.999
f(time = Auto4$Event[73:76], title = "Heating System", pch = 13)
## Weibull 2-paprameters likelyhood

## Weibull 3-paprameters likelyhood

## Log-normal 2-paprameters likelyhood

## Log-normal 3-paprameters likelyhood

## Failure prediction

f2(Auto4[73:76,],"Heating System")
## Heating System  Availability:
## MTBF: 1176 
## MTTR: NaN 
## MLDT: NaN 
## Technical: NaN 
## Operational: NaN
f(time = Auto4$Event[77:82], pch = 14, title = "Nitrogen System Events")
## Weibull 2-paprameters likelyhood

## Weibull 3-paprameters likelyhood

## Log-normal 2-paprameters likelyhood

## Log-normal 3-paprameters likelyhood

## Failure prediction

f2(Auto4[77:82,],"Nitrogen System")
## Nitrogen System  Availability:
## MTBF: 1265.6 
## MTTR: 3 
## MLDT: 4 
## Technical: 0.998 
## Operational: 0.994
f(time = Auto4$Event[83:86], pch = 15, title = "Vacuum System Events")
## Weibull 2-paprameters likelyhood

## Weibull 3-paprameters likelyhood

## Log-normal 2-paprameters likelyhood

## Log-normal 3-paprameters likelyhood

## Failure prediction

f2(Auto4[83:86,],"Vacuum System")
## Vacuum System  Availability:
## MTBF: 877.333333333333 
## MTTR: NaN 
## MLDT: NaN 
## Technical: NaN 
## Operational: NaN