# Bangkitkan data random normal
set.seed(123) # Supaya hasil konsisten
data <- rnorm(n = 100, mean = 10, sd = 5)
data
## [1] 7.1976218 8.8491126 17.7935416 10.3525420 10.6464387 18.5753249
## [7] 12.3045810 3.6746938 6.5657357 7.7716901 16.1204090 11.7990691
## [13] 12.0038573 10.5534136 7.2207943 18.9345657 12.4892524 0.1669142
## [19] 13.5067795 7.6360430 4.6608815 8.9101254 4.8699778 6.3555439
## [25] 6.8748037 1.5665334 14.1889352 10.7668656 4.3093153 16.2690746
## [31] 12.1323211 8.5246426 14.4756283 14.3906674 14.1079054 13.4432013
## [37] 12.7695883 9.6904414 8.4701867 8.0976450 6.5264651 8.9604136
## [43] 3.6730182 20.8447798 16.0398100 4.3844571 7.9855758 7.6667232
## [49] 13.8998256 9.5831547 11.2665926 9.8572662 9.7856477 16.8430114
## [55] 8.8711451 17.5823530 2.2562360 12.9230687 10.6192712 11.0797078
## [61] 11.8981974 7.4883827 8.3339631 4.9071231 4.6410439 11.5176432
## [67] 12.2410489 10.2650211 14.6113373 20.2504234 7.5448442 -1.5458444
## [73] 15.0286926 6.4539962 6.5599569 15.1278568 8.5761350 3.8964114
## [79] 10.9065174 9.3055432 10.0288209 11.9264020 8.1466998 13.2218827
## [85] 8.8975672 11.6589098 15.4841951 12.1759075 8.3703421 15.7440381
## [91] 14.9675193 12.7419848 11.1936587 6.8604696 16.8032622 6.9987021
## [97] 20.9366650 17.6630531 8.8214982 4.8678955
Bagian ini bertujuan untuk menghitung jumlah data yang bernilai lebih
besar dari atau sama dengan 10, dan yang bernilai kurang dari atau sama
dengan 10, menggunakan perulangan for dan percabangan
if. Ini digunakan untuk memahami distribusi data terhadap
nilai tengah (mean = 10).
# Bangkitkan data random normal
set.seed(123) # Supaya hasil konsisten
data <- rnorm(n = 100, mean = 10, sd = 5)
data
## [1] 7.1976218 8.8491126 17.7935416 10.3525420 10.6464387 18.5753249
## [7] 12.3045810 3.6746938 6.5657357 7.7716901 16.1204090 11.7990691
## [13] 12.0038573 10.5534136 7.2207943 18.9345657 12.4892524 0.1669142
## [19] 13.5067795 7.6360430 4.6608815 8.9101254 4.8699778 6.3555439
## [25] 6.8748037 1.5665334 14.1889352 10.7668656 4.3093153 16.2690746
## [31] 12.1323211 8.5246426 14.4756283 14.3906674 14.1079054 13.4432013
## [37] 12.7695883 9.6904414 8.4701867 8.0976450 6.5264651 8.9604136
## [43] 3.6730182 20.8447798 16.0398100 4.3844571 7.9855758 7.6667232
## [49] 13.8998256 9.5831547 11.2665926 9.8572662 9.7856477 16.8430114
## [55] 8.8711451 17.5823530 2.2562360 12.9230687 10.6192712 11.0797078
## [61] 11.8981974 7.4883827 8.3339631 4.9071231 4.6410439 11.5176432
## [67] 12.2410489 10.2650211 14.6113373 20.2504234 7.5448442 -1.5458444
## [73] 15.0286926 6.4539962 6.5599569 15.1278568 8.5761350 3.8964114
## [79] 10.9065174 9.3055432 10.0288209 11.9264020 8.1466998 13.2218827
## [85] 8.8975672 11.6589098 15.4841951 12.1759075 8.3703421 15.7440381
## [91] 14.9675193 12.7419848 11.1936587 6.8604696 16.8032622 6.9987021
## [97] 20.9366650 17.6630531 8.8214982 4.8678955
# Inisialisasi counter
jumlah_lebih_dari_10 <- 0
jumlah_kurang_dari_10 <- 0
for (i in 1:length(data)) {
if (data[i] >= 10) {
jumlah_lebih_dari_10 <- jumlah_lebih_dari_10 + 1
} else if (data[i] <= 10) {
jumlah_kurang_dari_10 <- jumlah_kurang_dari_10 + 1
}
}
cat("Jumlah data >= 10:", jumlah_lebih_dari_10, "\n")
## Jumlah data >= 10: 52
cat("Jumlah data <= 10:", jumlah_kurang_dari_10, "\n")
## Jumlah data <= 10: 48
Data yang dianalisis berjumlah 100, diambil dari distribusi normal dengan mean = 10 dan sd = 5.
Hasil perhitungan menunjukkan:
Jumlah data dengan nilai ≥ 10 adalah 52.
Jumlah data dengan nilai ≤ 10 adalah 48.
Karena distribusinya normal, hasil ini sesuai dengan ekspektasi bahwa sekitar separuh data berada di atas dan di bawah rata-rata.
fungsimedian = function(nilai) {
nilai_urut <- sort(nilai)
banyak_nilai <- length(nilai_urut)
if (banyak_nilai %% 2 == 1) {
# Jumlah ganjil
mid <- (banyak_nilai + 1) / 2
median <- nilai_urut[mid]
print(median)
}
else {
# Jumlah genap
mid1 <- banyak_nilai / 2
mid2 <- mid1 + 1
median <- (nilai_urut[mid1] + nilai_urut[mid2]) / 2
print(median)
}
}
Bagian ini berfungsi untuk menentukan nilai median dari suatu
kumpulan data numerik, dengan membedakan penanganan data berjumlah
ganjil dan genap menggunakan percabangan if dan
else. Ini berguna untuk memahami letak nilai tengah dalam
data.
nilai = c(3, 5, 2, 7, 6, 4, 8, 7)
fungsimedian(nilai)
## [1] 5.5
Nilai tengah ke-4 dan ke-5 adalah 5 dan 6.
Median = (5 + 6) / 2 = 5.5.
fungsikuantil <- function(nilai, k) {
nilai_urut <- sort(nilai)
n <- length(nilai_urut)
# Validasi nilai k (antara 0 dan 1)
if (k < 0 || k > 1) {
print("Nilai k harus antara 0 dan 1 (misalnya 0.25 untuk kuartil pertama)")
}
else {
posisi_kuantil <- k * (n + 1)
if (posisi_kuantil %% 1 == 0) {
kuantil <- nilai_urut[posisi_kuantil]
}
else {
bawah <- floor(posisi_kuantil)
atas <- ceiling(posisi_kuantil)
fraksi <- posisi_kuantil - bawah
kuantil <- (1 - fraksi) * nilai_urut[bawah] + fraksi * nilai_urut[atas]
}
print(kuantil)
}
}
Bagian ini digunakan untuk menghitung nilai kuantil dari suatu data,
berdasarkan nilai k yang menunjukkan persentase posisi
dalam distribusi (contoh: 0.25 untuk kuartil pertama). Fungsi ini
menangani posisi kuantil yang tidak bulat dengan interpolasi.
nilai <- c(3, 5, 2, 7, 6, 4, 8, 7)
fungsikuantil(nilai, 0.25) # Q1
## [1] 3.25
fungsikuantil(nilai, 0.5) # Median
## [1] 5.5
fungsikuantil(nilai, 0.75) # Q3
## [1] 7
Kuartil 1 (Q1) = 3.25. Artinya, 25% data berada di bawah atau sama dengan 3.25.
Kuartil 2 (Median) = 5.5. Sama seperti hasil median sebelumnya.
Kuartil 3 (Q3) = 7. Artinya, 75% data berada di bawah atau sama dengan 7.
Kuantil membantu mengetahui sebaran data pada berbagai titik distribusi.