arviz 0.17.1__py3-none-any.whl → 0.18.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- arviz/__init__.py +3 -2
- arviz/data/__init__.py +5 -2
- arviz/data/base.py +102 -11
- arviz/data/converters.py +5 -0
- arviz/data/datasets.py +1 -0
- arviz/data/example_data/data_remote.json +10 -3
- arviz/data/inference_data.py +20 -22
- arviz/data/io_cmdstan.py +1 -3
- arviz/data/io_datatree.py +1 -0
- arviz/data/io_dict.py +5 -3
- arviz/data/io_emcee.py +1 -0
- arviz/data/io_numpyro.py +1 -0
- arviz/data/io_pyjags.py +1 -0
- arviz/data/io_pyro.py +1 -0
- arviz/data/utils.py +1 -0
- arviz/plots/__init__.py +1 -0
- arviz/plots/autocorrplot.py +1 -0
- arviz/plots/backends/bokeh/autocorrplot.py +1 -0
- arviz/plots/backends/bokeh/bpvplot.py +1 -0
- arviz/plots/backends/bokeh/compareplot.py +1 -0
- arviz/plots/backends/bokeh/densityplot.py +1 -0
- arviz/plots/backends/bokeh/distplot.py +1 -0
- arviz/plots/backends/bokeh/dotplot.py +1 -0
- arviz/plots/backends/bokeh/ecdfplot.py +1 -0
- arviz/plots/backends/bokeh/elpdplot.py +1 -0
- arviz/plots/backends/bokeh/energyplot.py +1 -0
- arviz/plots/backends/bokeh/hdiplot.py +1 -0
- arviz/plots/backends/bokeh/kdeplot.py +3 -3
- arviz/plots/backends/bokeh/khatplot.py +1 -0
- arviz/plots/backends/bokeh/lmplot.py +1 -0
- arviz/plots/backends/bokeh/loopitplot.py +1 -0
- arviz/plots/backends/bokeh/mcseplot.py +1 -0
- arviz/plots/backends/bokeh/pairplot.py +1 -0
- arviz/plots/backends/bokeh/parallelplot.py +1 -0
- arviz/plots/backends/bokeh/posteriorplot.py +1 -0
- arviz/plots/backends/bokeh/ppcplot.py +1 -0
- arviz/plots/backends/bokeh/rankplot.py +1 -0
- arviz/plots/backends/bokeh/separationplot.py +1 -0
- arviz/plots/backends/bokeh/traceplot.py +1 -0
- arviz/plots/backends/bokeh/violinplot.py +1 -0
- arviz/plots/backends/matplotlib/autocorrplot.py +1 -0
- arviz/plots/backends/matplotlib/bpvplot.py +1 -0
- arviz/plots/backends/matplotlib/compareplot.py +1 -0
- arviz/plots/backends/matplotlib/densityplot.py +1 -0
- arviz/plots/backends/matplotlib/distcomparisonplot.py +2 -3
- arviz/plots/backends/matplotlib/distplot.py +1 -0
- arviz/plots/backends/matplotlib/dotplot.py +1 -0
- arviz/plots/backends/matplotlib/ecdfplot.py +1 -0
- arviz/plots/backends/matplotlib/elpdplot.py +1 -0
- arviz/plots/backends/matplotlib/energyplot.py +1 -0
- arviz/plots/backends/matplotlib/essplot.py +6 -5
- arviz/plots/backends/matplotlib/forestplot.py +1 -0
- arviz/plots/backends/matplotlib/hdiplot.py +1 -0
- arviz/plots/backends/matplotlib/kdeplot.py +5 -3
- arviz/plots/backends/matplotlib/khatplot.py +1 -0
- arviz/plots/backends/matplotlib/lmplot.py +1 -0
- arviz/plots/backends/matplotlib/loopitplot.py +1 -0
- arviz/plots/backends/matplotlib/mcseplot.py +11 -10
- arviz/plots/backends/matplotlib/pairplot.py +2 -1
- arviz/plots/backends/matplotlib/parallelplot.py +1 -0
- arviz/plots/backends/matplotlib/posteriorplot.py +1 -0
- arviz/plots/backends/matplotlib/ppcplot.py +1 -0
- arviz/plots/backends/matplotlib/rankplot.py +1 -0
- arviz/plots/backends/matplotlib/separationplot.py +1 -0
- arviz/plots/backends/matplotlib/traceplot.py +1 -0
- arviz/plots/backends/matplotlib/tsplot.py +1 -0
- arviz/plots/backends/matplotlib/violinplot.py +2 -1
- arviz/plots/bpvplot.py +1 -0
- arviz/plots/compareplot.py +1 -0
- arviz/plots/densityplot.py +1 -0
- arviz/plots/distcomparisonplot.py +1 -0
- arviz/plots/dotplot.py +1 -0
- arviz/plots/ecdfplot.py +1 -0
- arviz/plots/elpdplot.py +1 -0
- arviz/plots/energyplot.py +1 -0
- arviz/plots/essplot.py +1 -0
- arviz/plots/forestplot.py +1 -0
- arviz/plots/hdiplot.py +1 -0
- arviz/plots/khatplot.py +1 -0
- arviz/plots/lmplot.py +1 -0
- arviz/plots/loopitplot.py +1 -0
- arviz/plots/mcseplot.py +1 -0
- arviz/plots/pairplot.py +1 -0
- arviz/plots/parallelplot.py +1 -0
- arviz/plots/plot_utils.py +1 -0
- arviz/plots/posteriorplot.py +1 -0
- arviz/plots/ppcplot.py +1 -0
- arviz/plots/rankplot.py +1 -0
- arviz/plots/separationplot.py +1 -0
- arviz/plots/traceplot.py +1 -0
- arviz/plots/tsplot.py +1 -0
- arviz/plots/violinplot.py +1 -0
- arviz/rcparams.py +1 -0
- arviz/sel_utils.py +1 -0
- arviz/static/css/style.css +2 -1
- arviz/stats/density_utils.py +2 -1
- arviz/stats/diagnostics.py +2 -2
- arviz/stats/ecdf_utils.py +1 -0
- arviz/stats/stats_refitting.py +1 -0
- arviz/stats/stats_utils.py +5 -1
- arviz/tests/base_tests/test_data.py +14 -0
- arviz/tests/base_tests/test_diagnostics.py +1 -0
- arviz/tests/base_tests/test_diagnostics_numba.py +1 -0
- arviz/tests/base_tests/test_labels.py +1 -0
- arviz/tests/base_tests/test_plots_matplotlib.py +6 -5
- arviz/tests/base_tests/test_stats.py +4 -4
- arviz/tests/base_tests/test_stats_utils.py +1 -0
- arviz/tests/base_tests/test_utils.py +3 -2
- arviz/tests/helpers.py +1 -1
- arviz/wrappers/__init__.py +1 -0
- {arviz-0.17.1.dist-info → arviz-0.18.0.dist-info}/METADATA +7 -7
- arviz-0.18.0.dist-info/RECORD +182 -0
- arviz-0.17.1.dist-info/RECORD +0 -182
- {arviz-0.17.1.dist-info → arviz-0.18.0.dist-info}/LICENSE +0 -0
- {arviz-0.17.1.dist-info → arviz-0.18.0.dist-info}/WHEEL +0 -0
- {arviz-0.17.1.dist-info → arviz-0.18.0.dist-info}/top_level.txt +0 -0
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"""Matplotlib Density Comparison plot."""
|
|
2
|
+
|
|
2
3
|
import matplotlib.pyplot as plt
|
|
3
4
|
import numpy as np
|
|
4
5
|
|
|
@@ -88,9 +89,7 @@ def plot_dist_comparison(
|
|
|
88
89
|
kwargs = (
|
|
89
90
|
prior_kwargs
|
|
90
91
|
if group.startswith("prior")
|
|
91
|
-
else posterior_kwargs
|
|
92
|
-
if group.startswith("posterior")
|
|
93
|
-
else observed_kwargs
|
|
92
|
+
else posterior_kwargs if group.startswith("posterior") else observed_kwargs
|
|
94
93
|
)
|
|
95
94
|
for idx2, (
|
|
96
95
|
var_name,
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"""Matplotlib energyplot."""
|
|
2
|
+
|
|
2
3
|
import matplotlib.pyplot as plt
|
|
3
4
|
import numpy as np
|
|
4
5
|
from scipy.stats import rankdata
|
|
@@ -127,11 +128,11 @@ def plot_ess(
|
|
|
127
128
|
ax_.annotate(
|
|
128
129
|
"mean",
|
|
129
130
|
(text_x, mean_ess_i),
|
|
130
|
-
va=
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
131
|
+
va=(
|
|
132
|
+
text_va
|
|
133
|
+
if text_va is not None
|
|
134
|
+
else "bottom" if mean_ess_i >= sd_ess_i else "top"
|
|
135
|
+
),
|
|
135
136
|
**text_kwargs,
|
|
136
137
|
)
|
|
137
138
|
ax_.axhline(sd_ess_i, **extra_kwargs)
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"""Matplotlib kdeplot."""
|
|
2
|
+
|
|
2
3
|
import numpy as np
|
|
3
4
|
from matplotlib import pyplot as plt
|
|
4
5
|
from matplotlib import _pylab_helpers
|
|
@@ -162,10 +163,11 @@ def plot_kde(
|
|
|
162
163
|
ax.grid(False)
|
|
163
164
|
if contour:
|
|
164
165
|
qcfs = ax.contourf(x_x, y_y, density, antialiased=True, **contourf_kwargs)
|
|
165
|
-
|
|
166
|
+
ax.contour(x_x, y_y, density, **contour_kwargs)
|
|
166
167
|
if not fill_last:
|
|
167
|
-
qcfs.
|
|
168
|
-
|
|
168
|
+
alpha = np.ones(len(qcfs.allsegs), dtype=float)
|
|
169
|
+
alpha[0] = 0
|
|
170
|
+
qcfs.set_alpha(alpha)
|
|
169
171
|
else:
|
|
170
172
|
ax.pcolormesh(x_x, y_y, density, **pcolormesh_kwargs)
|
|
171
173
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"""Matplotlib mcseplot."""
|
|
2
|
+
|
|
2
3
|
import matplotlib.pyplot as plt
|
|
3
4
|
import numpy as np
|
|
4
5
|
from scipy.stats import rankdata
|
|
@@ -94,22 +95,22 @@ def plot_mcse(
|
|
|
94
95
|
ax_.annotate(
|
|
95
96
|
"mean",
|
|
96
97
|
(text_x, mean_mcse_i),
|
|
97
|
-
va=
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
98
|
+
va=(
|
|
99
|
+
text_va
|
|
100
|
+
if text_va is not None
|
|
101
|
+
else "bottom" if mean_mcse_i > sd_mcse_i else "top"
|
|
102
|
+
),
|
|
102
103
|
**text_kwargs,
|
|
103
104
|
)
|
|
104
105
|
ax_.axhline(sd_mcse_i, **extra_kwargs)
|
|
105
106
|
ax_.annotate(
|
|
106
107
|
"sd",
|
|
107
108
|
(text_x, sd_mcse_i),
|
|
108
|
-
va=
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
109
|
+
va=(
|
|
110
|
+
text_va
|
|
111
|
+
if text_va is not None
|
|
112
|
+
else "bottom" if sd_mcse_i >= mean_mcse_i else "top"
|
|
113
|
+
),
|
|
113
114
|
**text_kwargs,
|
|
114
115
|
)
|
|
115
116
|
if rug:
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"""Matplotlib pairplot."""
|
|
2
|
+
|
|
2
3
|
import warnings
|
|
3
4
|
from copy import deepcopy
|
|
4
5
|
|
|
@@ -333,7 +334,7 @@ def plot_pair(
|
|
|
333
334
|
if reference_values:
|
|
334
335
|
x_name = flat_var_names[i]
|
|
335
336
|
y_name = flat_var_names[j + not_marginals]
|
|
336
|
-
if x_name and y_name not in difference:
|
|
337
|
+
if (x_name not in difference) and (y_name not in difference):
|
|
337
338
|
ax[j, i].plot(
|
|
338
339
|
reference_values_copy[x_name],
|
|
339
340
|
reference_values_copy[y_name],
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"""Matplotlib Violinplot."""
|
|
2
|
+
|
|
2
3
|
import matplotlib.pyplot as plt
|
|
3
4
|
import numpy as np
|
|
4
5
|
|
|
@@ -60,7 +61,7 @@ def plot_violin(
|
|
|
60
61
|
cols,
|
|
61
62
|
backend_kwargs=backend_kwargs,
|
|
62
63
|
)
|
|
63
|
-
fig.
|
|
64
|
+
fig.set_layout_engine("none")
|
|
64
65
|
fig.subplots_adjust(wspace=0)
|
|
65
66
|
|
|
66
67
|
ax = np.atleast_1d(ax)
|
arviz/plots/bpvplot.py
CHANGED
arviz/plots/compareplot.py
CHANGED
arviz/plots/densityplot.py
CHANGED
arviz/plots/dotplot.py
CHANGED
arviz/plots/ecdfplot.py
CHANGED
arviz/plots/elpdplot.py
CHANGED
arviz/plots/energyplot.py
CHANGED
arviz/plots/essplot.py
CHANGED
arviz/plots/forestplot.py
CHANGED
arviz/plots/hdiplot.py
CHANGED
arviz/plots/khatplot.py
CHANGED
arviz/plots/lmplot.py
CHANGED
arviz/plots/loopitplot.py
CHANGED
arviz/plots/mcseplot.py
CHANGED
arviz/plots/pairplot.py
CHANGED
arviz/plots/parallelplot.py
CHANGED
arviz/plots/plot_utils.py
CHANGED
arviz/plots/posteriorplot.py
CHANGED
arviz/plots/ppcplot.py
CHANGED
arviz/plots/rankplot.py
CHANGED
arviz/plots/separationplot.py
CHANGED
arviz/plots/traceplot.py
CHANGED
arviz/plots/tsplot.py
CHANGED
arviz/plots/violinplot.py
CHANGED
arviz/rcparams.py
CHANGED
arviz/sel_utils.py
CHANGED
arviz/static/css/style.css
CHANGED
arviz/stats/density_utils.py
CHANGED
|
@@ -5,7 +5,8 @@ import warnings
|
|
|
5
5
|
import numpy as np
|
|
6
6
|
from scipy.fftpack import fft
|
|
7
7
|
from scipy.optimize import brentq
|
|
8
|
-
from scipy.signal import convolve, convolve2d
|
|
8
|
+
from scipy.signal import convolve, convolve2d
|
|
9
|
+
from scipy.signal.windows import gaussian
|
|
9
10
|
from scipy.sparse import coo_matrix
|
|
10
11
|
from scipy.special import ive # pylint: disable=no-name-in-module
|
|
11
12
|
|
arviz/stats/diagnostics.py
CHANGED
|
@@ -836,7 +836,7 @@ def _mcse_sd(ary):
|
|
|
836
836
|
return np.nan
|
|
837
837
|
ess = _ess_sd(ary)
|
|
838
838
|
if _numba_flag:
|
|
839
|
-
sd = float(_sqrt(svar(np.ravel(ary), ddof=1), np.zeros(1)))
|
|
839
|
+
sd = float(_sqrt(svar(np.ravel(ary), ddof=1), np.zeros(1)).item())
|
|
840
840
|
else:
|
|
841
841
|
sd = np.std(ary, ddof=1)
|
|
842
842
|
fac_mcse_sd = np.sqrt(np.exp(1) * (1 - 1 / ess) ** (ess - 1) - 1)
|
|
@@ -904,7 +904,7 @@ def _mc_error(ary, batches=5, circular=False):
|
|
|
904
904
|
else:
|
|
905
905
|
std = stats.circstd(ary, high=np.pi, low=-np.pi)
|
|
906
906
|
elif _numba_flag:
|
|
907
|
-
std = float(_sqrt(svar(ary), np.zeros(1)))
|
|
907
|
+
std = float(_sqrt(svar(ary), np.zeros(1)).item())
|
|
908
908
|
else:
|
|
909
909
|
std = np.std(ary)
|
|
910
910
|
return std / np.sqrt(len(ary))
|
arviz/stats/ecdf_utils.py
CHANGED
arviz/stats/stats_refitting.py
CHANGED
arviz/stats/stats_utils.py
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"""Stats-utility functions for ArviZ."""
|
|
2
|
+
|
|
2
3
|
import warnings
|
|
3
4
|
from collections.abc import Sequence
|
|
4
5
|
from copy import copy as _copy
|
|
@@ -134,7 +135,10 @@ def make_ufunc(
|
|
|
134
135
|
raise TypeError(msg)
|
|
135
136
|
for idx in np.ndindex(out.shape[:n_dims_out]):
|
|
136
137
|
arys_idx = [ary[idx].ravel() if ravel else ary[idx] for ary in arys]
|
|
137
|
-
|
|
138
|
+
out_idx = np.asarray(func(*arys_idx, *args[n_input:], **kwargs))[index]
|
|
139
|
+
if n_dims_out is None:
|
|
140
|
+
out_idx = out_idx.item()
|
|
141
|
+
out[idx] = out_idx
|
|
138
142
|
return out
|
|
139
143
|
|
|
140
144
|
def _multi_ufunc(*args, out=None, out_shape=None, **kwargs):
|
|
@@ -1077,6 +1077,20 @@ def test_dict_to_dataset():
|
|
|
1077
1077
|
assert set(dataset.b.coords) == {"chain", "draw", "c"}
|
|
1078
1078
|
|
|
1079
1079
|
|
|
1080
|
+
def test_nested_dict_to_dataset():
|
|
1081
|
+
datadict = {
|
|
1082
|
+
"top": {"a": np.random.randn(100), "b": np.random.randn(1, 100, 10)},
|
|
1083
|
+
"d": np.random.randn(100),
|
|
1084
|
+
}
|
|
1085
|
+
dataset = convert_to_dataset(datadict, coords={"c": np.arange(10)}, dims={("top", "b"): ["c"]})
|
|
1086
|
+
assert set(dataset.data_vars) == {("top", "a"), ("top", "b"), "d"}
|
|
1087
|
+
assert set(dataset.coords) == {"chain", "draw", "c"}
|
|
1088
|
+
|
|
1089
|
+
assert set(dataset[("top", "a")].coords) == {"chain", "draw"}
|
|
1090
|
+
assert set(dataset[("top", "b")].coords) == {"chain", "draw", "c"}
|
|
1091
|
+
assert set(dataset.d.coords) == {"chain", "draw"}
|
|
1092
|
+
|
|
1093
|
+
|
|
1080
1094
|
def test_dict_to_dataset_event_dims_error():
|
|
1081
1095
|
datadict = {"a": np.random.randn(1, 100, 10)}
|
|
1082
1096
|
coords = {"b": np.arange(10), "c": ["x", "y", "z"]}
|