library(moments)

# ------------------------------------------------------------------------------
# DATA AWAL
# ------------------------------------------------------------------------------
ecotrack <- c(22, 25, 19, 30, 24, 21, 45, 23, 20, 26, 24, 22, 18, 27, 23)

# ------------------------------------------------------------------------------
# 1. UKURAN PEMUSATAN: MEAN, MEDIAN, MODUS
# ------------------------------------------------------------------------------
mean_val   <- mean(ecotrack)
median_val <- median(ecotrack)

# Fungsi kustom untuk mencari modus (bisa multimodal)
get_mode <- function(x) {
  u <- unique(x)
  tab <- tabulate(match(x, u))
  u[tab == max(tab)]
}
modus_val <- get_mode(ecotrack)

cat("--- NOMOR 1: UKURAN PEMUSATAN ---\n")
## --- NOMOR 1: UKURAN PEMUSATAN ---
cat("Mean   :", mean_val, "\n")
## Mean   : 24.6
cat("Median :", median_val, "\n")
## Median : 23
cat("Modus  :", sort(modus_val), "\n\n")
## Modus  : 22 23 24
# ------------------------------------------------------------------------------
# 2. UKURAN LETAK: KUARTIL & INTERQUARTILE RANGE (IQR)
# ------------------------------------------------------------------------------
# type = 6 disesuaikan dengan rumus manual pos = i*(n+1)/4
q1_val  <- quantile(ecotrack, probs = 0.25, type = 6)
q3_val  <- quantile(ecotrack, probs = 0.75, type = 6)
iqr_val <- IQR(ecotrack, type = 6)

cat("--- NOMOR 2: UKURAN LETAK ---\n")
## --- NOMOR 2: UKURAN LETAK ---
cat("Kuartil 1 (Q1) :", q1_val, "\n")
## Kuartil 1 (Q1) : 21
cat("Kuartil 3 (Q3) :", q3_val, "\n")
## Kuartil 3 (Q3) : 26
cat("IQR (Q3 - Q1)  :", iqr_val, "\n\n")
## IQR (Q3 - Q1)  : 5
# ------------------------------------------------------------------------------
# 3. UKURAN PENYEBARAN: VARIANS & STANDAR DEVIASI
# ------------------------------------------------------------------------------
var_val <- var(ecotrack)
sd_val  <- sd(ecotrack)

cat("--- NOMOR 3: UKURAN PENYEBARAN ---\n")
## --- NOMOR 3: UKURAN PENYEBARAN ---
cat("Varians Sampel         :", var_val, "\n")
## Varians Sampel         : 41.54286
cat("Standar Deviasi Sampel :", sd_val, "\n\n")
## Standar Deviasi Sampel : 6.445375
# ------------------------------------------------------------------------------
# 4. BENTUK DISTRIBUSI: PEARSON SKEWNESS & MOMENT SKEWNESS
# ------------------------------------------------------------------------------
# Koefisien Skewness Pearson Manual
skew_pearson <- 3 * (mean_val - median_val) / sd_val

# Skewness menggunakan fungsi moments::skewness()
skew_r_moments <- skewness(ecotrack)

cat("--- NOMOR 4: SKEWNESS & DISTRIBUSI ---\n")
## --- NOMOR 4: SKEWNESS & DISTRIBUSI ---
cat("Pearson Skewness (Manual R) :", skew_pearson, "\n")
## Pearson Skewness (Manual R) : 0.7447201
cat("Moments Skewness (Package)  :", skew_r_moments, "\n")
## Moments Skewness (Package)  : 2.212573
cat("Arah Kemencengan             : Menceng Kanan (Positif)\n")
## Arah Kemencengan             : Menceng Kanan (Positif)