#######follow up vs sample size
acct1<-2  
folt2<-5
tilde_t=acct1+folt2 ##total study period
lambda1E<-0.10
lambda1E ###this manual input is needed in multiroot as it is not allow a function to compute
lambda2E<-0.03
theta_1=0.7
theta_2=0.9
lambda1C<-lambda1E/theta_1
lambda2C<-lambda2E/theta_2
######
gamma1E=0.967
gamma2E=1.05

###############################################################
###compute CIF_1C, CIF_2C, plus other time points CIF_1j
####CSH for weibull#########################################
#############################################################
####CSH for weibull###
weibull_csh_1E<- function(x, lambda1E, gamma1E, lambda2E, gamma2E) {
  s_t=exp({-(lambda1E*x^{gamma1E}+lambda2E*x^{gamma2E})})
  csh_1=lambda1E*gamma1E*x^{gamma1E-1}
  CIF_csh_1=csh_1*s_t
  CIF_csh_1
}

weibull_integ<- function(t, lambda1E, gamma1E, lambda2E, gamma2E) {
  CIF_csh=integrate(Vectorize(weibull_csh_1E),lambda1E, gamma1E, 
                    lambda2E, gamma2E,
                    lower=0, upper = t)$value 
}

t=c(folt2, 0.5*acct1+folt2, tilde_t)
weib_CIF_1E <- rep(0, length(t))
weib_CIF_1E[1]<- weibull_integ(t[1],lambda1E=lambda1E, gamma1E=gamma1E, 
                               lambda2E=lambda2E, gamma2E=gamma2E)
weib_CIF_1E[2]<- weibull_integ(t[2],lambda1E=lambda1E, gamma1E=gamma1E, 
                               lambda2E=lambda2E, gamma2E=gamma2E)
weib_CIF_1E[3]<- weibull_integ(t[3],lambda1E=lambda1E, gamma1E=gamma1E, 
                               lambda2E=lambda2E, gamma2E=gamma2E)
weib_CIF_1E ####so we have now CIF_1E, CIF_2E under weibull

###compute same for control group

####
weib_CIF_1C <- rep(0, length(t))
weib_CIF_1C[1]<- weibull_integ(t[1],lambda1E=lambda1C, gamma1E=gamma1E,
                               lambda2E=lambda2C,gamma2E=gamma2E)
weib_CIF_1C[2]<- weibull_integ(t[2],lambda1E=lambda1C, gamma1E=gamma1E,
                               lambda2E=lambda2C,gamma2E=gamma2E)
weib_CIF_1C[3]<- weibull_integ(t[3],lambda1E=lambda1C, gamma1E=gamma1E,
                               lambda2E=lambda2C,gamma2E=gamma2E)
#CIF_1C=data.frame(CIF_f=CIF_11[1], CIF_mid=CIF_11[2], CIF_t=CIF_11[3])
weib_CIF_1C
##compute CIF_2C using theta_B
p_E=0.5 ###proportion of randomized patients
#####
psi_1E_weib=1/6*(weib_CIF_1E[1]+4*weib_CIF_1E[2]+weib_CIF_1E[3])
psi_1C_weib=1/6*(weib_CIF_1C[1]+4*weib_CIF_1C[2]+weib_CIF_1C[3])
psi_CSH_weib_1<-(p_E*psi_1E_weib)+((1-p_E)*psi_1C_weib)

#####sample size
alpha<-0.05
beta<-0.20
event<-(qnorm(1-(alpha/2))+qnorm(1-beta))^{2}/(((log(theta_1))^{2})*p_E*(1-p_E))
n_csh_weib<-round(event/psi_CSH_weib_1,0)
n_csh_weib

################################################
####Gompertz distribution 
##################################################
acct1<-2  ##accrual period
folt2<-4 ## follow up period
tilde_t=acct1+folt2 ##total study period
lambda1E<-0.10
lambda2E<-0.03
theta_1=0.7
theta_2=0.9
lambda1C<-lambda1E/theta_1
lambda2C<-lambda2E/theta_2

eta1E = -0.023
eta2E = 0.034

