Background

This report aims to estimate the number of working and school population at metropolitan area in Central Jawa called Kedungsepur (Kab Kendal, Kab Demak, Kota Semarang, Kab Semarang, Kota Salatiga, Kab Grobogan). Method used to estimate the number of working and school population is small area estimation. We tried some SAE models and selected a model with the best accuracy

  1. Library loading
library(readxl)
library(foreign)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggplot2)
library(reshape2)
library(sae)
## Loading required package: MASS
## 
## Attaching package: 'MASS'
## The following object is masked from 'package:dplyr':
## 
##     select
## Loading required package: lme4
## Loading required package: Matrix
library(tidyr)
## 
## Attaching package: 'tidyr'
## The following objects are masked from 'package:Matrix':
## 
##     expand, pack, unpack
## The following object is masked from 'package:reshape2':
## 
##     smiths
library(haven)
library(survey)
## Loading required package: grid
## Loading required package: survival
## 
## Attaching package: 'survey'
## The following object is masked from 'package:graphics':
## 
##     dotchart
library(stringr)
  1. read data
sae_dataset <- read.csv("selected variables.csv") %>%
  na.omit()
sae_dataset <- sae_dataset %>%
  mutate(var_dir = as.numeric(unlist((RSE * ESTIMATE/100)^2)))
  1. employ SAE EBLUP Fay Herriot
    ESTIMATE ~ jml_smp + jml_eko + jml_medis + jml_bank + prop_sktm + jml_koperasi
sae_eblup = mseFH(ESTIMATE ~ jml_smp + jml_eko + jml_medis + jml_bank + 
                    prop_sktm + jml_koperasi, vardir=var_dir, 
                  method = "REML", MAXITER = 500, PRECISION = 0.0001,
                  B = 0, data=sae_dataset)
mse_eblup = data.frame(sae_eblup$mse)
est_eblup = data.frame(sae_eblup$est$eblup)

eblup <- cbind(est_eblup,mse_eblup) %>%
  rename(est = sae_eblup.est.eblup,
         mse = sae_eblup.mse)
eblup <- eblup %>%
  mutate(CV = (mse^0.5)/est*100)
eblup <- eblup %>%
  mutate(model = "EBLUP")
  1. employ SAE HB under normal distribution
    ESTIMATE ~ jml_smp + jml_eko + jml_medis + jml_bank + prop_sktm + jml_koperasi
library(saeHB)
## 
## Attaching package: 'saeHB'
## The following object is masked from 'package:stats':
## 
##     Gamma
par(mfrow = c(2,2))   
HB_normal = 
  Normal(ESTIMATE ~ jml_smp + jml_eko + jml_medis + jml_bank + 
                    prop_sktm + jml_koperasi,
         vardir = "var_dir",
         iter.update = 100,
         iter.mcmc = 10000,
         thin = 10,
         burn.in = 4000,
         tau.u = 1,
         data=sae_dataset)
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
## 
## Compiling model graph
##    Resolving undeclared variables
##    Allocating nodes
## Graph information:
##    Observed stochastic nodes: 92
##    Unobserved stochastic nodes: 100
##    Total graph size: 1318
## 
## Initializing model
HB_normal_data <- data.frame(HB_normal$Est) %>%
  dplyr::select(MEAN,SD)
HB_normal_data <- HB_normal_data %>%
  rename(est = MEAN,
         SD = SD)
HB_normal_data <- HB_normal_data %>%
  mutate(CV = SD/est*100)
HB_normal_data <- HB_normal_data %>%
  mutate(model = "HB_normal")
  1. Employ SAE HB under beta distribution
#library(saeHB)
#par(mfrow = c(2,2))
#sae_dataset
#HB_beta =
#  Beta(
#  ESTIMATE ~ jml_smp + jml_eko + jml_medis + jml_bank + 
#                    prop_sktm + jml_koperasi,
#  iter.update = 100,
#  iter.mcmc = 10000,
#  thin = 4,
#  burn.in = 2000,
#  tau.u = 1,
#  data = sae_dataset)
  1. employ SAE HB under negative binomial distribution
