pymc-extras 0.4.0__py3-none-any.whl → 0.4.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.
Files changed (27) hide show
  1. pymc_extras/distributions/__init__.py +5 -5
  2. pymc_extras/distributions/histogram_utils.py +1 -1
  3. pymc_extras/inference/__init__.py +1 -1
  4. pymc_extras/printing.py +1 -1
  5. pymc_extras/statespace/__init__.py +4 -4
  6. pymc_extras/statespace/core/__init__.py +1 -1
  7. pymc_extras/statespace/core/representation.py +8 -8
  8. pymc_extras/statespace/core/statespace.py +94 -23
  9. pymc_extras/statespace/filters/__init__.py +3 -3
  10. pymc_extras/statespace/filters/kalman_filter.py +16 -11
  11. pymc_extras/statespace/models/SARIMAX.py +138 -74
  12. pymc_extras/statespace/models/VARMAX.py +248 -57
  13. pymc_extras/statespace/models/__init__.py +2 -2
  14. pymc_extras/statespace/models/structural/__init__.py +4 -4
  15. pymc_extras/statespace/models/structural/components/autoregressive.py +49 -24
  16. pymc_extras/statespace/models/structural/components/cycle.py +48 -28
  17. pymc_extras/statespace/models/structural/components/level_trend.py +61 -29
  18. pymc_extras/statespace/models/structural/components/measurement_error.py +22 -5
  19. pymc_extras/statespace/models/structural/components/regression.py +47 -18
  20. pymc_extras/statespace/models/structural/components/seasonality.py +278 -95
  21. pymc_extras/statespace/models/structural/core.py +27 -8
  22. pymc_extras/statespace/utils/constants.py +17 -14
  23. pymc_extras/statespace/utils/data_tools.py +1 -1
  24. {pymc_extras-0.4.0.dist-info → pymc_extras-0.4.1.dist-info}/METADATA +1 -1
  25. {pymc_extras-0.4.0.dist-info → pymc_extras-0.4.1.dist-info}/RECORD +27 -27
  26. {pymc_extras-0.4.0.dist-info → pymc_extras-0.4.1.dist-info}/WHEEL +0 -0
  27. {pymc_extras-0.4.0.dist-info → pymc_extras-0.4.1.dist-info}/licenses/LICENSE +0 -0
@@ -120,7 +120,7 @@ class StructuralTimeSeries(PyMCStateSpace):
120
120
  initial_trend = pm.Normal('initial_trend', sigma=10, dims=ss_mod.param_dims['initial_trend'])
121
121
  sigma_trend = pm.HalfNormal('sigma_trend', sigma=1, dims=ss_mod.param_dims['sigma_trend'])
122
122
 
123
- seasonal_coefs = pm.Normal('seasonal_coefs', sigma=1, dims=ss_mod.param_dims['seasonal_coefs'])
123
+ seasonal_coefs = pm.Normal('params_seasonal', sigma=1, dims=ss_mod.param_dims['params_seasonal'])
124
124
  sigma_seasonal = pm.HalfNormal('sigma_seasonal', sigma=1)
125
125
 
126
126
  sigma_obs = pm.Exponential('sigma_obs', 1, dims=ss_mod.param_dims['sigma_obs'])
@@ -310,16 +310,20 @@ class StructuralTimeSeries(PyMCStateSpace):
310
310
 
311
311
  for i, (name, s) in enumerate(zip(names, state_slices)):
312
312
  obs_idx = info[name]["obs_state_idx"]
313
+
313
314
  if obs_idx is None:
314
315
  continue
315
316
 
316
317
  X = data[..., s]
318
+
317
319
  if info[name]["combine_hidden_states"]:
318
- sum_idx = np.flatnonzero(obs_idx)
319
- result.append(X[..., sum_idx].sum(axis=-1)[..., None])
320
+ sum_idx_joined = np.flatnonzero(obs_idx)
321
+ sum_idx_split = np.split(sum_idx_joined, info[name]["k_endog"])
322
+ for sum_idx in sum_idx_split:
323
+ result.append(X[..., sum_idx].sum(axis=-1)[..., None])
320
324
  else:
321
- comp_names = self.state_names[s]
322
- for j, state_name in enumerate(comp_names):
325
+ n_components = len(self.state_names[s])
326
+ for j in range(n_components):
323
327
  result.append(X[..., j, None])
