Go to most recent revision | Details | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line |
|---|---|---|---|
| 12560 | bpr | 1 | !if $wims_read_parm!=slib_header |
| 2 | !goto proc |
||
| 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 |