Skip to content

function for the average or expected range?; CORECTION

6 messages · Spencer Graves, Greg Snow

#
Hi, All:

** My previous email on this subject seemed to contain an error;  check 
the correction:

      Is there a function in R to compute the expected range of a sample
of size n from some distribution?  I ask, because I was recently asked
about the control chart constant 'd2', which is the expected range for a
sample of size n from a standard normal.

      There is a fairly simple formula for the expected value of the
range, given, e.g., in Kendall and Stuart (1969) The Advanced Theory of
Statistics, vol. 1, Distribution Theory, 3rd ed. (Hafner, expression
(14.82), sec. 14.25:  The exact distribution of the range, p. 339). 
Unfortunately, either I don't understand this formula, or it's wrong. 
Using expression (14.1) in the same reference, I get the following:

     E(R) = n*integral{-Inf to Inf of [(F(x))**(n-1) - 
(1-F(x))**(n-1)]dF(x).

      Thanks,
      Spencer Graves
#
The "ptukey" and "qtukey" functions may be what you want (or at least in
the right direction).

You could also easily estimate this by simulation.

Hope this helps,
#
Hi, Greg: 

      Thanks very much for the reply. 

      1.  The 'ptukey' and 'qtukey' function are the distribution of the 
studentized range, not the range.  I tried "sum(ptukey(x, 2, df=Inf, 
lower=FALSE))*.1" and got 1.179 vs. 1.128 in the standard table of d2 
for n = 2 observations per subgroup. 

      2.  I tried simulation and found that I needed 1e7 or 1e8 random 
normal deviates to get the accuracy of the published table. 

      3.  Then I programmed in Excel the integral over seq(-5, 5, .1) 
using a correction to the formula I got from Kendall and Stuart and got 
the exact numbers in the published table except in one case where it was 
off by 1 in the last significant digit. 

      Thanks again,
      Spencer
Greg Snow wrote:
#
Hi, Greg: 

      1.  I did the integration in Excel for four reasons:  First, it's 
easier (even for me) to see what's happening and debug for something 
that simple.  Second, my audience were people who were probably not R 
literate, and they could likely understand and use the Excel file easier 
than than an R script.  Third, my experience with the R 'integrate' has 
been less than satisfactory, especially when integrating from (-Inf) to 
Inf.  Finally, to check my work, I often program things like that first 
in Excel then in R.  If I get the same answer in both, I feel more 
confident in my R results.  I haven't programmed this result in R yet, 
but if I do, the fact that I already did it in Excel will make it easier 
for me to be confident of the answers.  The function 
"getParamerFun{qAnalyst}" gets the correct answer from n = 2:25 but 
returns wrong answers outside that range. 


      2.  I think the "CORRECTION TO CORRECTION" included a correct 
formula: 

           E(R) = n*integral{-Inf to Inf of x*[(F(x))**(n-1) - 
(1-F(x))**(n-1)]*dF(x).

      The "CORRECTION" omitted the "x*".  The first version had many 
more problems. 

      Am I communicating?  
      Best Wishes,
      Spencer
Greg Snow wrote:
2 days later
#
Well it looks like you found your answer.  Further the fact that my
suggestions of possibilities did not help and the fact that noone else
has chimed in would suggest that there is not any easier way to get your
answer.

 I was thinking that taking into account the correlation between the min
and the max may give different answers than your formula, but so far my
tests have not shown enough of a difference to matter.  If you use this
with a distribution rather than the normal, you may want to do a couple
of simulations just to check, but otherwise your formula seems to be
working fine.

Hope this helped,