Skip to content

dev, mdev, sdev

Deviations

dev

Standard deviation

dev x     dev[x]

Where x is a numeric list, returns its standard deviation (as the square root of the variance). Applies to all numeric data types and signals an error with temporal types, char and sym.

q)dev 10 343 232 55
134.3484

dev is an aggregate function, equivalent to {sqrt var x}.

domain: b g x h i j e f c s p m d z n u v t
range:  f . f f f f f f f . f f f f f f f f

Since 4.1t 2022.04.15, can also traverse columns of tables and general/anymap/nested lists.

q)M:get`:m77 set m:(2 3;4 0N;1 7)
q)dev m
1.247219 2
q)dev M
1.247219 2
q)T:get`:tab/ set t:flip`a`b!flip m
q)dev t
a| 1.247219
b| 2
q)dev T
a| 1.247219
b| 2

mdev

Moving deviations

x mdev y     mdev[x;y]

Where

  • x is a positive int atom
  • y is a numeric list

returns the floating-point x-item moving deviations of y, with any nulls after the first item replaced by zero. The first x items of the result are the deviations of the terms so far, and thereafter the result is the moving deviation.

q)2 mdev 1 2 3 5 7 10
0 0.5 0.5 1 1 1.5
q)5 mdev 1 2 3 5 7 10
0 0.5 0.8164966 1.47902 2.154066 2.87054
q)5 mdev 0N 2 0N 5 7 0N    / nulls after the first are replaced by 0
0n 0 0 1.5 2.054805 2.054805

q)t
b c
----
1 45
2 46
3 47
q)2 mdev t
b   c
-------
0   0
0.5 0.5
0.5 0.5

mdev is a uniform function. Domain and range:

    b g x h i j e f c s p m d z n u v t
----------------------------------------
b | f . f f f f f f f . f f f f f f f f
g | . . . . . . . . . . . . . . . . . .
x | f . f f f f f f f . f f f f f f f f
h | f . f f f f f f f . f f f f f f f f
i | f . f f f f f f f . f f f f f f f f
j | f . f f f f f f f . f f f f f f f f
e | . . . . . . . . . . . . . . . . . .
f | . . . . . . . . . . . . . . . . . .
c | . . . . . . . . . . . . . . . . . .
s | . . . . . . . . . . . . . . . . . .
p | . . . . . . . . . . . . . . . . . .
m | . . . . . . . . . . . . . . . . . .
d | . . . . . . . . . . . . . . . . . .
z | . . . . . . . . . . . . . . . . . .
n | . . . . . . . . . . . . . . . . . .
u | . . . . . . . . . . . . . . . . . .
v | . . . . . . . . . . . . . . . . . .
t | . . . . . . . . . . . . . . . . . .

Range: f

Implicit iteration

mdev applies to dictionaries and tables.

q)k:`k xkey update k:`abc`def`ghi from t:flip d:`a`b!(10 21 3;4 5 6)

q)2 mdev d
a| 0 0 0
b| 3 8 1.5

q)2 mdev t
a   b
-------
0   0
5.5 0.5
9   0.5

q)2 mdev k
k  | a   b
---| -------
abc| 0   0
def| 5.5 0.5
ghi| 9   0.5

sdev

Sample standard deviation

sdev x     sdev[x]

Where x is a numeric list, returns its sample standard deviation as the square root of the sample variance.

\[sdev(x)=\sqrt{\frac{n}{n-1}var(x)}\]
q)sdev 10 343 232 55
155.1322

sdev is an aggregate function, equivalent to {sqrt var[x]*count[x]%-1+count x}.

domain: b g x h i j e f c s p m d z n u v t
range:  f . f f f f f f f . f f f f f f f f

Since 4.1t 2022.04.15, can also traverse columns of tables and general/anymap/nested lists.

q)M:get`:m77 set m:(2 3;4 0N;1 7)
q)sdev m
1.527525 2.828427
q)sdev M
1.527525 2.828427
q)T:get`:tab/ set t:flip`a`b!flip m
q)sdev t
a| 1.527525
b| 2.828427
q)sdev T
a| 1.527525
b| 2.828427

var, svar
Mathematics
Sliding windows
Standard deviation, Variance
Standard deviation