Data

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

Soal 1. Mean, Median, dan Modus

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.

Soal 2. Q1, Q3, dan IQR

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.

Soal 3. Varians dan Standar Deviasi

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

Soal 4. Koefisien Skewness Pearson

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")

Soal 5. Tabel Distribusi Frekuensi Berkelompok (n = 100)

Berikut langkah-langkah (prosedur) jika EcoTrack memiliki data 100 pengguna:

  1. Hitung rentang (range): \(R = X_{maks} - X_{min}\).
  2. Tentukan banyak kelas dengan aturan Sturges: \(k = 1 + 3{,}322 \log_{10} n = 1 + 3{,}322 \log_{10} 100 \approx 7{,}6\), dibulatkan menjadi 8 kelas.
  3. Hitung panjang kelas: \(c = R / k\), dibulatkan ke atas.
  4. Susun kelas mulai dari data minimum (batas bawah kelas pertama), lalu hitung frekuensi (\(f_i\)) tiap kelas dengan tally.
  5. Lengkapi tabel: titik tengah kelas \(m_i = \frac{BB + BA}{2}\), frekuensi kumulatif (\(F\)), dan \(f_i \cdot m_i\).

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.

(Opsional) Ilustrasi di R dengan data simulasi

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

Kesimpulan

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.