0

我使用的 statsmodels SARIMAX 算法是确定外生数据对因变量的影响。我的外生列通常包含零,并且是自变量中的自然组成部分。

当外生数据经过对数转换时,模型的准确性会提高。在对 exog 数据执行 EDA 之后,在对数转换之后总是倾向于更好地拟合线性拟合——我假设是因为非线性关系被删除了。

但是,那些包含零的列会导致导致结果模型中的系数不正确的问题。在试图了解正在发生的事情时,我已经在预处理的每个步骤中绘制了数据并包括了差异。我知道 SARIMAX 不使用简单的差分,但是我知道结果是相似的。

预处理选项

选项 1显示记录的和差异的数据。

这不能用作 exog 数据,因为原始零在对数转换后变为 -inf - 因此存在间隙。

选项 2显示了将 0 替换为 1 的位置。

这会在变化非常大的地方引入大峰值。

选项 3显示用非零最小值替换零

这看起来不错,在原始零点所在区域之后的差异数据中没有大的尖峰。

选项 4显示用数据中的平均值替换的零

与选项 2相反的情况发生了,我们的数据再次出现大峰值。

我担心的是,使用选项 2 或 4 会导致完全相反的结果。选择如何预处理数据,特别是我们如何处理数据中的零点会导致两个完全相反的结论。

选项 3在此示例中看起来不错,但是,(非零)最小值总是有些随意,我担心的是系数的值取决于数据中的随机方面。

因为我使用的是 SARIMAX 自己的去季节化,所以我不确定内部使用的确切机制。这使得在对数转换之前选择零处理变得棘手。

问题:

在用作 SARIMAX 中的外生序列之前,任何人都可以就处理零的最佳方法提供任何建议,以避免差异数据中的大峰值?

应该注意的是,零值是数据中的自然特征。

4

0 回答 0