Nothing
datadist <- Normal(two_armed = FALSE)
H_0 <- PointMassPrior(.0, 1)
H_1 <- PointMassPrior(.4, 1)
ess <- ExpectedSampleSize(datadist, H_1)
power <- Power(datadist, H_1)
toer <- Power(datadist, H_0)
ad_initialD <- get_initial_design(
theta = .4,
alpha = .025,
beta = .2,
type_design = "two-stage",
dist = Normal(two_armed = FALSE)
)
opt <- minimize(
ess,
subject_to(
power >= 0.8,
toer <= .025
),
ad_initialD
)
design <- opt$design
# nVecs <- c(64L, 128L, 256L, 512L, 1024L)
nVecs <- c(100L)
# methods <- c("hcubature", "pcubature", "cuhre", "divonne", "suave", "vegas")
# divonne too slow??
methods <- c("hcubature", "pcubature", "cuhre", "suave", "vegas")
library(cubature)
nested_integrals <- function(smean2, n1, n2, mu, sigma, two_armed){
sapply(smean2,
\(x) integrate(
f1_1,
-Inf,
Inf,
rel.tol = 1e-5,
smean2 = x,
n1 = n1,
n2 = n2,
mu = mu,
sigma = sigma,
two_armed = two_armed
)$value)
}
start_time <- Sys.time()
invisible(replicate(1e1, integrate(nested_integrals, -Inf, Inf, rel.tol = 1e-5, n1 = 30, n2 = 30, mu = 0, sigma = 1, two_armed = FALSE)))
end_time <- Sys.time()
end_time - start_time
start_time <- Sys.time()
invisible(replicate(1e1, hcubature(
mf1_1,
lowerLimit = c(-Inf, -Inf),
upperLimit = c(Inf, Inf),
tol = 1e-7,
vectorInterface = TRUE,
n1 = 30, n2 = 30, mu = 0, sigma = 1, two_armed = FALSE
)))
end_time <- Sys.time()
end_time - start_time
results <- data.frame()
for (nVec in nVecs){
for (method in methods) {
t_start <- Sys.time()
res <- int_design_2(design, method = method, nVec = nVec, mu=0, sigma = 1, two_armed = FALSE)
t_end <- Sys.time()
results <- rbind(results, data.frame(
method = method,
nVec = nVec,
elapsed_time = t_end-t_start,
integral = res$futility_integral$integral + res$continuation_integral$integral + res$efficacy_integral$integral
))
}
}
results
start_time <- Sys.time()
invisible(replicate(1e4, integrate(dnorm, qnorm(1e-12, lower.tail = TRUE), qnorm(1e-12, lower.tail = FALSE), subdivisions = 1e3) ))
end_time <- Sys.time()
end_time - start_time
start_time <- Sys.time()
invisible(replicate(1e4, hcubature(dnorm, qnorm(1e-12, lower.tail = TRUE), qnorm(1e-12, lower.tail = FALSE), tol = .Machine$double.eps^0.25, vectorInterface = TRUE ) ))
end_time <- Sys.time()
end_time - start_time
relTol <- 1e-05
absTol <- 1e-12
maxEval <- 10^6
two_armed <- FALSE
mu <- 0
sigma <- 1
n1 <- n1(design, round=FALSE)
se1 <- (1L + two_armed) * sigma/sqrt(n1)
df1 <- (1L + two_armed) * (n1 - 1L)
n2_min <- n2(design, design@c1f, round=FALSE)
n2_max <- n2(design, design@c1e, round=FALSE)
n_min <- n1 + n2_min
n_max <- n1 + n2_max
df_min <- (1L + two_armed) * (n_min - 1L)
df_max <- (1L + two_armed) * (n_max - 1L)
se_min <- (1L + two_armed) * sigma/sqrt(n_min)
se_max <- (1L + two_armed) * sigma/sqrt(n_max)
mf1 <- \(x, n1, mu, sigma, two_armed) {
n <- n1 + n2(design, x[3,], round=FALSE)
mtf1_2(x, n, n1, mu, sigma, two_armed)
print(mtf1_2(x, n, n1, mu, sigma, two_armed))
}
min_norm <- min(qnorm(absTol, mean = mu, sd=se_min, lower.tail = TRUE),
qnorm(absTol, mean = mu, sd=se_max, lower.tail = TRUE))
max_norm <- min(qnorm(absTol, mean = mu, sd=se_min, lower.tail = FALSE),
qnorm(absTol, mean = mu, sd=se_max, lower.tail = FALSE))
min_chisq <- min(qchisq(absTol, df = df_min, lower.tail = TRUE) * sigma^(2L) / df_min,
qchisq(absTol, df = df_max, lower.tail = TRUE) * sigma^(2L) / df_max)
max_chisq <- max(qchisq(absTol, df = df_min, lower.tail = FALSE) * sigma^(2L) / df_min,
qchisq(absTol, df = df_max, lower.tail = FALSE) * sigma^(2L) / df_max)
library(cubature)
start_t <- Sys.time()
a <- cubintegrate(
f = mf1,
lower = c(min_norm,
min_chisq,
design@c1f,
qchisq(absTol, df = df1, lower.tail = TRUE) * sigma^(2L) / df1),
upper = c(max_norm,
max_chisq,
design@c1e,
qchisq(absTol, df = df1, lower.tail = FALSE) * sigma^(2L) / df1),
fDim = 1L,
method = "hcubature",
nVec = 1073741824L,
relTol = 1e-4,
absTol = absTol,
maxEval =10^9,
n1 = n1, mu = mu, sigma = sigma, two_armed = two_armed
)
end_t <- Sys.time()
end_t - start_t
library(cubature)
# cubintegrate(\(x) 1, 0, 1, method="vegas", stateFile = "a.txt")
cuhre(\(x) {1}, lowerLimit = 0, upperLimit = 1,
flags = list(verbose = 0L, final = 1L, smooth = 0L, keep_state = 1L, load_state = 0L,
level = 0L),
stateFile = "a.txt")
cubintegrate(
f = mf1,
lower = c(min_norm,
min_chisq,
design@c1f,
qchisq(absTol, df = df1, lower.tail = TRUE) * sigma^(2L) / df1),
upper = c(max_norm,
max_chisq,
design@c1e,
qchisq(absTol, df = df1, lower.tail = FALSE) * sigma^(2L) / df1),
fDim = 1L,
method = "vegas",
relTol = 1e-2,
absTol = 1e-2,
maxEval = maxEval,
nVec = 100L,
flags = list(keep_state = TRUE),
stateFile = "a.txt",
n1, mu, sigma, two_armed
)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.