Analisis Cluster untuk Mengelompokkan Kota/Kabupaten di Provinsi Jawa Timur Berdasarkan Rata-rata Kalori Perkapita Sehari Dirinci Menurut Sub Kelompok Komoditi Makanan Pada Tahun 2023

Mailaneva Kalyanaputri Fatima

2024-11-30

1 PENDAHULUAN

1.1 Latar Belakang

Pola makan merupakan aspek yang paling berpengaruh terhadap kecukupan gizi, dan kecukupan gizi menjadi salah satu indikator yang dapat menunjukan tingkat kesejahteraan penduduk (Sari dan Pratiwi, 2020). Perbedaan pola makan tersebut dapat disebabkan oleh berbagai faktor, seperti kondisi geografis, budaya makan, akses terhadap bahan pangan, daya beli, pengetahuan tentang makanan yang bergizi, serta variasi dalam kondisi sosial ekonomi dan jenis lapangan usaha (BPS, 2015). Kota/kabupaten dengan karakteristik geografis seperti kedekatannya dengan laut, area pertanian yang luas, atau pusat urbanisasi cenderung memiliki pola konsumsi yang khas.

Provinsi Jawa Timur memiliki kondisi geografis yang sangat beragam, mulai dari wilayah pesisir yang kaya akan sumber daya laut hingga dataran tinggi yang cocok untuk aktivitas pertanian. Keberagaman ini secara langsung memengaruhi pola konsumsi pangan masyarakat di masing-masing kota/kabupaten. Melalui metode analisis cluster dengan pendekatan average linkage, kota/kabupaten di Jawa Timur dapat dikelompokkan dan diidentifikasi berdasarkan karakteristik pola konsumsinya.

1.2 Rumusan Masalah

Berdasarkan latar belakang masalah yang telah diuraikan, maka dapat dirumuskan permasalahan penelitian, yaitu:

  1. Bagaimana metode analisis cluster dapat digunakan untuk mengelompokan kota/kabupaten di Jawa Timur berdasarkan pola konsumsi kalori penduduk?
  2. Faktor-faktor apa saja yang membedakan setiap kelompok kota/kabupaten berdasarkan hasil pengelompokan tersebut?

1.3 Tujuan Penelitian

Dalam melakukan penelitian ini, tujuan penelitian yang ingin dicapi yaitu:

  1. Menganalisis dan mengelompokan kota/kabupaten di Jawa Timur berdasarkan pola konsumsi kalori penduduk menggunakan metode analisis cluster
  2. Mengidentifikasi karakteristik dan perbedaan pola konsumsi pada setiap kelompok kota/kabupaten yang terbentuk

1.4 Data

Data pada kasus ini menggunakan data sekunder yang diperoleh dari BPS mengenai rata-rata kalori perkapita sehari di Provinsi Jawa Timur dirinci menurut kota/kabupaten dan sub kelompok komoditi makanan pada tahun 2023. Data tersebut berisi tentang sub kelompok komoditi makanan (kalori/kapita/hari). Adapun data tersaji dalam tabel berikut:

Rata-rata Kalori Perkapita Sehari Dirinci Menurut Sub Kelompok Komoditi Makanan (Kalori/Kapita/Hari).
Kota/Kabupaten Padi-padian Umbi-umbian Ikan Daging Telur dan Susu Sayur-sayuran
Kediri 663.49 33.28 20.92 86.07 60.79 40.09
Blitar 597.91 35.2 18.16 52.27 62.88 41.41
Malang 640.9 29.33 29.96 96.83 68.26 32.94
Probolinggo 804.24 26.72 42.59 52.34 44.9 23.46
Pasuruan 704.22 25.77 50.83 70.16 57.59 31.05
Mojokerto 663.2 24.3 36.88 96.72 65.18 31.48
Madiun 628 34.58 32.42 104.57 78.35 35.04
Surabaya 674.58 30.91 47.3 111.18 80.14 38.89
Batu 664.14 40.94 34.47 80.39 45.58 41.07
Sidoarjo 668.9 28.67 38.11 95.41 68.09 35.3
Gresik 679.67 26.59 55.92 81.32 55.5 32.99
Banyuwangi 884.9 38.25 38.97 63.66 41.63 49.63

2 TINJAUAN PUSTAKA

2.1 Statistika Deskriptif

Statistika deskriptif merupakan salah satu ilmu statistik yang bertujuan untuk mengumpulkan, mengolah, menyajikan, dan menganalisis data secara ringkas dan informatif (Maysani dan Pujiastuti, 2020). Statistika deskriptif digunakan untuk merangkum data sehingga informasi yang disajikan menjadi lebih mudah dipahami. Fokus utama statistika deskriptif adalah pada pengumpulan, penyederhanaan, dan penyajian data terhadap angka-angka yang diamati atau diperoleh. Statistika deskriptif juga mencakup pengukuran pemusatan dan penyebaran data untuk memberikan gambaran yang lebih jelas dan menarik, sehingga dapat mempermudah pemahaman terhadap informasi yang disajikan (Yuniarti, 2022).

2.2 Analisis Cluster

Analisis cluster atau analisis kelompok adalah salah satu metode analisis data yang bertujuan untuk mengelompokkan individu atau objek ke dalam beberapa kelompok dengan karakteristik yang berbeda antara satu kelompok dengan lainnya. Dalam satu kelompok, individu atau objek memiliki sifat yang relatif homogen (Talakua, dkk., 2017). Dengan kata lain, analisis cluster bertujuan untuk mengelompokkan objek-objek yang memiliki kemiripan tertentu, sehingga data dapat dibagi ke dalam beberapa kelompok berdasarkan kemiripan yang dimiliki.

Prosedur clustering dibagi menjadi dua jenis, yaitu hirarki dan nonhirarki. Pembentukan cluster hirarki mempunyai sifat sebagai pengembangan suatu hirarki atau struktur mirip pohon bercabang. Metode ini digunakan untuk pengelompokan saat jumlah cluster yang akan dihasilkan belum ditentukan sebelumnya. Teknik ini dilakukan melalui proses penggabungan bertahap (agglomerative) atau pembagian berurutan (divissive), (Sirojuddin, 2016).

Prosedur analisis cluster yaitu sebagai berikut (Muhartini, dkk,. 2022):

  1. Melakukan standarisasi data

    Standarisasi data dilakukan untuk memastikan bahwa data yang digunakan dalam penelitian memiliki satuan yang sama.

  2. Menentukan ukuran kemiripan dan ketidakmiripan antar dua objek menggunakan rumus jarak euclidean.

  3. Proses analisis cluster

    Pembentukan cluster dapat dilakukan dengan dua cara, yaitu dengan metode hierarki dan non hierarki.

  4. Menentukan jumlah anggota cluster

    Penentuan keanggotaan cluster dilakukan berdasarkan hasil pengolahan data menggunakan RStudio.

  5. Melakukan interpretasi analisis cluster sesuai metode yang ditentukan

2.2.1 Uji Asumsi Analisis Cluster

a. Uji Sampel Representatif

Pengujian sampel represntatif (sampel yang mewakili) dapat dilakukan dengan Uji Kaiser-Mayer Olkin (KMO). Pengujian ini dipakai untuk menilai kecukupan sampel secara keseluruhan maupun kecukupan masing-masing indikator. Nilai KMO berkisar antara 0 hingga 1, di mana nilai antara 0,5 hingga 1 menunjukkan bahwa sampel dianggap cukup mewakili populasi atau bersifat representatif (Ningrat, dkk., 2016).

b. Uji Non-Multikolinearitas