#############################
####CSH for Gompertz###
#############################
gom_csh_1E <- function(x, lambda1E, eta1E, lambda2E, eta2E) {
  h1=(lambda1E/eta1E)*(exp(eta1E*x)-1)
  h2=(lambda2E/eta2E)*(exp(eta2E*x)-1)
  s_t=exp(-(h1+h2))
  csh_1E=lambda1E*exp(eta1E*x)
  CIF_csh_1E=csh_1E*s_t
  CIF_csh_1E
}

gom_integ <- function(t, lambda1E, eta1E, lambda2E, eta2E) {
  CIF_csh=integrate(Vectorize(gom_csh_1E), lambda1E, eta1E, 
                    lambda2E, eta2E,
                    lower=0, upper = t)$value 
}

t=c(folt2, 0.5*acct1+folt2, tilde_t)

gom_CIF_1E <- rep(0, length(t))
gom_CIF_1E[1]<- gom_integ(t[1],lambda1E=lambda1E, eta1E=eta1E, 
                          lambda2E=lambda2E, eta2E=eta2E)
gom_CIF_1E[2]<- gom_integ(t[2], lambda1E=lambda1E, eta1E=eta1E, 
                          lambda2E=lambda2E, eta2E=eta2E)
gom_CIF_1E[3]<- gom_integ(t[3], lambda1E=lambda1E, eta1E=eta1E, 
                          lambda2E=lambda2E, eta2E=eta2E)
gom_CIF_1E 
########
gom_CIF_1C <- rep(0, length(t))
gom_CIF_1C[1]<- gom_integ(t[1],lambda1E=lambda1C, eta1E=eta1E, 
                          lambda2E=lambda2C, eta2E=eta2E)
gom_CIF_1C[2]<- gom_integ(t[2],lambda1E=lambda1C, eta1E=eta1E, 
                          lambda2E=lambda2C, eta2E=eta2E)
gom_CIF_1C[3]<- gom_integ(t[3],lambda1E=lambda1C, eta1E=eta1E, 
                          lambda2E=lambda2C, eta2E=eta2E)
#CIF_1C=data.frame(CIF_f=CIF_11[1], CIF_mid=CIF_11[2], CIF_t=CIF_11[3])
gom_CIF_1C
##compute CIF_2C using theta_B
psi_1E_gom=1/6*(gom_CIF_1E[1]+4*gom_CIF_1E[2]+gom_CIF_1E[3])
psi_1C_gom=1/6*(gom_CIF_1C[1]+4*gom_CIF_1C[2]+gom_CIF_1C[3])
psi_CSH_gom_1<-(p_E*psi_1E_gom)+((1-p_E)*psi_1C_gom)
#####sample size
alpha<-0.05
beta<-0.20
event<-(qnorm(1-(alpha/2))+qnorm(1-beta))^{2}/(((log(theta_1))^{2})*p_E*(1-p_E))
n_csh_gom<-round(event/psi_CSH_gom_1,0)
n_csh_gom


######################################
############CSH Exponential model######
##########################################
folt2=seq(from=1, to=8, by=1)
acct1=2
alpha=0.05
beta=0.2
theta_B=0.9
theta_A=rep(c(0.9,0.8,0.7), each=length(folt2))
p_E=0.5
t=acct1+folt2
lambda_AE<-0.10
lambda_BE<-0.03
lambda_AC<-lambda_AE/theta_A
lambda_BC<-lambda_BE/theta_B
lambda_E<-lambda_AE+lambda_BE
lambda_C<-lambda_AC+lambda_BC
num_E<-exp(-lambda_E*folt2)-exp((-lambda_E)*(acct1+folt2))
num_C<-exp(-lambda_C*folt2)-exp((-lambda_C)*(acct1+folt2))
den_E<-lambda_E*acct1
den_C<-lambda_C*acct1
psi_AE<-(lambda_AE/lambda_E)*(1-(num_E/den_E))
psi_AC<-(lambda_AC/lambda_C)*(1-(num_C/den_C))
psi<-(p_E*psi_AE)+((1-p_E)*psi_AC)
e_csh<-(qnorm(1-(alpha/2))+qnorm(1-beta))^{2}/(((log(theta_A))^{2})*p_E*(1-p_E))
n_csh<-round(e_csh/psi,0)

