R中时间序列分析的数据结构

时间:2016-10-15 03:22:12

标签: r dataframe time-series xts cross-correlation

这是一个基本问题,但我尝试搜索,但无法得到答案。

我有超过1万个与420家不同公司有关的时间序列记录。对于每个公司,我都有一个时间戳(月/年)和一些变量。时间序列的长度不一样。

在此阶段,所有记录都在一个dataframe中,看起来像这样

Date         Code   Var1    Var2    Var3    Var3
01/01/2010   AAA                
01/02/2010   AAA                
01/03/2010   AAA                
01/01/2010   BBB                
01/02/2010   BBB                
01/03/2010   BBB                
01/04/2010   BBB                
01/01/2010   CCC                
01/02/2010   CCC                
01/03/2010   CCC                

我稍后需要进行互相关,时间序列聚类并构建矢量自回归模型。

问题:

使用此类数据的准则是什么: - 按原样使用dataframe - 将其转换为每个公司的个人时间序列。

很高兴接受任何其他建议!

1 个答案:

答案 0 :(得分:4)

没有黑白答案:两种对象类型都有不同用途的优势(虽然我几乎总是使用data.table代替data.frame来提问,因为你获得了更多的功能)。我个人在研究中可以互换使用,但通常以xts格式保留原始基础数据(在xts个对象中打勾或OHLC条数据)。

两种对象类型都很快,计算密集型代码用C语言编写。

如果时间序列的尺寸(长度或宽度)不大,您可以轻松地在安全级别来回传输(例如data.table("index" = index(xtsobj), coredata(xtsobj)),然后根据需要合并data.tables将证券组合成横截面类型的建模。对于我使用

的时间序列,我通常在两种对象类型之间来回切换

xts个对象必须使用相同类型的所有列(numericcharacter是常见类型),如果您将分类变量与数字数据混合,则可能是一个限制(您可以将分类变量映射到数值以解决此问题,但这是额外的工作,并且在建模数据时可能会降低清晰度。)

xts合并时间序列数据(merge),特别是在不同的时间频率下,非常简单。它在TTRquantmod中构建移动窗口技术指标也非常有效。您还可以使用quantmodchart_Seriesadd_TA)和xts绘图工具(请参阅?plot.xts)来显示开箱即用的烛台/ OHLC条数据。 xts将滴答数据汇总到OHLC条形数据中,并使用to.period等有用函数非常直接地更改条形数据系列的频率(例如,从5分钟到1小时,或到每日条形), period.applyendpoints(使用C代码可以快速完成)。

如果您打算在预测模型(例如安全性,情感类别)中使用许多分类变量构建预测模型(许多线性回归或更复杂的模型),您不希望将其映射到数字,它可能最好与data.table合作。 R中的许多预测模型(以及像聚类这样的无监督方法)要求数据采用data.frame格式,在这种情况下,如果您的最终目标是以data.table/data.frame格式存储/保存/加载数据可能更有意义预测建模。 VAR / var R包中的urca个模型也使用data.frame格式。虽然注意到许多预测模型(通过caret等)要求数据采用数字matrix格式,您可以使用xts轻松从coredata(xtsobj)对象中提取数据data.frame数据到matrix格式通常也很简单。)

如果您的数据集非常大(每个安全性在内存中为大n保留n GB的价格数据,并且您希望按组重复聚合(例如,计算的平均值/ sd为按月和符号或月份和扇区返回,您可能会发现data.table更自然地使用),您可能会发现data.table更高效,它旨在处理内存/ RAM中的大量数据并且比xts操作更容易复制。