[R] the quantile function and problems.

Bert Gunter bgunter@4567 @end|ng |rom gm@||@com
Fri Jul 15 00:22:41 CEST 2022

Read ?quantile carefully, please (and any references therein that you
may wish to consult).

You are estimating a continuous function by a discrete finite step
function, and as the Help page (and further references) explains,
there are many ways to do this.

Bert

On Thu, Jul 14, 2022 at 2:33 PM Uwe Brauer <oub using mat.ucm.es> wrote:
>
>
> Hi
>
> I am very acquainted with R. I use it occasionally via the org-babel library of GNU emacs.
>
> I wanted to check the first, second and third quartiles of the scientific science index JCR
> S
> Its criterion is
> #+begin_src
> | Quartil | range             |                                       |
> | ---------+------------------+---------------------------------------|
> | Q1      | 0.0 < Z \leq 0.25 | Highest ranked journals in a category |
> | Q2      | 0.25 < Z \leq 0.5 |                                       |
> | Q3      | 0.5 < Z \leq 0.75 |                                       |
> | Q4      | 0.75 < Z          | Lowest ranked journals in a category  |
> #+end_src
>
> Z=(X/Y)
>
> Where X is the journal rank in category and Y is the number of journals in the category.
>
> Now I have a list of 267 journals.
>
> What turns me crazy is that the way R, matlab and the JCR calculate the quartiles gives different results.
>
> Here is a table
> #+begin_matlab :exports both :eval never-export :results output latex
> #+RESULTS:
> | quartil-limit (last member) |    | floor_Rlang | jcr | jcr_check | floor_check |
> |-----------------------------+----+-------------+-----+-----------+-------------|
> |                        67.5 | Q1 |          67 |  66 |    0.2472 |      0.2509 |
> |                         134 | Q2 |         134 | 133 |    0.4981 |      0.5019 |
> |                       200.5 | Q3 |         200 | 200 |    0.7491 |      0.7491 |
> |                         267 |    |         267 | 267 |         1 |           1 |
> #+TBLFM: $5=$4/267::$6=$3/267
> #+end_matlab
>
> I calculated using R (I don't provide the vector from 1 to 267)
>
> #+begin_src R :colnames t :var t1=jcr22
>   quantile(t1\$Data,c(1/4,1/2,3/4,1))
> #+end_src
> #+begin_src
> #+RESULTS:
> |     x |
> |-------|
> |  67.5 |
> |   134 |
> | 200.5 |
> |   267 |
> #+end_src
>
>
> So you see the problem with Q1 and Q2.
>
> On top of that matlab gives
>
> #+begin_src matlab :exports results :eval never-export :results output latex
> format short
> x=1:267;
> q1 = quantile(x,1/4);
> q2 = quantile(x,1/2);
> q3 = quantile(x,3/4);
> Q=[q1; q2; q3];
> sprintf('|%g|   \n', Q)
> #+end_src
>
> #+RESULTS:
> #+begin_export latex
> |67.25|
> |134|
> |200.75|
> #+end_export
>
> Which is also slightly different from R.
>
> Can anybody enlighten me please?
> Thanks and regards
>
> Uwe Brauer
>
> --
> I strongly condemn Putin's war of aggression against the Ukraine.
> I support to deliver weapons to Ukraine's military.
> I support the ban of Russia from SWIFT.
> I support the EU membership of the Ukraine.
>
> ______________________________________________
> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help