# percentile.exact: Estimate of Xp and Exact Confidence Limits for... In STAND: Statistical Analysis of Non-Detects

## Description

Calculate estimate of Xp the 100*p percentile of the normal/lognormal distribution, and the lower and upper 100*γ% exact confidence limits. The resulting interval (Xp.LCL,Xp.UCL) is an approximate 100*(2γ - 1) percent confidence interval for Xp the 100*p percentile. This function should only be used for complete samples.

## Usage

 `1` ```percentile.exact(x, p = 0.95, gam = 0.95,logx=TRUE,wpnt=FALSE) ```

## Arguments

 `x` vector of positive data values `p` probability for Xp the 100pth percentile. Default is 0.95 `gam` one-sided confidence level γ. Default 0.95 `logx` If `TRUE`, sample is from lognormal, else normal. Default is `TRUE` `wpnt` if `TRUE`, show warning from pnt. Default is FALSE

## Details

A point estimate of Xp, the 100pth percentile of a normal/lognormal distribution is calculated. Exact confidence limits for Xp are calculated using the quantile function of the non-central t distribution. The exact UCL is m + K*s, where m is the sample mean, s is the sample standard deviation, and the K factor depends on n, p, and γ. The exact LCL is m + K'*s. The local function `kf` calculates K and K' using the quantile function of the non-central t distribution `qt`.

The null hypothesis Ho: Xp ≥ Lp is rejected at the α = (1- γ ) significance level if the 100γ\% UCL for Xp is less than the specified limit Lp (indicating the exposure profile is acceptable).

## Value

A LIST with components:

 `Xp` estimate of the pth percentile of the distribution `Xpe.LCL` 100*γ% exact lower confidence limit for Xp `Xpe.UCL` 100*γ% exact upper confidence limit for Xp `p` probability for Xp the 100pth percentile. Default 0.95 `gam` one-sided confidence level γ. Default is 0.95 `Logx` If `TRUE`, sample is from lognormal, else normal. Default is TRUE `n` sample size `Ku` the K factor used to calculate the exact UCL `Kl` the K' factor used to calculate the exact LCL

## Note

The UCL is also referred to as an upper tolerance limit, i.e., if `p` = 0.95 and γ = 0.99 then Xpe.UCL is the exact UTL 95% - 99%.

E. L. Frome

## References

Burrows, G. L. (1963), "Statistical Tolerance Limits - What are They," Applied Statistics, 12, 133-144.

Johnson, N. L. and B. L. Welch (1940), "Application of the Non-Central t-Distribution," Biometrika, 31(3/4), 362-389.

Lyles R. H. and L. L. Kupper (1996), "On Strategies for Comparing Occupational Exposure Data to Limits," American Industrial Hygiene Association Journal, 57:6-15.

Tuggle, R. M. (1982), "Assessment of Occupational Exposure Using One-Sided Tolerance Limits," American Industrial Hygiene Association Journal, 43, 338-346.

Frome, E. L. and Wambach, P. F. (2005), "Statistical Methods and Software for the Analysis of Occupational Exposure Data with Non-Detectable Values," ORNL/TM-2005/52,Oak Ridge National Laboratory, Oak Ridge, TN 37830. Available at: http://www.csm.ornl.gov/esh/aoed/ORNLTM2005-52.pdf

Ignacio, J. S. and W. H. Bullock (2006), A Strategy for Assesing and Managing Occupational Exposures, Third Edition, AIHA Press, Fairfax, VA.

Mulhausen, J. R. and J. Damiano (1998), A Strategy for Assessing and Managing Occupational Exposures, Second Edition, AIHA Press, Fairfax, VA.

Help files for `percentile.ml`, `efraction.exact`, `aihand`
 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37``` ```# EXAMPLE 1 # calculate 95th percentile and exact CLs for Example data # Appendix Mulhausen and Damiano (1998) data(aihand) x <- aihand\$x ; det <- rep(1,length(x)) aiha <- data.frame(x,det) # complete data unlist(percentile.exact(x,gam=0.95,p=0.95) )[1:5] # exact CLs unlist(percentile.ml(aiha,gam=0.95,p=0.95)) # ML CLs # EXAMPLE 2 # Ignacio and Bullock (2006) Mulhausen and Damiano (1998) # Calculate TABLE VII.3 (page 272) Factor for One-Sided Tolerance # Limits for Normal Distribution (Abridged Version) # Same as Table III Burrows(1963) Panel 3 Page 138 nn <- c(seq(3,25),seq(30,50,5)) pv <-c(0.75,0.9,0.95,0.99,0.999) tab <- matrix(0,length(nn),length(pv)) for( k in (1:length(nn) ) ){ xx <- seq(1,nn[k]) for(j in (1:length(pv))) { tab[k,j ]<- percentile.exact(xx,pv[j],gam=0.95,FALSE)\$Ku }} dimnames(tab)<-(list(nn,pv)) ; rm(nn,pv,xx) round(tab,3) # # EXAMPLE 3 # Calculate TABLE I One Sided Tolerance Factor K' # Tuggle(1982) Page 339 (Abridged Version) nn <- c(seq(3,20),50,50000000) pv <-c(0.9,0.95,0.99) tab <- matrix(0,length(nn),length(pv)) for( k in (1:length(nn) ) ){ xx <- seq(1,nn[k]) for(j in (1:length(pv))) { tab[k,j ]<- percentile.exact(xx,pv[j],gam=0.95,FALSE)\$Kl }} dimnames(tab)<-(list(nn,pv)) ; rm(nn,pv,xx) round(tab,3) ```