DATA

Data ini digunakan untuk koreksi bias terhadap prakiraan suhu udara maksimum dan minimum hari berikutnya dari model LDAPS yang dioperasikan oleh Administrasi Meteorologi Korea di wilayah Seoul, Korea Selatan. Data ini mencakup data musim panas dari tahun 2013 hingga 2017. Data masukan sebagian besar terdiri dari data prakiraan hari berikutnya dari model LDAPS, suhu maksimum dan minimum in-situ pada hari yang sama, serta variabel geografis tambahan. Terdapat dua keluaran (yaitu suhu udara maksimum dan minimum hari berikutnya) dalam data ini. Validasi hindcast dilakukan untuk periode tahun 2015 hingga 2017.

Sumber data: https://archive.ics.uci.edu/dataset/514/bias+correction+of+numerical+prediction+model+temperature+forecast

LOAD LIBRARY

library(readr)
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ purrr     1.1.0
## ✔ forcats   1.0.1     ✔ stringr   1.5.2
## ✔ ggplot2   4.0.0     ✔ tibble    3.3.0
## ✔ lubridate 1.9.4     ✔ tidyr     1.3.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(mclust)
## Package 'mclust' version 6.1.2
## Type 'citation("mclust")' for citing this R package in publications.
## 
## Attaching package: 'mclust'
## 
## The following object is masked from 'package:dplyr':
## 
##     count
## 
## The following object is masked from 'package:purrr':
## 
##     map
library(cluster)
library(corrplot)
## corrplot 0.95 loaded
library(kmed)
library(factoextra)
## Welcome to factoextra!
## Want to learn more? See two factoextra-related books at https://www.datanovia.com/en/product/practical-guide-to-principal-component-methods-in-r/

LOAD DATA & DATA CLEAN

