\name{nullDistDoublyTestedEdges} \alias{nullDistDoublyTestedEdges} \title{Null distribution of number of reciprocated, unreciprocated and missing edges in stochastic model.} \description{ Calculate the null distribution of the number of reciprocated, unreciprocated and missing edges in a stochastic model where each edge is tested twice. } \usage{ nullDistDoublyTestedEdges(deltaMax, n, pFP, pFN) } \arguments{ \item{deltaMax}{Integer. Distributions will be calculated for model parameter \emph{delta}\code{=0, 1, 2, ..., deltaMax}.} \item{n}{Integer. The parameter \emph{n} of the model.} \item{pFP}{Numeric. The parameter \emph{pFP} of the model.} \item{pFN}{Numeric. The parameter \emph{pFN} of the model.} } \value{ 3d array with dimensions \code{nMax+1} x \code{nMax+1} x \code{deltaMax+1} whose element \code{p[nr+1, nu+1, delta+1]} is the corresponding joint probability. \code{nMax+1} is calculated (probably too conservatively) by the function to make sure that no probability leaks out of the array. } \details{The model is described in the vignette \emph{Stochastic and systematic errors in PPI data, by looking at unreciprocated in- or out-edges} by W. Huber, T. Chiang and R. Gentleman. This function can be quite slow, its runtime grows quickly with \code{deltaMax} (and is roughly independent of \code{n}, \code{pFP}, \code{pFN}). The example below should take only a few seconds on a reasonable computer, though. } \author{Wolfgang Huber \url{http://www.ebi.ac.uk/huber}} \examples{ p = nullDistDoublyTestedEdges(32, 1000, pFP=0.001, pFN=0.15) if(interactive() && require("RColorBrewer")) for(k in 1:dim(p)[3]) { image(sqrt(p[,,k]), xlab=expression(N[rec]), ylab=expression(N[unrec]), main = expression(P(N[rec], N[unrec]~";"~ delta^"*", n, p[FP], p[FN])), x = 1:dim(p)[1], y = 1:dim(p)[2], col = colorRampPalette(brewer.pal(9, "GnBu"))(256)) text(35, 35, paste("delta", k, sep="=")) } } \keyword{manip}