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)
n
## [1] 15
sort(x)
## [1] 18 19 20 21 22 22 23 23 24 24 25 26 27 30 45
Perhitungan manual
Verifikasi R
rata2 <- mean(x)
med <- median(x)
tab <- table(x)
modus <- as.numeric(names(tab[tab == max(tab)]))
rata2
## [1] 24.6
med
## [1] 23
modus
## [1] 22 23 24
tab
## 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: Mean (24,6 menit) lebih besar dari median (23 menit). Selisih ini muncul karena adanya nilai ekstrem 45 yang menarik mean ke atas.
Perhitungan manual (data terurut: 18, 19, 20, 21, 22, 22, 23, 23, 24, 24, 25, 26, 27, 30, 45)
Verifikasi R
Q1 <- quantile(x, 0.25)
Q3 <- quantile(x, 0.75)
iqr <- IQR(x)
Q1
## 25%
## 21.5
Q3
## 75%
## 25.5
iqr
## [1] 4
batas_bawah <- Q1 - 1.5 * iqr
batas_atas <- Q3 + 1.5 * iqr
c(batas_bawah = unname(batas_bawah), batas_atas = unname(batas_atas))
## batas_bawah batas_atas
## 15.5 31.5
# Outlier
x[x < batas_bawah | x > batas_atas]
## [1] 45
boxplot(x, horizontal = TRUE, col = "lightgreen",
main = "Boxplot Menit Penggunaan EcoTrack",
xlab = "Menit per hari")
Interpretasi: IQR = 4 menit berarti 50% pengguna di bagian tengah memiliki durasi penggunaan yang berbeda hanya sekitar 4 menit (antara 21,5 dan 25,5 menit). Pola penggunaan bagian tengah data cukup seragam. Nilai 45 melewati batas atas 31,5 sehingga terdeteksi sebagai outlier.
Perhitungan manual (sampel, n − 1 = 14)
Verifikasi R
ragam <- var(x)
simpang <- sd(x)
cv <- simpang / mean(x) * 100
ragam
## [1] 41.54286
simpang
## [1] 6.445375
cv
## [1] 26.20071
Interpretasi: Koefisien variasi (CV) sekitar 26,2% sehingga variasi data tergolong sedang. Besarnya SD sebagian besar disebabkan oleh outlier 45. Jika outlier dikeluarkan, data menjadi jauh lebih homogen:
x_bersih <- x[x != 45]
c(mean = mean(x_bersih), sd = sd(x_bersih), CV = sd(x_bersih) / mean(x_bersih) * 100)
## mean sd CV
## 23.142857 3.231031 13.961244
Karena modus tidak tunggal, digunakan koefisien Pearson kedua:
\[Sk = \frac{3(\bar{x} - Md)}{s}\]
Perhitungan manual: Sk = 3(24,6 − 23) / 6,45 = 4,8 / 6,45 ≈ 0,745
Verifikasi R
sk_pearson2 <- 3 * (mean(x) - median(x)) / sd(x)
sk_pearson2
## [1] 0.7447201
# Pearson pertama (kurang cocok karena modus ganda)
(mean(x) - modus) / sd(x)
## [1] 0.40339004 0.24824002 0.09309001
Verifikasi dengan fungsi skewness()
# Skewness momen (g1) dihitung manual, setara moments::skewness()
d <- x - mean(x)
g1 <- (sum(d^3) / n) / (sum(d^2) / n)^1.5
g1
## [1] 2.212573
# Paket e1071 (jika terpasang), type 1, 2, dan 3
if (requireNamespace("e1071", quietly = TRUE)) {
library(e1071)
c(type1 = skewness(x, type = 1),
type2 = skewness(x, type = 2),
type3 = skewness(x, type = 3))
} else {
message("Paket e1071 belum terpasang. Jalankan install.packages('e1071').")
}
## type1 type2 type3
## 2.212573 2.466403 1.995046
Interpretasi: Koefisien Pearson bernilai positif (≈
0,745), demikian pula fungsi skewness() (nilainya berbeda
karena rumus dan type yang digunakan berbeda). Keduanya
menunjukkan distribusi miring ke kanan (positif). Ekor
distribusi memanjang ke nilai besar akibat pengguna dengan durasi 45
menit, sehingga mean tertarik ke atas melebihi median.
data.frame(
Statistik = c("Mean", "Median", "Modus", "Q1", "Q3", "IQR",
"Varians", "Std. Deviasi", "Skewness Pearson (2)"),
Nilai = c(round(mean(x), 2), median(x), paste(modus, collapse = ", "),
unname(quantile(x, .25)), unname(quantile(x, .75)), IQR(x),
round(var(x), 2), round(sd(x), 2),
round(3 * (mean(x) - median(x)) / sd(x), 3))
)