VISUALISASI TABEL INPUT-OUTPUT JAWA TIMUR TAHUN 2016

Menulislah di bawah sinar akalmu, berbagilah sampai akhir hayatmu

Dalam tutorial kali ini, jokoding.com akan berbagi mengenai cara visualisasi tabel Input-Output Jawa Timur yang bersumber dari website resmi Badan Pusat Statistik Provinsi Jawa Timur yang dapat dilihat pada tautan berikut https://jatim.bps.go.id/. Sebelum lebih jauh, ada baiknya diawali dengan sedikit pengertian terlebih dahulu.

Tabel input-output menggambarkan suatu sistem keterkaitan antar lapangan usaha (sektor) berupa aktivitas distribusi output maupun struktur inputnya. Sebagai contoh paling sederhana dalam memahami tabel input dan output ini adalah sekarung gabah yang baru dipanen atau merupakan output dari sektor pertanian akan menjadi input bagi sektor transportasi karena butuh diangkut, sektor transportasi ini kemudian akan menjadi input dari sektor industri karena sekarung gabah tadi akan digilih menjadi beras. Dari industri penggilingan akan dihasilkan output berupa beras, dari transportasi akan muncul margin perdagangan, dan seterusnya, keterkaitan inilah yang kemudian dicatat dalam sebuah tabel Input-Output.

AKTIVASI PACKAGES

Beberapa package yang dibutuhkan dalam tutorial kali ini adalah rvest yang berguna dalam proses web scraping data BPS, kemudian dplyr yang berguna untuk data manipulation, serta package chorddiag untuk visualisasi diagram chord. Apa itu diargram Chord? Pengertiannya dapat disimak dalam blog https://jatim.bps.go.id/

library(rvest)
library(dplyr)
library(chorddiag)

WEB SCRAPING DATA BPS

Pada tahapan kedua ini, dilakukan aktivitas web scraping untuk memperoleh data Tabel Input-Output Jawa Timur. Dalam praktiknya, ternyata dalam kasus Tabel Input-Output BPS Jawa Timur ini tidak bisa langsung discrape karena selectorGadget tidak dapat menemukan sejumlah node yang membungkus setiap data dalam tabel. Oleh karena itu, cara lain yang bisa dilakukan adalah dengan menscrape node menu unduh kemudian melakukan download otomatis dengan teknik action click. Setelah melakukan action click, datanya disimpan sementara dengan nama “hasil.xls”, ekstensi *xls ini juga menyesuaikan tabel I-O yang tertera dalam website BPS. Setelah itu diekstraksi dan diberi penamaan kolom tabel.

iojatim <- read_html("https://jatim.bps.go.id/statictable/2021/05/28/2148/tabel-input-output-provinsi-jawa-timur-transaksi-domestik-atas-dasar-harga-produsen-17-lapanganusaha-2016-juta-rupiah-.html")

download_link <- html_attr(html_nodes(iojatim, xpath = '//*[@id="column2"]/div[1]/a'), "href") %>%
  paste("https://jatim.bps.go.id", ., sep = "")

download.file(download_link, tempfile(fileext = "hasil.xls"), mode = "wb")

data <- readxl::read_xls("C://Users//JOKOAD~1//AppData//Local//Temp//Rtmpa2I4Xx//file480c18de77f3hasil.xls")
## New names:
subset_df <- data[4:20, 3:19]

names(subset_df) <- paste0("v",seq(1, 17))

head(subset_df)
## # A tibble: 6 x 17
##   v1     v2     v3     v4     v5     v6    v7    v8    v9    v10   v11   v12   v13   v14   v15   v16  
##   <chr>  <chr>  <chr>  <chr>  <chr>  <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
## 1 13015~ 4296.~ 82474~ 1445.~ 2384.~ 2123~ 372.~ 9373~ 1675~ 2.54~ 2069~ 0     0     4456~ 1110~ 9516~
## 2 5071.~ 50893~ 87806~ 10412~ 755.0~ 3009~ 0     0     109.~ 0     0     0     0     107.~ 0     0    
## 3 16232~ 32034~ 21451~ 10388~ 17726~ 8573~ 1193~ 1169~ 1929~ 2816~ 1439~ 1149~ 3223~ 2241~ 6166~ 5933~
## 4 85590~ 20932~ 14522~ 32652~ 15635~ 2208~ 7090~ 1345~ 1280~ 8215~ 2101~ 9952~ 1789~ 8965~ 9996~ 1199~
## 5 22961~ 10116~ 14291~ 14934~ 13996~ 1130~ 3307~ 2037~ 3502~ 1790~ 1246~ 46.0~ 749.~ 1407~ 7744~ 6082~
## 6 34114~ 85703~ 11905~ 1716.~ 42020~ 1575~ 6375~ 2747~ 3906~ 1917~ 5371~ 2521~ 1292~ 1806~ 1112~ 9187~
## # ... with 1 more variable: v17 <chr>

