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.
Membangkitkan 10 bilangan acak dari distribusi seragam kontinu pada interval 0 sampai 10, kemudian mencari nilai minimum dan maksimum.
# 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
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.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.
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.
# 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
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.
# 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%.
# 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
# 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
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.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.
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%.
Membuat simulasi distribusi seragam kontinu pada interval 0 sampai 2 untuk ukuran sampel 50, 100, dan 1.000, kemudian membandingkan histogramnya.
# 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)
hist(
data50,
main = "Histogram Distribusi Seragam - 50 Sampel",
xlab = "Nilai X",
ylab = "Kepadatan",
breaks = 10,
probability = TRUE,
col = "skyblue",
border = "white"
)
hist(
data100,
main = "Histogram Distribusi Seragam - 100 Sampel",
xlab = "Nilai X",
ylab = "Kepadatan",
breaks = 10,
probability = TRUE,
col = "lightgreen",
border = "white"
)
hist(
data1000,
main = "Histogram Distribusi Seragam - 1.000 Sampel",
xlab = "Nilai X",
ylab = "Kepadatan",
breaks = 10,
probability = TRUE,
col = "orange",
border = "white"
)
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} \]
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.
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.