1 . Persiapan Data

Sebelum kita melakukan persiapan data, kita harus menginstal paket (dplyr), paket ini digunakan untuk memudahkan kita untuk memanipulasi data. paket ini menyediakan fungsi-fungsi dengan syntax yang ringkas, konsisten, dan mudah dibaca, sehingga kita tidak perlu menghafal perintah R dasar yang panjang dan rumit. 
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.4.3
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union

1.1 Membuat data frame

Data frame di R adalah struktur data berbentuk tabel yang bisa menyimpan berbagai tipe data disetiap kolom, misalnya di kolom pertama angka, kedua teks, dan ketiga logika, hasilnya akan mirip seperti sreadsheet atau tabel di database. Untuk membuat data frame kita gunakan syntax data.frame(),
contoh:

1.1.1 Data Frame kelas A

Syntax dan output nya yaitu:

nama <- c("Razha", "Nandar", "Fahri", "Syahrul", "Ariq", "Geo", "Nanda", "Alika", "Elsa", "Asa")
berat <- c(55, 65, 50, 70, 60, 58, 75, 52, 80, 53)   # kg
tinggi <- c(160, 175, 155, 180, 165, 162, 178, 158, 185, 159)  # cm

data_kelas_A <- data.frame(
  Nama = nama,
  Berat_Badan = berat,
  Tinggi_Badan = tinggi
)
print(data_kelas_A) 
##       Nama Berat_Badan Tinggi_Badan
## 1    Razha          55          160
## 2   Nandar          65          175
## 3    Fahri          50          155
## 4  Syahrul          70          180
## 5     Ariq          60          165
## 6      Geo          58          162
## 7    Nanda          75          178
## 8    Alika          52          158
## 9     Elsa          80          185
## 10     Asa          53          159

1.1.2 Data Frame kelas B

Kita lakukan lagi seperti yang kita lakukan untuk data frame kelas a, hanya menyesuaikan nama, berat, dan tinggi sesuai data kita punya.

Jadi syntax dan output nya yaitu:

# Data untuk kelas B
nama_B <- c("Alya", "Bintang", "Rizki", "Ana", "Nanda", "Dimas", "Ali", "Agus", "Dwi", "Putri")
bb_B   <- c(50, 55, 53, 60, 58, 70, 52, 57, 59, 54)   # kg
tb_B   <- c(145, 160, 172, 155, 160, 170, 148, 162, 160, 143)  # cm

# Membuat data frame
data_kelas_B <- data.frame(
  Nama = nama_B,
  Berat_Badan = bb_B,
  Tinggi_Badan = tb_B
)

# Menampilkan hasil
print(data_kelas_B)
##       Nama Berat_Badan Tinggi_Badan
## 1     Alya          50          145
## 2  Bintang          55          160
## 3    Rizki          53          172
## 4      Ana          60          155
## 5    Nanda          58          160
## 6    Dimas          70          170
## 7      Ali          52          148
## 8     Agus          57          162
## 9      Dwi          59          160
## 10   Putri          54          143

2 . Menghitung Ukuran Pemusatan Data

Nah kita lanjut ke materi ukuran pemusatan data ni temen-temen, jadi ukuran pemusatan data itu adalah nilai yang mewakili titik tengah atau pusat dari siatu kumpulan data. Tujuan nya yaitu untuk memberikan gambaran umum tentang nilai tipikal dari data yang kita miliki, tanpa harus melihat semua nilai satu-persatu. Ada tiga pemusatan data yang umum digunakan temen-temen yaitu mean(rata-rata), median (nilai tengah), dan ,modus(nilai yang paling banyak sering muncul). Nah kita akan menghitung ketiga ukuran ini dari data kelas A dan B

2.1 Mean

Mean atau rata-rata adalah nilai yang mewakili pusat data dengan cara menjumlahkan semua nilai lalu membaginya dengan jumlah data. Mean sering digunakan untuk melihat nilai tipikal dari sebuah kumpulan data.