bias_correction <- read_csv("Bias_correction_ucl.csv")
## Rows: 7752 Columns: 25
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## dbl  (24): station, Present_Tmax, Present_Tmin, LDAPS_RHmin, LDAPS_RHmax, LD...
## date  (1): Date
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
head(bias_correction)
## # A tibble: 6 × 25
##   station Date       Present_Tmax Present_Tmin LDAPS_RHmin LDAPS_RHmax
##     <dbl> <date>            <dbl>        <dbl>       <dbl>       <dbl>
## 1       1 2013-06-30         28.7         21.4        58.3        91.1
## 2       2 2013-06-30         31.9         21.6        52.3        90.6
## 3       3 2013-06-30         31.6         23.3        48.7        84.0
## 4       4 2013-06-30         32           23.4        58.2        96.5
## 5       5 2013-06-30         31.4         21.9        56.2        90.2
## 6       6 2013-06-30         31.9         23.5        52.4        85.3
## # ℹ 19 more variables: LDAPS_Tmax_lapse <dbl>, LDAPS_Tmin_lapse <dbl>,
## #   LDAPS_WS <dbl>, LDAPS_LH <dbl>, LDAPS_CC1 <dbl>, LDAPS_CC2 <dbl>,
## #   LDAPS_CC3 <dbl>, LDAPS_CC4 <dbl>, LDAPS_PPT1 <dbl>, LDAPS_PPT2 <dbl>,
## #   LDAPS_PPT3 <dbl>, LDAPS_PPT4 <dbl>, lat <dbl>, lon <dbl>, DEM <dbl>,
## #   Slope <dbl>, `Solar radiation` <dbl>, Next_Tmax <dbl>, Next_Tmin <dbl>
nrow(bias_correction)  
## [1] 7752
# Cek Missing Value 
str(bias_correction)
## spc_tbl_ [7,752 × 25] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
##  $ station         : num [1:7752] 1 2 3 4 5 6 7 8 9 10 ...
##  $ Date            : Date[1:7752], format: "2013-06-30" "2013-06-30" ...
##  $ Present_Tmax    : num [1:7752] 28.7 31.9 31.6 32 31.4 31.9 31.4 32.1 31.4 31.6 ...
##  $ Present_Tmin    : num [1:7752] 21.4 21.6 23.3 23.4 21.9 23.5 24.4 23.6 22 20.5 ...
##  $ LDAPS_RHmin     : num [1:7752] 58.3 52.3 48.7 58.2 56.2 ...
##  $ LDAPS_RHmax     : num [1:7752] 91.1 90.6 84 96.5 90.2 ...
##  $ LDAPS_Tmax_lapse: num [1:7752] 28.1 29.9 30.1 29.7 29.1 ...
##  $ LDAPS_Tmin_lapse: num [1:7752] 23 24 24.6 23.3 23.5 ...
##  $ LDAPS_WS        : num [1:7752] 6.82 5.69 6.14 5.65 5.74 ...
##  $ LDAPS_LH        : num [1:7752] 69.5 51.9 20.6 65.7 108 ...
##  $ LDAPS_CC1       : num [1:7752] 0.234 0.226 0.209 0.216 0.151 ...
##  $ LDAPS_CC2       : num [1:7752] 0.204 0.252 0.257 0.226 0.25 ...
##  $ LDAPS_CC3       : num [1:7752] 0.162 0.159 0.204 0.161 0.179 ...
##  $ LDAPS_CC4       : num [1:7752] 0.131 0.128 0.142 0.134 0.17 ...
##  $ LDAPS_PPT1      : num [1:7752] 0 0 0 0 0 0 0 0 0 0 ...
##  $ LDAPS_PPT2      : num [1:7752] 0 0 0 0 0 0 0 0 0 0 ...
##  $ LDAPS_PPT3      : num [1:7752] 0 0 0 0 0 0 0 0 0 0 ...
##  $ LDAPS_PPT4      : num [1:7752] 0 0 0 0 0 0 0 0 0 0 ...
##  $ lat             : num [1:7752] 37.6 37.6 37.6 37.6 37.6 ...
##  $ lon             : num [1:7752] 127 127 127 127 127 ...
##  $ DEM             : num [1:7752] 212.3 44.8 33.3 45.7 35 ...
##  $ Slope           : num [1:7752] 2.785 0.514 0.266 2.535 0.505 ...
##  $ Solar radiation : num [1:7752] 5993 5869 5864 5857 5860 ...
##  $ Next_Tmax       : num [1:7752] 29.1 30.5 31.1 31.7 31.2 31.5 30.9 31.1 31.3 30.5 ...
##  $ Next_Tmin       : num [1:7752] 21.2 22.5 23.9 24.3 22.5 24 23.4 22.9 21.6 21 ...
##  - attr(*, "spec")=
##   .. cols(
##   ..   station = col_double(),
##   ..   Date = col_date(format = ""),
##   ..   Present_Tmax = col_double(),
##   ..   Present_Tmin = col_double(),
##   ..   LDAPS_RHmin = col_double(),
##   ..   LDAPS_RHmax = col_double(),
##   ..   LDAPS_Tmax_lapse = col_double(),
##   ..   LDAPS_Tmin_lapse = col_double(),
##   ..   LDAPS_WS = col_double(),
##   ..   LDAPS_LH = col_double(),
##   ..   LDAPS_CC1 = col_double(),
##   ..   LDAPS_CC2 = col_double(),
##   ..   LDAPS_CC3 = col_double(),
##   ..   LDAPS_CC4 = col_double(),
##   ..   LDAPS_PPT1 = col_double(),
##   ..   LDAPS_PPT2 = col_double(),
##   ..   LDAPS_PPT3 = col_double(),
##   ..   LDAPS_PPT4 = col_double(),
##   ..   lat = col_double(),
##   ..   lon = col_double(),
##   ..   DEM = col_double(),
##   ..   Slope = col_double(),
##   ..   `Solar radiation` = col_double(),
##   ..   Next_Tmax = col_double(),
##   ..   Next_Tmin = col_double()
##   .. )
##  - attr(*, "problems")=<externalptr>
summary(bias_correction)
##     station        Date             Present_Tmax    Present_Tmin  
##  Min.   : 1   Min.   :2013-06-30   Min.   :20.00   Min.   :11.30  
##  1st Qu.: 7   1st Qu.:2014-07-15   1st Qu.:27.80   1st Qu.:21.70  
##  Median :13   Median :2015-07-30   Median :29.90   Median :23.40  
##  Mean   :13   Mean   :2015-07-30   Mean   :29.77   Mean   :23.23  
##  3rd Qu.:19   3rd Qu.:2016-08-15   3rd Qu.:32.00   3rd Qu.:24.90  
##  Max.   :25   Max.   :2017-08-30   Max.   :37.60   Max.   :29.90  
##  NA's   :2    NA's   :2            NA's   :70      NA's   :70     
##   LDAPS_RHmin     LDAPS_RHmax     LDAPS_Tmax_lapse LDAPS_Tmin_lapse
##  Min.   :19.79   Min.   : 58.94   Min.   :17.62    Min.   :14.27   
##  1st Qu.:45.96   1st Qu.: 84.22   1st Qu.:27.67    1st Qu.:22.09   
##  Median :55.04   Median : 89.79   Median :29.70    Median :23.76   
##  Mean   :56.76   Mean   : 88.37   Mean   :29.61    Mean   :23.51   
##  3rd Qu.:67.19   3rd Qu.: 93.74   3rd Qu.:31.71    3rd Qu.:25.15   
##  Max.   :98.52   Max.   :100.00   Max.   :38.54    Max.   :29.62   
##  NA's   :75      NA's   :75       NA's   :75       NA's   :75      
##     LDAPS_WS         LDAPS_LH        LDAPS_CC1        LDAPS_CC2     
##  Min.   : 2.883   Min.   :-13.60   Min.   :0.0000   Min.   :0.0000  
##  1st Qu.: 5.679   1st Qu.: 37.27   1st Qu.:0.1467   1st Qu.:0.1406  
##  Median : 6.547   Median : 56.87   Median :0.3157   Median :0.3124  
##  Mean   : 7.098   Mean   : 62.51   Mean   :0.3688   Mean   :0.3561  
##  3rd Qu.: 8.032   3rd Qu.: 84.22   3rd Qu.:0.5755   3rd Qu.:0.5587  
##  Max.   :21.858   Max.   :213.41   Max.   :0.9673   Max.   :0.9684  
##  NA's   :75       NA's   :75       NA's   :75       NA's   :75      
##    LDAPS_CC3        LDAPS_CC4         LDAPS_PPT1         LDAPS_PPT2      
##  Min.   :0.0000   Min.   :0.00000   Min.   : 0.00000   Min.   : 0.00000  
##  1st Qu.:0.1014   1st Qu.:0.08153   1st Qu.: 0.00000   1st Qu.: 0.00000  
##  Median :0.2626   Median :0.22766   Median : 0.00000   Median : 0.00000  
##  Mean   :0.3184   Mean   :0.29919   Mean   : 0.59199   Mean   : 0.48500  
##  3rd Qu.:0.4967   3rd Qu.:0.49949   3rd Qu.: 0.05252   3rd Qu.: 0.01836  
##  Max.   :0.9838   Max.   :0.97471   Max.   :23.70154   Max.   :21.62166  
##  NA's   :75       NA's   :75        NA's   :75         NA's   :75        
##    LDAPS_PPT3        LDAPS_PPT4            lat             lon       
##  Min.   : 0.0000   Min.   : 0.00000   Min.   :37.46   Min.   :126.8  
##  1st Qu.: 0.0000   1st Qu.: 0.00000   1st Qu.:37.51   1st Qu.:126.9  
##  Median : 0.0000   Median : 0.00000   Median :37.55   Median :127.0  
##  Mean   : 0.2782   Mean   : 0.26941   Mean   :37.54   Mean   :127.0  
##  3rd Qu.: 0.0079   3rd Qu.: 0.00004   3rd Qu.:37.58   3rd Qu.:127.0  
##  Max.   :15.8412   Max.   :16.65547   Max.   :37.65   Max.   :127.1  
##  NA's   :75        NA's   :75                                        
##       DEM             Slope         Solar radiation   Next_Tmax    
##  Min.   : 12.37   Min.   :0.09847   Min.   :4330    Min.   :17.40  
##  1st Qu.: 28.70   1st Qu.:0.27130   1st Qu.:4999    1st Qu.:28.20  
##  Median : 45.72   Median :0.61800   Median :5436    Median :30.50  
##  Mean   : 61.87   Mean   :1.25705   Mean   :5342    Mean   :30.27  
##  3rd Qu.: 59.83   3rd Qu.:1.76780   3rd Qu.:5728    3rd Qu.:32.60  
##  Max.   :212.34   Max.   :5.17823   Max.   :5993    Max.   :38.90  
##                                                     NA's   :27     
##    Next_Tmin    
##  Min.   :11.30  
##  1st Qu.:21.30  
##  Median :23.10  
##  Mean   :22.93  
##  3rd Qu.:24.60  
##  Max.   :29.80  
##  NA's   :27
# Hapus Missing Value 
bc_clean <- bias_correction %>% drop_na()
nrow(bc_clean)         
## [1] 7588

