Tahapan Pengestimasian Direct dan Traditional Indirect Estimation:

  1. Data Preparation
library(readxl)
Jatim_pengeluaran <- read_excel("D:/Kuliah/tkt IV/The Journey Start/SAE/Data SAE/Jatim_pengeluaran.xlsx", 
                                col_types = c("text", "text", "numeric", 
                                              "text", "text", "numeric", "numeric", 
                                              "numeric", "numeric"))
Xnew_ya <- read_excel("D:/Kuliah/tkt IV/The Journey Start/SAE/Data SAE/Xnew ya.xlsx", 
                      sheet = "Sheet2", col_types = c("text", "text", "text", "text", "text", "text", 
                                                      "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", 
                                                      "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", 
                                                      "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", 
                                                      "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", 
                                                      "numeric", "numeric", "numeric", "numeric", "numeric", "numeric", 
                                                      "numeric", "numeric", "numeric", "numeric", "numeric"))

muatan <- read_excel("D:/Kuliah/tkt IV/The Journey Start/SAE/Data SAE/muatan.xlsx", 
                     sheet = "Sheet3", col_types = c("text","text", "numeric"))

#variabel_X_signifikan
x1 <- aggregate(Xnew_ya$X1, list(Xnew_ya$R102),sum,na.rm=TRUE)
x12 <- aggregate(Xnew_ya$X12, list(Xnew_ya$R102),sum,na.rm=TRUE)
x13 <- aggregate(Xnew_ya$X13, list(Xnew_ya$R102),sum,na.rm=TRUE)
x20 <- aggregate(Xnew_ya$X20, list(Xnew_ya$R102),sum,na.rm=TRUE)
x27 <- aggregate(Xnew_ya$X27, list(Xnew_ya$R102),sum,na.rm=TRUE)
x31 <- aggregate(Xnew_ya$X31, list(Xnew_ya$R102),sum,na.rm=TRUE)

dt1 <- data.frame(cbind("bs_o"=Jatim_pengeluaran$`No Kode Sampel`,"pop"=Jatim_pengeluaran$Exp_krb,"kab"=Jatim_pengeluaran$R102))
mat_x <- matrix(cbind(1,x1$x,x12$x,x13$x,x20$x,x27$x,x31$x),ncol=7)

#Jumlah ruta tiap kab (Ni)
ht_rt <- function(dt1){
  r102 = unique(dt1$kab)
  de = data.frame(r102)
  Peng_jatim <- data.frame(dt1)
  ds <- list() 
  for (i in r102){
    ds[[i]] <- subset(Peng_jatim, kab %in% i)
  }
  Ni <- c()
  for(k in r102){
    Ni[k] <- length(ds[[k]]$kab)
  }
  N_desa <- data.frame("desa"=Ni)
  return(N_desa)
}
Ni_ruta <- ht_rt(dt1)
  1. Fungsi Estimasi untuk metode Two stage cluster SRSWOR-SRSWOR

    1. MEnggunakan rumus MSE synthetic yang awal
