ANGGOTA KELOMPOK 11

I. Instal Library dan Function

Beberapa library yang perlu diinstall sebagai berikut:

library(readxl) # Import Data Sekunder
library(DescTools) # Fungsi menghitung Geometric mean, Harmonic mean, dan Mean deviation
library(kableExtra) 

# menambahkan function modus
modus <- function(x){
  ux <- unique(x)
  ux[which.max(tabulate(match(x, ux)))]
}

II. Data Sekunder

Import Data Sekunder

Data Tingkat Pengangguran Terbuka (TPT) Menurut Kabupaten/Kota diinput dari Mircosoft Excel dengan syntax sebagai berikut:

dataSekunder <- read_excel("Data TPT 2023-2025.xlsx", 
     sheet = "Data TPT 2023-2025", range = "A1:D115")

sumber: Badan Pusat Statistik Provinsi Jawa Timur. (13 November 2025). Tingkat Pengangguran Terbuka (TPT) Menurut Kabupaten/Kota, 2025. Diakses pada 2 Maret 2026, dari https://jatim.bps.go.id/id/statistics-table/2/NTQjMg==/tingkat-pengangguran-terbuka-tpt-menurut-kabupaten-kota.html

Pemisahan Variabel Data

Data sekunder yang telah diimpor selanjutnya diproses dengan membagi pada beberapa variabel, sehingga memudahkan proses perhitungan ukuran tendensi sentral.

# Input memasukan data tingkat penganguran ke variabel numerik dataA
dataA <- dataSekunder$`TINGKAT PENGANGGURAN (PERSEN)`

# Input memasukan data bobot sembarang ke variabel numerik bobotSembarang
bobotSembarang <- dataSekunder$`BOBOT SEMBARANG`

# Input data bobot relatif ke variabel numerik bobotRelatif
bobotRelatif <- dataSekunder$`BOBOT RELATIF`

III. Generate Data

Data Generate dengan masing-masing 100.000 observasi
- B1 – Distribusi Simetris (distibusi normal)
- B2 – Skewness positif
- B3 – Skewness negatif

set.seed(123)

# Generate 100.000 observasi data B1 - distribusi simetris
dataB1 <- rnorm(100002, mean=4.1, sd=1)
dataB1 <- dataB1[dataB1 > 0]

# Generate 100.000 observasi data B2 - Skewness positif
dataB2 <- rlnorm(100000, meanlog = log(4.1), sdlog = 0.3)

# Generate 100.000 observasi data B3 - Skewness negatif
dataB3 <- max(dataB2) - dataB2 + 0.01

IV. Perhitungan dan Visualisasi Data pada Tabel Komparatif

Syntax perhitungan Ukuran Tendensi Sentral data A, data B1, B2, dan B3 serta visualisasi pada tabel komparatif :