Berdasarkan hasil pengecekan data, ditemukan adanya nilai hilang (missing value) pada beberapa variabel. Oleh karena itu dilakukan pembersihan data menggunakan fungsi drop_na(), sehingga jumlah observasi berkurang dari 7.752 menjadi 7.588 data.

SCALE DATA

# Standarisasi 
bc_features <- bc_clean %>%
  select(-station, -Date, -Next_Tmax, -Next_Tmin)

bc_scaled <- scale(bc_features)

Selanjutnya dilakukan pemilihan variabel yang akan digunakan dalam proses clustering dengan mengeluarkan variabel station, Date, Next_Tmax, dan Next_Tmin. Variabel station dan Date tidak digunakan karena hanya berfungsi sebagai identitas pengamatan, sedangkan Next_Tmax dan Next_Tmin merupakan variabel target yang tidak digunakan dalam pembentukan cluster.

Setelah itu dilakukan standarisasi data menggunakan fungsi scale(). Proses standarisasi bertujuan untuk menyamakan skala antar variabel sehingga setiap variabel memiliki rata-rata (mean) 0 dan simpangan baku (standar deviasi) 1. Standarisasi diperlukan karena rentang nilai antar variabel berbeda cukup besar, misalnya variabel Solar radiation memiliki nilai ribuan, sedangkan variabel LDAPS_CC1 hanya bernilai antara 0 hingga 1. Tanpa standarisasi, variabel dengan skala yang lebih besar akan mendominasi pembentukan cluster.

METODE 1: K-MEANS

set.seed(123)

1. Tentukan Jumlah Cluster (Metode Elbow)

wcss <- numeric(10)
for(i in 1:10){
  km <- kmeans(bc_scaled, centers = i)
  wcss[i] <- km$tot.withinss 
}
plot(1:10, wcss, 
     type = "b",
     xlab = "jumlah cluster",
     ylab = "WCSS")

Berdasarkan metode Elbow, nilai Within Cluster Sum of Squares (WCSS) mengalami penurunan yang signifikan dari jumlah cluster 1 hingga 3. Setelah jumlah cluster mencapai 3, penurunan WCSS cenderung melambat sehingga penambahan cluster tidak memberikan peningkatan yang berarti terhadap homogenitas cluster. Oleh karena itu, jumlah cluster optimal yang digunakan pada analisis K-Means adalah 3 cluster.

2. K-Means

kmeans_result <- kmeans(bc_scaled,
                        centers = 3,
                        nstart  = 25,
                        iter.max = 100)

