percentile.exact {STAND} | R Documentation |
Estimate of Xp and Exact Confidence Limits for Normal/Lognormal
Description
Calculate estimate of Xp the 100*p percentile of the
normal/lognormal distribution, and the lower and upper 100*\gamma
% exact
confidence limits. The resulting interval (Xp.LCL,Xp.UCL) is an
approximate 100*(2\gamma - 1)
percent confidence interval for
Xp the 100*p percentile. This function should only be used for complete samples.
Usage
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 |
logx |
If |
wpnt |
if |
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
\gamma
. 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 \ge Lp
is rejected at the \alpha = (1- \gamma )
significance level if the 100\gamma\%
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 |
|
Xpe.UCL |
|
p |
probability for Xp the 100pth percentile. Default 0.95 |
gam |
one-sided confidence level |
Logx |
If |
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 \gamma
= 0.99 then Xpe.UCL is the exact UTL 95% - 99%.
Author(s)
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.
See Also
Help files for percentile.ml
,
efraction.exact
, aihand
Examples
# 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)