Questions tagged «time-series»

时间序列是一系列数据点,其值在连续时间(连续时间或离散时间段)测量。时间序列分析利用这种自然的时间顺序来从基础数据中提取含义和趋势。

5
在同一张图中使用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) ) 如何使用x在x轴上绘制时间序列var0和var1同一张图?如果您制作和使用不同的颜色,则可获得加分,并可包含图例!dateggplot2var0var1 我敢肯定这很简单,但是我找不到任何示例。
305 r  ggplot2  graph  time-series  r-faq 


10
存储时间序列数据,是关系数据还是非关系数据?
我正在创建一个系统,该系统使用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 该表中的行数为: d * m_d * f * t 其中d是的数量的装置,m_d是累计度量的数目被记录为所有设备,f是频率在其中数据被轮询和t是总量时间系统已收集数据。 如果用户一年每5分钟记录3台设备的10个指标,那么我们的记录将不足500万条。 指标 如果没有索引fk_to_device并且无法fk_to_metric扫描此不断扩展的表,则将花费太多时间。因此,索引上述字段以及timestamp(用于创建具有局部时间段的图形)都必须是索引。 非关系(NoSQL) MongoDB具有集合的概念,与表不同的是,这些表可以以编程方式创建而无需设置。有了这些,我就可以划分每个设备的数据存储,甚至是每个设备记录的每个指标。 我没有使用NoSQL的经验,也不知道它们是否提供任何增强查询性能的功能(例如索引),但是上一段建议在数据存储在NoSQL下的结构中执行大多数传统的关系查询工作。 未定 具有正确索引的关系解决方案会在一年之内减少吗?还是NoSQL方法的基于集合的结构(与我对存储数据的思维模型匹配)提供了明显的好处?

3
如何将垂直的geom_vline设置为上课日期的x轴?
即使我在POSIXct和的google组中找到了Hadley的帖子geom_vline,也无法完成。我有一个时间序列,例如1998年,2005年和2010年,我想画一条垂直线。我尝试了ggplotand qplot语法,但仍然看不到任何垂直线,或者在第一个垂直网格上绘制了垂直线,整个系列向右有些奇怪。 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 我的日期字段格式为“ 1993-07-01”,属于class Date。
109 r  date  ggplot2  time-series 

14
如何使用NumPy计算移动平均值?
似乎没有函数可以简单地计算numpy / scipy的移动平均值,从而导致解决方案复杂。 我的问题有两个: (正确)使用numpy实现移动平均的最简单方法是什么? 由于这似乎很简单且容易出错,是否有充分的理由不将电池包括在这种情况下?

8
熊猫可以绘制日期直方图吗?
我已经将我的Series系列产品,并将其强制为dtype =的datetime列datetime64[ns](尽管仅需要日期分辨率...不确定如何更改)。 import pandas as pd df = pd.read_csv('somefile.csv') column = df['date'] column = pd.to_datetime(column, coerce=True) 但是绘图不起作用: ipdb> column.plot(kind='hist') *** TypeError: ufunc add cannot use operands with types dtype('<M8[ns]') and dtype('float64') 我想绘制一个直方图,该直方图仅按周,月或年显示日期计数。 当然有办法做到pandas吗?

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 它在2004-03-07和之间生成162个日期2004-08-16,这正是我想要的。该代码的问题在于,当两个日期来自不同年份时(例如,当我尝试使用2007-02-01和时),它将无法给出正确的答案2008-04-01。 有更好的解决方案吗?

2
如何解析毫秒?
我如何使用Rstrptime或任何其他函数解析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"`

8
熊猫:按时间间隔滚动平均值
我是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 …

8
适用于python的auto.arima()
我正在尝试使用ARMA ARIMA模型预测每周销售量。我找不到用于调整中的order(p,d,q)的函数statsmodels。目前R具有功能forecast::auto.arima()可调整(p,d,q)参数的功能。 如何为模型选择正确的顺序?python中有为此目的提供的任何库吗?

1
具有3个月数据集的多元时间序列预测
我产生了3个月的数据(每一行对应于每一天),并且我想对同一数据执行多元时间序列分析: 可用的列是- Date Capacity_booked Total_Bookings Total_Searches %Variation 每个Date在数据集中都有1个条目,并且有3个月的数据,我想拟合一个多元时间序列模型来预测其他变量。 到目前为止,这是我的尝试,我尝试通过阅读文章来实现相同目的。 我也一样- df['Date'] = pd.to_datetime(Date , format = '%d/%m/%Y') data = df.drop(['Date'], axis=1) data.index = df.Date from statsmodels.tsa.vector_ar.vecm import coint_johansen johan_test_temp = data coint_johansen(johan_test_temp,-1,1).eig #creating the train and validation set train = data[:int(0.8*(len(data)))] valid = data[int(0.8*(len(data))):] freq=train.index.inferred_freq from statsmodels.tsa.vector_ar.var_model import VAR model …

2
熊猫:基于局部极小值最大值的数据之字形分割
我有一个时间序列数据。产生资料 date_rng = pd.date_range('2019-01-01', freq='s', periods=400) df = pd.DataFrame(np.random.lognormal(.005, .5,size=(len(date_rng), 3)), columns=['data1', 'data2', 'data3'], index= date_rng) s = df['data1'] 我想创建一条连接局部最大值和局部最小值之间的曲折线,它满足以下条件:|highest - lowest value|每条曲折线在y轴上必须超过上一条距离的百分比(例如20%)之字形线,以及预先设定的值k(例如1.2) 我可以使用以下代码找到本地极值: # Find peaks(max). peak_indexes = signal.argrelextrema(s.values, np.greater) peak_indexes = peak_indexes[0] # Find valleys(min). valley_indexes = signal.argrelextrema(s.values, np.less) valley_indexes = valley_indexes[0] # Merge peaks and valleys data …

1
如何使用tempdisagg软件包中的td命令将每月数据分解为每日数据频率?
我有一个每月频率数据,试图将其分解为每日频率数据。所以我使用下面的代码td从tempdisaggR中的包中使用命令: dat=ts(data[,2]) result=td(dat~1, conversion = "average", to = "day", method = "chow-lin-maxlog") 然后我收到以下错误消息: Error in td(dat ~ 1, conversion = "average", to = "day", method = "chow-lin-maxlog") : 'to' argument: unknown character string 我使用的数据dat如下: > dput(head(dat)) c(82.47703009, 84.63094431, 70.00659987, 78.81135651, 74.749746,82.95638213) 因此,尽管此数据dat以每月频率显示,但开始和结束尚未反映出来。实际上,开始日期是1/1997,结束日期是9/2019。 在将此月度数据dat分解为每日频率数据方面,我可以得到帮助吗?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.