(kmclust.bc <- kmeans_result$cluster)
##    [1] 2 1 1 2 1 1 1 1 1 2 1 1 1 1 1 2 2 1 1 2 1 1 1 1 1 3 3 3 3 3 3 3 3 3 3 3 3
##   [38] 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
##   [75] 1 2 3 1 2 3 1 3 3 3 2 1 3 1 3 3 2 2 1 3 3 1 1 3 3 3 2 1 1 2 1 1 2 1 2 2 1
##  [112] 2 1 1 1 2 2 1 2 2 1 1 1 1 1 2 1 1 2 1 1 2 2 2 2 1 2 1 1 2 2 2 2 2 2 1 1 1
##  [149] 1 1 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
##  [186] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 3 3 3 3 3 2 3 3 2 3 3 2 3 3 3 3 3 3
##  [223] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
##  [260] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
##  [297] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
##  [334] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 3 3 3 3 3
##  [371] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
##  [408] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
##  [445] 3 3 3 1 1 2 2 1 1 1 1 2 1 1 1 1 2 2 1 1 2 1 1 1 1 1 2 1 1 1 2 1 1 1 1 2 1
##  [482] 1 1 1 1 1 1 1 1 2 1 1 1 1 1 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
##  [519] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
##  [556] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 3 3 3 3 3
##  [593] 3 3 3 2 2 1 2 2 1 2 2 2 2 1 2 2 1 1 2 2 2 2 2 1 1 1 1 1 2 1 2 1 1 1 1 2 2
##  [630] 1 2 1 1 1 2 2 1 2 2 1 1 1 1 1 2 1 1 2 1 1 1 1 1 2 1 1 1 1 1 2 2 1 1 2 1 1
##  [667] 1 1 1 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 1 2 1 1 1 1 2
##  [704] 2 1 2 2 1 1 2 2 2 2 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1
##  [741] 1 1 1 1 2 1 1 2 1 1 1 1 1 2 1 2 1 1 1 2 2 1 2 2 1 1 1 1 1 2 1 1 2 1 1 1 1
##  [778] 1 2 1 1 1 1 1 1 2 1 1 2 1 1 1 1 1 3 3 3 3 3 1 3 1 3 3 1 3 3 1 1 3 3 1 3 3
##  [815] 1 1 1 1 1 2 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1
##  [852] 2 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1
##  [889] 1 1 1 3 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 3 1 1 1 1 1 2 1 1 2 1 1 1 1 1 2
##  [926] 1 2 1 1 1 2 2 1 2 2 1 1 1 1 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1
##  [963] 1 1 1 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 2 1
## [1000] 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1
## [1037] 1 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 2 1 1
## [1074] 1 1 1 1 1 1 1 2 1 1 1 1 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1
## [1111] 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 2 1 1
## [1148] 1 1 1 1 1 1 1 2 1 1 1 1 1 3 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 3 1 1 1 1
## [1185] 1 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 2 1
## [1222] 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 2 1 1 2 1 1 1
## [1259] 1 1 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 3 3 3 3 3 3 3 3 3 3
## [1296] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 1 1 2 2 1 1 1 2 2 1 2 1 1 1 2 2 2 2 2 1 1
## [1333] 1 1 1 2 1 1 2 1 1 1 1 2 2 1 1 1 1 1 2 2 1 1 2 1 1 1 1 1 2 1 1 2 2 1 1 1 1
## [1370] 2 1 1 1 1 1 2 2 1 1 2 1 1 1 1 1 2 2 1 2 2 1 1 1 2 2 1 2 1 1 1 2 2 1 2 2 1
## [1407] 1 1 1 1 2 2 1 2 2 1 1 1 2 2 1 2 2 1 1 2 2 1 2 2 1 1 1 1 1 3 3 3 3 3 3 3 3
## [1444] 3 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 1 2 2 1 2 2 1 2 2 2 2 1 2 2 1 2 2 2 2 2 2
## [1481] 1 2 2 1 1 2 2 1 2 2 1 2 2 2 2 1 2 2 1 2 2 2 2 2 2 1 1 2 1 1 2 2 1 2 2 1 2
## [1518] 2 2 2 1 2 1 1 1 2 2 2 2 2 1 1 2 1 1 2 2 1 2 1 1 1 1 3 2 1 1 1 1 1 2 2 1 2
## [1555] 2 1 1 1 1 1 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 2 2 2 2
## [1592] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 2 1 1 2 1 1 1 1 1 2 1 1 1 1 1 2 2 1
## [1629] 1 2 1 1 1 1 1 2 2 1 2 2 1 1 1 1 2 1 2 1 1 1 2 2 1 2 2 1 1 1 1 1 2 1 1 2 2
## [1666] 1 2 1 2 2 1 1 1 1 1 2 2 1 1 2 1 1 1 1 1 2 1 1 2 2 1 1 1 2 2 1 2 1 1 1 2 2
## [1703] 1 2 2 1 1 1 1 1 3 3 3 3 1 3 3 1 3 2 1 1 1 1 1 1 3 1 3 3 3 1 1 1 1 2 1 1 1
## [1740] 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 2 1 1 1 1 1 2 1 1 1 1 1 2
## [1777] 2 1 1 2 1 1 1 1 1 2 2 1 2 1 1 3 3 3 2 1 3 1 1 1 2 2 1 3 2 1 1 3 1 1 2 2 1
## [1814] 2 2 1 2 2 2 2 1 2 1 1 2 2 2 2 2 2 1 1 1 1 1 2 2 1 2 2 1 2 2 2 2 1 2 1 1 1
## [1851] 2 2 1 2 2 1 1 1 1 1 2 2 1 2 1 1 2 1 2 2 1 2 1 1 1 2 2 1 1 2 1 1 1 1 1 2 1
## [1888] 1 2 2 1 1 1 1 2 1 2 1 1 1 2 2 1 2 2 1 1 1 1 1 2 1 1 2 2 1 1 1 1 2 1 2 1 1
## [1925] 1 2 2 1 2 2 1 1 1 1 1 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2
## [1962] 1 1 2 1 1 1 1 2 2 1 2 1 1 1 2 1 1 2 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 2 1 1 1
## [1999] 1 1 2 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1
## [2036] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
## [2073] 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 2 2 2 3 3 3 3 3 3 2 2 3 2 3 2 3 2 2 2 3 3 3
## [2110] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 1 2 2 1 2 1 2 2 1
## [2147] 2 2 1 2 2 2 1 2 2 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## [2184] 2 1 2 2 1 2 2 1 2 1 2 2 1 2 2 1 1 2 2 2 2 2 1 1 1 1 1 2 2 1 2 2 1 2 2 2 2
## [2221] 1 2 2 1 2 2 2 2 2 2 1 1 1 1 1 2 1 1 2 2 1 1 1 1 2 1 1 1 1 1 2 2 1 1 2 1 1
## [2258] 1 1 1 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1
## [2295] 2 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1
## [2332] 1 1 1 1 3 3 3 3 3 3 3 3 3 3 1 3 3 1 3 3 3 3 3 3 3 3 1 1 1 3 3 1 3 3 3 1 1
## [2369] 3 3 1 3 3 1 1 3 3 3 3 3 1 1 1 1 1 2 1 1 2 1 1 1 1 1 2 1 2 1 1 1 2 2 1 1 2
## [2406] 1 1 1 1 1 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 2 2 2 2 2 2
## [2443] 2 2 3 2 2 2 2 2 2 2 2 2 1 2 2 1 2 2 2 2 2 1 2 2 2 2 2 2 2 1 2 2 2 2 2 2 1
## [2480] 2 2 1 1 2 2 1 2 2 1 2 1 2 2 1 2 2 1 1 2 2 2 2 2 1 1 1 1 1 2 2 1 2 2 1 2 1
## [2517] 3 2 1 2 2 1 2 2 2 1 2 2 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## [2554] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 2 3 3 3 3 3 3
## [2591] 3 3 2 3 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 3 3 3 3 3 2 3 3 3
## [2628] 3 3 3 3 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 2 2 1
## [2665] 2 2 2 2 1 2 2 1 2 2 2 2 2 2 1 1 2 1 1 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
## [2702] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
## [2739] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## [2776] 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 2 2
## [2813] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 3 2 2 2 2 2 2 2
## [2850] 2 2 2 2 2 2 3 3 1 2 2 1 2 2 1 2 2 2 2 1 2 2 1 1 2 2 2 2 1 1 1 1 1 2 3 3 3
## [2887] 3 3 3 3 3 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 1 2 3 1 2 1 2 2 1 2 2 1 1 2
## [2924] 2 2 2 2 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 1 2 2 2 2 2 2 2 2 1 1 1 2 2 2
## [2961] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## [2998] 2 2 2 2 2 2 2 2 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 2 2
## [3035] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## [3072] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## [3109] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## [3146] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 2 2 2 1
## [3183] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 2 2 2 2 2 2 2 2 1 1 2 2 1 2 2 1 2 2 2 2 1 2
## [3220] 2 1 1 2 2 1 2 2 1 1 1 1 1 2 2 1 2 2 1 2 1 2 2 1 2 2 1 1 2 2 2 2 2 1 2 1 1
## [3257] 1 2 2 2 2 2 2 2 2 2 2 2 2 2 1 2 2 2 2 2 2 2 2 1 1 1 2 1 1 2 1 1 1 1 1 2 1
## [3294] 1 1 1 1 2 2 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1
## [3331] 1 1 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
## [3368] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## [3405] 2 2 2 1 1 2 1 1 1 1 1 2 1 1 1 1 1 2 2 1 1 2 1 1 1 1 1 2 2 1 2 2 1 2 1 1 2
## [3442] 1 2 1 1 1 2 2 1 2 2 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## [3479] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 2 2 1 3 2 2
## [3516] 2 1 2 2 1 1 2 2 2 2 2 1 2 3 1 1 2 2 1 2 2 1 1 1 1 2 1 2 2 1 1 2 2 1 2 2 1
## [3553] 1 1 1 1 2 1 1 2 1 1 1 1 1 2 1 1 1 1 1 2 2 1 1 2 1 1 1 1 1 2 1 1 2 1 1 1 1
## [3590] 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2
## [3627] 1 1 1 1 1 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
## [3664] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 3 3 3 3 3
## [3701] 3 2 2 1 2 1 1 2 1 2 2 1 2 1 1 2 2 1 2 2 1 1 1 1 1 2 1 1 2 1 1 1 1 1 2 1 1
## [3738] 1 1 1 2 2 1 1 2 1 1 1 1 1 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
## [3775] 3 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 2 1
## [3812] 1 1 1 1 1 1 1 1 2 1 1 1 1 1 3 1 1 3 1 1 3 1 3 2 1 1 1 1 1 3 1 3 3 1 1 1 1
## [3849] 1 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 3 1 1 1 1 1 3 3 1 3 1 1 3 1 3 2 1 3
## [3886] 1 1 1 1 3 1 3 3 1 1 1 1 1 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1 1
## [3923] 1 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 1 1 1 1 1 1 1 1 2 1
## [3960] 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1
## [3997] 1 1 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 1 1 2 1 1 1 1 1 2 1
## [4034] 1 1 1 1 1 2 1 1 2 1 1 1 1 1 2 1 1 2 1 1 1 1 1 2 1 1 1 1 1 2 2 1 1 2 1 1 1
## [4071] 1 1 2 1 1 2 1 1 1 1 1 2 1 1 1 1 1 2 2 1 1 2 1 1 1 1 1 2 2 1 2 1 1 1 1 1 2
## [4108] 1 1 1 1 1 2 2 1 1 2 1 1 1 1 1 2 1 1 2 1 1 1 1 1 2 1 2 1 1 1 2 2 1 1 2 1 1
## [4145] 1 1 1 2 2 1 2 2 2 1 2 1 1 2 1 1 2 2 1 1 2 1 1 1 1 2 1 1 2 1 1 1 1 2 1 1 1
## [4182] 1 1 2 2 1 1 2 1 1 1 1 1 2 3 3 3 3 3 3 3 2 3 3 3 1 1 3 3 3 3 2 3 3 1 1 1 2
## [4219] 2 1 2 2 2 2 2 2 1 2 2 1 1 2 2 2 2 2 1 1 1 1 1 2 2 1 2 2 1 1 1 2 1 2 1 1 1
## [4256] 2 2 1 1 2 1 1 1 1 1 2 1 1 2 1 1 1 1 1 2 1 1 1 1 1 2 2 1 1 2 1 1 1 1 1 2 1
## [4293] 1 2 1 1 1 1 1 2 1 1 1 1 1 2 2 1 1 2 1 1 1 1 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3
## [4330] 3 3 2 3 3 2 3 3 3 3 3 2 2 1 2 2 1 1 1 1 2 1 2 2 1 1 2 2 1 2 2 1 1 1 1 1 2
## [4367] 2 1 2 2 1 2 1 2 2 1 2 2 1 1 2 2 2 1 2 1 1 1 1 1 2 2 1 2 2 1 1 1 1 2 1 2 2
## [4404] 1 1 2 2 1 2 2 1 1 1 1 1 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
## [4441] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## [4478] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 2 2 1 2 2 2 2 1 2 2 1 1 2 2 2 2 2 1 2 1 1
## [4515] 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## [4552] 2 2 1 2 2 2 2 2 2 2 2 1 1 1 2 2 2 2 2 1 2 2 2 2 2 2 2 1 1 2 2 2 2 2 1 1 1
## [4589] 1 1 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 2 2 2 2 2 2 2 2
## [4626] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 2 3 2 2 2 2 2 3 2 2 2 3 2 2 2 2
## [4663] 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
## [4700] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 3 3 2 3 3 3 3 3 2 3 3 3 3 3 2 3 3 3 2 3 3
## [4737] 3 3 3 2 3 3 2 3 3 3 3 3 2 3 2 3 3 3 3 3 3 3 2 3 3 3 3 3 2 2 1 2 2 1 2 1 2
## [4774] 2 1 2 2 1 1 2 2 2 2 2 1 1 1 1 1 2 1 1 2 1 1 1 1 1 2 1 1 1 1 1 2 2 1 1 2 1
## [4811] 1 1 1 1 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 2 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1
## [4848] 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 3 3 3 3 3 3 3 3 3 3 3 3 3 1 3 3 3 3 3 3
## [4885] 3 3 3 3 1 2 1 1 2 2 1 3 3 3 2 1 2 1 1 1 2 2 1 2 2 1 1 1 1 1 2 1 1 2 1 1 1
## [4922] 1 1 2 1 2 1 1 1 2 2 1 2 2 1 1 1 1 1 2 1 1 3 3 1 1 1 1 2 1 1 1 1 1 3 2 1 1
## [4959] 2 1 1 1 1 1 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 2 2 2 2
## [4996] 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## [5033] 2 2 2 2 2 2 2 2 2 2 2 2 1 2 2 2 2 2 2 2 1 1 2 2 2 2 2 2 2 1 1 1 2 1 1 2 2
## [5070] 1 1 1 1 2 1 1 1 1 1 2 2 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 2
## [5107] 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 3 1 1 3
## [5144] 1 1 3 1 3 1 1 1 1 1 3 3 1 3 3 1 1 1 1 1 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
## [5181] 3 3 3 3 3 3 3 3 3 3 1 3 3 1 3 3 3 3 1 3 1 3 3 3 3 3 3 3 1 1 3 3 3 2 1 1 1
## [5218] 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
## [5255] 3 3 3 3 3 3 3 3 3 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 2 1 1 1 1 1 3 3 3
## [5292] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
## [5329] 3 3 3 3 3 3 3 3 3 3 3 1 1 1 1 1 1 3 1 2 1 1 1 1 1 1 1 1 1 3 1 1 1 1 1 3 3
## [5366] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 1 1 1 1 1 1 1 1 2 1 1 1 1
## [5403] 1 2 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2
## [5440] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1
## [5477] 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2
## [5514] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 2 1 1 1
## [5551] 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1
## [5588] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [5625] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 3
## [5662] 3 3 3 1 3 1 3 3 3 3 3 1 3 1 3 1 3 3 1 3 1 1 1 2 1 1 1 1 1 1 1 1 2 1 1 1 1
## [5699] 1 1 1 1 1 2 1 1 1 1 1 2 1 1 3 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2
## [5736] 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 2 1 1 1
## [5773] 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1
## [5810] 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1
## [5847] 1 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1 1
## [5884] 1 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 2 1
## [5921] 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 2 1 2 2 1 2 3 2 2 2 2 1 3 2 2 3 2 2 1 3 1 1
## [5958] 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## [5995] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## [6032] 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3
## [6069] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 1 2 2 1 2 2 2 2 2 2 1 1 1 1 3 3 3 3 3 3 3
## [6106] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
## [6143] 3 3 3 3 2 2 1 2 2 1 2 2 2 2 1 2 2 1 1 2 2 1 2 1 1 1 1 1 2 1 1 2 1 1 1 1 1
## [6180] 2 1 1 1 1 1 2 1 1 2 1 1 1 1 1 2 1 1 2 1 1 1 1 1 2 1 1 1 1 1 2 1 1 2 1 1 1
## [6217] 1 1 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
## [6254] 3 3 3 3 3 3 3 3 3 3 3 3 1 1 3 1 1 3 1 3 2 1 1 1 1 1 1 1 1 3 3 1 1 1 1 1 3
## [6291] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## [6328] 2 2 2 2 2 1 1 2 2 1 2 1 1 2 1 1 2 1 2 2 1 2 1 1 1 2 2 1 2 2 1 1 1 1 1 2 1
## [6365] 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 2 1 1 1 1 1 2 1 1 1 1
## [6402] 1 1 2 1 1 2 1 1 1 1 1 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 1 3 1 1 1 3
## [6439] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 1 1 2 1 1 3 3 3 3 1 3 1
## [6476] 3 1 3 2 3 3 3 1 1 3 1 1 2 1 1 2 1 1 1 1 1 2 1 1 1 1 1 2 2 1 1 2 1 1 1 1 1
## [6513] 2 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1
## [6550] 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
## [6587] 3 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 3 1 1 1 1 1 3 1 1 1 1 1 3 3 3 3 1 1
## [6624] 1 1 1 1 1 1 3 3 1 1 1 1 1 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1 1
## [6661] 1 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 2 1
## [6698] 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1
## [6735] 1 1 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 3 1 3 3 1 3 1 2 1
## [6772] 2 3 1 1 2 3 1 1 3 1 1 1 1 1 2 1 1 2 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1 1
## [6809] 1 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 3 1 1 2 1 1 1 1 1 2 1 1 2 2 1 1 1 1 2 1
## [6846] 2 1 1 1 2 2 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1
## [6883] 1 1 2 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1
## [6920] 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1
## [6957] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 2 1
## [6994] 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1
## [7031] 1 1 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 3 1 1 1 1 1 2
## [7068] 1 1 1 1 1 1 1 1 1 3 1 1 1 1 1 2 1 1 2 2 1 1 1 1 2 1 2 1 1 1 2 2 1 2 2 1 1
## [7105] 1 1 1 2 1 1 2 1 1 1 1 2 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 2 1 1 1 1 2 1
## [7142] 1 1 1 1 2 2 1 1 2 1 1 1 1 1 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
## [7179] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
## [7216] 3 3 3 3 3 3 3 3 3 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## [7253] 2 2 2 2 2 2 2 2 2 2 2 2 1 1 2 2 2 2 2 1 2 1 1 1 2 2 3 2 1 1 1 1 2 1 2 1 3
## [7290] 1 2 2 1 1 2 1 1 1 1 1 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
## [7327] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 1 1 2 1 1 1 1 2 1 1 1 1
## [7364] 1 2 2 1 2 2 1 1 1 1 1 3 3 3 3 3 3 3 3 3 3 3 3 1 3 3 3 3 3 3 3 3 3 1 3 3 3
## [7401] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 2 1 2 1 2 2 2 2 1 2 2 1 1 2 2 1
## [7438] 2 2 1 1 1 1 2 2 2 2 2 2 2 2 1 2 2 1 1 2 2 2 2 2 1 2 2 1 1 2 2 2 2 2 2 2 2
## [7475] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 3 3 3 3 3
## [7512] 3 3 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## [7549] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## [7586] 2 2 2
table(kmeans_result$cluster)
## 
##    1    2    3 
## 3372 2237 1979