#v= c(1,1,1,1,1,1,1)
#c= c(0,0,0,0,0,0,0)
#HB_negbinomial =
#  NegativeBinomial(ESTIMATE ~ jml_smp + jml_eko + jml_medis + jml_bank + 
#                    prop_sktm + jml_koperasi,
#                  iter.update=1000,
#                  var.coef = v,
#                  coef = c,
#                  data=sae_dataset
#                  )
  1. Employ FH with log transformation
library(emdi)
## Registered S3 method overwritten by 'openxlsx':
##   method               from         
##   as.character.formula formula.tools
## 
## Attaching package: 'emdi'
## The following object is masked from 'package:sae':
## 
##     direct
## The following object is masked from 'package:stats':
## 
##     step
#vars <- c("prop_bts","prop_perdesaan","prop_sd","jml_sd","prop_smp","jml_smp","prop_sma","jml_sma","prop_pt","jml_pt","prop_desaagri","prop_desanonagri","prop_imk","jml_imk","prop_bank","jml_bank","prop_koperasi","jml_koperasi","prop_eko","jml_eko","prop_kredit","jml_kredit","prop_sktm","prop_health","jml_health","prop_skill","prop_blt","prop_padatkarya","prop_kumuh","prop_air","prop_sani","prop_aksesjalan","prop_sinyalinet","prop_medis","jml_medis","prop_angkumum")


#remove_highly_correlated <- function(data, vars, threshold = 0.8) {
#  aux_vars <- vars[sapply(vars, function(v) { x <- data[[v]]; !all(is.na(x)) && sd(x, na.rm = TRUE) > 0 })]
#  datamat <- data[, aux_vars, drop=FALSE]
#  to_remove <- c()
#  repeat {
#    cor_mat <- cor(datamat, use = "pairwise.complete.obs")
#    cor_mat[lower.tri(cor_mat, diag = TRUE)] <- NA
#    max_cor <- max(abs(cor_mat), na.rm = TRUE)
#    if (is.na(max_cor) || max_cor <= threshold) break
#    idx <- which(abs(cor_mat) == max_cor, arr.ind = TRUE)[1, ]
#    v1 <- rownames(cor_mat)[idx[1]]
#    v2 <- colnames(cor_mat)[idx[2]]
#    var1 <- var(datamat[[v1]], na.rm = TRUE)
#    var2 <- var(datamat[[v2]], na.rm = TRUE)
#    if (var1 >= var2) {
#      to_remove <- c(to_remove, v2)
#      datamat[[v2]] <- NULL
#    } else {
#      to_remove <- c(to_remove, v1)
#      datamat[[v1]] <- NULL
#    }
#  }
#  final_vars <- setdiff(aux_vars, to_remove)
#  return(final_vars)
#}


#  candidate_vars_sub <- sae_dataset %>%
#    dplyr::select(!c(X,IDAREA,ESTIMATE,RSE,var_dir))
#  vars_final <- remove_highly_correlated(candidate_vars_sub, vars)
  
#  fh_emdi <- fh(
#    fixed = as.formula(paste("ESTIMATE ~", paste(vars_final, collapse = " + "))),
#    vardir = "var_dir",
#    combined_data = sae_dataset,
#    domains = "IDAREA",
#    MSE = TRUE,
#    transformation = "log",
#    backtransformation = "bc_crude",
#    method = "ml"
#  )
#  step_fh <- emdi::step(fh_emdi, criterion = "AICc", direction = "both")
#print(step_fh$fixed)
fh_model <- fh(
    fixed = ESTIMATE ~ prop_sd + jml_bank + jml_eko + prop_kredit + prop_medis + 
      jml_medis,
    vardir = "var_dir",
    combined_data = sae_dataset,
    domains = "IDAREA",
    MSE = TRUE,
    transformation = "log",
    backtransformation = "bc_crude",
    method = "ml"
  )

FH_logtrans <- data.frame(est = fh_model$ind$FH, MSE = fh_model$MSE$FH)
FH_logtrans <- FH_logtrans %>%
  mutate(CV = (MSE^0.5)/est*100)