Syntax dan output nya yaitu:

mean_tinggi_A <- mean(data_kelas_A$Tinggi_Badan)
cat("Mean tinggi badan kelas A :", mean_tinggi_A, "\n")
## Mean tinggi badan kelas A : 167.7
mean_berat_A <- mean(data_kelas_A$Berat_Badan)
cat("Mean berat badan kelas A :", mean_berat_A, "\n")
## Mean berat badan kelas A : 61.8
mean_tinggi_B <- mean(data_kelas_B$Tinggi_Badan)
cat("Mean tinggi badan kelas B :", mean_tinggi_B, "\n")
## Mean tinggi badan kelas B : 157.5
mean_berat_B <- mean(data_kelas_B$Berat_Badan)
cat("Mean berat badan kelas B :", mean_berat_B, "\n")
## Mean berat badan kelas B : 56.8

2.2 Median

Median adalah ukuran pemusatan data yang menunjukkan nilai tengah dari sekumpulan data setelah data tersebut diurutkan dari yang terkecil hingga terbesar. Berbeda dengan mean yang dipengaruhi oleh nilai ekstrem, median cenderung stabil meskipun ada nilai yang sangat besar atau kecil.

median_tinggi_A <- median(data_kelas_A$Tinggi_Badan)
cat("Median tinggi badan kelas A :", median_tinggi_A, "\n")
## Median tinggi badan kelas A : 163.5
median_berat_A <- median(data_kelas_A$Berat_Badan)
cat("Median berat badan kelas A :", median_berat_A, "\n")
## Median berat badan kelas A : 59
median_tinggi_B <- median(data_kelas_B$Tinggi_Badan)
cat("Median tinggi badan kelas B :", median_tinggi_B, "\n")
## Median tinggi badan kelas B : 160
median_berat_B <- median(data_kelas_B$Berat_Badan)
cat("Median berat badan kelas B :", median_berat_B, "\n")
## Median berat badan kelas B : 56

Pada data Kelas A, median berat badan adalah 59 kg, yang diperoleh dari rata-rata dua nilai tengah yaitu 58 dan 60 karena jumlah datanya genap. Median tinggi badan Kelas A adalah 163,5 cm, hasil rata-rata dari tinggi ke-5 dan ke-6 setelah diurutkan. Sedangkan untuk Kelas B, median berat badan adalah 56 kg dan median tinggi badan adalah 160 cm. Nilai median ini menggambarkan titik tengah distribusi data di masing-masing kelas, sehingga setengah siswa memiliki nilai di bawah median dan setengahnya lagi di atas median.

2.3 Modus

Modus adalah ukuran pemusatan data yang menunjukkan nilai yang paling sering muncul dalam suatu kumpulan data. Berbeda dengan mean dan median, modus tidak selalu ada (jika semua nilai unik) dan bisa lebih dari satu (jika ada beberapa nilai yang sama-sama sering muncul).

Syntax dan output nya yaitu :

# Fungsi untuk mencari modus
get_mode <- function(v) {
  uniqv <- unique(v)
  freq <- tabulate(match(v, uniqv))
  uniqv[freq == max(freq)]
}

# Modus Kelas A
modus_berat_A <- get_mode(data_kelas_A$Berat_Badan)
modus_tinggi_A <- get_mode(data_kelas_A$Tinggi_Badan)

# Modus Kelas B
modus_berat_B <- get_mode(data_kelas_B$Berat_Badan)
modus_tinggi_B <- get_mode(data_kelas_B$Tinggi_Badan)

cat("Modus tinggi badan kelas A :", modus_tinggi_A, "\n")
## Modus tinggi badan kelas A : 160 175 155 180 165 162 178 158 185 159
cat("Modus berat badan kelas A :", modus_berat_A, "\n")
## Modus berat badan kelas A : 55 65 50 70 60 58 75 52 80 53
cat("Modus tinggi badan kelas B :", modus_tinggi_B, "\n")
## Modus tinggi badan kelas B : 160
cat("Modus berat badan kelas B :", modus_berat_B, "\n")
## Modus berat badan kelas B : 50 55 53 60 58 70 52 57 59 54

