标签: time-series

是否有强大的时间序列数据库系统?

在多个项目中,我们必须存储,汇总,评估简单的测量值.一行通常由时间戳,值和值的一些属性组成.在某些应用程序中,我们希望每秒存储1000个值以及更多值.这些值不仅必须插入,而且还必须以相同的速率删除,因为值的生命周期限制在一年左右(在不同的聚合步骤中,我们不会存储整年的1000/s).

到目前为止,我们已开发出不同的解决方案.一个基于Firebird,一个基于Oracle,另一个基于一些自制存储机制.但这些都不是非常令人满意的解决方案.

两种RDBMS解决方案都无法处理所需的数据流.除此之外,提供值的应用程序(例如设备驱动程序)不能轻易附加到数据库,插入语句很麻烦.最后,虽然强烈需要具有数据的SQL接口,但典型的评估很难在SQL中制定并且执行速度慢.例如,在上个月的所有测量中,每15分钟找到一个带有时间戳的最大值.

自制的解决方案可以处理插入速率,并且具有客户友好的API,但它没有像查询语言那样,并且不能被其他应用程序通过某些标准接口(例如报告)使用.

我梦想中的最佳解决方案是数据库系统:

  • 有一个非常快速插入的API
  • 能够以相同的速度删除/截断值
  • 提供标准SQL接口,具有对典型时间序列数据的特定支持

您是否知道某些数据库接近这些要求,或者您是否会以不同的方式解决问题?

database performance time-series

62
推荐指数
2
解决办法
4万
查看次数

时间序列中的模式识别

通过处理时间序列图,我想检测看起来与此类似的模式:

在此输入图像描述

以示例时间序列为例,我希望能够检测到这里标记的模式:

在此输入图像描述

我需要使用什么样的AI算法(我假设的marchine学习技术)才能实现这一目标?有没有我可以使用的库(在C/C++中)?

pattern-recognition machine-learning time-series

57
推荐指数
3
解决办法
4万
查看次数

R data.table滑动窗口

使用data.table包实现滑动窗口函数的最佳(最快)方法是什么?

我正在尝试计算滚动中位数但每个日期有多行(由于2个额外的因素),我认为这意味着动物园rollapply函数不起作用.以下是使用naive for循环的示例:

library(data.table)
df <- data.frame(
  id=30000,
  date=rep(as.IDate(as.IDate("2012-01-01")+0:29, origin="1970-01-01"), each=1000),
  factor1=rep(1:5, each=200),
  factor2=1:5,
  value=rnorm(30, 100, 10)
)

dt = data.table(df)
setkeyv(dt, c("date", "factor1", "factor2"))

get_window <- function(date, factor1, factor2) {
  criteria <- data.table(
    date=as.IDate((date - 7):(date - 1), origin="1970-01-01"),
    factor1=as.integer(factor1),
    factor2=as.integer(factor2)
  )
  return(dt[criteria][, value])
}

output <- data.table(unique(dt[, list(date, factor1, factor2)]))[, window_median:=as.numeric(NA)]

for(i in nrow(output):1) {
  print(i)
  output[i, window_median:=median(get_window(date, factor1, factor2))]
}
Run Code Online (Sandbox Code Playgroud)

r time-series sliding-window data.table

48
推荐指数
1
解决办法
8280
查看次数

在另一个时间范围内返回数据子集时间范围?

有非常好的方法来xts对象进行子集化.例如,可以获取所有年,月,日的所有数据,但严格地在上午9:30到下午4点之间执行:

my_xts["T09:30/T16:00"]
Run Code Online (Sandbox Code Playgroud)

或者您可以通过以下方式获得两个日期之间的所有观察:

my_xts["2012-01-01/2012-03-31"]
Run Code Online (Sandbox Code Playgroud)

或者在某个特定日期之前/之后的所有日期:

my_xts["/2011"]  # from start of data until end of 2011
my_xts["2011/"]  # from 2011 until the end of the data
Run Code Online (Sandbox Code Playgroud)

如何获取所有年份的特定月份或所有月份和年份的特定日期的所有数据?是否存在任何其他子集技巧?

r time-series subset xts

48
推荐指数
2
解决办法
4万
查看次数

将数据帧转换为xts

我正在尝试使用as.xts()方法将数据帧转换为xts对象.这是我的输入数据帧q:

q
                      t x  
1  2006-01-01 00:00:00  1  
2  2006-01-01 01:00:00  2  
3  2006-01-01 02:00:00  3

str(q)
    'data.frame':   10 obs. of  2 variables:
 $ t: POSIXct, format: "2006-01-01 00:00:00" "2006-01-01 01:00:00" "2006-01-01 02:00:00" "2006-01-01 03:00:00" ...  
 $ x: int  1 2 3 4 5 6 7 8 9 10
Run Code Online (Sandbox Code Playgroud)

结果是:

> as.xts(q)
Error in as.POSIXlt.character(x, tz, ...) : 
  character string is not in a standard unambiguous format
Run Code Online (Sandbox Code Playgroud)

这是我能想到的最简单的例子,所以没有让它工作是非常令人沮丧的......任何帮助都表示赞赏!

r time-series coerce dataframe xts

47
推荐指数
3
解决办法
7万
查看次数

Python中的时间序列分解函数

时间序列分解是将时间序列数据集分成三个(或更多)分量的方法.例如:

x(t) = s(t) + m(t) + e(t)
Run Code Online (Sandbox Code Playgroud)

哪里

t is the time coordinate
x is the data
s is the seasonal component
e is the random error term
m is the trend
Run Code Online (Sandbox Code Playgroud)

在RI会做的功能decomposestl.我怎么能在python中这样做?

python time-series

46
推荐指数
4
解决办法
4万
查看次数

滚动连接R中的data.table

我试图更多地了解滚动连接的工作方式和一些混乱,我希望有人可以为我澄清这一点.举一个具体的例子:

dt1 <- data.table(id=rep(1:5, 10), t=1:50, val1=1:50, key="id,t")
dt2 <- data.table(id=rep(1:5, 2), t=1:10, val2=1:10, key="id,t")
Run Code Online (Sandbox Code Playgroud)

我希望这会生成一个long data.table,其中值为dt2:

dt1[dt2,roll=TRUE]
Run Code Online (Sandbox Code Playgroud)

相反,正确的方法似乎是:

dt2[dt1,roll=TRUE]
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释更多关于如何加入data.table作品,因为我显然没有正确理解它.我认为这dt1[dt2,roll=TRUE]对应于sql等价select * from dt1 right join dt2 on (dt1.id = dt2.id and dt1.t = dt2.t),除了增加的功能locf.

另外文档说:

X[Y] is a join, looking up X's rows using Y (or Y's key if it has one) 
as an index.
Run Code Online (Sandbox Code Playgroud)

这使得似乎只返回X中的内容,正在进行的连接是内连接,而不是外连接.roll=T那个什么时候但那个特别id不存在dt1?多玩一点我无法理解列中放置了什么值.

join r time-series data.table

43
推荐指数
1
解决办法
1万
查看次数

在Pandas MultiIndex中重新采样

我有一些分层数据,最终到时间序列数据,看起来像这样:

df = pandas.DataFrame(
    {'value_a': values_a, 'value_b': values_b},
    index=[states, cities, dates])
df.index.names = ['State', 'City', 'Date']
df

                               value_a  value_b
State   City       Date                        
Georgia Atlanta    2012-01-01        0       10
                   2012-01-02        1       11
                   2012-01-03        2       12
                   2012-01-04        3       13
        Savanna    2012-01-01        4       14
                   2012-01-02        5       15
                   2012-01-03        6       16
                   2012-01-04        7       17
Alabama Mobile     2012-01-01        8       18
                   2012-01-02        9       19
                   2012-01-03       10       20
                   2012-01-04       11       21
        Montgomery 2012-01-01       12       22
                   2012-01-02       13       23
                   2012-01-03       14       24
                   2012-01-04       15       25
Run Code Online (Sandbox Code Playgroud)

我想对每个城市进行时间重新采样,所以就像这样

df.resample("2D", how="sum")
Run Code Online (Sandbox Code Playgroud)

会输出 …

python time-series hierarchical-data pandas

42
推荐指数
5
解决办法
2万
查看次数

R中的多变量时间序列建模

我想用R拟合某种多变量时间序列模型

以下是我的数据示例:

   u     cci     bci     cpi     gdp    dum1 dum2 dum3    dx  
 16.50   14.00   53.00   45.70   80.63  0   0    1     6.39 
 17.45   16.00   64.00   46.30   80.90  0   0    0     6.00 
 18.40   12.00   51.00   47.30   82.40  1   0    0     6.57 
 19.35   7.00    42.00   48.40   83.38  0   1    0     5.84 
 20.30   9.00    34.00   49.50   84.38  0   0    1     6.36 
 20.72   10.00   42.00   50.60   85.17  0   0    0     5.78 
 21.14   6.00    45.00   51.90   85.60  1   0    0     5.16 
 21.56   9.00    38.00   52.60   86.14  0 …
Run Code Online (Sandbox Code Playgroud)

statistics r time-series

41
推荐指数
2
解决办法
6万
查看次数

插入缺少日期/时间的行

我是R的新手但是已经转向它来解决我正在尝试处理的大型数据集的问题.目前我有4列数据(Y值)设置为分钟间隔时间戳(月/日/年小时:分钟)(X值),如下所示:

    timestamp          tr            tt         sr         st  
1   9/1/01 0:00   1.018269e+02   -312.8622   -1959.393   4959.828  
2   9/1/01 0:01   1.023567e+02   -313.0002   -1957.755   4958.935  
3   9/1/01 0:02   1.018857e+02   -313.9406   -1956.799   4959.938  
4   9/1/01 0:03   1.025463e+02   -310.9261   -1957.347   4961.095  
5   9/1/01 0:04   1.010228e+02   -311.5469   -1957.786   4959.078
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是缺少一些时间戳值 - 例如,在9/1/01 0:13和9/1/01 0:27之间可能存在间隙,并且这些间隙在数据集中是不规则的.我需要将这些系列中的几个放入同一个数据库中,因为每个系列的缺失值不同,所以日期当前并不对齐每一行.

我想为这些丢失的时间戳生成行,并用空值(没有数据,不是零)填充Y列,这样我就有了一个连续的时间序列.

老实说,我不太确定从哪里开始(在我学习之前没有真正使用过R!)但是任何帮助都会非常感激.到目前为止,我已经安装了chron和zoo,因为看起来它们可能很有用.

谢谢!

r time-series missing-data

41
推荐指数
4
解决办法
4万
查看次数