1 Latar Belakang

NEET (Not in Education, Employment, or Training) adalah kondisi dimana seseorang tidak sedang bekerja, sekolah, ataupun pelatihan.Youth NEET adalah salah satu Key Indicator of Labor Market (KILM) ke-10 mengenai Youth Employment.

2 Pre-Processing

2.1 Packages yang diperlukan

Packages foreign untuk membaca file berformat .dbf Packages dplyr untuk melakukan engineering data Packages srvyr untuk melakukan estimasi statistik Packages survey untuk alternatif melakukan estimasi statistik

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(srvyr)
## 
## Attaching package: 'srvyr'
## The following object is masked from 'package:stats':
## 
##     filter
library(ggplot2)

2.2 Impor Data

Data yang digunakan adalah data SAK tahun 2020-2022, rencananya juga menggunakan data tahun 2023. Data yang dipakai dapat diakses disini

dt2020 <- read.dbf('sak202008.dbf')
dt2021 <- read.dbf('sak202108.dbf')
dt2022 <- read.dbf('sak202208.dbf')
dt2023 <- read.dbf('sak202308_15_diseminasi.dbf')
kd_wilayah <- read.csv('kd_wilayah.csv',sep=';')
kd_kbli <- read.csv('kd_kbli.csv',sep=';')
kd_kbji <- read.csv('kd_kbji.csv',sep=';')

2.3 Format Kode Wilayah

kd_wilayah <- kd_wilayah %>% 
  select(NAMA_PROV = nama_prov, KODE_PROV = value_prov,
         NAMA_KAB = nama_kab, KODE_KAB = kab)

2.4 Data Pre-Processing Menyamakan Kolom Antar Periode Data