Berdasarkan metode K-Means dengan jumlah cluster optimal sebanyak 3 cluster, diperoleh pengelompokan sebanyak 7.588 observasi ke dalam tiga kelompok. Cluster 1 terdiri atas 2.237 observasi, Cluster 2 terdiri atas 1.979 observasi, dan Cluster 3 terdiri atas 3.372 observasi.

3. Validation (Silhouette)

idx <- sample(nrow(bc_scaled), 2000)
bc_sample <- bc_scaled[idx, ]

dist_bc <- dist(bc_sample)

# Silhouette Score
sil_km <- silhouette(kmeans_result$cluster[idx], dist_bc)
cat("Silhouette K-Means:", round(mean(sil_km[, 3]), 4))
## Silhouette K-Means: 0.1226
# Visualisasi silhouette
fviz_silhouette(sil_km) +
  labs(title = "Silhouette Plot - K-Means") +
  theme_minimal()
##   cluster size ave.sil.width
## 1       1  896          0.22
## 2       2  585          0.05
## 3       3  519          0.04

Berdasarkan validasi menggunakan Silhouette Index diperoleh nilai rata-rata silhouette sebesar 0,1226. Nilai tersebut menunjukkan bahwa struktur cluster yang terbentuk oleh metode K-Means masih tergolong lemah karena pemisahan antar cluster belum jelas.

