KDB:加权中位数
KDB: weighted median
如何计算 KDB 中的加权中位数?
我可以看到有一个函数med for a simple median but I could not find something like wmed
similar to wavg。
非常感谢您的帮助!
您可以通过复制(使用 where
)有效地加权中位数:
q)med 10 34 23 123 5 56 where 4 1 1 1 1 1
10f
q)med 10 34 23 123 5 56 where 1 1 1 1 1 4
56f
q)med 10 34 23 123 5 56 where 1 2 1 3 2 1
34f
如果您的权重是百分比(例如 0.15 0.10 0.20 0.30 0.25),则将它们转换为等效的 whole/counting 数字
q)med 1 2 3 4 5 where "i"0*0.15 0.10 0.20 0.30 0.25
4f
对于值 v
和权重 w
,med v where w
狼吞虎咽 space 对于更大的值 w
。
相反,将 w
排序为 v
的升序,并查找累计和达到其总和一半的位置。
q)show v:10?100
17 23 12 66 36 37 44 28 20 30
q)show w:.001*10?1000
0.418 0.126 0.077 0.829 0.503 0.12 0.71 0.506 0.804 0.012
q)med v where "j"$w*1000
36f
q)w iasc v / sort w into ascending order of v
0.077 0.418 0.804 0.126 0.506 0.012 0.503 0.12 0.71 0.829
q)0.5 1*(sum;sums)@\:w iasc v / half the sum and cumulative sums of w
2.0525
0.077 0.495 1.299 1.425 1.931 1.943 2.446 2.566 3.276 4.105
q).[>]0.5 1*(sum;sums)@\:w iasc v / compared
1111110000b
q)v i sum .[>]0.5 1*(sum;sums)@\:w i:iasc v / weighted median
36
q)\ts:1000 med v where "j"$w*1000
18 132192
q)\ts:1000 v i sum .[>]0.5 1*(sum;sums)@\:w i:iasc v
2 2576
q)wmed:{x i sum .[>]0.5 1*(sum;sums)@\:y i:iasc x}
一些值得注意的矢量技术:
如何计算 KDB 中的加权中位数?
我可以看到有一个函数med for a simple median but I could not find something like wmed
similar to wavg。
非常感谢您的帮助!
您可以通过复制(使用 where
)有效地加权中位数:
q)med 10 34 23 123 5 56 where 4 1 1 1 1 1
10f
q)med 10 34 23 123 5 56 where 1 1 1 1 1 4
56f
q)med 10 34 23 123 5 56 where 1 2 1 3 2 1
34f
如果您的权重是百分比(例如 0.15 0.10 0.20 0.30 0.25),则将它们转换为等效的 whole/counting 数字
q)med 1 2 3 4 5 where "i"0*0.15 0.10 0.20 0.30 0.25
4f
对于值 v
和权重 w
,med v where w
狼吞虎咽 space 对于更大的值 w
。
相反,将 w
排序为 v
的升序,并查找累计和达到其总和一半的位置。
q)show v:10?100
17 23 12 66 36 37 44 28 20 30
q)show w:.001*10?1000
0.418 0.126 0.077 0.829 0.503 0.12 0.71 0.506 0.804 0.012
q)med v where "j"$w*1000
36f
q)w iasc v / sort w into ascending order of v
0.077 0.418 0.804 0.126 0.506 0.012 0.503 0.12 0.71 0.829
q)0.5 1*(sum;sums)@\:w iasc v / half the sum and cumulative sums of w
2.0525
0.077 0.495 1.299 1.425 1.931 1.943 2.446 2.566 3.276 4.105
q).[>]0.5 1*(sum;sums)@\:w iasc v / compared
1111110000b
q)v i sum .[>]0.5 1*(sum;sums)@\:w i:iasc v / weighted median
36
q)\ts:1000 med v where "j"$w*1000
18 132192
q)\ts:1000 v i sum .[>]0.5 1*(sum;sums)@\:w i:iasc v
2 2576
q)wmed:{x i sum .[>]0.5 1*(sum;sums)@\:y i:iasc x}
一些值得注意的矢量技术: