(50G) Percentiles according to Hyndman&Fan's 9 types + Tukey_inc _box plot

+- HP Forums (https://www.hpmuseum.org/forum)
+-- Forum: HP Software Libraries (https://www.hpmuseum.org/forum/forum-10.html)
+--- Forum: General Software Library (https://www.hpmuseum.org/forum/forum-13.html)
+--- Thread: (50G) Percentiles according to Hyndman&Fan's 9 types + Tukey_inc _box plot (/thread-23928.html)



(50G) Percentiles according to Hyndman&Fan's 9 types + Tukey_inc _box plot - Gil - 2025-08-13 19:23

Version 11b

Input: 2 arguments
- in stack level 2: list (unordered) of the elements/numbers 
- in stack level 1: wished percentile; for 10%, 25%, etc., write here 10, 25, etc.
  (and not .10, 0.25, etc.)

or Input: 3 arguments
- in stack level 3list (unordered) of the elements/numbers 
- in stack level 2: wished percentile; for 10%, 25%, etc., write here 10, 25, etc.
  (and not .10, 0.25, etc.)
- in stack level 1: list of integers >=1 corresponding to the frequencies of the numbers in the first list 
(or in stack level 1: list of wi, 0<wi<1, corresponding to the weights of the numbers in the first list) 

Output

a) recap summary for checking 
and b) results according to up to 17 different methods

a) recap summary for checking
- P%
- ordered list of numbers 
(&, if frequencies or weights, ordered list of frequencies/weights and cumulative list of frequencies/weights) 
- n
- mean

b) results according to up to 17 different methods
- type method or principal softwares 
- k (rank k, k>= 1 and k<=n, in the ordered list: 1, for the first value, 2 for the second one, 3 for the 3rd one; 3.25 = 3rd value +25%[value4 - value3]
(but k is <1 and >0 in case of weights) 
- x_k, corresponding value, always lin. interpolated as above with k=3.25
(but no interpolation in case of weights) 
* if weights, only one single result for k & also only one single result for the corresponding x_k value, then always according to just method type R4, with k=np=(Swi)p 
* if no weights, always 15 methods —a) b), c) & d) — for quantiles/percentiles + possible 2 other methods — e) & f) — for Q1, Q2 and Q3:
a) 9 Hyndman&Fan's types (same types in R statistical software)
b) 4 variations of type R7 (floor, ceil, midpoint and nearest point) 
c) Mendenhall&Sincich method
d) Cunnane method 
* and also, always if no weights, 2 others methods, e) & f), for quartiles Q1, Q2 & Q3, but only when P%=25%, P=0.5 or 75%:
e) Moore&McCabe = for Q1, Q2 & Q3  used in both HP Prime & TI[83] calculators (≠quantile/percentiles type R1 used in HP calculators) 
f) Tukey's inclusive method for boxplots Q1, Q2 & Q3
- and, lastly, but only if no weights and only when P%=50%, 
g) the "usual median" with k=(n+1)/2, with then repeated results of definition R6 calculated previously 

Goal
Comparison of possible different results for same percentile input, according to 
- 15 methods for P%≠25%, P≠50% or 75%
- or 17 methods when P%=25%, P=50% or 75%
with reference to some (statistical) softwares or calculators (R, SAS, Minitab, SPSS, S(plus), Mathematica, TI 83 & HP Prime. 
*if weights, only one single method calculated: R4. 

Correspondences

A) 9 types in R according to 9 Hyndman&Fan's types:
R1 —>SAS3 —>pHP
  *if p=.25/.5 /.75, R1 does not correspond to 2nd method described below in E) or in F) with quartiles Q1, Q2 and Q3 (MM Qi TI HP) 
R2 —>SAS5 (SAS by default) 
R3 —>SAS2
R4 —>old defaultPython<=1.9 —>SAS1 —>weighted method 
R5 —>Hazen —>Mathematica —>old XLS.exc !
R6 —>Weibull/Gumbel1939 —>SAS4 —>XLSexc
           —>Minitab —>SPSS
