Pendahuluan

Dokumen ini berisi pengerjaan tiga latihan distribusi peluang menggunakan bahasa pemrograman R.

Petunjuk: Buka file ini menggunakan RStudio. Jalankan seluruh dokumen dengan menekan tombol Knit. Jika diminta memasang paket rmarkdown, pilih instal. Hasilnya akan menjadi dokumen HTML.

Latihan 1 — Distribusi Seragam Kontinu

Tujuan

Membangkitkan 10 bilangan acak dari distribusi seragam kontinu pada interval 0 sampai 10, kemudian mencari nilai minimum dan maksimum.

Kode R

# Membuat hasil acak dapat diulang
set.seed(123)

# Menghasilkan 10 bilangan acak antara 0 dan 10
data_acak <- runif(10, min = 0, max = 10)

# Menampilkan 10 bilangan acak
data_acak
##  [1] 2.875775 7.883051 4.089769 8.830174 9.404673 0.455565 5.281055 8.924190
##  [9] 5.514350 4.566147
# Mencari nilai terkecil dan terbesar
nilai_minimum <- min(data_acak)
nilai_maksimum <- max(data_acak)

# Menampilkan hasil
nilai_minimum
## [1] 0.455565
nilai_maksimum
## [1] 9.404673

Penjelasan

  • set.seed(123) membuat hasil bilangan acak tetap sama ketika dokumen dijalankan kembali.
  • runif(10, min = 0, max = 10) menghasilkan 10 bilangan acak pada interval 0 sampai 10.
  • min() mencari nilai terkecil.
  • max() mencari nilai terbesar.

Kesimpulan Latihan 1

Fungsi runif() dapat digunakan untuk menghasilkan bilangan acak dengan distribusi seragam kontinu. Fungsi min() dan max() digunakan untuk menemukan nilai terkecil dan terbesar dari data tersebut.

Latihan 2 — Pemilihan 3 Mahasiswa dari 10 Mahasiswa

Tujuan

Menghitung banyak kemungkinan kelompok yang dapat dibentuk dengan memilih 3 mahasiswa dari populasi 10 mahasiswa, kemudian menghitung peluang setiap kelompok jika semua kelompok memiliki peluang yang sama.

Kode R: Membuat populasi dan kombinasi

# Membuat populasi 10 mahasiswa
mahasiswa <- paste0("M", 1:10)

# Menampilkan daftar mahasiswa
mahasiswa
##  [1] "M1"  "M2"  "M3"  "M4"  "M5"  "M6"  "M7"  "M8"  "M9"  "M10"
# Membuat semua kombinasi yang terdiri dari 3 mahasiswa
kelompok <- combn(mahasiswa, 3)

# Menghitung jumlah kombinasi
jumlah_kelompok <- ncol(kelompok)

# Menampilkan jumlah kombinasi
jumlah_kelompok
## [1] 120

Penjelasan

  • paste0("M", 1:10) membuat nama mahasiswa M1 sampai M10.
  • combn(mahasiswa, 3) membuat semua kombinasi yang berisi 3 mahasiswa tanpa pengulangan dan tanpa memperhatikan urutan.
  • ncol(kelompok) menghitung jumlah kombinasi yang terbentuk.

Jumlah kombinasi secara teori adalah:

\[ \binom{10}{3} = \frac{10!}{3! (10-3)!} = 120 \]

Jadi, terdapat 120 kelompok yang mungkin.

Kode R: Menghitung peluang setiap kelompok

# Karena semua kelompok memiliki peluang sama
peluang_setiap_kelompok <- 1 / jumlah_kelompok

# Menampilkan peluang satu kelompok tertentu
peluang_setiap_kelompok
## [1] 0.008333333

Peluang setiap kelompok adalah:

\[ P(X=x) = \frac{1}{120} \approx 0.00833 \]

atau sekitar 0,833%.

Kode R: Menampilkan tabel kombinasi

# Mengubah seluruh kombinasi menjadi tabel
tabel_peluang <- data.frame(
  Kelompok = apply(kelompok, 2, paste, collapse = ", "),
  Peluang = rep(peluang_setiap_kelompok, jumlah_kelompok)
)

# Menampilkan 10 baris pertama
head(tabel_peluang, 10)
##       Kelompok     Peluang
## 1   M1, M2, M3 0.008333333
## 2   M1, M2, M4 0.008333333
## 3   M1, M2, M5 0.008333333
## 4   M1, M2, M6 0.008333333
## 5   M1, M2, M7 0.008333333
## 6   M1, M2, M8 0.008333333
## 7   M1, M2, M9 0.008333333
## 8  M1, M2, M10 0.008333333
## 9   M1, M3, M4 0.008333333
## 10  M1, M3, M5 0.008333333

Kode R: Simulasi pemilihan 10.000 kali

# Mengatur seed agar hasil simulasi dapat diulang
set.seed(123)

# Memilih nomor kelompok secara acak sebanyak 10.000 kali
simulasi <- sample(
  x = 1:jumlah_kelompok,
  size = 10000,
  replace = TRUE
)

# Menghitung frekuensi kemunculan setiap kelompok
frekuensi <- tabulate(simulasi, nbins = jumlah_kelompok)