Menurut Gujarati (1978), multikolinearitas terjadi ketika terdapat hubungan linear yang sangat kuat atau sempurna antara beberapa atau bahkan seluruh variabel. Untuk mengetahui adanya multikolinearitas, salah satunya adalah dengan menghitung nilai Variance Inflation Factor (VIF) dengan rumus:

\[ VIF_j = \frac{1}{1-R_j^2} \]

Multikolinearitas terjadi apabila nilai \((VIF_j\)\() \geq 10\) (Widarjono, 2010). Apabila terindikasi terjadi multikolinearitas, maka tidakan perbaikan multikolinearitas harus dilakukan.

2.2.2 Standarisasi Variabel

Standarisasi variabel dilakukan untuk mengatasi perbedaan satuan yang signifikan antar variabel yang diteliti. Proses standarisasi dilakukan dengan mengenolkan rata-rata dan varian menjadi 1 (satu), atau mengubah data Z-Score yaitu mentransformasi data ke dalam distribusi normal baku N(0,1), yang dapat dihitung menggunakan rumus berikut:

\[ Z= \frac{X_i - \bar{x}}{\sigma} \]

Keterangan:

  • \({X_i}\) : data ke-\({i}\)

  • \(\bar{x}\) : rata-rata data

  • \(\sigma\) : simpangan baku

2.2.3 Jarak Analisis Cluster

a. Jarak Euclidean

Jarak euclidean merupakan metode pengukuran jarak yang paling umum dan sering diterapkan dalam analisis cluster. Jarak ini dapat didefinisikan secara jelas antara dua titik, dengan syarat bahwa variabel yang digunakan bersifat kontinu. Jarak euclidean dirumuskan sebagai berikut:

\[ d_{euc}(x,y) = \sqrt{\sum_{i=1}^n (x_i - y_i)^2} \] Keterangan :

  • \(d_{euc} (x,y)\) : kuadrat jarak euclidean antar obyek-\(y\) dan obyek-\(x\)

  • \(x_i\) : nilai dari obyek-\(x\) pada variabel ke-\(i\)

  • \(y_i\) : nilai dari obyek-\(y\) pada variabel ke-\(i\)

b. Jarak Mahalanobis

Jarak Mahalanobis digunakan ketika terjadi korelasi pada data. Jarak Mahalanobis antara dua sampel X dan Y dari suatu variabel acak dirumuskan sebagai berikut:

\[ d_{Mahalanobis}(x,y)=\sqrt{(x-y)^T+S^{-1}(x-y)} \]

Keterangan :

  • \(S^{-1}\) : suatu matriks varians kovarians

2.2.4 Analisis Cluster Hierarki

Metode ini digunakan untuk mengelompokkan pengamatan secara terstruktur berdasarkan kesamaan karakteristik, dengan jumlah kelompok yang diinginkan belum diketahui sebelumnya. Secara umum, metode ini dibagi menjadi dua jenis, yaitu metode hierarki penggabungan (agglomerative) dan metode hierarki pembagian (divisive).

2.2.4.1 Metode Agglomerative

Metode agglomerative dimulai dengan dimulai dengan mengasumsikan setiap objek sebagai sebuah cluster tersendiri. Dalam metode ini, setiap penggabungan cluster selalu diikuti dengan pembaruan matriks jarak, dan hasilnya dapat disajikan dalam bentuk dendogram.

Metode agglomerative mempunyai beberapa prosedur pengelompokan yaitu:

  1. Single Linkage

    Proses pengklasteran ini didasarkan pada jarak terdekat antar objek (minimum distance). Metode ini cocok untuk kasus pengelompokan yang tidak bergantung pada bentuk (shape independent clustering) karena kemampuannya dalam membentuk pola tertentu pada cluster. Jika objek X dan Y memiliki jarak terdekat (dxy), maka harus dicari jarak minimum XZ dan XY, yang dapat dihitung dengan:

    \[ {d_{(XY)Z}=Min(d_{XZ},d_{YZ})} \]Hasil pengelompokkan ini dapat digambarkan dalam bentuk dendogram atau diagram pohon, di mana cabang-cabang pada diagram tersebut menggambarkan kelompok-kelompok yang terbentuk.

  2. Complete Linkage

    Complete Linkage adalah salah satu metode clustering yang didasarkan pada jarak terbesar antar objek (maksimum distance). Metode ini kurang cocok untuk data yang mengandung outlier. Proses ini dimulai dengan mengelompokkan dua objek atau individu yang memiliki jarak terjauh. Jika objek X dan Y memiliki jarak terjauh (dxy), maka harus dicari jarak maksimum XZ dan XY, yang dapat dihitung dengan:

    \[ d_{(XY)Z}=Max(d_{XZ},d_{YZ}) \]

  3. Average Linkage

    Average Linkage adalah salah satu metode clustering yang didasarkan pada jarak rata-rata antar objek (average distance). Metode ini memiliki waktu komputasi yang lebih lama dibandingkan dengan metode lainnya. Pada metode ini, langkah pertama yang dilakukan yaitu mencari jarak terkecil. Jika kelompok X dan Y mempunyai jarak dxy, maka jarak rata-rata antara XZ dan XY harus dicari, yang dapat dihitung dengan:

    \[ d_{(ij)k} = \frac{1}{n_i \times n_j} \sum_{i=1}^{n_i} \sum_{j=1}^{n_j} \sqrt{\sum_{k=1}^p (x_{ik} - y_{jk})^2} \]

  4. Ward’s Method

    Pada metode ini, jarak antara dua cluster yang terbentuk diukur dengan menggunakan jumlah kuadrat (sum of squares) antara kedua cluster tersebut. Setiap pengamatan diukur dengan menggunakan jumlah total dari deviasi kuadrat pada mean cluster. Fungsi objektif yang digunakan dalam metode ini adalah Error sum of squares (SSE). Dua objek akan digabungkan jika mereka memiliki nilai fungsi objektif terkecil di antara semua kemungkinan yang ada

    \[ESS = \sum_{j=1}^{k} \left( \sum_{i=1}^{n_j} x_{ij}^2 - \frac{1}{n_j} \left( \sum_{i=1}^{n_j} x_{ij}^2 \right) \right)\] Keterangan:

    • \(x_{ij}\) : nilai untuk objek ke-\(i\) dengan \(i\) = 1,2,…,n pada kelompook ke-\(j\)

    • \(K\) : jumlah kelompok setiap stage

    • \(n_j\) : jumlah kelompok ke-\(i\) pada kelompok ke-\(j\)

  5. Centroid Linkage

    Pada metode ini, jarak yang digunakan adalah jarak kuadrat euclidean antara titik pusat dua kelompok. Titik pusat kelompok ini merupakan nilai tengah objek setiap peubah dalam satu kelompok. Pada metode ini, setiap kali terbentuk kelompok baru maka titik pusatnya akan berubah. Metode ini memiliki kelebihan yaitu kecilnya pengaruh pencilan dalam pembentukan kelompok. Jarak antara dua cluster didefinisikan sebagai berikut:

    \[ d_{ij} = d \left( \frac{1}{n_i} \sum_{k=1}^{n_i} x_{ik}, \frac{1}{n_j} \sum_{l=1}^{n_j} x_{jl} \right) \]

    atau

    \[ d_{(ij)k}=d(\bar{x}_{ik},\bar{x}_{jk}) \]

2.2.4.2 Metode Divissive

