代码改变世界

Note:windowed-aggregated-in-Scidb

2015-08-19 15:00  wendy#  阅读(142)  评论(0)    收藏  举报
文章摘要:
1、计算经济里面很重要的操作是将数据聚集到更长的间隔上分析,比如从分钟到一天。Scidb很适合这类操作。
2、金融时间序列:噪音,稀疏稠密,很少在raw data 上处理,因此将raw data 聚合操作,只取每个interval的最后一个值参与操作是广泛的用法。
3、三种操作:
  window       长度固定
  variable window   出现空值时找到不是空值作为wnidow的边界 
  regrid         直观的将数据在某维度上从细粒度聚合到粗粒度,改变的值是属性和该维度。
  window 和 variable window 有重复的区域出现,regrid没有。
  window 和regrid都可以多维度上聚合,即为子数组形式。
  regrid和window 相当于在一个范围内选取了某一代表,修改其属性值,区别在于,regrid没有内容重叠,window有内容重叠。window也是聚合几个cell但是每个interval之间是有重叠的部分的。window和regrid出来的interval都是一个多维的子数组。
 
4、一般操作:operation:average count max min stdev var first_value last_value top_5 median 
4、可以做不同粒度上的聚合操作。
5、可以做不同维度上的聚合操作。
6、已经聚合的数据可以再处理。
 
股票数据的例子:
对于股票数据,用三维数组存储,维度为[exchange_index,symbol_index,day_index],每个cell都有属性:<op,hi,lo,cl,vo>,分别代表open(first) high(max) low(min) close(last) volume(sum)。五天的数据需要聚合:regrid结果会减少数据量,相当于在day这个维度上压缩。而window的结果不会减少数据量,但是window中的每个cell其实已经代表了五天的数据聚合,只不过是有重复计算的部分。
 
查询语言:
select max(day),...
into regriddedArray from rawdata
regrid as (partition by day_id 5)
5指的是每5天换做一天。
 
select max(day),...
into agregateArray
from rawdata
fixed window as (partition by day_id 1 preceding and 1 following)
                          (partition by symbol_id 0 preceding and 1 following)
 
1preceding 和 1following 为了确定centroid 的位置,即window操作interval 的中心,这个及3个cell。
0receding 和 1following 涉及2个cell。