Skip to contents

Test 1: verify by gs_power_npe

new version

x <- gs_design_npe(theta = c(.1, .2, .3), info = (1:3) * 40, beta = 0.1,
                   upper = gs_spending_bound,
                   upar = list(sf = gsDesign::sfLDOF, total_spend = 0.025, param = NULL, timing = NULL),
                   lower = gs_spending_bound,
                   lpar = list(sf = gsDesign::sfLDOF, total_spend = 0.025, param = NULL, timing = NULL), binding = TRUE)
x %>% gt()
Analysis Bound Z Probability Probability0 theta IF info info0 info1
1 Upper 3.7103029 0.0010356481 0.0001035057 0.1 0.3333333 39.75157 39.75157 39.75157
1 Lower -3.0798144 0.0001035057 0.0010356481 0.1 0.3333333 39.75157 39.75157 39.75157
2 Upper 2.5114338 0.2332751723 0.0060483891 0.2 0.6666667 79.50314 79.50314 79.50314
2 Lower -0.7281431 0.0060483891 0.2332751723 0.2 0.6666667 79.50314 79.50314 79.50314
3 Upper 1.9930482 0.8999999998 0.0250000000 0.3 1.0000000 119.25471 119.25471 119.25471
3 Lower 1.2830660 0.0250000000 0.8999999998 0.3 1.0000000 119.25471 119.25471 119.25471

The power is 0.9. If we re-use these bounds under alternate hypothesis, then we can get a power close to 0.9.

gs_power_npe(theta = c(.1, .2, .3),info = (1:3) * 40,
             upper = gs_b, upar = (x %>% filter(Bound == "Upper"))$Z,
             lower = gs_b, lpar = -(x %>% filter(Bound == "Upper"))$Z,
             binding = TRUE # Always use binding = TRUE for power calculations
             ) %>% gt()
Analysis Bound Z Probability theta theta1 IF info info0 info1
1 Upper 3.710303 1.042508e-03 0.1 0.1 0.3333333 40 40 40
2 Upper 2.511434 2.349812e-01 0.2 0.2 0.6666667 80 80 80
3 Upper 1.993048 9.020716e-01 0.3 0.3 1.0000000 120 120 120
1 Lower -3.710303 7.035242e-06 0.1 0.1 0.3333333 40 40 40
2 Lower -2.511434 1.510031e-05 0.2 0.2 0.6666667 80 80 80
3 Lower -1.993048 1.512598e-05 0.3 0.3 1.0000000 120 120 120

old version

x <- gs_design_npe_(theta = c(.1, .2, .3), info = (1:3) * 40, beta = 0.1,
                   upper = gs_spending_bound,
                   upar = list(sf = gsDesign::sfLDOF, total_spend = 0.025, param = NULL, timing = NULL),
                   lower = gs_spending_bound,
                   lpar = list(sf = gsDesign::sfLDOF, total_spend = 0.025, param = NULL, timing = NULL), binding = TRUE)
x %>% gt()
Analysis Bound Z Probability theta theta1 info info0 info1
1 Upper 3.7103029 0.0010356481 0.1 0.1 39.75157 39.75157 39.75157
2 Upper 2.5114338 0.2332751723 0.2 0.2 79.50314 79.50314 79.50314
3 Upper 1.9930482 0.8999999998 0.3 0.3 119.25471 119.25471 119.25471
1 Lower -3.0798144 0.0001035057 0.1 0.1 39.75157 39.75157 39.75157
2 Lower -0.7281431 0.0060483891 0.2 0.2 79.50314 79.50314 79.50314
3 Lower 1.2830660 0.0250000000 0.3 0.3 119.25471 119.25471 119.25471

The power is 0.9. If we re-use these bounds under alternate hypothesis, then we can get a power close to 0.9.

gs_power_npe_(theta = c(.1, .2, .3),info = (1:3) * 40,
             upper = gs_b, upar = (x %>% filter(Bound == "Upper"))$Z,
             lower = gs_b, lpar = -(x %>% filter(Bound == "Upper"))$Z,
             binding = TRUE # Always use binding = TRUE for power calculations
             ) %>% gt()
Analysis Bound Z Probability theta theta1 info info0 info1
1 Upper 3.710303 1.042508e-03 0.1 0.1 40 40 40
2 Upper 2.511434 2.349812e-01 0.2 0.2 80 80 80
3 Upper 1.993048 9.020716e-01 0.3 0.3 120 120 120
1 Lower -3.710303 7.035242e-06 0.1 0.1 40 40 40
2 Lower -2.511434 1.510031e-05 0.2 0.2 80 80 80
3 Lower -1.993048 1.512598e-05 0.3 0.3 120 120 120

Test 1: examples in spec

difference of proportions

# Lachin book p71 
pc <- .28            # Control response rate
pe <- .40            # Experimental response rate
p0 <- (pc + pe) / 2  # Ave response rate under H0

# Information per increment of 1 in sample size
info0 <- 1 / (p0 * (1 - p0) * 4)
info <- 1 / (pc * (1 - pc) * 2 + pe * (1 - pe) * 2)

# Result should round up to next even number = 652
# Divide information needed under H1 by information per patient added
x1_a <- gs_design_npe(theta = pe - pc, info = info, info0 = info0, info_scale = 0) %>% mutate(`Computated from` = "new version", `Info scale` = 0)
x1_b <- gs_design_npe(theta = pe - pc, info = info, info0 = info0, info_scale = 1) %>% mutate(`Computated from` = "new version", `Info scale` = 1)
x1_c <- gs_design_npe(theta = pe - pc, info = info, info0 = info0, info_scale = 2) %>% mutate(`Computated from` = "new version", `Info scale` = 2)

x2 <- gs_design_npe_(theta = pe - pc, info = info, info0 = info0) %>% mutate(`Computated from` = "old version")
Analysis Bound Z Probability Probability0 theta info info0 info1 IF Computated from Info scale
1 Upper 1.959964 0.9 0.025 0.12 729.6822 729.6822 729.6822 1 new version 0
1 Upper 1.959964 0.9 0.025 0.12 729.6822 729.6822 729.6822 1 new version 1
1 Upper 1.959964 0.9 0.025 0.12 736.8641 725.0428 736.8641 1 new version 2
1 Upper 1.959964 0.9 NA 0.12 736.8641 725.0428 NA NA old version NA

fixed design

info = info0 = info1

x1_a <- gs_design_npe(theta = c(.1, .2, .3), 
                      info = (1:3) * 80, info_scale = 0,
                      upper = gs_b, upar = gsDesign::gsDesign(k = 3, sfu = gsDesign::sfLDOF)$upper$bound,
                      lower = gs_b, lpar = c(-1, 0, 0)) %>% mutate(`Computated from` = "new version", `Info scale` = 0)
x1_b <- gs_design_npe(theta = c(.1, .2, .3), 
                      info = (1:3) * 80, info_scale = 1,
                      upper = gs_b, upar = gsDesign::gsDesign(k = 3, sfu = gsDesign::sfLDOF)$upper$bound,
                      lower = gs_b, lpar = c(-1, 0, 0)) %>% mutate(`Computated from` = "new version", `Info scale` = 1)
x1_c <- gs_design_npe(theta = c(.1, .2, .3), 
                      info = (1:3) * 80, info_scale = 2,
                      upper = gs_b, upar = gsDesign::gsDesign(k = 3, sfu = gsDesign::sfLDOF)$upper$bound,
                      lower = gs_b, lpar = c(-1, 0, 0)) %>% mutate(`Computated from` = "new version", `Info scale` = 2)
x2 <- gs_design_npe_(theta = c(.1, .2, .3), 
                     info = (1:3) * 80,
                     upper = gs_b, upar = gsDesign::gsDesign(k = 3, sfu = gsDesign::sfLDOF)$upper$bound,
                     lower = gs_b, lpar = c(-1, 0, 0)) %>% mutate(`Computated from` = "old version")
Z Probability Probability0 theta IF info info0 info1 Computated from Info scale theta1
1 - Upper
3.710303 0.001201556 0.0001035057 0.1 0.3333333 45.56536 45.56536 45.56536 new version 0 NA
3.710303 0.001201556 0.0001035057 0.1 0.3333333 45.56536 45.56536 45.56536 new version 1 NA
3.710303 0.001201556 0.0001035057 0.1 0.3333333 45.56536 45.56536 45.56536 new version 2 NA
3.710303 0.001201556 NA 0.1 NA 45.56536 45.56536 45.56536 old version NA 0.1
1 - Lower
-1.000000 0.046965036 0.1586552539 0.1 0.3333333 45.56536 45.56536 45.56536 new version 0 NA
-1.000000 0.046965036 0.1586552539 0.1 0.3333333 45.56536 45.56536 45.56536 new version 1 NA
-1.000000 0.046965036 0.1586552539 0.1 0.3333333 45.56536 45.56536 45.56536 new version 2 NA
-1.000000 0.046965036 NA 0.1 NA 45.56536 45.56536 45.56536 old version NA 0.1
2 - Upper
2.511427 0.273421987 0.0060483983 0.2 0.6666667 91.13072 91.13072 91.13072 new version 0 NA
2.511427 0.273421987 0.0060483983 0.2 0.6666667 91.13072 91.13072 91.13072 new version 1 NA
2.511427 0.273421987 0.0060483983 0.2 0.6666667 91.13072 91.13072 91.13072 new version 2 NA
2.511427 0.273421987 NA 0.2 NA 91.13072 91.13072 91.13072 old version NA 0.2
2 - Lower
0.000000 0.061921702 0.5125857748 0.2 0.6666667 91.13072 91.13072 91.13072 new version 0 NA
0.000000 0.061921702 0.5125857748 0.2 0.6666667 91.13072 91.13072 91.13072 new version 1 NA
0.000000 0.061921702 0.5125857748 0.2 0.6666667 91.13072 91.13072 91.13072 new version 2 NA
0.000000 0.061921702 NA 0.2 NA 91.13072 91.13072 91.13072 old version NA 0.2
3 - Upper
1.993048 0.900000000 0.0249302430 0.3 1.0000000 136.69609 136.69609 136.69609 new version 0 NA
1.993048 0.900000000 0.0249302430 0.3 1.0000000 136.69609 136.69609 136.69609 new version 1 NA
1.993048 0.900000000 0.0249302430 0.3 1.0000000 136.69609 136.69609 136.69609 new version 2 NA
1.993048 0.900000000 NA 0.3 NA 136.69609 136.69609 136.69609 old version NA 0.3
3 - Lower
0.000000 0.061926296 0.6063477109 0.3 1.0000000 136.69609 136.69609 136.69609 new version 0 NA
0.000000 0.061926296 0.6063477109 0.3 1.0000000 136.69609 136.69609 136.69609 new version 1 NA
0.000000 0.061926296 0.6063477109 0.3 1.0000000 136.69609 136.69609 136.69609 new version 2 NA
0.000000 0.061926296 NA 0.3 NA 136.69609 136.69609 136.69609 old version NA 0.3

info != info0 != info1

x1_a <- gs_design_npe(theta = c(.1, .2, .3), 
                      info = (1:3) * 80, info0 = (1:3) * 90 + 10, info1 = (1:3) * 70 - 5, info_scale = 0,
                      upper = gs_b, upar = gsDesign::gsDesign(k = 3, sfu = gsDesign::sfLDOF)$upper$bound,
                      lower = gs_b, lpar = c(-1, 0, 0)) %>% mutate(`Computated from` = "new version", `Info scale` = 0)
x1_b <- gs_design_npe(theta = c(.1, .2, .3), 
                      info = (1:3) * 80, info0 = (1:3) * 90+ 10, info1 = (1:3) * 70 - 5, info_scale = 1,
                      upper = gs_b, upar = gsDesign::gsDesign(k = 3, sfu = gsDesign::sfLDOF)$upper$bound,
                      lower = gs_b, lpar = c(-1, 0, 0)) %>% mutate(`Computated from` = "new version", `Info scale` = 1)
x1_c <- gs_design_npe(theta = c(.1, .2, .3), 
                      info = (1:3) * 80, info0 = (1:3) * 90+ 10, info1 = (1:3) * 70 - 5, info_scale = 2,
                      upper = gs_b, upar = gsDesign::gsDesign(k = 3, sfu = gsDesign::sfLDOF)$upper$bound,
                      lower = gs_b, lpar = c(-1, 0, 0)) %>% mutate(`Computated from` = "new version", `Info scale` = 2)
x2 <- gs_design_npe_(theta = c(.1, .2, .3), 
                     info = (1:3) * 80, info0 = (1:3) * 90+ 10, info1 = (1:3) * 70 - 5, 
                     upper = gs_b, upar = gsDesign::gsDesign(k = 3, sfu = gsDesign::sfLDOF)$upper$bound,
                     lower = gs_b, lpar = c(-1, 0, 0)) %>% mutate(`Computated from` = "old version")
Z Probability Probability0 theta IF info info0 info1 Computated from Info scale theta1
1 - Upper
3.710303 0.001278699 0.0001035057 0.1 0.3571429 48.14094 48.14094 48.14094 new version 0 NA
3.710303 0.001149869 0.0001035057 0.1 0.3170732 43.79604 43.79604 43.79604 new version 1 NA
3.710303 0.004048062 0.0004523565 0.1 0.3333333 44.96523 56.20654 36.53425 new version 2 NA
3.710303 0.004048062 NA 0.1 NA 44.96523 56.20654 36.53425 old version NA 0.1
1 - Lower
-1.000000 0.045148157 0.1586552539 0.1 0.3571429 48.14094 48.14094 48.14094 new version 0 NA
-1.000000 0.048277869 0.1586552539 0.1 0.3170732 43.79604 43.79604 43.79604 new version 1 NA
-1.000000 0.058792818 0.1855466848 0.1 0.3333333 44.96523 56.20654 36.53425 new version 2 NA
-1.000000 0.058792818 NA 0.1 NA 44.96523 56.20654 36.53425 old version NA 0.1
2 - Upper
2.511427 0.274637453 0.0060442562 0.2 0.6785714 91.46778 91.46778 91.46778 new version 0 NA
2.511427 0.272791297 0.0060513253 0.2 0.6585366 90.96101 90.96101 90.96101 new version 1 NA
2.511427 0.272107963 0.0063972490 0.2 0.6666667 89.93046 106.79242 75.87883 new version 2 NA
2.511427 0.272107963 NA 0.2 NA 89.93046 106.79242 75.87883 old version NA 0.2
2 - Lower
0.000000 0.059626767 0.5110855741 0.2 0.6785714 91.46778 91.46778 91.46778 new version 0 NA
0.000000 0.063543969 0.5136901172 0.2 0.6585366 90.96101 90.96101 90.96101 new version 1 NA
0.000000 0.074240014 0.5394772057 0.2 0.6666667 89.93046 106.79242 75.87883 new version 2 NA
0.000000 0.074240014 NA 0.2 NA 89.93046 106.79242 75.87883 old version NA 0.2
3 - Upper
1.993048 0.899999988 0.0248602069 0.3 1.0000000 134.79463 134.79463 134.79463 new version 0 NA
1.993048 0.900000000 0.0249748131 0.3 1.0000000 138.12597 138.12597 138.12597 new version 1 NA
1.993048 0.899999920 0.0252790938 0.3 1.0000000 134.89569 157.37831 115.22340 new version 2 NA
1.993048 0.899999920 NA 0.3 NA 134.89569 157.37831 115.22340 old version NA 0.3
3 - Lower
0.000000 0.059631346 0.6032976877 0.3 1.0000000 134.79463 134.79463 134.79463 new version 0 NA
0.000000 0.063548525 0.6084787927 0.3 1.0000000 138.12597 138.12597 138.12597 new version 1 NA
0.000000 0.074245152 0.6332391417 0.3 1.0000000 134.89569 157.37831 115.22340 new version 2 NA
0.000000 0.074245152 NA 0.3 NA 134.89569 157.37831 115.22340 old version NA 0.3

futility at IA1; efficacy only at IA2 +FA

