# data
H <- c(5, 9, 8, 4, 7)
T <- c(5, 1, 2, 6, 3)
N <- H + T
theta_A <- 0.8
theta_B <- 0.3
tol <- 0.0001
result <- data.frame(
iter = integer(),
theta_A = numeric(),
theta_B = numeric()
)
# iterasi maksimum
max_iter <- 100
# iterasi EM
for(i in 1:max_iter){
old_A <- theta_A
old_B <- theta_B
# e-step
prob_koinA <- dbinom(H, size = N, prob = theta_A)
prob_koinB <- dbinom(H, size = N, prob = theta_B)
gamma_A <- prob_koinA / (prob_koinA + prob_koinB)
gamma_B <- prob_koinB / (prob_koinA + prob_koinB)
# m-step
theta_A_new <- sum(gamma_A * H) / sum(gamma_A * N)
theta_B_new <- sum(gamma_B * H) / sum(gamma_B * N)
# Menyimpan hasil iterasi
result <- rbind(
result,
data.frame(
iter = i,
theta_A = theta_A_new,
theta_B = theta_B_new
)
)
perubahan <- sqrt((theta_A_new - old_A)^2 + (theta_B_new - old_B)^2)
theta_A <- theta_A_new
theta_B <- theta_B_new
if(perubahan < tol){
break
}
}
result
## iter theta_A theta_B
## 1 1 0.7787091 0.4520490
## 2 2 0.7882281 0.4923334
## 3 3 0.7931977 0.5083972
## 4 4 0.7953350 0.5149843
## 5 5 0.7962079 0.5176929
## 6 6 0.7965578 0.5188065
## 7 7 0.7966972 0.5192641
## 8 8 0.7967525 0.5194521
## 9 9 0.7967745 0.5195293
theta_A_new
## [1] 0.7967745
theta_B_new
## [1] 0.5195293
i
## [1] 9
Hasil estimasi akhir menunjukkan bahwa parameter koin A berada pada sekitar 0.79, sedangkan parameter koin B berada pada sekitar 0.52.
Nilai probabilitas koin A yang mendekati 0.79 menunjukkan bahwa hasil estimasi model, koin A memiliki kecenderungan lebih besar untuk menghasilkan Head dibandingkan Tail. Karena nilainya cukup jauh di atas 0.5, koin A dapat dikatakan condong ke arah Head. Sementara itu, parameter koin B yang bernilai sekitar 0.52 menunjukkan bahwa koin B relatif lebih seimbang karena probabilitas munculnya Head dan Tail hampir sama dibandingkan nilai awal 0.3, perubahan yang cukup besar pada parameter koin B selama iterasi EM. Hal ini mengindikasikan bahwa asumsi awal parameter koin B kurang sesuai dengan pola data sehingga algoritma melakukan penyesuaian hingga mencapai estimasi yang lebih stabil.
Sebaliknya, parameter koin A tidak mengalami perubahan yang terlalu besar dari nilai awal 0.8 menjadi sekitar 0.79. Ini menunjukkan bahwa nilai awal parameter koin A sudah cukup dekat dengan hasil estimasi akhir.
Algoritma EM mencapai kondisi konvergen pada iterasi ke-9, yang berarti perubahan parameter antar iterasi sudah sangat kecil. Secara keseluruhan, model mengindikasikan adanya dua karakteristik probabilitas yang berbeda dalam data, yaitu satu distribusi yang lebih condong menghasilkan Head dan satu distribusi yang relatif lebih seimbang.