resampling_2st_srs = function(dataY, dataX, f1, f2, iterasi ){
  est_2st_cl <- function(dataY, f1,f2){
    sp_2_ct <- function(dataY,f1,f2){
      samp_th1 <- function(mydata,f1){ #pengambilan sampel tahap 1 secara SRSWOR
        bs_u <-unique(mydata$bs_o)
        bs_u <- data.frame(bs_u)
        samp_bs <- sample(1:nrow(bs_u), size = f1*nrow(bs_u), replace = FALSE)
        sampi <- bs_u[samp_bs,]
        sampi2 <- as.data.frame(paste(sampi))
        colnames(sampi2) <- c("sampel_bs")
        return(sampi2)
      }
      hs_sp_t1 <- samp_th1(dataY,f1)
      samp_th2 <- function(dt_kb_1,hs_sp_1,f2){ #Pengambilan sampel tahap 2 secara SRSWOR
        index <- c(1:nrow(hs_sp_t1))
        hs_sp_1 <- cbind(index,hs_sp_t1)
        dt_2 <- list();dt_3 <- list() ; samp_rt <- list() 
        hs_samp_srs <- list() ; hs_smpl_srs <- list() ; Mi <- list()
        for(i in hs_sp_1$index){ #Pengambilan sampel ssu scr srs wor
          dt_2[[i]] <- subset(hs_sp_1, index %in% i)
          dt_3[[i]] <- subset(dt_kb_1, bs_o %in% dt_2[[i]]$sampel_bs)
          Mi[[i]] <- nrow(dt_3[[i]])
          samp_rt[[i]] <- sample(1:length(dt_3[[i]]$pop), size = f2*length(dt_3[[i]]$pop), replace = FALSE)
          hs_samp_srs[[i]] <-  dt_3[[i]][samp_rt[[i]],]
          hs_smpl_srs[[i]] <- cbind(hs_samp_srs[[i]],Mi[[i]])
        }
        gb_samp = data.frame()
        for (j in hs_sp_1$index) {
          gb_samp <- rbind(gb_samp,hs_smpl_srs[[j]])
        }
        return(gb_samp)
      }
      #Estimasi DIRECT
      res_sp <- samp_th2(dataY,hs_sp_t1,f2) 
      res_sp$pop <- as.numeric(paste(res_sp$pop))
      res_sp$bs_o <- as.character(paste(res_sp$bs_o))
      res_sp$`Mi[[i]]` <- as.numeric(paste(res_sp$`Mi[[i]]`))
      dataY$bs_o <- as.character(paste(dataY$bs_o))
      ybar_i. <- aggregate(res_sp$pop, list(res_sp$bs_o), mean)
      Mi <- aggregate(res_sp$`Mi[[i]]`, list(res_sp$bs_o), mean)
      mi <- Mi$x*f2
      n <- length(unique(res_sp$bs_o))
      N <- length(unique(dataY$bs_o))
      Y_cap_est <- (N/n) * (sum(Mi$x * ybar_i.$x))
      ay <- rep(ybar_i.$x,length(res_sp$pop))
      sw_i_2 <- 1/(mi-1) * sum((res_sp$pop - ay)^2)
      sb_2 <- 1/(n-1) * sum((Mi$x*ybar_i.$x) - (1/n *(sum(Mi$x*ybar_i.$x)))^2)
      var_cap_est <- (N^2 * (1/n - 1/N) * sb_2 ) + (N/n * sum(Mi$x^2 * (1/mi - 1/Mi$x) * sw_i_2))
      rel_var_y <- var_cap_est/Y_cap_est
      hasil <- cbind(Y_cap_est,var_cap_est,rel_var_y)
      return(hasil)
    }    
    r102 = unique(dt2$kab)
    datakoeh = list() 
    for(b in r102){
      datakoeh[[b]] <- subset(dt2, kab %in% b)
    }
    
    try_ye <- list()
    for(c in r102){
      try_ye[[c]] <- sp_2_ct(data = datakoeh[[c]],f1,f2)  
    }
    
    this_it = data.frame()
    for (q in r102) {
      this_it <- rbind(this_it, try_ye[[q]])
    }
    
    this_it = cbind(r102, this_it)
  }
  
  #fungsi estimasi synthetic dan composite
  Y_synth_comp <- function(x,y,vary){
    #synthetic function
    xty <- t(x)%*%y
    xtx <- t(x)%*%x
    bt_xy <- solve(xtx)%*%xty
    bt_xy = t(bt_xy)
    Y_syn <- c(rep(0,nrow(x)))
    for(i in 1: ncol(x)){
      Y_syn = Y_syn + x[,i]*bt_xy[,i]
    }
    Y_syn <- as.data.frame(Y_syn)
    mse_syn <- ((Y_syn-y)^2)-vary
    rel_mse_syn <- mse_syn/Y_syn
    #composite function
    tetha_i <- mse_syn/(vary+mse_syn)
    tetha_i[tetha_i<0]<-0
    tetha_i[tetha_i>1]<-1
    Y_comp <- (tetha_i*y) + ((1-tetha_i)*Y_syn)
    mse_comp <- (1-tetha_i)*mse_syn
    rel_mse_comp <- mse_comp/Y_comp
    Syn_Comp <- data.frame(cbind(Y_syn, Y_comp,mse_syn,  mse_comp, rel_mse_syn, rel_mse_comp))
    colnames(Syn_Comp) = c("Y syn","Y comp", "MSE syn",  "MSE comp", "Relatif MSE syn","Relatif MSE comp")
    return(Syn_Comp)
  }
  
  dataset = list()
  est_dataset = list()
  for( j in 1:iterasi){
    set.seed(j)
    dataset[[j]] = est_2st_cl(dataY, f1, f2)
    est_dataset [[j]] = Y_synth_comp(dataX,dataset[[j]]$Y_cap_est,dataset[[j]]$var_cap_est)
  }
  
  databind = data.frame()
  databind_ind = data.frame()
  for (b in 1:iterasi) {
    databind = rbind(databind, dataset[[b]])
    databind_ind = rbind(databind_ind, est_dataset[[b]])
  }
  
  datafinal = aggregate(list(databind$Y_cap_est,databind_ind$`Y syn`,databind_ind$`Y comp`,
                             databind$var_cap_est,databind_ind$`MSE syn`,databind_ind$`MSE comp`
                             ,databind$rel_var_y,databind_ind$`Relatif MSE syn`,databind_ind$`Relatif MSE comp`),
                        by=list(databind$r102),
                        FUN=mean)
  colnames(datafinal) = c("kab", "Y dir", "Y syn","Y com", "MSE dir","MSE syn","MSE com",
                          "Relatif MSE dir","Relatif MSE syn","Relatif MSE com")
  datafinal$Efisiensi_syn <- datafinal$`MSE syn`/datafinal$`MSE dir`
  datafinal$Efisiensi_com <- datafinal$`MSE com`/datafinal$`MSE dir`
  return(datafinal)
}
b. MEnggunakan rumus MSE synthetic yang perbaikan
resampling_2st_srs_2 = function(dataY, dataX, Ni, f1, f2, iterasi ){
  est_2st_cl <- function(dataY, f1,f2){
    sp_2_ct <- function(dataY,f1,f2){
      samp_th1 <- function(mydata,f1){ #pengambilan sampel tahap 1 
        bs_u <-unique(mydata$bs_o)
        bs_u <- data.frame(bs_u)
        samp_bs <- sample(1:nrow(bs_u), size = f1*nrow(bs_u), replace = FALSE)
        sampi <- bs_u[samp_bs,]
        sampi2 <- as.data.frame(paste(sampi))
        colnames(sampi2) <- c("sampel_bs")
        return(sampi2)
      }
      hs_sp_t1 <- samp_th1(dataY,f1)
      samp_th2 <- function(dt_kb_1,hs_sp_1,f2){
        index <- c(1:nrow(hs_sp_t1))
        hs_sp_1 <- cbind(index,hs_sp_t1)
        dt_2 <- list();dt_3 <- list() ; samp_rt <- list() 
        hs_samp_srs <- list() ; hs_smpl_srs <- list() ; Mi <- list()
        for(i in hs_sp_1$index){ #Pengambilan sampel ssu scr srs wor
          dt_2[[i]] <- subset(hs_sp_1, index %in% i)
          dt_3[[i]] <- subset(dt_kb_1, bs_o %in% dt_2[[i]]$sampel_bs)
          Mi[[i]] <- nrow(dt_3[[i]])
          samp_rt[[i]] <- sample(1:length(dt_3[[i]]$pop), size = f2*length(dt_3[[i]]$pop), replace = FALSE)
          hs_samp_srs[[i]] <-  dt_3[[i]][samp_rt[[i]],]
          hs_smpl_srs[[i]] <- cbind(hs_samp_srs[[i]],Mi[[i]])
        }
        gb_samp = data.frame()
        for (j in hs_sp_1$index) {
          gb_samp <- rbind(gb_samp,hs_smpl_srs[[j]])
        }
        return(gb_samp)
      }
      res_sp <- samp_th2(dataY,hs_sp_t1,f2)
      res_sp$pop <- as.numeric(paste(res_sp$pop))
      res_sp$bs_o <- as.character(paste(res_sp$bs_o))
      res_sp$`Mi[[i]]` <- as.numeric(paste(res_sp$`Mi[[i]]`))
      dataY$bs_o <- as.character(paste(dataY$bs_o))
      ybar_i. <- aggregate(res_sp$pop, list(res_sp$bs_o), mean)
      Mi <- aggregate(res_sp$`Mi[[i]]`, list(res_sp$bs_o), mean)
      mi <- Mi$x*f2
      n <- length(unique(res_sp$bs_o))
      N <- length(unique(dataY$bs_o))
      Y_cap_est <- (N/n) * (sum(Mi$x * ybar_i.$x))
      ay <- rep(ybar_i.$x,length(res_sp$pop))
      sw_i_2 <- 1/(mi-1) * sum((res_sp$pop - ay)^2)
      sb_2 <- 1/(n-1) * sum((Mi$x*ybar_i.$x) - (1/n *(sum(Mi$x*ybar_i.$x)))^2)
      var_cap_est <- (N^2 * (1/n - 1/N) * sb_2 ) + (N/n * sum(Mi$x^2 * (1/mi - 1/Mi$x) * sw_i_2))
      rel_var_y <- var_cap_est/Y_cap_est
      hasil <- cbind(Y_cap_est,var_cap_est,rel_var_y)
      return(hasil)
    }    
    r102 = unique(dt2$kab)
    datakoeh = list() 
    for(b in r102){
      datakoeh[[b]] <- subset(dt2, kab %in% b)
    }
    
    try_ye <- list()
    for(c in r102){
      try_ye[[c]] <- sp_2_ct(data = datakoeh[[c]],f1,f2)  
    }
    
    this_it = data.frame()
    for (q in r102) {
      this_it <- rbind(this_it, try_ye[[q]])
    }
    
    this_it = cbind(r102, this_it)
  }
  
  #fungsi estimasi synthetic dan composite
  Y_synth_comp <- function(x,y,vary,Ni){
    #synthetic function
    N <- Ni
    xty <- t(x)%*%y
    xtx <- t(x)%*%x
    bt_xy <- solve(xtx)%*%xty
    bt_xy = t(bt_xy)
    Y_syn <- c(rep(0,nrow(x)))
    for(i in 1: ncol(x)){
      Y_syn = Y_syn + x[,i]*bt_xy[,i]
    }
    m <- length(Y_syn)
    Y_syn <- as.data.frame(Y_syn)
    mse <- sum((y - Y_syn)^2)/m-2
    var_y_cap_is <- c(rep(mse,m))
    Ni_2 <- N^2
    ba.1 <- (sum((Y_syn-y)^2/Ni_2))/m
    ba.2 <- (sum(rep(var(Y_syn-y),m)/Ni_2))/m
    ba_a <- ba.1 - ba.2 
    mse_syn <- var_y_cap_is + (Ni_2*ba_a)
    rel_mse_syn <- mse_syn/Y_syn
    #composite function
    tetha_i <- mse_syn/(vary+mse_syn)
    tetha_i[tetha_i<0]<-0
    tetha_i[tetha_i>1]<-1
    Y_comp <- (tetha_i*y) + ((1-tetha_i)*Y_syn)
    mse_comp <- (1-tetha_i)*mse_syn
    rel_mse_comp <- mse_comp/Y_comp
    Syn_Comp <- data.frame(cbind(Y_syn, Y_comp,mse_syn,  mse_comp, rel_mse_syn, rel_mse_comp))
    colnames(Syn_Comp) = c("Y syn","Y comp", "MSE syn",  "MSE comp", "Relatif MSE syn","Relatif MSE comp")
    return(Syn_Comp)
  }
  
  dataset = list()
  est_dataset = list()
  for( j in 1:iterasi){
    set.seed(j)
    dataset[[j]] = est_2st_cl(dataY, f1, f2)
    est_dataset [[j]] = Y_synth_comp(dataX,dataset[[j]]$Y_cap_est,dataset[[j]]$var_cap_est,Ni)
  }
  
  databind = data.frame()
  databind_ind = data.frame()
  for (b in 1:iterasi) {
    databind = rbind(databind, dataset[[b]])
    databind_ind = rbind(databind_ind, est_dataset[[b]])
  }
  
  datafinal = aggregate(list(databind$Y_cap_est,databind_ind$`Y syn`,databind_ind$`Y comp`,
                             databind$var_cap_est,databind_ind$`MSE syn`,databind_ind$`MSE comp`
                             ,databind$rel_var_y,databind_ind$`Relatif MSE syn`,databind_ind$`Relatif MSE comp`),
                        by=list(databind$r102),
                        FUN=mean)
  colnames(datafinal) = c("kab", "Y dir", "Y syn","Y com", "MSE dir","MSE syn","MSE com",
                          "Relatif MSE dir","Relatif MSE syn","Relatif MSE com")
  datafinal$Efisiensi_syn <- datafinal$`MSE syn`/datafinal$`MSE dir`
  datafinal$Efisiensi_com <- datafinal$`MSE com`/datafinal$`MSE dir`
  return(datafinal)
}
  1. Fungsi Estimasi untuk metode Two stage cluster PPSWR-SRSWOR

    1. MEnggunakan rumus MSE synthetic yang awal