Dari ketiga cluster yang terbentuk, Cluster 1 memiliki kualitas pengelompokan tertinggi dengan nilai average silhouette sebesar 0,22, sedangkan Cluster 2 dan Cluster 3 memiliki nilai average silhouette masing-masing sebesar 0,05 dan 0,04 yang menunjukkan tingkat kemiripan yang tinggi antar cluster. Dengan demikian, meskipun metode Elbow mengindikasikan jumlah cluster optimal sebanyak tiga cluster, hasil validasi silhouette menunjukkan bahwa kualitas pemisahan cluster masih kurang baik.

Pada Cluster 2 dan Cluster 3 terlihat area yang turun ke bawah nol. Adanya nilai silhouette negatif menunjukkan bahwa masih terdapat sejumlah observasi yang kurang tepat pengelompokannya sehingga kualitas cluster belum optimal.

METODE 2: HIERARCHICAL CLUSTERING (WARD LINKAGE)

1. Subsample 2000 Baris

idx_sample <- sample(nrow(bc_scaled), 2000)
fitur_hc   <- bc_scaled[idx_sample, ]

2. Hitung Jarak Euclidean

# Hitung jarak Euclidean
dist_matrix <- dist(fitur_hc, method = "euclidean")

3. Hierarchical clustering (Ward linkage)

(bc_ward <- hclust(dist_matrix, method = "ward.D2"))
## 
## Call:
## hclust(d = dist_matrix, method = "ward.D2")
## 
## Cluster method   : ward.D2 
## Distance         : euclidean 
## Number of objects: 2000
# Plot dendrogram
plot(bc_ward,
     main  = "Dendrogram (Ward Linkage - Euclidean Distance)",
     ylab = "Jarak",
     xlab  = "",
     sub   = "",
     cex   = 0.4,
     hang  = -1)
