# ======================================
# Algoritma EM untuk estimasi theta A B
# ======================================
# Data percobaan
H <- c(5,9,8,4,7)
T <- c(5,1,2,6,3)
# Parameter awal
theta_A <- 0.8
theta_B <- 0.3
# maksimum iterasi
max_iter <- 20
# menyimpan hasil
hasil <- data.frame(
Iterasi = integer(),
Theta_A = numeric(),
Theta_B = numeric()
)
for(iter in 1:max_iter){
# =================
# E-Step
# =================
prob_A <- theta_A^H * (1-theta_A)^T
prob_B <- theta_B^H * (1-theta_B)^T
wA <- prob_A/(prob_A+prob_B)
wB <- prob_B/(prob_A+prob_B)
# =================
# M-Step
# =================
H_A <- sum(wA*H)
T_A <- sum(wA*T)
H_B <- sum(wB*H)
T_B <- sum(wB*T)
theta_A_new <- H_A/(H_A+T_A)
theta_B_new <- H_B/(H_B+T_B)
hasil <- rbind(
hasil,
data.frame(
Iterasi = iter,
Theta_A = theta_A_new,
Theta_B = theta_B_new
)
)
# cek konvergensi
if(abs(theta_A_new-theta_A)<0.0001 &&
abs(theta_B_new-theta_B)<0.0001){
theta_A <- theta_A_new
theta_B <- theta_B_new
break
}
theta_A <- theta_A_new
theta_B <- theta_B_new
}
# hasil iterasi
hasil
## Iterasi 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
# parameter akhir
cat(
"Theta A akhir =",
theta_A,
"\n"
)
## Theta A akhir = 0.7967745
cat(
"Theta B akhir =",
theta_B,
"\n"
)
## Theta B akhir = 0.5195293
Berdasarkan hasil simulasi algoritma Expectation-Maximization (EM), parameter awal yang digunakan adalah θA = 0.8 dan θB = 0.3. Setelah dilakukan proses iterasi antara E-Step dan M-Step, diperoleh estimasi akhir:
Hasil tersebut menunjukkan bahwa algoritma EM berhasil melakukan pembaruan parameter berdasarkan pola data yang diamati. Nilai θA mengalami perubahan kecil dari nilai awal 0.8, sedangkan θB mengalami perubahan yang lebih besar dari 0.3 menjadi sekitar 0.52.
Perubahan ini terjadi karena pada tahap E-Step, setiap data diberikan bobot probabilitas apakah lebih mungkin berasal dari distribusi A atau distribusi B. Selanjutnya pada tahap M-Step, bobot tersebut digunakan untuk memperbarui estimasi parameter.
Meskipun nilai awal θA dan θB berbeda, algoritma tetap bergerak menuju nilai parameter yang lebih sesuai dengan data. Hal ini menunjukkan bahwa EM dapat menemukan estimasi parameter yang memaksimalkan likelihood data melalui proses iterasi.