Dear Christos,

Thank you, the code implemented in  2.10.1 is actually slightly
different; the qs variable in the call to quantile is determined by a
series of ifelse() statements:

qs <- ifelse(h == 0, x[j + 2], ifelse(h == 1, x[j + 3], (1 - h) * x[j
+ 2] + h * x[j + 3]))

so if h is neither 0 nor 1, it is (1 - h) * x[j + 2] + h * x[j + 3]).

It was a particularly small example, so I did look at on a sample of
rnorm(500).  The differences are less pronouned in the larger sample,
but still present (again in 2.11.1).

Josh

On Sat, Jun 19, 2010 at 4:35 AM, Christos Argyropoulos
<argch...@hotmail.com> wrote:
>
>
> Hi,
> It seems to me that the results are actually the same but they are not 
> returned in the same order (R 2.10.1 in Windows Vista). If you call sort on 
> the output the results will be the same:
>> sort(quantile(c(54, 72, 83, 112), type=6, probs=c(0, .25, .5, .75, 1)))
>     0%    25%    50%    75%   100%
>  54.00  58.50  77.50 104.75 112.00
>> sort(quantile(c(54, 72, 83, 112), type=6, probs=c(.25, .5, .75, 1, 0)))
>     0%    25%    50%    75%   100%
>  54.00  58.50  77.50 104.75 112.00
>
> With such a small sample, the actual quantile values may critically depend on 
> the interpolatory algorithm used in their calculation, so exercise caution:
>
>> sort(quantile(c(54, 72, 83, 112), type=7, probs=c(0, .25, .5, .75, 1)))
>     0%    25%    50%    75%   100%
>  54.00  67.50  77.50  90.25 112.00
>> sort(quantile(c(54, 72, 83, 112), type=7, probs=c(.25, .5, .75, 1, 0)))
>     0%    25%    50%    75%   100%
>  54.00  67.50  77.50  90.25 112.00
>
> Christos Argyropoulos
>
>
> ----------------------------------------
>> Date: Fri, 18 Jun 2010 21:02:41 -0700
>> From: jwiley.ps...@gmail.com
>> To: r-help@r-project.org
>> Subject: [R] quantile() depends on order of probs?
>>
>> Hello All,
>>
>> I am trying to figure out the rational behind why quantile() returns
>> different values for the same probabilities depending on whether 0 is
>> first.
>>
>> Here is an example:
>>
>> quantile(c(54, 72, 83, 112), type=6, probs=c(0, .25, .5, .75, 1))
>> quantile(c(54, 72, 83, 112), type=6, probs=c(.25, .5, .75, 1, 0))
>>
>> It seems to come down to this part of the code for quantile:
>>
>> fuzz <- 4 * .Machine$double.eps
>> nppm <- a + probs * (n + 1 - a - b)
>> j <- floor(nppm + fuzz)
>> h <- nppm - j
>> qs <- x[j + 2L]
>> qs[h == 1] <- x[j + 3L][h == 1]
>> other <- (h> 0) && (h < 1)
>> if (any(other))
>> qs[other] <- ((1 - h) * x[j + 2L] + h * x[j + 3L])[other]
>>
>> In my example, a and b are both 0, and n = 4. Particularly, the
>> alternate formula for qs is only used when the first element of h is
>> both> 0 and < 1. Any ideas on this? It seems like a simple
>> alternative would be
>>
>> other <- (h> 0) & (h < 1)
>>
>> but I do not know if that would cause problems for other quantile
>> formulae. By the way, this comes around lines 39-70 in
>> quantile.default in:
>>
>>> version
>> _
>> platform x86_64-pc-mingw32
>> arch x86_64
>> os mingw32
>> system x86_64, mingw32
>> status
>> major 2
>> minor 11.1
>> year 2010
>> month 05
>> day 31
>> svn rev 52157
>> language R
>> version.string R version 2.11.1 (2010-05-31)
>>
>>
>> Best regards,
>>
>> Josh
>>
>> --
>> Joshua Wiley
>> Ph.D. Student
>> Health Psychology
>> University of California, Los Angeles
>>
>> ______________________________________________
>> R-help@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.
>
> _________________________________________________________________
> Hotmail: Trusted email with Microsoft’s powerful SPAM protection.
> https://signup.live.com/signup.aspx?id=60969



-- 
Joshua Wiley
Ph.D. Student
Health Psychology
University of California, Los Angeles

______________________________________________
R-help@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.

Reply via email to