FH_logtrans <- FH_logtrans %>%
  dplyr::select(!MSE) %>%
  mutate(model = "FH logtrans")
print(fh_model$fixed)
## ESTIMATE ~ prop_sd + jml_bank + jml_eko + prop_kredit + prop_medis + 
##     jml_medis


the best model for FH with log transformation is as above

summary(fh_model)
## Call:
##  fh(fixed = ESTIMATE ~ prop_sd + jml_bank + jml_eko + prop_kredit + 
##     prop_medis + jml_medis, vardir = "var_dir", combined_data = sae_dataset, 
##     domains = "IDAREA", method = "ml", transformation = "log", 
##     backtransformation = "bc_crude", MSE = TRUE)
## 
## Out-of-sample domains:  0 
## In-sample domains:  92 
## 
## Variance and MSE estimation:
## Variance estimation method:  ml 
## Estimated variance component(s):  4.738746e-05 
## MSE method:  datta-lahiri 
## 
## Coefficients:
##             coefficients   std.error t.value   p.value    
## (Intercept)  11.05949725  0.36903551 29.9687 < 2.2e-16 ***
## prop_sd      -4.37726403  2.15225362 -2.0338 0.0419713 *  
## jml_bank     -0.01292820  0.00598183 -2.1612 0.0306765 *  
## jml_eko       0.00027946  0.00017033  1.6407 0.1008670    
## prop_kredit   5.29906380  3.45361586  1.5344 0.1249430    
## prop_medis   -1.34041281  0.35182254 -3.8099 0.0001390 ***
## jml_medis     0.00396658  0.00101994  3.8890 0.0001006 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Explanatory measures:
##    loglike      AIC      BIC     AdjR2     FH_R2
## 1 -32.0488 80.09761 100.2719 0.5991787 0.9936997
## 
## Residual diagnostics:
##                           Skewness Kurtosis Shapiro_W  Shapiro_p
## Standardized_Residuals -0.12466738 3.564284 0.9792427 0.15000907
## Random_effects         -0.06788717 4.040607 0.9729892 0.05284105
## 
## Transformation:
##  Transformation Back_transformation
##             log            bc_crude
compare_plot(fh_model, CV = TRUE, label = "no_title")

## Press [enter] to continue

## Press [enter] to continue

## Press [enter] to continue

  1. Visualization
direct <- sae_dataset %>%
  dplyr::select(ESTIMATE, RSE)
direct <- direct %>%
  rename(est = ESTIMATE,
         CV = RSE) %>%
  mutate(model = "DIRECT")
all_models <- rbind(dplyr::select(eblup,est,CV,model),dplyr::select(HB_normal_data,est,CV,model),direct,FH_logtrans)


all_models %>%
  ggplot(aes(y = est,
             x = model,
             color = model)) +
  geom_boxplot() +
  theme_bw() +
  theme(legend.position = "bottom",
        axis.text.x = element_blank(),
        axis.ticks.x = element_blank()) +
  ylab("Estimasi jumlah ppd bekerja atau sekolah") +
  xlab("")

all_models %>%
  ggplot(aes(y = CV,
             x = model,
             color = model)) +
  geom_boxplot() +
  theme_bw() +
  geom_hline(yintercept = 25) +
  theme(legend.position = "bottom",
        axis.text.x = element_blank(),
        axis.ticks.x = element_blank()) +
  ylab("CV") +
  xlab("")

all_models %>%
  filter(model== "DIRECT") %>%
  count(CV <=25)
##   CV <= 25  n
## 1    FALSE 91
## 2     TRUE  1
all_models %>%
  filter(model== "EBLUP") %>%
  count(CV <=25)
##   CV <= 25  n
## 1    FALSE  7
## 2     TRUE 85
all_models %>%
  filter(model== "HB_normal") %>%
  count(CV <=25)
##   CV <= 25  n
## 1     TRUE 92
all_models %>%
  filter(model== "FH logtrans") %>%
  count(CV <=25)
##   CV <= 25  n
## 1    FALSE  5
## 2     TRUE 87