Metode divissive menggunakan pendekatan pemecahan (Top To Down), di mana proses dimulai dengan mengelompokkan seluruh objek ke dalam satu cluster, lalu cluster tersebut secara bertahap dipisahkan menjadi dua, dan seterusnya hingga terbentuk \(n\) cluster, di mana setiap cluster terdiri dari satu objek.

2.2.5 Indeks Validitas

Validitas cluster digunakan untuk menentukan jumlah cluster yang paling tepat atau optimal. Terdapat beberapa indeks validitas yaitu indeks connectivity, Dunn, dan Silhouette. Indeks connectivity memiliki nilai di antara 0 sampai tak hingga, semakin kecil nilainya maka semakin bagus cluster yang terbentuk. Indeks Dunn menghitung nilai minimum dari perbandingan antara nilai ketidaksamaan dua cluster dan nilai maksimum diameter cluster di mana semakin besar nilainya, maka semakin baik cluster yang terbentuk. Indeks Silhouette menghitung selisih antara jarak rata-rata objek di dalam cluster dengan jarak minimum antar cluster di mana semakin mendekati positif 1 maka semakin baik.

2.2.6 Koefisien Korelasi Cophenetic

Koefisien korelasi cophenetic adalah nilai korelasi antara elemen-elemen asli matriks ketidakmiripan (dissimilarity distance) dan elemen-elemen yang dihasilkan oleh dendogram. Nilai koefisien korelasi cophenetic memiliki nilai di antara -1 hingga 1, apabila nilai semakin mendekati 1 maka jarak yang digunakan dalam proses pembentukan cluster cukup baik.

2.2.7 Dendogram

Dendogram merupakan representatif visual dari langkah-langkah dalam analisis cluster yang menunjukkan bagaimana cluster terbentuk dan nilai koefisien jarak pada setiap langkah. Bentuk dendogram identik dengan diagram pohon. Pada dendogram, terdapat titik-titik yang mewakili cluster dan panjang batangnya mempresentasikan jarak dimana objek-objek digabung dalam cluster. Untuk mengetahui banyaknya cluster yang terbentuk, dendogram dipotong dari selisih terpanjang. Pemotongan dendogram dilakukan berdasarkan perbedaan jarak penggabungan yang paling besar atau pada kelompok yang dianggap lebih bermakna. Pemotongan juga dapat dilakukan dengan mempertimbangkan selisih jarak penggabungan terbesar.

3 SOURCE CODE

3.1 Library

> library("knitr")
> library("psych")
> library("GPArotation")
> library("ggplot2")
> library("cluster")
> library("factoextra")
> library("tidyverse")
> library("car")
> library("readxl")
> library("MVN")
> library("dendextend")
> library("DT")
> library("rmarkdown")
> library("prettydoc")
> library("clValid")
> library("fastcluster")

Aktifkan packages yang dibutuhkan untuk melakukan analisis. Berikut merupakan library yang akan digunakan untuk membantu proses analisis agar lebih cepat dan efisien.

  • library("knitr") Untuk membuat laporan dinamis menggunakan R Markdown

  • library("psych") Untuk analisis psikometri dan statistik, menyediakan fitur seperti analisis faktor, reliabilitas, validitas, dan transformasi data.

  • library("GPArotation") Untuk melakukan rotasi faktor dalam analisis faktor dengan berbagai metode rotasi.

  • library("ggplot2") Untuk membuat visualisasi data yang berbasis grafik dengan tampilan yang menarik, fleksibel, informatif dan estesis dengan pendekatan sistematis.

  • library("cluster") Untuk melakukan berbagi jenis analisis clustering atau pengelompokan data.

  • library("factoextra") Untuk membantu dalam visualisasi dan analisis hasil teknik multivariat, seperti analisis faktor, PCA, clustering, serta menentukan jumlah cluster optimal.

  • library("tidyverse") Untuk analisis data, pemrosesan data, visualisasi data, dan manipulasi data.

  • library("car") Menyediakan metode statistik untuk analisis regresi dan metode lainnya, seperti regresi linear, logistik, dan poisson.

  • library("readxl") Untuk membuka dan membaca file Excel dengan format .xlsx ke dalam R

  • library("MVN") Utuk menguji asumsi normalitas multivariat dan analisis statistik terkait, seperti analisis faktor dan PCA.

  • library("dendextend") Memperluas kemampuan manipulasi dan visualisasi dendrogram, memungkinkan modifikasi dan peningkatan tampilannya.

  • library("DT") Untuk membuat dan mengelola tabel interaktif menggunakan pustaka JavaScript DataTables.

  • library("rmarkdown") Untuk membuat dokumen dinamis yang mengintegrasikan kode R dengan teks naratif.

  • library("prettydoc") Untuk menghasilkan laporan dengan tampilan responsif dan tema menarik untuk output HTML dari R Markdown.

  • library("clValid") Untuk mengevaluasi clustering dengan metode hierarki dan validasi internal.

  • library("fastcluster") Untuk melakukan hierarchical clustering dengan cara yang lebih cepat dan efisien dibandingkan fungsi bawaan di R.

3.2 Impor Data

> data <- read_excel("C:/Users/Mailaneva/Downloads/data_anmul.xlsx")
> datatable(data,caption = "Sub Kelompok Komoditi Makanan (Kalori/Kapita/Hari)")
> data
# A tibble: 12 × 7
   `Kota atau Kabupaten` `Padi-Padian` `Umbi-Umbian`  Ikan Daging
   <chr>                         <dbl>         <dbl> <dbl>  <dbl>
 1 Kediri                         663.          33.3  20.9   86.1
 2 Blitar                         598.          35.2  18.2   52.3
 3 Malang                         641.          29.3  30.0   96.8
 4 Probolinggo                    804.          26.7  42.6   52.3
 5 Pasuruan                       704.          25.8  50.8   70.2
 6 Mojokerto                      663.          24.3  36.9   96.7
 7 Madiun                         628           34.6  32.4  105. 
 8 Surabaya                       675.          30.9  47.3  111. 
 9 Batu                           664.          40.9  34.5   80.4
10 Sidoarjo                       669.          28.7  38.1   95.4
11 Gresik                         680.          26.6  55.9   81.3
12 Banyuwangi                     885.          38.2  39.0   63.7
# ℹ 2 more variables: `Telur dan Susu` <dbl>, `Sayur-Sayuran` <dbl>

Untuk mengimport file data dari excel ke R, fungsi read_excel dari library(readxl) digunakan, kemudian disimpan dalam variabel data. Fungsi datatabel( ) digunakan untuk melihat gambaran data secara keseluruhan dalam bentuk tabel.

3.3 Statistika Deskriptif

> #Statistika Deskriptif
> statdesk <- summary(data)
> statdesk
 Kota atau Kabupaten  Padi-Padian     Umbi-Umbian         Ikan      
 Length:12           Min.   :597.9   Min.   :24.30   Min.   :18.16  
 Class :character    1st Qu.:657.6   1st Qu.:26.69   1st Qu.:31.80  
 Mode  :character    Median :666.5   Median :30.12   Median :37.49  
                     Mean   :689.5   Mean   :31.21   Mean   :37.21  
                     3rd Qu.:685.8   3rd Qu.:34.73   3rd Qu.:43.77  
                     Max.   :884.9   Max.   :40.94   Max.   :55.92  
     Daging       Telur dan Susu  Sayur-Sayuran  
 Min.   : 52.27   Min.   :41.63   Min.   :23.46  
 1st Qu.: 68.53   1st Qu.:53.02   1st Qu.:32.58  
 Median : 83.69   Median :61.84   Median :35.17  
 Mean   : 82.58   Mean   :60.74   Mean   :36.11  
 3rd Qu.: 96.75   3rd Qu.:68.13   3rd Qu.:40.34  
 Max.   :111.18   Max.   :80.14   Max.   :49.63  

