### R.code for SCIs for all diff CVs in DLN (k=3) library(EnvStats) library(HDInterval) library(invgamma) library(plotrix) CI.SCIdiffCVs <- function(M=100,m=5000,n1=25,n2=25,n3=25,var1=0.5,var2=0.5,var3=0.5,mean1=0,mean2=0,mean3=0, delta1=0.5,delta2=0.5,delta3=0.5,alpha=0.05){ starttime <- proc.time() cv1 <- sqrt(exp(var1)-1) #variance of the LN distribution in population 1 cv2 <- sqrt(exp(var2)-1) #variance of the LN distribution in population 2 cv3 <- sqrt(exp(var3)-1) #variance of the LN distribution in population 3 ex1 <- delta1*exp(mean1+var1/2) #mean of the delta-LN distribution in population 1 ex2 <- delta2*exp(mean2+var2/2) #mean of the delta-LN distribution in population 2 ex3 <- delta3*exp(mean3+var3/2) #mean of the delta-LN distribution in population 3 var_x1 <- delta1*exp((2*mean1)+var1)*(exp(var1)-delta1) #variance of the delta-LN distribution in population 1 var_x2 <- delta2*exp((2*mean2)+var2)*(exp(var2)-delta2) #variance of the delta-LN distribution in population 2 var_x3 <- delta3*exp((2*mean3)+var3)*(exp(var3)-delta3) #variance of the delta-LN distribution in population 3 eta1 <- sqrt(var_x1)/ex1 #coefficient of variation of the delta-LN distribution in population 1 eta2 <- sqrt(var_x2)/ex2 #coefficient of variation of the delta-LN distribution in population 2 eta3 <- sqrt(var_x3)/ex3 #coefficient of variation of the delta-LN distribution in population 3 gamma12 <- eta1-eta2 #difference between eta1 and eta2 gamma13 <- eta1-eta3 #difference between eta1 and eta3 gamma23 <- eta2-eta3 #difference between eta2 and eta3 #FGCI U1 <- matrix(rep(0,m)) U2 <- matrix(rep(0,m)) U3 <- matrix(rep(0,m)) beta11 <- matrix(rep(0,m)) beta12 <- matrix(rep(0,m)) beta21 <- matrix(rep(0,m)) beta22 <- matrix(rep(0,m)) beta31 <- matrix(rep(0,m)) beta32 <- matrix(rep(0,m)) var1_GFQ <- matrix(rep(0,m)) var2_GFQ <- matrix(rep(0,m)) var3_GFQ <- matrix(rep(0,m)) delta1_GFQ <- matrix(rep(0,m)) delta2_GFQ <- matrix(rep(0,m)) delta3_GFQ <- matrix(rep(0,m)) R1.GFQ <- matrix(rep(0,m)) R2.GFQ <- matrix(rep(0,m)) R3.GFQ <- matrix(rep(0,m)) R12.GFQ <- matrix(rep(0,m)) R13.GFQ <- matrix(rep(0,m)) R23.GFQ <- matrix(rep(0,m)) #Bayesian var1.jrule <- matrix(rep(0,m)) var2.jrule <- matrix(rep(0,m)) var3.jrule <- matrix(rep(0,m)) delta1.jrule <- matrix(rep(0,m)) delta2.jrule <- matrix(rep(0,m)) delta3.jrule <- matrix(rep(0,m)) beta1.jrule <- matrix(rep(0,m)) beta2.jrule <- matrix(rep(0,m)) beta3.jrule <- matrix(rep(0,m)) eta1.jrule <- matrix(rep(0,m)) eta2.jrule <- matrix(rep(0,m)) eta3.jrule <- matrix(rep(0,m)) gamma12.jrule <- matrix(rep(0,m)) gamma13.jrule <- matrix(rep(0,m)) gamma23.jrule <- matrix(rep(0,m)) var1.uni <- matrix(rep(0,m)) var2.uni <- matrix(rep(0,m)) var3.uni <- matrix(rep(0,m)) delta1.uni <- matrix(rep(0,m)) delta2.uni <- matrix(rep(0,m)) delta3.uni <- matrix(rep(0,m)) beta1.uni <- matrix(rep(0,m)) beta2.uni <- matrix(rep(0,m)) beta3.uni <- matrix(rep(0,m)) eta1.uni <- matrix(rep(0,m)) eta2.uni <- matrix(rep(0,m)) eta3.uni <- matrix(rep(0,m)) gamma12.uni <- matrix(rep(0,m)) gamma13.uni <- matrix(rep(0,m)) gamma23.uni <- matrix(rep(0,m)) #FGCI L.rFGCI12 <- numeric() U.rFGCI12 <- numeric() CP.rFGCI12 <- numeric() Length.rFGCI12 <- numeric() L.rFGCI13 <- numeric() U.rFGCI13 <- numeric() CP.rFGCI13 <- numeric() Length.rFGCI13 <- numeric() L.rFGCI23 <- numeric() U.rFGCI23 <- numeric() CP.rFGCI23 <- numeric() Length.rFGCI23 <- numeric() CP.rFGCI <- numeric() AL.rFGCI <- numeric() SE.Length.rFGCI <- numeric() #Equitailed Bayesian based on Jeffreys' rule prior L.rBaye12_jrule <- numeric() U.rBaye12_jrule <- numeric() CP.rBaye12_jrule <- numeric() Length.rBaye12_jrule <- numeric() L.rBaye13_jrule <- numeric() U.rBaye13_jrule <- numeric() CP.rBaye13_jrule <- numeric() Length.rBaye13_jrule <- numeric() L.rBaye23_jrule <- numeric() U.rBaye23_jrule <- numeric() CP.rBaye23_jrule <- numeric() Length.rBaye23_jrule <- numeric() CP.rBaye_jrule <- numeric() AL.rBaye_jrule <- numeric() SE.Length.rBaye_jrule <- numeric() #Equitailed Bayesian based on uniform prior L.rBaye12_uni <- numeric() U.rBaye12_uni <- numeric() CP.rBaye12_uni <- numeric() Length.rBaye12_uni <- numeric() L.rBaye13_uni <- numeric() U.rBaye13_uni <- numeric() CP.rBaye13_uni <- numeric() Length.rBaye13_uni <- numeric() L.rBaye23_uni <- numeric() U.rBaye23_uni <- numeric() CP.rBaye23_uni <- numeric() Length.rBaye23_uni <- numeric() CP.rBaye_uni <- numeric() AL.rBaye_uni <- numeric() SE.Length.rBaye_uni <- numeric() #HPD Bayesian based on Jeffreys' rule prior hpd12.jrule <- matrix(rep(0,2)) L.rBaye12_hpd.jrule <- numeric() U.rBaye12_hpd.jrule <- numeric() CP.rBaye12_hpd.jrule <- numeric() Length.rBaye12_hpd.jrule <- numeric() hpd13.jrule <- matrix(rep(0,2)) L.rBaye13_hpd.jrule <- numeric() U.rBaye13_hpd.jrule <- numeric() CP.rBaye13_hpd.jrule <- numeric() Length.rBaye13_hpd.jrule <- numeric() hpd23.jrule <- matrix(rep(0,2)) L.rBaye23_hpd.jrule <- numeric() U.rBaye23_hpd.jrule <- numeric() CP.rBaye23_hpd.jrule <- numeric() Length.rBaye23_hpd.jrule <- numeric() CP.rBaye_hpd.jrule <- numeric() AL.rBaye_hpd.jrule <- numeric() SE.Length.rBaye_hpd.jrule <- numeric() #HPD Bayesian based on uniform prior hpd12.uni <- matrix(rep(0,2)) L.rBaye12_hpd.uni <- numeric() U.rBaye12_hpd.uni <- numeric() CP.rBaye12_hpd.uni <- numeric() Length.rBaye12_hpd.uni <- numeric() hpd13.uni <- matrix(rep(0,2)) L.rBaye13_hpd.uni <- numeric() U.rBaye13_hpd.uni <- numeric() CP.rBaye13_hpd.uni <- numeric() Length.rBaye13_hpd.uni <- numeric() hpd23.uni <- matrix(rep(0,2)) L.rBaye23_hpd.uni <- numeric() U.rBaye23_hpd.uni <- numeric() CP.rBaye23_hpd.uni <- numeric() Length.rBaye23_hpd.uni <- numeric() CP.rBaye_hpd.uni <- numeric() AL.rBaye_hpd.uni <- numeric() SE.Length.rBaye_hpd.uni <- numeric() #MOVER based on Wilson score method L.rMOVER12_W <- numeric() U.rMOVER12_W <- numeric() CP.rMOVER12_W <- numeric() Length.rMOVER12_W <- numeric() L.rMOVER13_W <- numeric() U.rMOVER13_W <- numeric() CP.rMOVER13_W <- numeric() Length.rMOVER13_W <- numeric() L.rMOVER23_W <- numeric() U.rMOVER23_W <- numeric() CP.rMOVER23_W <- numeric() Length.rMOVER23_W <- numeric() CP.rMOVER_W <- numeric() AL.rMOVER_W <- numeric() SE.Length.rMOVER_W <- numeric() i = 1 while(i <= M){ #Begin loop i x1 <- rzmlnormAlt(n1,exp(mean1+var1/2),cv1,1-delta1) x2 <- rzmlnormAlt(n2,exp(mean2+var2/2),cv2,1-delta2) x3 <- rzmlnormAlt(n3,exp(mean3+var3/2),cv3,1-delta3) nonzero_value1 <- log(x1[which(x1!=0)]) nonzero_value2 <- log(x2[which(x2!=0)]) nonzero_value3 <- log(x3[which(x3!=0)]) size_nonzero1 <- length(nonzero_value1) if(size_nonzero1 < n1*delta1){ next } size_nonzero2 <- length(nonzero_value2) if(size_nonzero2 < n2*delta2){ next } size_nonzero3 <- length(nonzero_value3) if(size_nonzero3 < n3*delta3){ next } mean_hat1 <- mean(nonzero_value1) var_hat1 <- var(nonzero_value1) delta_hat1 <- size_nonzero1/n1 eta_hat1 <- sqrt((exp(var_hat1)-delta_hat1)/delta_hat1) mean_hat2 <- mean(nonzero_value2) var_hat2 <- var(nonzero_value2) delta_hat2 <- size_nonzero2/n2 eta_hat2 <- sqrt((exp(var_hat2)-delta_hat2)/delta_hat2) mean_hat3 <- mean(nonzero_value3) var_hat3 <- var(nonzero_value3) delta_hat3 <- size_nonzero3/n3 eta_hat3 <- sqrt((exp(var_hat3)-delta_hat3)/delta_hat3) #Fiducial generalized confidence interval.................................................................. U1 <- rchisq(m,(size_nonzero1-1)) U2 <- rchisq(m,(size_nonzero2-1)) U3 <- rchisq(m,(size_nonzero3-1)) beta11 <- rbeta(m,size_nonzero1,(n1-size_nonzero1)+1) beta12 <- rbeta(m,size_nonzero1+1,n1-size_nonzero1) beta21 <- rbeta(m,size_nonzero2,(n2-size_nonzero2)+1) beta22 <- rbeta(m,size_nonzero2+1,n2-size_nonzero2) beta31 <- rbeta(m,size_nonzero3,(n3-size_nonzero3)+1) beta32 <- rbeta(m,size_nonzero3+1,n3-size_nonzero3) var1_GFQ <- ((size_nonzero1-1)*var_hat1)/U1 var2_GFQ <- ((size_nonzero2-1)*var_hat2)/U2 var3_GFQ <- ((size_nonzero3-1)*var_hat3)/U3 delta1_GFQ <- (1/2)*beta11+(1/2)*beta12 delta2_GFQ <- (1/2)*beta21+(1/2)*beta22 delta3_GFQ <- (1/2)*beta31+(1/2)*beta32 R1.GFQ <- sqrt((exp(var1_GFQ)-delta1_GFQ)/delta1_GFQ) R2.GFQ <- sqrt((exp(var2_GFQ)-delta2_GFQ)/delta2_GFQ) R3.GFQ <- sqrt((exp(var3_GFQ)-delta3_GFQ)/delta3_GFQ) R12.GFQ <- R1.GFQ-R2.GFQ if(is.na(R12.GFQ)){next} R13.GFQ <- R1.GFQ-R3.GFQ if(is.na(R13.GFQ)){next} R23.GFQ <- R2.GFQ-R3.GFQ if(is.na(R23.GFQ)){next} L.rFGCI12[i] <-quantile(R12.GFQ,alpha/2) U.rFGCI12[i] <-quantile(R12.GFQ,(1-(alpha/2))) CP.rFGCI12[i] <- ifelse(L.rFGCI12[i]< gamma12 && gamma12