rect.hclust(bc_ward, k = 3, border = c("red","blue","green"))

# Cut Tree
(cluster_bc <- cutree(bc_ward, k = 3))
##    [1] 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 2 1 1 1 1 3 1 1 1 1 1 2 2 1 3 1 1 1 1 3 2
##   [38] 1 2 2 1 1 1 2 1 1 1 2 1 1 1 3 1 2 1 2 1 2 1 1 1 1 2 1 2 1 1 1 1 3 3 3 3 1
##   [75] 1 1 1 1 1 1 2 1 1 1 1 2 1 1 1 2 3 1 1 2 1 1 1 1 1 3 1 3 1 1 1 1 2 1 3 1 1
##  [112] 1 1 1 1 2 3 1 1 2 3 1 1 1 1 1 2 2 1 2 1 1 2 2 3 3 1 1 1 3 2 2 3 2 3 1 1 1
##  [149] 1 2 3 1 1 1 1 3 1 1 2 2 1 3 3 3 1 1 2 1 1 1 1 2 1 1 1 2 2 2 1 1 1 3 1 2 1
##  [186] 2 1 2 1 1 1 1 1 2 1 3 1 1 1 1 1 1 1 2 2 1 1 1 1 2 2 1 3 1 1 1 3 2 3 2 1 2
##  [223] 1 1 2 2 1 2 1 2 2 1 1 1 1 1 1 2 2 3 2 1 1 2 1 1 2 1 3 1 2 2 3 2 2 2 2 3 2
##  [260] 2 2 2 1 1 3 1 2 1 1 2 1 1 3 2 2 1 1 1 1 1 2 3 2 1 2 2 2 1 3 1 1 2 1 1 1 1
##  [297] 3 2 2 2 3 1 2 2 1 3 1 1 2 2 1 3 1 1 1 1 1 1 3 3 3 2 2 2 1 1 1 2 2 1 1 2 2
##  [334] 1 1 2 3 1 1 2 2 1 1 1 1 2 3 2 1 1 2 1 2 2 1 2 1 1 1 1 2 1 1 1 3 1 2 2 1 2
##  [371] 1 1 1 2 2 1 3 1 2 1 2 2 1 3 1 2 3 2 2 1 1 1 1 1 2 1 1 1 1 1 2 1 1 2 1 2 1
##  [408] 1 1 1 1 1 1 1 1 2 1 2 1 1 1 1 1 3 2 1 1 3 2 1 1 2 1 1 2 2 1 1 1 1 1 3 1 1
##  [445] 1 1 1 1 1 1 1 1 1 2 1 1 1 1 2 2 1 1 1 1 2 1 3 3 1 1 2 1 3 1 1 1 1 1 1 1 2
##  [482] 3 2 1 2 1 2 1 1 1 1 1 3 3 1 1 3 2 1 3 1 1 2 1 1 3 1 2 1 1 1 2 1 3 2 1 1 3
##  [519] 3 1 3 1 2 2 1 2 1 1 1 1 1 1 3 3 2 1 3 1 1 1 2 1 1 1 2 1 2 3 2 2 3 1 2 1 1
##  [556] 2 1 2 2 1 3 1 1 1 2 2 2 3 2 1 1 1 1 1 1 2 1 1 1 1 2 2 1 1 2 1 1 1 1 1 1 1
##  [593] 1 1 2 1 1 1 1 1 2 1 2 3 1 1 1 3 1 1 1 2 1 1 1 1 2 1 2 1 1 1 1 1 1 1 2 1 3
##  [630] 1 1 1 1 1 2 1 1 1 1 1 2 3 1 2 2 2 2 1 3 1 1 2 2 3 2 1 1 3 1 1 2 1 1 1 3 2
##  [667] 3 1 1 2 2 1 1 2 2 2 1 1 1 1 1 1 2 3 1 2 3 1 3 1 2 1 2 1 1 1 3 3 2 3 1 2 2
##  [704] 1 2 1 1 2 2 2 1 2 1 1 2 1 1 3 2 1 1 1 1 2 1 1 2 1 3 2 2 2 2 2 1 1 3 2 1 1
##  [741] 1 3 1 2 1 1 1 1 1 1 3 1 1 1 2 2 2 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 3 3
##  [778] 1 1 1 1 1 1 2 2 1 1 3 1 1 2 1 2 2 1 1 1 1 1 2 1 1 1 1 2 3 1 1 3 1 1 2 1 1
##  [815] 1 1 1 2 1 1 3 2 1 1 2 1 1 3 1 3 2 3 2 1 1 1 1 1 1 1 1 2 2 3 1 1 1 1 1 2 1
##  [852] 3 2 1 1 1 3 1 2 3 1 1 2 1 1 1 2 2 3 1 1 1 1 1 1 1 3 3 1 1 1 1 3 1 2 2 2 3
##  [889] 2 1 2 1 1 2 2 2 1 1 1 1 1 1 2 2 1 2 2 2 2 2 1 3 1 2 1 1 2 1 2 1 1 1 2 1 1
##  [926] 1 1 1 1 1 1 1 1 1 3 1 1 1 1 1 2 1 2 3 2 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 2 3
##  [963] 1 1 1 1 1 1 1 1 2 1 2 2 2 2 1 2 2 1 2 1 1 2 2 2 1 1 1 2 3 1 3 2 2 1 1 2 3
## [1000] 1 2 1 3 3 1 2 2 1 1 1 3 2 3 1 1 1 1 3 1 1 2 1 2 2 1 2 1 1 3 1 2 3 1 2 1 2
## [1037] 1 1 2 1 2 1 1 1 1 1 2 2 1 1 1 2 1 2 1 2 1 1 3 2 1 1 2 1 2 1 1 1 1 1 2 1 1
## [1074] 2 1 2 1 2 1 1 1 1 3 1 2 1 1 2 1 1 1 1 1 1 1 1 1 1 2 1 3 1 2 2 1 3 1 1 1 1
## [1111] 1 1 1 2 2 1 2 1 2 3 3 3 1 1 1 2 2 3 1 2 3 1 1 2 1 2 1 1 2 1 2 1 3 1 1 1 2
## [1148] 2 1 1 1 2 2 1 1 1 1 3 1 2 1 2 1 2 1 1 1 2 1 1 2 1 2 2 1 2 1 2 1 1 1 2 1 1
## [1185] 1 1 3 3 2 2 2 2 1 2 2 3 2 1 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 2 2 2 2 1
## [1222] 3 1 2 1 3 2 2 1 1 3 1 1 1 2 3 1 3 1 3 1 3 1 2 3 1 1 1 2 3 3 1 1 3 1 1 1 2
## [1259] 1 2 1 1 1 2 3 1 1 1 1 1 1 1 1 1 2 1 3 1 1 1 1 1 1 2 1 1 1 1 1 1 1 2 1 2 1
## [1296] 1 1 2 1 1 2 2 1 1 1 2 3 2 1 2 1 1 2 1 1 1 1 2 2 2 2 1 2 1 2 1 2 1 1 1 3 1
## [1333] 2 3 2 1 1 1 2 2 1 2 1 2 2 1 1 1 2 1 1 1 1 2 2 1 2 3 1 1 1 1 1 1 1 2 1 3 1
## [1370] 2 1 1 1 2 2 3 1 2 1 1 1 1 3 2 1 1 1 1 1 1 2 1 1 1 1 1 3 1 3 1 3 1 2 1 1 1
## [1407] 1 1 3 2 2 2 2 1 1 2 2 2 1 1 2 2 1 2 2 1 1 1 1 1 1 1 1 3 2 3 1 2 2 2 3 2 1
## [1444] 3 2 2 2 2 2 1 1 2 1 1 1 1 1 1 1 1 2 2 1 2 2 3 1 1 2 1 3 3 1 2 1 2 1 1 3 2
## [1481] 2 1 1 1 2 1 2 2 1 1 2 2 1 1 1 2 3 1 2 1 1 2 1 3 1 3 1 1 2 2 2 1 2 2 1 1 2
## [1518] 2 1 2 1 2 2 1 2 2 1 1 1 1 2 2 2 3 1 2 1 3 3 1 1 2 1 2 1 2 2 2 1 1 1 2 1 1
## [1555] 1 2 2 1 1 1 1 2 1 1 2 2 1 2 1 1 1 1 1 1 1 3 1 1 2 1 1 3 2 2 1 1 1 1 1 1 1
## [1592] 2 3 3 2 1 3 3 1 1 1 1 2 1 2 1 2 1 2 2 1 2 1 2 1 2 1 1 2 1 3 1 2 2 1 1 2 1
## [1629] 1 1 1 2 1 2 2 3 3 1 1 2 1 2 1 2 1 1 1 3 2 2 1 1 1 1 1 1 1 2 1 2 1 1 3 1 1
## [1666] 1 2 1 3 1 3 3 1 1 2 2 1 2 1 1 2 1 2 1 1 2 1 2 1 3 1 1 3 2 2 1 1 1 1 3 1 1
## [1703] 2 1 1 2 2 1 3 1 1 2 1 3 2 2 1 1 1 1 1 2 2 2 1 1 2 2 1 1 1 2 1 2 1 1 2 1 1
## [1740] 1 3 2 1 1 1 1 1 1 1 1 2 2 2 2 3 2 1 1 2 2 1 2 2 1 1 1 2 2 1 1 1 1 1 1 2 3
## [1777] 1 1 2 3 1 1 1 3 1 1 1 1 2 2 1 2 1 2 1 1 1 1 2 1 2 1 1 1 1 1 1 1 2 1 2 2 1
## [1814] 1 1 1 2 1 3 1 1 1 2 1 2 1 1 1 1 1 2 2 1 1 1 1 1 3 2 2 2 1 1 2 1 2 2 1 1 2
## [1851] 3 2 1 1 1 2 1 3 3 1 1 1 1 1 2 2 2 1 2 1 1 2 1 1 2 2 1 1 1 1 1 2 1 1 1 1 1
## [1888] 2 2 1 2 1 1 1 2 1 1 1 1 3 2 1 1 2 1 2 1 1 1 3 2 1 1 1 1 1 1 1 3 1 2 1 1 3
## [1925] 1 3 2 2 1 2 3 1 1 2 1 3 1 2 3 1 1 2 2 1 1 2 1 3 1 1 1 1 1 3 2 3 2 1 1 2 1
## [1962] 2 1 2 1 1 2 1 1 3 2 1 2 1 1 2 3 2 1 2 1 1 1 1 1 1 2 1 1 1 2 2 1 2 1 2 2 1
## [1999] 1 2
table(cluster_bc)
## cluster_bc
##    1    2    3 
## 1198  581  221