a=NULL
for(j in 1:24){
  a <- rbind(a,cbind(csHR_A=theta_A[j], n=n_csh[j]))
}
a
a1=a[1:8,]
a2=a[9:16,]
a3=a[17:24,]

######################################
############SDH Exponential model######
##########################################
folt2=seq(from=1, to=8, by=1)
acct1=2
alpha=0.05
beta=0.2
theta_B=0.9
theta_A=rep(c(0.9,0.8,0.7), each=length(folt2))
p_E=0.5
t=acct1+folt2
lambda_AE<-0.10
lambda_BE<-0.03
lambda_AC<-lambda_AE/theta_A
lambda_BC<-lambda_BE/theta_B
F_AE<- (1-exp(-(lambda_AE*t*((lambda_BE/lambda_AE)+1))))/((lambda_BE/lambda_AE)+1)
F_AE
F_AC<- (1-exp(-(lambda_AC*t*((lambda_BC/lambda_AC)+1))))/((lambda_BC/lambda_AC)+1)
F_AC

lambda_AE_sdh=-log(1-F_AE)/(acct1+folt2) ##F_AE=(1-exp(-lambda_AE*t)) from that backcalculation lambda_AE=-ln(1-F_AE)/t
lambda_AC_sdh=-log(1-F_AC)/(acct1+folt2)

subHR_A<- lambda_AE_sdh/lambda_AC_sdh


F_AE_folt2<-1-exp(-lambda_AE_sdh*folt2)
t_1<-(0.5*acct1)+folt2
F_AE_0.5<-1-exp(-lambda_AE_sdh*t_1)
psi_AEs<-(F_AE_folt2+ 4*F_AE_0.5+ F_AE)/6


F_AC_folt2<-1-exp(-lambda_AC_sdh*folt2)
F_AC_0.5<-1-exp(-lambda_AC_sdh*t_1)
psi_ACs<-(F_AC_folt2+ 4*F_AC_0.5+ F_AC)/6

psi_exp<-(p_E*psi_AEs) + ((1-p_E)*psi_ACs)  

e_exp<-(qnorm(1-(alpha/2))+qnorm(1-beta))^{2}/(((log(subHR_A))^{2})*p_E*(1-p_E))
n_exp<-round(e_exp/psi_exp,0)


b=NULL
for(j in 1:24){
  b <- rbind(b,cbind(csHR_A=theta_A[j], n=n_exp[j]))
}
b
b1=b[1:8,]
b2=b[9:16,]
b3=b[17:24,]




######################################
############SDH weibull model######
##########################################

gamma_1E<-0.967
gamma_1C<-0.967
lambda_1E=-log(1-F_AE)/(t^(gamma_1E))
lambda_1C=-log(1-F_AC)/(t^(gamma_1C))

subhr_weib_1E=lambda_1E*(t^(gamma_1E))
subhr_weib_1C=lambda_1C*(t^(gamma_1C))
subhr_weib_1=subhr_weib_1E/subhr_weib_1C

e_weib<-(qnorm(1-(alpha/2))+qnorm(1-beta))^{2}/(((log(subhr_weib_1))^{2})*p_E*(1-p_E))

Fweib_AE_folt2<-1- exp(-lambda_1E*(folt2^(gamma_1E)))
Fweib_AE_0.5<-1- exp(-lambda_1E*((0.5*acct1+folt2)^(gamma_1E)))
Fweib_AE_t<-1- exp(-lambda_1E*(t^(gamma_1E)))
psi_AEs<- (Fweib_AE_folt2+(4*Fweib_AE_0.5)+ Fweib_AE_t)
psi_AEs_0.17<-psi_AEs*(1/6)