svy_sak2022 <- rbind(dt2023 %>% 
                       select(KODE_KAB, KODE_PROV, TAHUN,PSU,SSU=ROWINDEX,K1=ROWINDEX, K3, K6=K9, R4,
                              R5, Skill = R6D, Training=R6H, 
                              R9A, R9B, R9C, R10,
                              R31A, R31B, R35A, R46D=R43D, K4, R6A, WEIGHT=WEIGHTR,
                              R13A, R14AKATEGO, R14BKBJI20, R15A_UANG = R15_UANG, 
                              R15A_BRG = R15_BRG,
                              JAM_KERJA = R28B_JML, TAWARAN_KERJA = R36A,
                              TAMBAH_JAMKERJA = R29A, 
                              R47A = R44A, R47B = R44B, R47E = R44D, R47F = R44G, R47G = R44I),
                     dt2022 %>% 
                       select(KODE_KAB, KODE_PROV, TAHUN, PSU, SSU, K1, K3, K6, R4, 
                              R5, Skill = R6D, Training=R6H,
                              R9A, R9B, R9C, R10,
                              R31A, R31B, R35A, R46D, K4, R6A, WEIGHT,
                              R13A, R14AKATEGO, R14BKBJI20, R15A_UANG, 
                              R15A_BRG, 
                              JAM_KERJA = R28B_JML, TAWARAN_KERJA = R36A,
                              TAMBAH_JAMKERJA = R29A, 
                              R47A , R47B, R47E, R47F, R47G),
                    dt2021 %>% 
                       select(KODE_KAB, KODE_PROV, TAHUN,PSU, SSU=NO_DSRT, K1, K3, K6, R4, 
                              R5, Skill = R6D, Training=R6I,
                              R9A, R9B, R9C, R10=R10A,
                              R31A=R29A, R31B=R29B, R35A=R32A, R46D=R42D, K4, R6A,
                              WEIGHT=FINAL_WEIG,
                              R13A=R12A, R14AKATEGO = KBLI2020_1,
                              R14BKBJI20 = KBJI2014, R15A_UANG = R14A_UANG,
                              R15A_BRG = R14A2_BRG, JAM_KERJA = R27B_JML,
                              TAWARAN_KERJA = R33, TAMBAH_JAMKERJA = R28A,
                              R47A = R44A, R47B = R44B, R47E = R44E, R47F = R44F, R47G = R44G),
                     dt2020 %>% 
                       select(KODE_KAB, KODE_PROV, TAHUN,PSU=ID_NKS, SSU=NO_DSRT, K1, K3, K6, R4,
                              R5, Skill = R6D, Training=R6E,
                              R9A, R9B, R9C, 
                              R10=R10A,
                              R31A=R22A, R31B=R22B, R35A=R25A, R46D=R31D, K4, R6A,
                              WEIGHT=FINAL_WEIG,
                              R13A = R12A, R14AKATEGO = R13A_KATEG,
                              R14BKBJI20 = R13B_KBJI2, R15A_UANG = R14A1,
                              R15A_BRG = R14A2, JAM_KERJA = R20B,
                              TAWARAN_KERJA = R26, TAMBAH_JAMKERJA = R21A,
                              R47A = R27A, R47B = R27B, R47E=R27D, R47F = R27E, R47G = R27F)) %>% 
  #Sesuaikan Nama Kolom
  mutate(TAHUN = substr(TAHUN, start=1, stop=4)) %>% #Buat Flag Tahun
  mutate(Jenis_Kegiatan =
           case_when(K6 >= 15 & (R9A==1 | R9B==1 | R9C==1 | R10==1) ~ '1. Bekerja',
                     K6 >= 15 & ((R9A==2 & R9B==2 & R9C==2 & R10==2 & R31A==1)) |
                     K6 >= 15 & ((R9A==2 & R9B==2 & R9C==2 & 
                                    R10==2 & R31A==2 & R31B==1)) |
                     K6 >= 15 & ((R9A==2 & R9B==2 & R9C==2 & 
                                    R10==2 & R31A==2 & R31B==2 & R35A<=3)) ~ '2. Pengangguran',
                     K6 >= 15 & (R9A==2 & R9B==2 & R9C==2 & 
                                   R10==2 & R31A==2 & R31B==2 & R35A>3 & R46D==1) ~ '4. Sekolah',
                     K6 >= 15 & (R9A==2 & R9B==2 & R9C==2 &
                                   R10==2 & R31A==2 & R31B==2 & R35A>3 & R46D==2) ~ '5. Mengurus Rumah Tangga',
                     K6 >= 15 & (R9A==2 & R9B==2 & R9C==2 & R10==2 &
                                   R31A==2 & R31B==2 & R35A>3 & R46D %in% c(3,4)) ~ '6. Lainnya',
                     K6 < 15 ~ '7. Bukan Usia Kerja')) %>%
  mutate(Jenis_Kegiatan2 = ifelse(Jenis_Kegiatan == '1. Bekerja', '1. Bekerja',
                                  ifelse(Jenis_Kegiatan == '2. Pengangguran', '2. Pengangguran',
                                         ifelse(Jenis_Kegiatan %in% 
                                                  c('3. Bukan Angkatan Kerja',
                                                    '4. Sekolah',
                                                    '5. Mengurus Rumah Tangga',
                                                    '6. Lainnya'), '3. Bukan Angkatan Kerja',
                                                '4. Bukan Usia Kerja')))) %>% 
  mutate(Jenis_Kegiatan3 = ifelse(Jenis_Kegiatan2 %in%
                                    c('1. Bekerja','2. Pengangguran'), '1. Angkatan Kerja',
                                  ifelse(Jenis_Kegiatan2 == '3. Bukan Angkatan Kerja','2. Bukan Angkatan Kerja','3. Bukan Usia Kerja'))) %>% 
  mutate(kelompok_umur = case_when(K6 >= 15 & K6 <= 19 ~ "15-19",
                                   K6 >= 20 & K6 <= 24 ~ "20-24",
                                   K6 >= 25 & K6 <= 29 ~ "25-29",
                                   K6 >= 30 & K6 <= 34 ~ "30-34",
                                   K6 >= 35 & K6 <= 39 ~ "35-39",
                                   K6 >= 40 & K6 <= 44 ~ "40-44",
                                   K6 >= 45 & K6 <= 49 ~ "45-49",
                                   K6 >= 50 & K6 <= 54 ~ "50-54",
                                   K6 >= 55 & K6 <= 59 ~ "55-59",
                                   K6 >= 60 & K6 <= 64 ~ "60-64",
                                   K6 >= 65 ~ "65+")) %>% 
  mutate(K4 = ifelse(K4==1,'Laki-laki','Perempuan'),
         PENDIDIKAN = case_when(R6A <= 2 ~ '1. <= SD',
                                R6A == 3 ~'2. SMP',
                                R6A %in% c(4,5,6) ~ '3. SMA',
                                R6A %in% c(7,8,9,10,11,12) ~ '4. Perguruan Tinggi')) %>% 
  mutate(KBLI3 = ifelse(R14AKATEGO %in% 1, 'A. Pertanian',
                        ifelse(R14AKATEGO %in% c(2:6), 'B. Industri','C. Jasa'))) %>% 
  mutate(KBLI_Informal = ifelse(R13A %in% c(3,4),'Formal',
                                ifelse(R13A %in% c(1,2,5,6,7),'Informal','NULL'))) %>%
  mutate(R4 = ifelse(R4 == 1,'Belum Kawin','Kawin/Pernah Kawin')) %>% 
  inner_join(kd_wilayah) %>% left_join(kd_kbli) %>%  
  as_survey_design(weights = WEIGHT)