hasil <- data.frame(
Ukuran = c("Mean",
           "Weighted Mean (Σwi ≠ 1)",
           "Weighted Mean (Σwi = 1)",
           "Trimmed Mean (10%)",
           "Geometric Mean",
           "Harmonic Mean",
           "Median",
           "Modus"),

Data_A = round(c(
# mean dataA
round(mean(dataA),5),

# Weight mean Σwi != 1
round(weighted.mean(dataA, bobotSembarang),5),

# weight mean Σwi = 1
round(weighted.mean(dataA, bobotRelatif),5),

# trimmed mean (10%)
round(mean(dataA, trim=0.10),5),

# Geometric mean
round(DescTools::Gmean(dataA),5),

# Harmonic mean
round(DescTools::Hmean(dataA),5),

# Median 
round(median(dataA),5),

# Modus
round(modus(dataA),5)
),5),

Data_B1 = round(c(
# mean 
round(mean(dataB1),5),

# weight mean Σwi != 1
weighted.mean(dataB1, runif(length(dataB1),1,5)),

# weight mean Σwi = 1
weighted.mean(dataB1, rep(1/length(dataB1), length(dataB1))),

# trimmed mean (10%)
round(mean(dataB1, trim=0.10),5),

# geometric mean
round(DescTools::Gmean(dataB1),5),

# harmonic mean
round(DescTools::Hmean(dataB1),5),

# median 
round(median(dataB1),5),

# modus
round(modus(dataB1),5)
),5),

Data_B2 = round(c(
# mean 
round(mean(dataB2),5),

# weight mean Σwi != 1
weighted.mean(dataB2, runif(length(dataB2),1,5),5),

# weight mean Σwi = 1
weighted.mean(dataB2, rep(1/length(dataB2), length(dataB2)),5),

# trimmed mean (10%)
round(mean(dataB2, trim=0.10),5),

# geometric mean
round(DescTools::Gmean(dataB2),5),

# harmonic mean
round(DescTools::Hmean(dataB2),5),

# median 
round(median(dataB2),5),

# modus
round(modus(dataB2),5)
),5),

Data_B3 = round(c(
# mean 
round(mean(dataB3),5),

# weight mean Σwi != 1
weighted.mean(dataB3, runif(length(dataB3),1,5),5),

# weight mean Σwi = 1
weighted.mean(dataB3, rep(1/length(dataB3), length(dataB3)),5),

# trimmed mean (10%)
round(mean(dataB3, trim=0.10),5),

# geometric mean
round(DescTools::Gmean(dataB3),5),

# harmonic mean
round(DescTools::Hmean(dataB3),5),

# median 
round(median(dataB3),5),

# modus
round(modus(dataB3),5)
),5)
)

kable(hasil, digits = 5, caption = "Tabel Ukuran Tendensi Sentral") %>%
  kable_styling(
    full_width = TRUE,
    font_size = 16,
    position = "center",
    bootstrap_options = c("striped", "hover", "condensed", "responsive")
  ) %>%
  row_spec(0, bold = TRUE, background = "#34495E", color = "white") %>%
  column_spec(1, bold = TRUE)
Tabel Ukuran Tendensi Sentral
Ukuran Data_A Data_B1 Data_B2 Data_B3
Mean 4.16132 4.10108 4.29688 10.19378
Weighted Mean (Σwi ≠ 1) 4.07603 4.10093 4.29682 10.19342
Weighted Mean (Σwi = 1) 4.07603 4.10108 4.29688 10.19378
Trimmed Mean (10%) 4.17554 4.10151 4.18817 10.30249
Geometric Mean 3.93134 3.96740 4.10639 10.09496
Harmonic Mean 3.65573 3.81134 3.92425 9.87595
Median 4.25000 4.10095 4.10555 10.38510
Modus 3.28000 3.53952 4.02761 10.46305

V. Histogram dan Boxplot

Berdasarkan hasil pengolahan data pada Data Sekunder (riil) serta Data B1, B2, dan B3 (simulasi 100.000 observasi), berikut adalah visualisasi dan analisis pada grafik Histogram dan Boxplot:

Histogram Data A

hist(dataA,
     main = "Histogram Data A (TPT Jawa Timur)",
     xlab = "Tingkat Pengangguran (%)",
     ylab = "Frekuensi",
     col = "lightblue",
     border = "navy")

Boxplot Data A

boxplot(dataA,
        main = "Boxplot Data A (TPT Jawa Timur)",
        ylab = "Tingkat Pengangguran (%)",
        col = "lightblue",
        border = "navy")

  • Apakah distribusi simetris atau skewed?
    Distribusi data A tersebut adalah Skew Positif, karena banyak data berada pada nilai yang lebih kecil, tetapi ada beberapa nilai besar yang menarik distribusi ke kanan. Artinya, sebagian besar daerah memiliki tingkat pengangguran sedang (sekitar 3–5%). Namun ada beberapa daerah dengan pengangguran lebih tinggi, sehingga distribusi condong ke kanan.
  • Apakah terdapat outlier?
    Ya, mayoritas daerah memiliki tingkat pengangguran sekitar 3–6%. Namun terdapat satu daerah dengan tingkat pengangguran sangat tinggi yaitu 8.05%, sehingga muncul sebagai outlier pada boxplot.
  • Bagaimana pengaruhnya terhadap mean?
    Keberadaan outlier dengan nilai 8.05 menyebabkan nilai mean meningkat karena mean sensitif terhadap nilai ekstrem. Nilai tersebut menarik rata-rata ke arah yang lebih besar sehingga mean menjadi lebih tinggi dibandingkan sebagian besar data.

