标签: time-series

存储时间序列数据的最佳开源解决方案是什么?

我有兴趣监控一些对象.我希望每15分钟获得大约10000个数据点.(也许不是一开始,但这是'一般球场').我还希望能够获得每日,每周,每月和每年的统计数据.将数据保持在最高分辨率(15分钟)超过两个月并不重要.

我正在考虑各种方法来存储这些数据,并且一直在查看经典的关系数据库,或者在无模式数据库(例如SimpleDB)上.

我的问题是,这样做的最佳方式是什么?我非常希望开源(和免费)解决方案成为专有的高成本解决方案.

小记:我正在用Python编写这个应用程序.

python database statistics time-series schemaless

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

R:填写时间序列中缺少的日期?

我有一个动物园时间序列,错过了几天.为了填补它并有一个连续的系列我做...

我从头到尾生成一个chron日期时间序列.

我把我的系列与这个合并.

我使用na.locf代替具有las遮挡的NAs.

我删除了syntetic chron序列.

我可以更容易吗?也许有一些与频率相关的指数函数?

r time-series fill zoo

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

R中的"来自CSS的非固定季节性AR部分"错误

我正在尝试适应季节性分解系列的ARIMA模型.但是当我尝试执行以下操作时:

fit = arima(diff(series), order=c(1,0,0),
   seasonal = list(order = c(1, 0, 0), period = NA))
Run Code Online (Sandbox Code Playgroud)

它给了我以下错误:

arima中的错误(diff(系列),order = c(1,0,0),seasonal = list(order = c(1,:来自CSS的非平稳季节性AR部分)

出了什么问题,错误是什么意思?

r time-series

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

用于python中的时间序列分析的包

我正在研究python中的时间序列.我觉得有用和有前途的图书馆是

  • 大熊猫;
  • statsmodel(用于ARIMA);
  • 大熊猫提供简单的指数平滑.

也用于可视化:matplotlib

有没有人知道指数平滑的库?

python time-series forecasting pandas statsmodels

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

多个观测变量的隐马尔可夫模型

我试图使用隐马尔可夫模型(HMM)来解决一个问题,即我在每个时间点都有不同的观察变量(Yti)和一个隐藏变量(Xt).为清楚起见,让我们假设所有观察到的变量(Yti)都是分类的,其中每个Yti传达不同的信息,因此可能具有不同的基数.下图给出了一个说明性的例子,其中M = 3.

在此输入图像描述

我的目标是使用Baum-Welch算法从我观察到的变量序列(Yti)中训练HMM的过渡,发射和先验概率.比方说,Xt最初会有2个隐藏状态.

我已经阅读了一些教程(包括着名的Rabiner论文),并阅读了一些HMM软件包的代码,即" MatLab中HMM工具箱 "和" Python中hmmpytk包 ".总的来说,我进行了广泛的网络搜索,我所能找到的所有资源 - 仅涵盖了每个时间点只有一个观察变量(M = 1)的情况.这越来越让我觉得HMM不适合具有多个观察变量的情况.

  • 是否有可能将图中描述的问题建模为HMM?
  • 如果是,如何修改Baum-Welch算法以满足基于多变量观测(发射)概率训练HMM参数的需要?
  • 如果没有,您是否知道更适合图中所示情况的方法?

谢谢.

编辑:本文中,图中描述的情况被描述为动态朴素贝叶斯,其中 - 在训练和估计算法方面 - 需要对单变量HMM略微扩展Baum-Welch和Viterbi算法.

machine-learning time-series hidden-markov-models

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

时间序列 - 数据分割和模型评估

我试图使用机器学习来根据时间序列数据进行预测.在其中一个stackoverflow问题(R中的CARET包中的createTimeSlices函数)是使用createTimeSlices进行模型训练和参数调整的交叉验证的示例:

    library(caret)
    library(ggplot2)
    library(pls)
    data(economics)
    myTimeControl <- trainControl(method = "timeslice",
                                  initialWindow = 36,
                                  horizon = 12,
                                  fixedWindow = TRUE)

    plsFitTime <- train(unemploy ~ pce + pop + psavert,
                        data = economics,
                        method = "pls",
                        preProc = c("center", "scale"),
                        trControl = myTimeControl)
Run Code Online (Sandbox Code Playgroud)

我的理解是:

  1. 我需要将数据拆分为训练和测试集.
  2. 使用训练集进行参数调整.
  3. 在测试集上评估获得的模型(使用R2,RMSE等)

因为我的数据是时间序列,我想我不能使用bootstraping将数据分成训练和测试集.所以,我的问题是:我是对的吗?如果是这样 - 如何使用createTimeSlices进行模型评估?

r time-series r-caret

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

计算自R上次事件以来的天数

我的问题涉及如何计算自R中发生的事件以来的天数.以下是数据的最小示例:

df <- data.frame(date=as.Date(c("06/07/2000","15/09/2000","15/10/2000","03/01/2001","17/03/2001","23/05/2001","26/08/2001"), "%d/%m/%Y"), 
event=c(0,0,1,0,1,1,0))
        date event
1 2000-07-06     0
2 2000-09-15     0
3 2000-10-15     1
4 2001-01-03     0
5 2001-03-17     1
6 2001-05-23     1
7 2001-08-26     0
Run Code Online (Sandbox Code Playgroud)

二进制变量(事件)的值为1,表示事件发生,否则为0.重复观察在不同时间完成(date)预期输出如下,自上次事件(tae)以来的日期:

 date        event       tae
1 2000-07-06     0        NA
2 2000-09-15     0        NA
3 2000-10-15     1         0
4 2001-01-03     0        80
5 2001-03-17     1       153
6 2001-05-23     1        67
7 2001-08-26     0        95
Run Code Online (Sandbox Code Playgroud)

我一直在寻找类似问题的答案,但他们没有解决我的具体问题.我试图从类似的帖子(计算自上次事件以来经过的时间)实现想法,下面是我最接近解决方案:

library(dplyr)
df %>%
  mutate(tmp_a = c(0, diff(date)) * !event,
         tae = cumsum(tmp_a)) …
Run Code Online (Sandbox Code Playgroud)

r time-series

17
推荐指数
1
解决办法
2412
查看次数

R:合并两个不规则的时间序列

我有两个多变量时间序列x和y,两者都覆盖了大致相同的时间范围(一个在另一个之前两年开始,但它们在同一天结束).两个系列都以日期列旁边的空列形式缺少观察结果,并且在某种意义上,其中一个系列具有在另一个系列中找不到的几个日期,反之亦然.

我想创建一个数据框(或类似),其中列列出了在x或y中找到的所有日期,没有重复日期.对于每个日期(行),我想在y的观察值旁边水平叠加来自x的观测值,其中NA填充缺失的单元格.例:

>x
"1987-01-01"   7.1    NA   3
"1987-01-02"   5.2    5    2
"1987-01-06"   2.3    NA   9

>y
"1987-01-01"   55.3   66   45
"1987-01-03"   77.3   87   34

# result I would like
"1987-01-01"   7.1    NA   3   55.3   66   45
"1987-01-02"   5.2    5    2   NA     NA   NA
"1987-01-03"   NA     NA   NA  77.3   87   34
"1987-01-06"   2.3    NA   9   NA     NA   NA
Run Code Online (Sandbox Code Playgroud)

我尝试过:使用zoo包,我尝试了merge.zoo方法,但这似乎只是将两个系列相互叠加,并附有日期(作为数字,例如"1987-01-02"显示如每个系列中的6210)出现在两个单独的列中.

我已经坐了几个小时几乎无处可去,所以所有的帮助都表示赞赏.

编辑:根据Soumendra的建议,下面包含一些代码

atcoa <- read.csv(file = "ATCOA_full_adj.csv", header = TRUE)
atcob <- read.csv(file = "ATCOB_full_adj.csv", header = TRUE)
atcoa$date <- as.Date(atcoa$date)
atcob$date …
Run Code Online (Sandbox Code Playgroud)

merge r time-series zoo

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

pandas,python - 如何选择时间序列中的特定时间

我现在工作了很长一段时间使用python和pandas来分析一组每小时数据并发现它非常好(来自Matlab.)

现在我有点卡住了.我创造了我的DataFrame喜欢:

SamplingRateMinutes=60
index = DateRange(initialTime,finalTime, offset=datetools.Minute(SamplingRateMinutes))
ts=DataFrame(data, index=index)
Run Code Online (Sandbox Code Playgroud)

我现在要做的是选择10到13和20-23小时的所有日期的数据,以便使用这些数据进行进一步的计算.到目前为止,我使用了切片数据

 selectedData=ts[begin:end]
Run Code Online (Sandbox Code Playgroud)

我肯定会得到某种脏循环来选择所需的数据.但必须有一种更优雅的方式来指出我想要的东西.我确信这是一个常见的问题,伪代码的解决方案看起来应该是这样的:

myIndex=ts.index[10<=ts.index.hour<=13 or 20<=ts.index.hour<=23]
selectedData=ts[myIndex]
Run Code Online (Sandbox Code Playgroud)

提到我是一名工程师而且没有程序员:) ...

python indexing time-series pandas

16
推荐指数
3
解决办法
2万
查看次数

为什么OpenTSDB选择HBase进行时间序列数据存储?

如果有人对选择HBase作为OpenTSDB的数据存储引擎有所了解,我真的很感激吗?

还考虑了其​​他选择,例如Whisper(Graphite front-end + Carbon persistence)?

像HBase这样的面向列的数据库如何成为时间序列数据的更好选择?

hbase time-series opentsdb

16
推荐指数
1
解决办法
7024
查看次数