Praktikum: Ukuran Pemusatan dan Sebaran
Praktikum 05:Introduction to Statistics (SDT-11012)
Bayu Fachri
Mahasiswa Sains Data di Institut Teknologi Sains Bandung dengan rasa ingin tahu yang tinggi dan semangat untuk terus berkembang. Tertarik pada teknologi, data, dan berbagai hal baru. Percaya bahwa setiap proses adalah bagian dari perjalanan untuk menjadi versi terbaik dari diri sendiri.
1 Pendahuluan
Program Studi: Data Science Konteks Sesi: Pertemuan 5 – Statistika Deskriptif: Ukuran Pemusatan dan Penyebaran
Bayangkan dua kelas dengan rata-rata nilai ujian yang sama-sama 80. Apakah kualitas kedua kelas itu sama? Belum tentu: di kelas pertama hampir semua mahasiswa bernilai 75–85, sedangkan di kelas kedua nilainya berserakan dari 50 sampai 100. Rata-rata saja tidak cukup untuk menceritakan sebuah data. Kita membutuhkan dua jenis ringkasan yang selalu berpasangan:
• Ukuran pemusatan (central tendency) – di mana “pusat” data berada? • Ukuran penyebaran (dispersion) – seberapa jauh data menyebar dari pusatnya?
Pada Pertemuan 4 kita sudah melihat pusat dan sebaran data
lewat tabel frekuensi dan histogram. Praktikum ini mengubah kesan visual
tersebut menjadi angka yang tepat, secara berjenjang
dari perhitungan manual sampai implementasi di R. Ukuran posisi
(kuartil, persentil), IQR, boxplot, dan deteksi
outlier secara formal dibahas pada Pertemuan 6.
1.1 Tujuan Pembelajaran
Setelah menyelesaikan praktikum ini, mahasiswa mampu:
Menghitung dan menafsirkan mean, median, dan modus (termasuk rata-rata tertimbang dan trimmed mean), serta memilih ukuran yang sesuai dengan skala pengukuran dan bentuk distribusi data.
Menghitung dan menafsirkan rentang, varians, dan simpangan baku, termasuk alasan pembagi n − 1 pada varians sampel.
Menghitung dan menafsirkan koefisien variasi untuk membandingkan variabilitas relatif.
Menafsirkan pusat dan sebaran secara bersamaan, termasuk hubungan mean–median den- gan bentuk distribusi dan pengaruh nilai ekstrem.
Memakai z-score, aturan empiris, dan teorema Chebyshev untuk menafsirkan simpan- gan baku.
Menghitung ukuran pemusatan dan penyebaran dari data terkelompok (tabel distribusi frekuensi Pertemuan 4).
Melaporkan ringkasan statistik deskriptif secara jujur dan informatif.
1.2 Peta Alur Belajar
| Tahap | Bagian | Fokus |
|---|---|---|
| 1 | Prasyarat dan Notasi | Skala pengukuran, notasi populasi vs sampel |
| 2 | Ukuran Pemusatan | Mean, rata-rata tertimbang, trimmed mean, median, modus |
| 3 | Ukuran Penyebaran | Rentang, varians, simpangan baku |
| 4 | Variasi Relatif | Koefisien variasi |
| 5 | Interpretasi: Bentuk Distribusi | Mean vs median; koefisien kemencengan Pearson |
| 6 | Interpretasi: Nilai Ekstrem | Ukuran yang tahan dan tidak tahan nilai ekstrem |
| 7 | Interpretasi: Menafsirkan SD | z-score, aturan empiris, Chebyshev |
| 8 | Data Terkelompok | Statistik dari tabel distribusi frekuensi |
| 9 | Etika Pelaporan | Rata-rata yang menyesatkan |
| 10–11 | Studi Kasus & Latihan Mandiri | Penerapan menyeluruh |
| 12–14 | Referensi Praktis | Kesalahan umum, cheat sheet R, glosarium |
2 Prasyarat dan Notasi
2.1 Skala Pengukuran Menentukan Ukuran yang Valid
Ingat kembali skala pengukuran dari Pertemuan 2. Skala data menentukan ukuran mana yang bermakna untuk dihitung:
| Skala | Modus | Median | Mean | Ukuran Penyebaran |
|---|---|---|---|---|
| Nominal | Ya | Tidak | Tidak | Tidak berlaku |
| Ordinal | Ya | Ya | Kurang tepat | Kuartil / IQR |
| Interval | Ya | Ya | Ya | Rentang, IQR, varians, simpangan baku |
| Rasio | Ya | Ya | Ya | Semua ukuran, termasuk koefisien variasi |
Contoh: “rata-rata golongan darah” tidak bermakna (nominal), sedangkan “rata-rata tinggi badan” bermakna (rasio).
2.2 Populasi vs Sampel: Notasi
Karena statistik dari sampel dipakai untuk menduga parameter populasi, notasinya dibedakan:
library(knitr)
library(kableExtra)
tabel_notasi <- data.frame(
Ukuran = c("Banyaknya data", "Rata-rata", "Varians", "Simpangan baku"),
Populasi = c("$N$", "$\\mu$", "$\\sigma^2$", "$\\sigma$"),
Sampel = c("$n$", "$\\bar{x}$", "$s^2$", "$s$")
)
kable(tabel_notasi, escape = FALSE, align = "c", booktabs = TRUE,
col.names = c("Ukuran", "Populasi (Parameter)", "Sampel (Statistik)")) %>%
kable_styling(latex_options = c("hold_position"), full_width = FALSE,
position = "center")| Ukuran | Populasi (Parameter) | Sampel (Statistik) |
|---|---|---|
| Banyaknya data | \(N\) | \(n\) |
| Rata-rata | \(\mu\) | \(\bar{x}\) |
| Varians | \(\sigma^2\) | \(s^2\) |
| Simpangan baku | \(\sigma\) | \(s\) |
Simbol ∑ (sigma besar) berarti “jumlahkan”: \(\sum_{i=1}^{n} x_i = x_1 + x_2 + \cdots + x_n.\)
2.3 Data Utama yang Dipakai
Sepanjang praktikum, kita memakai nilai ujian Statistika 30 mahasiswa dari Pertemuan 4. Pengelompokan kelasnya (Aturan Sturges: 6 kelas, lebar 6, batas nyata dimulai dari 62,5) sudah kita peroleh dan dipakai ulang pada bagian data terkelompok.
nilai_ujian <- c(78, 65, 82, 90, 74, 68, 95, 88, 72, 80,
91, 77, 63, 85, 79, 92, 70, 84, 76, 89,
81, 67, 93, 75, 86, 71, 94, 83, 69, 87)
n <- length(nilai_ujian)
# Batas nyata kelas hasil pengelompokan pada Pertemuan 4
batas_nyata_u <- seq(62.5, by = 6, length.out = 7)
f_ujian <- as.numeric(table(cut(nilai_ujian, breaks = batas_nyata_u)))
n## [1] 30
## [1] 63 65 67 68 69 70 71 72 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
## [26] 91 92 93 94 95
## Loading required package: ggplot2
##
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
# Data (berdasarkan gambar/histogram)
batas <- c(62.5, 68.5, 74.5, 80.5, 86.5, 92.5, 98.5)
frek <- c(4, 5, 6, 6, 6, 3)
lebar <- diff(batas)
tengah <- batas[-length(batas)] + lebar / 2
kelas <- paste0(batas[-length(batas)], " - ", batas[-1])
# Gradasi hijau: pudar (terendah) -> tebal (tertinggi)
ramp <- colorRamp(c("#C8E6C9", "#1B5E20"))
skala <- (frek - min(frek)) / (max(frek) - min(frek))
warna <- rgb(ramp(skala), maxColorValue = 255)
fig <- plot_ly() %>%
add_bars(
x = tengah, y = frek, width = lebar,
marker = list(color = warna,
line = list(color = "white", width = 1.5)),
text = frek, textposition = "outside",
textfont = list(size = 14),
customdata = kelas,
hovertemplate = "Kelas: <b>%{customdata}</b><br>Frekuensi: %{y}<extra></extra>"
) %>%
layout(
title = list(text = "<b>Nilai Ujian Statistika (n = 30)</b>",
x = 0.5, xanchor = "center"),
showlegend = FALSE,
bargap = 0,
xaxis = list(title = "", # Judul sumbu x dihapus
tickvals = seq(65, 95, 5), ticktext = seq(65, 95, 5),
range = c(61, 100),
ticks = "outside",
showgrid = FALSE, zeroline = FALSE),
yaxis = list(title = "Frekuensi",
range = c(0, max(frek) * 1.2),
showticklabels = FALSE, # Angka sumbu y di kiri dihapus
ticks = "",
showgrid = FALSE, zeroline = FALSE),
margin = list(t = 80, b = 40, l = 70, r = 40)
)
figDari histogram, kita bisa memperkirakan “pusat” data ada di sekitar 80 dan sebarannya kira-kira dari 63 sampai 95. Praktikum ini mengubah perkiraan visual tersebut menjadi angka yang tepat.
3 Ukuran Pemusatan Data
3.1 Rata-rata Hitung (Mean)
Mean adalah jumlah seluruh nilai dibagi banyaknya data:
\[ \mu = \frac{\sum_{i=1}^{N} x_i}{N} \qquad\qquad\qquad \bar{x} = \frac{\sum_{i=1}^{n} x_i}{n} \]
## [1] 80.13333
## [1] 80.13333
Sifat penting mean:
- Memakai seluruh nilai data.
- Jumlah selisih (deviasi) semua data terhadap mean selalu nol: ∑(xi − ̄x) = 0. Karena itu mean disebut titik keseimbangan data.
- Sensitif terhadap outlier – satu nilai ekstrem dapat menggeser mean secara drastis.
## [1] 0
library(plotly)
# Data tiruan untuk nilai ujian (n = 30) dengan rata-rata sekitar 80
set.seed(42)
nilai <- rnorm(30, mean = 80, sd = 6)
nilai <- pmin(pmax(nilai, 63), 95)
nilai <- round(nilai, 1)
# Hitung nilai Mean
rata_rata <- mean(nilai)
# Berikan sedikit variasi vertikal (jitter) agar titik-titik tidak bertumpuk
set.seed(123)
y_pos <- runif(length(nilai), 0.2, 0.8)
fig <- plot_ly() %>%
# Titik-titik sebaran data
add_trace(
x = nilai, y = y_pos, type = "scatter", mode = "markers",
marker = list(color = "#2b7bba", size = 10, opacity = 0.8),
hovertemplate = "Nilai Ujian: <b>%{x}</b><extra></extra>"
) %>%
layout(
title = list(text = "<b>Mean sebagai Titik Keseimbangan</b>",
x = 0.5, xanchor = "center"),
showlegend = FALSE,
xaxis = list(title = "Nilai Ujian",
range = c(60, 98),
tickvals = seq(65, 95, 5),
ticks = "outside",
showgrid = FALSE, zeroline = FALSE,
showline = TRUE, mirror = TRUE),
yaxis = list(title = "",
range = c(0, 1),
showticklabels = FALSE, ticks = "",
showgrid = FALSE, zeroline = FALSE,
showline = TRUE, mirror = TRUE),
shapes = list(
# Garis vertikal merah untuk menunjukkan posisi Mean
list(type = "line", xref = "x", x0 = rata_rata, x1 = rata_rata,
yref = "paper", y0 = 0, y1 = 1,
line = list(color = "#C0392B", width = 2))
),
annotations = list(
# Label keterangan Mean di area kiri atas grafik
list(text = paste0("<b>Mean</b> (", round(rata_rata, 1), ")"),
x = 0.05, y = 0.85, xref = "paper", yref = "paper",
showarrow = FALSE,
font = list(size = 13, color = "#C0392B"))
),
margin = list(t = 80, b = 60, l = 50, r = 40)
)
fig3.1.1 Rata-rata Tertimbang (Weighted Mean)
Jika setiap nilai memiliki bobot yang berbeda, gunakan rata-rata tertimbang:
\[ \bar{x}_w = \frac{\sum_{i=1}^{n} w_i x_i}{\sum_{i=1}^{n} w_i} \]
Contoh: IPK semester dihitung dari nilai mutu yang dibobot dengan jumlah SKS.
library(knitr)
library(kableExtra)
tabel_frekuensi <- data.frame(
Kolom = c("Frekuensi ($f$)", "Frekuensi relatif", "Persentase"),
Rumus = c("hitung", "$\\dfrac{f}{n}$", "$\\dfrac{f}{n} \\times 100\\%$"),
Arti = c("Banyaknya data pada kategori",
"Proporsi (0 sampai 1)",
"Proporsi dalam persen")
)
kable(tabel_frekuensi,
format = "html",
escape = FALSE,
align = "lcl",
col.names = c("Kolom", "Rumus", "Arti")) %>%
kable_styling(full_width = FALSE, position = "center")| Kolom | Rumus | Arti |
|---|---|---|
| Frekuensi (\(f\)) | hitung | Banyaknya data pada kategori |
| Frekuensi relatif | \(\dfrac{f}{n}\) | Proporsi (0 sampai 1) |
| Persentase | \(\dfrac{f}{n} \times 100\%\) | Proporsi dalam persen |
nilai_mutu <- c(4.0, 3.0, 3.5, 2.0)
sks <- c(3, 4, 3, 2)
mean(nilai_mutu) # rata-rata biasa (mengabaikan bobot SKS)## [1] 3.125
## [1] 3.208333
## [1] 3.208333
Rata-rata biasa (3,125) mengabaikan fakta bahwa Kalkulus (4 SKS) lebih “berat” daripada Algo- ritma (2 SKS). IPK yang benar adalah rata-rata tertimbang, yaitu 3.208.
3.2 Median
Median adalah nilai tengah setelah data diurutkan. Median membagi data menjadi dua bagian sama banyak: 50% data berada di bawahnya dan 50% di atasnya.
- Jika \(n\) ganjil: median = data ke-\(\frac{n+1}{2}\).
- Jika \(n\) genap: median = rata-rata data ke-\(\frac{n}{2}\) dan ke-\(\left(\frac{n}{2}+1\right)\).
## [1] 80 81
## [1] 80.5
## [1] 80.5
Sekarang perhatikan data yang berbeda: gaji bulanan 7 karyawan sebuah perusahaan rintisan (juta rupiah), di mana salah satunya adalah pendiri perusahaan.
## [1] 5.2
## [1] 5.2
## [1] 10.82857
Mean (10,83 juta) jauh lebih besar dari gaji enam dari tujuh karyawan, karena tertarik oleh satu nilai ekstrem (45 juta). Median (5,2 juta) tidak terpengaruh besarnya nilai ekstrem tersebut – median hanya peduli pada urutan, bukan besar nilainya. Inilah sebabnya median disebut ukuran yang tahan (robust) terhadap outlier.
3.2.1 Trimmed Mean: Jalan Tengah
Trimmed mean membuang sebagian persentase data terkecil dan terbesar sebelum menghitung rata- rata, sehingga tetap memakai banyak data tetapi lebih tahan terhadap outlier.
## [1] 10.82857
## [1] 5.26
## [1] 5.2
3.3 Modus
Modus adalah nilai yang paling sering muncul.
Berbeda dengan mean dan median, modus juga valid untuk data
nominal. R tidak menyediakan fungsi bawaan untuk modus
statistik (fungsi mode() di R menunjukkan tipe data, bukan
modus), sehingga kita membuatnya sendiri:
hitung_modus <- function(x) {
tabel <- table(x)
maks <- max(tabel)
if (maks == 1) return(NA) # semua nilai unik -> tidak ada modus
hasil <- names(tabel)[tabel == maks] # bisa lebih dari satu modus
if (is.numeric(x)) as.numeric(hasil) else hasil
}
hitung_modus(c(2, 3, 3, 4, 4, 4, 5)) # satu modus (unimodal)## [1] 4
## [1] 2 3
## [1] NA
# Modus pada data nominal
metode_bayar <- c("Tunai", "Debit", "Debit", "E-Wallet", "Debit", "Kredit", "Tunai")
hitung_modus(metode_bayar)## [1] "Debit"
Catatan: untuk data kontinu (seperti nilai ujian di atas) yang hampir tidak pernah berulang persis, modus dari data mentah tidak informatif. Solusinya adalah mencari kelas modus dari data yang sudah dikelompokkan (dibahas pada bagian Data Terkelompok).
3.4 Membandingkan dan Memilih Ukuran Pemusatan
| Ukuran | Kelebihan | Kelemahan | Paling cocok untuk |
|---|---|---|---|
| Mean | Memakai semua data; dasar bagi banyak metode statistik lanjutan | Sensitif terhadap outlier dan data menceng | Data numerik simetris tanpa outlier |
| Median | Tahan terhadap outlier; selalu ada | Tidak memakai besar nilai semua data | Data numerik menceng (misalnya pendapatan, harga rumah), atau data ordinal |
| Modus | Bisa untuk data nominal; mudah dipahami | Bisa tidak ada atau lebih dari satu | Data nominal/kategorik; mencari nilai terpopuler |
library(plotly)
# Data simulasi gaji bulanan (dalam juta rupiah) dengan nilai outlier di kanan
set.seed(42)
gaji <- c(4.5, 5.0, 5.2, 5.5, 5.8, 6.0, 45.0) # 45.0 adalah outlier
# Hitung statistik
mean_val <- mean(gaji)
median_val <- median(gaji)
# Fungsi trimmed mean 20% manual (membuang 20% data dari masing-masing ujung)
trimmed_mean <- function(x, prop = 0.2) {
n <- length(x)
k <- floor(n * prop)
x_sorted <- sort(x)
mean(x_sorted[(k + 1):(n - k)])
}
trim_val <- trimmed_mean(gaji, 0.2)
# Berikan sedikit variasi vertikal (jitter) agar titik-titik tidak bertumpuk
set.seed(123)
y_pos <- runif(length(gaji), 0.3, 0.7)
fig <- plot_ly() %>%
# Titik-titik sebaran data (termasuk outlier di kanan)
add_trace(
x = gaji, y = y_pos, type = "scatter", mode = "markers",
marker = list(color = "#2b7bba", size = 11, opacity = 0.85),
hovertemplate = "Gaji: <b>%{x} Juta Rupiah</b><extra></extra>"
) %>%
layout(
title = list(text = "<b>Mean Tertarik ke Arah Outlier, Median Tidak</b>",
x = 0.5, xanchor = "center"),
showlegend = FALSE,
xaxis = list(title = "Gaji Bulanan (Juta Rupiah)",
range = c(-2, 52),
tickvals = seq(0, 50, 10),
ticks = "outside",
showgrid = FALSE, zeroline = FALSE,
showline = TRUE, mirror = TRUE),
yaxis = list(title = "",
range = c(0, 1),
showticklabels = FALSE, ticks = "",
showgrid = FALSE, zeroline = FALSE,
showline = TRUE, mirror = TRUE),
shapes = list(
# Garis vertikal Mean (Merah)
list(type = "line", xref = "x", x0 = mean_val, x1 = mean_val,
yref = "paper", y0 = 0, y1 = 1,
line = list(color = "#C0392B", width = 2)),
# Garis vertikal Median (Hijau putus-putus)
list(type = "line", xref = "x", x0 = median_val, x1 = median_val,
yref = "paper", y0 = 0, y1 = 1,
line = list(color = "#1E8449", width = 2, dash = "dash")),
# Garis vertikal Trimmed Mean (Oranye titik-titik)
list(type = "line", xref = "x", x0 = trim_val, x1 = trim_val,
yref = "paper", y0 = 0, y1 = 1,
line = list(color = "#D35400", width = 2, dash = "dot"))
),
annotations = list(
# Keterangan Legenda Manual di Kanan Atas
list(text = "<b>Mean</b>", x = 0.82, y = 0.88, xref = "paper", yref = "paper", showarrow = FALSE, font = list(size = 12, color = "#C0392B"), xanchor = "left"),
list(text = "<b>Median</b>", x = 0.82, y = 0.78, xref = "paper", yref = "paper", showarrow = FALSE, font = list(size = 12, color = "#1E8449"), xanchor = "left"),
list(text = "<b>Trimmed mean (20%)</b>", x = 0.82, y = 0.68, xref = "paper", yref = "paper", showarrow = FALSE, font = list(size = 12, color = "#D35400"), xanchor = "left"),
# Garis kecil ikon legenda
list(type = "line", x0 = 0.77, x1 = 0.80, y0 = 0.88, y1 = 0.88, xref = "paper", yref = "paper", line = list(color = "#C0392B", width = 2)),
list(type = "line", x0 = 0.77, x1 = 0.80, y0 = 0.78, y1 = 0.78, xref = "paper", yref = "paper", line = list(color = "#1E8449", width = 2, dash = "dash")),
list(type = "line", x0 = 0.77, x1 = 0.80, y0 = 0.68, y1 = 0.68, xref = "paper", yref = "paper", line = list(color = "#D35400", width = 2, dash = "dot"))
),
margin = list(t = 80, b = 60, l = 50, r = 40)
)
figPanduan memilih:
• Data nominal -> gunakan modus. • Data ordinal -> gunakan median (dan modus). • Data numerik simetris, tanpa outlier -> mean. • Data numerik menceng atau mengandung outlier -> median (laporkan mean sebagai pe- lengkap jika perlu).
4 Catatan: Median sebagai Ukuran Letak
Median membagi data terurut menjadi dua bagian sama banyak. Gagasan yang sama dapat diper- luas menjadi kuartil (empat bagian), desil (sepuluh bagian), dan persentil (seratus bagian), be- serta rentang antarkuartil (IQR) sebagai ukuran sebaran yang tahan nilai ekstrem. Semua ukuran
letak tersebut dibahas lengkap pada Pertemuan 6. Untuk saat ini, cukup diingat bahwa median adalah persentil ke-50.
5 Ukuran Penyebaran Data
5.1 Mengapa Ukuran Pusat Saja Tidak Cukup?
Dua loket pelayanan mencatat waktu tunggu (menit) enam pelanggan. Keduanya memiliki mean dan median yang persis sama:
loket_1 <- c(9, 10, 10, 10, 10, 11)
loket_2 <- c(1, 4, 10, 10, 16, 19)
rbind(Loket_1 = c(Mean = mean(loket_1), Median = median(loket_1)),
Loket_2 = c(Mean = mean(loket_2), Median = median(loket_2)))## Mean Median
## Loket_1 10 10
## Loket_2 10 10
library(plotly)
# Data waktu tunggu (menit) untuk kedua loket
waktu_loket1 <- c(9, 10, 10, 10, 10, 11)
waktu_loket2 <- c(1, 4, 10, 10, 16, 19)
# Fungsi pembuat panel scatter/dot plot dengan jitter vertikal
buat_panel_loket <- function(data_waktu, warna_titik) {
# Memberikan sedikit variasi vertikal agar titik bertumpuk rapi
set.seed(42)
y_pos <- jitter(rep(0.5, length(data_waktu)), amount = 0.25)
plot_ly() %>%
add_trace(
x = data_waktu, y = y_pos, type = "scatter", mode = "markers",
marker = list(color = warna_titik, size = 11, opacity = 0.85),
hovertemplate = "Waktu Tunggu: <b>%{x} menit</b><extra></extra>"
) %>%
layout(
xaxis = list(title = "Waktu Tunggu (menit)",
range = c(-1, 21),
tickvals = seq(0, 20, 5),
ticks = "outside",
showgrid = FALSE, zeroline = FALSE,
showline = TRUE, mirror = TRUE),
yaxis = list(title = "",
range = c(-0.2, 1.2),
showticklabels = FALSE, ticks = "",
showgrid = FALSE, zeroline = FALSE,
showline = TRUE, mirror = TRUE),
shapes = list(
# Garis vertikal merah untuk nilai rata-rata (mean)
list(type = "line", xref = "x", x0 = mean(data_waktu), x1 = mean(data_waktu),
yref = "paper", y0 = 0, y1 = 1,
line = list(color = "#C0392B", width = 2))
)
)
}
# Membuat panel untuk masing-masing loket
p1 <- buat_panel_loket(waktu_loket1, "#2b7bba") # Warna biru untuk Loket 1
p2 <- buat_panel_loket(waktu_loket2, "#E67E22") # Warna oranye untuk Loket 2
# ---------- Gabungkan Subplot ----------
fig <- subplot(p1, p2, nrows = 1, margin = 0.1, titleX = TRUE, titleY = FALSE) %>%
layout(
showlegend = FALSE,
margin = list(t = 90, b = 50, l = 50, r = 40)
)
# Mengambil domain sumbu X untuk menempatkan judul panel di tengah masing-masing sub-grafik
b <- plotly_build(fig)
pusat1 <- mean(b$x$layout$xaxis$domain)
pusat2 <- mean(b$x$layout$xaxis2$domain)
fig <- fig %>%
layout(
annotations = list(
list(text = "<b>Loket 1</b>", x = pusat1, y = 1.08,
xref = "paper", yref = "paper", xanchor = "center",
showarrow = FALSE, font = list(size = 15)),
list(text = "<b>Loket 2</b>", x = pusat2, y = 1.08,
xref = "paper", yref = "paper", xanchor = "center",
showarrow = FALSE, font = list(size = 15))
)
)
figKedua loket “rata-rata 10 menit”, tetapi pengalaman pelanggannya sangat berbeda: Loket 1 kon- sisten, Loket 2 tidak dapat diprediksi (ada yang hanya menunggu 1 menit, ada yang 19 menit). Perbedaan inilah yang ditangkap oleh ukuran penyebaran.
5.2 Rentang (Range)
\[ \text{Rentang} = x_{\max} - x_{\min} \]
## [1] 63 95
## [1] 32
## [1] 2
## [1] 18
Rentang mudah dihitung, tetapi hanya memakai dua nilai (terkecil dan terbesar) sehingga sangat dipengaruhi nilai ekstrem dan mengabaikan sebaran data di antaranya. Ukuran sebaran yang memakai seluruh data adalah varians dan simpangan baku.
5.3 Deviasi, Varians, dan Simpangan Baku
Untuk mengukur “rata-rata jarak data dari meannya”, langkah pertama yang terpikir adalah merata-ratakan deviasi (xi − ̄x). Namun sudah kita lihat bahwa jumlah deviasi selalu nol (yang positif dan negatif saling meniadakan), sehingga tidak informatif. Ada dua jalan keluar: memakai
nilai mutlak (menghasilkan mean absolute deviation) atau mengkuadratkan deviasi (meng- hasilkan varians). Cara kedua lebih umum karena sifat matematisnya yang baik.
Rumus varians:
\[ \sigma^2 = \frac{\sum_{i=1}^{N} (x_i - \mu)^2}{N} \qquad\qquad\qquad s^2 = \frac{\sum_{i=1}^{n} (x_i - \bar{x})^2}{n-1} \]
Simpangan baku (standar deviasi): akar dari varians, sehingga satuannya kembali sama dengan data asli.
\[ \sigma = \sqrt{\sigma^2} \qquad\qquad\qquad s = \sqrt{s^2} \]
5.3.1 Langkah Perhitungan Manual
Contoh: skor kuis 8 mahasiswa (sampel).
library(knitr)
library(kableExtra)
x <- c(6, 8, 7, 9, 5, 10, 7, 8)
rata <- mean(x) # 7.5
tabel_deviasi <- data.frame(
x = x,
Deviasi = x - rata,
Deviasi_Kuadrat = (x - rata)^2
)
kable(tabel_deviasi,
format = "html",
align = "rrr",
caption = paste0("Tabel Deviasi (mean = ", rata, ")")) %>%
kable_styling(bootstrap_options = c("striped", "hover"),
full_width = FALSE,
position = "center")| x | Deviasi | Deviasi_Kuadrat |
|---|---|---|
| 6 | -1.5 | 2.25 |
| 8 | 0.5 | 0.25 |
| 7 | -0.5 | 0.25 |
| 9 | 1.5 | 2.25 |
| 5 | -2.5 | 6.25 |
| 10 | 2.5 | 6.25 |
| 7 | -0.5 | 0.25 |
| 8 | 0.5 | 0.25 |
## x Deviasi Deviasi_Kuadrat
## 60 0 18
## [1] 80
n_k <- length(kuis)
JKD <- sum((kuis - mean(kuis))^2) # jumlah kuadrat deviasi
c(Varians_Sampel = JKD / (n_k - 1), # s^2 (dibagi n - 1)
Varians_Populasi = JKD / n_k, # sigma^2 (dibagi N)
SD_Sampel = sqrt(JKD / (n_k - 1)))## Varians_Sampel Varians_Populasi SD_Sampel
## 62.500000 50.000000 7.905694
## [1] 62.5
## [1] 7.905694
# Rumus komputasi (setara): [sum(x^2) - (sum(x))^2 / n] / (n - 1)
(sum(kuis^2) - sum(kuis)^2 / n_k) / (n_k - 1)## [1] 62.5
Jadi \[ s^2 = \frac{18}{7} \approx 2{,}571 \quad \text{dan} \quad s = \sqrt{2{,}571} \approx 1{,}604. \] Secara sederhana, skor kuis rata-rata menyimpang sekitar 1,6 poin dari meannya.
Awas: fungsi var() dan
sd() di R selalu membagi dengan n−1 (versi
sampel). Jika data Anda adalah seluruh populasi, gunakan
mean((x - mean(x))^2) untuk varians populasi.
5.3.2 Mengapa Dibagi n − 1?
Deviasi dihitung terhadap ̄x (bukan μ yang sebenarnya), dan ̄x selalu “menyesuaikan diri” dengan sampel sehingga jumlah kuadrat deviasinya cenderung terlalu kecil. Pembagian dengan n − 1 (disebut koreksi Bessel, terkait derajat bebas) mengoreksi bias tersebut. Simulasi berikut membuk- tikannya:
library(knitr)
library(kableExtra)
hasil <- data.frame(
Metode = c("Varians populasi sebenarnya",
"Rata-rata s^2 dibagi n",
"Rata-rata s^2 dibagi n - 1"),
Nilai = c(100.28, 79.45, 99.31)
)
kable(hasil, format = "html", digits = 2, align = "lr",
caption = "Rata-rata dari 5000 varians sampel (n = 5)") %>%
kable_styling(full_width = FALSE, position = "center")| Metode | Nilai |
|---|---|
| Varians populasi sebenarnya | 100.28 |
| Rata-rata s^2 dibagi n | 79.45 |
| Rata-rata s^2 dibagi n - 1 | 99.31 |
Pembagian dengan n rata-rata menduga terlalu rendah (sekitar 80% dari nilai sebenarnya untuk n = 5), sedangkan pembagian dengan n − 1 rata-rata tepat mendekati varians populasi sebenarnya. Inilah sebab n − 1 dipakai untuk sampel.
5.4 Koefisien Variasi (CV)
Simpangan baku bergantung pada satuan dan besar data, sehingga tidak adil untuk memband- ingkan variabilitas dua variabel yang skalanya berbeda. Koefisien variasi menyatakan simpangan baku relatif terhadap meannya:
\[CV = \frac{s}{\bar{x}} \times 100\%\]
Contoh: manakah yang lebih bervariasi, tinggi badan atau berat badan mahasiswa?
tinggi <- c(mean = 165, sd = 8) # cm
berat <- c(mean = 60, sd = 9) # kg
cv <- function(rata, simpangan) simpangan / rata * 100
c(CV_Tinggi_persen = cv(tinggi[["mean"]], tinggi[["sd"]]),
CV_Berat_persen = cv(berat[["mean"]], berat[["sd"]]))## CV_Tinggi_persen CV_Berat_persen
## 4.848485 15.000000
Simpangan baku berat badan (9 kg) memang hanya sedikit lebih besar daripada tinggi badan (8 cm), tetapi dalam kaitannya dengan meannya, berat badan jauh lebih bervariatif (CV sekitar 15% vs 4,8%). Perbandingan SD langsung antara “cm” dan “kg” tidak bermakna; CV tidak memiliki satuan sehingga dapat dibandingkan.
Syarat CV: hanya valid untuk data skala rasio (nol mutlak) dengan mean positif dan tidak mendekati nol. Jangan gunakan CV untuk suhu dalam °C (skala interval).
5.5 Ringkasan Ukuran Penyebaran
| Ukuran | Rumus | Satuan | Tahan Outlier? | Berpasangan dengan |
|---|---|---|---|---|
| Rentang | \(x_{\text{max}} - x_{\text{min}}\) | Sama dengan data | Tidak | (Min, Maks) |
| Varians | \(\frac{\sum(x_i - \bar{x})^2}{n - 1}\) | Kuadrat satuan data | Tidak | Mean |
| Simpangan baku | \(\sqrt{s^2}\) | Sama dengan data | Tidak | Mean |
| Koefisien variasi | \(\frac{s}{\bar{x}} \times 100\%\) | Tanpa satuan (%) | Tidak | Membandingkan variabilitas relatif |
Kaidah pasangan: mean dilaporkan bersama simpangan baku; median dilaporkan bersama rentang atau – setelah Pertemuan 6 – bersama IQR (kuartil).
6 Interpretasi: Bentuk Distribusi dari Pusat dan Sebaran
Posisi relatif mean, median, dan modus mengungkap bentuk distribusi:
| Bentuk | Ciri | Hubungan Mean–Median–Modus |
|---|---|---|
| Simetris | Sisi kiri dan kanan saling mencerminkan | \(\text{Mean} \approx \text{Median} \approx \text{Modus}\) |
| Menjulur kanan (skewed right) | Ekor panjang ke arah nilai besar | \(\text{Mean} > \text{Median} > \text{Modus}\) |
| Menjulur kiri (skewed left) | Ekor panjang ke arah nilai kecil | \(\text{Mean} < \text{Median} < \text{Modus}\) |
| Bimodal | Dua puncak berbeda (kemungkinan dua sub-populasi) | Satu ukuran pusat tidak cukup mewakili data |
Mean paling “tertarik” ke arah ekor, sedangkan median lebih bertahan. Karena itu selisih mean dan median dapat dijadikan petunjuk kemencengan. Salah satu ukuran yang membakukannya adalah koefisien kemencengan Pearson:
\[ Sk = \frac{3(\bar{x} - \text{Median})}{s} \]
Aturan praktis: Sk > 0 menjulur kanan, Sk < 0 menjulur kiri, dan |Sk| yang kecil (kurang dari sekitar 0,5) dianggap hampir simetris.
library(plotly)
# Data (SIMULASI, ganti dengan data asli Anda)
set.seed(42)
d_simetris <- rnorm(1000, mean = 50, sd = 10)
d_kanan <- rgamma(1000, shape = 3, scale = 6.5)
d_kiri <- 100 - rgamma(1000, shape = 3.5, scale = 5.5)
d_bimodal <- c(rnorm(500, 30, 6), rnorm(500, 70, 6))
# Gradasi hijau: muda (frekuensi rendah) -> tua (frekuensi tinggi)
ramp <- colorRamp(c("#D5F5E3", "#145A32"))
# Fungsi pembuat satu panel histogram + garis mean dan median
buat_hist <- function(x, rentang_x, tampil_legenda = FALSE, lebar_kelas = 5) {
brk <- seq(floor(min(x) / lebar_kelas) * lebar_kelas,
ceiling(max(x) / lebar_kelas) * lebar_kelas, by = lebar_kelas)
h <- hist(x, breaks = brk, plot = FALSE)
frek <- h$counts
tengah <- h$mids
lebar <- diff(h$breaks)
ymax <- max(frek) * 1.25
# Pengaman jika semua frekuensi sama
rng <- max(frek) - min(frek)
skala <- if (rng == 0) rep(0.5, length(frek)) else (frek - min(frek)) / rng
warna <- rgb(ramp(skala), maxColorValue = 255)
rata <- mean(x)
med <- median(x)
plot_ly() %>%
add_bars(
x = tengah, y = frek, width = lebar,
marker = list(color = warna, line = list(color = "white", width = 1)),
text = ifelse(frek > 0, frek, ""), textposition = "outside",
textfont = list(size = 11), cliponaxis = FALSE,
showlegend = FALSE,
hovertemplate = "Nilai: %{x}<br>Frekuensi: %{y}<extra></extra>"
) %>%
add_trace(
x = c(rata, rata), y = c(0, ymax), type = "scatter", mode = "lines",
line = list(color = "black", width = 3), name = "Mean",
legendgroup = "Mean", showlegend = tampil_legenda,
hovertemplate = paste0("Mean: ", round(rata, 1), "<extra></extra>")
) %>%
add_trace(
x = c(med, med), y = c(0, ymax), type = "scatter", mode = "lines",
line = list(color = "#1F4E9E", width = 3, dash = "dash"), name = "Median",
legendgroup = "Median", showlegend = tampil_legenda,
hovertemplate = paste0("Median: ", round(med, 1), "<extra></extra>")
) %>%
layout(
xaxis = list(title = "", range = rentang_x,
showgrid = FALSE, zeroline = FALSE),
yaxis = list(title = "Frekuensi", range = c(0, ymax),
showticklabels = FALSE, ticks = "",
showgrid = FALSE, zeroline = FALSE)
)
}
p1 <- buat_hist(d_simetris, c(20, 80))
p2 <- buat_hist(d_kanan, c(0, 70), tampil_legenda = TRUE)
p3 <- buat_hist(d_kiri, c(20, 100))
p4 <- buat_hist(d_bimodal, c(10, 90))
# ---------- Gabungkan (2 x 2) ----------
fig <- subplot(p1, p2, p3, p4, nrows = 2, margin = c(0.07, 0.07, 0.12, 0.12),
titleY = TRUE, shareY = FALSE) %>%
layout(
showlegend = TRUE,
legend = list(x = 0.93, y = 0.97, xanchor = "right", yanchor = "top",
bgcolor = "rgba(255,255,255,0)"),
bargap = 0,
margin = list(t = 60, b = 40, l = 70, r = 40)
)
# Ambil domain sebenarnya dari tiap panel, lalu hitung posisi tengah judul
b <- plotly_build(fig)
cx <- c(mean(b$x$layout$xaxis$domain), mean(b$x$layout$xaxis2$domain),
mean(b$x$layout$xaxis3$domain), mean(b$x$layout$xaxis4$domain))
ay <- c(b$x$layout$yaxis$domain[2], b$x$layout$yaxis2$domain[2],
b$x$layout$yaxis3$domain[2], b$x$layout$yaxis4$domain[2]) + 0.04
judul <- c("Simetris", "Menjulur Kanan", "Menjulur Kiri", "Bimodal")
fig <- fig %>%
layout(
annotations = lapply(1:4, function(i) {
list(text = paste0("<b>", judul[i], "</b>"), x = cx[i], y = ay[i],
xref = "paper", yref = "paper", xanchor = "center",
showarrow = FALSE, font = list(size = 15))
})
)
figlibrary(knitr)
library(kableExtra)
tabel10 <- data.frame(
Mean = c(50.16, 20.63, 80.24, 49.91),
Median = c(50.09, 18.50, 82.07, 50.26),
SD = c(9.92, 12.32, 11.59, 20.53),
Kemencengan_Pearson = c(0.02, 0.52, -0.47, -0.05),
row.names = c("Simetris", "Menjulur_Kanan", "Menjulur_Kiri", "Bimodal")
)
kable(tabel10, format = "html", digits = 2, row.names = TRUE,
align = "lrrrr",
caption = "Table 10: Ukuran Pusat dan Kemencengan pada Empat Bentuk Distribusi") %>%
kable_classic(full_width = FALSE, position = "center")| Mean | Median | SD | Kemencengan_Pearson | |
|---|---|---|---|---|
| Simetris | 50.16 | 50.09 | 9.92 | 0.02 |
| Menjulur_Kanan | 20.63 | 18.50 | 12.32 | 0.52 |
| Menjulur_Kiri | 80.24 | 82.07 | 11.59 | -0.47 |
| Bimodal | 49.91 | 50.26 | 20.53 | -0.05 |
Interpretasi:
• Simetris: mean dan median hampir sama; Sk ≈ 0. • Menjulur kanan: mean lebih besar dari median (ekor panjang di sisi nilai besar menarik mean); Sk > 0. • Menjulur kiri: mean lebih kecil dari median; Sk < 0. • Bimodal: mean dan median jatuh di antara dua puncak – di wilayah yang hampir tidak ada datanya. Pada kasus ini, melaporkan “rata-rata” saja menyesatkan; sebaiknya pisahkan data menjadi dua kelompok atau laporkan kedua puncaknya.
Latihan reflektif: Bagaimana bentuk distribusi nilai
ujian Statistika (nilai_ujian)? Jawab dengan membandingkan
mean dan median-nya:
c(Mean = mean(nilai_ujian), Median = median(nilai_ujian),
Kemencengan_Pearson = 3 * (mean(nilai_ujian) - median(nilai_ujian)) / sd(nilai_ujian))## Mean Median Kemencengan_Pearson
## 80.1333333 80.5000000 -0.1179215
Jawaban: mean (80.13) dan median (80.5) hampir sama dan Sk mendekati nol, sehingga dis- tribusinya relatif simetris – konsisten dengan bentuk histogram pada awal praktikum.
7 Interpretasi: Pengaruh Nilai Ekstrem
Kita sudah melihat pada data gaji bahwa satu nilai ekstrem dapat menarik mean jauh dari “ke- banyakan” data. Bagaimana dengan ukuran penyebaran?
7.1 Ukuran Mana yang Tahan Nilai Ekstrem?
Bandingkan seluruh ukuran pada data gaji dengan dan tanpa outlier:
library(knitr)
library(kableExtra)
tabel11 <- data.frame(
Mean = c(10.83, 5.13),
Median = c(5.2, 5.1),
SD = c(15.07, 0.47),
Rentang = c(40.5, 1.3),
CV_persen = c(139.21, 9.19),
row.names = c("Dengan outlier", "Tanpa outlier")
)
kable(tabel11, format = "html", digits = 2, row.names = TRUE,
align = "lrrrrr",
caption = "Table 11: Pengaruh Satu Nilai Ekstrem terhadap Ukuran Pusat dan Sebaran") %>%
kable_classic(full_width = FALSE, position = "center")| Mean | Median | SD | Rentang | CV_persen | |
|---|---|---|---|---|---|
| Dengan outlier | 10.83 | 5.2 | 15.07 | 40.5 | 139.21 |
| Tanpa outlier | 5.13 | 5.1 | 0.47 | 1.3 | 9.19 |
Satu data ekstrem mengubah mean, SD, rentang, dan CV secara dramatis, sedangkan median hampir tidak berubah. Ringkasnya:
| Tidak tahan outlier | Tahan outlier (robust) | |
|---|---|---|
| Ukuran pusat | Mean | Median, trimmed mean |
| Ukuran sebaran | Rentang, varians, simpangan baku, CV | IQR (Pertemuan 6) |
Cara mendeteksi outlier secara formal (pagar IQR, boxplot, modified z-score) dibahas pada Pertemuan 6. Satu prinsip yang perlu dipegang sejak sekarang – jangan menghapus nilai ekstrem secara otomatis. Selidiki dahulu penyebabnya: (1) kesalahan input/pengukuran -> perbaiki atau hapus; (2) nilai ekstrem yang sah (seperti gaji pendiri perusahaan) -> pertahankan, dan gunakan ukuran yang robust; (3) berasal dari populasi yang berbeda -> analisis terpisah. Selalu laporkan keputusan Anda.
8 Interpretasi: Menafsirkan Simpangan Baku
8.1 Z-Score
Z-score menyatakan berapa simpangan baku sebuah nilai berada di atas (+) atau di bawah (-) mean:
\[z = \frac{x - \bar{x}}{s}\]
Karena tanpa satuan, z-score memungkinkan membandingkan nilai dari skala yang berbeda.
z_ujian <- (nilai_ujian - mean(nilai_ujian)) / sd(nilai_ujian) # setara scale(nilai_ujian)
round(c(Nilai_63 = z_ujian[nilai_ujian == 63],
Nilai_80 = z_ujian[nilai_ujian == 80],
Nilai_95 = z_ujian[nilai_ujian == 95]), 2)## Nilai_63 Nilai_80 Nilai_95
## -1.84 -0.01 1.59
## Mean_z SD_z
## 0 1
Contoh perbandingan: Andi mendapat 85 pada Statistika (mean kelas 80, SD 5) dan 78 pada Kalkulus (mean kelas 65, SD 10). Di mata pelajaran mana prestasi relatifnya lebih baik?
## z_Statistika z_Kalkulus
## 1.0 1.3
Meskipun nilai mentah Statistika lebih tinggi, prestasi relatif Andi lebih baik di Kalkulus (1,3 SD di atas rata-rata kelas, dibanding 1,0 SD pada Statistika).
Nilai dengan |z| yang sangat besar berada jauh dari
pusat data. Kapan nilai seperti itu layak disebut outlier – dan mengapa
aturan “|z| > 3” punya kelemahan – dibahas pada
Pertemuan 6.
8.2 Aturan Empiris (68-95-99.7)
Untuk data yang berbentuk lonceng dan simetris (mendekati distribusi normal):
| Rentang | Proporsi data |
|---|---|
| \(\bar{x} \pm 1s\) | sekitar 68% |
| \(\bar{x} \pm 2s\) | sekitar 95% |
| \(\bar{x} \pm 3s\) | sekitar 99,7% |
8.3 Teorema Chebyshev
Untuk sembarang bentuk distribusi (termasuk yang menceng atau bimodal), minimal proporsi data dalam k simpangan baku dari mean (k > 1) adalah:
\[ \text{Proporsi} \geq 1 - \frac{1}{k^2} \]
Chebyshev berlaku umum, tetapi batasnya lebih longgar dibanding aturan empiris.
| k | Data_Nilai_Ujian_pct | Aturan_Empiris_pct | Chebyshev_Minimal_pct |
|---|---|---|---|
| 1 | 60 | 68.0 | 0.0 |
| 2 | 100 | 95.0 | 75.0 |
| 3 | 100 | 99.7 | 88.9 |
Data nilai ujian (bentuk relatif simetris, tetapi n hanya 30) cukup mendekati aturan empiris dan selalu memenuhi batas minimal Chebyshev. Untuk k = 1, Chebyshev tidak memberikan informasi (1−1/12 = 0%). Aturan empiris tidak boleh dipakai pada data yang sangat menceng atau bimodal; gunakan Chebyshev.
9 Statistik dari Data Terkelompok
Pada laporan atau publikasi, data sering hanya tersedia dalam bentuk tabel distribusi frekuensi, sehingga nilai aslinya tidak diketahui. Ukuran pemusatan dan penyebaran tetap dapat diaproksi- masi dengan menganggap setiap data dalam suatu kelas bernilai sama dengan titik tengah kelas (m).
9.1 Rumus Data Terkelompok
Dengan f = frekuensi kelas, m = titik tengah, n = ∑ f, w = lebar kelas:
| Ukuran | Rumus |
|---|---|
| Mean | \(\bar{x} = \frac{\sum f \cdot m}{n}\) |
| Median | \(\text{Median} = L + \left( \frac{\frac{n}{2} - F}{f_{\text{med}}} \right) w\) |
| Modus | \(\text{Modus} = L + \left( \frac{d_1}{d_1 + d_2} \right) w\) |
| Varians | \(s^2 = \frac{\sum f \cdot (m - \bar{x})^2}{n - 1}\) |
| Simpangan baku | \(s = \sqrt{s^2}\) |
Keterangan:
• Median: L = batas nyata bawah kelas median (kelas pertama yang frekuensi kumulatifnya mencapai n/2 ); F = frekuensi kumulatif sebelum kelas median; fmed = frekuensi kelas median.
• Modus: L = batas nyata bawah kelas modus (kelas dengan frekuensi terbesar); d1 = selisih frekuensi kelas modus dengan kelas sebelumnya; d2 = selisih dengan kelas sesudahnya.
9.2 Studi Kasus: Pendapatan Mingguan 100 Karyawan
Data: pendapatan mingguan (USD) dari 100 karyawan, dikelompokkan ke dalam 6 kelas (data yang sama dengan Pertemuan 4).
9.2.1 Langkah 1: Mean
| Kelas | f | m | f_kali_m | Kumulatif_F |
|---|---|---|---|---|
| 801-1000 | 9 | 900.5 | 8104.5 | 9 |
| 1001-1200 | 22 | 1100.5 | 24211.0 | 31 |
| 1201-1400 | 39 | 1300.5 | 50719.5 | 70 |
| 1401-1600 | 15 | 1500.5 | 22507.5 | 85 |
| 1601-1800 | 9 | 1700.5 | 15304.5 | 94 |
| 1801-2000 | 6 | 1900.5 | 11403.0 | 100 |
## [1] 1322.5
9.2.2 Langkah 2: Median
## [1] 50
## [1] "1201-1400"
## [1] 1297.936
Kelas median adalah 1201–1400 karena frekuensi kumulatifnya (70) pertama kali melampaui 50. Dengan L = 1200,5, F = 31, fmed = 39, dan w = 200:
\[ \text{Median} = 1200{,}5 + \left(\frac{50 - 31}{39}\right) 200 \approx 1297{,}94 \]
9.2.3 Langkah 3: Modus
## d1 d2
## 17 24
## [1] 1283.427
\[\text{Modus} = 1200{,}5 + \left(\frac{17}{17 + 24}\right) 200 \approx 1283{,}43\]
9.2.4 Langkah 4: Varians dan Simpangan Baku
| m | f | Deviasi | f_Deviasi_Kuadrat |
|---|---|---|---|
| 900.5 | 9 | -422 | 1602756 |
| 1100.5 | 22 | -222 | 1084248 |
| 1300.5 | 39 | -22 | 18876 |
| 1500.5 | 15 | 178 | 475260 |
| 1700.5 | 9 | 378 | 1285956 |
| 1900.5 | 6 | 578 | 2004504 |
## Varians SD CV_persen
## 65369.6970 255.6750 19.3327
Data ini diperlakukan sebagai sampel sehingga pembaginya n − 1 = 99.
9.2.5 Fungsi Bantu Gabungan
Karena langkah-langkah di atas akan dipakai berulang, kita bungkus dalam satu fungsi yang mener- ima batas nyata dan frekuensi:
## n Mean Median Modus Varians SD CV_persen
## 100.00 1322.50 1297.94 1283.43 65369.70 255.67 19.33
9.2.6 Visualisasi dan Interpretasi
Selisihnya kecil, tetapi tidak nol, karena pengelompokan membuang informasi nilai asli tiap data. Selalu gunakan data mentah jika tersedia; gunakan rumus data terkelompok hanya jika data mentah tidak ada.
10 Etika Pelaporan: Ketika Rata-rata Menyesatkan
Sama seperti grafik, ukuran statistik dapat menyesatkan – disengaja atau tidak – bila dipilih atau dilaporkan secara keliru.
10.1 Contoh 1: Rata-rata pada Data Menceng
“Rata-rata gaji di perusahaan kami mencapai 10,8 juta rupiah per
bulan!” Kalimat ini benar secara
perhitungan untuk data gaji, tetapi menyesatkan:
enam dari tujuh karyawan bergaji di bawah 6 juta. Untuk data menceng
atau beroutlier, laporkan median.
## Mean Median
## 11.0 5.5
## [1] 6
10.2 Contoh 2: Rata-rata dari Rata-rata
Kelas A (30 mahasiswa) memiliki rata-rata 80, dan Kelas B (10 mahasiswa) memiliki rata-rata 70. Berapa rata-rata gabungan?
## [1] 75
## [1] 77.5
Rata-rata sederhana (75) salah karena memperlakukan kedua kelas sama penting; rata-rata gabun- gan yang benar adalah 77,5 karena Kelas A memiliki lebih banyak mahasiswa.
10.3 Contoh 3: Rata-rata pada Data Bimodal
Pada data data_bimodal (bagian Bentuk Distribusi), mean sekitar 50, padahal hampir tidak ada data di sekitar nilai tersebut. Mean di sini “merata-ratakan” dua kelompok berbeda dan tidak mewakili siapa pun.
10.4 Contoh 4: Pusat Tanpa Sebaran
| Pelaporan sederhana | Pelaporan lebih baik |
|---|---|
| “Rata-rata nilai ujian adalah 80.” | “Rata-rata nilai ujian 80.1 (SD 9.3; median 80.5; rentang 63–95; n = 30).” |
Pelaporan yang lebih baik memungkinkan pembaca menilai apakah “rata-rata 80” mewakili kelas secara wajar atau tidak.
10.5 Daftar Periksa (Checklist) Pelaporan Statistik yang Jujur
□ Ukuran pusat selalu disertai ukuran sebaran (mean dengan SD; median dengan rentang atau IQR) □ Ukuran sesuai dengan skala pengukuran (tidak ada “rata-rata” untuk data nominal) □ Data menceng atau beroutlier dilaporkan dengan median □ Ukuran sampel (n) dicantumkan □ Rata-rata gabungan memakai bobot yang tepat □ Keputusan menghapus/mempertahankan outlier dijelaskan □ Perbandingan variabilitas antarvariabel berbeda skala memakai koefisien variasi
11 Studi Kasus Komprehensif: Membandingkan Dua Kelas
Konteks: Dosen Statistika membandingkan nilai ujian dua kelas paralel, masing-masing 30 maha- siswa. Kelas A adalah data nilai_ujian yang sudah kita pakai. Kelas B dicatat berikut ini.
11.1 Langkah 1: Ringkasan Statistik Lengkap
| Kelas_A | Kelas_B | |
|---|---|---|
| n | 30.00 | 30.00 |
| Mean | 80.13 | 80.00 |
| Median | 80.50 | 82.00 |
| Modus | NA | 56.00 |
| Min | 63.00 | 54.00 |
| Maks | 95.00 | 100.00 |
| Rentang | 32.00 | 46.00 |
| Varians | 87.02 | 207.72 |
| SD | 9.33 | 14.41 |
| CV_persen | 11.64 | 18.02 |
11.2 Langkah 2: Visualisasi Berdampingan
## Langkah 3: Posisi Relatif Seorang Mahasiswa
Seorang mahasiswa mendapat nilai **90.** Seberapa baik posisinya jika ia berada di Kelas A diband-
ingkan Kelas B?
<table class=" lightable-classic" style='font-family: "Arial Narrow", "Source Sans Pro", sans-serif; width: auto !important; margin-left: auto; margin-right: auto;'>
<caption>Table 21: Posisi Relatif Nilai 90</caption>
<thead>
<tr>
<th style="text-align:left;"> Kelas </th>
<th style="text-align:right;"> Mean </th>
<th style="text-align:right;"> SD </th>
<th style="text-align:right;"> z_score </th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left;"> A </td>
<td style="text-align:right;"> 80.13 </td>
<td style="text-align:right;"> 9.33 </td>
<td style="text-align:right;"> 1.06 </td>
</tr>
<tr>
<td style="text-align:left;"> B </td>
<td style="text-align:right;"> 80.00 </td>
<td style="text-align:right;"> 14.41 </td>
<td style="text-align:right;"> 0.69 </td>
</tr>
</tbody>
</table>
## Pertanyaan Diskusi dan Jawaban
**1. Kelas mana yang berprestasi lebih baik berdasarkan ukuran pusat?**
Mean kedua kelas hampir identik (80.1 vs 80), sehingga berdasarkan mean saja keduanya “sama”.
Namun median Kelas B (82) lebih tinggi daripada mean-nya (80), yang mengindikasikan distribusi
**menjulur kiri:** mayoritas mahasiswa Kelas B bernilai relatif tinggi, tetapi ditarik turun oleh
segelintir nilai rendah (54–61). Kelas A hampir simetris (mean ≈ median).
**2. Kelas mana yang lebih homogen?**
**Kelas A.** Rentangnya lebih sempit (32 vs 46), simpangan bakunya lebih kecil (9.3 vs 14.4), dan
CV-nya lebih rendah (11.6% vs 18%). Kelas B jauh lebih beragam: ada mahasiswa yang sangat
unggul sekaligus yang tertinggal.
**3. Mengapa nilai 90 tampak “lebih istimewa” di Kelas A?**
Karena sebaran Kelas A lebih kecil, nilai 90 berada 1.06 SD di atas mean Kelas A, tetapi hanya 0.69
SD di atas mean Kelas B. Nilai yang sama menempati posisi relatif berbeda tergantung sebaran
kelasnya.
**4. Apa rekomendasi bagi dosen?**
Kelas A cukup ditangani dengan pengajaran standar. Kelas B membutuhkan **pendekatan**
**berlapis:** pendampingan tambahan bagi kelompok bernilai rendah, dan materi pengayaan bagi
kelompok bernilai tinggi. Kesimpulan ini **tidak akan terlihat** bila hanya membandingkan mean.
<hr style="border: 2px solid black; width: 50%; margin: 50px auto;">
# Latihan Mandiri
## Latihan Utama (Exercise 2.14 Lanjutan): Kepemilikan Kartu Kredit
**Konteks:** Sebuah sampel acak dari 80 orang dewasa ditanya mengenai jumlah kartu kredit yang
mereka miliki. Data sudah disajikan dalam kelas (data terkelompok):
### Tugas 1: Klasifikasi variabel dan pemilihan ukuran
Variabel yang diamati adalah **jumlah kartu kredit yang dimiliki.** Karena berupa hasil **hitun-**
**gan** (bilangan bulat non-negatif) dengan nol mutlak, variabelnya **kuantitatif diskrit berskala**
**rasio.** Dengan skala rasio, **semua** ukuran pemusatan dan penyebaran (termasuk koefisien variasi)
valid untuk dihitung.
### Tugas 2: Hitung titik tengah kelas (m) untuk interval “4 to 7”
11.3 [1] 5.5
Titik tengah kelas "4 to 7" adalah **5.5**, diperoleh dari $\dfrac{4+7}{2}$ (sama dengan menggunakan batas nyata: $\dfrac{3{,}5+7{,}5}{2}$).
### Tugas 3: Hitung mean, median, dan modus
11.4 n Mean Median Modus
11.5 80.00 7.10 6.88 6.17
Kelas median dan kelas modus keduanya adalah “4 to 7” (frekuensi terbesar = 26; frekuensi kumu-
latif melampaui 40 di kelas ini).
### Tugas 4: Hitung varians, simpangan baku, dan koefisien variasi
11.6 Varians SD CV_persen
11.7 16.85 4.10 57.82
### Tugas 5: Interpretasikan bentuk distribusi dan variabilitasnya
11.8 Mean
11.9 0.16
```{=html}
<div class="plotly html-widget html-fill-item" id="htmlwidget-494c6bbfceedb9bdba15" style="width:768px;height:480px;"></div>
<script type="application/json" data-for="htmlwidget-494c6bbfceedb9bdba15">{"x":{"visdat":{"140413ac210c":["function () ","plotlyVisDat"]},"cur_data":"140413ac210c","attrs":{"140413ac210c":{"alpha_stroke":1,"sizes":[10,100],"spans":[1,20],"x":[1.5,5.5,9.5,13.5],"y":[18,26,22,14],"type":"bar","width":[4,4,4,4],"marker":{"color":["#91C2A6","#0B5D2E","#4E8F6A","#D5F5E3"],"line":{"color":"white","width":1.5}},"text":[18,26,22,14],"textposition":"outside","textfont":{"size":14},"showlegend":false,"customdata":["0 - 3","4 - 7","8 - 11","12 - 15"],"hovertemplate":"Kelas: <b>%{customdata}<\/b> kartu<br>Frekuensi: %{y}<extra><\/extra>","inherit":true},"140413ac210c.1":{"alpha_stroke":1,"sizes":[10,100],"spans":[1,20],"x":[7.0999999999999996,7.0999999999999996],"y":[0,31.199999999999999],"type":"scatter","mode":"lines","name":"Mean","line":{"color":"black","width":3},"hovertemplate":"Mean: 7.1<extra><\/extra>","inherit":true},"140413ac210c.2":{"alpha_stroke":1,"sizes":[10,100],"spans":[1,20],"x":[6.884615384615385,6.884615384615385],"y":[0,31.199999999999999],"type":"scatter","mode":"lines","name":"Median","line":{"color":"#E67E22","width":3,"dash":"dash"},"hovertemplate":"Median: 6.88<extra><\/extra>","inherit":true},"140413ac210c.3":{"alpha_stroke":1,"sizes":[10,100],"spans":[1,20],"x":[6.1666666666666661,6.1666666666666661],"y":[0,31.199999999999999],"type":"scatter","mode":"lines","name":"Modus","line":{"color":"#1F4E9E","width":3,"dash":"dot"},"hovertemplate":"Modus: 6.17<extra><\/extra>","inherit":true}},"layout":{"margin":{"b":40,"l":70,"t":80,"r":40},"title":{"text":"<b>Distribusi Kepemilikan Kartu Kredit (n = 80)<\/b>","x":0.5,"xanchor":"center"},"bargap":0,"xaxis":{"domain":[0,1],"automargin":true,"title":"","tickvals":[0,5,10,15],"range":[-1,16],"showgrid":false,"zeroline":false,"showline":true,"mirror":true},"yaxis":{"domain":[0,1],"automargin":true,"title":"Frekuensi","range":[0,31.199999999999999],"showticklabels":false,"ticks":"","showgrid":false,"zeroline":false,"showline":true,"mirror":true},"legend":{"x":0.96999999999999997,"y":0.96999999999999997,"xanchor":"right","yanchor":"top","bgcolor":"rgba(255,255,255,0.7)"},"hovermode":"closest","showlegend":true},"source":"A","config":{"modeBarButtonsToAdd":["hoverclosest","hovercompare"],"showSendToCloud":false},"data":[{"x":[1.5,5.5,9.5,13.5],"y":[18,26,22,14],"type":"bar","width":[4,4,4,4],"marker":{"color":["#91C2A6","#0B5D2E","#4E8F6A","#D5F5E3"],"line":{"color":"white","width":1.5}},"text":[18,26,22,14],"textposition":["outside","outside","outside","outside"],"textfont":{"size":14},"showlegend":false,"customdata":["0 - 3","4 - 7","8 - 11","12 - 15"],"hovertemplate":["Kelas: <b>%{customdata}<\/b> kartu<br>Frekuensi: %{y}<extra><\/extra>","Kelas: <b>%{customdata}<\/b> kartu<br>Frekuensi: %{y}<extra><\/extra>","Kelas: <b>%{customdata}<\/b> kartu<br>Frekuensi: %{y}<extra><\/extra>","Kelas: <b>%{customdata}<\/b> kartu<br>Frekuensi: %{y}<extra><\/extra>"],"error_y":{"color":"rgba(31,119,180,1)"},"error_x":{"color":"rgba(31,119,180,1)"},"xaxis":"x","yaxis":"y","frame":null},{"x":[7.0999999999999996,7.0999999999999996],"y":[0,31.199999999999999],"type":"scatter","mode":"lines","name":"Mean","line":{"color":"black","width":3},"hovertemplate":["Mean: 7.1<extra><\/extra>","Mean: 7.1<extra><\/extra>"],"marker":{"color":"rgba(255,127,14,1)","line":{"color":"rgba(255,127,14,1)"}},"error_y":{"color":"rgba(255,127,14,1)"},"error_x":{"color":"rgba(255,127,14,1)"},"xaxis":"x","yaxis":"y","frame":null},{"x":[6.884615384615385,6.884615384615385],"y":[0,31.199999999999999],"type":"scatter","mode":"lines","name":"Median","line":{"color":"#E67E22","width":3,"dash":"dash"},"hovertemplate":["Median: 6.88<extra><\/extra>","Median: 6.88<extra><\/extra>"],"marker":{"color":"rgba(44,160,44,1)","line":{"color":"rgba(44,160,44,1)"}},"error_y":{"color":"rgba(44,160,44,1)"},"error_x":{"color":"rgba(44,160,44,1)"},"xaxis":"x","yaxis":"y","frame":null},{"x":[6.1666666666666661,6.1666666666666661],"y":[0,31.199999999999999],"type":"scatter","mode":"lines","name":"Modus","line":{"color":"#1F4E9E","width":3,"dash":"dot"},"hovertemplate":["Modus: 6.17<extra><\/extra>","Modus: 6.17<extra><\/extra>"],"marker":{"color":"rgba(214,39,40,1)","line":{"color":"rgba(214,39,40,1)"}},"error_y":{"color":"rgba(214,39,40,1)"},"error_x":{"color":"rgba(214,39,40,1)"},"xaxis":"x","yaxis":"y","frame":null}],"highlight":{"on":"plotly_click","persistent":false,"dynamic":false,"selectize":false,"opacityDim":0.20000000000000001,"selected":{"opacity":1},"debounce":0},"shinyEvents":["plotly_hover","plotly_click","plotly_selected","plotly_relayout","plotly_brushed","plotly_brushing","plotly_clickannotation","plotly_doubleclick","plotly_deselect","plotly_afterplot","plotly_sunburstclick"],"base_url":"https://plot.ly"},"evals":[],"jsHooks":[]}</script>
Jawaban: Mean (7.1) sedikit di atas median (6.88) dan modus (6.17), dengan Sk = 0.16, sehingga distribusinya hampir simetris dengan sedikit kemencengan ke kanan. Rata-rata orang dalam sampel memiliki sekitar 7 kartu kredit. CV sebesar 57.8% menunjukkan variabilitas yang tinggi (simpangan baku mencapai lebih dari separuh mean-nya) – kepemilikan kartu kredit sangat beragam antarindividu.
11.9.1 Tugas 6 (Tantangan): Sensitivitas terhadap Kelas Terbuka
Bagaimana jika kelas “12 or more” ternyata mencakup orang dengan hingga 19 kartu (batas atas 19, bukan 15)?
| Mean | Median | Modus | SD | |
|---|---|---|---|---|
| Asumsi batas atas 15 | 7.10 | 6.88 | 6.17 | 4.10 |
| Asumsi batas atas 19 | 7.45 | 6.88 | 6.17 | 4.69 |
Jawaban: Median dan modus tidak berubah (keduanya berada di kelas “4 to 7”), tetapi mean dan simpangan baku meningkat karena titik tengah kelas terakhir bergeser. Ini contoh nyata bahwa median dan modus lebih tahan terhadap ketidakjelasan kelas terbuka dibanding mean. Karena itu, asumsi batas kelas terbuka harus selalu dinyatakan secara eksplisit.
11.9.2 Latihan Tambahan (Self-Check)
Kerjakan soal-soal berikut secara mandiri sebelum melihat kunci jawaban pada komentar kode.
Soal A. Data waktu tempuh (menit) 12 karyawan menuju kantor: 15, 22, 18, 30, 25, 20, 35, 28, 19, 24, 27, 33. Hitung mean, median, modus, rentang, varians, simpangan baku, dan koefisien variasi. Waktu tempuh berapa yang memiliki z-score terbesar?
Soal B. Dua reksa dana memiliki statistik imbal hasil tahunan berikut: Reksa Dana X (mean 12%, SD 3%) dan Reksa Dana Y (mean 25%, SD 5%). Manakah yang risikonya (variabilitas) relatif lebih kecil?
Soal C. Harga (miliar rupiah) 8 rumah di suatu perumahan: 0,85; 0,90; 0,95; 0,90; 1,05; 1,10; 0,98; 9,5. (a) Hitung mean, median, dan simpangan baku. (b) Hitung ulang ketiganya tanpa rumah termahal. (c) Ukuran pusat mana yang sebaiknya dilaporkan? Mengapa?
Soal D. Rina mendapat nilai 72 pada ujian yang mean-nya 65 dengan SD 5. Dewi mendapat nilai 80 pada ujian lain yang mean-nya 70 dengan SD 10. Siapa yang prestasi relatifnya lebih baik?
12 Kesalahan Umum dalam Ukuran Pemusatan dan Penyebaran
Ringkasan kesalahan yang paling sering dijumpai, berdasarkan contoh-contoh pada praktikum ini:
Memakai mean untuk data menceng atau beroutlier tanpa memeriksa median – hasil- nya tidak mewakili “kebanyakan” data (contoh: gaji, harga rumah).
Menghitung mean untuk data nominal atau ordinal – misalnya “rata-rata jenis ke- lamin” atau merata-ratakan peringkat kepuasan seolah jaraknya sama.
Lupa bahwa
var()dansd()di R memakai pembagi n − 1 – untuk data populasi, hasilnya sedikit berbeda dari σ 2 dan σ.Menyangka
range()di R mengembalikan selisih – fungsi itu mengembalikan nilai min- imum dan maksimum; gunakan diff(range(x)).Membandingkan simpangan baku antarvariabel berbeda skala (cm vs kg) tanpa koefisien variasi.
Menggunakan koefisien variasi pada skala interval (misalnya suhu °C) atau pada data dengan mean mendekati nol.
Merata-ratakan rata-rata tanpa bobot – rata-rata gabungan harus tertimbang menurut ukuran kelompok.
Melaporkan ukuran pusat tanpa ukuran sebaran (dan tanpa n) – pembaca tidak bisa menilai keterwakilan pusat data.
Menghapus outlier otomatis tanpa menyelidiki penyebabnya.
Menerapkan aturan empiris pada distribusi yang tidak berbentuk lonceng – gu- nakan Chebyshev untuk bentuk sembarang.
Menganggap hasil data terkelompok sebagai nilai eksak – itu hanya aproksimasi, dan hasilnya (terutama mean dan SD) sensitif terhadap asumsi kelas terbuka.
Mencari modus pada data kontinu mentah – nilai hampir tidak pernah berulang; kelom- pokkan dahulu dan gunakan kelas modus.
13 Cheat Sheet: Fungsi R yang Digunakan
| Fungsi | Kegunaan |
|---|---|
mean(x) |
Rata-rata hitung; mean(x, trim = 0.1)
untuk trimmed mean |
weighted.mean(x, w) |
Rata-rata tertimbang dengan bobot w |
median(x) |
Median |
table(x) |
Menghitung frekuensi tiap nilai (dasar mencari modus) |
which.max(f) |
Indeks nilai terbesar (mencari kelas modus) |
summary(x) |
Min, Q1, median, mean, Q3, maks |
range(x) |
Nilai minimum dan maksimum (bukan selisih) |
diff(range(x)) |
Rentang |
var(x) |
Varians sampel (pembagi \(n - 1\)) |
sd(x) |
Simpangan baku sampel |
scale(x) |
Menghitung z-score |
hist(x, breaks = ...) |
Histogram |
stripchart(x, method = ...) |
Diagram titik untuk data kecil |
abline(v = ...) |
Menambahkan garis vertikal (mean, median, dst.) pada grafik |
cumsum(x) |
Frekuensi kumulatif (mencari kelas median) |
cut(x, breaks = ...) |
Mengelompokkan data numerik ke dalam kelas |
sapply(list, fungsi) |
Menerapkan fungsi ke beberapa dataset sekaligus |
layout() /
par(mfrow = ...) |
Mengatur beberapa grafik dalam satu tampilan |
kable(df) |
Menampilkan data.frame sebagai tabel rapi
(paket knitr) |
14 Glosarium Istilah
| Istilah | Definisi Singkat |
|---|---|
| Ukuran Pemusatan | Nilai tunggal yang menggambarkan “pusat” atau nilai tipikal data |
| Mean | Jumlah semua nilai dibagi banyaknya data |
| Rata-rata Tertimbang | Mean dengan bobot berbeda untuk tiap nilai |
| Trimmed Mean | Mean setelah membuang persentase tertentu data terkecil dan terbesar |
| Median | Nilai tengah data terurut; membagi data menjadi dua bagian sama banyak |
| Modus | Nilai yang paling sering muncul |
| Istilah | Definisi Singkat |
|---|---|
| Ukuran Penyebaran | Ukuran seberapa jauh data menyebar dari pusatnya |
| Rentang (Range) | Selisih nilai terbesar dan terkecil |
| Deviasi | Selisih sebuah nilai dengan mean: \(x_i - \bar{x}\) |
| Varians | Rata-rata kuadrat deviasi (pembagi \(n - 1\) untuk sampel) |
| Simpangan Baku | Akar varians; ukuran sebaran dengan satuan sama seperti data |
| Koefisien Variasi (CV) | Simpangan baku relatif terhadap mean, dalam persen |
| Derajat Bebas | Banyaknya nilai yang bebas bervariasi; pada varians sampel sebesar \(n - 1\) |
| Skewness (Kemencengan) | Ukuran ketidaksimetrisan suatu distribusi |
| Bimodal | Distribusi dengan dua puncak (modus) berbeda |
| Outlier | Data yang nilainya jauh menyimpang dari mayoritas data |
| Robust (Tahan) | Ukuran yang tidak banyak berubah oleh keberadaan outlier |
| Z-Score | Jarak sebuah nilai dari mean dalam satuan simpangan baku |
| Aturan Empiris | Aturan 68-95-99,7 untuk data berbentuk lonceng |
| Teorema Chebyshev | Batas minimal proporsi data dalam \(k\) simpangan baku, berlaku untuk sembarang distribusi |
| Titik Tengah Kelas (\(m\)) | Nilai representatif kelas pada perhitungan data terkelompok |
| Kelas Median / Kelas Modus | Kelas yang memuat median / kelas dengan frekuensi terbesar |
15 Rangkuman dan Kesimpulan
Pusat dan sebaran berpasangan. Ukuran pemusatan menjawab “di mana pusat data?”, ukuran penyebaran menjawab “seberapa menyebar?”. Melaporkan salah satunya saja tidak lengkap.
Skala data menentukan ukuran yang valid. Modus untuk nominal; median untuk ordi- nal; mean untuk interval/rasio; koefisien variasi khusus rasio.
Mean vs median. Mean memakai seluruh data tetapi sensitif terhadap outlier; median tahan outlier. Selisih keduanya menandakan kemencengan: mean > median (menjulur kanan), mean < median (menjulur kiri).
Varians dan simpangan baku mengukur rata-rata jarak data dari mean. Untuk sampel, pembaginya n − 1. Simpangan baku berpasangan dengan mean.
Koefisien variasi dan z-score memungkinkan perbandingan yang adil lintas skala: CV untuk variabilitas, z-score untuk posisi relatif individu.
Nilai ekstrem menarik mean, SD, rentang, dan CV, tetapi hampir tidak memengaruhi median. Nilai ekstrem harus diselidiki, bukan dibuang otomatis.
Data terkelompok memberi aproksimasi. Rumus titik tengah, kelas median, dan kelas modus berguna ketika data mentah tidak tersedia, tetapi hasilnya tidak eksak.
Pelaporan yang jujur mencantumkan ukuran pusat, sebaran, dan ukuran sampel, serta memilih ukuran yang sesuai dengan bentuk data.
Jembatan ke sesi berikutnya: ukuran pusat dan sebaran meringkas data dengan dua angka, tetapi menyembunyikan detail seperti “di mana 25% data terbawah?” atau “nilai mana yang terlalu jauh?”. Pertemuan 6 membahas ukuran posisi (kuartil, desil, persentil), IQR dan boxplot, bentuk distribusi, serta deteksi dan penanganan outlier secara formal.
16 Referensi Pendukung
Materi ini merangkum topik ukuran pemusatan dan penyebaran data (measures of central tendency and dispersion) yang umum dibahas pada bab statistika deskriptif buku teks pengantar statistika bisnis/data science. Mahasiswa disarankan melengkapi pemahaman dengan merujuk pada:
• Modul/slide perkuliahan “Introduction to Statistics (SDT-1102)” – Pertemuan 5: Statistika Deskriptif (Measures of Central Tendency and Dispersion).
• Dokumentasi resmi R:
?mean, ?median, ?var, ?sd, ?weighted.mean, ?scale (dapat
diakses langsung di R/RStudio).
• Buku teks pengantar statistika deskriptif pada bab Ukuran Pemusatan dan Ukuran Penye- baran.