x1_a <- gs_design_npe(theta = c(.1, .2, .3),
                      info = (1:3) * 40, info0 = (1:3) * 40, info_scale = 0,
                      upper = gs_spending_bound, upar = list(sf = gsDesign::sfLDOF, total_spend = 0.025, param = NULL, timing = NULL),
                      lower = gs_b, lpar = c(-1, -Inf, -Inf),
                      test_upper = c(FALSE, TRUE, TRUE)) %>% mutate(`Computated from` = "new version", `Info scale` = 0)

x1_b <- gs_design_npe(theta = c(.1, .2, .3),
                      info = (1:3) * 40, info0 = (1:3) * 40, info_scale = 1,
                      upper = gs_spending_bound, upar = list(sf = gsDesign::sfLDOF, total_spend = 0.025, param = NULL, timing = NULL),
                      lower = gs_b, lpar = c(-1, -Inf, -Inf),
                      test_upper = c(FALSE, TRUE, TRUE)) %>% mutate(`Computated from` = "new version", `Info scale` = 1)

x1_c <- gs_design_npe(theta = c(.1, .2, .3),
                      info = (1:3) * 40, info0 = (1:3) * 40, info_scale = 2,
                      upper = gs_spending_bound, upar = list(sf = gsDesign::sfLDOF, total_spend = 0.025, param = NULL, timing = NULL),
                      lower = gs_b, lpar = c(-1, -Inf, -Inf),
                      test_upper = c(FALSE, TRUE, TRUE)) %>% mutate(`Computated from` = "new version", `Info scale` = 2)

x2 <- gs_design_npe_(theta = c(.1, .2, .3),
                    info = (1:3) * 40, info0 = (1:3) * 40, 
                    upper = gs_spending_bound, upar = list(sf = gsDesign::sfLDOF, total_spend = 0.025, param = NULL, timing = NULL),
                    lower = gs_b, lpar =  c(-1, -Inf, -Inf),
                    test_upper = c(FALSE, TRUE, TRUE)) %>% mutate(`Computated from` = "old version", `Info scale` = 0)
x1_a %>% 
  union_all(x1_b) %>% 
  union_all(x1_c) %>% 
  union_all(x2) %>% 
  arrange(Analysis) %>% 
  group_by(Analysis, Bound) %>% 
  gt() %>% 
  tab_style(
    style = list(cell_fill(color = "#d3edeb")),
    locations = cells_body(rows = `Computated from` == "old version"))
Z Probability Probability0 theta IF info info0 info1 Computated from Info scale theta1
1 - Upper
Inf 0.00000000 0.000000000 0.1 0.3333333 44.55554 44.55554 44.55554 new version 0 NA
Inf 0.00000000 0.000000000 0.1 0.3333333 44.55554 44.55554 44.55554 new version 1 NA
Inf 0.00000000 0.000000000 0.1 0.3333333 44.55554 44.55554 44.55554 new version 2 NA
Inf 0.00000000 NA 0.1 NA 44.55554 44.55554 44.55554 old version 0 0.1
1 - Lower
-1.000000 0.04770758 0.158655254 0.1 0.3333333 44.55554 44.55554 44.55554 new version 0 NA
-1.000000 0.04770758 0.158655254 0.1 0.3333333 44.55554 44.55554 44.55554 new version 1 NA
-1.000000 0.04770758 0.158655254 0.1 0.3333333 44.55554 44.55554 44.55554 new version 2 NA
-1.000000 0.04770758 NA 0.1 NA 44.55554 44.55554 44.55554 old version 0 0.1
2 - Upper
2.509315 0.26707709 0.006048281 0.2 0.6666667 89.11107 89.11107 89.11107 new version 0 NA
2.509315 0.26707709 0.006048281 0.2 0.6666667 89.11107 89.11107 89.11107 new version 1 NA
2.509315 0.26707709 0.006048281 0.2 0.6666667 89.11107 89.11107 89.11107 new version 2 NA
2.509315 0.26707709 NA 0.2 NA 89.11107 89.11107 89.11107 old version 0 0.2
2 - Lower
-Inf 0.04770758 0.158655254 0.2 0.6666667 89.11107 89.11107 89.11107 new version 0 NA
-Inf 0.04770758 0.158655254 0.2 0.6666667 89.11107 89.11107 89.11107 new version 1 NA
-Inf 0.04770758 0.158655254 0.2 0.6666667 89.11107 89.11107 89.11107 new version 2 NA
-Inf 0.04770758 NA 0.2 NA 89.11107 89.11107 89.11107 old version 0 0.2
3 - Upper
1.992888 0.90000000 0.024947293 0.3 1.0000000 133.66661 133.66661 133.66661 new version 0 NA
1.992888 0.90000000 0.024947293 0.3 1.0000000 133.66661 133.66661 133.66661 new version 1 NA
1.992888 0.90000000 0.024947293 0.3 1.0000000 133.66661 133.66661 133.66661 new version 2 NA
1.992888 0.90000000 NA 0.3 NA 133.66661 133.66661 133.66661 old version 0 0.3
3 - Lower
-Inf 0.04770758 0.158655254 0.3 1.0000000 133.66661 133.66661 133.66661 new version 0 NA
-Inf 0.04770758 0.158655254 0.3 1.0000000 133.66661 133.66661 133.66661 new version 1 NA
-Inf 0.04770758 0.158655254 0.3 1.0000000 133.66661 133.66661 133.66661 new version 2 NA
-Inf 0.04770758 NA 0.3 NA 133.66661 133.66661 133.66661 old version 0 0.3

