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
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/
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.
# 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.
set.seed(123)
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.
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.
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.
idx_sample <- sample(nrow(bc_scaled), 2000)
fitur_hc <- bc_scaled[idx_sample, ]
# Hitung jarak Euclidean
dist_matrix <- dist(fitur_hc, method = "euclidean")
(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.
# 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.