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

Data structure for time-series analysis in R

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

我有超过 1 万条时间序列记录,涉及 420 家不同的公司。对于每家公司,我都有一个时间戳 (month/year) 和一些变量。时间序列的长度不同。

在这个阶段,所有记录都在一个 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 - 将其转换为每个公司的单独时间序列。

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

没有黑白分明的答案:两种对象类型在不同用途上都有各自的优势(尽管我在问你的问题时几乎总是使用 data.table 而不是 data.frame,因为你走得太远了更多功能。)。我个人在研究中交替使用两者,但通常以 xts 格式保留原始原始基础数据(xts 对象中的报价或 OHLC 柱数据)。

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

如果你的时间序列的维度(长或宽)不大,可以方便的在安全级别来回传输(比如data.table("index" = index(xtsobj), coredata(xtsobj)),然后合并data.tables如果您希望结合证券进行横截面类型的建模。对于我使用的时间序列,我通常在两种对象类型之间来回切换

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

xts 使得合并时间序列数据(使用 merge)非常简单,尤其是在不同的时间频率上。它也非常适合在 TTRquantmod 中构建移动 window 技术指标。您还可以利用 quantmodchart_Seriesadd_TA)和 xts 绘图工具(参见 ?plot.xts)来可视化开箱即用的 candlestick/OHLC 柱数据。 xts 将分时数据聚合到 OHLC 柱数据中,并通过 to.period 等有用的函数非常简单地更改柱数据系列的频率(例如,从 5 分钟柱到 1 小时柱,或到每日柱) period.applyendpoints(使用 C 代码可以快速完成)。

如果您要构建预测模型(许多线性回归或更复杂的模型),并且预测模型中有许多您不想映射到数字的分类变量(例如安全部门、情绪类别),使用 data.table 可能会更好。 R 中的许多预测模型(以及聚类等无监督方法)要求数据采用 data.frame 格式,在这种情况下 storing/saving/loading 如果您的最终目标是 data.table/data.frame 格式的数据可能更有意义预测建模。 VAR var/urca R 包中的模型也使用 data.frame 格式。尽管注意到许多预测模型(通过 caret 等)要求数据为数字 matrix 格式,您可以使用 coredata(xtsobj)xts 对象中轻松提取(转换data.frame 数据到 matrix 格式通常也很简单)。

如果您的数据集非常大(每个证券在内存中保存 n GB 的价格数据用于大 n),并且您想按组重复聚合(例如计算 [= returns 的 65=] 按月和符号或月和扇区,您可能会发现 data.table 使用起来更自然),您可能会发现 data.table 它的设计效率更高在 memory/RAM 中处理大量数据,并且往往比 xts 操作进行更少的复制。