# Menghitung peluang berdasarkan hasil simulasi
peluang_simulasi <- frekuensi / 10000

# Membuat tabel hasil simulasi
hasil_simulasi <- data.frame(
  Kelompok = tabel_peluang$Kelompok,
  Frekuensi = frekuensi,
  Peluang_Simulasi = peluang_simulasi
)

# Menampilkan 10 baris pertama
head(hasil_simulasi, 10)
##       Kelompok Frekuensi Peluang_Simulasi
## 1   M1, M2, M3        86           0.0086
## 2   M1, M2, M4        86           0.0086
## 3   M1, M2, M5        62           0.0062
## 4   M1, M2, M6        94           0.0094
## 5   M1, M2, M7        78           0.0078
## 6   M1, M2, M8        73           0.0073
## 7   M1, M2, M9        86           0.0086
## 8  M1, M2, M10        80           0.0080
## 9   M1, M3, M4        73           0.0073
## 10  M1, M3, M5        91           0.0091

Penjelasan simulasi

  • set.seed(123) membuat hasil simulasi dapat diulang.
  • sample() memilih nomor kelompok secara acak.
  • size = 10000 berarti simulasi dilakukan sebanyak 10.000 kali.
  • replace = TRUE berarti kelompok yang sama boleh terpilih lagi pada percobaan berikutnya.
  • tabulate() menghitung frekuensi setiap kelompok.
  • Frekuensi dibagi 10.000 untuk memperoleh peluang berdasarkan simulasi.

Catatan: Pada latihan ini, peubah acak \(X\) didefinisikan sebagai kelompok mahasiswa yang terpilih. Karena itu, setiap nilai \(X\) adalah salah satu dari 120 kelompok yang mungkin.

Kesimpulan Latihan 2

Pemilihan 3 mahasiswa dari 10 mahasiswa menghasilkan 120 kombinasi yang berbeda. Jika setiap kombinasi memiliki peluang yang sama, peluang terpilihnya satu kelompok tertentu adalah 1/120 atau sekitar 0,833%.

Latihan 3 — Simulasi Distribusi Seragam Kontinu dan Histogram

Tujuan

Membuat simulasi distribusi seragam kontinu pada interval 0 sampai 2 untuk ukuran sampel 50, 100, dan 1.000, kemudian membandingkan histogramnya.

Kode R: Menyiapkan simulasi

# Mengatur seed agar hasil dapat diulang
set.seed(123)

# Membuat tiga kumpulan data
data50 <- runif(50, min = 0, max = 2)
data100 <- runif(100, min = 0, max = 2)
data1000 <- runif(1000, min = 0, max = 2)

Histogram 50 sampel

hist(
  data50,
  main = "Histogram Distribusi Seragam - 50 Sampel",
  xlab = "Nilai X",
  ylab = "Kepadatan",
  breaks = 10,
  probability = TRUE,
  col = "skyblue",
  border = "white"
)

Histogram 100 sampel

hist(
  data100,
  main = "Histogram Distribusi Seragam - 100 Sampel",
  xlab = "Nilai X",
  ylab = "Kepadatan",
  breaks = 10,
  probability = TRUE,
  col = "lightgreen",
  border = "white"
)

Histogram 1.000 sampel

hist(
  data1000,
  main = "Histogram Distribusi Seragam - 1.000 Sampel",
  xlab = "Nilai X",
  ylab = "Kepadatan",
  breaks = 10,
  probability = TRUE,
  col = "orange",
  border = "white"
)

Penjelasan

  • runif() menghasilkan bilangan acak dari distribusi seragam kontinu.
  • 50, 100, dan 1000 menunjukkan banyaknya sampel.
  • hist() membuat histogram.
  • main memberikan judul grafik.
  • xlab dan ylab memberikan nama sumbu horizontal dan vertikal.
  • breaks = 10 meminta histogram dibagi menjadi sekitar 10 kelas.
  • probability = TRUE menampilkan skala kepadatan, bukan frekuensi.

Untuk distribusi seragam kontinu pada interval 0 sampai 2, fungsi kepadatan peluang teoritisnya adalah:

\[ f(x) = \begin{cases} \frac{1}{2}, & 0 \leq x \leq 2,\\ 0, & \text{untuk nilai lainnya}. \end{cases} \]

Kesimpulan Latihan 3

Ketiga histogram menunjukkan hasil simulasi distribusi seragam kontinu. Dengan jumlah sampel yang lebih besar, bentuk histogram umumnya semakin menggambarkan distribusi seragam. Namun, tinggi setiap batang tetap dapat berbeda karena data dihasilkan secara acak.

Kesimpulan Umum

Berdasarkan ketiga latihan, dapat disimpulkan bahwa R dapat digunakan untuk membangkitkan bilangan acak, menghitung kombinasi dan peluang, melakukan simulasi, serta membuat histogram. Fungsi yang digunakan antara lain runif(), min(), max(), combn(), sample(), dan hist().

Hasil simulasi dapat berubah jika bilangan awal acak tidak ditetapkan. Pada dokumen ini, set.seed(123) digunakan agar hasil dapat direproduksi.