spending bounds

x1_a <- gs_design_npe(theta = c(.1, .2, .3), 
                      info = (1:3) * 40, info0 = (1:3) * 50, info_scale = 0,
                      upper = gs_spending_bound,
                      upar = list(sf = gsDesign::sfLDOF, total_spend = 0.025, param = NULL, timing = NULL),
                      lower = gs_spending_bound,
                      lpar = list(sf = gsDesign::sfHSD, total_spend = 0.1, param = -1, timing = NULL)) %>% mutate(`Computated from` = "new version", `Info scale` = 0)

x1_b <- gs_design_npe(theta = c(.1, .2, .3), 
                      info = (1:3) * 40, info0 = (1:3) * 50, info_scale = 1,
                      upper = gs_spending_bound,
                      upar = list(sf = gsDesign::sfLDOF, total_spend = 0.025, param = NULL, timing = NULL),
                      lower = gs_spending_bound,
                      lpar = list(sf = gsDesign::sfHSD, total_spend = 0.1, param = -1, timing = NULL)) %>% mutate(`Computated from` = "new version", `Info scale` = 1)

x1_c <- gs_design_npe(theta = c(.1, .2, .3), 
                      info = (1:3) * 40, info0 = (1:3) * 50, info_scale = 2,
                      upper = gs_spending_bound,
                      upar = list(sf = gsDesign::sfLDOF, total_spend = 0.025, param = NULL, timing = NULL),
                      lower = gs_spending_bound,
                      lpar = list(sf = gsDesign::sfHSD, total_spend = 0.1, param = -1, timing = NULL)) %>% mutate(`Computated from` = "new version", `Info scale` = 2)

x2 <- gs_design_npe_(theta = c(.1, .2, .3), 
                     info = (1:3) * 40, info0 = (1:3) * 50, 
                     upper = gs_spending_bound,
                     upar = list(sf = gsDesign::sfLDOF, total_spend = 0.025, param = NULL, timing = NULL),
                     lower = gs_spending_bound,
                     lpar = list(sf = gsDesign::sfHSD, total_spend = 0.1, param = -1, timing = NULL)) %>% mutate(`Computated from` = "old version")
