x<-c(1,2,3,4,5,6,7) ni<-c(797,301,77,17,6,1,1) l0<--1000000 EMw<-function(n0,lambda0,x,ni){ test<-3 while (test!=10) { nall<-c(n0,ni) e0<-sum(nall)*exp(-lambda0) lambda.new<-sum(ni*x)/(e0+sum(ni)) lnew<--lambda.new*e0-lambda.new*sum(ni)+log(lambda.new)*sum(x*ni)-sum(ni*log(factorial(x))) if (abs(lambda.new-lambda0)<=10^(-6)) { test<-10} else { print(c(lnew-l0,lnew,lambda.new)) lambda0<-lambda.new n0<-e0 l0<-lnew } } return(list(lambda.new=lambda.new,n0=n0)) }