Contoh 1 : Menduga nilai data hilang

# Fungsi EM
emrancob <- function(ftn, x,yij,i, j, tol = 1e-9, max.iter = 100) {
  yold <- yij
  ynew <- ftn(x,yold,i,j)
  iter <- 1
  cat("At iteration 1 value of x is:", ynew, "\n")
  
  while ((abs(ynew-yold) > tol) && (iter < max.iter)) {
    yold <- ynew;
    ynew <- ftn(x,yold,i,j);
    iter <- iter + 1
    cat("At iteration", iter, "value of y is:", ynew, "\n")
  }
  
  if (abs(ynew-yold) > tol) {
    cat("Algorithm failed to converge\n")
    return(NULL)
  } else {
    cat("Algorithm converged\n")
    return(ynew)
  }
}

# Misal data hilang : y23
ftn <- function(x,yij,i,j){
  x <- matrix(c(10,15,17,22,23,yij),ncol=3,byrow=TRUE)
  mu <- mean(x)
  alfai <- mean(x[i,])- mu
  betaj <- mean(x[,j])- mu
  yij <- mu + alfai + betaj
  return(yij)
}

# Menduga nilai y23
emrancob(ftn, x,0,2,3, tol = 1e-4, max.iter = 100) #tetapkan nilai awal y23, misal = 0 
## At iteration 1 value of x is: 9 
## At iteration 2 value of y is: 15 
## At iteration 3 value of y is: 19 
## At iteration 4 value of y is: 21.66667 
## At iteration 5 value of y is: 23.44444 
## At iteration 6 value of y is: 24.62963 
## At iteration 7 value of y is: 25.41975 
## At iteration 8 value of y is: 25.9465 
## At iteration 9 value of y is: 26.29767 
## At iteration 10 value of y is: 26.53178 
## At iteration 11 value of y is: 26.68785 
## At iteration 12 value of y is: 26.7919 
## At iteration 13 value of y is: 26.86127 
## At iteration 14 value of y is: 26.90751 
## At iteration 15 value of y is: 26.93834 
## At iteration 16 value of y is: 26.95889 
## At iteration 17 value of y is: 26.9726 
## At iteration 18 value of y is: 26.98173 
## At iteration 19 value of y is: 26.98782 
## At iteration 20 value of y is: 26.99188 
## At iteration 21 value of y is: 26.99459 
## At iteration 22 value of y is: 26.99639 
## At iteration 23 value of y is: 26.99759 
## At iteration 24 value of y is: 26.9984 
## At iteration 25 value of y is: 26.99893 
## At iteration 26 value of y is: 26.99929 
## At iteration 27 value of y is: 26.99952 
## At iteration 28 value of y is: 26.99968 
## At iteration 29 value of y is: 26.99979 
## At iteration 30 value of y is: 26.99986 
## Algorithm converged
## [1] 26.99986

Diperoleh nilai dugaan y23 = 26.99986 = 27

Contoh 1 : Menduga data hilang dengan rumus Anstat

Yij = (rBj+tTi-G)/(r-1)(t-1)

Akan dicari y23, dengan data sama seperti sebelumnya

t  = 2
r  = 3
B3 = 17
T2 = 22 + 23
G  = 10 + 15 + 17 + 22 + 23 

# Menduga nilai y23
y23 = (r*B3 + t*T2 - G)/((r-1)*(t-1))
y23
## [1] 27

Diperoleh nilai dugaan y23 dengan rumus anstat = 27

Contoh 2 : Menduga data hilang (y12)

ftn <- function(x,yij,i,j){
  x <- matrix(c(12,yij,18,22,23,24),ncol=3,byrow=TRUE)
  mu <- mean(x)
  alfai <- mean(x[i,])- mu
  betaj <- mean(x[,j])- mu
  yij <- mu + alfai + betaj
  return(yij)
}

emrancob(ftn, x,16.5,1,2, tol = 1e-4, max.iter = 100) # tetapkan nilai awal y12, misal = 16.5
## At iteration 1 value of x is: 16 
## At iteration 2 value of y is: 15.66667 
## At iteration 3 value of y is: 15.44444 
## At iteration 4 value of y is: 15.2963 
## At iteration 5 value of y is: 15.19753 
## At iteration 6 value of y is: 15.13169 
## At iteration 7 value of y is: 15.08779 
## At iteration 8 value of y is: 15.05853 
## At iteration 9 value of y is: 15.03902 
## At iteration 10 value of y is: 15.02601 
## At iteration 11 value of y is: 15.01734 
## At iteration 12 value of y is: 15.01156 
## At iteration 13 value of y is: 15.00771 
## At iteration 14 value of y is: 15.00514 
## At iteration 15 value of y is: 15.00343 
## At iteration 16 value of y is: 15.00228 
## At iteration 17 value of y is: 15.00152 
## At iteration 18 value of y is: 15.00101 
## At iteration 19 value of y is: 15.00068 
## At iteration 20 value of y is: 15.00045 
## At iteration 21 value of y is: 15.0003 
## At iteration 22 value of y is: 15.0002 
## At iteration 23 value of y is: 15.00013 
## Algorithm converged
## [1] 15.00013

Contoh 3 : Pendugaan data sebaran multinomial

# pendugaan data tersembunyi (sebaran multinomial)
x3<- 18
x4<- 20
x5<- 34
x2d1<- 0
x2d2<- 0
theta0<- 2 #ambil theta0 sembarang
err<- 10
iterasi<- 1
while(err>10^-4){
  theta1<- (x2d1+x5)/(x2d1+x3+x4+x5)
  x1d2<- 125*(0.5/(0.5+0.25*theta1))
  x2d2<- 125*((0.25*theta1)/(0.5+0.25*theta1))
  err<- abs(theta1-theta0)
  theta0<- theta1
  x2d1<-x2d2
  iterasi<- iterasi + 1
}

x1d2   # x1
## [1] 95.17232
x2d2   # x2
## [1] 29.82768
theta1
## [1] 0.6268142
iterasi
## [1] 7