#Pakai rumus awal
resampling_2st_pps = function(dataY, dataX, muatan, f1, f2, iterasi ){
  est_2st_cl <- function(dataY, f1,f2){
    sp_2_ct <- function(dataY,f1,f2){
      kb_1 <- dataY
      kb_1$bs_o <- as.character(paste(kb_1$bs_o))
      Mi_kb_1 <- data.frame(table(kb_1$bs_o))
      colnames(Mi_kb_1) <- c("bs_o","Muatan_x")
      samp_th1 <- function(data,f1){ #pengambilan sampel tahap 1 
        pps_wr <- function(sizes,n){
          N <- length(sizes)        
          cumsizes <- cumsum(sizes)
          totsize <- cumsizes[N]
          s <- numeric(n)       
          for (u in 1:n) {  
            r <- runif(1,0,totsize)
            i <- 1
            while (cumsizes[i] < r) {
              i <- i+1
            }
            s[u] <- i
          }
          return(s)
        }
        n_length <- f1*nrow(data)
        data_sa <- data[pps_wr(data$Muatan_x,n_length),]
        return(data_sa)
      }
      hs_sp_t1 <- samp_th1(Mi_kb_1,f1)
      samp_th2 <- function(dt_kb_1,hs_sp_1,f2){
        index <- c(1:nrow(hs_sp_1))
        hs_sp_1 <- cbind(index,hs_sp_1)
        dt_2 <- list();dt_3 <- list() ; samp_rt <- list() ; kode <- list() ; mi <- list() 
        hs_samp_srs <- list() ; hs_smp_srs <- list(); n_samp <- list() 
        for(i in hs_sp_1$index){ #Pengambilan sampel ssu scr srs wor
          dt_2[[i]] <- subset(hs_sp_1, index %in% i)
          dt_3[[i]] <- subset(dt_kb_1, bs_o %in% dt_2[[i]]$bs_o)
          samp_rt[[i]] <- sample(1:length(dt_3[[i]]$pop), size = f2*length(dt_3[[i]]$pop), replace = FALSE)
          hs_samp_srs[[i]] <-  dt_3[[i]][samp_rt[[i]],]
          n_samp [[i]] <- nrow(hs_samp_srs[[i]])
          kode[[i]] <- rep(i,n_samp[[i]])
          mi[[i]] <- rep(n_samp[[i]],n_samp[[i]])
          hs_smp_srs[[i]] <- cbind("kode"=kode[[i]],hs_samp_srs[[i]], "mi"=mi[[i]] )
        }
        gb_samp = data.frame()
        for (j in hs_sp_1$index) {
          gb_samp <- rbind(gb_samp,hs_smp_srs[[j]])
        }
        return(gb_samp)
      }
      res_sp <- samp_th2(kb_1,hs_sp_t1,f2) #kab 1
      res_sp$pop <- as.numeric(paste(res_sp$pop))
      res_sp$mi <- as.numeric(paste(res_sp$mi))
      y_i. <- aggregate(res_sp$pop, list(res_sp$kode), mean)
      M_nol <- sum(Mi_kb_1$Muatan_x)
      Y_cap_est <- 1/ (length(y_i.$x)) *  (sum(y_i.$x * M_nol))
      pk_1 <- M_nol*y_i.$x
      pk_2 <- pk_1 - Y_cap_est
      pk_2_x <- pk_2^2
      var_cap_est <- (sum(pk_2_x))/(((length(y_i.$x)))*((length(y_i.$x))-1))
      rel_var_y <- var_cap_est/Y_cap_est
      hasil <- cbind(Y_cap_est,var_cap_est,rel_var_y)
      return(hasil)
    }
    
    r102 = unique(dt2$kab)
    datakoeh = list() 
    for(b in r102){
      datakoeh[[b]] <- subset(dt2, kab %in% b)
    }
    
    try_ye <- list()
    for(c in r102){
      try_ye[[c]] <- sp_2_ct(data = datakoeh[[c]],f1,f2)  
    }
    
    this_it = data.frame()
    for (q in r102) {
      this_it <- rbind(this_it, try_ye[[q]])
    }
    this_it = cbind(r102, this_it)
  }  
  
  #fungsi estimasi synthetic dan composite
  Y_synth_comp <- function(x,y,vary){
    #synthetic function
    xty <- t(x)%*%y
    xtx <- t(x)%*%x
    bt_xy <- solve(xtx)%*%xty
    bt_xy = t(bt_xy)
    Y_syn <- c(rep(0,nrow(x)))
    for(i in 1: ncol(x)){
      Y_syn = Y_syn + x[,i]*bt_xy[,i]
    }
    Y_syn <- as.data.frame(Y_syn)
    mse_syn <- ((Y_syn-y)^2)-vary
    rel_mse_syn <- mse_syn/Y_syn
    #composite function
    tetha_i <- mse_syn/(vary+mse_syn)
    tetha_i[tetha_i<0]<-0
    tetha_i[tetha_i>1]<-1
    Y_comp <- (tetha_i*y) + ((1-tetha_i)*Y_syn)
    mse_comp <- (1-tetha_i)*mse_syn
    rel_mse_comp <- mse_comp/Y_comp
    Syn_Comp <- data.frame(cbind(Y_syn, Y_comp,mse_syn,  mse_comp, rel_mse_syn, rel_mse_comp))
    colnames(Syn_Comp) = c("Y syn","Y comp", "MSE syn",  "MSE comp", "Relatif MSE syn","Relatif MSE comp")
    return(Syn_Comp)
  }
  
  dataset = list()
  est_dataset = list()
  for( j in 1:iterasi){
    set.seed(j)
    dataset[[j]] = est_2st_cl(dataY, f1, f2)
    est_dataset [[j]] = Y_synth_comp(dataX,dataset[[j]]$Y_cap_est,dataset[[j]]$var_cap_est)
  }
  
  databind = data.frame()
  databind_ind = data.frame()
  for (b in 1:iterasi) {
    databind = rbind(databind, dataset[[b]])
    databind_ind = rbind(databind_ind, est_dataset[[b]])
  }
  
  datafinal = aggregate(list(databind$Y_cap_est,databind_ind$`Y syn`,databind_ind$`Y comp`,
                             databind$var_cap_est,databind_ind$`MSE syn`,databind_ind$`MSE comp`
                             ,databind$rel_var_y,databind_ind$`Relatif MSE syn`,databind_ind$`Relatif MSE comp`),
                        by=list(databind$r102),
                        FUN=mean)
  colnames(datafinal) = c("kab", "Y dir", "Y syn","Y com", "MSE dir","MSE syn","MSE com",
                          "Relatif MSE dir","Relatif MSE syn","Relatif MSE com")
  datafinal$Efisiensi_syn <- datafinal$`MSE syn`/datafinal$`MSE dir`
  datafinal$Efisiensi_com <- datafinal$`MSE com`/datafinal$`MSE dir`
  return(datafinal)
}
b. MEnggunakan rumus MSE synthetic yang perbaikan
resampling_2st_pps_2 = function(dataY, dataX, Ni, f1, f2, iterasi ){
  est_2st_cl <- function(dataY, f1,f2){
    sp_2_ct <- function(dataY,f1,f2){
      kb_1 <- dataY
      kb_1$bs_o <- as.character(paste(kb_1$bs_o))
      Mi_kb_1 <- data.frame(table(kb_1$bs_o))
      colnames(Mi_kb_1) <- c("bs_o","Muatan_x")
      samp_th1 <- function(data,f1){ #pengambilan sampel tahap 1 
        pps_wr <- function(sizes,n){
          N <- length(sizes)        
          cumsizes <- cumsum(sizes)
          totsize <- cumsizes[N]
          s <- numeric(n)       
          for (u in 1:n) {  
            r <- runif(1,0,totsize)
            i <- 1
            while (cumsizes[i] < r) {
              i <- i+1
            }
            s[u] <- i
          }
          return(s)
        }
        n_length <- f1*nrow(data)
        data_sa <- data[pps_wr(data$Muatan_x,n_length),]
        return(data_sa)
      }
      hs_sp_t1 <- samp_th1(Mi_kb_1,f1)
      samp_th2 <- function(dt_kb_1,hs_sp_1,f2){
        index <- c(1:nrow(hs_sp_1))
        hs_sp_1 <- cbind(index,hs_sp_1)
        dt_2 <- list();dt_3 <- list() ; samp_rt <- list() ; kode <- list() ; mi <- list() 
        hs_samp_srs <- list() ; hs_smp_srs <- list(); n_samp <- list() 
        for(i in hs_sp_1$index){ #Pengambilan sampel ssu scr srs wor
          dt_2[[i]] <- subset(hs_sp_1, index %in% i)
          dt_3[[i]] <- subset(dt_kb_1, bs_o %in% dt_2[[i]]$bs_o)
          samp_rt[[i]] <- sample(1:length(dt_3[[i]]$pop), size = f2*length(dt_3[[i]]$pop), replace = FALSE)
          hs_samp_srs[[i]] <-  dt_3[[i]][samp_rt[[i]],]
          n_samp [[i]] <- nrow(hs_samp_srs[[i]])
          kode[[i]] <- rep(i,n_samp[[i]])
          mi[[i]] <- rep(n_samp[[i]],n_samp[[i]])
          hs_smp_srs[[i]] <- cbind("kode"=kode[[i]],hs_samp_srs[[i]], "mi"=mi[[i]] )
        }
        gb_samp = data.frame()
        for (j in hs_sp_1$index) {
          gb_samp <- rbind(gb_samp,hs_smp_srs[[j]])
        }
        return(gb_samp)
      }
      res_sp <- samp_th2(kb_1,hs_sp_t1,f2) #kab 1
      res_sp$pop <- as.numeric(paste(res_sp$pop))
      res_sp$mi <- as.numeric(paste(res_sp$mi))
      y_i. <- aggregate(res_sp$pop, list(res_sp$kode), mean)
      M_nol <- sum(Mi_kb_1$Muatan_x)
      Y_cap_est <- 1/ (length(y_i.$x)) *  (sum(y_i.$x * M_nol))
      pk_1 <- M_nol*y_i.$x
      pk_2 <- pk_1 - Y_cap_est
      pk_2_x <- pk_2^2
      var_cap_est <- (sum(pk_2_x))/(((length(y_i.$x)))*((length(y_i.$x))-1))
      rel_var_y <- var_cap_est/Y_cap_est
      hasil <- cbind(Y_cap_est,var_cap_est,rel_var_y)
      return(hasil)
    }
    
    r102 = unique(dt2$kab)
    datakoeh = list() 
    for(b in r102){
      datakoeh[[b]] <- subset(dt2, kab %in% b)
    }
    
    try_ye <- list()
    for(c in r102){
      try_ye[[c]] <- sp_2_ct(data = datakoeh[[c]],f1,f2)  
    }
    
    this_it = data.frame()
    for (q in r102) {
      this_it <- rbind(this_it, try_ye[[q]])
    }
    this_it = cbind(r102, this_it)
  }  
  
  #fungsi estimasi synthetic dan composite
  Y_synth_comp <- function(x,y,vary,Ni){
    #synthetic function
    N <- Ni
    xty <- t(x)%*%y
    xtx <- t(x)%*%x
    bt_xy <- solve(xtx)%*%xty
    bt_xy = t(bt_xy)
    Y_syn <- c(rep(0,nrow(x)))
    for(i in 1: ncol(x)){
      Y_syn = Y_syn + x[,i]*bt_xy[,i]
    }
    m <- length(Y_syn)
    Y_syn <- as.data.frame(Y_syn)
    mse <- sum((y - Y_syn)^2)/m-2
    var_y_cap_is <- c(rep(mse,m))
    Ni_2 <- N^2
    ba.1 <- (sum((Y_syn-y)^2/Ni_2))/m
    ba.2 <- (sum(rep(var(Y_syn-y),m)/Ni_2))/m
    ba_a <- ba.1 - ba.2 
    mse_syn <- var_y_cap_is + (Ni_2*ba_a)
    rel_mse_syn <- mse_syn/Y_syn
    #composite function
    tetha_i <- mse_syn/(vary+mse_syn)
    tetha_i[tetha_i<0]<-0
    tetha_i[tetha_i>1]<-1
    Y_comp <- (tetha_i*y) + ((1-tetha_i)*Y_syn)
    mse_comp <- (1-tetha_i)*mse_syn
    rel_mse_comp <- mse_comp/Y_comp
    Syn_Comp <- data.frame(cbind(Y_syn, Y_comp,mse_syn,  mse_comp, rel_mse_syn, rel_mse_comp))
    colnames(Syn_Comp) = c("Y syn","Y comp", "MSE syn",  "MSE comp", "Relatif MSE syn","Relatif MSE comp")
    return(Syn_Comp)
  }
  
  dataset = list()
  est_dataset = list()
  for( j in 1:iterasi){
    set.seed(j)
    dataset[[j]] = est_2st_cl(dataY, f1, f2)
    est_dataset [[j]] = Y_synth_comp(dataX,dataset[[j]]$Y_cap_est,dataset[[j]]$var_cap_est,Ni)
  }
  
  databind = data.frame()
  databind_ind = data.frame()
  for (b in 1:iterasi) {
    databind = rbind(databind, dataset[[b]])
    databind_ind = rbind(databind_ind, est_dataset[[b]])
  }
  
  datafinal = aggregate(list(databind$Y_cap_est,databind_ind$`Y syn`,databind_ind$`Y comp`,
                             databind$var_cap_est,databind_ind$`MSE syn`,databind_ind$`MSE comp`
                             ,databind$rel_var_y,databind_ind$`Relatif MSE syn`,databind_ind$`Relatif MSE comp`),
                        by=list(databind$r102),
                        FUN=mean)
  colnames(datafinal) = c("kab", "Y dir", "Y syn","Y com", "MSE dir","MSE syn","MSE com",
                          "Relatif MSE dir","Relatif MSE syn","Relatif MSE com")
  datafinal$Efisiensi_syn <- datafinal$`MSE syn`/datafinal$`MSE dir`
  datafinal$Efisiensi_com <- datafinal$`MSE com`/datafinal$`MSE dir`
  return(datafinal)
}