Untuk menghitung statistika deskriptif, fungsi summary( ) digunakan, kemudian disimpan dalam variabel statdesk. Hasil dari perintah tersebut menunjukkan rangkuman ukuran pemusatan dan pesebaran data pada masing-masing variabel.

3.4 Analisis Cluster

3.4.1 Uji Asumsi Analisis Cluster

a. Uji Sampel Representatif

> #Uji Asumsi
> ##Uji Sampel Representatif
> kmo <- KMO(data[,2:7])
> kmo
Kaiser-Meyer-Olkin factor adequacy
Call: KMO(r = data[, 2:7])
Overall MSA =  0.55
MSA for each item = 
   Padi-Padian    Umbi-Umbian           Ikan         Daging Telur dan Susu 
          0.64           0.52           0.54           0.55           0.55 
 Sayur-Sayuran 
          0.54 

Uji sampel representatif menggunakan fungsi KMO( ) dengan argumen di dalamnya adalah data[,2:7] yang disimpan dalam variabel kmo. Argumen dalam data[,2:7] menunjukkan data yang dianalisis yaitu data pada kolom kedua sampai kelima.

b. Uji Non-Multikolinearitas

> ##Uji Non-Multikolinearitas
> korelasi <- cor(data[,2:7], method = 'pearson')
> korelasi
               Padi-Padian Umbi-Umbian        Ikan      Daging Telur dan Susu
Padi-Padian     1.00000000  0.06164934  0.37959495 -0.45127343     -0.6798674
Umbi-Umbian     0.06164934  1.00000000 -0.48429437 -0.13261337     -0.2371158
Ikan            0.37959495 -0.48429437  1.00000000  0.09288873     -0.1288989
Daging         -0.45127343 -0.13261337  0.09288873  1.00000000      0.7672905
Telur dan Susu -0.67986745 -0.23711583 -0.12889890  0.76729053      1.0000000
Sayur-Sayuran   0.12919491  0.79672229 -0.35814466 -0.02029157     -0.1147374
               Sayur-Sayuran
Padi-Padian       0.12919491
Umbi-Umbian       0.79672229
Ikan             -0.35814466
Daging           -0.02029157
Telur dan Susu   -0.11473741
Sayur-Sayuran     1.00000000

Uji asumsi non-multikolinearitas menggunakan korelasi antar variabel dengan fungsi cor( ), dengan data dan metode yang digunakan (pearson) sebagai argumen di dalamnya, kemudian disimpan dalam variabel korelasi.

3.4.2 Standarisasi

> #Standarisasi
> datastand <- scale(data[,2:7])
> datastand
      Padi-Padian Umbi-Umbian        Ikan      Daging Telur dan Susu
 [1,]  -0.3289200  0.39297726 -1.45360232  0.17807731    0.003949574
 [2,]  -1.1578402  0.75777161 -1.69987225 -1.54492259    0.171839938
 [3,]  -0.6144538 -0.35751114 -0.64697907  0.72658260    0.604017046
 [4,]   1.4501363 -0.85340347  0.47997355 -1.54135425   -1.272499172
 [5,]   0.1859003 -1.03390068  1.21521421 -0.63295608   -0.253107442
 [6,]  -0.3325856 -1.31319636 -0.02951967  0.72097521    0.356599668
 [7,]  -0.7775076  0.63997344 -0.42747761  1.12113938    1.414549950
 [8,]  -0.1887443 -0.05731578  0.90023854  1.45809292    1.558341219
 [9,]  -0.3207041  1.84835475 -0.24455972 -0.11146824   -1.217874556
[10,]  -0.2605385 -0.48290920  0.08023106  0.65419622    0.590360892
[11,]  -0.1244075 -0.87810309  1.66938593 -0.06406025   -0.420997806
[12,]   2.4696651  1.33726265  0.15696734 -0.96430221   -1.535179310
      Sayur-Sayuran
 [1,]     0.5973530
 [2,]     0.7955946
 [3,]    -0.4764556
 [4,]    -1.9001907
 [5,]    -0.7603016
 [6,]    -0.6957229
 [7,]    -0.1610713
 [8,]     0.4171333
 [9,]     0.7445323
[10,]    -0.1220237
[11,]    -0.4689465
[12,]     2.0300990
attr(,"scaled:center")
   Padi-Padian    Umbi-Umbian           Ikan         Daging Telur dan Susu 
     689.51250       31.21167       37.21083       82.57667       60.74083 
 Sayur-Sayuran 
      36.11250 
attr(,"scaled:scale")
   Padi-Padian    Umbi-Umbian           Ikan         Daging Telur dan Susu 
     79.114978       5.263239      11.207215      19.616948      12.448600 
 Sayur-Sayuran 
      6.658542 
> rownames(datastand) <- 1:nrow(datastand)
> hasildata <- mvn(data[,2:7], multivariateOutlierMethod = "adj", showNewData = TRUE)

Fungsi scale( ) digunakan untuk standarisasi dengan data awal dari kolom 2 hingga kolom 7 sebagai argumen, kemudian disimpan dalam variabel datastand. Kemudian, nama baru (rownames) dari suatu data frame (datastand) diatur. Kemudian, analisis multivariat normal (Multivariate Normality Test) dilakukan pada subset data yang disimpan pada variabel hasildata.

3.4.3 Menghitung Jarak

> #Menghitung Jarak Euclidien
> jarak <- dist(datastand, method = "euclidean")
> jarak
           1         2         3         4         5         6         7
2  1.9791534                                                            
3  1.7633512 3.1003763                                                  
4  4.3909808 4.8479419 4.0583662                                        
5  3.4627564 4.1166167 2.6887562 2.3097932                              
6  2.6514522 3.8926197 1.2179347 3.5877473 2.0261390                    
7  2.1839269 3.3682253 1.4077815 5.0348467 3.5560448 2.3950868          
8  3.1384761 4.4099673 2.2157553 5.0869086 3.1989797 2.3850264 1.7504911
9  2.2755939 2.8278628 3.2598320 4.4724087 3.7632744 3.9099942 3.3123122
10 2.0524542 3.3714260 0.8949098 3.8309314 2.1369802 1.0463495 1.6385173
11 3.5758540 4.3862790 2.7481878 2.9749642 0.8738153 2.0955406 3.4636186
12 4.1284862 4.6602032 5.1718900 4.6681857 4.6365631 5.3629667 5.4058409
           8         9        10        11
2                                         
3                                         
4                                         
5                                         
6                                         
7                                         
8                                         
9  3.9035424                              
10 1.6530646 3.1860285                    
11 2.8791126 3.6393796 2.0878739          
12 5.2539478 3.2694479 4.7478433 4.7139721

Fungsi dist( ) digunakan untuk menghitung jarak euclidean dengan datastand yang merupakan data hasil standarisasi sebagai argumen di dalamnya, kemudian disimpan dalam variabel jarak.

3.4.4 Koefisien Korelasi Cophenetic

Argumen data

> #Koefisien Korelasi Cophenetic
> d1 <- dist(data[,2:7])

Menganalisis data dengan metode hierarki clustering dengan argumen data pada fungsi dist( ) dan argumen single, average, complete, centroid, dan ward pada parameter method. Kemudian, jarak antar observasi dihitung dengan fungsi dist( ), dengan argumen data yang disimpan dalam variabel d1.

3.4.4.1 Single Linkage

