SMRD:::vinny()
library(SMRD)

In this echapter - Planning Accelerated Life Tests

AdhesiveBond example

Get the adheisive bond planning values from simple user-specified information

AdhesiveBond.Weibull.altpv <-
  get.alt.plan.values.from.slope.and.point(distribution = "Weibull",
                                           relationship = "Arrhenius",
                                           accelvar.units = c("DegreesC"),
                                           time.units = "Days", 
                                           censor.time = 183,
                                           probs = c(.001), 
                                           accelvar = c(50),
                                           slope = 0.726, 
                                           beta = 1.667)

print(AdhesiveBond.Weibull.altpv)

specify some test plans

AdhesiveBond0.altplan <-
  get.alt.test.plan.direct(accel.variable.levels = c(80,100,120),
                           number.of.units = c(100,100,100),
                           censor.times = c(243,243,243))

AdhesiveBond1.altplan <-
  get.alt.test.plan.direct(accel.variable.levels = c(78,98,120),
                           number.of.units = c(155,60,84),
                           censor.times = c(183,183,183))

AdhesiveBond2.altplan <-
  get.alt.test.plan.direct(accel.variable.levels = c(80,100,120),
                           number.of.units = c(212,88,0),
                           censor.times = c(243,243,243))

AdhesiveBond3.altplan <-
  get.alt.test.plan.direct(accel.variable.levels = c(80,100,120),
                           number.of.units = c(150,60,90),
                           censor.times = c(243,243,243))

## optimum plan

AdhesiveBond4.altplan <-
  get.alt.test.plan.direct(accel.variable.levels = c(95,120),
                           number.of.units = c(212,88),
                           censor.times = c(183,183))

print(AdhesiveBond1.altplan)

the following illustrates the frame method of input

AdhesiveBond2.frame <- data.frame(DegreesC = c(80,100,120),
                                  SampleSize = c(150,60,90),
                                  CensorTimes = c(243,243,243))

AdhesiveBond2.altplan <- 
  get.alt.test.plan.frame(AdhesiveBond2.frame,
                          levels.columns = "DegreesC", 
                          censor.column = "CensorTimes",
                          allocation.column = "SampleSize",
                          describe.string = "AdhesiveBond Test Plan")

print(AdhesiveBond2.altplan)

Make a schematic plot of the model and the test plan

plot(AdhesiveBond1.altplan,
     ALT.plan.values = AdhesiveBond.Weibull.altpv,
     use.condition = 50)

plot(AdhesiveBond2.altplan,
     ALT.plan.values = AdhesiveBond.Weibull.altpv,
     use.condition = 50)

plot(AdhesiveBond3.altplan,
     ALT.plan.values = AdhesiveBond.Weibull.altpv,
     use.condition = 50)

Large-sample evaluation of the test plan

ALT.vcv(AdhesiveBond1.altplan,
        ALT.plan.values = AdhesiveBond.Weibull.altpv)

evaluate(AdhesiveBond1.altplan,
         ALT.plan.values = AdhesiveBond.Weibull.altpv,
         quantile.of.interest = 0.5,
         use.condition = 50)

names(AdhesiveBond1.altplan)
names(AdhesiveBond.Weibull.altpv)

Evaluate the test plan with simulation and large-sample approx

simulate(AdhesiveBond1.altplan,
         ALT.plan.values = AdhesiveBond.Weibull.altpv,
         use.condition = 50)

unfold(AdhesiveBond1.altplan, 
       AdhesiveBond.Weibull.altpv, 
       use.condition = 50)

evaluate(AdhesiveBond1.altplan, 
         AdhesiveBond.Weibull.altpv,
         use.condition = 50,
         quantile.of.interest = 0.5)

Evaluate the the other test plans

simulate(AdhesiveBond2.altplan, 
         ALT.plan.values = AdhesiveBond.Weibull.altpv,
         use.condition = 50,
         show.detail.on = 5)

simulate(AdhesiveBond2.altplan,
         ALT.plan.values = AdhesiveBond.Weibull.altpv,
         number.sim = 100,
         use.condition = 50)

evaluate(AdhesiveBond2.altplan, 
         AdhesiveBond.Weibull.altpv,
         use.condition = 50,
         quantile.of.interest = 0.1)

AdhesiveBond3.sim.out <- 
  simulate(AdhesiveBond3.altplan,
           ALT.plan.values = AdhesiveBond.Weibull.altpv,
           use.condition = 50)

