determinísticos_a_plano#

pymc_marketing.model_graph.deterministics_to_flat(model, names)[fuente]#

Reemplace todos los nodos deterministas especificados en un pm.Model con Flat.

Esto es útil para capturar algún estado de un modelo y luego muestrear del modelo utilizando ese estado. Por ejemplo, capturando la media de una distribución o un valor de una variable determinista.

Vea pymc_marketing.mmm.hsgp.SoftPlusHSGP para un ejemplo de cómo se utiliza esto para mantener una variable centrada alrededor de 1.0 durante el muestreo, pero que permanezca continua con nuevos valores.

Parámetros:
modelo : pm.Modelpm.Model

Modelo PyMC a ser transformado

nombres : list[str]list[str]

Nombres de las variables deterministas que serán reemplazadas por flat

Devoluciones:
nuevo_modelo : pm.Modelpm.Model

Nuevo modelo con todos los priors reemplazados por priors planos

Ejemplos

Reemplace Determinista único por Plano y muestree como si fueran ceros.

import pymc as pm
import numpy as np
import xarray as xr
from pymc_marketing.model_graph import deterministics_to_flat

with pm.Model() as model:
    x = pm.Normal("x", mu=0, sigma=1)
    y = pm.Deterministic("y", x**2)
    z = pm.Deterministic("z", x + y)

new_model = deterministics_to_flat(model, ["y"])

chains, draws = 2, 100
mock_posterior = xr.Dataset(
    {
        "y": (("chain", "draw"), np.zeros((chains, draws))),
    },
    coords={"chain": np.arange(chains), "draw": np.arange(draws)},
)

x_z_given_y = pm.sample_posterior_predictive(
    mock_posterior,
    model=new_model,
    var_names=["x", "z"],
).posterior_predictive

np.testing.assert_allclose(
    x_z_given_y["x"],
    x_z_given_y["z"],
)