> ##Single Linkage
> hiers <- hclust(dist(data[,2:7]), method = "single")
> #korelasi cophenetic
> hc1 <- hclust(d1, "single")
> d2 <- cophenetic(hc1)
> cors <- cor(d1,d2)
> cors
[1] 0.9019297

Fungsi hclust( ) digunakan dengan argumen jarak antar observasi berdasarkan kolom 2 sampai 7 dari dataset data dan single yang kemudian disimpan dalam variabel hiers. Kemudian, fungsi hclust( ) digunakan dengan argumen d1 dan single yang kemudian disimpan dalam variabel hc1.

Fungsi cophenetic( ) digunakan untuk menghasilkan matriks jarak cophenetic dari hasil klasterisasi hc1, kemudian disimpan dalam variabel d2.

Korelasi antara jarak awal d1 dan jarak cophenetic (d2) dihitung dengan fungsi cor( ), yang memberikan informasi tentang seberapa baik model klasterisasi menggambarkan jarak antar objek asli. Hasil korelasi tersebut disimpan dalam variabel cors.

3.4.4.2 Average Linkage

> ##Average Linkage
> hierave <- hclust(dist(data[,2:7]), method = "ave")
> #korelasi cophenetic
> hc2 <- hclust(d1, "ave")
> d3 <- cophenetic(hc2)
> corave <- cor(d1,d3)
> corave
[1] 0.9225779

Fungsi hclust( ) digunakan dengan argumen jarak antar observasi berdasarkan kolom 2 sampai 7 dari dataset data dan ave yang kemudian disimpan dalam variabel hiers. Kemudian, fungsi hclust( ) digunakan dengan argumen d1 dan ave yang kemudian disimpan dalam variabel hc2.

Fungsi cophenetic( ) digunakan untuk menghasilkan matriks jarak cophenetic dari hasil klasterisasi hc2, kemudian disimpan dalam variabel d3.

Korelasi antara jarak awal d1 dan jarak cophenetic (d3) dihitung dengan fungsi cor( ), yang memberikan informasi tentang seberapa baik model klasterisasi menggambarkan jarak antar objek asli. Hasil korelasi tersebut disimpan dalam variabel corave.

3.4.4.3 Complete Linkage

> ##Complete Linkage
> hiercomp <- hclust(dist(data[,2:7]), method = "complete")
> #korelasi cophenetic
> hc3 <- hclust(d1, "complete")
> d4 <- cophenetic(hc3)
> corcomp <- cor(d1,d4)
> corcomp
[1] 0.9115257

Fungsi hclust( ) digunakan dengan argumen jarak antar observasi berdasarkan kolom 2 sampai 7 dari dataset data dan complete yang kemudian disimpan dalam variabel hiers. Kemudian, fungsi hclust( ) digunakan dengan argumen d1 dan complete yang kemudian disimpan dalam variabel hc3.

Fungsi cophenetic( ) digunakan untuk menghasilkan matriks jarak cophenetic dari hasil klasterisasi hc3, kemudian disimpan dalam variabel d4.

Korelasi antara jarak awal d1 dan jarak cophenetic (d4) dihitung dengan fungsi cor( ), yang memberikan informasi tentang seberapa baik model klasterisasi menggambarkan jarak antar objek asli. Hasil korelasi tersebut disimpan dalam variabel corcomp.

3.4.4.4 Centroid Linkage

> ##Centorid Linkage
> hiercen <- hclust(dist(data[,2:7]), method = "centroid")
> #korelasi cophenetic
> hc4 <- hclust(d1, "centroid")
> d5 <- cophenetic(hc4)
> corcen <- cor(d1,d5)
> corcen
[1] 0.9209498

Fungsi hclust( ) digunakan dengan argumen jarak antar observasi berdasarkan kolom 2 sampai 7 dari dataset data dan centroid yang kemudian disimpan dalam variabel hiers. Kemudian, fungsi hclust( ) digunakan dengan argumen d1 dan centroid yang kemudian disimpan dalam variabel hc4.

Fungsi cophenetic( ) digunakan untuk menghasilkan matriks jarak cophenetic dari hasil klasterisasi hc4, kemudian disimpan dalam variabel d5.

Korelasi antara jarak awal d1 dan jarak cophenetic (d5) dihitung dengan fungsi cor( ), yang memberikan informasi tentang seberapa baik model klasterisasi menggambarkan jarak antar objek asli. Hasil korelasi tersebut disimpan dalam variabel corcen.

3.4.4.5 Ward

> ##Ward
> hierward <- hclust(dist(data[,2:7]), method = "ward.D")
> #korelasi cophenetic
> hc5 <- hclust(d1,"ward.D")
> d6 <- cophenetic(hc5)
> corward <- cor(d1,d6)
> corward
[1] 0.9128657

Fungsi hclust( ) digunakan dengan argumen jarak antar observasi berdasarkan kolom 2 sampai 7 dari dataset data dan centroid yang kemudian disimpan dalam variabel hiers. Kemudian, fungsi hclust( ) digunakan dengan argumen d1 dan centroid yang kemudian disimpan dalam variabel hc5.

Fungsi cophenetic( ) digunakan untuk menghasilkan matriks jarak cophenetic dari hasil klasterisasi hc5, kemudian disimpan dalam variabel d6.

Korelasi antara jarak awal d1 dan jarak cophenetic (d6) dihitung dengan fungsi cor( ), yang memberikan informasi tentang seberapa baik model klasterisasi menggambarkan jarak antar objek asli. Hasil korelasi tersebut disimpan dalam variabel corward.

3.4.4.6 Hasil Koefisien Korelasi Cophenetic

> KorCop<-data.frame(cors,corave,corcomp,corcen,corward)
> KorCop
       cors    corave   corcomp    corcen   corward
1 0.9019297 0.9225779 0.9115257 0.9209498 0.9128657

Menggabungkan hasil-hasil korelasi dalam bentuk yang terstruktur (data frame) yang memudahkan untuk dilihat atau dianalisis lebih lanjut.

3.4.5 Indeks Validitas

> inval <- clValid(datastand, 2:7, clMethods = "hierarchical", validation = "internal", metric = "euclidean", method = "average")
> summary(inval)

Clustering Methods:
 hierarchical 

Cluster sizes:
 2 3 4 5 6 7 

Validation Measures:
                                 2       3       4       5       6       7
                                                                          
hierarchical Connectivity   3.4540 11.2774 17.4310 19.3476 21.5476 23.0476
             Dunn           0.6427  0.4594  0.5927  0.6236  0.7362  0.7362
             Silhouette     0.3275  0.2742  0.3238  0.3064  0.2794  0.2088

Optimal Scores:

             Score  Method       Clusters
Connectivity 3.4540 hierarchical 2       
Dunn         0.7362 hierarchical 6       
Silhouette   0.3275 hierarchical 2       
> optimalScores(inval)
                 Score       Method Clusters
Connectivity 3.4539683 hierarchical        2
Dunn         0.7362369 hierarchical        6
Silhouette   0.3275384 hierarchical        2
> plot(inval)

Melakukan evaluasi dan validasi cluster dengan metode hierarchical clustering pada dataset datastand menggunakan fungsi clValid( ). Evaluasi ini menggunakan validasi internal, metrik jarak euclidean, dan metode average linkage pada parameter method. Hasil evaluasi disimpan dalam variabel inval. Kemudian, fungsi summary( ) digunakan untuk menampilkan ringkasan hasil evaluasi, optimalScores( ) untuk mendapatkan skor optimal, dan plot( ) untuk memvisualisasikan hasil validasi cluster.