324
328
 
325
329
  return np.concatenate(result, axis=-1)
@@ -332,7 +336,15 @@ class StructuralTimeSeries(PyMCStateSpace):
332
336
 
333
337
  for i, (name, s) in enumerate(zip(names, state_slices)):
334
338
  if info[name]["combine_hidden_states"]:
335
- result.append(name)
339
+ if self.k_endog == 1:
340
+ result.append(name)
341
+ else:
342
+ # If there are multiple observed states, we will combine per hidden state, preserving the
343
+ # observed state names. Note this happens even if this *component* has only 1 state for consistency,
344
+ # as long as the statespace model has multiple observed states.
345
+ result.extend(
346
+ [f"{name}[{obs_name}]" for obs_name in info[name]["observed_state_names"]]
347
+ )
336
348
  else:
337
349
  comp_names = self.state_names[s]
338
350
  result.extend([f"{name}[{comp_name}]" for comp_name in comp_names])
@@ -350,7 +362,7 @@ class StructuralTimeSeries(PyMCStateSpace):
350
362
  Returns
351
363
  -------
352
364
  idata: Dataset
353
- An Dataset object with hidden states transformed to represent only the "interpretable" subcomponents
365
+ A Dataset object with hidden states transformed to represent only the "interpretable" subcomponents
354
366
  of the structural model.
355
367
 
356
368
  Notes
@@ -459,6 +471,10 @@ class Component:
459
471
  obs_state_idxs : np.ndarray | None, optional
460
472
  Indices indicating which states contribute to observed variables. If None,
461
473
  defaults to None.
474
+ share_states : bool, optional
475
+ Whether states are shared across multiple endogenous variables in multivariate
476
+ models. When True, the same latent states affect all observed variables.
477
+ Default is False.
462
478
 
463
479
  Examples
464
480
  --------
@@ -500,10 +516,12 @@ class Component:
500
516
  combine_hidden_states=True,
501
517
  component_from_sum=False,
502
518
  obs_state_idxs=None,
519
+ share_states: bool = False,
503
520
  ):
504
521
  self.name = name
505
522
  self.k_endog = k_endog
506
523
  self.k_states = k_states
524
+ self.share_states = share_states
507
525
  self.k_posdef = k_posdef
508
526
  self.measurement_error = measurement_error
509
527
 
@@ -540,11 +558,12 @@ class Component:
540
558
  self._component_info = {
541
559
  self.name: {
542
560
  "k_states": self.k_states,
543
- "k_enodg": self.k_endog,
561
+ "k_endog": self.k_endog,
544
562
  "k_posdef": self.k_posdef,
545
563
  "observed_state_names": self.observed_state_names,
546
564
  "combine_hidden_states": combine_hidden_states,
547
565
  "obs_state_idx": obs_state_idxs,
566
+ "share_states": self.share_states,
548
567
  }
549
568
  }
550
569
 
@@ -12,6 +12,7 @@ MA_PARAM_DIM = "lag_ma"
12
12
  SEASONAL_AR_PARAM_DIM = "seasonal_lag_ar"
13
13
  SEASONAL_MA_PARAM_DIM = "seasonal_lag_ma"
14
14
  ETS_SEASONAL_DIM = "seasonal_lag"
15
+ EXOGENOUS_DIM = "exogenous"
15
16
 
16
17
  NEVER_TIME_VARYING = ["initial_state", "initial_state_cov", "a0", "P0"]
17
18
  VECTOR_VALUED = ["initial_state", "state_intercept", "obs_intercept", "a0", "c", "d"]
@@ -38,14 +39,16 @@ SHORT_NAME_TO_LONG = dict(zip(MATRIX_NAMES, LONG_MATRIX_NAMES))
38
39
  LONG_NAME_TO_SHORT = dict(zip(LONG_MATRIX_NAMES, MATRIX_NAMES))
39
40
 
40
41
  FILTER_OUTPUT_NAMES = [
41
- "filtered_state",
42
- "predicted_state",
43
- "filtered_covariance",
44
- "predicted_covariance",
42
+ "filtered_states",
43
+ "predicted_states",
44
+ "filtered_covariances",
45
+ "predicted_covariances",
46
+ "predicted_observed_states",
47
+ "predicted_observed_covariances",
45
48
  ]
46
49
 
