SQL - 基于前一行的递归平均值(AR 模型)

Posted

技术标签:

【中文标题】SQL - 基于前一行的递归平均值(AR 模型)【英文标题】:SQL - Recursive average based on preceding row (AR model) 【发布时间】:2021-11-15 06:22:10 【问题描述】:

我想知道如何使用 While 或 Recursion 来创建 AR(1) 模型。 在我的数据库中,我在一个表中有以下变量(Y 是一个值):

Period Values
20171 Y_0
20172 Y_1
20173 Y_2
20174 Y_3
20181 Y_4

我正在尝试创建一个查询,该查询将创建一个新列 AR,其定义为:

Period Value AR
20171 Y_0 Y_0
20172 Y_1 AVG( AR_0 & Y_1)
20173 Y_2 AVG( AR_1 & Y_2)

例如: Image of desired dataflow from excel

我尝试了以下方法:

SELECT Period , Values, Values as AR,
INTO #Beginning
FROM table
WHERE Period = (SELECT MIN(PERIOD) FROM table)

SELECT Period , Values, Values as AR,
FROM #Beginning
UNION ALL
SELECT Period , Values, NULL as AR,
FROM table
WHERE Period >(SELECT MIN(PERIOD) FROM table)

这会产生一个表,其中第一行是所需结果。但是,我似乎无法获得 AR 列的其余部分,因为它们相互依赖。到目前为止,这些都是空的。

是否可以在 SQL 中使用递归创建一列,其中每一行依赖于同一行中的一列,以及前一行中的一列?

【问题讨论】:

【参考方案1】:

您将使用窗口函数。例如:

select period, value,
       avg(value) over (order by period rows between 1 preceding and current row)
from t;

【讨论】:

这是否也包括值列?以便每个 AR 列具有前面的 AR 和当前值的平均值?非常感谢! @Apeyko 。 . .我只是把它重命名为ar,因为我有点困惑。

以上是关于SQL - 基于前一行的递归平均值(AR 模型)的主要内容,如果未能解决你的问题,请参考以下文章

ARIMA模型——如果数据序列是非平稳的,并存在一定的增长或下降趋势,则需要对数据进行差分处理!ARIMA(p,d,q)称为差分自回归移动平均模型,AR是自回归, p为自回归项; MA为移动平均,q为

用前一行和下一行的平均值填充 NaN 值 - Python

Unity中利用Vuforia制作AR同时令3D模型出现在2D图片前

[GPT] 序列模型分类及其模型方案选择

ARIMA基本概念和流程讲解

时间序列模型