Analisis hierarchical clustering dilakukan menggunakan metode Ward.D2 dengan ukuran kemiripan berupa jarak Euclidean terhadap 2000 observasi.

Hasil hierarchical clustering menghasilkan tiga kelompok data. Cluster 1 merupakan cluster terbesar dengan 1.198 observasi, menunjukkan bahwa sebagian besar data memiliki karakteristik yang relatif mirip dan tergabung dalam kelompok ini. Cluster 2 terdiri atas 581 observasi, sedangkan Cluster 3 merupakan cluster terkecil dengan 221 observasi.

4. Validation (Silhouette)

# VALIDATION (SILHOUETTE)
sil_hc <- silhouette(cluster_bc, dist_matrix)
cat("Silhouette Ward Linkage:", round(mean(sil_hc[, 3]), 4))
## Silhouette Ward Linkage: 0.1664
# Visualisasi
fviz_silhouette(sil_hc) +
  labs(title = "Silhouette Plot - Ward Linkage") +
  theme_minimal()
##   cluster size ave.sil.width
## 1       1 1198          0.23
## 2       2  581          0.02
## 3       3  221          0.18

Berdasarkan validasi menggunakan Silhouette Index, metode Hierarchical Clustering dengan Ward Linkage menghasilkan nilai rata-rata silhouette sebesar 0,1664. Nilai tersebut masih menunjukkan kualitas cluster yang relatif lemah, namun lebih baik dibandingkan metode K-Means yang menghasilkan nilai silhouette sebesar 0,1226. Cluster 1 memiliki kualitas pengelompokan terbaik dengan average silhouette sebesar 0,23, diikuti Cluster 3 sebesar 0,18. Sementara itu, Cluster 2 memiliki average silhouette sebesar 0,02 dan banyak observasi bernilai negatif, yang menunjukkan bahwa pemisahan cluster pada kelompok tersebut belum optimal. Secara keseluruhan, metode Ward Linkage memberikan hasil clustering yang lebih baik dibandingkan K-Means pada data ini, meskipun struktur cluster yang terbentuk masih belum terlalu kuat.