ALT.plot.time.v.x(AdhesiveBond3.sim.out,
                  x.of.interest = c(45))

ALT.plot.FracFail.v.Time(AdhesiveBond3.sim.out,
                         x.of.interest = c(45))

evaluate(AdhesiveBond3.altplan, 
         AdhesiveBond.Weibull.altpv,
         use.condition = 50,
         quantile.of.interest = 0.1)

SMRD:::plot.vpm.vs.size(vpm.vec = c(100, 150, 200), 
                         size.vec = c(1, 2, 3))

SMRD:::plot.volt.vs.size(volts.vec = c(100, 200, 300), 
                          size.vec = c(1, 2, 3))

DeviceA example

DeviceA.altpv <- 
  get.alt.plan.values.from.slope.and.point(distribution = "Lognormal",
                                           slope = 0.63,
                                           relationship = "Arrhenius",
                                           time.units = "Hours",
                                           censor.time = 5000,
                                           probs = 0.5469, 
                                           accelvar = 60,
                                           sigma = 0.98,
                                           use.conditions = 10)

print(DeviceA.altpv)

DeviceA1.altplan <- 
  get.alt.test.plan.direct(accel.variable.levels = c(10,40,60,80),
                           number.of.units = c(30,100,20,15),
                           censor.time =  c(5000,5000,5000,5000))

print(DeviceA1.altplan)

simulate(DeviceA1.altplan,
         ALT.plan.values = DeviceA.altpv, 
         nsim = 100,
         use.condition = 10)

DeviceA2.altplan <- 
  get.alt.test.plan.direct(accel.variable.levels = c(10,40,50,60,70,80),
                           number.of.units = c(30,27,27,27,27,27),
                           censor.time = c(5000,5000,5000,5000,5000,5000))

print(DeviceA2.altplan)

simulate(DeviceA2.altplan,
         ALT.plan.values = DeviceA.altpv, 
         nsim = 100, 
         use.condition = 10)

Can't find this function

## generate ALT plans

hold.altplan("Weibull",
             a = -4, 
             b1 = -10, 
             perc = 0.1,
             iopta = 3, 
             iopts = 2,
             pifix = 0)
print(AdhesiveBond.Weibull.altpv)

evaluate(altplan(AdhesiveBond.Weibull.altpv,
                 "Optimum",
                 use.condition = 50, 
                 highest.condition = 120,
                 censor.time = 183, 
                 quantile = 0.1,
                 sample.size = 300), 
         AdhesiveBond.Weibull.altpv,
         use.condition = 50, 
         quantile.of.interest = 0.1)


AdhesiveBond.Weibull.optc.altplan <-
  altplan(AdhesiveBond.Weibull.altpv,
          "Optimized compromise",
          use.condition = 50,
          highest.condition = 120,
          censor.time = 250,
          quantile = 0.1)

evaluate(altplan(AdhesiveBond.Weibull.altpv,
                 "Equal expected",
                 use.condition = 50,
                 highest.condition = 120,
                 censor.time = 250,
                 quantile = 0.1),
         AdhesiveBond.Weibull.altpv,
         use.condition = 50,
         quantile.of.interest = 0.1)

AdhesiveBond.Weibull.421.altplan <-
  altplan(AdhesiveBond.Weibull.altpv,
          "421",
          use.condition = 50,
          highest.condition = 120,
          censor.time = 250,
          quantile = 0.1)

evaluate(altplan(AdhesiveBond.Weibull.altpv,
                 "Traditional", 
                 use.condition = 50,
                 highest.condition = 120,
                 censor.time = 250,
                 quantile = 0.1), 
         AdhesiveBond.Weibull.altpv,
         use.condition = 50, 
         quantile.of.interest = 0.1)

print(AdhesiveBond.Weibull.421.altplan)

evaluate(AdhesiveBond.Weibull.421.altplan, 
         AdhesiveBond.Weibull.altpv,
         use.condition = 50, 
         quantile.of.interest = 0.1)

unfold(AdhesiveBond.Weibull.421.altplan, 
       AdhesiveBond.Weibull.altpv,
       use.condition = 50)

plot(AdhesiveBond.Weibull.421.altplan,
     AdhesiveBond.Weibull.altpv,
     use.condition = 50)

DeviceA.Sim.out <- 
  simulate(DeviceA2.altplan,
           ALT.plan.values = DeviceA.altpv,
           nsim = 10,
           use.condition = 10)

DeviceA.Sim.out500 <- 
  simulate(DeviceA2.altplan,
           ALT.plan.values = DeviceA.altpv,
           nsim = 500,
           use.condition = 10)

