File: quantile

package info (click to toggle)
wims 2%3A4.29a%2Bdfsg1-3
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 185,704 kB
  • sloc: xml: 366,687; javascript: 120,570; ansic: 62,341; java: 62,170; sh: 7,744; perl: 3,937; yacc: 3,217; cpp: 1,915; lex: 1,805; makefile: 1,084; lisp: 914; pascal: 601; python: 520; php: 318; asm: 7
file content (59 lines) | stat: -rw-r--r-- 1,876 bytes parent folder | download | duplicates (3)
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
!if $wims_read_parm!=slib_header
  !goto proc
!endif
slib_title=Quantile
slib_parms=3\
 ,data\
 [0.1,0.25,0.5,0.75,0.9],ordres des quantiles demands (rels entre 0 et 1)\
 2,option 1 ou 2

slib_out= Quantiles
slib_comment=Option 1 : donne la j-me\
  valeur de data ordonn par ordre croissant avec j=ceil(np)\
  si n est la taille de data et p l'ordre du quantile demand.\
  Option 2 : la formule diffre seulement\
  lorsque np est un entier; dans ce cas, la valeur donne est\
  la moyenne des j-me et (j+1)-me valeurs de data ordonn\
  par ordre croissant.
slib_author=Sophie, Lemaire

slib_example=[0,1,1,7,8,9,4],[0.25,0.5,0.75,0.9,0.1],1\
[0,1,1,7,8,9,4],[0.25,0.5,0.75,0.9,0.1],2\
[-1.5,1,1.5,7,8,9,4,5,6,4],[0,0.2,0.5,0.7,1],1\
[-1.5,1,1.5,7,8,9,4,5,6,4],[0,0.2,0.5,0.7,1],2\
[-2],[0.5]
!exit
:proc
!reset slib_out
!distribute item $wims_read_parm into slib_data,slib_order,slib_option
!set slib_data=!declosing $slib_data
!set slib_order=!declosing $slib_order
!default slib_order=0.1,0.25,0.5,0.75,0.9
slib_data=!sort numeric items $slib_data

slib_datacnt=!itemcnt $slib_data
slib_ordercnt=!itemcnt $slib_order
slib_data=!nospace $slib_data
slib_quant=!values ceil(x*$slib_datacnt)+1 for x in $slib_order
slib_data=$(slib_data[1]),$slib_data,$(slib_data[-1])

!default slib_option=2
!if $slib_option=1
  slib_quantile=!item $slib_quant of $slib_data
!endif

!if $slib_option=2
  slib_quant2 = $slib_quant
  !for slib_i = 1 to $slib_ordercnt
    slib_aux = $[$(slib_order[$slib_i])*$slib_datacnt]
    slib_aux = $[ceil($slib_aux)-$slib_aux]
    !if $slib_aux=0
      slib_quant2=!replace item number $slib_i by $[$(slib_quant[$slib_i])+1] in $slib_quant2
    !endif
  !next
  slib_quant=!item $slib_quant of $slib_data
  slib_quant2=!item $slib_quant2 of $slib_data
  slib_quantile=!exec pari ([$slib_quant]+[$slib_quant2])*0.5
!endif

slib_out=$slib_quantile