## Joining with `by = join_by(KODE_KAB, KODE_PROV)`
## Joining with `by = join_by(R14AKATEGO)`

2.5 Assign NEET Flag

svy_sak2022 = svy_sak2022 %>% 
  mutate(NEET = ifelse(K6 >= 15 & K6 <= 24 & Training == 2 & R5 !=2 & 
                         R9A ==2 & R9B ==2 & R9C ==2 & R10 == 2,'2. NEET','1. Non NEET'))
svy_sak2022 = svy_sak2022 %>% 
  mutate(NEET_Info = ifelse(NEET == '1. Non NEET','Non NEET',
                            ifelse(R31A == 1 | R31B == 1 ,'1. Mencari Kerja',
                              ifelse(R31A == 2 & R35A == 5,
                                  '2. Mengurus Rumah Tangga',
                                    ifelse(R31A == 2 & R35A == 3,'3. Putus Asa',
                                      ifelse(R31A == 2 & R35A == 6,'4. Kurangnya Infrastruktur',
                                        ifelse(R31A == 2 & R35A == 7,'5. Tidak mampu melakukan pekerjaan',
                                               '6. Lainnya')))))))
svy_sak2022 = svy_sak2022 %>% 
  mutate(Wilayah = case_when(KODE_PROV %in% c(11:21) ~ "1. Sumatera",
                             KODE_PROV %in% c(31:36) ~ "2. Jawa",
                             KODE_PROV %in% c(51:53) ~ "3. Balinusra",
                             KODE_PROV %in% c(61:65) ~ "4. Kalimantan",
                             KODE_PROV %in% c(71:76) ~ "5. Sulawesi",
                             KODE_PROV %in% c(81:82,91,94) ~ "6. Maluku Papua"))

3 Alasan dibalik NEET

3.1 Kegiatan NEET Seminggu terakhir

svy_sak2022 %>% filter(TAHUN == 2023) %>% 
  filter(NEET_Info != 'Non NEET') %>% 
  group_by(K4,NEET_Info) %>% 
  summarise(Jumlah = round(survey_prop()*100,2)) %>% 
  mutate(No = rep(6:1),
         No_JK = ifelse(K4 == 'Laki-laki',2,1)) %>% 
  ggplot(aes(x=Jumlah, y=reorder(NEET_Info, No),
             fill=reorder(K4, No_JK))) +
  geom_col(position = 'dodge') +
  theme_minimal() +
  labs(x='Persentase (%)',y='Kegiatan NEET Seminggu Terakhir', fill = 'Jenis Kelamin') +
  scale_x_continuous(breaks=c(0:10)*10) +
  scale_fill_manual(values = c('#D14958','#00798C'))
## When `proportion` is unspecified, `survey_prop()` now defaults to `proportion = TRUE`.
## ℹ This should improve confidence interval coverage.
## This message is displayed once per session.

4 Analisis Pra Kerja

4.1 Pra Kerja Overview

library(dplyr)
library(srvyr)
Persentase_Prakerja12 <- svy_sak2022 %>%
  mutate(NEET = ifelse(K6 <= 24 & K6 >= 15 & NEET == '2. NEET', 
                       '1. NEET 15-24 Tahun', 
                       ifelse(K6 <= 24 & K6 >= 15 & NEET == '1. Non NEET', 
                              '2. Non Neet 15-24 Tahun','3. Non NEET > 24 Tahun'))) %>% 
  group_by(TAHUN,R47E, NEET) %>% 
  filter(R47F == 1) %>% 
  summarise(Jumlah = round(survey_prop()*100,2),
            Jumlah_n = n())

plot2 <- Persentase_Prakerja12 %>% 
  ggplot(aes(x=TAHUN,y=Jumlah,group=NEET,fill=NEET)) +
  geom_col() +
  theme_minimal() +
  labs(x='TAHUN',y='Persentase (%)') +
  scale_y_continuous(breaks = c(0:10)*10) +
  scale_fill_manual(values = c('#00798C','#EDAE49','#D14958')) +
  theme(legend.position = 'right')
plot2

4.2 Visualisasi Tahapan NEET dalam kartu pra kerja

library(ggsankey)

