test_seasonal_order fails on i386
authorDebian Science Maintainers <debian-science-maintainers@lists.alioth.debian.org>
Sat, 21 Sep 2024 11:58:14 +0000 (12:58 +0100)
committerRebecca N. Palmer <rebecca_palmer@zoho.com>
Sat, 21 Sep 2024 11:58:14 +0000 (12:58 +0100)
Warn on use and xfail

Author: Rebecca N. Palmer <rebecca_palmer@zoho.com>
Forwarded: no

Gbp-Pq: Name xfail_i386_ets.patch

statsmodels/tsa/exponential_smoothing/ets.py
statsmodels/tsa/tests/test_exponential_smoothing.py

index 8d51cf1a87af7a23760d1c044e281f0ade187c63..9892ad288c8dc211550c90b6565657d3e00fdd73 100644 (file)
@@ -171,6 +171,13 @@ from statsmodels.tsa.exponential_smoothing.initialization import (
 )
 from statsmodels.tsa.tsatools import freq_to_period
 
+import warnings
+import sys
+import platform
+import re
+warn_ets = "ETSModel can give wrong results on 32 bit i386" if (bool(re.match('i.?86|x86',platform.uname()[4])) and sys.maxsize<2**33) else False
+
+
 # Implementation details:
 
 # * The smoothing equations are implemented only for models having all
@@ -426,6 +433,8 @@ class ETSModel(base.StateSpaceMLEModel):
         missing="none",
     ):
 
+        if warn_ets:
+            warnings.warn(warn_ets)
         super().__init__(
             endog, exog=None, dates=dates, freq=freq, missing=missing
         )
index dad5b53696ed57d7a054aff04c728ce64235d286..a5d1ea6284e94a05ed339c6bbb6114e1ae0b784a 100644 (file)
@@ -14,7 +14,7 @@ import pandas as pd
 import pytest
 import scipy.stats
 
-from statsmodels.tsa.exponential_smoothing.ets import ETSModel
+from statsmodels.tsa.exponential_smoothing.ets import ETSModel,warn_ets
 import statsmodels.tsa.holtwinters as holtwinters
 import statsmodels.tsa.statespace.exponential_smoothing as statespace
 
@@ -1053,6 +1053,7 @@ def test_estimated_initialization_short_data(oildata, trend, seasonal, nobs):
 
 
 @pytest.mark.parametrize("method", ["estimated", "heuristic"])
+@pytest.mark.xfail(condition=bool(warn_ets),reason='known to fail on i386',strict=False)
 def test_seasonal_order(reset_randomstate, method):
     seasonal = np.arange(12.0)
     time_series = np.array(list(seasonal) * 100)