[R] Chebyshev Inequality MVUE
David Winsemius
dwinsemius at comcast.net
Sun Jul 10 21:14:36 CEST 2011
On Jul 10, 2011, at 2:49 PM, (Ted Harding) wrote:
> On 10-Jul-11 16:27:04, Durant, James T. (ATSDR/DTEM/PRMSB) wrote:
>> Hello,
>> I was interested in trying to write an R script to calculate a
>> UCL for a lognormal distribution using the Chebyshev Inequality
>> -- MVUE Approach (based on EPA’s guidance found in
>> http://www.epa.gov/oswer/riskassessment/pdf/ucl.pdf).
>> This looks like it should be straight forward, but I am need to
>> calculate an MVUE for the population mean and an MVUE for the
>> population variance, which requires a value (g_n) from a table A7,
>> found in Aitchison and Brown (1969): The lognormal distribution.
>> I have looked across the RSiteSearch and can not seem to find a
>> function that will give me g_n or the MVUE for mean and variance
>> of lognormal distribution.
>>
>> Is there an R function that will give me g_n or will calculate
>> an MVUE for the population mean and variance for the lognormal
>> distribution?
>>
>> VR
>> Jim
>> James T. Durant, MSPH CIH
>> Emergency Response Coordinator
>> US Agency for Toxic Substances and Disease Registry
>> Atlanta, GA 30341
>> 770-378-1695
>
> Some quick comments. I will try to repond more fully later.
>
> 1. The Chebyshev inequality is usually very conservative.
> As a simple example, consider X with a negative exponential
> distribution with density exp(x), so that the population
> mean is 1 and the population variance is also 1.
>
> Then, for a factor K, Chebyshev says that
>
> Prob(|X-1] > K*1) < 1/(K^2).
>
> This is only informative if K>1. So (e.g.) take K=2. Then the
> Chebyshev
> result is that this Prob < 1/4. HOwever, because X is positive, the
> event in question is X > 1 + 2 = 3 so Prob is exp(-3) = 0.0498 < 1/20.
>
> The reference you cite suggests ("Exhibit 5") applying the method to
> log-transformed data, which for lognormal data would be normally
> distributed. So apply Chebyshev to N(0,1) (mean=0, var=1). Then
>
> Prob(|X-0| > K*1) < 1/(K^2) as before.
>
> Now take K=2 again (i.e. outside +/- 2 SDs, so Prob approx=0.05).
> But Chebyshev still says "Prob < 1/4 = 0.25".
>
> So, as a first comment, I am seriously wondering about the wisdom
> of basing an approach on Chebyshev's inequality. Note also the
> comments in your reference at the end of that section (bottom of
> page 12) headed "Caveats about the Chebyshev method.", which is
> essentially a warning on similar lines to the above.
>
> 2. The function in the reference you cite is not "g_n" but "psi_n",
> and the Table cited from Aitchison and Brown is not A7 but A2.
>
> On page 45 of Aitchison and Brown (1969), section 5.41 "The Method
> of Maximum Likelihood", the function psi_n is defined (Eqn 5.38)
> so as to be applicable to the sufficient statistics mean(log(X))
> and var(log(X)) to yield unbiased estimators of the population
> mean of X and the population variance of X (Eqns (5.40) and (5.42)).
>
> psi_n is defined as an infinite series which, according to A&B
> (page 46) "converges only slowly", and they exhibit a finite-form
> asymptotic approximation to it (Eqn (5.43)) which is accurate
> asyn=mptotically to O(1/(n^3)). This fairly simple expression
> would be easy to define as a function in R:
>
> psi <- function(t,n){
> exp(t)*(1 - t*(t+1)/n + (t^2)*(3(t^2) + 22*t + 21)/(6*(n^2)))
> }
ITYM:
psi <- function(t,n){
exp(t)*(1 - t*(t+1)/n + (t^2)*(3*(t^2) + 22*t + 21)/(6*(n^2)))
}
I was doing a bit of searching an found some VB code that whuber (and
am wondering if it's the same whuber as frequently makes cogent posts
on stats.stackexchange.com ?) had posted in an Excel macro about ten
years ago that claimed to have reproduced the A9 Table in Gilbert.
http://www.quantdec.com/envstats/software/ln_mvue.xls
His macro was named Finney and I transposed it into R:
Finney <- function(m , z){
aTol <- 0.0000000001
iterMax <- 1000
if (m <= -1) {# issue an error
error("Finney = 0#")}
x <- z * m * m / (m + 1)
if (abs(x) < aTol) { return(Finney = 1L)}
# This is the correct answer.
iMax = abs(trunc(z) + 1) + 20
if (iMax > iterMax) {error("iMax > iterMax")}
# Init
a = 1L
g = a # Lead terms
for ( i in seq(iMax) ) {
# Test for convergence
if (abs(a) <= aTol * abs(g)) {
break()} # Compute the next term
a <- a * x / (m + 2 * (i - 1)) / i
#'
#' Accumulate terms
#'
g = g + a} # Next
return(g)
}
The order of the arguments is reversed but they seem to offer similar
results:
> psi(2, 30)
[1] 6.332695
> Finney(30, 2)
[1] 6.254139
> Finney(60, 1.5)
[1] 4.230381
> psi(1.5, 60)
[1] 4.229944
I would think that a conservative statistical method _should_ be used
when assessing toxic risks as the OP might to be doing, given his
address and title.
--
David.
>
> Hoping this helps. As I say, I hope to find time later to look
> at this in more detail.
>
> Ted.
>
> --------------------------------------------------------------------
> E-Mail: (Ted Harding) <ted.harding at wlandres.net>
> Fax-to-email: +44 (0)870 094 0861
> Date: 10-Jul-11 Time: 19:49:39
> ------------------------------ XFMail ------------------------------
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
David Winsemius, MD
West Hartford, CT
More information about the R-help
mailing list