Fweib_AC_folt2<-1- exp(-lambda_1C*(folt2^(gamma_1C)))
Fweib_AC_0.5<-1- exp(-lambda_1C*((0.5*acct1+folt2)^(gamma_1C)))
Fweib_AC_t<-1- exp(-lambda_1C*(t^(gamma_1C)))
psi_ACs<- (Fweib_AC_folt2+(4*Fweib_AC_0.5)+ Fweib_AC_t)
psi_ACs_0.17<-psi_ACs*(1/6)

psiweib<-(p_E*psi_AEs_0.17) + ((1-p_E)*psi_ACs_0.17)

n_weib<-round(e_weib/psiweib,2)

c=NULL
for(j in 1:24){
  c <- rbind(c,cbind(csHR_A=theta_A[j], n=n_weib[j]))
}
c
c1=c[1:8,]
c2=c[9:16,]
c3=c[17:24,]


######################################
############SDH Gompertz model######
##########################################

gamma_AE<--0.023
gamma_AC<--0.023
alpha_AE<-(log(1-F_AE)*gamma_AE)/(1-exp(gamma_AE*t))
alpha_AC<-(log(1-F_AC)*gamma_AC)/(1-exp(gamma_AC*t))

subhr_gom_AE=(alpha_AE/gamma_AE)*(1-exp(gamma_AE*t))
subhr_gom_AC=(alpha_AC/gamma_AC)*(1-exp(gamma_AC*t))
subhr_gom=subhr_gom_AE/subhr_gom_AC

e_gom<-(qnorm(1-(alpha/2))+qnorm(1-beta))^{2}/(((log(subhr_gom))^{2})*p_E*(1-p_E))


Fgom_AE_folt2<-1- exp(alpha_AE*(1-exp(gamma_AE*folt2))/gamma_AE)
Fgom_AE_0.5<-1- exp(alpha_AE*(1-exp(gamma_AE*(0.5*acct1+folt2)))/gamma_AE)
Fgom_AE_t<-1- exp(alpha_AE*(1-exp(gamma_AE*t))/gamma_AE)
psi_AEs<- (Fgom_AE_folt2+(4*Fgom_AE_0.5)+ Fgom_AE_t)
psi_AEs_0.17<-psi_AEs*(1/6)

Fgom_AC_folt2<-1- exp(alpha_AC*(1-exp(gamma_AC*folt2))/gamma_AC)
Fgom_AC_0.5<-1- exp(alpha_AC*(1-exp(gamma_AC*(0.5*acct1+folt2)))/gamma_AC)
Fgom_AC_t<-1- exp(alpha_AC*(1-exp(gamma_AC*t))/gamma_AC)
psi_ACs<-(Fgom_AC_folt2+(4*Fgom_AC_0.5)+Fgom_AC_t)
psi_ACs_0.17<-psi_ACs*(1/6)
psigom<-(p_E*psi_AEs_0.17) + ((1-p_E)*psi_ACs_0.17)

n_gom<-round(e_gom/psigom,2)

d=NULL
for(j in 1:24){
  d <- rbind(d,cbind(csHR_A=theta_A[j], n=n_gom[j]))
}
d
d1=d[1:8,]
d2=d[9:16,]
d3=d[17:24,]

w_fol=c(15807,11319,9089,7762,6888,6273,5820,5475,
        3333,2394,1928,1651,1469,1341,1247,1175,
        1222,881,713,613,547,501,467,441)

g_fol=c(15828,11312,9094,7788,6934,6339,5904,5575,
        3337,2392,1929,1656,1479,1355,1264,1196,
        1224,881,713,615,550,506,473,449)

w=NULL
for(j in 1:24){
  w <- rbind(w,cbind(csHR_A=theta_A[j], n=w_fol[j]))
}
w
w1=w[1:8,]
w2=w[9:16,]
w3=w[17:24,]

g=NULL
for(j in 1:24){
  g <- rbind(g,cbind(csHR_A=theta_A[j], n=g_fol[j]))
}
g
g1=g[1:8,]
g2=g[9:16,]
g3=g[17:24,]
####now merging CSH and SDH in one plot
plot(a1[,2]~t, ylim=c(0,20000), xlim=c(2,11),
     xlab="Total study period by changing follow-up duration",
     ylab="Sample size (exponential distribution)",type="b", col = "black", pch=1)
