## Load all functions and libraries from file "CodeSimulationsBmc.r"


###############################################
# Figure 4 - Example: Sample size based on N_unequal

# calculate sample sizes

sigma = 4
mu = 1
alpha = 0.05
beta = 0.2
approx = "nv_ewb"
balloc=1

for (b in c(6, 8, 16)){
  df_b = block(b, balloc=balloc)
  for (c in c(23, 46, 92)){
    for (sigma.c in ((0:(sigma*10))/10)){
        n0 = samsi(approx=approx, alpha=alpha, beta=beta, mu=mu, sigma=sigma, sigma.c=sigma.c, c=c, b=b, df_b=df_b, balloc=balloc)
        
        if ((b==6)*(c==23)*(sigma.c==0)*(mu==mu)){
          df_samsi = data.frame(c=c, b=b, mu=mu, sigma=sigma, sigma.c=sigma.c, mt = approx, n=n0, balloc=balloc)
        } else {
          df_samsi0 = data.frame(c=c, b=b, mu=mu, sigma=sigma, sigma.c=sigma.c, mt = approx, n=n0, balloc=balloc)
          df_samsi= rbind(df_samsi, df_samsi0 )
        }
    }
  }
}
df_samsi$icc = df_samsi$sigma.c / (df_samsi$sigma+df_samsi$sigma.c)


# Plot sample sizes

postscript("Figure4.eps", width=8.0, height=4.0, paper="special", horizontal = FALSE)

op2=par(mar = c(5, 4, 1, 5)+0.1, cex=1)

df_samsi_4b6  = subset(df_samsi, (c==46) & (b==6) )
df_samsi_4b8  = subset(df_samsi, (c==46) & (b==8) )
df_samsi_4b16 = subset(df_samsi, (c==46) & (b==16) )

df_samsi_4b6_23  = subset(df_samsi, (c==23) & & (b==6) )
df_samsi_4b8_23  = subset(df_samsi, (c==23) & & (b==8) )
df_samsi_4b16_23 = subset(df_samsi, (c==23) & & (b==16) )

df_samsi_4b6_92  = subset(df_samsi, (c==92) & & (b==6) )
df_samsi_4b8_92  = subset(df_samsi, (c==92) & & (b==8) )
df_samsi_4b16_92 = subset(df_samsi, (c==92) & & (b==16) )

plot(df_samsi_4b6$icc, df_samsi_4b6$n, type="l", col="darkgreen",
      xlab=expression(paste("Intra-class correlation ", rho)), ylab="Overall sample size N", main="",
     ylim=c(500, 600), lty=2, lwd=2, axes=FALSE)
axis(side=1, at=(-1:6)/10)
axis(side=2, at=c(1, 500, 520, 540, 560, 580, 600, 700))
lines(x=df_samsi_4b6_23$icc, y=df_samsi_4b6_23$n, type="l", col="darkgreen", lty=1, lwd=2)
lines(x=df_samsi_4b6_92$icc, y=df_samsi_4b6_92$n, type="l", col="darkgreen", lty=3, lwd=2)

lines(x=df_samsi_4b8$icc, y=df_samsi_4b8$n, type="l", col="red", lty=2, lwd=2)
lines(x=df_samsi_4b8_23$icc, y=df_samsi_4b8_23$n, type="l", col="red", lty=1, lwd=2)
lines(x=df_samsi_4b8_92$icc, y=df_samsi_4b8_92$n, type="l", col="red", lty=3, lwd=2)

lines(x=df_samsi_4b16$icc, y=df_samsi_4b16$n, type="l", col="black", lty=2, lwd=2)
lines(x=df_samsi_4b16_23$icc, y=df_samsi_4b16_23$n, type="l", col="black", lty=1, lwd=2)
lines(x=df_samsi_4b16_92$icc, y=df_samsi_4b16_92$n, type="l", col="black", lty=3, lwd=2)

# reference line for 508 patients as recruited in the example
lines(x=df_samsi_4b8$icc, y=rep(508, length(x=df_samsi_4b8$icc)), col="grey", lty=2, lwd=2)

legend("topleft", legend=c("b=6, c=23", "b=6, c=46","b=6, c=92","b=8, c=23", "b=8, c=46","b=8, c=92","b=16, c=23", "b=16, c=46","b=16, c=92"),
       text.col=c(rep("darkgreen", 3), rep("red", 3), rep("black", 3)), col=c(rep("darkgreen", 3), rep("red", 3), rep("black", 3)),
       lty=c(1, 2, 3, 1, 2, 3, 1, 2, 3), cex=1, lwd=2, bty="n")

dev.off()