47
- SMOOTHER_OUTPUT_NAMES = ["smoothed_state", "smoothed_covariance"]
48
- OBSERVED_OUTPUT_NAMES = ["predicted_observed_state", "predicted_observed_covariance"]
50
+ SMOOTHER_OUTPUT_NAMES = ["smoothed_states", "smoothed_covariances"]
51
+ OBSERVED_OUTPUT_NAMES = ["predicted_observed_states", "predicted_observed_covariances"]
49
52
 
50
53
  MATRIX_DIMS = {
51
54
  "x0": (ALL_STATE_DIM,),
@@ -60,14 +63,14 @@ MATRIX_DIMS = {
60
63
  }
61
64
 
62
65
  FILTER_OUTPUT_DIMS = {
63
- "filtered_state": (TIME_DIM, ALL_STATE_DIM),
64
- "smoothed_state": (TIME_DIM, ALL_STATE_DIM),
65
- "predicted_state": (TIME_DIM, ALL_STATE_DIM),
66
- "filtered_covariance": (TIME_DIM, ALL_STATE_DIM, ALL_STATE_AUX_DIM),
67
- "smoothed_covariance": (TIME_DIM, ALL_STATE_DIM, ALL_STATE_AUX_DIM),
68
- "predicted_covariance": (TIME_DIM, ALL_STATE_DIM, ALL_STATE_AUX_DIM),
69
- "predicted_observed_state": (TIME_DIM, OBS_STATE_DIM),
70
- "predicted_observed_covariance": (TIME_DIM, OBS_STATE_DIM, OBS_STATE_AUX_DIM),
66
+ "filtered_states": (TIME_DIM, ALL_STATE_DIM),
67
+ "smoothed_states": (TIME_DIM, ALL_STATE_DIM),
68
+ "predicted_states": (TIME_DIM, ALL_STATE_DIM),
69
+ "filtered_covariances": (TIME_DIM, ALL_STATE_DIM, ALL_STATE_AUX_DIM),
70
+ "smoothed_covariances": (TIME_DIM, ALL_STATE_DIM, ALL_STATE_AUX_DIM),
71
+ "predicted_covariances": (TIME_DIM, ALL_STATE_DIM, ALL_STATE_AUX_DIM),
72
+ "predicted_observed_states": (TIME_DIM, OBS_STATE_DIM),
73
+ "predicted_observed_covariances": (TIME_DIM, OBS_STATE_DIM, OBS_STATE_AUX_DIM),
71
74
  }
72
75
 
73
76
  POSITION_DERIVATIVE_NAMES = ["level", "trend", "acceleration", "jerk", "snap", "crackle", "pop"]
@@ -53,7 +53,7 @@ def _validate_data_shape(data_shape, n_obs, obs_coords=None, check_col_names=Fal
53
53
  if len(missing_cols) > 0:
54
54
  raise ValueError(
55
55
  "Columns of DataFrame provided as data do not match state names. The following states were"
56
- f'not found: {", ".join(missing_cols)}. This may result in unexpected results in complex'
56
+ f"not found: {', '.join(missing_cols)}. This may result in unexpected results in complex"
57
57
  f"statespace models"
58
58
  )
59
59
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pymc-extras
3
- Version: 0.4.0
3
+ Version: 0.4.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
@@ -2,12 +2,12 @@ pymc_extras/__init__.py,sha256=YsR6OG72aW73y6dGS7w3nGGMV-V-ImHkmUOXKMPfMRA,1230
2
2
  pymc_extras/deserialize.py,sha256=dktK5gsR96X3zAUoRF5udrTiconknH3uupiAWqkZi0M,5937
3
3
  pymc_extras/linearmodel.py,sha256=KkvZ_DBXOD6myPgVNzu742YV0OzDK449_pDqNC5yae4,3975
4
4
  pymc_extras/model_builder.py,sha256=sAw77fxdiy046BvDPjocuMlbJ0Efj-CDAGtmcwYmoG0,26361
5
- pymc_extras/printing.py,sha256=G8mj9dRd6i0PcsbcEWZm56ek6V8mmil78RI4MUhywBs,6506
5
+ pymc_extras/printing.py,sha256=bFOANgsOWDk0vbRMvm2h_D5TsT7OiSojdG7tvyfCw28,6506
6
6
  pymc_extras/prior.py,sha256=0XbyRRVuS7aKY5gmvJr_iq4fGyHrRDeI_OjWu_O7CTA,39449
7
- pymc_extras/distributions/__init__.py,sha256=fDbrBt9mxEVp2CDPwnyCW3oiutzZ0PduB8EUH3fUrjI,1377
7
+ pymc_extras/distributions/__init__.py,sha256=Cge3AP7gzD6qTJY7v2tYRtSgn-rlnIo7wQBgf3IfKQ8,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
10
- pymc_extras/distributions/histogram_utils.py,sha256=5RTvlGCUrp2qzshrchmPyWxjhs6RIYL62SMikjDM1TU,5814
10
+ pymc_extras/distributions/histogram_utils.py,sha256=xvCc19nlOmeb9PLZDcsR5PRdmcr5sRefZlPlCvxmGfM,5814
11
11
  pymc_extras/distributions/timeseries.py,sha256=M5MZ-nik_tgkaoZ1hdUGEZ9g04DQyVLwszVJqSKwNcY,12719
12
12
  pymc_extras/distributions/multivariate/__init__.py,sha256=E8OeLW9tTotCbrUjEo4um76-_WQD56PehsPzkKmhfyA,93
13
13
  pymc_extras/distributions/multivariate/r2d2m2cp.py,sha256=bUj9bB-hQi6CpaJfvJjgNPi727uTbvAdxl9fm1zNBqY,16005
@@ -15,7 +15,7 @@ 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=YJIBqHoJnjglof7SVESH3u67li_ETmMy24zajld0DNE,917
18
+ pymc_extras/inference/__init__.py,sha256=sy1JYQGNZNvPs-3jVFfbFQTW0iCIrbjH3aHBpx1HQi0,917
19
19
  pymc_extras/inference/fit.py,sha256=U_jfzuyjk5bV6AvOxtOKzBg-q4z-_BOR06Hn38T0W6E,1328
20
20
  pymc_extras/inference/laplace_approx/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
21
  pymc_extras/inference/laplace_approx/find_map.py,sha256=fP8DQ21OZbkUiBaq-TXGe7CtH0umupFacRC3qReoiKU,14022
@@ -38,41 +38,41 @@ pymc_extras/model/transforms/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NM
38
38
  pymc_extras/model/transforms/autoreparam.py,sha256=_NltGWmNqi_X9sHCqAvWcBveLTPxVy11-wENFTcN6kk,12377
39
39
  pymc_extras/preprocessing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
40
40
  pymc_extras/preprocessing/standard_scaler.py,sha256=Vajp33ma6OkwlU54JYtSS8urHbMJ3CRiRFxZpvFNuus,600
41
- pymc_extras/statespace/__init__.py,sha256=0MtZj7yT6jcyERvITnn-nkhyY8fO6Za4_vV53CF6ND0,429
42
- pymc_extras/statespace/core/__init__.py,sha256=huHEiXAm8zV2MZyZ8GBHp6q7_fnWqveM7lC6ilpb3iE,309
41
+ pymc_extras/statespace/__init__.py,sha256=PxV8i4aa2XJarRM6aKU14_bEY1AoLu4bNXIBy_E1rRw,431
42
+ pymc_extras/statespace/core/__init__.py,sha256=LEhkqdMZzzcTyzYml45IM4ykWoCdbWWj2c29IpM_ey8,309
43
43
  pymc_extras/statespace/core/compile.py,sha256=9FZfE8Bi3VfElxujfOIKRVvmyL9M5R0WfNEqPc5kbVQ,1603
44
- pymc_extras/statespace/core/representation.py,sha256=DwNIun6wdeEA20oWBx5M4govyWTf5JI87aGQ_E6Mb4U,18956
45
- pymc_extras/statespace/core/statespace.py,sha256=mr0jDeCEfclCAGfEfEzMsogiuonGO9k2BV67wH_YKio,105627
46
- pymc_extras/statespace/filters/__init__.py,sha256=N9Q4D0gAq_ZtT-GtrqiX1HkSg6Orv7o1TbrWUtnbTJE,420
44
+ pymc_extras/statespace/core/representation.py,sha256=boY-jjlkd3KuuO2XiSuV-GwEAyEqRJ9267H72AmE3BU,18956
45
+ pymc_extras/statespace/core/statespace.py,sha256=yu7smA5w7l1LFNjTwuKLnGarGLx4HEPJKQ9ZMDbWhDY,108161
46
+ pymc_extras/statespace/filters/__init__.py,sha256=F0EtZUhArp23lj3upy6zB0mDTjLIjwGh0pKmMny0QfY,420
47
47
  pymc_extras/statespace/filters/distributions.py,sha256=-s1c5s2zm6FMc0UqKSrWnJzIF4U5bvJT_3mMNTyV_ak,11927
48
- pymc_extras/statespace/filters/kalman_filter.py,sha256=Z6kxsbW8_VQ6ZcPjDMA5d_XPfdUY1-4GfRwKbBNfVZs,31438
48
+ pymc_extras/statespace/filters/kalman_filter.py,sha256=rgpgF4KZXX5M8yRwblrt2SEINKgoXgiKNfKkbl7ZU9Y,31464
49
49
  pymc_extras/statespace/filters/kalman_smoother.py,sha256=5jlSZAPveJzD5Q8omnpn7Gb1jgElBMgixGR7H9zoH8U,4183
50
50
  pymc_extras/statespace/filters/utilities.py,sha256=iwdaYnO1cO06t_XUjLLRmqb8vwzzVH6Nx1iyZcbJL2k,1584
51
51
  pymc_extras/statespace/models/ETS.py,sha256=08sbiuNvKdxcgKzS7jWj-z4jf-su73WFkYc8sKkGdEs,28538
52
- pymc_extras/statespace/models/SARIMAX.py,sha256=aXR6KYuqtSBOk-jvm9NvnOX5vu4QesBgCIL-KR89SXs,22207
53
- pymc_extras/statespace/models/VARMAX.py,sha256=CX8Gs4GP3u6aD2b8nxonA5zCoQzIca668iLF0SkKF00,16456
54
- pymc_extras/statespace/models/__init__.py,sha256=U79b8rTHBNijVvvGOd43nLu4PCloPUH1rwlN87-n88c,317
52
+ pymc_extras/statespace/models/SARIMAX.py,sha256=Yppz_k1ZyZuKPC62WIye6K7luw44cP-dog73VVkw0L4,25096
53
+ pymc_extras/statespace/models/VARMAX.py,sha256=7obJFXES9t9NONlcUQoeJ9TCqyoDlVat9FkPviQhAq0,25947
54
+ pymc_extras/statespace/models/__init__.py,sha256=DUwPrwfnz9AUbgZOFvZeUpWEw5FiPAK5X9x7vZrRWqY,319
55
55
  pymc_extras/statespace/models/utilities.py,sha256=jpUYByAy6rMFP7l56uST1SEYchRa-clsFQ-At_1NLSw,27123
56
- pymc_extras/statespace/models/structural/__init__.py,sha256=lplt7FYxeV4jt3zx0jAkaqeCyk-bVrYSk7z6Ubz86O8,811
57
- pymc_extras/statespace/models/structural/core.py,sha256=Vm61KhlgTHLvTE_kCSZu63G-UJRgfD6KtzVjwqYsrvk,34350
56
+ pymc_extras/statespace/models/structural/__init__.py,sha256=jvbczE1IeNkhW7gMQ2vF2BhhKHeYyfD90mV-Awko-Vs,811
57
+ pymc_extras/statespace/models/structural/core.py,sha256=n0cbP8_-NFLmflFF4x37AyOOIHcY5iylRrgTzjyOAhM,35374
58
58
  pymc_extras/statespace/models/structural/utils.py,sha256=Eze34Z0iXJzDC_gZEY2mHrp2VIYu8rHV915vM4U5Sn4,359
59
59
  pymc_extras/statespace/models/structural/components/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
60
- pymc_extras/statespace/models/structural/components/autoregressive.py,sha256=vaFmfJ0EljUQKiTTqqMthMztK4jVXuxBu5sxhu9esPU,6861
61
- pymc_extras/statespace/models/structural/components/cycle.py,sha256=CGuV0TJSj9KkO7eHHZUxAhaGKS1erODkv-dLXiVkNUI,12907
62
- pymc_extras/statespace/models/structural/components/level_trend.py,sha256=rfRHuWlI84QA_as1mWUnp9Z-KeHp9rGLyEL-GUSsfVQ,9895
63
- pymc_extras/statespace/models/structural/components/measurement_error.py,sha256=49oN77hUpZMS-1M5DxDvKREAi4Tp041JrrF33wuNeAs,4628
64
- pymc_extras/statespace/models/structural/components/regression.py,sha256=D1NJHlVf8bOYxmQMVDZ1dE1JiVwnBr73rvvmYym4i9c,8571
65
- pymc_extras/statespace/models/structural/components/seasonality.py,sha256=ZByEMpovVO1Y-124OLB894td0YVy6HaM3vjYhVYANC4,19093
60
+ pymc_extras/statespace/models/structural/components/autoregressive.py,sha256=HkS5an5fuNOBGcjHFNMUVNJrF1BNnlpQxvmPq_5dD0s,8021
61
+ pymc_extras/statespace/models/structural/components/cycle.py,sha256=qEiGFGMEXKS2Tl_zgzKIp77ijGXCVq6UIHEZp_ErHSQ,13931
62
+ pymc_extras/statespace/models/structural/components/level_trend.py,sha256=7glYX_tKOJPq6uB1NBuPQFFZGkhcwK4GMZUBTcU0xIY,11357
63
+ pymc_extras/statespace/models/structural/components/measurement_error.py,sha256=5LHDx3IplNrWSGcsY3xJLywKPosTqr42jlrvm80ZApM,5316
64
+ pymc_extras/statespace/models/structural/components/regression.py,sha256=27PRV9I64_VXIyjUi7pRr_gbk7sSI5DfJ4FBAbq5WCM,9856
65
+ pymc_extras/statespace/models/structural/components/seasonality.py,sha256=soXJIZ2xewUhSUb5s2MGnxvnQCcir7ZgbgkSr94xEvc,26987
66
66
  pymc_extras/statespace/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
67
- pymc_extras/statespace/utils/constants.py,sha256=S2J4FGqMKNQJQnDjE9y4ul0D_pwSKgiu5kii7Dem_cA,2403
67
+ pymc_extras/statespace/utils/constants.py,sha256=-4vCXo7-X3IuzdcplWBrAV9m9tm8JngcgoE-8imGmj0,2518
68
68
  pymc_extras/statespace/utils/coord_tools.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
69
- pymc_extras/statespace/utils/data_tools.py,sha256=QDBcELbE5Dyng24tE3Pl5IiPOxl4EDEH73lRKMymIOE,6620
69
+ pymc_extras/statespace/utils/data_tools.py,sha256=Tomur7d8WCKlMXUCrPqufqVTKUe_nLLCHdipsM9pmaI,6620
70
70
  pymc_extras/utils/__init__.py,sha256=yxI9cJ7fCtVQS0GFw0y6mDGZIQZiK53vm3UNKqIuGSk,758
71
71
  pymc_extras/utils/linear_cg.py,sha256=KkXhuimFsrKtNd_0By2ApxQQQNm5FdBtmDQJOVbLYkA,10056
72
72
  pymc_extras/utils/model_equivalence.py,sha256=8QIftID2HDxD659i0RXHazQ-l2Q5YegCRLcDqb2p9Pc,2187
73
73
  pymc_extras/utils/prior.py,sha256=QlWVr7uKIK9VncBw7Fz3YgaASKGDfqpORZHc-vz_9gQ,6841
74
74
  pymc_extras/utils/spline.py,sha256=qGq0gcoMG5dpdazKFzG0RXkkCWP8ADPPXN-653-oFn4,4820
75
- pymc_extras-0.4.0.dist-info/METADATA,sha256=NilZkqZEg7D4NfORAYoHEKpGnv1E0P5_GjmAB42zqzA,18898
76
- pymc_extras-0.4.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
77
- pymc_extras-0.4.0.dist-info/licenses/LICENSE,sha256=WjiLhUKEysJvy5e9jk6WwFv9tmAPtnov1uJ6gcH1kIs,11720
78
- pymc_extras-0.4.0.dist-info/RECORD,,
75
+ pymc_extras-0.4.1.dist-info/METADATA,sha256=TpuX_8nEFjQfPlC51u_2EvQV3XwHAvgYCQMKYzeVU_E,18898
76
+ pymc_extras-0.4.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
77
+ pymc_extras-0.4.1.dist-info/licenses/LICENSE,sha256=WjiLhUKEysJvy5e9jk6WwFv9tmAPtnov1uJ6gcH1kIs,11720
78
+ pymc_extras-0.4.1.dist-info/RECORD,,