指数平滑在一台计算机上生成运行时警告,但不在另一台计算机上生成



此代码:

import numpy as np
from statsmodels.tsa.api import ExponentialSmoothing
time_series = np.array([1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4])
print(ExponentialSmoothing(time_series, seasonal_periods=4, trend=None, seasonal="add").fit().forecast(4))    # [1. 2. 3. 4.]

在没有警告的情况下运行并正确打印 [1.2. 3.4.]在我的电脑上(Anaconda Navigator 1.9.12,Visual Studio Code 1.45.1,运行python 3.7.6,numpy 1.18.1,statsmodels 0.11.0(。

但是,在我同事的计算机上(运行Python 3.8,numpy 1.18.4,statsmodels 0.11.0的Visual Studio Code(上,相同的代码在正确打印之前触发以下警告[1。2. 3.4.]:

...\statsmodels\tsa\holtwinters.py:725: 运行时警告: 在 less_equal loc = initial_p <= lb 中遇到无效值

...\statsmodels\tsa\holtwinters.py:731: 运行时警告: 在 loc = initial_p>= ub greater_equal中遇到无效值

...\statsmodels\tsa\holtwinters.py:956: 运行时警告:除以日志中遇到的零 aic = self.nobs * np.log(sse/self.nobs( + k * 2

...\statsmodels\tsa\holtwinters.py:962: 运行时警告:除以日志中遇到的零 bic = self.nobs * np.log(sse/self.nobs( + k * np.log(self.nobs(

请问我们如何解决问题,以便我的同事不会收到这些运行时警告?还是我们不应该担心它们?非常感谢。

更新: 我想我已经找到了答案。我的测试数据太完美了,警告是由它引起的。在数据中引入抖动可消除警告。无论哪种方式,我认为,基于此,我们无论如何都可以忽略警告:

import numpy as np
from statsmodels.tsa.api import ExponentialSmoothing
time_series = np.array([1.2, 1.8, 3.2, 3.8, 1, 2, 3, 4, 1.1, 1.9, 3.1, 3.9, 1, 2, 3, 4])
print(ExponentialSmoothing(time_series, seasonal_periods=4, trend=None, seasonal="add").fit().forecast(4))
# [1.07500096 1.92499933 3.07500112 3.92499949]

另一个更新:不,不是这样。在我的计算机上,我仍然没有收到任何警告,但我的同事收到

...\statsmodels\tsa\holtwinters.py:725: 运行时警告: 在 less_equal loc = initial_p <= lb 中遇到无效值

...\statsmodels\tsa\holtwinters.py:731: 运行时警告: 在 loc = initial_p>= ub greater_equal中遇到无效值

看看库中的函数。 这会给你一个答案。

def _enforce_bounds(self, p, sel, lb, ub):
initial_p = p[sel]
# Ensure strictly inbounds
loc = initial_p <= lb
upper = ub[loc].copy()
upper[~np.isfinite(upper)] = 100.0
eps = 1e-4
initial_p[loc] = lb[loc] + eps * (upper - lb[loc])
loc = initial_p >= ub
lower = lb[loc].copy()
lower[~np.isfinite(lower)] = -100.0
eps = 1e-4
initial_p[loc] = ub[loc] - eps * (ub[loc] - lower)
return initial_p

似乎您的代码没有使用正确的边界来运行指数平滑((

最新更新