Mengapa di output modus tinggi kelas A dan, B, serta berat badan kelas B malah menampilkan semua data? Nah gini temen-temen outputnya menampilkan semua data karena semua nilai nya sama-sama muncul sekali sehingga tidak ada modus nya, yang ada modus nya itu terdapat pada tinggi badan kelas B yaitu nilai 160 yanaag muncul sebanyak 3 kali.

3 . Menghitung Penyebaran Data

Menghitung penyebaran data adalah proses mencari nilai yang menunjukkan seberapa besar variasi atau jarak antara data satu dengan yang lain dalam suatu kumpulan data. Tujuannya adalah untuk memahami apakah data cenderung terkumpul rapat di sekitar nilai pusat (misalnya rata-rata) atau justru tersebar jauh. Dengan menghitung penyebaran data, kita bisa mengetahui tingkat konsistensi data, mendeteksi outlier, dan memahami karakteristik distribusi data secara lebih mendalam.

3.1 Menghitung Range

Range adalah ukuran penyebaran data yang menunjukkan nilai maksimum dan nilai minimum dalam suatu kumpulan data. Berikut syntax dan output nya

# Range Kelas A
range_berat_A <- range(data_kelas_A$Berat_Badan)
range_tinggi_A <- range(data_kelas_A$Tinggi_Badan)

cat("Kelas A - Berat Badan:", range_berat_A, "\n")
## Kelas A - Berat Badan: 50 80
cat("Kelas A - Tinggi Badan:", range_tinggi_A, "\n")
## Kelas A - Tinggi Badan: 155 185
# Range Kelas B
range_berat_B <- range(data_kelas_B$Berat_Badan)
range_tinggi_B <- range(data_kelas_B$Tinggi_Badan)

cat("Kelas B - Berat Badan:", range_berat_B, "\n")
## Kelas B - Berat Badan: 50 70
cat("Kelas B - Tinggi Badan:", range_tinggi_B, "\n")
## Kelas B - Tinggi Badan: 143 172

Output tersebut menunjukkan nilai minimum dan maksimum dari berat badan dan tinggi badan pada Kelas A dan Kelas B.

Kelas A - Berat Badan: 50 80 Artinya, berat badan terendah siswa di Kelas A adalah 50 kg, sedangkan yang tertinggi adalah 80 kg.

Kelas A - Tinggi Badan: 155 185 Tinggi badan terendah di Kelas A adalah 155 cm, dan tertinggi adalah 185 cm.

Kelas B - Berat Badan: 50 70 Berat badan terendah siswa Kelas B adalah 50 kg, sedangkan yang tertinggi adalah 70 kg.

Kelas B - Tinggi Badan: 143 172 Tinggi badan terendah di Kelas B adalah 143 cm, dan yang tertinggi adalah 172 cm.

3.2 Variansi

Variansi adalah ukuran penyebaran data yang menunjukkan seberapa jauh nilai-nilai dalam suatu dataset menyimpang dari mean (rata-rata).Jika variansi besar, berarti data menyebar jauh dari rata-rata. Jika variansi kecil, berarti data cenderung berdekatan dengan rata-rata.

# Variansi
var_berat_A <- var(data_kelas_A$Berat_Badan)
var_tinggi_A <- var(data_kelas_A$Tinggi_Badan)
var_berat_B <- var(data_kelas_B$Berat_Badan)
var_tinggi_B <- var(data_kelas_B$Tinggi_Badan)

# Cetak dengan format rapi
cat("Kelas A - Berat Badan:", var_berat_A, "\n")
## Kelas A - Berat Badan: 106.6222
cat("Kelas A - Tinggi Badan:", var_tinggi_A, "\n")
## Kelas A - Tinggi Badan: 115.5667
cat("Kelas B - Berat Badan:", var_berat_B, "\n")
## Kelas B - Berat Badan: 31.73333
cat("Kelas B - Tinggi Badan:", var_tinggi_B, "\n")
## Kelas B - Tinggi Badan: 96.5

