inst/doc/cDesign.R

## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  fig.height = 4,
  fig.width = 8
)

## -----------------------------------------------------------------------------
library("safestats")
eColours <- c("#1F78B4E6", "#A6CEE380")
lineColour <- "#DAA52066"
histInnerColour <- eColours[2]
histBorderColour <- eColours[1]

## ----eval=FALSE---------------------------------------------------------------
# alpha <- 0.05
# power <- 0.8
# meanDiffMin <- 10
# sigma <- 12
# 
# designObj <- designSaviZ(meanDiffMin=meanDiffMin, power=power,
#                          testType="twoSample",
#                          sigma=sigma, seed=1)
# designObj

## -----------------------------------------------------------------------------
nonLocalMomentDistribution <- function(delta, g) {
  delta^2/g*dnorm(delta, mean = 0, sd=sqrt(g))
}

deltaDomain <- seq(-2, 2, by=0.01)
deltaMin <- 10/12

momCurve <- nonLocalMomentDistribution(deltaDomain, g=deltaMin^2/2)

oldPar <- setSafeStatsPlotOptionsAndReturnOldOnes()
plot(deltaDomain, momCurve, type="l", lwd=2, 
     xlab="Standardised effect size",
     ylab="Density")
lines(c(10/12, 10/12), c(0, 1), lty=3)
lines(-c(10/12, 10/12), c(0, 1), lty=3)

## ----eval=FALSE---------------------------------------------------------------
# set.seed(2)
# treatmentGroup <- rnorm(designObj$nPlan[1], mean=122, sd=sigma)
# controlGroup <- rnorm(designObj$nPlan[2], mean=112, sd=sigma)
# 
# resultObj <- saviZTest(x=treatmentGroup, y=controlGroup,
#                        designObj=designObj)
# resultObj

## ----eval=FALSE---------------------------------------------------------------
# result <- saviZTest(treatmentGroup, controlGroup[1:i],
#                     designObj=designObj, sequential=TRUE)
# plot(result)
# which(result$eValueVec > 1/alpha)

## ----eval=FALSE---------------------------------------------------------------
# plot(designObj, numSamplePaths=0)

## ----eval=FALSE---------------------------------------------------------------
# plot(designObj, wantQuantiles=c(0.5, 0.8))

## ----eval=FALSE---------------------------------------------------------------
# designLarger <- designSaviZ(meanDiffMin=1.2*designObj$esMin,
#                             sigma=sigma,
#                             parameter=designObj$parameter,
#                             eType=designObj$eType,
#                             testType=designObj$testType,
#                             nPlan=designObj$nPlan,
#                             seed=2)
# plot(designLarger, wantQuantiles=c(0.5, 0.8))

## ----eval=FALSE---------------------------------------------------------------
# designSmaller <- designSaviZ(designObj$esMin/1.2,
#                              sigma=sigma,
#                              parameter=designObj$parameter,
#                              eType=designObj$eType,
#                              testType=designObj$testType,
#                              nPlan=designObj$nPlan,
#                              seed=3)
# plot(designSmaller, wantQuantiles=c(0.5, 0.8))
# 
# nRejectedExperiments <- 1000-sum(designSmaller$breakVector)
# nRejectedExperiments

## ----eval=FALSE---------------------------------------------------------------
# designSaviZ(meanDiffMin=designObj$esMin/1.2, power=0.2,
#             parameter=designObj$parameter,
#             sigma=sigma, testType="twoSample", seed=4)

## ----eval=FALSE---------------------------------------------------------------
# nPlan2 <- 40
# nTotal <- designObj$nPlan[1]+nPlan2
# 
# notRejectedIndex <- which(designSmaller$breakVector==1)
# 
# firstPassageTimes <- nPlan2 <- 40
# nTotal <- designObj$nPlan[1]+nPlan2
# 
# notRejectedIndex <- which(designSmaller$breakVector==1)
# 
# firstPassageTimes <- designSmaller$bootObjPower$data
# 
# followUpStudy <- sampleStoppingTimesSaviZ(meanDiffTrue=designObj$esMin/1.2,
#                                           sigma=sigma,
#                                           parameter=designObj$parameter,
#                                           eType=designObj$eType,
#                                           testType=designObj$testType,
#                                           nSim=length(notRejectedIndex),
#                                           nMax=nPlan2, seed=5)
# 
# # This is just to make the indices of the original and follow-up align
# someMatrix <- matrix(nrow=1e3L, ncol=nPlan2)
# someMatrix[notRejectedIndex, ] <- followUpStudy$samplePaths
# 
# metaEVariablePaths <-
#   someMatrix*designSmaller$samplePaths[, designObj$nPlan[1]]
# 
# for (i in notRejectedIndex) {
#   firstPassageTimes[i] <-
#     suppressWarnings(
#       min(which(metaEVariablePaths[i, ] >= 20))+designObj$nPlan[1])
# }
# 
# eReject <- integer(designObj$nPlan[1]+nPlan2)
# 
# for (i in 1:(designObj$nPlan[1]+nPlan2)) {
#   eReject[i] <-
#     mean(firstPassageTimes <= i)
# }
# 
# oldPar <- setSafeStatsPlotOptionsAndReturnOldOnes();
# plot(1:nTotal, 100*eReject, type="l",
#      xlab="n", ylab="Correct rejections (%)", lwd=2,
#      col=eColours[1], ylim=c(0, 90))
# lines(c(1, nTotal), c(80, 80), lwd=2, lty=2)
# lines(c(designObj$nPlan[1], designObj$nPlan[1]),
#       c(0, 80), col="lightgrey", lty=2)
# 
# which(eReject >= 0.8)-designObj$nPlan[1]

Try the safestats package in your browser

Any scripts or data that you put into this service are public.

safestats documentation built on Sept. 6, 2026, 1:06 a.m.