Parameter Awal
theta_A = 0.6
theta_B = 0.5
Parameter percobaan
theta_A = 0.8
theta_B = 0.3
# Data 5 set percobaan
H <- c(5,9,8,4,7)
T <- c(5,1,2,6,3)
# Parameter awal baru
theta_A <- 0.8
theta_B <- 0.3
# Maksimum iterasi
max_iter <- 20
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)
# Estimasi jumlah H dan T
H_A <- sum(wA*H)
T_A <- sum(wA*T)
H_B <- sum(wB*H)
T_B <- sum(wB*T)
# M-Step
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){
break
}
theta_A <- theta_A_new
theta_B <- theta_B_new
}
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
cat("Theta A akhir =", theta_A_new,"\n")
## Theta A akhir = 0.7967745
cat("Theta B akhir =", theta_B_new,"\n")
## Theta B akhir = 0.5195293
Insight
Berdasarkan hasil simulasi, meskipun parameter awal diubah menjadi θA = 0,8 dan θB = 0,3, algoritma EM tetap bergerak menuju nilai parameter yang stabil setelah beberapa iterasi. Hal ini menunjukkan bahwa algoritma EM mampu memperbaiki estimasi awal melalui proses iteratif antara E-Step dan M-Step. Selain itu, hasil akhir tidak selalu sama dengan nilai awal karena algoritma berusaha mencari parameter yang memaksimalkan likelihood data yang diamati. Pemilihan parameter awal dapat memengaruhi kecepatan konvergensi dan dalam beberapa kasus dapat menyebabkan algoritma berhenti pada maksimum lokal yang berbeda. Oleh karena itu, pemilihan nilai awal yang baik dapat membantu memperoleh estimasi yang lebih cepat dan lebih stabil.