[R] Confidence Band for empirical distribution function

kjetil brinchmann halvorsen kjetil at entelnet.bo
Mon Jul 21 23:23:14 CEST 2003


On 21 Jul 2003 at 15:42, Leif.Boysen wrote:

Here are some functions doing this using the package stepfun:

ecdf.ksCI <- function(x, main = NULL, sub = NULL,
                      xlab = deparse(substitute(x)), ...)
{
    require(stepfun)
    xlab
    if(is.null(main))
        main <- paste("ecdf(",deparse(substitute(x)),") + 95% 
K.S.bands",
                      sep="")
    n <- length(x)
    if(is.null(sub))
        sub <- paste("n = ", n)
    ec <- ecdf(x)
    xx <- get("x", envir=environment(ec))# = sort(x)
    yy <- get("y", envir=environment(ec))
    D <- approx.ksD(n)
    yyu <- pmin(yy+D, 1)
    yyl <- pmax(yy-D, 0)
    ecu <- stepfun(xx, c(yyu, 1) )
    ecl <- stepfun(xx, c(yyl, yyl[n]) )

    ## Plots -- all calling  plot.stepfun

    plot(ec, main = main, sub = sub, xlab = xlab, ...)
    plot(ecu, add=TRUE, verticals=TRUE, do.points=FALSE,
         col.hor="red" , col.vert="red", ...)
    plot(ecl, add=TRUE, verticals=TRUE, do.points=FALSE,
         col.hor="red", col.vert="red", ...)
}


approx.ksD <- function(n)
{
    ## approximations for the critical level for Kolmogorov-Smirnov
    ## statistic D,
    ## for confidence level 0.95. Taken from Bickel & Doksum, table 
IX,
    ## p.483
    ## and Lienert G.A.(1975) who attributes to Miller,L.H.(1956), 
JASA
    ifelse(n > 80,
           1.358 /( sqrt(n) + .12 + .11/sqrt(n)),##Bickel&Doksum, 
table
                                                 ##IX,p.483

           splinefun(c(1:9, 10, 15, 10 * 2:8),# from Lienert
                     c(.975,   .84189, .70760, .62394, .56328,# 1:5
                       .51926, .48342, .45427, .43001, .40925,# 6:10
                       .33760, .29408, .24170, .21012,# 15,20,30,40
                       .18841, .17231, .15975, .14960)) (n))
}


\name{ecdf.ksCI}
\alias{ecdf.ksCI}

\title{ Plotting the empirical distribution function together with 
confidence
        curves. }
\description{ Plots the empirical distribution function for one-
dimensional
        data, together with upper and lower confidence curves. Always 
uses 
        pointwise confidence level of 95\%.
 
}
\usage{
ecdf.ksCI(x, main=NULL, sub=NULL, xlab = deparse(substitute(x)), ...)
}
%- maybe also `usage' for other objects documented here.
\arguments{
  \item{x}{ \code{x} numerical vector of observations.  }
  \item{\dots}{ \code{\dots} arguments given to 
\code{\link{plot.stepfun}}.}
}
\details{
  Uses the \code{\link{stepfun}} package. 
}
\value{
 Nothing. Used for its side effect, to produce a plot.
}
\references{ Peter J. Bickel & Kjell A. Doksum: Mathematical 
Statistics, Basic Ideas and Selected
      Topics. Holden-Day, 1977. }
\author{ Kjetil Halvorsen }




\seealso{ \code{\link{ecdf}} and \code{\link{plot.stepfun}} in 
package
          \code{\link{stepfun}}. }

\examples{
ecdf.ksCI( rchisq(50,3) )
}
\keyword{ hplot }
\keyword{nonparametric}


Kjetil Halvorsen



> Hi,
> 
> I was trying to draw an empirical distribution function with uniform
> confidence bands. So I tried to find a way to calculate values of the
> Kolmogorov-Smirnov Distribution but failed.
> I guess it must be hidden somewhere (since the ks-test is implemented),
> but I was unable to find it. 
> 
> Is there any way to do this?
> 
> Thanks
> 
> Leif Boysen
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://www.stat.math.ethz.ch/mailman/listinfo/r-help




More information about the R-help mailing list