如何调查一个变量在时间序列中影响另一个变量需要多长时间

机器算法验证 时间序列
2022-04-08 01:40:51

在时间序列方面,我完全是新手,所以这个问题很可能在其他地方重复,只是我找不到它,因为我不知道这个功能叫什么。

我的数据:

我每周测量一个变量“排名变化”。我还每周测量另一个变量,松散地描述为“善良的变化”。我相信“等级的变化”依赖于“善的变化”,但我也相信,每当“善”提高时,等级提高需要一些时间。数据的简单表示如下所示:

change_in_rank = c(0,0,0,0,-10,0,0,0)
change_in_goodness = c(0,2,0,0,0,0,0,0)

这个构建的示例表明,2 的善度提高需要 3 个时间步才能导致排名的提高。

我的问题:

我使用什么分析方法来检测“善度变化”和“等级变化”之间是否真的存在这种关系,如果存在这种关系,我如何找出“善度”变化需要多长时间流动到等级的变化。

这个问题背后的动机:

一些额外的、非必要的背景:据称搜索引擎优化需要时间来影响您的网站在 Google 中的排名。例如:

“为什么 SEO 需要这么长时间?”

我试图找到一种统计方法来计算网站的更改需要多长时间才能真正反映在网站的 Google 排名中。

更多动力:

数据类型略有不同,但问题相似......

“饮食改变开始生效需要多长时间?”

2个回答

尝试查看两个系列之间的互相关:
将系列 1 与系列 2 关联起来;
将系列 1 与滞后 1 个周期的系列 2 相关联;
将系列 1 与滞后 2 个周期的系列 2 相关联;
等等。
探索尽可能多的滞后,在你所处的上下文中合理地预期是合理的。此外,根据应用程序的上下文,你可能需要查看滞后系列 1 与(非滞后)系列 2。
注意哪个滞后给出了最高的绝对相关性——这将是对“真实”滞后的粗略估计。

直观地检查互相关是很舒服的。R中,您可以使用函数ccf(.)来获取和绘制相关图。

在回归中,有几种方法可以进行,但最直接的一种可能是移动平均法。也就是说,您假设目标之间存在线性(参数中的线性)关系yt( change_in_rank) 和你的回归xt( change_in_goodness) 由

yt=i=1pβtkxtk

这里,输入参数p确定最大滞后时间。接下来,您使用表单的一些选定数据来拟合您的模型(xj1,,xjp;yj)在哪里j{1,,Ndata},例如通过使用标准最小二乘回归。

最后,您可以使用结果进行预测(在这种情况下,神经网络等更灵活的模型可能会做得更好),或者使用拟合参数来解释结果(在可解释性方面,几乎没有什么比线性模型更好)。β

如果该模型不够灵活,您可以将其扩展到更高维度和更通用的函数,还可以扩展到您进一步包括的自回归移动平均模型一些先前的回归结果f(xt1,,ftp)yjj<t