R/dtn.mix.R

Defines functions dtn.mix

Documented in dtn.mix

dtn.mix=function(t,df,mu.ncp, sd.ncp, log=FALSE, approximation=c('int2','saddlepoint','laplace','none'),...)
{
    approximation=match.arg(approximation)
    if(all(is.infinite(df))) return( dnorm(t, mu.ncp, sqrt(1+sd.ncp*sd.ncp), log=log) )
    if(approximation!='none' && approximation!='int2' ) df[is.infinite(df)]=500 
	
	if(approximation=='none' && all(df==round(df))) approximation='int2'
    
	scale.fact=sqrt(1+sd.ncp*sd.ncp)
	ncp=mu.ncp/scale.fact
	
	fname=paste('dt', switch(approximation, int2='.int2',saddlepoint='.sad',laplace='.lap', none=''), sep='')
	
	lst=list(x=t/scale.fact, df=df, ncp=ncp, log=log, ...)
	
	ans=do.call(fname, lst)
	if(isTRUE(log)) ans-log(scale.fact) else ans/scale.fact
}

Try the pi0 package in your browser

Any scripts or data that you put into this service are public.

pi0 documentation built on May 2, 2019, 4:47 p.m.