Output tersebut menunjukkan variansi dari berat badan dan tinggi badan pada dua kelas:

Kelas A - Berat Badan: 106.6222 Artinya, penyebaran berat badan siswa di Kelas A cukup besar — nilai berat badan mereka bervariasi rata-rata sekitar 106.62 (dalam satuan kuadrat kg²) dari rata-rata berat badan kelas.

Kelas A - Tinggi Badan: 115.5667 Penyebaran tinggi badan juga besar, yaitu 115.57 cm². Ini berarti tinggi badan siswa di Kelas A tidak seragam, terdapat variasi yang cukup lebar.

Kelas B - Berat Badan: 31.73333 Penyebaran berat badan di Kelas B jauh lebih kecil dibandingkan Kelas A. Berat badan siswa lebih seragam dan mendekati rata-ratanya.

Kelas B - Tinggi Badan: 96.5 Tinggi badan siswa di Kelas B memiliki variasi yang cukup besar, tetapi masih lebih kecil dari Kelas A.

Jadi kesimpulan yang kita dapat : Kelas A memiliki variasi berat badan dan tinggi badan yang lebih besar daripada Kelas B, artinya Kelas A lebih beragam dari segi fisik dibandingkan Kelas B.

3.3 Standar Deviasi

Standar deviasi adalah ukuran yang menunjukkan seberapa jauh data menyebar dari nilai rata-ratanya. Nilai standar deviasi kecil artinya data terkonsentrasi dekat rata-rata sedangkan nilai standar deviasi besar artinya data menyebar jauh dari rata-rata. Berikut sintaks yang digunkan untuk mengetahui standar deviasinya :

# Standar deviasi Kelas A
sd_berat_A <- sd(data_kelas_A$Berat_Badan)
sd_tinggi_A <- sd(data_kelas_A$Tinggi_Badan)

# Standar deviasi Kelas B
sd_berat_B <- sd(data_kelas_B$Berat_Badan)
sd_tinggi_B <- sd(data_kelas_B$Tinggi_Badan)

# Cetak hasil rapi
cat("Kelas A - Berat Badan:", sd_berat_A, "\n")
## Kelas A - Berat Badan: 10.3258
cat("Kelas A - Tinggi Badan:", sd_tinggi_A, "\n")
## Kelas A - Tinggi Badan: 10.75019
cat("Kelas B - Berat Badan:", sd_berat_B, "\n")
## Kelas B - Berat Badan: 5.633235
cat("Kelas B - Tinggi Badan:", sd_tinggi_B, "\n")
## Kelas B - Tinggi Badan: 9.823441

Dari output yang didapatkan dari syntax tadi informasi yang dapat kita ambil yaitu:

Kelas A – Berat Badan: 10.32 artinya rata-rata berat badan siswa Kelas A menyebar sekitar 10,32 kg dari rata-rata berat badan kelas tersebut.

Kelas A – Tinggi Badan: 10.75 berarti tinggi badan siswa Kelas A menyebar sekitar 10,75 cm dari rata-rata tinggi badan.

Kelas B – Berat Badan: 5.63 menunjukkan penyebaran berat badan siswa Kelas B lebih kecil dibanding Kelas A, artinya variasi berat badan di Kelas B lebih seragam.

Kelas B – Tinggi Badan: 9.82 menunjukkan variasi tinggi badan di Kelas B sedikit lebih kecil dibanding Kelas A, tetapi selisihnya tidak terlalu jauh.

Kesimpulannya, semakin besar nilai standar deviasi, semakin beragam data tersebut; semakin kecil nilainya, semakin datanya berdekatan dengan rata-rata.

4 . Visualisasi Data

