pymc-extras 0.2.7__py3-none-any.whl → 0.3.1__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.
- pymc_extras/inference/__init__.py +2 -2
- pymc_extras/inference/fit.py +1 -1
- pymc_extras/inference/laplace_approx/__init__.py +0 -0
- pymc_extras/inference/laplace_approx/find_map.py +347 -0
- pymc_extras/inference/laplace_approx/idata.py +392 -0
- pymc_extras/inference/laplace_approx/laplace.py +451 -0
- pymc_extras/inference/laplace_approx/scipy_interface.py +242 -0
- pymc_extras/inference/pathfinder/pathfinder.py +2 -2
- pymc_extras/linearmodel.py +3 -1
- pymc_extras/model/marginal/graph_analysis.py +4 -0
- pymc_extras/prior.py +38 -6
- pymc_extras/statespace/core/statespace.py +78 -52
- pymc_extras/statespace/filters/kalman_smoother.py +1 -1
- {pymc_extras-0.2.7.dist-info → pymc_extras-0.3.1.dist-info}/METADATA +4 -5
- {pymc_extras-0.2.7.dist-info → pymc_extras-0.3.1.dist-info}/RECORD +17 -14
- pymc_extras/inference/find_map.py +0 -496
- pymc_extras/inference/laplace.py +0 -583
- {pymc_extras-0.2.7.dist-info → pymc_extras-0.3.1.dist-info}/WHEEL +0 -0
- {pymc_extras-0.2.7.dist-info → pymc_extras-0.3.1.dist-info}/licenses/LICENSE +0 -0
|
@@ -63,7 +63,7 @@ from rich.text import Text
|
|
|
63
63
|
# TODO: change to typing.Self after Python versions greater than 3.10
|
|
64
64
|
from typing_extensions import Self
|
|
65
65
|
|
|
66
|
-
from pymc_extras.inference.
|
|
66
|
+
from pymc_extras.inference.laplace_approx.idata import add_data_to_inference_data
|
|
67
67
|
from pymc_extras.inference.pathfinder.importance_sampling import (
|
|
68
68
|
importance_sampling as _importance_sampling,
|
|
69
69
|
)
|
|
@@ -1759,6 +1759,6 @@ def fit_pathfinder(
|
|
|
1759
1759
|
importance_sampling=importance_sampling,
|
|
1760
1760
|
)
|
|
1761
1761
|
|
|
1762
|
-
idata =
|
|
1762
|
+
idata = add_data_to_inference_data(idata, progressbar, model, compile_kwargs)
|
|
1763
1763
|
|
|
1764
1764
|
return idata
|
pymc_extras/linearmodel.py
CHANGED
|
@@ -2,10 +2,12 @@ import numpy as np
|
|
|
2
2
|
import pandas as pd
|
|
3
3
|
import pymc as pm
|
|
4
4
|
|
|
5
|
+
from sklearn.base import BaseEstimator
|
|
6
|
+
|
|
5
7
|
from pymc_extras.model_builder import ModelBuilder
|
|
6
8
|
|
|
7
9
|
|
|
8
|
-
class LinearModel(ModelBuilder):
|
|
10
|
+
class LinearModel(ModelBuilder, BaseEstimator):
|
|
9
11
|
def __init__(
|
|
10
12
|
self, model_config: dict | None = None, sampler_config: dict | None = None, nsamples=100
|
|
11
13
|
):
|
|
@@ -5,6 +5,7 @@ from itertools import zip_longest
|
|
|
5
5
|
|
|
6
6
|
from pymc import SymbolicRandomVariable
|
|
7
7
|
from pymc.model.fgraph import ModelVar
|
|
8
|
+
from pymc.variational.minibatch_rv import MinibatchRandomVariable
|
|
8
9
|
from pytensor.graph import Variable, ancestors
|
|
9
10
|
from pytensor.graph.basic import io_toposort
|
|
10
11
|
from pytensor.tensor import TensorType, TensorVariable
|
|
@@ -313,6 +314,9 @@ def _subgraph_batch_dim_connection(var_dims: VAR_DIMS, input_vars, output_vars)
|
|
|
313
314
|
|
|
314
315
|
var_dims[node.outputs[0]] = output_dims
|
|
315
316
|
|
|
317
|
+
elif isinstance(node.op, MinibatchRandomVariable):
|
|
318
|
+
var_dims[node.outputs[0]] = inputs_dims[0]
|
|
319
|
+
|
|
316
320
|
else:
|
|
317
321
|
raise NotImplementedError(f"Marginalization through operation {node} not supported.")
|
|
318
322
|
|
pymc_extras/prior.py
CHANGED
|
@@ -84,6 +84,7 @@ from __future__ import annotations
|
|
|
84
84
|
import copy
|
|
85
85
|
|
|
86
86
|
from collections.abc import Callable
|
|
87
|
+
from functools import partial
|
|
87
88
|
from inspect import signature
|
|
88
89
|
from typing import Any, Protocol, runtime_checkable
|
|
89
90
|
|
|
@@ -278,7 +279,7 @@ class VariableFactory(Protocol):
|
|
|
278
279
|
def sample_prior(
|
|
279
280
|
factory: VariableFactory,
|
|
280
281
|
coords=None,
|
|
281
|
-
name: str = "
|
|
282
|
+
name: str = "variable",
|
|
282
283
|
wrap: bool = False,
|
|
283
284
|
**sample_prior_predictive_kwargs,
|
|
284
285
|
) -> xr.Dataset:
|
|
@@ -292,7 +293,7 @@ def sample_prior(
|
|
|
292
293
|
The coordinates for the variable, by default None.
|
|
293
294
|
Only required if the dims are specified.
|
|
294
295
|
name : str, optional
|
|
295
|
-
The name of the variable, by default "
|
|
296
|
+
The name of the variable, by default "variable".
|
|
296
297
|
wrap : bool, optional
|
|
297
298
|
Whether to wrap the variable in a `pm.Deterministic` node, by default False.
|
|
298
299
|
sample_prior_predictive_kwargs : dict
|
|
@@ -362,7 +363,7 @@ class Prior:
|
|
|
362
363
|
|
|
363
364
|
- `preliz` attribute to get the equivalent distribution in `preliz`
|
|
364
365
|
- `sample_prior` method to sample from the prior
|
|
365
|
-
- `
|
|
366
|
+
- `to_graph` get a dummy model graph with the distribution
|
|
366
367
|
- `constrain` to shift the distribution to a different range
|
|
367
368
|
|
|
368
369
|
Parameters
|
|
@@ -900,7 +901,7 @@ class Prior:
|
|
|
900
901
|
def sample_prior(
|
|
901
902
|
self,
|
|
902
903
|
coords=None,
|
|
903
|
-
name: str = "
|
|
904
|
+
name: str = "variable",
|
|
904
905
|
**sample_prior_predictive_kwargs,
|
|
905
906
|
) -> xr.Dataset:
|
|
906
907
|
"""Sample the prior distribution for the variable.
|
|
@@ -911,7 +912,7 @@ class Prior:
|
|
|
911
912
|
The coordinates for the variable, by default None.
|
|
912
913
|
Only required if the dims are specified.
|
|
913
914
|
name : str, optional
|
|
914
|
-
The name of the variable, by default "
|
|
915
|
+
The name of the variable, by default "variable".
|
|
915
916
|
sample_prior_predictive_kwargs : dict
|
|
916
917
|
Additional arguments to pass to `pm.sample_prior_predictive`.
|
|
917
918
|
|
|
@@ -1175,7 +1176,7 @@ class Censored:
|
|
|
1175
1176
|
"""Create a censored distribution from a dictionary."""
|
|
1176
1177
|
data = data["data"]
|
|
1177
1178
|
return cls( # type: ignore
|
|
1178
|
-
distribution=
|
|
1179
|
+
distribution=deserialize(data["dist"]),
|
|
1179
1180
|
lower=data["lower"],
|
|
1180
1181
|
upper=data["upper"],
|
|
1181
1182
|
)
|
|
@@ -1354,3 +1355,34 @@ def _is_censored_type(data: dict) -> bool:
|
|
|
1354
1355
|
|
|
1355
1356
|
register_deserialization(is_type=_is_prior_type, deserialize=Prior.from_dict)
|
|
1356
1357
|
register_deserialization(is_type=_is_censored_type, deserialize=Censored.from_dict)
|
|
1358
|
+
|
|
1359
|
+
|
|
1360
|
+
def __getattr__(name: str):
|
|
1361
|
+
"""Get Prior class through the module.
|
|
1362
|
+
|
|
1363
|
+
Examples
|
|
1364
|
+
--------
|
|
1365
|
+
Create a normal distribution.
|
|
1366
|
+
|
|
1367
|
+
.. code-block:: python
|
|
1368
|
+
|
|
1369
|
+
from pymc_extras.prior import Normal
|
|
1370
|
+
|
|
1371
|
+
dist = Normal(mu=1, sigma=2)
|
|
1372
|
+
|
|
1373
|
+
Create a hierarchical normal distribution.
|
|
1374
|
+
|
|
1375
|
+
.. code-block:: python
|
|
1376
|
+
|
|
1377
|
+
import pymc_extras.prior as pr
|
|
1378
|
+
|
|
1379
|
+
dist = pr.Normal(mu=pr.Normal(), sigma=pr.HalfNormal(), dims="channel")
|
|
1380
|
+
samples = dist.sample_prior(coords={"channel": ["C1", "C2", "C3"]})
|
|
1381
|
+
|
|
1382
|
+
"""
|
|
1383
|
+
# Protect against doctest
|
|
1384
|
+
if name == "__wrapped__":
|
|
1385
|
+
return
|
|
1386
|
+
|
|
1387
|
+
_get_pymc_distribution(name)
|
|
1388
|
+
return partial(Prior, distribution=name)
|
|
@@ -2047,6 +2047,69 @@ class PyMCStateSpace:
|
|
|
2047
2047
|
|
|
2048
2048
|
return scenario
|
|
2049
2049
|
|
|
2050
|
+
def _build_forecast_model(
|
|
2051
|
+
self, time_index, t0, forecast_index, scenario, filter_output, mvn_method
|
|
2052
|
+
):
|
|
2053
|
+
filter_time_dim = TIME_DIM
|
|
2054
|
+
temp_coords = self._fit_coords.copy()
|
|
2055
|
+
|
|
2056
|
+
dims = None
|
|
2057
|
+
if all([dim in temp_coords for dim in [filter_time_dim, ALL_STATE_DIM, OBS_STATE_DIM]]):
|
|
2058
|
+
dims = [TIME_DIM, ALL_STATE_DIM, OBS_STATE_DIM]
|
|
2059
|
+
|
|
2060
|
+
t0_idx = np.flatnonzero(time_index == t0)[0]
|
|
2061
|
+
|
|
2062
|
+
temp_coords["data_time"] = time_index
|
|
2063
|
+
temp_coords[TIME_DIM] = forecast_index
|
|
2064
|
+
|
|
2065
|
+
mu_dims, cov_dims = None, None
|
|
2066
|
+
if all([dim in self._fit_coords for dim in [TIME_DIM, ALL_STATE_DIM, ALL_STATE_AUX_DIM]]):
|
|
2067
|
+
mu_dims = ["data_time", ALL_STATE_DIM]
|
|
2068
|
+
cov_dims = ["data_time", ALL_STATE_DIM, ALL_STATE_AUX_DIM]
|
|
2069
|
+
|
|
2070
|
+
with pm.Model(coords=temp_coords) as forecast_model:
|
|
2071
|
+
(_, _, *matrices), grouped_outputs = self._kalman_filter_outputs_from_dummy_graph(
|
|
2072
|
+
data_dims=["data_time", OBS_STATE_DIM],
|
|
2073
|
+
)
|
|
2074
|
+
|
|
2075
|
+
group_idx = FILTER_OUTPUT_TYPES.index(filter_output)
|
|
2076
|
+
mu, cov = grouped_outputs[group_idx]
|
|
2077
|
+
|
|
2078
|
+
sub_dict = {
|
|
2079
|
+
data_var: pt.as_tensor_variable(data_var.get_value(), name="data")
|
|
2080
|
+
for data_var in forecast_model.data_vars
|
|
2081
|
+
}
|
|
2082
|
+
|
|
2083
|
+
missing_data_vars = np.setdiff1d(
|
|
2084
|
+
ar1=[*self.data_names, "data"], ar2=[k.name for k, _ in sub_dict.items()]
|
|
2085
|
+
)
|
|
2086
|
+
if missing_data_vars.size > 0:
|
|
2087
|
+
raise ValueError(f"{missing_data_vars} data used for fitting not found!")
|
|
2088
|
+
|
|
2089
|
+
mu_frozen, cov_frozen = graph_replace([mu, cov], replace=sub_dict, strict=True)
|
|
2090
|
+
|
|
2091
|
+
x0 = pm.Deterministic(
|
|
2092
|
+
"x0_slice", mu_frozen[t0_idx], dims=mu_dims[1:] if mu_dims is not None else None
|
|
2093
|
+
)
|
|
2094
|
+
P0 = pm.Deterministic(
|
|
2095
|
+
"P0_slice", cov_frozen[t0_idx], dims=cov_dims[1:] if cov_dims is not None else None
|
|
2096
|
+
)
|
|
2097
|
+
|
|
2098
|
+
_ = LinearGaussianStateSpace(
|
|
2099
|
+
"forecast",
|
|
2100
|
+
x0,
|
|
2101
|
+
P0,
|
|
2102
|
+
*matrices,
|
|
2103
|
+
steps=len(forecast_index),
|
|
2104
|
+
dims=dims,
|
|
2105
|
+
sequence_names=self.kalman_filter.seq_names,
|
|
2106
|
+
k_endog=self.k_endog,
|
|
2107
|
+
append_x0=False,
|
|
2108
|
+
method=mvn_method,
|
|
2109
|
+
)
|
|
2110
|
+
|
|
2111
|
+
return forecast_model
|
|
2112
|
+
|
|
2050
2113
|
def forecast(
|
|
2051
2114
|
self,
|
|
2052
2115
|
idata: InferenceData,
|
|
@@ -2139,8 +2202,6 @@ class PyMCStateSpace:
|
|
|
2139
2202
|
the latent state trajectories: `y[t] = Z @ x[t] + nu[t]`, where `nu ~ N(0, H)`.
|
|
2140
2203
|
|
|
2141
2204
|
"""
|
|
2142
|
-
filter_time_dim = TIME_DIM
|
|
2143
|
-
|
|
2144
2205
|
_validate_filter_arg(filter_output)
|
|
2145
2206
|
|
|
2146
2207
|
compile_kwargs = kwargs.pop("compile_kwargs", {})
|
|
@@ -2185,58 +2246,23 @@ class PyMCStateSpace:
|
|
|
2185
2246
|
use_scenario_index=use_scenario_index,
|
|
2186
2247
|
)
|
|
2187
2248
|
scenario = self._finalize_scenario_initialization(scenario, forecast_index)
|
|
2188
|
-
temp_coords = self._fit_coords.copy()
|
|
2189
|
-
|
|
2190
|
-
dims = None
|
|
2191
|
-
if all([dim in temp_coords for dim in [filter_time_dim, ALL_STATE_DIM, OBS_STATE_DIM]]):
|
|
2192
|
-
dims = [TIME_DIM, ALL_STATE_DIM, OBS_STATE_DIM]
|
|
2193
|
-
|
|
2194
|
-
t0_idx = np.flatnonzero(time_index == t0)[0]
|
|
2195
|
-
|
|
2196
|
-
temp_coords["data_time"] = time_index
|
|
2197
|
-
temp_coords[TIME_DIM] = forecast_index
|
|
2198
|
-
|
|
2199
|
-
mu_dims, cov_dims = None, None
|
|
2200
|
-
if all([dim in self._fit_coords for dim in [TIME_DIM, ALL_STATE_DIM, ALL_STATE_AUX_DIM]]):
|
|
2201
|
-
mu_dims = ["data_time", ALL_STATE_DIM]
|
|
2202
|
-
cov_dims = ["data_time", ALL_STATE_DIM, ALL_STATE_AUX_DIM]
|
|
2203
|
-
|
|
2204
|
-
with pm.Model(coords=temp_coords) as forecast_model:
|
|
2205
|
-
(_, _, *matrices), grouped_outputs = self._kalman_filter_outputs_from_dummy_graph(
|
|
2206
|
-
scenario=scenario,
|
|
2207
|
-
data_dims=["data_time", OBS_STATE_DIM],
|
|
2208
|
-
)
|
|
2209
|
-
|
|
2210
|
-
for name in self.data_names:
|
|
2211
|
-
if name in scenario.keys():
|
|
2212
|
-
pm.set_data(
|
|
2213
|
-
{"data": np.zeros((len(forecast_index), self.k_endog))},
|
|
2214
|
-
coords={"data_time": np.arange(len(forecast_index))},
|
|
2215
|
-
)
|
|
2216
|
-
break
|
|
2217
2249
|
|
|
2218
|
-
|
|
2219
|
-
|
|
2220
|
-
|
|
2221
|
-
|
|
2222
|
-
|
|
2223
|
-
|
|
2224
|
-
|
|
2225
|
-
|
|
2226
|
-
)
|
|
2250
|
+
forecast_model = self._build_forecast_model(
|
|
2251
|
+
time_index=time_index,
|
|
2252
|
+
t0=t0,
|
|
2253
|
+
forecast_index=forecast_index,
|
|
2254
|
+
scenario=scenario,
|
|
2255
|
+
filter_output=filter_output,
|
|
2256
|
+
mvn_method=mvn_method,
|
|
2257
|
+
)
|
|
2227
2258
|
|
|
2228
|
-
|
|
2229
|
-
|
|
2230
|
-
|
|
2231
|
-
|
|
2232
|
-
|
|
2233
|
-
|
|
2234
|
-
|
|
2235
|
-
sequence_names=self.kalman_filter.seq_names,
|
|
2236
|
-
k_endog=self.k_endog,
|
|
2237
|
-
append_x0=False,
|
|
2238
|
-
method=mvn_method,
|
|
2239
|
-
)
|
|
2259
|
+
with forecast_model:
|
|
2260
|
+
if scenario is not None:
|
|
2261
|
+
dummy_obs_data = np.zeros((len(forecast_index), self.k_endog))
|
|
2262
|
+
pm.set_data(
|
|
2263
|
+
scenario | {"data": dummy_obs_data},
|
|
2264
|
+
coords={"data_time": np.arange(len(forecast_index))},
|
|
2265
|
+
)
|
|
2240
2266
|
|
|
2241
2267
|
forecast_model.rvs_to_initial_values = {
|
|
2242
2268
|
k: None for k in forecast_model.rvs_to_initial_values.keys()
|
|
@@ -105,7 +105,7 @@ class KalmanSmoother:
|
|
|
105
105
|
a_hat, P_hat = self.predict(a, P, T, R, Q)
|
|
106
106
|
|
|
107
107
|
# Use pinv, otherwise P_hat is singular when there is missing data
|
|
108
|
-
smoother_gain = matrix_dot(pt.linalg.pinv(P_hat), T, P).T
|
|
108
|
+
smoother_gain = matrix_dot(pt.linalg.pinv(P_hat, hermitian=True), T, P).T
|
|
109
109
|
a_smooth_next = a + smoother_gain @ (a_smooth - a_hat)
|
|
110
110
|
|
|
111
111
|
P_smooth_next = P + quad_form_sym(smoother_gain, P_smooth - P_hat)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pymc-extras
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.1
|
|
4
4
|
Summary: A home for new additions to PyMC, which may include unusual probability distribitions, advanced model fitting algorithms, or any code that may be inappropriate to include in the pymc repository, but may want to be made available to users.
|
|
5
5
|
Project-URL: Documentation, https://pymc-extras.readthedocs.io/
|
|
6
6
|
Project-URL: Repository, https://github.com/pymc-devs/pymc-extras.git
|
|
@@ -226,15 +226,13 @@ Classifier: License :: OSI Approved :: Apache Software License
|
|
|
226
226
|
Classifier: Operating System :: OS Independent
|
|
227
227
|
Classifier: Programming Language :: Python
|
|
228
228
|
Classifier: Programming Language :: Python :: 3
|
|
229
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
230
229
|
Classifier: Programming Language :: Python :: 3.11
|
|
231
230
|
Classifier: Programming Language :: Python :: 3.12
|
|
232
231
|
Classifier: Programming Language :: Python :: 3.13
|
|
233
232
|
Classifier: Topic :: Scientific/Engineering
|
|
234
233
|
Classifier: Topic :: Scientific/Engineering :: Mathematics
|
|
235
|
-
Requires-Python: >=3.
|
|
236
|
-
Requires-Dist: better-optimize>=0.1.
|
|
237
|
-
Requires-Dist: preliz
|
|
234
|
+
Requires-Python: >=3.11
|
|
235
|
+
Requires-Dist: better-optimize>=0.1.4
|
|
238
236
|
Requires-Dist: pydantic>=2.0.0
|
|
239
237
|
Requires-Dist: pymc>=5.21.1
|
|
240
238
|
Requires-Dist: scikit-learn
|
|
@@ -247,6 +245,7 @@ Requires-Dist: xhistogram; extra == 'dask-histogram'
|
|
|
247
245
|
Provides-Extra: dev
|
|
248
246
|
Requires-Dist: blackjax; extra == 'dev'
|
|
249
247
|
Requires-Dist: dask[all]<2025.1.1; extra == 'dev'
|
|
248
|
+
Requires-Dist: preliz>=0.5.0; extra == 'dev'
|
|
250
249
|
Requires-Dist: pytest-mock; extra == 'dev'
|
|
251
250
|
Requires-Dist: pytest>=6.0; extra == 'dev'
|
|
252
251
|
Requires-Dist: statsmodels; extra == 'dev'
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
pymc_extras/__init__.py,sha256=YsR6OG72aW73y6dGS7w3nGGMV-V-ImHkmUOXKMPfMRA,1230
|
|
2
2
|
pymc_extras/deserialize.py,sha256=dktK5gsR96X3zAUoRF5udrTiconknH3uupiAWqkZi0M,5937
|
|
3
|
-
pymc_extras/linearmodel.py,sha256=
|
|
3
|
+
pymc_extras/linearmodel.py,sha256=KkvZ_DBXOD6myPgVNzu742YV0OzDK449_pDqNC5yae4,3975
|
|
4
4
|
pymc_extras/model_builder.py,sha256=sAw77fxdiy046BvDPjocuMlbJ0Efj-CDAGtmcwYmoG0,26361
|
|
5
5
|
pymc_extras/printing.py,sha256=G8mj9dRd6i0PcsbcEWZm56ek6V8mmil78RI4MUhywBs,6506
|
|
6
|
-
pymc_extras/prior.py,sha256=
|
|
6
|
+
pymc_extras/prior.py,sha256=0XbyRRVuS7aKY5gmvJr_iq4fGyHrRDeI_OjWu_O7CTA,39449
|
|
7
7
|
pymc_extras/distributions/__init__.py,sha256=fDbrBt9mxEVp2CDPwnyCW3oiutzZ0PduB8EUH3fUrjI,1377
|
|
8
8
|
pymc_extras/distributions/continuous.py,sha256=530wvcO-QcYVdiVN-iQRveImWfyJzzmxiZLMVShP7w4,11251
|
|
9
9
|
pymc_extras/distributions/discrete.py,sha256=HNi-K0_hnNWTcfyBkWGh26sc71FwBgukQ_EjGAaAOjY,13036
|
|
@@ -15,21 +15,24 @@ pymc_extras/distributions/transforms/__init__.py,sha256=FUp2vyRE6_2eUcQ_FVt5Dn0-
|
|
|
15
15
|
pymc_extras/distributions/transforms/partial_order.py,sha256=oEZlc9WgnGR46uFEjLzKEUxlhzIo2vrUUbBE3vYrsfQ,8404
|
|
16
16
|
pymc_extras/gp/__init__.py,sha256=sFHw2y3lEl5tG_FDQHZUonQ_k0DF1JRf0Rp8dpHmge0,745
|
|
17
17
|
pymc_extras/gp/latent_approx.py,sha256=cDEMM6H1BL2qyKg7BZU-ISrKn2HJe7hDaM4Y8GgQDf4,6682
|
|
18
|
-
pymc_extras/inference/__init__.py,sha256=
|
|
19
|
-
pymc_extras/inference/
|
|
20
|
-
pymc_extras/inference/
|
|
21
|
-
pymc_extras/inference/
|
|
18
|
+
pymc_extras/inference/__init__.py,sha256=YJIBqHoJnjglof7SVESH3u67li_ETmMy24zajld0DNE,917
|
|
19
|
+
pymc_extras/inference/fit.py,sha256=U_jfzuyjk5bV6AvOxtOKzBg-q4z-_BOR06Hn38T0W6E,1328
|
|
20
|
+
pymc_extras/inference/laplace_approx/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
21
|
+
pymc_extras/inference/laplace_approx/find_map.py,sha256=DihZO3XgiIs7JFKgriluSQDdinMQZG1xjkrQ4OUREno,13859
|
|
22
|
+
pymc_extras/inference/laplace_approx/idata.py,sha256=Ldkzny9qgYg9My2ydIaQfzKJ73y-xcgC7VJiGvbZhWE,13221
|
|
23
|
+
pymc_extras/inference/laplace_approx/laplace.py,sha256=M8s8GfHE5SgNLOiyiHsDuMDvYGEaBMjjqthVnrxY248,18724
|
|
24
|
+
pymc_extras/inference/laplace_approx/scipy_interface.py,sha256=qMxYodmmxaUGsOp1jc7HxBJc6L8NnmFT2Fd4UNNXu2c,8835
|
|
22
25
|
pymc_extras/inference/pathfinder/__init__.py,sha256=FhAYrCWNx_dCrynEdjg2CZ9tIinvcVLBm67pNx_Y3kA,101
|
|
23
26
|
pymc_extras/inference/pathfinder/importance_sampling.py,sha256=NwxepXOFit3cA5zEebniKdlnJ1rZWg56aMlH4MEOcG4,6264
|
|
24
27
|
pymc_extras/inference/pathfinder/lbfgs.py,sha256=GOoJBil5Kft_iFwGNUGKSeqzI5x_shA4KQWDwgGuQtQ,7110
|
|
25
|
-
pymc_extras/inference/pathfinder/pathfinder.py,sha256=
|
|
28
|
+
pymc_extras/inference/pathfinder/pathfinder.py,sha256=yme_wBHnREaT5gSOD6CZ0nb87oScmXjplERiQb0mcAg,64454
|
|
26
29
|
pymc_extras/inference/smc/__init__.py,sha256=wyaT4NJl1YsSQRLiDy-i0Jq3CbJZ2BQd4nnCk-dIngY,603
|
|
27
30
|
pymc_extras/inference/smc/sampling.py,sha256=AYwmKqGoV6pBtKnh9SUbBKbN7VcoFgb3MmNWV7SivMA,15365
|
|
28
31
|
pymc_extras/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
29
32
|
pymc_extras/model/model_api.py,sha256=UHMfQXxWBujeSiUySU0fDUC5Sd_BjT8FoVz3iBxQH_4,2400
|
|
30
33
|
pymc_extras/model/marginal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
31
34
|
pymc_extras/model/marginal/distributions.py,sha256=iM1yT7_BmivgUSloQPKE2QXGPgjvLqDMY_OTBGsdAWg,15563
|
|
32
|
-
pymc_extras/model/marginal/graph_analysis.py,sha256=
|
|
35
|
+
pymc_extras/model/marginal/graph_analysis.py,sha256=l_WSZHivm82297zMIm8i3G_h2F-4Tq397pQlcuEP-0I,15874
|
|
33
36
|
pymc_extras/model/marginal/marginal_model.py,sha256=oIdikaSnefCkyMxmzAe222qGXNucxZpHYk7548fK6iA,23631
|
|
34
37
|
pymc_extras/model/transforms/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
35
38
|
pymc_extras/model/transforms/autoreparam.py,sha256=_NltGWmNqi_X9sHCqAvWcBveLTPxVy11-wENFTcN6kk,12377
|
|
@@ -39,11 +42,11 @@ pymc_extras/statespace/__init__.py,sha256=0MtZj7yT6jcyERvITnn-nkhyY8fO6Za4_vV53C
|
|
|
39
42
|
pymc_extras/statespace/core/__init__.py,sha256=huHEiXAm8zV2MZyZ8GBHp6q7_fnWqveM7lC6ilpb3iE,309
|
|
40
43
|
pymc_extras/statespace/core/compile.py,sha256=9FZfE8Bi3VfElxujfOIKRVvmyL9M5R0WfNEqPc5kbVQ,1603
|
|
41
44
|
pymc_extras/statespace/core/representation.py,sha256=DwNIun6wdeEA20oWBx5M4govyWTf5JI87aGQ_E6Mb4U,18956
|
|
42
|
-
pymc_extras/statespace/core/statespace.py,sha256=
|
|
45
|
+
pymc_extras/statespace/core/statespace.py,sha256=mr0jDeCEfclCAGfEfEzMsogiuonGO9k2BV67wH_YKio,105627
|
|
43
46
|
pymc_extras/statespace/filters/__init__.py,sha256=N9Q4D0gAq_ZtT-GtrqiX1HkSg6Orv7o1TbrWUtnbTJE,420
|
|
44
47
|
pymc_extras/statespace/filters/distributions.py,sha256=-s1c5s2zm6FMc0UqKSrWnJzIF4U5bvJT_3mMNTyV_ak,11927
|
|
45
48
|
pymc_extras/statespace/filters/kalman_filter.py,sha256=Z6kxsbW8_VQ6ZcPjDMA5d_XPfdUY1-4GfRwKbBNfVZs,31438
|
|
46
|
-
pymc_extras/statespace/filters/kalman_smoother.py,sha256=
|
|
49
|
+
pymc_extras/statespace/filters/kalman_smoother.py,sha256=5jlSZAPveJzD5Q8omnpn7Gb1jgElBMgixGR7H9zoH8U,4183
|
|
47
50
|
pymc_extras/statespace/filters/utilities.py,sha256=iwdaYnO1cO06t_XUjLLRmqb8vwzzVH6Nx1iyZcbJL2k,1584
|
|
48
51
|
pymc_extras/statespace/models/ETS.py,sha256=08sbiuNvKdxcgKzS7jWj-z4jf-su73WFkYc8sKkGdEs,28538
|
|
49
52
|
pymc_extras/statespace/models/SARIMAX.py,sha256=aXR6KYuqtSBOk-jvm9NvnOX5vu4QesBgCIL-KR89SXs,22207
|
|
@@ -60,7 +63,7 @@ pymc_extras/utils/linear_cg.py,sha256=KkXhuimFsrKtNd_0By2ApxQQQNm5FdBtmDQJOVbLYk
|
|
|
60
63
|
pymc_extras/utils/model_equivalence.py,sha256=8QIftID2HDxD659i0RXHazQ-l2Q5YegCRLcDqb2p9Pc,2187
|
|
61
64
|
pymc_extras/utils/prior.py,sha256=QlWVr7uKIK9VncBw7Fz3YgaASKGDfqpORZHc-vz_9gQ,6841
|
|
62
65
|
pymc_extras/utils/spline.py,sha256=qGq0gcoMG5dpdazKFzG0RXkkCWP8ADPPXN-653-oFn4,4820
|
|
63
|
-
pymc_extras-0.
|
|
64
|
-
pymc_extras-0.
|
|
65
|
-
pymc_extras-0.
|
|
66
|
-
pymc_extras-0.
|
|
66
|
+
pymc_extras-0.3.1.dist-info/METADATA,sha256=QxE1LJTwDeUfZzYZhDjhLA4sy0SX6UcXGDyeVC1dkmM,18881
|
|
67
|
+
pymc_extras-0.3.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
68
|
+
pymc_extras-0.3.1.dist-info/licenses/LICENSE,sha256=WjiLhUKEysJvy5e9jk6WwFv9tmAPtnov1uJ6gcH1kIs,11720
|
|
69
|
+
pymc_extras-0.3.1.dist-info/RECORD,,
|