Z Probability Probability0 theta IF info info0 info1 Computated from Info scale theta1
1 - Upper
3.7103029 0.001136317 0.0001035057 0.1 0.3333333 43.32605 43.32605 43.32605 new version 0 NA
3.7103029 0.001136317 0.0001035057 0.1 0.3333333 43.32605 43.32605 43.32605 new version 1 NA
3.7103029 0.003850782 0.0004523565 0.1 0.3333333 42.73434 53.41793 42.73434 new version 2 NA
3.7103029 0.003850782 NA 0.1 NA 42.73434 53.41793 42.73434 old version NA 0.1
1 - Lower
-1.3367329 0.023023722 0.0906549246 0.1 0.3333333 43.32605 43.32605 43.32605 new version 0 NA
-1.3367329 0.023023722 0.0906549246 0.1 0.3333333 43.32605 43.32605 43.32605 new version 1 NA
-1.3412431 0.031915434 0.1151387639 0.1 0.3333333 42.73434 53.41793 42.73434 new version 2 NA
-1.3412431 0.031915434 NA 0.1 NA 42.73434 53.41793 42.73434 old version NA 0.1
2 - Upper
2.5114338 0.257938878 0.0060483767 0.2 0.6666667 86.65211 86.65211 86.65211 new version 0 NA
2.5114338 0.257938878 0.0060483767 0.2 0.6666667 86.65211 86.65211 86.65211 new version 1 NA
2.5114338 0.256567802 0.0063972278 0.2 0.6666667 85.46869 106.83586 85.46869 new version 2 NA
2.5114338 0.256567802 NA 0.2 NA 85.46869 106.83586 85.46869 old version NA 0.2
2 - Lower
0.1455293 0.055155914 0.5605209895 0.2 0.6666667 86.65211 86.65211 86.65211 new version 0 NA
0.1455293 0.055155914 0.5605209895 0.2 0.6666667 86.65211 86.65211 86.65211 new version 1 NA
0.1327725 0.064047626 0.5807591379 0.2 0.6666667 85.46869 106.83586 85.46869 new version 2 NA
0.1327725 0.064047626 NA 0.2 NA 85.46869 106.83586 85.46869 old version NA 0.2
3 - Upper
1.9930511 0.900000000 0.0249444277 0.3 1.0000000 129.97816 129.97816 129.97816 new version 0 NA
1.9930511 0.900000000 0.0249444277 0.3 1.0000000 129.97816 129.97816 129.97816 new version 1 NA
1.9930511 0.900000001 0.0252963129 0.3 1.0000000 128.20303 160.25379 128.20303 new version 2 NA
1.9930511 0.900000001 NA 0.3 NA 128.20303 160.25379 128.20303 old version NA 0.3
3 - Lower
1.9930488 0.100000000 0.9750558052 0.3 1.0000000 129.97816 129.97816 129.97816 new version 0 NA
1.9930488 0.100000000 0.9750558052 0.3 1.0000000 129.97816 129.97816 129.97816 new version 1 NA
1.9696010 0.108891712 0.9990450865 0.3 1.0000000 128.20303 160.25379 128.20303 new version 2 NA
1.9696010 0.108891712 NA 0.3 NA 128.20303 160.25379 128.20303 old version NA 0.3

2-sided symmetric spend

x1_a <- gs_design_npe(theta = c(.1, .2, .3),
                      info = (1:3) * 40, info_scale = 0,
                      binding = TRUE,
                      upper = gs_spending_bound,
                      upar = list(sf = gsDesign::sfLDOF, total_spend = 0.025, param = NULL, timing = NULL),
                      lower = gs_spending_bound,
                      lpar = list(sf = gsDesign::sfLDOF, total_spend = 0.025, param = NULL, timing = NULL)) %>% mutate(`Computated from` = "new version", `Info scale` = 0)

x1_b <- gs_design_npe(theta = c(.1, .2, .3),
                      info = (1:3) * 40, info_scale = 1,
                      binding = TRUE,
                      upper = gs_spending_bound,
                      upar = list(sf = gsDesign::sfLDOF, total_spend = 0.025, param = NULL, timing = NULL),
                      lower = gs_spending_bound,
                      lpar = list(sf = gsDesign::sfLDOF, total_spend = 0.025, param = NULL, timing = NULL)) %>% mutate(`Computated from` = "new version", `Info scale` = 1)