marginalize.sim(DeviceA.Sim.out, 
                focus.quantity = "parameter",
                focus.quantity.detail = 1,
                x.of.interest = 50)

marginalize.sim(DeviceA.Sim.out, 
                focus.quantity = "parameter",
                focus.quantity.detail = 2,
                x.of.interest = 50)

marginalize.sim(DeviceA.Sim.out, 
                focus.quantity ="parameter",
                focus.quantity.detail = 3,
                x.of.interest = 50)

marginalize.sim(DeviceA.Sim.out, 
                focus.quantity = "parameter",
                focus.quantity.detail = "sigma",
                x.of.interest = 50)

marginalize.sim(DeviceA.Sim.out, 
                focus.quantity = "quantile",
                focus.quantity.detail = 0.1,
                x.of.interest = 50)

marginalize.sim(DeviceA.Sim.out, 
                focus.quantity = "failure probability",
                focus.quantity.detail = 4268.884,
                x.of.interest = 50)

SMRD:::plot.marginals.sim(DeviceA.Sim.out,
                           focus.quantity = "parameter",
                           focus.quantity.detail = 1)

SMRD:::plot.marginals.sim(DeviceA.Sim.out,
                           focus.quantity = "parameter",
                           focus.quantity.detail = 1,
                           plot.type = "density")

SMRD:::plot.joint.sim(DeviceA.Sim.out, 
                       focus.quantity1 = "quantile",
                       focus.quantity.detail1 = 0.1,
                       x.of.interest1 = 50,
                       focus.quantity2 = "parameter",
                       focus.quantity.detail2 = 3,
                       x.of.interest2 = NA)

SMRD:::plot.joint.and.marginals.sim(DeviceA.Sim.out, 
                             focus.quantity1 = "quantile",
                             focus.quantity.detail1 = 0.1,
                             x.of.interest1 = 50,
                             focus.quantity2 = "parameter",
                             focus.quantity.detail2 = 3,
                             x.of.interest2 = NA)

summarize.simultation.results(DeviceA.Sim.out, 
                              "Marginal only", 
                              focus.quantity1 = "quantile",
                              focus.quantity.detail1 = 0.1,
                              x.of.interest1 = 50,
                              focus.quantity2 = "parameter",
                              focus.quantity.detail2 = 3,
                              x.of.interest2 = NA)

summarize.simultation.results(DeviceA.Sim.out, 
                              "Marginal only", 
                              focus.quantity1 = "quantile",
                              focus.quantity.detail1 = 0.1,
                              x.of.interest1 = 50,
                              focus.quantity2 = "parameter",
                              focus.quantity.detail2 = 3,
                              x.of.interest2 = NA,
                              plot.type = "density")

summarize.simultation.results(DeviceA.Sim.out, 
                              "Joint and Marginal", 
                              focus.quantity1 = "quantile",
                              focus.quantity.detail1 = 0.1,
                              x.of.interest1 = 50,
                              focus.quantity2 = "parameter",
                              focus.quantity.detail2 = 3,
                              x.of.interest2 = NA,
                              plot.type="density")

summarize.simultation.results(DeviceA.Sim.out, 
                              "Joint only", 
                              focus.quantity1 = "quantile",
                              focus.quantity.detail1 = 0.1,
                              x.of.interest1 = 50,
                              focus.quantity2 = "parameter",
                              focus.quantity.detail2 = 3,
                              x.of.interest2=NA)

two variable alt planning examples

These methods also apply for tests with more than two variables)

##  DeviceR example define two-variable planning values

DeviceR.Weibull.altpv  <-
  get.alt.plan.values.from.slope.and.point(distribution = "Weibull", 
                                           slope =  c(.6265,-.4),
                                           relationship = c("Arrhenius","Humidity"), 
                                           time.units = "Days", 
                                           censor.time = 183, 
                                           probs = c(.002), 
                                           accelvar = c(50,30), 
                                           beta = 1.667,
                                           use.conditions = c(50,30))

print(DeviceR.Weibull.altpv)

Define two-variable ALT test plans

DeviceR.altplan <- 
  get.alt.test.plan.direct(accel.variable.levels = cbind(c(80,80,120,120),
                                                         c(50,80,50,80)),
                           number.of.units = c(10,10,10,10),
                           censor.times = c(365,365,365,365),
                           accelvar.names = c("DegreesC","RH"),
                           describe.string = "DeviceR Simple Plan")

