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.
## 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
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:
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
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
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
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
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.
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
## Modus berat badan kelas A : 55 65 50 70 60 58 75 52 80 53
## Modus tinggi badan kelas B : 160
## 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.
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.
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
## 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
## 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.
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
## Kelas A - Tinggi Badan: 115.5667
## Kelas B - Berat Badan: 31.73333
## 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.
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
## Kelas A - Tinggi Badan: 10.75019
## Kelas B - Berat Badan: 5.633235
## 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.
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
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:
Mengetahui sebaran data (apakah normal, miring ke kiri/kanan, atau memiliki banyak puncak).
Melihat frekuensi kemunculan nilai dalam rentang tertentu.
Membantu mendeteksi outlier atau nilai ekstrem.
Nah berikut cara menampilkan histogram di R :
hist(data_kelas_A$Berat_Badan,
main = "Histogram Berat Badan - Kelas A",
xlab = "Berat Badan (kg)",
ylab = "Frekuensi",
col = "lightblue",
border = "black")hist(data_kelas_A$Tinggi_Badan,
main = "Histogram Tinggi Badan - Kelas A",
xlab = "Tinggi Badan (cm)",
ylab = "Frekuensi",
col = "lightgreen",
border = "black")hist(data_kelas_B$Berat_Badan,
main = "Histogram Berat Badan - Kelas B",
xlab = "Berat Badan (kg)",
ylab = "Frekuensi",
col = "lightpink",
border = "black")hist(data_kelas_B$Tinggi_Badan,
main = "Histogram Tinggi Badan - Kelas B",
xlab = "Tinggi Badan (cm)",
ylab = "Frekuensi",
col = "lightyellow",
border = "black")Boxplot adalah jenis visualisasi data yang digunakan untuk menggambarkan penyebaran data berdasarkan lima ukuran ringkasan (five-number summary), yaitu:
Minimum → nilai terkecil dalam data (tidak termasuk outlier).
Kuartil 1 (Q1) → nilai yang membagi 25% data terbawah.
Median (Q2) → nilai tengah data.
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 :
boxplot(data_kelas_A$Berat_Badan,
main = "Boxplot Berat Badan - Kelas A",
ylab = "Berat Badan (kg)",
col = "lightblue",
border = "black")boxplot(data_kelas_A$Tinggi_Badan,
main = "Boxplot Tinggi Badan - Kelas A",
ylab = "Tinggi Badan (cm)",
col = "lightgreen",
border = "black")boxplot(data_kelas_B$Berat_Badan,
main = "Boxplot Berat Badan - Kelas B",
ylab = "Berat Badan (kg)",
col = "lightpink",
border = "black")boxplot(data_kelas_B$Tinggi_Badan,
main = "Boxplot Tinggi Badan - Kelas B",
ylab = "Tinggi Badan (cm)",
col = "lightyellow",
border = "black")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.
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.
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.
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.