# Memasukkan data ke dalam vektor bernama 'data'
data <- c(22, 25, 19, 30, 24, 21, 45, 23, 20, 26, 24, 22, 18, 27, 23)
# Menghitung banyaknya data (n)
n <- length(data)
# Menampilkan data dan jumlahnya
data
## [1] 22 25 19 30 24 21 45 23 20 26 24 22 18 27 23
n
## [1] 15
1.1 Mean
# Mean = jumlah seluruh data dibagi banyak data
rata_rata <- sum(data) / n
rata_rata
## [1] 24.6
1.2 Median
# Median = nilai tengah setelah data diurutkan
# n = 15 (ganjil), maka median adalah data ke-(n+1)/2 = data ke-8
data_urut <- sort(data) # mengurutkan data dari kecil ke besar
data_urut # menampilkan data yang sudah urut
## [1] 18 19 20 21 22 22 23 23 24 24 25 26 27 30 45
posisi_median <- (n + 1) / 2
median_data <- data_urut[posisi_median]
median_data
## [1] 23
1.3 Modus
# Modus = nilai yang paling sering muncul
frekuensi <- table(data) # membuat tabel frekuensi tiap nilai
frekuensi
## data
## 18 19 20 21 22 23 24 25 26 27 30 45
## 1 1 1 1 2 2 2 1 1 1 1 1
# Mengambil nilai yang frekuensinya sama dengan frekuensi terbesar
modus <- as.numeric(names(frekuensi)[frekuensi == max(frekuensi)])
modus
## [1] 22 23 24
# Fungsi untuk menghitung kuartil dengan rumus posisi Qi = i(n+1)/4
kuartil <- function(x, i) {
x <- sort(x) # data harus diurutkan dulu
n <- length(x)
posisi <- i * (n + 1) / 4 # rumus posisi kuartil
bawah <- floor(posisi) # pembulatan ke bawah
atas <- ceiling(posisi) # pembulatan ke atas
# Jika posisi bilangan bulat, hasilnya langsung x[posisi].
# Jika berkoma, dilakukan interpolasi antara dua data terdekat.
x[bawah] + (posisi - bawah) * (x[atas] - x[bawah])
}
Q1 <- kuartil(data, 1)
Q3 <- kuartil(data, 3)
Q1
## [1] 21
Q3
## [1] 26
IQR (Interquartile Range)
# IQR = Q3 - Q1
IQR_data <- Q3 - Q1
IQR_data
## [1] 5
3.1 Varians
# Varians sampel = jumlah kuadrat selisih data dengan mean, dibagi (n-1)
selisih_kuadrat <- (data - rata_rata)^2 # (xi - mean)^2 untuk tiap data
varians <- sum(selisih_kuadrat) / (n - 1)
varians
## [1] 41.54286
3.2 Standar Deviasi
# Standar deviasi = akar dari varians
standar_deviasi <- sqrt(varians)
standar_deviasi
## [1] 6.445375
# Pearson Skewness = 3 x (Mean - Median) / SD
skewness <- 3 * (rata_rata - median_data) / standar_deviasi
skewness
## [1] 0.7447201
# Membuat tabel ringkasan semua hasil
hasil <- data.frame(
Statistik = c("Mean", "Median", "Modus", "Q1", "Q3", "IQR",
"Varians", "Standar Deviasi", "Pearson Skewness"),
Nilai = c(rata_rata,
median_data,
paste(modus, collapse = ", "), # modus bisa lebih dari satu
Q1, Q3, IQR_data,
round(varians, 4),
round(standar_deviasi, 4),
round(skewness, 4))
)
hasil
## Statistik Nilai
## 1 Mean 24.6
## 2 Median 23
## 3 Modus 22, 23, 24
## 4 Q1 21
## 5 Q3 26
## 6 IQR 5
## 7 Varians 41.5429
## 8 Standar Deviasi 6.4454
## 9 Pearson Skewness 0.7447