#Data simulation
set.seed(1001)
mStudent
fStudent
totalStu
totalStu1
按照EM算法步骤,E-Step. 对hidden vairiable (z)进行估计,把男生和女生分成两类。
###################
#E-step:
###################
eStep.fn=function(data,flag, muB,sigmaB,muG,sigmaG){
listB = c()
listG = c()
numB=0
numG=0
for(i in 1:200){
testB
testG
pb=testB/(testB+testG)
pg=testG/(testB+testG)
if(pb>=pg){
numB=numB+1
listB[numB]=data[i]
}else{
numG=numG+1
listG[numG]=data[i]
}
}
if(flag==1){
return (listB)
}else
return (listG)
}
接着, M-Step: 对特定的男生类,或者女生类进行MLE估计
#log-likelihood function
set.seed(1001)
LL.fn
R = suppressWarnings(dnorm(data, mu, sigma))
-s