x1_c <- gs_design_npe(theta = c(.1, .2, .3),
                      info = (1:3) * 40, info_scale = 2,
                      binding = TRUE,
                      upper = gs_spending_bound,
                      upar = list(sf = gsDesign::sfLDOF, total_spend = 0.025, param = NULL, timing = NULL),
                      lower = gs_spending_bound,
                      lpar = list(sf = gsDesign::sfLDOF, total_spend = 0.025, param = NULL, timing = NULL)) %>% mutate(`Computated from` = "new version", `Info scale` = 2)

x2 <- gs_design_npe_(theta = c(.1, .2, .3),
                      info = (1:3) * 40, 
                      binding = TRUE,
                      upper = gs_spending_bound,
                      upar = list(sf = gsDesign::sfLDOF, total_spend = 0.025, param = NULL, timing = NULL),
                      lower = gs_spending_bound,
                      lpar = list(sf = gsDesign::sfLDOF, total_spend = 0.025, param = NULL, timing = NULL)) %>% mutate(`Computated from` = "old version")
Z Probability Probability0 theta IF info info0 info1 Computated from Info scale theta1
1 - Upper
3.7103029 0.0010356481 0.0001035057 0.1 0.3333333 39.75157 39.75157 39.75157 new version 0 NA
3.7103029 0.0010356481 0.0001035057 0.1 0.3333333 39.75157 39.75157 39.75157 new version 1 NA
3.7103029 0.0010356481 0.0001035057 0.1 0.3333333 39.75157 39.75157 39.75157 new version 2 NA
3.7103029 0.0010356481 NA 0.1 NA 39.75157 39.75157 39.75157 old version NA 0.1
1 - Lower
-3.0798144 0.0001035057 0.0010356481 0.1 0.3333333 39.75157 39.75157 39.75157 new version 0 NA
-3.0798144 0.0001035057 0.0010356481 0.1 0.3333333 39.75157 39.75157 39.75157 new version 1 NA
-3.0798144 0.0001035057 0.0010356481 0.1 0.3333333 39.75157 39.75157 39.75157 new version 2 NA
-3.0798144 0.0001035057 NA 0.1 NA 39.75157 39.75157 39.75157 old version NA 0.1
2 - Upper
2.5114338 0.2332751723 0.0060483891 0.2 0.6666667 79.50314 79.50314 79.50314 new version 0 NA
2.5114338 0.2332751723 0.0060483891 0.2 0.6666667 79.50314 79.50314 79.50314 new version 1 NA
2.5114338 0.2332751723 0.0060483891 0.2 0.6666667 79.50314 79.50314 79.50314 new version 2 NA
2.5114338 0.2332751723 NA 0.2 NA 79.50314 79.50314 79.50314 old version NA 0.2
2 - Lower
-0.7281431 0.0060483891 0.2332751723 0.2 0.6666667 79.50314 79.50314 79.50314 new version 0 NA
-0.7281431 0.0060483891 0.2332751723 0.2 0.6666667 79.50314 79.50314 79.50314 new version 1 NA
-0.7281431 0.0060483891 0.2332751723 0.2 0.6666667 79.50314 79.50314 79.50314 new version 2 NA
-0.7281431 0.0060483891 NA 0.2 NA 79.50314 79.50314 79.50314 old version NA 0.2
3 - Upper
1.9930482 0.8999999998 0.0250000000 0.3 1.0000000 119.25471 119.25471 119.25471 new version 0 NA
1.9930482 0.8999999998 0.0250000000 0.3 1.0000000 119.25471 119.25471 119.25471 new version 1 NA
1.9930482 0.8999999998 0.0250000000 0.3 1.0000000 119.25471 119.25471 119.25471 new version 2 NA
1.9930482 0.8999999998 NA 0.3 NA 119.25471 119.25471 119.25471 old version NA 0.3
3 - Lower
1.2830660 0.0250000000 0.8999999998 0.3 1.0000000 119.25471 119.25471 119.25471 new version 0 NA
1.2830660 0.0250000000 0.8999999998 0.3 1.0000000 119.25471 119.25471 119.25471 new version 1 NA
1.2830660 0.0250000000 0.8999999998 0.3 1.0000000 119.25471 119.25471 119.25471 new version 2 NA
1.2830660 0.0250000000 NA 0.3 NA 119.25471 119.25471 119.25471 old version NA 0.3