R7 (default in R) —>Python>=1.1—>XLSinc
       —>S(plus)
   Added old NumPy:
   7b floor
   7c ceil
   7d midpoint
   7e next point
R8 (Johnson&Kotz 1970) 
R9 (Blom 1958) 

B) 1 Mendenhall&Sincich method;
      no correspondence 

C) 5 SAS PCTDEF:
PCTDEF=1 —>R4 —>old defaultPython<=1.9
PCTDEF=2 —>R3 —>SAS2
PCTDEF=3 —>R1 —>pTI  —>pHP
PCTDEF=4 —>R6 —>Weibull/Gumbel1939 —>XLSexc
                               —>Minitab —>SPSS
PCTDEF=5 (default in SAS) —>R2
* missing in SAS the R types 5/7/8/9

D) 2 XLS methods:
excluding —>R6 >Weibull/Gumbel1939 —>SAS4 
                   —>Minitab —>SPSS
including  (by default) —>R7 >Python>=1.1 
                                        —>S(plus)
(*old XLS.exc —> R5 —>Hazen —>Mathematica) 

E) 2 TI[83] or HP[Prime] methods:
e1) 1st method: "for percentiles, only for HP Prime" —>R1 —>SAS3
* if p=.25/.5/.75, that 1st method "HP for percentiles" (R1) does not correspond to 2nd method below "TI HP for quartiles Q1, Q2 & Q3" (MM)! 
 e2) 2nd method: "for quartiles Q1, Q2 & Q3, for both calculators TI & HP" —>Moore&McCabe (MM)
—>Tukey_exclusive (Te) 
* that 2nd method "TI HP for quartiles Q1, Q2 & Q3" (MM) does not correspond to 1st method above "HP for percentile" (R1) when p=0.25, 0.5 or 0.75!

F) 1 Mathematica method —>R5 —>Hazen
                                                —>old XLS.exc !

G) 1 Hazen method —>R5 —> Matemática
                                               —>old XLS.exc !

H) Minitab —>R6 —>SAS4 —>Weibull/Gumbel1939
                    —>XLSexc —>SPSS

I) SPSS —>R6 —>SAS4 —>Weibull/Gumbel1939
               —>XLSexc —>Minitab

J) Weibull/Gumbel1939 —>R6 —>SAS4 —>XLSexc
                                           —>Minitab

K) Python>=1.1 —>R7 —>XLSinc —>S(plus)

L) 1 Moore&McCabe (MM) method:
for Q1 Q2 & Q3 TI HP calculators ≠ method HP for percentiles! 
(see both methods e1) & e2) mentioned in E) above) 

M) 2 Tukey methods for Q1, Q2 & Q3 used for boxplots : 
exclusive (Te) —> MM
inclusive: no correspondence 

Code
 \<< "2/3 Arg    Version11

2 Arg:
  a1) original
    unordered list of#
    {#1 #2  #n}
  a2) percentile (ex:
    7 for 7%
      <not 0.07>
    25 or 75 for
    1st/3rd quartile
    50 for median)