df <- svy_sak2022$variables %>% filter(TAHUN == 2023) %>% 
  filter(K6 >=15 & K6 <= 24) %>% 
  filter(NEET == '2. NEET') %>% 
  select(NEET, K4, R47A, R47B, R47E, R47F, R47G) %>% 
  mutate(NEET = 'NEET Usia \n 15-24 Tahun',
         
         R47A = case_when(R47A == 1 & K4 == 'Laki-laki' ~ '1. L Tahu',
                          R47A == 1 & K4 == 'Perempuan' ~ '2. P Tahu', 
                          R47A == 2 & K4 == 'Laki-laki'~ '1. L Tidak Tahu',
                          R47A == 2 & K4 == 'Perempuan' ~ '2. P Tidak Tahu',
                          is.na(R47A) & K4 == 'Laki-laki' ~ '1.1 L NEET Usia < 18 Tahun',
                          is.na(R47A) & K4 == 'Perempuan' ~ '2.1 P NEET Usia < 18 Tahun'),
         
         R47B = case_when(R47B == 1 & K4 == 'Laki-laki' ~ '1. L Mendaftar',
                          R47B == 1 & K4 == 'Perempuan' ~ '2. P Mendaftar', 
                          R47B == 2 & K4 == 'Laki-laki'~ '1. L Tidak Mendaftar',
                          R47B == 2 & K4 == 'Perempuan' ~ '2. P Tidak Mendaftar',
                          is.na(R47B) & K4 == 'Laki-laki' ~ '1.1 L',
                          is.na(R47B) & K4 == 'Perempuan' ~ '2.1 P'),
         
         R47E = case_when(R47E == 1 & K4 == 'Laki-laki' ~ '1. L Lolos',
                          R47E == 1 & K4 == 'Perempuan' ~ '2. P Lolos', 
                          R47E == 2 & K4 == 'Laki-laki'~ '1. L Tidak Lolos',
                          R47E == 2 & K4 == 'Perempuan' ~ '2. P Tidak Lolos',
                          is.na(R47E) & K4 == 'Laki-laki' ~ '1.1 L',
                          is.na(R47E) & K4 == 'Perempuan' ~ '2.1 P'),
         
         R47F = case_when(R47F == 1 & K4 == 'Laki-laki' ~ '1. L Selesai Pelatihan',
                          R47F == 1 & K4 == 'Perempuan' ~ '2. P Selesai Pelatihan', 
                          R47F == 2 & K4 == 'Laki-laki'~ '1. L Tidak Selesai \n Pelatihan',
                          R47F == 2 & K4 == 'Perempuan' ~ '2. P Tidak Selesai \n Pelatihan',
                          is.na(R47F) & K4 == 'Laki-laki' ~ '1.1 L',
                          is.na(R47F) & K4 == 'Perempuan' ~ '2.1 P'),
         
         R47G = case_when(R47G == 1 & K4 == 'Laki-laki' ~ '1. L Keterampilan \n Meningkat',
                          R47G == 1 & K4 == 'Perempuan' ~ '2. P Keterampilan \n Meningkat', 
                          R47G == 2 & K4 == 'Laki-laki'~ '1. L Keterampilan \n Tidak Meningkat',
                          R47G == 2 & K4 == 'Perempuan' ~ '2. P Keterampilan \n Tidak Meningkat',
                          is.na(R47G) & K4 == 'Laki-laki' ~ '1.1 L',
                          is.na(R47G) & K4 == 'Perempuan' ~ '2.1 P'))
colnames(df) <- c('NEET', 'Jenis Kelamin',
                  'Mengetahui', 'Mendaftar', 'Lolos',
                  'Pelatihan','Dampak')

df <- df %>% make_long(NEET,`Jenis Kelamin`,`Mengetahui`,
            `Mendaftar`, `Lolos`,
            `Pelatihan`,
            `Dampak`)