KONVERSI STRUKTUR DATA KE NUMERIK

Pada bagian ini, karena data yang akan divisualisasikan masih dalam bentuk teks atau karakter, maka perlu diubah struktur atau tipe datanya menjadi numerik dilanjutkan mengubahnya menjadi data matriks persegi berukuran 17 x 17 artinya 17 Lapangan Usaha (Sektor)

convert_to_numeric <- function(x) {
  as.numeric(x)
}

for (i in 1:17) {
  subset_df[[paste0("v", i)]] <- convert_to_numeric(subset_df[[paste0("v", i)]])
}

n <- as.matrix(subset_df, ncol = 17, nrow = 17)

head(n)
##                v1          v2        v3           v4          v5         v6           v7          v8
## [1,] 13015371.435    4296.435  82474813     1445.427   2384.6166   212395.8 3.723679e+02     9373.10
## [2,]     5071.303  508936.211   8780665 10412861.021    755.0759 30095021.5 0.000000e+00        0.00
## [3,] 16232078.745 3203413.551 214515907  1038861.422 177261.0884 85732932.7 1.193726e+07 11690333.94
## [4,]   855900.271 2093239.011  14522875 32652688.943 156355.8266   220883.9 7.090386e+06  1345435.10
## [5,]    22961.285   10116.913    142918    14934.523  13996.2931    11308.4 3.307555e+04    20374.64
## [6,]   341149.023   85703.499   1190527     1716.366  42020.3904 15752570.9 6.375408e+04   274795.68
##                v9          v10         v11          v12         v13          v14         v15
## [1,] 1.675842e+07 2.544128e+00    2069.871 0.000000e+00       0.000  445603.7302  111069.972
## [2,] 1.096889e+02 0.000000e+00       0.000 0.000000e+00       0.000     107.5619       0.000
## [3,] 1.929555e+07 2.816389e+06 1439227.274 1.149381e+06 3223752.467 2241146.7752 6166939.113
## [4,] 1.280702e+06 8.215604e+06  210106.237 9.952323e+05 1789242.950  896543.5805  999613.575
## [5,] 3.502333e+04 1.790999e+04    1246.888 4.601745e+01     749.801   14071.2762    7744.179
## [6,] 3.906818e+04 1.917631e+04  537176.658 2.521282e+06  129208.026 1806574.8498 1112534.911
##             v16        v17
## [1,]  951661.66  728007.36
## [2,]       0.00       0.00
## [3,] 5933158.68 7351549.29
## [4,] 1199193.29 1274746.13
## [5,]    6082.67   88887.41
## [6,]   91876.28  385672.71

VISUALISASI CHORD DIAGRAM

Akhirnya, bagian terakhirnya juga. Di bagian ini, visualisasi Diagram Chord memerlukan sebuah grup untuk pelabelan setiap sektor 1 sampai 17 kemudian dilanjutkan dengan visualisasinya. Jangan lupa untuk mengatur pewarnaan, ukuran font teks sehingga dapat memunculkan insight dari tabel I-O yang akan dianalisis, misalkan yang akan diungkap ke permukaan adalah sektor pertanian, pertambangan, dan industri.

grupnama <- c("1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17")
greenpall <- colorRampPalette(c("darkgreen", "green", "lightgreen"))
mygreen <- greenpall(3)
mycol <- ifelse(1:ncol(n) %in% c(1, 2, 3), mygreen, "grey")
chorddiag(n, groupPadding = 0.01, groupColors = mycol, groupNames = grupnama)

plot of chunk unnamed-chunk-4

grupnama <- c("Pertanian", "Pertambangan", "Industri", rep("Lainnya", ncol(n) - 3))
chorddiag(n, groupPadding = 0.01, groupColors = mycol, groupNames = grupnama,
          ticklabelFontsize = 0.01, groupnameFontsize = 10, margin = 80)

plot of chunk unnamed-chunk-4

Dari Diagram Chord terlihat bahwa peran dari sektor pertanian (hijau tua) dalam perekonomian Jawa Timur demikian besar. Sebab, sektor pertanian menjadi input terbesar bagi sektor industri. Disusul oleh besarnya porsi Sektor Industri menjadi input dan output bagi industri yang lain, misalkan output industri benang menjadi input bagi industri kain, output dari industri kain menjadi input bagi industri pakaian jadi. Demikian sedikit sharing kali ini, semoga bermanfaat dan jangan lupa untuk menyimak sharing lainnya dalam blog jokoding.com. Terima kasih.