标签: time-series

在同一图表上使用ggplot2将两个变量绘制为线条

这是一个非常新的问题,但我说有这样的数据:

test_data <-
  data.frame(
    var0 = 100 + c(0, cumsum(runif(49, -20, 20))),
    var1 = 150 + c(0, cumsum(runif(49, -10, 10))),
    date = seq(as.Date("2002-01-01"), by="1 month", length.out=100)
  )
Run Code Online (Sandbox Code Playgroud)

如何在x轴上使用?绘制时间序列var0var1同一图表?奖励积分,如果你做和不同的颜色,并且可以包括一个传奇!dateggplot2var0var1

我确信这很简单,但我找不到任何例子.

r graph time-series ggplot2 r-faq

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

实时时间序列数据中的峰值信号检测


更新:迄今为止 表现最佳的算法就是这个算法.


该问题探讨了用于检测实时时间序列数据中的突然峰值的稳健算法.

请考虑以下数据集:

p = [1 1 1.1 1 0.9 1 1 1.1 1 0.9 1 1.1 1 1 0.9 1 1 1.1 1 1 1 1 1.1 0.9 1 1.1 1 1 0.9 1, ...
     1.1 1 1 1.1 1 0.8 0.9 1 1.2 0.9 1 1 1.1 1.2 1 1.5 1 3 2 5 3 2 1 1 1 0.9 1 1 3, ... 
     2.6 4 3 3.2 2 1 1 0.8 4 4 …
Run Code Online (Sandbox Code Playgroud)

language-agnostic algorithm signal-processing time-series data-analysis

195
推荐指数
18
解决办法
14万
查看次数

存储时间序列数据,关系数据还是非数据?

我正在创建一个系统,使用SNMP以(可能)5分钟的间隔轮询设备以获取有关各种指标的数据,例如CPU利用率,磁盘利用率,温度等.最终目标是以时间序列图的形式为系统用户提供可视化.

我已经看过了,在过去使用的RRDTool,但拒绝了它作为存储捕获的数据无限地将我的项目很重要,我想更高层次和更灵活的访问捕获的数据.所以我的问题是:

什么是更好的关系数据库(如MySQL或PostgreSQL)或非关系数据库或NoSQL数据库(如MongoDB或Redis)在查询数据进行图形处理时的性能.

相关的

给定一个关系数据库,我将使用一个data_instances表,其中将存储为所有设备测量的每个度量捕获的每个数据实例,并包含以下字段:

领域: id fk_to_device fk_to_metric metric_value timestamp

当我想在特定设备上绘制特定指标的图形时,我必须查询此单个表,过滤掉其他设备,以及为此设备分析的其他指标:

SELECT metric_value, timestamp FROM data_instances
    WHERE fk_to_device=1 AND fk_to_metric=2
Run Code Online (Sandbox Code Playgroud)

此表中的行数为:

d * m_d * f * t
Run Code Online (Sandbox Code Playgroud)

其中d是的数量的装置,m_d是累计度量的数目被记录为所有设备,f频率在其中数据被轮询和t是总量时间系统已收集数据.

对于一年中每5分钟记录3个设备的10个度量标准的用户,我们将有不到500万条记录.

索引

没有索引fk_to_device并且fk_to_metric扫描这个不断扩展的表将花费太多时间.因此,索引上述字段以及timestamp(用于创建具有本地化期间的图表)是必需的.

非关系(NoSQL)

MongoDB具有集合的概念,与表不同,这些可以在没有设置的情况下以编程方式创建.有了这些,我可以为每个设备划分数据存储,甚至为每个设备记录每个指标.

我没有使用NoSQL的经验,也不知道它们是否提供任何查询性能增强功能,例如索引,但是前一段提出在数据存储在NoSQL下的结构中进行大多数传统的关系查询工作.

未定

具有正确索引的关系解决方案是否会在一年内减少爬行?或者NoSQL方法的基于集合的结构(与我存储的数据的心智模型相匹配)是否提供了明显的好处?

database time-series non-relational-database relational-database nosql

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

如何将一个垂直geom_vline转换为类日期的x轴?

即使我发现哈德利对谷歌的论坛中发帖POSIXctgeom_vline,我无法完成它.我有一个时间序列,并希望绘制1998年,2005年和2010年的垂直线.我尝试使用ggplotqplot语法,但我仍然看不到垂直线,或者在第一个垂直网格上绘制垂直线,整个系列在右边有点奇怪地移动.

gg <- ggplot(data=mydata,aes(y=somevalues,x=datefield,color=category)) +
      layer(geom="line")
gg + geom_vline(xintercept=mydata$datefield[120],linetype=4)
# returns just the time series plot I had before, 
# interestingly the legend contains dotted vertical lines
Run Code Online (Sandbox Code Playgroud)

我的日期字段格式为"1993-07-01",属于班级Date.

r date time-series ggplot2

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

如何使用NumPy计算移动平均线?

似乎没有简单计算numpy/scipy上的移动平均值的函数,导致复杂的解决方案.

我的问题是双重的:

  • 用numpy(正确)实现移动平均线的最简单方法是什么?
  • 由于这看起来非常重要且容易出错,因此有充分的理由不在这种情况下包含电池吗?

python numpy time-series scipy

84
推荐指数
8
解决办法
15万
查看次数

Pandas可以绘制日期的直方图吗?

我接受了我的系列并将其强制转换为dtype =的日期时间列datetime64[ns](虽然只需要一天的分辨率......不确定如何更改).

import pandas as pd
df = pd.read_csv('somefile.csv')
column = df['date']
column = pd.to_datetime(column, coerce=True)
Run Code Online (Sandbox Code Playgroud)

但绘图不起作用:

ipdb> column.plot(kind='hist')
*** TypeError: ufunc add cannot use operands with types dtype('<M8[ns]') and dtype('float64')
Run Code Online (Sandbox Code Playgroud)

我想绘制一个直方图,只显示按周,月或年的日期计数.

当然有办法做到这一点pandas

python time-series matplotlib pandas

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

如何解析毫秒?

我如何使用strptime或任何其他函数来解析R中的毫秒时间戳?

time[1]
# [1] "2010-01-15 13:55:23.975"
strptime(time[1], format="%Y-%m-%d %H:%M:%S.%f")
# [1] NA
strptime(time[1], format="%Y-%m-%d %H:%M:%S")
# [1] "2010-01-15 13:55:23"`
Run Code Online (Sandbox Code Playgroud)

datetime r time-series strptime

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

生成PostgreSQL中两个日期之间的时间序列

我有这样的查询,很好地生成两个给定日期之间的一系列日期:

select date '2004-03-07' + j - i as AllDate 
from generate_series(0, extract(doy from date '2004-03-07')::int - 1) as i,
     generate_series(0, extract(doy from date '2004-08-16')::int - 1) as j
Run Code Online (Sandbox Code Playgroud)

它在2004-03-07和之间生成162个日期2004-08-16,这就是我想要的.这段代码的问题是,它不会得到正确的答案时,这两个日期都不同年份,例如,当我尝试2007-02-012008-04-01.

有更好的解决方案吗?

postgresql date time-series postgresql-9.1 generate-series

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

熊猫:按时间间隔滚动平均值

我是Pandas的新手....我有一堆民意调查数据; 我想计算一个滚动均值,以便根据三天的窗口得出每天的估计值.当我从理解这个问题,在rolling_*函数计算基于值指定数量的窗口,而不是具体的日期时间范围.

是否有实现此功能的不同功能?还是我坚持写自己的?

编辑:

样本输入数据:

polls_subset.tail(20)
Out[185]: 
            favorable  unfavorable  other

enddate                                  
2012-10-25       0.48         0.49   0.03
2012-10-25       0.51         0.48   0.02
2012-10-27       0.51         0.47   0.02
2012-10-26       0.56         0.40   0.04
2012-10-28       0.48         0.49   0.04
2012-10-28       0.46         0.46   0.09
2012-10-28       0.48         0.49   0.03
2012-10-28       0.49         0.48   0.03
2012-10-30       0.53         0.45   0.02
2012-11-01       0.49         0.49   0.03
2012-11-01       0.47         0.47   0.05
2012-11-01       0.51         0.45   0.04
2012-11-03       0.49         0.45   0.06
2012-11-04       0.53         0.39   0.00
2012-11-04       0.47         0.44   0.08
2012-11-04       0.49         0.48   0.03
2012-11-04       0.52         0.46 …
Run Code Online (Sandbox Code Playgroud)

python time-series pandas

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

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

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

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

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

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

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

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

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

database performance time-series

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