plot <- ggplot(df, aes(x = x, 
               next_x = next_x, 
               node = node, 
               next_node = next_node,
               fill = factor(node),
               label = case_when(
                        (node == '2.1 P' | node == '1.1 L') ~ '',
                        (node == '2.1 P NEET Usia < 18 Tahun' | 
                           node == '1.1 L NEET Usia < 18 Tahun') ~ 
                          'NEET Usia \n < 18 Tahun',
                        (node == '2. P Tidak Pernah \n Mengikuti Pelatihan' | 
                         node == '1. L Tidak Pernah \n Mengikuti Pelatihan') ~ 
                          'Tidak Pernah \n Mengikuti Pelatihan',
                        (node == '2. P Pernah Mengikuti \n Pelatihan' | 
                         node == '1. L Pernah Mengikuti \n Pelatihan') ~ 
                          'Pernah Mengikuti \n Pelatihan',
                        (node == '2. P Tahu' | 
                         node == '1. L Tahu') ~  'Tahu Pra-Kerja',
                        (node == '2. P Tidak Tahu' | 
                         node == '1. L Tidak Tahu') ~  'Tidak Tahu \n Pra-Kerja',
                        (node == '2. P Tidak Mendaftar' | 
                         node == '1. L Tidak Mendaftar') ~  'Tidak Mendaftar \n Pra-Kerja',
                        (node == '2. P Mendaftar' | 
                         node == '1. L Mendaftar') ~  'Mendaftar Pra-Kerja',
                        (node == '2. P Lolos' | 
                         node == '1. L Lolos') ~  'Lolos Pra-Kerja',
                        (node == '2. P Tidak Lolos' | 
                         node == '1. L Tidak Lolos') ~  'Tidak Lolos \n Pra-Kerja',
                        (node == '2. P Selesai Pelatihan' | 
                         node == '1. L Selesai Pelatihan') ~  
                          'Selesai Pelatihan Pra-Kerja',
                        (node == '2. P Tidak Selesai \n Pelatihan' | 
                         node == '1. L Tidak Selesai \n Pelatihan') ~  
                          'Tidak Selesai Pelatihan \n Pra-Kerja',
                        (node == '2. P Keterampilan \n Meningkat' | 
                         node == '1. L Keterampilan \n Meningkat') ~  
                          'Keterampilan Meningkat',
                        (node == '2. P Keterampilan \n Tidak Meningkat' | 
                         node == '1. L Keterampilan \n Tidak Meningkat') ~  
                          'Keterampilan \n Tidak Meningkat',
                        (node == '2. P NEET Tanpa \n Keterampilan' | 
                         node == '1. L NEET Tanpa \n Keterampilan') ~  
                          'NEET Tanpa \n Keterampilan',
                        (node == '2. P NEET \n Berketrampilan' | 
                         node == '1. L NEET \n Berketrampilan') ~  
                          'NEET \n Berketrampilan',
                        TRUE ~ as.character(node))
               )) +
  geom_sankey(flow.alpha = 0.5, node.color = 1) +
  geom_sankey_label(size = 2.5, color = 1, fill = "white", aes(vjust=1.4)) +
  scale_fill_manual(values = c('#70CEEB','#70CEEB','#70CEEB','#70CEEB','grey','grey','grey','grey',
                               'grey','grey','#70CEEB','#70CEEB','#70CEEB','#70CEEB','grey','grey','grey','grey',
                               
 'grey','grey','#00798C','#EDAE49','#D14958','#70CEEB','grey','#70CEEB','grey')) +
  theme_sankey(base_size = 16) +
  guides(fill = guide_legend(title = "Title")) +
  theme(legend.position = 'none',
        axis.title.x=element_blank(),
        axis.text.x=element_blank(),
        axis.ticks.x=element_blank()) +
  labs(x = '') 
plot

4.3 NEET Tahu Pra Kerja

svy_sak2022 %>% filter(TAHUN == 2023) %>% 
  filter(K6 >= 15 & K6 <= 24) %>% 
  group_by(NEET,K4, R47A) %>% 
  summarise(Pct = round(survey_prop()*100,2)) %>% 
  mutate(rse = round(Pct_se/Pct*100,2))

4.4 NEET Mendaftar Pra Kerja

svy_sak2022 %>% filter(TAHUN == 2023) %>% 
  filter(K6 >= 15 & K6 <= 24) %>% 
  group_by(NEET,K4, R47B) %>% 
  summarise(Pct = round(survey_prop()*100,2)) %>% 
  mutate(rse = round(Pct_se/Pct*100,2))

4.5 NEET Lolos Pra Kerja

svy_sak2022 %>% filter(TAHUN == 2023) %>% 
  filter(K6 >= 15 & K6 <= 24) %>% 
  group_by(NEET,K4, R47E) %>% 
  summarise(Pct = round(survey_prop()*100,2)) %>% 
  mutate(rse = round(Pct_se/Pct*100,2))

4.6 NEET Selesai Pelatihan Pra Kerja

svy_sak2022 %>% filter(TAHUN == 2023) %>% 
  filter(K6 >= 15 & K6 <= 24) %>% 
  group_by(NEET,K4, R47F) %>% 
  summarise(Pct = round(survey_prop()*100,2)) %>% 
  mutate(rse = round(Pct_se/Pct*100,2))

4.7 NEET Keterampilan Meningkat Setelah Pelatihan Pra Kerja

svy_sak2022 %>% filter(TAHUN == 2023) %>% 
  filter(K6 >= 15 & K6 <= 24) %>% 
  group_by(NEET,K4, R47G) %>% 
  summarise(Pct = round(survey_prop()*100,2)) %>% 
  mutate(rse = round(Pct_se/Pct*100,2))