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
dfproporcionado. Para cada aristaA -> Bcrea un prior de pendiente para la contribución deAen la media deB. Cada nodo recibe un prior de verosimilitud. Dims y coords se utilizan para alinear e indexar los datos observados a través depm.Datay xarray.- Parámetros:
- dag
str 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").- df
pandas.DataFrame DataFrame que contiene una columna para cada nodo presente en el DAG y todas las columnas nombradas por los
dimsproporcionados.- 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.- dims
tuple[str, …] Dimensiones para las variables observadas y las probabilidades (por ejemplo,
("date", "channel")).- coords
dict Mapeo de nombres de dimensiones a valores de coordenadas. Todas las claves de coordenadas deben existir como columnas en
dfy 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 depymc_extras.prior.Prior. Las claves faltantes se revertirán a :pyattr:`default_model_config`.
- dag
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, ...])Construya y devuelva el modelo PyMC implícito en el DAG y los datos.
Devuelve una copia del DAG analizado como un grafo dirigido de NetworkX.
Devuelve una visualización de Graphviz del modelo PyMC construido.
Atributos
default_model_configPriors predeterminados para interceptos, pendientes y verosimilitud utilizando
pymc_extras.Prior.