print(DeviceR.altplan)

Compute the fisher and vcv matrices

ALT.vcv(DeviceR.altplan,DeviceR.Weibull.altpv)

compute the large-sample approximate precision (R) factors

evaluate(DeviceR.altplan, DeviceR.Weibull.altpv,quantile.of.interest=c(.1,.5))

sample size needed for a given value of R

plot(DeviceR.altplan,
     DeviceR.Weibull.altpv)

SMRD:::plot.alt.sample.size(DeviceR.altplan,
                             DeviceR.Weibull.altpv)

## simulate the ALT plans with option to see detail on some experiments

DeviceR.sim.out <- ALTsim(DeviceR.altplan, 
                          DeviceR.Weibull.altpv, 
                          number.sim = 400,
                          show.detail.on = 5)

DeviceR.sim.out <- ALTsim(DeviceR.altplan, 
                          DeviceR.Weibull.altpv, 
                          number.sim = 400,
                          show.detail.on = 0)

##  simulate the ALT plans and plot summary

DeviceR.sim.out <- 
  simulate(DeviceR.altplan, 
           ALT.plan.values = DeviceR.Weibull.altpv,
           nsim = 400,
           show.detail.on = 5)

DeviceR.sim.out <- 
  simulate(DeviceR.altplan,
           ALT.plan.values = DeviceR.Weibull.altpv,
           nsim = 400,
           show.detail.on = 0)

##  plot the ALT simulation results

ALT.plot.time.v.x(DeviceR.sim.out)

ALT.plot.time.v.x(DeviceR.sim.out, 
                  focus.variable = 2)

ALT.plot.time.v.x(DeviceR.sim.out,
                  x.of.interest = c(25,10),
                  xlim = c(20,80))

ALT.plot.FracFail.v.Time(DeviceR.sim.out)

ALT.plot.FracFail.v.Time(DeviceR.sim.out,
                         x.of.interest = c(25,10),
                         xlim = c(100,10000))

##  look at joint and marginal disributions of focus quantities

summarize.simultation.results(DeviceR.sim.out, 
                              "Joint and Marginal", 
                              focus.quantity1 = "quantile",
                              focus.quantity.detail1 = 0.1,
                              x.of.interest1 = "60;20",
                              focus.quantity2 = "parameter",
                              focus.quantity.detail2 = 3,
                              x.of.interest2 = NA,
                              plot.type = "density")

summarize.simultation.results(DeviceR.sim.out, 
                              "Marginal only", 
                              focus.quantity1 = "quantile",
                              focus.quantity.detail1 = 0.1, 
                              x.of.interest1 = "60;20",
                              focus.quantity2 = "parameter",
                              focus.quantity.detail2 = 3,
                              x.of.interest2 = NA)

summarize.simultation.results(DeviceR.sim.out, 
                              "Marginal only", 
                              focus.quantity1 = "quantile",
                              focus.quantity.detail1 = 0.1,
                              x.of.interest1 = "60;20",
                              focus.quantity2 = "parameter",
                              focus.quantity.detail2 = 1,
                              x.of.interest2 = NA,
                              plot.type = "density")

summarize.simultation.results(DeviceR.sim.out, 
                              "Joint and Marginal", 
                              focus.quantity1 = "quantile",
                              focus.quantity.detail1 = 0.1,
                              x.of.interest1 = "60;20",
                              focus.quantity2 = "parameter",
                              focus.quantity.detail2 = 2,
                              x.of.interest2 = NA,
                              plot.type = "density")

summarize.simultation.results(DeviceR.sim.out,
                              "Joint only", 
                              focus.quantity1 = "quantile",
                              focus.quantity.detail1 = 0.1,
                              x.of.interest1 = "60;20",
                              focus.quantity2 = "parameter",
                              focus.quantity.detail2 = 4,
                              x.of.interest2 = NA)

NelsonInsulation example from page 350 of Nelson (1990) and Escobar and Meeker (1995) and Meeker and Escobar (1998) page 548

define two-variable planning values

NelsonInsulation.Weibull.altpv  <- 
  get.alt.plan.values.from.slope.and.point(distribution = "Weibull",
                                           slope= c(-12.28,-1.296),
                                           relationship = c("log","log"),
                                           accelvar.units = c("vpm","cm"),
                                           time.units = "Hours", 
                                           censor.time = 1000, 
                                           probs = c(1.8e-6),
                                           accelvar = c(80,.266), 
                                           beta = 1/.6734, 
                                           use.conditions = c(80,.266))

