Subversion Repositories wimsdev

Rev

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