lines(a2[,2]~t, type="b", col = "red", pch=1)
lines(a3[,2]~t, type="b", col = "blue", pch=1)

lines(b1[,2]~t, type="b", col = "black", pch=12)##sdh 
lines(b2[,2]~t, type="b", col = "red", pch=12)
lines(b3[,2]~t, type="b", col = "blue", pch=12)
#abline(h=c(0.8), v=c(6), lty="dashed", col="burlywood4")
text(2.2, 15000, expression(theta[1]==0.9), cex=0.7, col="black")
text(2.2, 4000, expression(theta[1]==0.8), cex=0.7, col="red")
text(2.2, 1500, expression(theta[1]==0.7), cex=0.7, col="blue")
legend("topright",
       c("CSH_exp", "SDH_exp"),
       cex=0.65, pch=c(1,12),
       xpd=TRUE)
legend("bottomleft",bg="transparent", 
       c(expression(CIF[1][E]==0.30),
         expression(CIF[2][E]==0.10),
         expression(theta[2]==0.9)), 
       cex=0.8, 
       inset=c(0,1), xpd=TRUE, horiz=TRUE, bty="n")





plot(w1[,2]~t, ylim=c(0,20000), xlim=c(2,11),
     xlab="Total study period by changing follow-up duration",
     ylab="Sample size (Weibull distribution)",type="b", col = "black", pch=3)
lines(w2[,2]~t, lty = "dashed", type="b", col = "red", pch=3)
lines(w3[,2]~t, lty = "dashed", type="b", col = "blue", pch=3)

lines(c1[,2]~t, type="b", col = "black", pch=2)##gom for -0.5
lines(c2[,2]~t, type="b", col = "red", pch=2)
lines(c3[,2]~t, type="b", col = "blue", pch=2)
#abline(h=c(0.8), v=c(6), lty="dashed", col="burlywood4")
text(2.2, 15000, expression(theta[1]==0.9), cex=0.7, col="black")
text(2.2, 4000, expression(theta[1]==0.8), cex=0.7, col="red")
text(2.2, 1500, expression(theta[1]==0.7), cex=0.7, col="blue")
legend("topright",
       c("CSH_Weib", "SDH_Weib"),
       cex=0.65, pch=c(3,2))
legend("bottomleft",bg="transparent", 
       c(expression(CIF[1][E]==0.30),
         expression(CIF[2][E]==0.10),
         expression(theta[2]==0.9)), 
       cex=0.8, 
       inset=c(0,1), xpd=TRUE, horiz=TRUE, bty="n")





plot(g1[,2]~t, ylim=c(0,20000), xlim=c(2,11),
     xlab="Total study period by changing follow-up duration",
     ylab="Sample size (Gompertz distribution)",type="b", col = "black", pch=8)
lines(g2[,2]~t, lty = "dashed", type="b", col = "red", pch=8)
lines(g3[,2]~t, lty = "dashed", type="b", col = "blue", pch=8)

lines(d1[,2]~t, type="b", col = "black", pch=17)
lines(d2[,2]~t, type="b", col = "red", pch=17)
lines(d3[,2]~t, type="b", col = "blue", pch=17)

#abline(h=c(0.8), v=c(6), lty="dashed", col="burlywood4")
text(2.2, 15000, expression(theta[1]==0.9), cex=0.7, col="black")
text(2.2, 4000, expression(theta[1]==0.8), cex=0.7, col="red")
text(2.2, 1500, expression(theta[1]==0.7), cex=0.7, col="blue")
legend("topright",
       c("CSH_Gom", "SDH_Gom"),
       cex=0.65, pch=c(8,17))
legend("bottomleft",bg="transparent", 
       c(expression(CIF[1][E]==0.30),
         expression(CIF[2][E]==0.10),
         expression(theta[2]==0.9)), 
       cex=0.8, 
       inset=c(0,1), xpd=TRUE, horiz=TRUE, bty="n")