Histogram Data B1

hist(dataB1,
     main = "Histogram Data B1 Distribusi Simetris",
     xlab = "Tingkat Pengangguran (%)",
     ylab = "Frekuensi",
     col = "steelblue",
     border = "navy")

Boxplot Data B1

boxplot(dataB1,
        main = "Boxplot Data B1 Distribusi Simetris",
        ylab = "Tingkat Pengangguran (%)",
        col = "steelblue",
        border = "navy")

  • Apakah distribusi simetris atau skewed?
    Distribusi data B1 terlihat simetris, dengan puncak frekuensi berada di sekitar nilai 4%. Frekuensi data menurun secara relatif seimbang ke arah kiri dan kanan dari pusat distribusi sehingga bentuk grafik menyerupai kurva lonceng (bell-shaped).
  • Apakah terdapat outlier?
    ya, terdapat outlier pada sisi atas yang terdapat pada rentang 1,41169 sampai 0,13175 dan sisi atas pada rentang 6,79339 sampai 8,42281.
  • Bagaimana pengaruhnya terhadap mean?
    Keberadaan outlier di sisi bawah dan atas dapat mempengaruhi nilai mean, namun karena outlier muncul di kedua sisi distribusi, pengaruhnya terhadap mean menjadi tidak terlalu besar dan distribusi tetap terlihat relatif simetris.

Histogram Data B2

hist(dataB2,
     main = "Histogram Data B2 Skewness positif",
     xlab = "Tingkat Pengangguran (%)",
     ylab = "Frekuensi",
     col = "lightgreen",
     border = "darkgreen")

Boxplot Data B2

boxplot(dataB2,
        main = "Boxplot Data B2 Skewness positif",
        ylab = "Tingkat Pengangguran (%)",
        col = "lightgreen",
        border = "darkgreen")

  • Apakah distribusi simetris atau skewed?
    Histogram Data B2 menunjukkan bahwa distribusi data tidak simetris dan mengalami skewness positif. Sebagian besar data terkonsentrasi pada kisaran 3–5%, sementara terdapat beberapa nilai yang jauh lebih besar hingga sekitar 14%. Nilai-nilai besar tersebut membentuk ekor distribusi di sisi kanan sehingga distribusi menjadi miring ke kanan.
  • Apakah terdapat outlier?
    Berdasarkan boxplot, terdapat outlier pada sisi atas dengan nilai sekitar 12,071139 hingga 14,48066.
  • Bagaimana pengaruhnya terhadap mean?
    Outlier tersebut berpengaruh terhadap mean karena nilai tersebut jauh lebih besar dibanding sebagian besar data. Nilai ekstrem itu menarik rata-rata ke arah yang lebih besar sehingga mean menjadi lebih tinggi dari pusat distribusi.

Histogram Data B3

hist(dataB3,
     main = "Histogram Data B3 Skewness negatif",
     xlab = "Tingkat Pengangguran (%)",
     ylab = "Frekuensi",
     col = "plum",
     border = "purple4")

boxplot(dataB3,
        main = "Boxplot Data B3 Skewness negatif",
        ylab = "Tingkat Penganguran (%)",
        col = "plum",
        border = "purple4")

  • Apakah distribusi simetris atau skewed?
    Distribusi data adalah skewness negatif (left-skewed distribution) atau miring ke kiri. Sebagian besar data terkonsentrasi pada nilai tinggi, sekitar 9–12%. Frekuensi data menurun ke arah kiri.
  • Apakah terdapat outlier?
    ya, terdapat nilai outlier mulai dari rentang 6,95961 sampai 0,40869.
  • Bagaimana pengaruhnya terhadap mean?
    Outlier berada jauh di bawah sebagian besar data yang terkonsentrasi pada kisaran 9–12%. Nilai yang lebih kecil tersebut menarik mean ke arah kiri sehingga menyebabkan nilai rata-rata menjadi lebih rendah.