3.4.6 Analisis Cluster Metode Average Linkage

3.4.6.1 Membuat Dendogram

> #Metode Average Linkage
> hirave <- hclust(dist(scale(data[,2:7])), method = "average")
> hirave

Call:
hclust(d = dist(scale(data[, 2:7])), method = "average")

Cluster method   : average 
Distance         : euclidean 
Number of objects: 12 
> plot(hirave, labels = data$Kota.atau.Kabupaten,hang = -1, col = "black", main = "Cluster Dendrogram", sub = " ", xlab = "Kota/Kabupaten", ylab = "Jarak")

Menggunakan fungsi hclust( ) untuk melakukan clustering hirarki dengan argumen data jarak dan average pada parameter method, kemudian disimpan dalam variabel hc. Kemudian, fungsi plot( ) digunakan untuk membuat dendogram dengan hc, hang, judul, sub, xlab, dan ylab sebagai argumen di dalamnya.

3.4.6.2 Penentuan Jumlah Cluster

  • Memotong hasil clusterisasi menjadi 2 cluster

    > anggotaave <- data.frame(id = rownames(data),cluster = cutree(hirave, k = 2))
    > anggotaave
       id cluster
    1   1       1
    2   2       1
    3   3       1
    4   4       1
    5   5       1
    6   6       1
    7   7       1
    8   8       1
    9   9       1
    10 10       1
    11 11       1
    12 12       2
    > clus_hier <- eclust(datastand, FUNcluster = "hclust", k = 2, hc_method = "average", graph = TRUE)
    > fviz_dend(clus_hier, rect = TRUE, cex = 0.5)

    Fungsi cutree() digunakan untuk memotong hasil klasterisasi hierarki yang disimpan dalam variabel hirave menjadi 2 klaster (dengan k = 2) dan hasilnya disimpan dalam data frame anggotaave, yang juga mencakup kolom id yang berisi nama kota atau kabupaten. Selanjutnya, fungsi eclust() digunakan untuk melakukan klasterisasi hierarki pada data yang sudah distandarisasi (datastand) dengan metode average linkage, menghasilkan 2 klaster, dan visualisasi dendrogram klasterisasi ditampilkan dengan fviz_dend(), yang menandai klaster menggunakan kotak dan mengatur ukuran teks pada dendrogram.

  • Memotong hasil clusterisasi menjadi 6 cluster

    > anggotaaverage <- data.frame(id = rownames(data),cluster = cutree(hirave, k = 6))
    > anggotaaverage
       id cluster
    1   1       1
    2   2       1
    3   3       2
    4   4       3
    5   5       4
    6   6       2
    7   7       2
    8   8       2
    9   9       5
    10 10       2
    11 11       4
    12 12       6
    > clushier <- eclust(datastand, FUNcluster = "hclust", k = 6, hc_method = "average", graph = TRUE)
    > fviz_dend(clushier, rect = TRUE, cex = 0.5)

    Fungsi cutree() digunakan untuk memotong hasil clusterisasi hierarki yang disimpan dalam variabel hirave menjadi 6 klaster (dengan k = 6) dan hasilnya disimpan dalam data frame anggotaaverage, yang juga mencakup kolom id yang berisi nama kota atau kabupaten. Selanjutnya, fungsi eclust() digunakan untuk melakukan klasterisasi hierarki pada data yang sudah distandarisasi (datastand) dengan metode average linkage, menghasilkan 6 klaster, dan visualisasi dendrogram klasterisasi ditampilkan dengan fviz_dend(), yang menandai klaster menggunakan kotak dan mengatur ukuran teks pada dendrogram.

3.4.7 Karakteristik Setiap Cluster

> ##Karakteristik Setiap Cluster
> idclus <- cutree(hirave,k=2)
> idclus
 [1] 1 1 1 1 1 1 1 1 1 1 1 2
> 
> result<-aggregate(data, list(idclus), mean)
> result
  Group.1 Kota atau Kabupaten Padi-Padian Umbi-Umbian     Ikan   Daging
1       1                  NA      671.75    30.57182 37.05091 84.29636
2       2                  NA      884.90    38.25000 38.97000 63.66000
  Telur dan Susu Sayur-Sayuran
1       62.47818      34.88364
2       41.63000      49.63000

Fungsi cutree() digunakan untuk memotong hasil klasterisasi hierarki yang disimpan dalam variabel hc menjadi 2 klaster (dengan k = 2), dan hasilnya disimpan dalam variabel clusters. Kemudian, fungsi aggregate() digunakan untuk menghitung rata-rata dari setiap variabel dalam dataset data, dikelompokkan berdasarkan klaster yang ada pada clusters. Hasilnya disimpan dalam variabel result, yang menampilkan karakteristik setiap klaster dalam bentuk rata-rata nilai variabel.

4 HASIL DAN PEMBAHASAN

4.1 Statistika Deskriptif

> statdesk
 Kota atau Kabupaten  Padi-Padian     Umbi-Umbian         Ikan      
 Length:12           Min.   :597.9   Min.   :24.30   Min.   :18.16  
 Class :character    1st Qu.:657.6   1st Qu.:26.69   1st Qu.:31.80  
 Mode  :character    Median :666.5   Median :30.12   Median :37.49  
                     Mean   :689.5   Mean   :31.21   Mean   :37.21  
                     3rd Qu.:685.8   3rd Qu.:34.73   3rd Qu.:43.77  
                     Max.   :884.9   Max.   :40.94   Max.   :55.92  
     Daging       Telur dan Susu  Sayur-Sayuran  
 Min.   : 52.27   Min.   :41.63   Min.   :23.46  
 1st Qu.: 68.53   1st Qu.:53.02   1st Qu.:32.58  
 Median : 83.69   Median :61.84   Median :35.17  
 Mean   : 82.58   Mean   :60.74   Mean   :36.11  
 3rd Qu.: 96.75   3rd Qu.:68.13   3rd Qu.:40.34  
 Max.   :111.18   Max.   :80.14   Max.   :49.63  

Statistika deskriptif digunakan untuk memberikan gambaran umum serta menyajikan data mengenai rata-rata konsumsi kalori per kapita sehari pada 12 kota atau kabupaten di Provinsi Jawa Timur, yang dirinci berdasarkan subkelompok komoditas makanan. Informasi penting yang diperoleh, yaitu:

  • Kategori dengan rata-rata tertinggi adalah padi-padian (698.5) dan kategori dengan rata-rata terendah adalah umbi-umbian (31.21)

  • Rentang data tertinggi terdapat pada kategori padi-padian (287) dan rentang terendah adalah umbi-umbian (16.64)

  • Kategori daging memiliki rata-rata lebih tinggi (82.58) dibandingkan dengan kategori sumber protein lainnya seperti telur dan susu (60.74) dan ikan (37.21).

4.2 Analisis Cluster

4.2.1 Uji Asumsi Analisis Cluster

a. Uji Sampel Representatif

> kmo
Kaiser-Meyer-Olkin factor adequacy
Call: KMO(r = data[, 2:7])
Overall MSA =  0.55
MSA for each item = 
   Padi-Padian    Umbi-Umbian           Ikan         Daging Telur dan Susu 
          0.64           0.52           0.54           0.55           0.55 
 Sayur-Sayuran 
          0.54 

Berdasarkan hasil uji KMO di atas, dapat diketahui bahwa nilai Overall MSA = 0.55 (< 0.50) yang menunjukkan bahwa data secara umum bisa digunakan untuk analisis faktor, dan sampel dianggap telah representatif atau mewakili populasi.

