Raw File
poisregmixinit.r
poisregmix.init <- function(y, x, lambda = NULL, beta = NULL, k = 2){

x <- as.matrix(x)
n <- length(y)
p <- ncol(x)

w = cbind(y, x)
w = w[order(w[, 1]), ]

	w.bin = list()
	for(j in 1:k){
		w.bin[[j]] <- w[max(1,floor((j-1)*n/k)):ceiling(j*n/k),]
	}

	if(is.null(beta)){
	     beta.hyp = matrix(sapply(1:k, function(j) glm.fit(w.bin[[j]][,2:(p+1)],w.bin[[j]][,1],family=poisson())$coeff),ncol=k)
	     sd.hyp = apply(beta.hyp,1,sd)
		beta = matrix(0, p, k)
			for(j in 1:k){
	  		beta[,j] = rnorm(p,mean=as.vector(beta.hyp[,j]),sd=sd.hyp) 
			}
	}
	else k=ncol(beta)

    if (is.null(lambda)) {
        lambda = runif(k)
        lambda = lambda/sum(lambda)
    }
    else k = length(lambda)

list(lambda=lambda, beta=beta, k=k)


}
back to top