pyhgf.updates.prediction.volatile.predict_precision_value_level#

pyhgf.updates.prediction.volatile.predict_precision_value_level(attributes, edges, node_idx)[source]#

Predict the value-level precisions using the implicit volatility level.

The implicit volatility level is treated as a full Gaussian parent: the exact moment-generating-function correction \(\kappa^2 / (2 \, \hat{\pi}_{\mathrm{vol}})\) is added inside the log-volatility exponent. In addition, each value parent contributes a first-order Laplace term \((t^{(k)} \, \alpha \, g'(\hat{\mu}_b))^2 / \tilde{\pi}_b\) to the marginal predictive variance (using each parent’s marginal predicted precision, expected_precision).

Two predicted precisions are returned (see pyhgf.typing.LayerState for the notation table):

\[\frac{1}{\hat{\pi}_a^{(k)}} = \frac{1}{\pi_a^{(k-1)}} + \Omega_a^{(k)}, \qquad \frac{1}{\tilde{\pi}_a^{(k)}} = \frac{1}{\hat{\pi}_a^{(k)}} + \sum_{b} \frac{ (t^{(k)} \, \alpha_b \, g'(\hat{\mu}_b))^2 } { \tilde{\pi}_b }.\]

\(\hat{\pi}_a\) is the conditional predicted precision used by the parent’s posterior-step Schur complement; \(\tilde{\pi}_a\) is the marginal predicted precision consumed by downstream surprise/likelihood code.

Parameters:
  • attributes (dict) – The attributes of the probabilistic nodes.

  • edges (tuple[AdjacencyLists, ...]) – The edges of the probabilistic network as a tuple of pyhgf.typing.AdjacencyLists.

  • node_idx (int) – Index of the volatile state node.

Returns:

  • expected_precision – The marginal predicted precision \(\tilde{\pi}_a^{(k)}\).

  • conditional_expected_precision – The conditional predicted precision \(\hat{\pi}_a^{(k)}\).

  • effective_precision – The effective precision \(\gamma_a^{(k)} = \Omega_a^{(k)} \tilde{\pi}_a^{(k)}\), consumed by the volatility-coupling posterior update.

Return type:

tuple[Array, Array, Array]