b. Uji Non-Multikolinearitas

> korelasi
               Padi-Padian Umbi-Umbian        Ikan      Daging Telur dan Susu
Padi-Padian     1.00000000  0.06164934  0.37959495 -0.45127343     -0.6798674
Umbi-Umbian     0.06164934  1.00000000 -0.48429437 -0.13261337     -0.2371158
Ikan            0.37959495 -0.48429437  1.00000000  0.09288873     -0.1288989
Daging         -0.45127343 -0.13261337  0.09288873  1.00000000      0.7672905
Telur dan Susu -0.67986745 -0.23711583 -0.12889890  0.76729053      1.0000000
Sayur-Sayuran   0.12919491  0.79672229 -0.35814466 -0.02029157     -0.1147374
               Sayur-Sayuran
Padi-Padian       0.12919491
Umbi-Umbian       0.79672229
Ikan             -0.35814466
Daging           -0.02029157
Telur dan Susu   -0.11473741
Sayur-Sayuran     1.00000000

Berdasarkan hasil nilai korelasi di atas, dapat diketahui bahwa tiap variabel memiliki nilai korelasi kurang dari 0.8, sehingga antar variabel dapat dikatan tidak terjadi multikolinieritas.

4.2.2 Standarisasi

Setelah dilakukan uji asumsi dan hasil yang diperoleh sudah memenuhi asumsi, langkah berikutnya adalah menstandarisasi variabel ke dalam bentuk Z-score. Kemudian hasil standarisasi digunakan untuk mengelompokkan kota/kabupaten berdasarkan rata-rata konsumsi kalori perkapita sehari.

4.2.3 Menghitung Jarak

Setelah dilakukan standarisasi data, langkah berikutnya adalah menghitung jarak nilai tengah objek setiap peubah dalam satu kelompok dengan menggunakan jarak Euclidean. Adapun hasil dari perhitungan jarak Euclidean dapat dilihat pada subab 3.4.3.

4.2.4 Koefisien Korelasi Cophenetic

Koefisien korelasi cophenetic digunakan sebagai dasar dalam menentukan metode terbaik yang akan digunakan pada analisis cluster. Metode terbaik dipilih berdarsakan metode dengan nilai korelasi yang mendekati 1. Berikut adalah hasil koefisien korelasi cophenetic.

> KorCop
       cors    corave   corcomp    corcen   corward
1 0.9019297 0.9225779 0.9115257 0.9209498 0.9128657

Berdasarkan hasil koefisien korelasi cophenetic di atas, dapat terlihat bahwa metode dengan nilai koefisien korelasi yang paling mendekati 1 dan tertinggi dibandingkan metode lain adalah metode Average Linkage, yaitu sebesar 0.9225779. Oleh karena itu, metode Average Linkage merupakan metode cluster terbaik yang akan digunakan.

4.2.5 Indeks Validitas

> optimalScores(inval)
                 Score       Method Clusters
Connectivity 3.4539683 hierarchical        2
Dunn         0.7362369 hierarchical        6
Silhouette   0.3275384 hierarchical        2

Berdasarkan hasil indeks validitas di atas, nilai Connectivity terbaik sebesar 3.45 dicapai pada 2 cluster (semakin kecil nilai ini, semakin baik), nilai Dunn tertinggi sebesar 0.736 tercapai pada 6 cluster (semakin besar, semakin baik), dan nilai Silhouette tertinggi sebesar 0.328 ditemukan pada 2 cluster (semakin mendekati 1, semakin baik). Dengan demikian, jumlah cluster yang optimal dapat dipertimbangkan berdasarkan indeks yang paling sesuai dengan tujuan analisis, yaitu 2 atau 6 cluster tergantung prioritas metrik yang digunakan.

4.2.6 Analisis Cluster Metode Average Linkage

> plot(hirave, labels = data$Kota.atau.Kabupaten,hang = -1, col = "black", main = "Cluster Dendrogram", sub = " ", xlab = "Kota/Kabupaten", ylab = "Jarak")

Hasil analisis cluster divisualisasikan dalam bentuk dendogram di atas. Garis horizontal pada dendogram mewakili Kota/Kabupaten yang dikelompokkan, sedangkan garis vertikal menunjukkan jarak Euclidean antar Kota/Kabupaten.

  • Memotong hasil clusterisasi menjadi 2 cluster
> anggotaave
   id cluster
1   1       1
2   2       1
3   3       1
4   4       1
5   5       1
6   6       1
7   7       1
8   8       1
9   9       1
10 10       1
11 11       1
12 12       2
> clus_hier <- eclust(datastand, FUNcluster = "hclust", k = 2, hc_method = "average", graph = TRUE)
> fviz_dend(clus_hier, rect = TRUE, cex = 0.5)

Berdasarkan hasil indeks validitas nilai Connectivity dan nilai Silhouette, jumlah cluster yang optimal adalah 2 cluster. Cluster pertama, yang ditandai dengan warna biru, terdiri dari 11 Kota atau Kabupaten, yaitu Kota Kediri, Blitar, Malang, Probolinggo, Pasuruan, Mojokerto, Madiun, Surabaya, dan Batu, dan juga Kabupaten Sidoarjo, dan Gresik. Klaster kedua, yang ditandai dengan warna merah, terdiri dari satu Kabupaten, yaitu Banyuwangi.

  • Memotong hasil clusterisasi menjadi 6 cluster
> anggotaaverage
   id cluster
1   1       1
2   2       1
3   3       2
4   4       3
5   5       4
6   6       2
7   7       2
8   8       2
9   9       5
10 10       2
11 11       4
12 12       6
> clushier <- eclust(datastand, FUNcluster = "hclust", k = 6, hc_method = "average", graph = TRUE)
> fviz_dend(clushier, rect = TRUE, cex = 0.5)

Berdasarkan hasil indeks validitas nilai Dunn, jumlah cluster yang optimal adalah 6 cluster. Cluster pertama, yang ditandai dengan warna pink, terdiri dari dua Kota, yaitu Kediri dan Blitar. Cluster kedua, yang ditandai dengan warna biru tua, terdiri dari satu Kota, yaitu Surabaya. Cluster ketiga, yang ditandai dengan warna biru muda, terdiri dari 4 kota dan 1 kabupaten, yaitu Kota Mojokerto, Malang, Madiun, dan Surabaya, dan juga Kabupaten Sidoarjo. Cluster keempat, yang ditandai dengan warna hijau, terdiri dari dari 1 kota yaitu Pasuruan dan 1 kabupaten yaitu Gresik. Cluster kelima, yang ditandai dengan warna kuning, terdiri dari 1 kota yaitu Probolinggo. Cluster keenam, yang ditandai dengan warna merah, terdiri dari 1 kabupaten yaitu Banyuwangi.

4.2.7 Karakteristik Setiap Cluster

> idclus <- clus_hier$cluster
> idclus
 1  2  3  4  5  6  7  8  9 10 11 12 
 1  1  1  1  1  1  1  1  1  1  1  2 
> aggregate(data,list(idclus),mean)
  Group.1 Kota atau Kabupaten Padi-Padian Umbi-Umbian     Ikan   Daging
1       1                  NA      671.75    30.57182 37.05091 84.29636
2       2                  NA      884.90    38.25000 38.97000 63.66000
  Telur dan Susu Sayur-Sayuran
1       62.47818      34.88364
2       41.63000      49.63000

