ConstruirModeloDesdeDAG#

class pymc_marketing.mmm.causal.BuildModelFromDAG(*, dag=FieldInfo(annotation=NoneType, required=True, description='DAG in DOT string format or A->B list'), df=FieldInfo(annotation=NoneType, required=True, description='DataFrame containing all DAG node columns'), target=FieldInfo(annotation=NoneType, required=True, description='Target node name present in DAG and df'), dims=FieldInfo(annotation=NoneType, required=True, description='Dims for observed/likelihood variables'), coords=FieldInfo(annotation=NoneType, required=True, description='Required coords mapping for dims and priors. All coord keys must exist as columns in df.'), model_config=FieldInfo(annotation=NoneType, required=False, default=None, description="Optional model config with Priors for 'intercept', 'slope' and 'likelihood'. Keys not supplied fall back to defaults."))[fuente]#

Construya un modelo probabilístico de PyMC directamente a partir de un DAG causal y un conjunto de datos tabular.

La clase interpreta un Grafo Dirigido Acíclico (DAG) donde cada nodo es una columna en el df proporcionado. Para cada arista A -> B crea un prior de pendiente para la contribución de A en la media de B. Cada nodo recibe un prior de verosimilitud. Dims y coords se utilizan para alinear e indexar los datos observados a través de pm.Data y xarray.

Parámetros:
dagstr

DAG en formato DOT (por ejemplo, digraph { A -> B; B -> C; }) o como una lista simple de aristas separadas por comas/nuevas líneas (por ejemplo, "A->B, B->C").

dfpandas.DataFrame

DataFrame que contiene una columna para cada nodo presente en el DAG y todas las columnas nombradas por los dims proporcionados.

objetivo : strstr

Nombre del nodo objetivo presente tanto en el DAG como en df. Esto no se utiliza para restringir la modelización, pero se valida para que exista en el DAG.

dimstuple[str, …]

Dimensiones para las variables observadas y las probabilidades (por ejemplo, ("date", "channel")).

coordsdict

Mapeo de nombres de dimensiones a valores de coordenadas. Todas las claves de coordenadas deben existir como columnas en df y se utilizarán para pivotar los datos para que coincidan con las dimensiones.

model_config : dict, opcionalpython:dict, opcional

Configuración opcional con priors para las claves "intercept", "slope" y "likelihood". Los valores deben ser instancias de pymc_extras.prior.Prior. Las claves faltantes se revertirán a :pyattr:`default_model_config`.

Ejemplos

Ejemplo mínimo utilizando el formato DOT:

import numpy as np
import pandas as pd

from pymc_marketing.mmm.causal import BuildModelFromDAG

dates = pd.date_range("2024-01-01", periods=5, freq="D")
df = pd.DataFrame(
    {
        "date": dates,
        "X": np.random.normal(size=5),
        "Y": np.random.normal(size=5),
    }
)

dag = "digraph { X -> Y; }"
dims = ("date",)
coords = {"date": dates}

builder = BuildModelFromDAG(
    dag=dag, df=df, target="Y", dims=dims, coords=coords
)
model = builder.build()

Formato de lista de aristas y prior de verosimilitud personalizado:

from pymc_extras.prior import Prior

dag = "X->Y"  # equivalent to the DOT example above
model_config = {
    "likelihood": Prior(
        "StudentT", nu=5, sigma=Prior("HalfNormal", sigma=1), dims=("date",)
    ),
}

builder = BuildModelFromDAG(
    dag=dag,
    df=df,
    target="Y",
    dims=("date",),
    coords={"date": dates},
    model_config=model_config,
)
model = builder.build()

Métodos

BuildModelFromDAG.__init__(*[, dag, df, ...])

BuildModelFromDAG.build()

Construya y devuelva el modelo PyMC implícito en el DAG y los datos.

BuildModelFromDAG.dag_graph()

Devuelve una copia del DAG analizado como un grafo dirigido de NetworkX.

BuildModelFromDAG.model_graph()

Devuelve una visualización de Graphviz del modelo PyMC construido.

Atributos

default_model_config

Priors predeterminados para interceptos, pendientes y verosimilitud utilizando pymc_extras.Prior.