Rev 12560 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
12560 | bpr | 1 | !if $wims_read_parm!=slib_header |
13586 | bpr | 2 | !goto proc |
12560 | bpr | 3 | !endif |
4 | slib_title=Quantile |
||
5 | slib_parms=3\ |
||
6 | ,data\ |
||
7 | [0.1,0.25,0.5,0.75,0.9],ordres des quantiles demandés (réels entre 0 et 1)\ |
||
8 | 2,option 1 ou 2 |
||
9 | |||
10 | slib_out= Quantiles |
||
11 | slib_comment=Option 1 : donne la j-ème\ |
||
12 | valeur de data ordonné par ordre croissant avec j=ceil(np)\ |
||
13 | si n est la taille de data et p l'ordre du quantile demandé.\ |
||
14 | Option 2 : la formule diffère seulement\ |
||
15 | lorsque np est un entier; dans ce cas, la valeur donnée est\ |
||
16 | la moyenne des j-ème et (j+1)-ème valeurs de data ordonné\ |
||
17 | par ordre croissant. |
||
18 | slib_author=Sophie, Lemaire |
||
19 | |||
20 | slib_example=[0,1,1,7,8,9,4],[0.25,0.5,0.75,0.9,0.1],1\ |
||
21 | [0,1,1,7,8,9,4],[0.25,0.5,0.75,0.9,0.1],2\ |
||
22 | [-1.5,1,1.5,7,8,9,4,5,6,4],[0,0.2,0.5,0.7,1],1\ |
||
23 | [-1.5,1,1.5,7,8,9,4,5,6,4],[0,0.2,0.5,0.7,1],2\ |
||
24 | [-2],[0.5] |
||
25 | !exit |
||
26 | :proc |
||
27 | !reset slib_out |
||
28 | !distribute item $wims_read_parm into slib_data,slib_order,slib_option |
||
29 | !set slib_data=!declosing $slib_data |
||
30 | !set slib_order=!declosing $slib_order |
||
31 | !default slib_order=0.1,0.25,0.5,0.75,0.9 |
||
32 | slib_data=!sort numeric items $slib_data |
||
33 | |||
34 | slib_datacnt=!itemcnt $slib_data |
||
35 | slib_ordercnt=!itemcnt $slib_order |
||
36 | slib_data=!nospace $slib_data |
||
37 | slib_quant=!values ceil(x*$slib_datacnt)+1 for x in $slib_order |
||
38 | slib_data=$(slib_data[1]),$slib_data,$(slib_data[-1]) |
||
39 | |||
40 | !default slib_option=2 |
||
41 | !if $slib_option=1 |
||
42 | slib_quantile=!item $slib_quant of $slib_data |
||
43 | !endif |
||
44 | |||
45 | !if $slib_option=2 |
||
46 | slib_quant2 = $slib_quant |
||
47 | !for slib_i = 1 to $slib_ordercnt |
||
48 | slib_aux = $[$(slib_order[$slib_i])*$slib_datacnt] |
||
49 | slib_aux = $[ceil($slib_aux)-$slib_aux] |
||
50 | !if $slib_aux=0 |
||
51 | slib_quant2=!replace item number $slib_i by $[$(slib_quant[$slib_i])+1] in $slib_quant2 |
||
52 | !endif |
||
53 | !next |
||
54 | slib_quant=!item $slib_quant of $slib_data |
||
55 | slib_quant2=!item $slib_quant2 of $slib_data |
||
56 | slib_quantile=!exec pari ([$slib_quant]+[$slib_quant2])*0.5 |
||
57 | !endif |
||
58 | |||
59 | slib_out=$slib_quantile |