lemparan <- c(
"HTTTHHTHTH",
"HHHHTHHHHH",
"HTHHHHHTHH",
"HTTTTHTTHT",
"THHHTHHHTH"
)
count_H <- function(x) sum(strsplit(x, "")[[1]] == "H")
count_T <- function(x) sum(strsplit(x, "")[[1]] == "T")
H <- sapply(lemparan, count_H)
T <- sapply(lemparan, count_T)
n <- H + T
data.frame(lemparan, H, T, n)
## lemparan H T n
## HTTTHHTHTH HTTTHHTHTH 5 5 10
## HHHHTHHHHH HHHHTHHHHH 9 1 10
## HTHHHHHTHH HTHHHHHTHH 8 2 10
## HTTTTHTTHT HTTTTHTTHT 3 7 10
## THHHTHHHTH THHHTHHHTH 7 3 10
Interpretasi: Berdasarkan hasil pengamatan, terlihat bahwa setiap set lemparan memiliki karakteristik jumlah head dan tail yang berbeda. Beberapa set menunjukkan dominasi head sehingga cenderung berasal dari koin dengan probabilitas head yang lebih tinggi, sedangkan set lain menunjukkan dominasi tail yang mengindikasikan probabilitas head yang lebih rendah. Selain itu, terdapat juga set dengan jumlah head dan tail yang seimbang sehingga sulit untuk langsung menentukan asal koinnya. Pola ini mendukung asumsi bahwa data berasal dari campuran dua koin dengan parameter probabilitas yang berbeda.
theta_A <- 0.6
theta_B <- 0.4
theta_A
## [1] 0.6
theta_B
## [1] 0.4
Interpretasi: Nilai parameter awal yang digunakan adalah θ_A = 0.6 dan θ_B = 0.4. Hal ini menunjukkan bahwa koin A diasumsikan memiliki peluang lebih besar dalam menghasilkan head dibandingkan dengan koin B. Parameter ini digunakan sebagai langkah awal dalam proses estimasi menggunakan algoritma EM dan akan diperbarui secara iteratif hingga mencapai konvergensi.
P_A <- dbinom(H, size = n, prob = theta_A)
P_B <- dbinom(H, size = n, prob = theta_B)
data.frame(lemparan, H, P_A, P_B)
## lemparan H P_A P_B
## HTTTHHTHTH HTTTHHTHTH 5 0.20065812 0.200658125
## HHHHTHHHHH HHHHTHHHHH 9 0.04031078 0.001572864
## HTHHHHHTHH HTHHHHHTHH 8 0.12093235 0.010616832
## HTTTTHTTHT HTTTTHTTHT 3 0.04246733 0.214990848
## THHHTHHHTH THHHTHHHTH 7 0.21499085 0.042467328
Interpretasi: Berdasarkan hasil perhitungan probabilitas menggunakan distribusi binomial, terlihat bahwa setiap data memiliki tingkat kecocokan yang berbeda terhadap masing-masing koin. Data dengan jumlah head yang tinggi memiliki probabilitas lebih besar pada koin A, sedangkan data dengan jumlah head yang rendah lebih cocok dengan koin B. Sementara itu, data dengan jumlah head dan tail yang seimbang menghasilkan probabilitas yang hampir sama pada kedua koin sehingga sulit untuk diklasifikasikan secara langsung. Hasil ini menjadi dasar dalam tahap selanjutnya yaitu perhitungan probabilitas posterior pada E-step.
gamma_A <- P_A / (P_A + P_B)
gamma_B <- P_B / (P_A + P_B)
data.frame(lemparan, gamma_A, gamma_B)
## lemparan gamma_A gamma_B
## HTTTHHTHTH HTTTHHTHTH 0.5000000 0.50000000
## HHHHTHHHHH HHHHTHHHHH 0.9624468 0.03755318
## HTHHHHHTHH HTHHHHHTHH 0.9192938 0.08070618
## HTTTTHTTHT HTTTTHTTHT 0.1649485 0.83505155
## THHHTHHHTH THHHTHHHTH 0.8350515 0.16494845
Interpretasi: Berdasarkan hasil perhitungan pada tahap E-step, diperoleh probabilitas posterior yang menunjukkan kemungkinan setiap data berasal dari masing-masing koin. Data dengan jumlah head yang tinggi memiliki nilai γ_A yang mendekati 1 sehingga sangat mungkin berasal dari koin A, sedangkan data dengan jumlah head yang rendah memiliki nilai γ_B yang lebih besar sehingga cenderung berasal dari koin B. Untuk data dengan jumlah head dan tail yang seimbang, nilai probabilitasnya relatif sama sehingga tidak dapat ditentukan secara pasti. Hasil ini menunjukkan bahwa algoritma EM mampu mengklasifikasikan data secara probabilistik sebelum dilakukan pembaruan parameter pada tahap selanjutnya.
tabel <- data.frame(
"Hasil Lemparan" = lemparan,
"E" = paste(H, "H", T, "T"),
"Probabilitas koin A" = round(gamma_A, 2),
"Probabilitas koin B" = round(gamma_B, 2)
)
tabel
## Hasil.Lemparan E Probabilitas.koin.A Probabilitas.koin.B
## HTTTHHTHTH HTTTHHTHTH 5 H 5 T 0.50 0.50
## HHHHTHHHHH HHHHTHHHHH 9 H 1 T 0.96 0.04
## HTHHHHHTHH HTHHHHHTHH 8 H 2 T 0.92 0.08
## HTTTTHTTHT HTTTTHTTHT 3 H 7 T 0.16 0.84
## THHHTHHHTH THHHTHHHTH 7 H 3 T 0.84 0.16
Interpretasi: Berdasarkan nilai probabilitas koin A (γ_A), sebagian besar data memiliki kecenderungan berasal dari koin A, terutama data dengan jumlah head yang tinggi. Sementara itu, data dengan jumlah head yang rendah memiliki probabilitas kecil terhadap koin A sehingga lebih mungkin berasal dari koin B. Selain itu, terdapat data dengan nilai probabilitas yang seimbang, sehingga tidak dapat diklasifikasikan secara pasti. Hal ini menunjukkan bahwa pendekatan EM mampu memberikan pengelompokan data secara probabilistik berdasarkan karakteristik masing-masing pengamatan.
H_A <- gamma_A * H
H_B <- gamma_B * H
n_A <- gamma_A * n
n_B <- gamma_B * n
data.frame(lemparan, H_A, H_B, n_A, n_B)
## lemparan H_A H_B n_A n_B
## HTTTHHTHTH HTTTHHTHTH 2.5000000 2.5000000 5.000000 5.0000000
## HHHHTHHHHH HHHHTHHHHH 8.6620214 0.3379786 9.624468 0.3755318
## HTHHHHHTHH HTHHHHHTHH 7.3543506 0.6456494 9.192938 0.8070618
## HTTTTHTTHT HTTTTHTTHT 0.4948454 2.5051546 1.649485 8.3505155
## THHHTHHHTH THHHTHHHTH 5.8453608 1.1546392 8.350515 1.6494845
Interpretasi: Berdasarkan hasil estimasi jumlah head dan total lemparan untuk masing-masing koin, terlihat bahwa sebagian besar data memberikan kontribusi yang lebih besar terhadap koin A, terutama pada data dengan jumlah head yang tinggi. Sebaliknya, koin B hanya menerima kontribusi dominan dari data dengan jumlah tail yang lebih banyak. Proses ini menunjukkan bagaimana algoritma EM melakukan pembagian data secara probabilistik (soft assignment), yang kemudian digunakan untuk memperbarui parameter pada tahap berikutnya.
theta_A_new <- sum(H_A) / sum(n_A)
theta_B_new <- sum(H_B) / sum(n_B)
theta_A_new
## [1] 0.7350232
theta_B_new
## [1] 0.4414263
Interpretasi: Berdasarkan hasil pembaruan parameter, diperoleh nilai θ_A sebesar 0.7350 dan θ_B sebesar 0.4414. Hal ini menunjukkan bahwa koin A memiliki kecenderungan yang lebih kuat dalam menghasilkan head dibandingkan dengan koin B. Dibandingkan dengan nilai awal, terjadi peningkatan pada kedua parameter, terutama pada koin A, yang mengindikasikan bahwa sebagian besar data dengan jumlah head tinggi memberikan kontribusi yang signifikan terhadap estimasi parameter koin A. Proses ini menunjukkan bahwa algoritma EM secara iteratif mampu menyesuaikan parameter model agar lebih sesuai dengan pola data yang diamati.
theta_A <- theta_A_new
theta_B <- theta_B_new
P_A <- dbinom(H, size = n, prob = theta_A)
P_B <- dbinom(H, size = n, prob = theta_B)
gamma_A <- P_A / (P_A + P_B)
gamma_B <- P_B / (P_A + P_B)
data.frame(lemparan, gamma_A, gamma_B)
## lemparan gamma_A gamma_B
## HTTTHHTHTH HTTTHHTHTH 0.23518412 0.76481588
## HHHHTHHHHH HHHHTHHHHH 0.97902601 0.02097399
## HTHHHHHTHH HTHHHHHTHH 0.93006185 0.06993815
## HTTTTHTTHT HTTTTHTTHT 0.02435083 0.97564917
## THHHTHHHTH THHHTHHHTH 0.79117199 0.20882801
Interpretasi: Berdasarkan hasil iterasi selanjutnya pada tahap E-step, terlihat bahwa nilai probabilitas posterior semakin mendekati 0 atau 1. Hal ini menunjukkan bahwa model semakin yakin dalam mengelompokkan data ke dalam masing-masing koin. Data dengan jumlah head tinggi semakin kuat diklasifikasikan ke koin A, sedangkan data dengan jumlah head rendah semakin kuat diklasifikasikan ke koin B. Selain itu, data yang sebelumnya bersifat ambigu mulai condong ke salah satu koin. Kondisi ini menunjukkan bahwa algoritma EM telah mulai mencapai kestabilan dalam proses estimasi parameter.
Berdasarkan proses estimasi menggunakan algoritma EM, diperoleh bahwa data berasal dari dua koin dengan karakteristik berbeda, yaitu koin A yang memiliki kecenderungan kuat menghasilkan head dan koin B yang lebih condong ke tail. Melalui iterasi, parameter dan probabilitas posterior semakin stabil serta mampu mengelompokkan data dengan lebih jelas. Hal ini menunjukkan bahwa algoritma EM efektif dalam mengestimasi parameter dan mengidentifikasi pola tersembunyi dalam data.