Dari hasil tersebut, pada komoditi padi-padian cluster 1 memiliki rata-rata sebesar 671.75, yang menunjukkan bahwa rata-rata kalori harian komoditi padi-padian pada kota/kabupaten pada cluster 1 relatif lebih rendah dibandingkan dengan cluster 2, yang memiliki rata-rata 884.90. Artinya, kota/kabupaten dalam cluster 2 umumnya mengonsumsi komoditi padi-padian lebih banyak dibandingkan dengan cluster 1.

Pada komoditi umbi-umbian cluster 2 memiliki rata-rata sebesar 38.25, yang menunjukkan bahwa rata-rata kalori harian komoditi umbi-umbian pada kota/kabupaten pada cluster 1 relatif lebih rendah dibandingkan dengan cluster 2, yang memiliki rata-rata 30.57182. Artinya, kota/kabupaten dalam cluster 2 umumnya mengonsumsi komoditi umbi-umbian lebih banyak dibandingkan dengan cluster 1.

Pada komoditi ikan cluster 1 memiliki rata-rata sebesar 37.05091, yang menunjukkan bahwa rata-rata kalori harian komoditi ikan pada kota/kabupaten pada cluster 1 relatif lebih rendah dibandingkan dengan cluster 2, yang memiliki rata-rata 38.97. Artinya, kota/kabupaten dalam cluster 2 umumnya mengonsumsi komoditi ikan lebih banyak dibandingkan dengan cluster 1.

Pada komoditi daging cluster 1 memiliki rata-rata sebesar 84.29636, yang menunjukkan bahwa rata-rata kalori harian komoditi daging pada kota/kabupaten pada cluster 1 relatif lebih tinggi dibandingkan dengan cluster 2, yang memiliki rata-rata 63.66. Artinya, kota/kabupaten dalam cluster 1 umumnya mengonsumsi komoditi daging lebih banyak dibandingkan dengan cluster 2.

Pada komoditi telur dan susu cluster 1 memiliki rata-rata sebesar 62.47818, yang menunjukkan bahwa rata-rata kalori harian komoditi telur dan susu pada kota/kabupaten pada cluster 1 relatif lebih tinggi dibandingkan dengan cluster 2, yang memiliki rata-rata 41.63. Artinya, kota/kabupaten dalam cluster 1 umumnya mengonsumsi komoditi telur dan susu lebih banyak dibandingkan dengan cluster 2.

Pada komoditi sayur-sayuran cluster 1 memiliki rata-rata sebesar 34.88364, yang menunjukkan bahwa rata-rata kalori harian komoditi sayur-sayuran pada kota/kabupaten pada cluster 1 relatif lebih rendah dibandingkan dengan cluster 2, yang memiliki rata-rata 49.63. Artinya, kota/kabupaten dalam cluster 2 umumnya mengonsumsi komoditi sayur-sayuran lebih banyak dibandingkan dengan cluster 2.

5 KESIMPULAN

Berdasarkan hasil analisis cluster dengan metode average linkage, kota/kabupaten di Provinsi Jawa Timur berhasil dikelompokkan berdasarkan rata-rata kalori per kapita sehari dari berbagai sub kelompok komoditi makanan pada tahun 2023 ke dalam 2 cluster berdasarkan indeks validitas connectivity dan silhouette, dan 6 cluster berdasarkan indeks Dunn.

Kota/kabupaten yang tergabung dalam cluster 1 cenderung memiliki konsumsi lebih tinggi untuk komoditi seperti daging serta telur dan susu, yang mungkin mencerminkan tingkat kesejahteraan atau daya beli yang lebih tinggi. Sebaliknya, kota/kabupaten di cluster 2 memiliki konsumsi lebih tinggi untuk komoditi padi-padian, umbi-umbian, ikan, dan sayur-sayuran, yang dapat mengindikasikan pola konsumsi masyarakat yang lebih bergantung pada sumber pangan pokok atau akses yang lebih besar ke komoditi tersebut.

Perbedaan ini kemungkinan dipengaruhi oleh faktor geografis, seperti aksesibilitas terhadap sumber daya lokal (contohnya kota di wilayah pesisir seperti yang lebih banyak mengonsumsi ikan), serta faktor sosial-ekonomi, seperti pendapatan, tingkat pendidikan, dan preferensi konsumsi masyarakat di masing-masing cluster.

6 DAFTAR PUSTAKA

Badan Pusat Statistik. (2024). Rata-rata Kalori Perkapita Sehari di Provinsi Jawa Timur Dirinci Menurut Kabupaten/Kota dan Sub Kelompok Komoditi Makanan, 2023. Diakses pada 27 November 2024 di https://jatim.bps.go.id/id/statistics-table/1/MzExMCMx/rata-rata-kalori-perkapita-sehari-di-provinsi-jawa-timur-dirinci-menurut–kabupaten-kota-dan-sub-kelompok-komoditi-makanan–2023.html

Dani, A., T., R., Wahyuningsih, S., Rizki, N., A. Pengelompokkan Data Runtun Waktu menggunakan Analisis Cluster (Studi Kasus: Nilai Ekspor Komoditi Migas dan Nonmigas Provinsi Kalimantan Timur Periode Januari 2000-Desember 2016). Jurnal Eksponensial, 11(1), 29-28.

Gujarati, D. N. 1978. Ekonometrika Dasar. Jakarta: Erlangga.

Laraswati, T. F. (2015). Perbandingan Kinerja Metode Complete Linkage, Metode Average, dan Metode K-Means dalam Menentukan Hasil Analisis Cluster. (Skripsi, Universitas Negeri Yogyakarta, Yogyakarta).

Maysani, R., & Pujiastuti, H. (2020). Analisis Kesulitan Mahasiswa dalam Mata Kuliah Statistika Deskriptif. Al-Khawarizmi: Jurnal Pendidikan dan Pembelajaran Matematika, 4(1), 32-49.

Muhartini, A. A., Febriati, T., Sukmawati, S. (2022). Analisis Cluster untuk Mengelompokkan Penggunaan Kartu Perdana Seluler di Universitas Bina Bangsa. Jurnal Bayesian: Jurnal Ilmiah Statistika dan Ekonometrika, 2(1), 15-30.

Ningrat, D. R., Maruddani, D. A. I., Wuryandari, T. (2016). Analisis Cluster dengan Algoritma K-Means dan Fuzzy C-Means Clustering untuk Pengelompokkan Data Obligasi Korporasi. Jurnal Gaussian, 5(4), 641-650.

Novaldi, J., Wijayanto, A. W. (2023). Analisis Cluster Kualitas Pemuda di Indonesia pada Tahun 2022 dengan Agglomerative Hierarchical dan K-Means. Komputika: Jurnal Sistem Komputer, 12(2), 211-219.

Sirojuddin, A. (2016). Analisis Cluster pada Kabupaten/Kota di Provinsi Jawa Timur Berdasarkan Indikator Indeks Pembangunan Manusia. (Skripsi, Universitas Islam Negeri Maulana Malik Ibrahim, Malang).

Talakua, M. W., Leleury, Z. A., dan Talluta, A. W. (2017). Analisis Cluster dengan Menggunakan Metode K-Means untuk Pengelompokkan Kabupaten/Kota di Provinsi Maluku Berdasarkan Indikator Indeks Pembangunan Manusia Tahun 2014. Jurnal Ilmu Matematika dan Terapan, 11(2), 119-128.

Yuniarti, R. (2022). Kesalahan Mahasiswa Program Studi Administrasi Publik dalam Menyelesaikan Soal Statistika Deskriptif dan Statistika Inferensial. Jurnal Sains Matematika dan Statistika, 8(1), 46-58.