or 3 Arg:
.  a1 {#1#n} a2 (P%)
  & a3 {f1fn} = list
  freq corresp. to a1
  fi integers \>= 1

or
.  a1 {#1#n} a2 (P%)
  & a3 {w1wn} = list
  weights corr. to a1
  0<wi<1
  NB with wi, k & x_k
      only with
      type R4 below

9 Hyndman&Fan's (HF/R)
  types \->R;

& 1517 methods(types)
  (with weights, only
  1 type: R4 below)

https://www.
rdocumentation.org/
packages/stats/
versions/3.6.2/
topics/quantile

1=inv empirical
  nearest upper rank
  \->SAS3
  \->pHP (only)
    (if p=.25/.5 /.75
    \=/ MM Q1/2/3 HP TI)
2=like 1, but avg
  inv at discont.
  best for Eric
  Langford
  for population
  \->SAS5=SAS default
3=nearest even integ
  \->SAS2
4=lin interp
  <old defaultPython
  \<=1.9> \->SAS1
  only method avail.
    with weights!
5=lin interp
  \->Hines&Montgomery
  (HM)
  \->Hazen (H)
  \->Mathematica (M)
  \->Wolfram (W)
  \->Hog&Ledolter (HL)
  <=old XLS.exc !>
6=lin inter
  Popular method (P)
  Weibull/Gumbel 1939
  exclude median
  \->Python? (Py)
  \->SAS4
  \->Minitab (MT)
  \->XLSe[xc]
  \->q_SPSS (\=/Q_SPSS)
7=best? in gener. use
  lin interp
  for sample
  always incl median
  default in R
    & Python\>=1.1
      (\->defP)
  \->vanFreund&Perles
    (V)
  \->XLSi[nc]
  \->S(plus)
7b floor
7c ceiling
7d mid point
7e next point
8=lin interp
  \->Johnson&Kotz 1970
  median unbiased
9=lin interp
  normal unbiased
  \->Blom 1958

1 Mendenhall&Sincich
  (MS)
  . (wrong formula by
    Wolfram shown but
    not calc  here)
  . correct calc here

1 Cunnane
  \->SciPy.mquantiles
  (SciPy.mq)

1 Moore&McCabe (MM)
  med excl for Q1&Q3
  \->TI[83] \->HP[Prime]

1 Tukey: avg
  for Q1&3 in boxplot
  median inc, but if
    n=even, median exc
  \->Q_SPSS

5 SAS options:
  1\->HF4
  2\->3
  3\->1
  4\->6
  5(default)\->2
  missing: HF 5/7/8/9

2 XLS: interp
  .exc (n\>=5) \->R6
    but when n=5 or 6
    it excl min/max!
  .inc:best? (n\>=4)\->R7

1 vanFreund&Perles(V)
  \->R7

1 Mathematica
  \->R5

1 Wolfram (W)
  \->R5

2 HP (1 TI)
  .only HP
  p \->R1; if p=.25/.5
  .75\=/Q1/2/3 in HP/TI
  .both TI/HP,
  but only for Q1/2/3
  (\=/pHP .25/.5/.75)
  \->MM

2 SPSS
  .p \->R6
  .Qi \->Tukey

1 Minitab (MT)
  \->R6

1 S(plus)
  \->R7
" DROP -105 CF DUP TYPE 5 \=/
  IF
  THEN 0
  END PICK3 SIZE 0 0 0 0 0 MAXR \->NUM \-> l p lf s lo lf\GS n k j fmin
  \<<
    \<< \->NUM DUP FP 0 == { R\->I } IFT 'k' STO
      IF fmin 1 \>=
      THEN
        CASE k 1 <
          THEN k 4 RND "\->1" + 1 'k' STO
          END k n >
          THEN k 4 RND "\->" + n DUP FP 0 == { R\->I } IFT + n 'k' STO
          END k
        END
      ELSE k
      END "k" fmin 1 < { "=pn" + } IFT \->TAG
      IF lf 0 \=/
      THEN 1 s
        FOR i lf\GS i GET k - 0 \>=
          IF
          THEN i
            IF i 1 > fmin 1 \>= AND
            THEN k lf\GS i 1 - GET - 1 <
              IF
              THEN k FP + 1 -
              END
            END s 'i' STO
          END
        NEXT 'k' STO
      END k FP lo k IP GETI UNROT GET OVER - ROT * + "x_k" \->TAG
    \>> \-> xk
    \<< p DUP FP 0 == { R\->I } IFT "P%" \->TAG .01 'p' STO* l SORT "lo" \->TAG DUP 'lo' STO
      IF lf 0 \=/
      THEN { } 1 s
        FOR i lf l lo i GET POS GET DUP fmin MIN 'fmin' STO +
        NEXT 'lf' STO lf HEAD DUP 1 \->LIST SWAP 2 s
        FOR i lf i GET + DUP ROT SWAP + SWAP
        NEXT 'n' STO DUP 'lf\GS' STO fmin 1 \>= "f\GS" "wi\GS" IFTE \->TAG lf fmin 1 \>= "fo" "wi.o" IFTE \->TAG SWAP OVER 4 PICK * \GSLIST n / \->NUM "mean" \->TAG n DUP FP 0 == { R\->I } IFT "n" fmin 1 < { "=\GSwi" + } IFT \->TAG SWAP
      ELSE s 'n' STO DUP \GSLIST n / \->NUM "mean" \->TAG n "n" \->TAG SWAP
      END
      IF fmin 1 \>=
      THEN "R1=SAS3 pHP"
        CASE p .25 ==
          THEN "\=/Q1HP" +
          END p .5 ==
          THEN "\=/Q2HP" +
          END p .75 ==
          THEN "\=/Q3HP" +
          END
        END 'n*p' \->NUM CEIL xk EVAL "R2=SAS5 Langford" 'n*p' \->NUM DUP 'k' STO
        IF FP 0 ==
        THEN k .5 +
        ELSE k CEIL
        END xk EVAL "R3=SAS2" 'n*p-.5' \->NUM DUP 'k' STO FLOOR 'j' STO j
        IF j 2 MOD NOT k j == AND NOT
        THEN 1 +
        END xk EVAL
      END "R4=SAS1" fmin 1 <
      IF
      THEN "Only " SWAP +
      END 'n*p' xk EVAL
      IF fmin 1 \>=
      THEN "R5=p&Q:M/H/HM/W" 'n*p+.5' xk EVAL "6=XLSeSAS4MTpSPSS P Py" '(n+1)*p' xk EVAL "7=XLSidefP/R S+V" '(n-1)*p+1' xk EVAL "7b (n-1)p+1 down" '(n-1)*p+1' FLOOR xk EVAL "7c (n-1)p+1 ceil" '(n-1)*p+1' CEIL xk EVAL "7d(n-1)p+1 midPt" '(n-1)*p+1' DUP FLOOR SWAP CEIL + 2 / xk EVAL "7e(n-1)p+1 nxtPt" '(n-1)*p+1' DUP FP .5 \<= { FLOOR } { CEIL } IFTE xk EVAL "R8=Johnson&Kotz" '(n+1/3)*p+1/3' 5 RND xk EVAL "R9=Blom" '(n+1/4)*p+3/8' xk EVAL "Mendenhall&S(MS)" "Wolfram wrong eq for MS:" 'n*p' \->NUM DUP FP .5 \=/
        IF
        THEN 0 RND
        END DROP2 "Correct eq for MM:" DROP '(n+1)*p'
        CASE p .5 >
          THEN FLOOR
          END p .5 <
          THEN CEIL
          END
        END xk EVAL "Cunnane SciPy.mquantiles" '(n+.2)*p+.4' xk EVAL
        IF p .25 == p .5 == OR p .75 == OR
        THEN "MMexc Q"
          CASE p .25 ==
            THEN "1"
            END p .5 ==
            THEN "2"
            END p .75 ==
            THEN "3"
            END
          END + "(\=/p)TI HP" + 'n*p+.5+(p-.5)*(n MOD 2)' xk EVAL
        END p .25 == p .5 == OR p .75 == OR
        IF
        THEN "TukeyincBox QSPSS" 'n*p+.5+(.5-p)*(n MOD 2)' xk EVAL
        END p .5 ==
        IF
        THEN "Usual med (Q2) R6" '(n+1)*p' xk EVAL
        END
      END
    \>>
  \>>
\>>

Tests/Checking
No guarantee of the real algorithms implementation for the different methods/types or softwares mentioned. 

12 Examples
{ { { 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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 } :n: 100 :mean: 50.5 :P%: 25 "R1=SAS3 pHP‹Q1HP" :k: 25 :x_k: 25 "R2=SAS5 Langford" :k: 25.5 :x_k: 25.5 "R3=SAS2" :k: 25 :x_k: 25 "R4=SAS1" :k: 25 :x_k: 25. "R5=Mathematica H" :k: 25.5 :x_k: 25.5 "R6XLSeSAS4MTSPSS" :k: 25.25 :x_k: 25.25 "R7XLSi S Python" :k: 25.75 :x_k: 25.75 "R8" :k: 25.41667 :x_k: 25.41667 "R9" :k: 25.4375 :x_k: 25.4375 "Mendenhall&S.(MS)" :k: 25 :x_k: 25. "MM: Q1(‹p) TI HP" :k: 25.5 :x_k: 25.5 "Tukeyinc_boxplot" :k: 25.5 :x_k: 25.5 } 

{ { 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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 } :n: 101 :mean: 51. :P%: 25 "R1=SAS3 pHP‹Q1HP" :k: 26 :x_k: 26 "R2=SAS5 Langford" :k: 26 :x_k: 26 "R3=SAS2" :k: 25 :x_k: 25 "R4=SAS1" :k: 25.25 :x_k: 25.25 "R5=Mathematica H" :k: 25.75 :x_k: 25.75 "R6XLSeSAS4MTSPSS" :k: 25.5 :x_k: 25.5 "R7XLSi S Python" :k: 26 :x_k: 26. "R8" :k: 25.66667 :x_k: 25.66667 "R9" :k: 25.6875 :x_k: 25.6875 "Mendenhall&S.(MS)" :k: 26 :x_k: 26. "MM: Q1(‹p) TI HP" :k: 25.5 :x_k: 25.5 "Tukeyinc_boxplot" :k: 26 :x_k: 26. } 

{ { 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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 } :n: 102 :mean: 51.5 :P%: 25 "R1=SAS3 pHP‹Q1HP" :k: 26 :x_k: 26 "R2=SAS5 Langford" :k: 26 :x_k: 26 "R3=SAS2" :k: 26 :x_k: 26 "R4=SAS1" :k: 25.5 :x_k: 25.5 "R5=Mathematica H" :k: 26 :x_k: 26. "R6XLSeSAS4MTSPSS" :k: 25.75 :x_k: 25.75 "R7XLSi S Python" :k: 26.25 :x_k: 26.25 "R8" :k: 25.91667 :x_k: 25.91667 "R9" :k: 25.9375 :x_k: 25.9375 "Mendenhall&S.(MS)" :k: 26 :x_k: 26. "MM: Q1(‹p) TI HP" :k: 25.5 :x_k: 25.5 "Tukeyinc_boxplot" :k: 26 :x_k: 26. } 

{ { 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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 } :n: 103 :mean: 52. :P%: 25 "R1=SAS3 pHP‹Q1HP" :k: 26 :x_k: 26 "R2=SAS5 Langford" :k: 26 :x_k: 26 "R3=SAS2" :k: 26 :x_k: 26 "R4=SAS1" :k: 25.75 :x_k: 25.75 "R5=Mathematica H" :k: 26.25 :x_k: 26.25 "R6XLSeSAS4MTSPSS" :k: 26 :x_k: 26. "R7XLSi S Python" :k: 26.5 :x_k: 26.5 "R8" :k: 26.16667 :x_k: 26.16667 "R9" :k: 26.1875 :x_k: 26.1875 "Mendenhall&S.(MS)" :k: 26 :x_k: 26. "MM: Q1(‹p) TI HP" :k: 26 :x_k: 26. "Tukeyinc_boxplot" :k: 26.5 :x_k: 26.5 } 

{ { 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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 } :n: 100 :mean: 50.5 :P%: 50 "R1=SAS3 pHP‹Q2HP" :k: 50 :x_k: 50 "R2=SAS5 Langford" :k: 50.5 :x_k: 50.5 "R3=SAS2" :k: 50 :x_k: 50 "R4=SAS1" :k: 50 :x_k: 50. "R5=Mathematica H" :k: 50.5 :x_k: 50.5 "R6XLSeSAS4MTSPSS" :k: 50.5 :x_k: 50.5 "R7XLSi S Python" :k: 50.5 :x_k: 50.5 "R8" :k: 50.5 :x_k: 50.5 "R9" :k: 50.5 :x_k: 50.5 "Mendenhall&S.(MS)" :k: 50 :x_k: 50. "MM: Q3(‹p) TI HP" :k: 50.5 :x_k: 50.5 "Tukeyinc_boxplot" :k: 50.5 :x_k: 50.5 "R6:usual med (Q2)" :k: 50.5 :x_k: 50.5 } 

{ { 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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 } :n: 101 :mean: 51. :P%: 50 "R1=SAS3 pHP‹Q2HP" :k: 51 :x_k: 51 "R2=SAS5 Langford" :k: 51 :x_k: 51 "R3=SAS2" :k: 50 :x_k: 50 "R4=SAS1" :k: 50.5 :x_k: 50.5 "R5=Mathematica H" :k: 51 :x_k: 51. "R6XLSeSAS4MTSPSS" :k: 51 :x_k: 51. "R7XLSi S Python" :k: 51 :x_k: 51. "R8" :k: 51 :x_k: 51. "R9" :k: 51 :x_k: 51. "Mendenhall&S.(MS)" :k: 50.5 :x_k: 50.5 "MM: Q3(‹p) TI HP" :k: 51 :x_k: 51. "Tukeyinc_boxplot" :k: 51.5 :x_k: 51.5 "R6:usual med (Q2)" :k: 51. :x_k: 51. } 

{ { 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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 } :n: 102 :mean: 51.5 :P%: 50 "R1=SAS3 pHP‹Q2HP" :k: 51 :x_k: 51 "R2=SAS5 Langford" :k: 51.5 :x_k: 51.5 "R3=SAS2" :k: 51 :x_k: 51 "R4=SAS1" :k: 51 :x_k: 51. "R5=Mathematica H" :k: 51.5 :x_k: 51.5 "R6XLSeSAS4MTSPSS" :k: 51.5 :x_k: 51.5 "R7XLSi S Python" :k: 51.5 :x_k: 51.5 "R8" :k: 51.5 :x_k: 51.5 "R9" :k: 51.5 :x_k: 51.5 "Mendenhall&S.(MS)" :k: 51 :x_k: 51. "MM: Q3(‹p) TI HP" :k: 51.5 :x_k: 51.5 "Tukeyinc_boxplot" :k: 51.5 :x_k: 51.5 "R6:usual med (Q2)" :k: 51.5 :x_k: 51.5 } 

{ { 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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 } :n: 103 :mean: 52. :P%: 50 "R1=SAS3 pHP‹Q2HP" :k: 52 :x_k: 52 "R2=SAS5 Langford" :k: 52 :x_k: 52 "R3=SAS2" :k: 52 :x_k: 52 "R4=SAS1" :k: 51.5 :x_k: 51.5 "R5=Mathematica H" :k: 52 :x_k: 52. "R6XLSeSAS4MTSPSS" :k: 52 :x_k: 52. "R7XLSi S Python" :k: 52 :x_k: 52. "R8" :k: 52 :x_k: 52. "R9" :k: 52 :x_k: 52. "Mendenhall&S.(MS)" :k: 51.5 :x_k: 51.5 "MM: Q3(‹p) TI HP" :k: 52 :x_k: 52. "Tukeyinc_boxplot" :k: 52.5 :x_k: 52.5 "R6:usual med (Q2)" :k: 52. :x_k: 52. } 

{ { 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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 } :n: 100 :mean: 50.5 :P%: 75 "R1=SAS3 pHP‹Q3HP" :k: 75 :x_k: 75 "R2=SAS5 Langford" :k: 75.5 :x_k: 75.5 "R3=SAS2" :k: 75 :x_k: 75 "R4=SAS1" :k: 75 :x_k: 75. "R5=Mathematica H" :k: 75.5 :x_k: 75.5 "R6XLSeSAS4MTSPSS" :k: 75.75 :x_k: 75.75 "R7XLSi S Python" :k: 75.25 :x_k: 75.25 "R8" :k: 75.58333 :x_k: 75.58333 "R9" :k: 75.5625 :x_k: 75.5625 "Mendenhall&S.(MS)" :k: 75 :x_k: 75. "MM: Q3(‹p) TI HP" :k: 75.5 :x_k: 75.5 "Tukeyinc_boxplot" :k: 75.5 :x_k: 75.5 } 

{ { 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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 } :n: 101 :mean: 51. :P%: 75 "R1=SAS3 pHP‹Q3HP" :k: 76 :x_k: 76 "R2=SAS5 Langford" :k: 76 :x_k: 76 "R3=SAS2" :k: 76 :x_k: 76 "R4=SAS1" :k: 75.75 :x_k: 75.75 "R5=Mathematica H" :k: 76.25 :x_k: 76.25 "R6XLSeSAS4MTSPSS" :k: 76.5 :x_k: 76.5 "R7XLSi S Python" :k: 76 :x_k: 76. "R8" :k: 76.33333 :x_k: 76.33333 "R9" :k: 76.3125 :x_k: 76.3125 "Mendenhall&S.(MS)" :k: 75 :x_k: 75. "MM: Q3(‹p) TI HP" :k: 76.5 :x_k: 76.5 "Tukeyinc_boxplot" :k: 77 :x_k: 77. } 

{ { 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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 } :n: 102 :mean: 51.5 :P%: 75 "R1=SAS3 pHP‹Q3HP" :k: 77 :x_k: 77 "R2=SAS5 Langford" :k: 77 :x_k: 77 "R3=SAS2" :k: 76 :x_k: 76 "R4=SAS1" :k: 76.5 :x_k: 76.5 "R5=Mathematica H" :k: 77 :x_k: 77. "R6XLSeSAS4MTSPSS" :k: 77.25 :x_k: 77.25 "R7XLSi S Python" :k: 76.75 :x_k: 76.75 "R8" :k: 77.08333 :x_k: 77.08333 "R9" :k: 77.0625 :x_k: 77.0625 "Mendenhall&S.(MS)" :k: 76 :x_k: 76. "MM: Q3(‹p) TI HP" :k: 77.5 :x_k: 77.5 "Tukeyinc_boxplot" :k: 77 :x_k: 77. } 

{ { 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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 } :n: 103 :mean: 52. :P%: 75 "R1=SAS3 pHP‹Q3HP" :k: 78 :x_k: 78 "R2=SAS5 Langford" :k: 78 :x_k: 78 "R3=SAS2" :k: 77 :x_k: 77 "R4=SAS1" :k: 77.25 :x_k: 77.25 "R5=Mathematica H" :k: 77.75 :x_k: 77.75 "R6XLSeSAS4MTSPSS" :k: 78 :x_k: 78. "R7XLSi S Python" :k: 77.5 :x_k: 77.5 "R8" :k: 77.83333 :x_k: 77.83333 "R9" :k: 77.8125 :x_k: 77.8125 "Mendenhall&S.(MS)" :k: 77 :x_k: 77. "MM: Q3(‹p) TI HP" :k: 78 :x_k: 78. "Tukeyinc_boxplot" :k: 78.5 :x_k: 78.5 } }


RE: (50G) Percentiles according to 17 methods (Hyndman&Fan, Tukey, etc. ) - Gil - 2025-08-29 16:07

Version 11b

Now you can add a list of frequencies fi,
fi integer >=1

Example 

1) Enter the following list of numbers in stack level 3:
{ 50 20 30 10 40 } 

2) Enter 25 in stack level 2 for 1st Quartile 

3) Enter the frequencies in stack level 1:
{ 30 40 10 20 10 } 

and run the program.

You can add also weights wi, 0<wi<1.
Example 

1) Enter the following list of numbers in stack level 3:
{ 50 20 30 10 40 } 

2) Enter 25 in stack level 2 for 1st Quartile 

3) Enter the weights in stack level 1:
{ 30 40 10 20 10 } 110./
ie { .272727272727 .363636363636 9.09090909091E-2 .181818181818 9.09090909091E-2 }

or other values like {.2 .4 0.2 0.1 0.1}

and execute the program.

Tukey's method
In the previous versions 9/10, there was an error in the formula that was fixed up now.

Note
To save memory, you can delete the huge explanation/comment at the program beginning before the first instruction DROP.