# R/ce.simnormal.MeanBIC.R In breakpoint: An R Package for Multiple Break-Point Detection via the Cross-Entropy Method

#### Defines functions ce.simnormal.MeanBIC

```ce.simnormal.MeanBIC <-
function(N,data,h,L0,L,M,Melite,eps,a,b){

#  v <- var(data[, 1])
#  if (N==0){
#     seql <- c(1, L)
#     LL.full <- loglikMeanNormal(seql, data, h)
#     BIC.value <- -2*LL.full + (N + 2)* log(L)
#     #       #AIC.val <- -2*LL.full + 4* (N + 1)
#     #       return(list(locis = c(1, (L + 1)), BIC.Val = BIC.val, LogLike = LL.full))
#     #       rm(LL.full, BIC.val)
#
#     #mBic.full <- mBIC(seql, data, 0, L, h)
#     return(list(loci = c(1, (L + 1)), BIC.Val = BIC.value, LogLike = LL.full))
#     rm(BIC.value, LL.full, seql)
v <- var(data[, 1])
if (N == 0){

LL.full <- loglik.MeanNormal(1, (L + 1), data, h, v)[[1]]
BIC.full <- BIC.MeanNormal(LL.full, 0, L)
return(list(loci = c(1, (L + 1)), BIC.Val = BIC.full, LogLike = LL.full))

} else {

########################Parameter initialization######################################################
new_para<-rbind(rep(L0+(L-L0)/2,N),rep(sqrt(L-L0)^2/12,N))
######################################################################################################
#   llVal <- c()
#   bic <- c()
k <- 0
repeat
{
k<-k+1
ch<-array(0,dim=c(M,N+2))
ch[,1]<-c(1)
ch[,N+2]<-c(L+1)
ch[,(2:(N+1))]<-apply(new_para,2,normrand,L0,L,M)
ch<-t(apply(ch,1,sort))

#     LL.full <- apply(ch, 1, loglikMeanNormal, data, h)
#     BIC.val <- -2*LL.full + (N + 2)* log(L)
LL.full <- apply(ch, 1, llhood.MeanNormal, data, v, h)
BIC.val <- apply(as.data.frame(LL.full), 1, BIC.MeanNormal, N, L)

ch <- cbind(ch, LL.full, BIC.val)
ch <- ch[order(ch[, (N + 4)], decreasing = FALSE), ]
melitesmpl<-ch[1:Melite,]
#     llVal[k] <- melitesmpl[1, (N + 3)]
#     bic[k] <- melitesmpl[1, (N + 4)]

new_par_n<-array(0,dim=c(2,N))
new_par_n[1,]<-apply(as.matrix(melitesmpl[,(2:(N+1))]),2,mean)
new_par_n[2,]<-apply(as.matrix(melitesmpl[,(2:(N+1))]),2,sd)

new_para[1,] <- a*new_par_n[1,] + (1-a)*new_para[1,]
new_para[2,] <- b*new_par_n[2,] + (1-b)*new_para[2,]