Aplikasi jejak karbon EcoTrack mencatat menit penggunaan harian dari 15 pengguna aktif dalam satu minggu.
x <- c(22, 25, 19, 30, 24, 21, 45, 23, 20, 26, 24, 22, 18, 27, 23)
n <- length(x)
sort(x)
## [1] 18 19 20 21 22 22 23 23 24 24 25 26 27 30 45
n
## [1] 15
rata <- mean(x)
med <- median(x)
frek <- table(x)
modus <- as.numeric(names(frek)[frek == max(frek)])
cat("Mean =", rata, "\n")
## Mean = 24.6
cat("Median =", med, "\n")
## Median = 23
cat("Modus =", modus, "(frekuensi", max(frek), "kali)\n")
## Modus = 22 23 24 (frekuensi 2 kali)
frek
## x
## 18 19 20 21 22 23 24 25 26 27 30 45
## 1 1 1 1 2 2 2 1 1 1 1 1
Interpretasi. Rata-rata penggunaan adalah 24,6 menit per hari, sedangkan median 23 menit. Mean lebih besar dari median karena adanya nilai ekstrem (45 menit). Data bersifat multimodus (22, 23, dan 24, masing-masing muncul 2 kali), sehingga modus kurang informatif untuk data ini.
Q1 <- quantile(x, 0.25) # type 7 (default R)
Q3 <- quantile(x, 0.75)
iqr <- IQR(x)
Q1; Q3; iqr
## 25%
## 21.5
## 75%
## 25.5
## [1] 4
pagar_bawah <- Q1 - 1.5 * iqr
pagar_atas <- Q3 + 1.5 * iqr
c(pagar_bawah = unname(pagar_bawah), pagar_atas = unname(pagar_atas))
## pagar_bawah pagar_atas
## 15.5 31.5
# outlier
x[x < pagar_bawah | x > pagar_atas]
## [1] 45
boxplot(x, horizontal = TRUE, col = "#9ad0a5",
main = "Boxplot Menit Penggunaan EcoTrack",
xlab = "Menit per hari")
Interpretasi. Q1 = 21,5 dan Q3 = 25,5 sehingga IQR = 4 menit. Artinya 50% pengguna di bagian tengah menggunakan EcoTrack sekitar 21,5 sampai 25,5 menit per hari, dengan rentang yang sempit; perilaku mayoritas pengguna cukup seragam. Nilai 45 menit berada di atas pagar atas (31,5) sehingga tergolong outlier, yaitu pengguna yang sangat aktif.
Catatan: R memakai metode kuantil tipe 7 (default). Metode belah dua manual (median dikeluarkan) memberi Q1 = 21, Q3 = 26, dan IQR = 5.
jk <- sum((x - mean(x))^2) # jumlah kuadrat deviasi
var_s <- var(x) # sampel (n - 1)
sd_s <- sd(x)
var_p <- jk / n # populasi (n)
sd_p <- sqrt(var_p)
cv <- sd_s / mean(x) * 100
cat("Jumlah kuadrat deviasi =", jk, "\n")
## Jumlah kuadrat deviasi = 581.6
cat("Varians sampel =", round(var_s, 2), "\n")
## Varians sampel = 41.54
cat("Simpangan baku sampel =", round(sd_s, 2), "\n")
## Simpangan baku sampel = 6.45
cat("Varians populasi =", round(var_p, 2), "\n")
## Varians populasi = 38.77
cat("Simpangan baku populasi=", round(sd_p, 2), "\n")
## Simpangan baku populasi= 6.23
cat("Koefisien variasi (%) =", round(cv, 1), "\n")
## Koefisien variasi (%) = 26.2
Interpretasi. Simpangan baku sampel sebesar 6,45 menit dengan koefisien variasi sekitar 26,2%. Variasi data tergolong sedang cenderung tinggi. Sebagian besar data mengumpul pada 18-30 menit, sehingga variasi tinggi terutama disebabkan oleh outlier 45 menit.
x2 <- x[x != 45]
c(sd_dengan_outlier = sd(x), sd_tanpa_outlier = sd(x2))
## sd_dengan_outlier sd_tanpa_outlier
## 6.445375 3.231031
Karena modus tidak tunggal, digunakan koefisien Pearson kedua (berbasis median):
\[Sk = \frac{3(\bar{x} - Me)}{s}\]
sk_pearson <- 3 * (mean(x) - median(x)) / sd(x)
sk_pearson
## [1] 0.7447201
# Verifikasi dengan fungsi skewness() di R
library(moments)
skewness(x) # koefisien momen (g1)
## [1] 2.212573
library(e1071)
skewness(x) # e1071: default type = 3
## [1] 1.995046
skewness(x, type = 2) # tipe 2 (sering di SPSS/SAS)
## [1] 2.466403
Interpretasi. Skewness Pearson bernilai sekitar
0,745 (positif), sehingga distribusi miring ke
kanan (positif): ekor memanjang ke arah nilai besar, dan mean
(24,6) > median (23). Fungsi skewness() pada R
menggunakan koefisien momen sehingga angkanya berbeda (sekitar 2,21 pada
paket moments, dan sekitar 2,00 pada e1071
tipe 3), tetapi arahnya sama-sama positif. Perbedaan
besaran terjadi karena rumus yang dipakai berbeda, dan keduanya
sama-sama dipengaruhi kuat oleh outlier 45 menit.
hist(x, breaks = seq(15, 50, by = 5), col = "#9ad0a5", border = "white",
main = "Histogram Menit Penggunaan EcoTrack",
xlab = "Menit per hari")
abline(v = c(mean(x), median(x)), col = c("red", "blue"), lwd = 2, lty = 2)
legend("topright", legend = c("Mean", "Median"),
col = c("red", "blue"), lty = 2, lwd = 2, bty = "n")
Berikut langkah-langkah (prosedur) jika EcoTrack memiliki data 100 pengguna:
Mean berkelompok:
\[\bar{x} = \frac{\sum f_i m_i}{\sum f_i}\]
Median berkelompok: tentukan kelas median, yaitu kelas yang memuat data ke-\(n/2 = 50\) berdasarkan frekuensi kumulatif. Kemudian:
\[Me = L + \left(\frac{n/2 - F}{f}\right) c\]
dengan \(L\) = tepi bawah kelas median, \(F\) = frekuensi kumulatif sebelum kelas median, \(f\) = frekuensi kelas median, \(c\) = panjang kelas.
Modus berkelompok: kelas modus adalah kelas dengan frekuensi terbesar. Kemudian:
\[Mo = L + \left(\frac{d_1}{d_1 + d_2}\right) c\]
dengan \(d_1\) = selisih frekuensi kelas modus dengan kelas sebelumnya, dan \(d_2\) = selisih frekuensi kelas modus dengan kelas sesudahnya.
Data di bawah ini hanya simulasi untuk memperlihatkan alur prosedur, bukan data asli.
set.seed(123)
y <- round(rnorm(100, mean = 25, sd = 6))
R <- max(y) - min(y)
k <- ceiling(1 + 3.322 * log10(length(y)))
c_kelas <- ceiling(R / k)
batas <- seq(min(y), by = c_kelas, length.out = k + 1)
kelas <- cut(y, breaks = batas, right = FALSE, include.lowest = TRUE)
tabel <- data.frame(table(kelas))
names(tabel) <- c("Kelas", "f")
tabel$Titik_Tengah <- batas[-(k + 1)] + (c_kelas - 1) / 2
tabel$F_Kum <- cumsum(tabel$f)
tabel$f_x_m <- tabel$f * tabel$Titik_Tengah
tabel
# Mean berkelompok
mean_kel <- sum(tabel$f_x_m) / sum(tabel$f)
# Median berkelompok
i_med <- which(tabel$F_Kum >= 50)[1]
L <- batas[i_med] - 0.5
Fk <- ifelse(i_med == 1, 0, tabel$F_Kum[i_med - 1])
med_kel <- L + ((50 - Fk) / tabel$f[i_med]) * c_kelas
# Modus berkelompok
i_mod <- which.max(tabel$f)
d1 <- tabel$f[i_mod] - ifelse(i_mod == 1, 0, tabel$f[i_mod - 1])
d2 <- tabel$f[i_mod] - ifelse(i_mod == k, 0, tabel$f[i_mod + 1])
mod_kel <- (batas[i_mod] - 0.5) + (d1 / (d1 + d2)) * c_kelas
c(Mean = mean_kel, Median = med_kel, Modus = mod_kel)
## Mean Median Modus
## 25.54000 25.39655 24.90000
Rata-rata penggunaan EcoTrack adalah 24,6 menit per hari dengan median 23 menit. Separuh pengguna di tengah berada pada rentang 21,5-25,5 menit (IQR = 4). Distribusi data miring ke kanan akibat satu pengguna ekstrem (45 menit) yang tergolong outlier, sehingga variasi data (SD = 6,45; CV = 26,2%) tergolong sedang cenderung tinggi. Untuk data seperti ini, median dan IQR lebih representatif daripada mean dan simpangan baku.