如何合并每月,每日和每周数据?


11

Google趋势返回每周数据,因此我必须找到一种将它们与我的每日/每月数据合并的方法。

到目前为止,我所做的就是将每个系列分解为每日数据,例如:

从:

2013-03-03-2013-03-09 37

至:

2013-03-03 37 2013-03-04 37 2013-03-05 37 2013-03-06 37 2013-03-07 37 2013-03-08 37 2013-03-09 37

但这给我的问题增加了很多复杂性。我试图根据最近6个月的值或每月数据中的6个值来预测Google搜索。每日数据意味着需要对180个过去的值进行处理。(我有10年的数据,因此每月数据为120点/每周数据为500 + /每日数据为3500+)

另一种方法是将每日数据“合并”到每周/每月数据中。但是这个过程引起了一些问题。可以对某些数据求平均,因为它们的总和代表某些东西。例如,降雨,一周中的降雨量将等于构成一周的每一天的降雨量之和。

就我而言,我正在处理价格,财务汇率等问题。对于价格,在我的领域中通常会考虑交易量,因此每周数据将是加权平均值。对于财务费率来说,它要复杂一些,其中涉及一些公式来从每日费率中建立每周费率。对于其他事情,我不知道基础属性。我认为这些属性对于避免无意义的指标非常重要(例如,平均财务利率是无稽之谈)。

所以三个问题:

对于已知和未知的属性,我应该如何处理从每日到每周/每月的数据?

我觉得像每周一样将每周/每月数据分解为每日数据有点不对劲,因为我介绍的是现实生活中没有意义的数量。所以几乎是相同的问题:

对于已知和未知的属性,我应该如何从每周/每月变为每日数据?

最后但并非最不重要的一点:给定两个具有不同时间步长的时间序列时,哪个更好:使用最低或最大时间步长?我认为这是数据数量和模型复杂性之间的折衷,但是我看不出有任何强有力的论据可供选择。

编辑:如果您知道一个工具(在R Python甚至Excel中)很容易做到,将不胜感激。


对于python,标准工具是pandas。它是专门为处理财务数据时间序列而设计的。熊猫时间序列
seanv507

想要扩展一下“未知财产”的含义吗?
TheGrimmScientist

Answers:


8

当给定两个具有不同时间步长的时间序列时,哪个更好:使用最低或最大时间步长?

对于时间序列分析,您应该执行以下两项操作:使用每日数据集获得最大的粒度,并使用每月数据集重复分析。使用每月数据集,您可以拥有120个数据点,即使数据具有季节性,也足以获得时间序列模型。

对于已知和未知的属性,我应该如何处理从每日到每周/每月的数据?

要从每日数据中获取每周或每月的数据,可以使用平滑功能。对于财务数据,可以使用移动平均线或指数平滑法,但是如果这些方法不适用于您的数据,则可以在R中使用样条线平滑函数“ smooth.spline”:https ://stat.ethz.ch/R -manual / R-patched / library / stats / html / smooth.spline.html

返回的模型比原始的每日数据集具有更少的噪声,您可以获取所需时间点的值。最后,这些数据点可用于时间序列分析。

对于已知和未知的属性,我应该如何从每周/每月变为每日数据?

要获得每月或每周的数据,可以使用插值。首先,您应该找到一个方程式来描述数据。为此,您应该绘制数据(例如随时间变化的价格)。当您知道因素时,这些因素应影响该方程式。当因子未知时,可以使用最佳拟合方程。最简单的将是线性函数或分段线性函数,但是对于财务数据,这将无法正常工作。在这种情况下,应考虑分段三次样条插值。该链接详细介绍了可能的插值功能:http : //people.math.gatech.edu/~meyer/MA6635/chap2.pdf

在R中,有一种用于对时间序列数据进行插值的方法。在这里,您将创建一个向量,其中包含每周值和每日价值差距中的资产净值,然后使用“ interpNA”函数获取资产净值的插值。但是,此函数使用“近似”函数来获取插值,该插值将应用线性插值或恒定插值。要在R中执行三次样条插值,应改为使用“ splinefun”功能。

