Prinsip penghitungan indeks adalah menggabungkan beberapa indikator atau variabel menjadi satu nilai indeks. Pendekatan ini biasanya dilakukan dengan merata-ratakan nilai-nilai indikator setelah masing-masing indikator dinormalisasi atau ditransformasikan agar memiliki skala yang sama. Rata-rata yang dapat digunakan bisa rata-rata aritmatika, rata-rata tertimbang atau rata-rata geometrik.
Langkah-langkah dalam penghitungan indeks sebagai berikut:
Pemilihan Indikator
Pilih indikator yang ingin digabungkan. Indikator ini bisa berupa data kuantitatif yang berasal dari berbagai variabel yang diukur.
Normalisasi Indikator
Normalisasi indikator adalah proses penyekalaan nilai indikator sehingga semua indikator memiliki rentang dan arah yang sama (BPS, 2023). Terdapat dua hal yang dilakukan dalam normalisasi indikator yaitu:
Menentukan nilai minimal dan maksimal sehingga semua indikator memiliki rentang yang sama
Merubah arah indikator sehingga semua indikator memiliki arah yang sama.
Metode normalisasi yang umum digunakan adalah penskalaan antara 0 dan 1 atau sesuai nilai minimum dan maksimum yang diinginkan.
dimana \(X_i\) adalah nilai asli indikator, \(X_{\text{min}}\) adalah nilai minimum, dan \(X_{\text{max}}\) adalah nilai maksimum dari indikator tersebut.
Pembobotan (Opsional)
Dalam beberapa kasus, setiap indikator diberi bobot yang mencerminkan kepentingannya relatif terhadap indikator lain. Banyak cara yang dapat digunakan untuk memperoleh besaran bobot suatu dimensi, diantaranya adalah melalui metode Analytical Hierarchy Process (AHP), analisis CFA, pendapat/masukan para pakar, dan lain sebagainya. Jika tidak ada bobot khusus, diasumsikan setiap indikator memiliki bobot yang sama.
Jika menggunakan bobot, rumusnya menjadi: \[ \text{Indeks} = \sum_{i=1}^{n} w_i \cdot I_i \] dimana \(w_i\) adalah bobot dari indikator ke-\(i\) dan \(I_i\) adalah nilai indikator yang sudah dinormalisasi.
Penggabungan Indikator
Jika tidak menggunakan bobot, cukup diambil rata-rata dari nilai semua indikator yang telah dinormalisasi: \[ \text{Indeks} = \frac{1}{n} \sum_{i=1}^{n} I_i \] dimana \(I_i\) adalah nilai indikator ke-\(i\) setelah dinormalisasi, dan \(n\) adalah jumlah indikator.
Penghitungan Indeks
Hasil rata-rata atau jumlah tertimbang dari nilai-nilai indikator inilah yang menjadi nilai indeks. Indeks ini dapat digunakan untuk membandingkan objek yang berbeda (misalnya, membandingkan antar region atau kelompok). Indeks yang dibuat melalui agregasi nilai indikator yang dinormalisasi, memungkinkan perbandingan berbagai aspek dengan menyediakan ukuran yang terstandardisasi yang mencerminkan kinerja atau kondisi keseluruhan di berbagai dimensi (UNDP, 2019).
library(readxl)
library(writexl)
Total keseluruhan indikator yang digunakan sebanyak 12 indikator.
head(Mydata)
## # A tibble: 6 × 13
## PROV X1.1 X1.2 X1.3 X2.1 X2.2 X3.1 X3.2 X4.1 X4.2 X5.1 X6.1 X6.2
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Aceh 24.8 94.2 43.4 67.1 74.4 89.7 78.9 4.70 9.44 32.4 96.9 41.2
## 2 Sumat… 41.0 89.1 41.9 62.0 63.6 92.2 84.2 5.19 8.60 23.8 61.9 26.2
## 3 Sumat… 39.1 95.9 45.0 75.8 72.4 85.6 71.0 5.74 7.63 28.8 71.4 30.5
## 4 Riau 45.0 87.4 47.0 71.1 69.1 90.5 84.6 3.42 12.3 23.4 63.8 21.1
## 5 Jambi 53.0 81.0 62.9 74.1 72.8 80.0 83.0 3.56 12.8 32.4 53.5 19.5
## 6 Sumat… 54.3 87.2 63.2 75.6 67.5 87.2 80.5 4.42 6.53 26.0 64.4 30.6
Normalisasi data merupakan proses pemrosesan data dimana semua indikator diberi bobot yang sama, yang sangat berguna dalam metode statistik. Menurut W.Li dan Z. Liu (2011), normalisasi data adalah teknik untuk mengubah nilai numerik dalam dataset ke skala umum, tanpa mendistorsi perbedaan dalam rentang nilai.
Metode normalisasi yang diterapkan adalah normalisasi min-max.
Berikut merupakan nilai min-max dari tiap indikator:
Indikator 1: Min-Max = 0-90
Indikator 2: Min-Max = 0-100
Indikator 3: Min-Max = 0-80
Indikator 4: Min-Max = 0-80
Indikator 5: Min-Max = 0-80
Indikator 6: Min-Max = 0-100
Indikator 7: Min-Max = 0-100
Indikator 8: Min-Max = 60-0
Indikator 9: Min-Max = 60-0
Indikator 10: Min-Max = 0-90
Indikator 11: Min-Max = 0-100
Indikator 12: Min-Max = 0-80
Mydata$X1.1_norm <- (Mydata$X1.1 - 0) / (90 - 0)*100
Mydata$X1.2_norm <- (Mydata$X1.2 - 0) / (100 - 0)*100
Mydata$X1.3_norm <- (Mydata$X1.3 - 0) / (80 - 0)*100
Mydata$X2.1_norm <- (Mydata$X2.1 - 0) / (80 - 0)*100
Mydata$X2.2_norm <- (Mydata$X2.2 - 0) / (80 - 0)*100
Mydata$X3.1_norm <- (Mydata$X3.1 - 0) / (100 - 0)*100
Mydata$X3.2_norm <- (Mydata$X3.2 - 0) / (100 - 0)*100
Mydata$X4.1_norm <- 100-(Mydata$X4.1 - 0) / (60 - 0)*100
Mydata$X4.2_norm <- 100-(Mydata$X4.2 - 0) / (60 - 0)*100
Mydata$X5.1_norm <- (Mydata$X5.1 - 0) / (90 - 0)*100
Mydata$X6.1_norm <- (Mydata$X6.1 - 0) / (100 - 0)*100
Mydata$X6.2_norm <- (Mydata$X6.2 - 0) / (80 - 0)*100
Penghitungan nilai dimensi dilakukan dengan operasi rata-rata aritmatika. Banyaknya indikator penyusun dimensi mungkin berbeda-beda.
Indikator penyusun dimensi yang digunakan adalah sebagai berikut:
Dimensi 1 disusun atas indikator 1-3
Dimensi 2 disusun atas indikator 4-5
Dimensi 3 disusun atas indikator 6-7
Dimensi 4 disusun atas indikator 8-9
Dimensi 5 disusun atas indikator 10
Dimensi 6 disusun atas indikator 11-12
Mydata$dimensi1 <- rowMeans(Mydata[, c("X1.1_norm", "X1.2_norm", "X1.3_norm")])
Mydata$dimensi2 <- rowMeans(Mydata[, c("X2.1_norm", "X2.2_norm")])
Mydata$dimensi3 <- rowMeans(Mydata[, c("X3.1_norm", "X3.2_norm")])
Mydata$dimensi4 <- rowMeans(Mydata[, c("X4.1_norm", "X4.2_norm")])
Mydata$dimensi5 <- rowMeans(Mydata[, c("X5.1_norm")])
Mydata$dimensi6 <- rowMeans(Mydata[, c("X6.1_norm", "X6.2_norm")])
Mydata$index <- round(rowMeans(Mydata[, c("dimensi1", "dimensi2","dimensi3","dimensi4","dimensi5","dimensi6")]),2)
library(DT)
Mydimensi = round(Mydata[,26:31],2)
Myoutput=cbind(Mydata[,1], Mydimensi,Mydata$index)
colnames(Myoutput) <- c("Provinsi","Dim 1", "Dim 2","Dim 3","Dim 4","Dim 5","Dim 6", "Index")
DT::datatable(Myoutput)
Eksport Data
write_xlsx(Myoutput, "output_data.xlsx")
Indeks Nasional
library(ggplot2)
ggplot(Mydata, aes(x = reorder(PROV, index), y = index)) +
geom_bar(stat = "identity", fill = "skyblue") +
#scale_x_discrete(limits = Mydata$PROV) + # Menetapkan urutan sumbu x
scale_y_continuous(limits = c(0, 100)) + # Menetapkan batas sumbu y
labs(title = "Indeks menurut Provinsi",
x = "Provinsi",
y = "Indeks") +
theme(axis.text.x = element_text(angle = 90, hjust = 1))
Dari plot di atas, tampak capaian indeks tertinggi ada di Provinsi DI Yogyakarta dan terendah di Provinsi Papua.
library(fmsb)
radar_dimensi <- Mydata[, c("dimensi1", "dimensi2", "dimensi3", "dimensi4", "dimensi5", "dimensi6")]
radar_dimensi_max_min <- rbind(rep(100, 6), rep(0, 6),radar_dimensi)
radar_data <- radar_dimensi_max_min[c(1,2,37), ]
#radarchart(radar_data)
#Customize the radar charts
create_beautiful_radarchart <- function(data, color = "#FC4E07",
vlabels = colnames(data), vlcex = 0.7,
caxislabels = NULL, title = NULL, ...){
radarchart(
radar_data, axistype = 1,
# Customize the polygon
pcol = color, pfcol = scales::alpha(color, 0.5), plwd = 2, plty = 1,
# Customize the grid
cglcol = "grey", cglty = 1, cglwd = 0.8,
# Customize the axis
axislabcol = "grey",
# Variable labels
vlcex = vlcex, vlabels = vlabels,
caxislabels = caxislabels, title = title, ...
)
}
op <- par(mar = c(1, 2, 2, 1))
create_beautiful_radarchart(radar_data, caxislabels = c(0, 20, 40, 60, 80, 100))
par(op)
Berdasarkan radar graph, dimensi 2 menjadi dimensi paling tinggi yaitu sebesar 90.7. Sedangkan dimensi 5 menjadi dimensi terendah dengan capaian sebesar 40.4.
library(fmsb)
library(scales) # Untuk fungsi alpha()
# Definisikan fungsi untuk membuat radar chart
create_beautiful_radarchart <- function(data, color = "#FC4E07",
vlabels = colnames(data), vlcex = 0.7,
caxislabels = NULL, title = NULL, ...){
radarchart(
data, axistype = 1,
# Customize the polygon
pcol = color, pfcol = alpha(color, 0.5), plwd = 2, plty = 1,
# Customize the grid
cglcol = "grey", cglty = 1, cglwd = 0.8,
# Customize the axis
axislabcol = "grey",
# Variable labels
vlcex = vlcex, vlabels = vlabels,
caxislabels = caxislabels, title = title, ...
)
}
# Fungsi untuk menghasilkan radar data dengan berbagai provinsi
generate_radar_data <- function(index) {
radar_dimensi <- Mydata[, c("dimensi1", "dimensi2", "dimensi3", "dimensi4", "dimensi5", "dimensi6")]
radar_dimensi_max_min <- rbind(rep(100, 6), rep(0, 6), radar_dimensi)
radar_data <- radar_dimensi_max_min[c(1, 2, index), ]
return(radar_data)
}
# Atur layout grafik
op <- par(mar = c(1, 2, 2, 1))
par(mfrow = c(3, 4)) # Atur layout
indices <- 3:12 # Sesuaikan dengan indeks provinsi yang sesuai
# Daftar warna yang berbeda
colors <- rainbow(length(indices)) # Menghasilkan warna berbeda untuk setiap radar chart
titles <- c("Aceh", "Sumatera Utara", "Sumatera Barat", "Riau", "Jambi", "Sumatera Selatan",
"Bengkulu", "Lampung", "Kep Bangka Belitung", "Kep Riau")
# Loop untuk membuat radar chart
for(i in indices) {
radar_data <- generate_radar_data(i)
if (is.null(radar_data) || nrow(radar_data) < 3) {
warning(paste("Data untuk provinsi dengan indeks", i, "tidak valid."))
next
}
create_beautiful_radarchart(radar_data,
color = colors[i - min(indices) + 1],
caxislabels = c(0, 20, 40, 60, 80, 100),
title = titles[i - min(indices) + 1])
}
par(op) # Reset layout setelah loop
Badan Pusat Statistik (BPS). (2021). Laporan Indeks Khusus Penanganan Stunting 2021-2022. Jakarta: BPS.
Li, W. & Liu, Z. (2011). A method of SVM with Normalization in Intrusion Detection. Procedia Environmental Science, 11 (A): 256-262. https://doi.org/10.1016/j.proenv.2011.12.040.
United Nations Development Programme (UNDP). (2019). Human Development Report 2019: Beyond Income, Beyond Averages, Beyond Today. UNDP.
Direktorat Statistik Kesejahteraan Rakyat, BPS, saptahas@bps.go.id