Visualisasi data adalah proses menyajikan data dalam bentuk grafis seperti diagram, grafik, atau pie chart dan lain-lain, sehingga informasi yang terkandung di dalamnya dapat dipahami dengan lebih mudah dan cepat. Dengan visualisasi, kita dapat melihat pola, tren, perbandingan, dan sebaran data secara langsung tanpa harus menelaah angka-angka secara detail. Nah kali ini kita akan menggunakan histogram dan boxplot

4.1 Histogram

Histogram adalah salah satu jenis visualisasi data yang digunakan untuk menunjukkan distribusi atau penyebaran data dalam bentuk batang. Pada histogram, sumbu horizontal (x-axis) menunjukkan interval atau kelompok nilai (disebut bin), sedangkan sumbu vertikal (y-axis) menunjukkan frekuensi atau jumlah data yang masuk ke dalam setiap kelompok tersebut. Fungsinya yaitu:

  1. Mengetahui sebaran data (apakah normal, miring ke kiri/kanan, atau memiliki banyak puncak).

  2. Melihat frekuensi kemunculan nilai dalam rentang tertentu.

  3. Membantu mendeteksi outlier atau nilai ekstrem.

Nah berikut cara menampilkan histogram di R :

  1. Histogram berat badan kelas A
hist(data_kelas_A$Berat_Badan,
     main = "Histogram Berat Badan - Kelas A",
     xlab = "Berat Badan (kg)",
     ylab = "Frekuensi",
     col = "lightblue",
     border = "black")

  1. Histogram tinggi badan kelas A
hist(data_kelas_A$Tinggi_Badan,
     main = "Histogram Tinggi Badan - Kelas A",
     xlab = "Tinggi Badan (cm)",
     ylab = "Frekuensi",
     col = "lightgreen",
     border = "black")

  1. Histogram berat badan kelas B
hist(data_kelas_B$Berat_Badan,
     main = "Histogram Berat Badan - Kelas B",
     xlab = "Berat Badan (kg)",
     ylab = "Frekuensi",
     col = "lightpink",
     border = "black")

  1. Histogram tinggi badan kelas B
hist(data_kelas_B$Tinggi_Badan,
     main = "Histogram Tinggi Badan - Kelas B",
     xlab = "Tinggi Badan (cm)",
     ylab = "Frekuensi",
     col = "lightyellow",
     border = "black")

4.2 Boxplot

Boxplot adalah jenis visualisasi data yang digunakan untuk menggambarkan penyebaran data berdasarkan lima ukuran ringkasan (five-number summary), yaitu:

  1. Minimum → nilai terkecil dalam data (tidak termasuk outlier).

  2. Kuartil 1 (Q1) → nilai yang membagi 25% data terbawah.

  3. Median (Q2) → nilai tengah data.

  4. Kuartil 3 (Q3) → nilai yang membagi 75% data terbawah.

5.Maksimum → nilai terbesar dalam data (tidak termasuk outlier).

Boxplot memudahkan kita melihat persebaran data, letak median, apakah data simetris atau miring (skewed), dan apakah ada outlier.

Nah berikut cara menampilkan histogram di R :

  1. Boxplot Berat Badan Kelas A
boxplot(data_kelas_A$Berat_Badan,
        main = "Boxplot Berat Badan - Kelas A",
        ylab = "Berat Badan (kg)",
        col = "lightblue",
        border = "black")

  1. Boxplot Tinggi Badan Kelas A
boxplot(data_kelas_A$Tinggi_Badan,
        main = "Boxplot Tinggi Badan - Kelas A",
        ylab = "Tinggi Badan (cm)",
        col = "lightgreen",
        border = "black")

  1. Boxplot Berat Badan Kelas B
boxplot(data_kelas_B$Berat_Badan,
        main = "Boxplot Berat Badan - Kelas B",
        ylab = "Berat Badan (kg)",
        col = "lightpink",
        border = "black")

  1. Boxplot Tinggi Badan Kelas B
