You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
2.7 KiB
74 lines
2.7 KiB
3 years ago
|
From 4f32f3990fbba0ee440af47e23a9354fdb7a0285 Mon Sep 17 00:00:00 2001
|
||
|
From: Kevin Sheppard <kevin.sheppard@gmail.com>
|
||
|
Date: Fri, 12 Mar 2021 10:52:38 +0000
|
||
|
Subject: [PATCH] MAINT: Fix issues arising from future changes
|
||
|
|
||
|
Fix issues due to changes in SciPy and pandas
|
||
|
---
|
||
|
statsmodels/regression/tests/test_rolling.py | 6 ++++--
|
||
|
statsmodels/stats/descriptivestats.py | 8 +++++++-
|
||
|
statsmodels/stats/stattools.py | 4 +++-
|
||
|
3 files changed, 14 insertions(+), 4 deletions(-)
|
||
|
|
||
|
diff --git a/statsmodels/regression/tests/test_rolling.py b/statsmodels/regression/tests/test_rolling.py
|
||
|
index 050de605f..f02e076d6 100644
|
||
|
--- a/statsmodels/regression/tests/test_rolling.py
|
||
|
+++ b/statsmodels/regression/tests/test_rolling.py
|
||
|
@@ -1,5 +1,6 @@
|
||
|
from io import BytesIO
|
||
|
from itertools import product
|
||
|
+import warnings
|
||
|
|
||
|
import numpy as np
|
||
|
import pandas as pd
|
||
|
@@ -261,8 +262,9 @@ def test_plot():
|
||
|
res.plot_recursive_coefficient(variables="x4")
|
||
|
|
||
|
fig = plt.Figure()
|
||
|
- with pytest.warns(Warning):
|
||
|
- # Just silence the warning
|
||
|
+ # Just silence the warning
|
||
|
+ with warnings.catch_warnings():
|
||
|
+ warnings.simplefilter("ignore")
|
||
|
out = res.plot_recursive_coefficient(fig=fig)
|
||
|
assert out is fig
|
||
|
res.plot_recursive_coefficient(alpha=None, figsize=(30, 7))
|
||
|
diff --git a/statsmodels/stats/descriptivestats.py b/statsmodels/stats/descriptivestats.py
|
||
|
index 96d455ca1..d5ad2f2a5 100644
|
||
|
--- a/statsmodels/stats/descriptivestats.py
|
||
|
+++ b/statsmodels/stats/descriptivestats.py
|
||
|
@@ -446,8 +446,14 @@ class Description:
|
||
|
else:
|
||
|
iqr = mean
|
||
|
|
||
|
+ def _safe_jarque_bera(c):
|
||
|
+ a = np.asarray(c)
|
||
|
+ if a.shape[0] < 2:
|
||
|
+ return (np.nan,) * 4
|
||
|
+ return jarque_bera(a)
|
||
|
+
|
||
|
jb = df.apply(
|
||
|
- lambda x: list(jarque_bera(x.dropna())), result_type="expand"
|
||
|
+ lambda x: list(_safe_jarque_bera(x.dropna())), result_type="expand"
|
||
|
).T
|
||
|
nan_mean = mean.copy()
|
||
|
nan_mean.loc[nan_mean == 0] = np.nan
|
||
|
diff --git a/statsmodels/stats/stattools.py b/statsmodels/stats/stattools.py
|
||
|
index d349c472d..2ee1a6e0b 100644
|
||
|
--- a/statsmodels/stats/stattools.py
|
||
|
+++ b/statsmodels/stats/stattools.py
|
||
|
@@ -118,7 +118,9 @@ def jarque_bera(resids, axis=0):
|
||
|
where n is the number of data points, S is the sample skewness, and K is
|
||
|
the sample kurtosis of the data.
|
||
|
"""
|
||
|
- resids = np.asarray(resids)
|
||
|
+ resids = np.atleast_1d(np.asarray(resids, dtype=float))
|
||
|
+ if resids.size < 2:
|
||
|
+ raise ValueError("resids must contain at least 2 elements")
|
||
|
# Calculate residual skewness and kurtosis
|
||
|
skew = stats.skew(resids, axis=axis)
|
||
|
kurtosis = 3 + stats.kurtosis(resids, axis=axis)
|
||
|
--
|
||
|
2.32.0
|
||
|
|