#This function takes delta, leta(:=log(1/lambda)),data, pos as arguments. #Computes log(likelihood) under null hypothesis and returns -log(likelihood). mloglik.null <- function(leta,delta,data,pos) { lambda<-1/exp(leta) ntumor<-nrow(data) nmark<-ncol(data) lik.null<-1 for(i in 1:ntumor){ #subtract informative maker cases newpos<-pos[data[i,]>=0] newdata<-data[i,data[i,]>=0] m<-length(newdata) if(m>=1){ if(newdata[1] == 1) lik.null<-lik.null*delta else lik.null<-lik.null*(1-delta) if(m>=2){ for(j in 1:(m-1)) { dist<-newpos[j+1]-newpos[j] if(newdata[j]==1){ if(newdata[j+1]==1) lik.null<-lik.null*(1-(1-delta)*(1-exp(-lambda*dist))) else lik.null<-lik.null*(1-delta)*(1-exp(-lambda*dist)) } else { if(newdata[j+1]==0) lik.null<-lik.null*(1-delta*(1-exp(-lambda*dist))) else lik.null<-lik.null*delta*(1-exp(-lambda*dist)) } } } } } return(-log(lik.null)) }