print(NelsonInsulation.Weibull.altpv)

##  define two-variable ALT test plans
levels = cbind(c(120,120,120,150,150,150,175,175,175,200,200,200),
               c(.163,.266,.355,.163,.266,.355,.163,.266,.355,.163,.266,.355))
units = c(11,18,11,8,14,8,8,14,8,11,18,11)
NelsonInsulation.altplan <- 
  get.alt.test.plan.direct(accel.variable.levels = levels,
                           number.of.units = units,
                           censor.times = rep(1000,12),
                           accelvar.names = c("Volts per mm","Thick"),
                           describe.string = "NelsonInsulation Factorial Plan")

print(NelsonInsulation.altplan)
print(NelsonInsulation.Weibull.altpv)

##  compute the fisher and vcv matrices

ALT.vcv(NelsonInsulation.altplan,
        NelsonInsulation.Weibull.altpv)

##  compute the large-sample approximate precision (R) factors

evaluate(NelsonInsulation.altplan, 
         NelsonInsulation.Weibull.altpv,
         quantile.of.interest = c(.1,.5))

evaluate(NelsonInsulation.altplan, 
         NelsonInsulation.Weibull.altpv,
         use.conditions = c(175,.163),
         quantile.of.interest = c(.1,.5))

evaluate(NelsonInsulation.altplan, 
         NelsonInsulation.Weibull.altpv,
         use.conditions = c(100,.1),
         quantile.of.interest = c(.1,.5))

##  sample size needed for a given value of R

SMRD:::plot.alt.sample.size(NelsonInsulation.altplan,
                             NelsonInsulation.Weibull.altpv)


NelsonInsulation.sim.out <- ALTsim(NelsonInsulation.altplan, 
                                   NelsonInsulation.Weibull.altpv,
                                   number.sim = 400,
                                   show.detail.on = 1)

ALT.plot.time.v.x(NelsonInsulation.sim.out)

ALT.plot.time.v.x(NelsonInsulation.sim.out,
                  x.of.interest = c(100,.1),
                  xlim = c(100,200))

ALT.plot.FracFail.v.Time(NelsonInsulation.sim.out)

ALT.plot.FracFail.v.Time(NelsonInsulation.sim.out,
                         x.of.interest = c(25,10), 
                         xlim = c(100,10000))

summarize.simultation.results(NelsonInsulation.sim.out, 
                              "Joint and Marginal", 
                              focus.quantity1 = "quantile",
                              focus.quantity.detail1 = 0.1,
                              x.of.interest1 = "100;.1",
                              focus.quantity2 = "parameter",
                              focus.quantity.detail2 = 3,
                              x.of.interest2 = NA,
                              plot.type = "density")

##  examples using basic simulation routine

test.matrix <- cbind(V1 = c(1,1,2,2),V2 = c(1,2,1,2))

altsim.out <- altsim(accel.var.mat = test.matrix, 
                     nsamsz = c(4,4,4,4), 
                     centim = c(40000,40000,40000,40000), 
                     theta = c(1,-24,5,1), 
                     distribution = "normal",
                     number.sim = 10, 
                     debug = F)

altsim.out <- altsim(accel.var.mat = as.matrix(c(1,2,3,4)), 
                     nsamsz = c(4,4,4,4), 
                     centim = c(200,200,200,200), 
                     theta = c(1,-2,3), 
                     distribution = "normal", 
                     number.sim = 5, 
                     debug = F, 
                     kprint = 0)

altsimReturnFrame(accel.var.mat = test.matrix, 
                  nsamsz = c(4,4,4,4),
                  centim = c(100,100,100,100),
                  theta = c(1,1,1,2),
                  distribution =" lognormal", 
                  relationship = c("linear","log"))

## Simulate a single ALT data set

altsimReturnFrame(accel.var.mat = test.matrix, 
                  nsamsz = c(4,4,4,4),
                  centim = c(100,100,100,100), 
                  theta = c(1,1,1,2), 
                  distribution = "lognormal", 
                  relationship = c("linear","log"))

## example of multiple minima

varone.grid(a = -0.9, 
            b1 = -7.9, 
            perc = 0.01, 
            xlab = "xiL", 
            ylab = "piL",
            xiL.lower = -1, 
            levels = c(.001,.01,0.10000000000000001, 0.20000000000000001, 0.5, 1, 2),
            dump = T)


Auburngrads/SMRD documentation built on Sept. 14, 2020, 2:21 a.m.