Soal 1

Diketahui data dengan membangkitkan data dari vaeirabel random normal dengan mean = 10, standar deviasi = 5, dan n = 100.

Buat sintaks untuk menghitung banyak data yang bernilai >= 10 dan bernilai <= 10 (gunakan for dan if)!

# 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

Interpretasi Hasil

  • 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.

Soal 2

Buat sintaks untuk mencari nilai median (gunakan if dan else)!

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

Interpretasi Hasil

  • Karena jumlah data genap (n = 8), median dihitung sebagai rata-rata dari dua nilai tengah:
    • Nilai tengah ke-4 dan ke-5 adalah 5 dan 6.

    • Median = (5 + 6) / 2 = 5.5.

  • Median menunjukkan bahwa separuh data berada di bawah 5.5 dan separuhnya di atas.

Soal 3

Buat sintaks untuk mencari nilai kuantil (gunakan if dan else)!

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

Interpretasi Hasil Kuantil

  • 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.