From 069a516f4f0cf76881ad74052c43b60e7c87c951 Mon Sep 17 00:00:00 2001 From: Debian Science Maintainers Date: Sun, 24 Jul 2022 17:51:07 +0100 Subject: [PATCH] Markov* broken on armhf Warn on use, and xfail tests I suspect https://github.com/statsmodels/statsmodels/pull/5826 but that improved it enough on amd64 that reverting it isn't a good solution. Author: Rebecca N. Palmer Forwarded: no Gbp-Pq: Name xfail_regimeswitching_armhf.patch --- statsmodels/tsa/regime_switching/markov_switching.py | 5 +++++ .../tsa/regime_switching/tests/test_markov_autoregression.py | 2 ++ .../tsa/regime_switching/tests/test_markov_regression.py | 2 ++ 3 files changed, 9 insertions(+) diff --git a/statsmodels/tsa/regime_switching/markov_switching.py b/statsmodels/tsa/regime_switching/markov_switching.py index efa0c2e..9b0b769 100644 --- a/statsmodels/tsa/regime_switching/markov_switching.py +++ b/statsmodels/tsa/regime_switching/markov_switching.py @@ -35,6 +35,9 @@ from statsmodels.tsa.statespace.tools import ( prepare_exog, _safe_cond ) +import platform +import sys +warn_rswitch_platform = "Regime switching models (Markov(Auto)Regression) can give wrong results on armhf (armv7)" if ((platform.uname()[4].startswith('arm') or platform.uname()[4].startswith('aarch')) and np.log2(sys.maxsize)<=32) else False # test results at end of https://buildd.debian.org/status/fetch.php?pkg=statsmodels&arch=armhf&ver=0.11.0-1&stamp=1580716740&raw=0 ; the use of log2 rather than 2**32 is to avoid overflow on Python 2 prefix_hamilton_filter_log_map = { 's': shamilton_filter_log, 'd': dhamilton_filter_log, @@ -496,6 +499,8 @@ class MarkovSwitching(tsbase.TimeSeriesModel): def __init__(self, endog, k_regimes, order=0, exog_tvtp=None, exog=None, dates=None, freq=None, missing='none'): + if warn_rswitch_platform: + warnings.warn(warn_rswitch_platform) # Properties self.k_regimes = k_regimes diff --git a/statsmodels/tsa/regime_switching/tests/test_markov_autoregression.py b/statsmodels/tsa/regime_switching/tests/test_markov_autoregression.py index 7915281..ea85508 100644 --- a/statsmodels/tsa/regime_switching/tests/test_markov_autoregression.py +++ b/statsmodels/tsa/regime_switching/tests/test_markov_autoregression.py @@ -15,6 +15,8 @@ import pytest from statsmodels.tools import add_constant from statsmodels.tsa.regime_switching import markov_autoregression +from statsmodels.tsa.regime_switching.markov_switching import warn_rswitch_platform +pytestmark = pytest.mark.xfail(condition=bool(warn_rswitch_platform),reason="known broken on armhf",strict=False) current_path = os.path.dirname(os.path.abspath(__file__)) diff --git a/statsmodels/tsa/regime_switching/tests/test_markov_regression.py b/statsmodels/tsa/regime_switching/tests/test_markov_regression.py index 551a4fc..79dfdd4 100644 --- a/statsmodels/tsa/regime_switching/tests/test_markov_regression.py +++ b/statsmodels/tsa/regime_switching/tests/test_markov_regression.py @@ -15,6 +15,8 @@ import pytest from statsmodels.tsa.regime_switching import (markov_switching, markov_regression) +from statsmodels.tsa.regime_switching.markov_switching import warn_rswitch_platform +pytestmark = pytest.mark.xfail(condition=bool(warn_rswitch_platform),reason="known broken on armhf",strict=False) current_path = os.path.dirname(os.path.abspath(__file__)) -- 2.30.2