需要注意的是,无论您是在看指数平滑法还是自回归综合移动平均(ARIMA)方法,时间序列模型通常都会进行某种平均以预测未来值。因此,预测每日价值的时间序列模型可能不是最佳选择,但每周或每月的模型可能更好。


似乎是一个实际的答案。由于套利,不确定这是否适用于金融时间序列。
lcrmorin 2015年

我认为您的问题的答案仍然有效。对于时间序列模型,您可能需要查看ARCH(自回归条件异方差)模型。
gchaks

在财务时间序列中使用三次样条进行插值时,是否不会引入前瞻性偏见?我认为这对于实施机器学习模型可能特别重要?
tsando

5

我不是该领域的专家,但是我相信您的问题与时间序列的聚合和分解有关。如果是这样,那么这里有一些希望相关的资源,可能会对解决您的问题有所帮助(前五项是主要的,但具有代表性,而后两项是补充的):


2

这将不是一个令人满意的答案,但这是我的看法...

对于已知和未知的属性,我应该如何处理从每日到每周/每月的数据?

对于已知和未知的属性,我应该如何从每周/每月变为每日数据?

两者的答案相同:您无法针对未知属性执行此操作,对于已知属性,这将取决于如何计算值。

正如您提到的:

(例如,平均财务利率是无稽之谈)

无论属性/值是已知还是未知,都没有适合所有情况的单个转换。即使具有已知的属性,您仍可能需要为每种类型进行唯一的转换:平均值,中位数,众数,最小值,最大值,布尔值等。

当给定两个具有不同时间步长的时间序列时,哪个更好:使用最低或最大时间步长?

尽可能尝试保留最小步骤的全部粒度。假设您知道如何转换值,则可以始终汇总这些步骤(例如,逐日,逐月,逐年)...但是在有损转换之后,您不一定能够从较大的步骤中重建较小的步骤。 。


2

对于已知和未知的属性,我应该如何处理从每日到每周/每月的数据?

聚合。

例如,您有每天人们搜索“小部件”的时间。将一个月的每日总计相加即可得出每月总计。我需要查看有关每个粒度收集的实际数据的更多详细信息,以便为您提供更完整的版本。

对于已知和未知的属性,我应该如何从每周/每月变为每日数据?

你不能

在物理学中,一个可比的想法是奈奎斯特频率。通常的想法是,在不引入更多数据的情况下,您不能添加比数据中已经存在的信息更多的信息。仅给出某人运行查询的日期,您如何分辨该查询在一天的什么时间运行?您可能可以做出一些推断,但是回答问题的唯一方法是直接或间接将更多信息引入系统。您可以做一些事情来对月度变量的每日状态做出明智的猜测(如gchaks所提到的,内插法),但是从根本上说,您的数据仍然是月度数据,可以逐日查看。

给定两个具有不同时间步长的时间序列时,哪个更好:使用最低或最大时间步长?

这完全取决于您要回答的内容。

较小的粒度将对噪声和其他异常更加敏感。较大的粒度将能够更自信地回答问题,但会失去一些有用性。例如,如果您要查看人们何时开始寻找周末计划的场所,以了解何时启动新夜总会的营销活动,那么您将需要查看每日数据,即使不是更小。如果您正在查看夜总会的总体趋势以弄清楚您想投资的人,那么每月一次可能会更好。


2

使用Tableau软件可以轻松地基于日期段汇总数据。您只需将数据插入工具中,然后就可以将指标和日期维度拖放到报表主体空间上。Tableau会即时即时生成汇总可视化和/或详细数据表。您可以按年,季度,月,周,日,小时等对分组/求和(该工具提供的标准,内置,开箱即用功能)。

另外,如果您以后想要合并其他数据(我假设这是“未知属性”的意思),则可以导入另一个数据集,并轻松地将其追加到第一个数据集,只要它还提供了日期。

我建议您查看免费版本,我认为它是Tableau Public。

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.