boxplot(data_kelas_B$Tinggi_Badan,
        main = "Boxplot Tinggi Badan - Kelas B",
        ylab = "Tinggi Badan (cm)",
        col = "lightyellow",
        border = "black")

5 . Membandingkan ukuran pemusatan data dan penyebaran data berat badan kelas A dan B

5.1 Berat badan

Pada ukuran pemusatan, mean dan median Kelas A lebih tinggi dibanding Kelas B. Artinya, secara rata-rata siswa di Kelas A memiliki berat badan yang lebih besar dibanding siswa di Kelas B. Modus pada kedua kelas mungkin tidak sama atau bahkan tidak ada jika semua nilai unik, tetapi distribusi Kelas A cenderung lebih merata di sekitar nilai tengah yang tinggi.

Pada ukuran penyebaran, range Kelas A lebih besar dibandingkan Kelas B, menunjukkan variasi berat badan di Kelas A lebih lebar. Hal ini diperkuat oleh variansi dan standar deviasi yang juga lebih besar di Kelas A, menandakan bahwa berat badan siswa Kelas A lebih bervariasi, ada yang jauh lebih berat dan ada yang lebih ringan dibanding rata-ratanya. Sebaliknya, Kelas B memiliki sebaran data yang lebih sempit.

5.2 Tinggi badan

Mean dan median tinggi badan Kelas A lebih besar dibanding Kelas B. Ini menunjukkan bahwa secara umum siswa Kelas A memiliki tinggi badan yang lebih tinggi dibanding siswa Kelas B. Modus pada kedua kelas bisa tidak ada jika semua nilai tinggi berbeda, tetapi kecenderungan pusat data Kelas A tetap lebih tinggi.

Pada ukuran penyebaran, range tinggi badan Kelas A dan Kelas B memiliki perbedaan yang cukup signifikan, di mana Kelas A umumnya memiliki selisih tinggi maksimum–minimum yang lebih besar. Variansi dan standar deviasi pada Kelas A juga cenderung lebih tinggi, yang berarti tinggi badan di Kelas A lebih bervariasi. Sebaliknya, Kelas B memiliki nilai variansi dan standar deviasi yang lebih kecil, sehingga distribusi tinggi badan siswa di kelas ini lebih homogen.

6 . Hasil analisis dari visualisasi data

6.1 Boxplot

Berdasarkan keempat boxplot yang membandingkan berat badan dan tinggi badan Kelas A dan Kelas B, terlihat bahwa median berat badan Kelas A sedikit lebih tinggi dibanding Kelas B, menunjukkan bahwa siswa Kelas A cenderung memiliki berat badan yang lebih besar. Sebaran berat badan Kelas A juga sedikit lebih lebar, yang berarti variasinya lebih besar dibanding Kelas B. Untuk tinggi badan, median Kelas A juga lebih tinggi dibanding Kelas B, menandakan rata-rata siswa Kelas A memiliki postur lebih tinggi. Sebaran tinggi badan Kelas A relatif merata tanpa outlier, sedangkan pada Kelas B terlihat sebaran yang lebih sempit namun memiliki nilai terendah yang lebih rendah dibanding Kelas A. Secara keseluruhan, Kelas A memiliki rata-rata dan variasi yang lebih besar pada kedua variabel, sementara Kelas B cenderung lebih homogen.

6.2 Histogram

Untuk berat badan, histogram Kelas A menunjukkan penyebaran yang lebih lebar dengan nilai yang bervariasi dari rendah hingga tinggi, sedangkan Kelas B memiliki distribusi yang lebih sempit, menunjukkan bahwa berat badan siswa di kelas ini cenderung lebih seragam.

Untuk tinggi badan, Kelas A memiliki puncak distribusi yang berada di kisaran nilai yang lebih tinggi dibanding Kelas B, dan rentang sebarannya juga lebih lebar. Kelas B menunjukkan distribusi tinggi yang lebih terkonsentrasi di kisaran menengah, dengan sedikit variasi ekstrem.