HSGPPeriódico#
- class pymc_marketing.mmm.hsgp.HSGPPeriodic(**data)[fuente]#
Componente HSGP para datos periódicos.
Ejemplos
HSGPPeriódico con configuración predeterminada:
import numpy as np import pandas as pd import matplotlib.pyplot as plt from pymc_marketing.mmm import HSGPPeriodic from pymc_extras.prior import Prior seed = sum(map(ord, "Periodic GP")) rng = np.random.default_rng(seed) n = 52 * 3 dates = pd.date_range("2023-01-01", periods=n, freq="W-MON") X = np.arange(n) coords = { "time": dates, } scale = Prior("HalfNormal", sigma=1) ls = Prior("InverseGamma", alpha=2, beta=1) hsgp = HSGPPeriodic( scale=scale, m=20, cov_func="periodic", ls=ls, period=52, dims="time", ) hsgp.register_data(X) prior = hsgp.sample_prior(coords=coords, random_seed=rng) curve = prior["f"] fig, axes = hsgp.plot_curve( curve, n_samples=3, random_seed=rng, ) ax = axes[0] ax.set(xlabel="Date", ylabel="f", title="HSGP with period of 52 weeks") plt.show()
(
Source code,png,hires.png,pdf)
HSGPPeriódico con función de enlace a través del argumento
transformNota
El parámetro
transformdebe estar registrado o ser de los espacios de nombrespytensor.tensoropymc.math. Consulte lapymc_extras.prior.register_tensor_transform()import numpy as np import pandas as pd import matplotlib.pyplot as plt from pymc_marketing.mmm import HSGPPeriodic from pymc_extras.prior import Prior seed = sum(map(ord, "Periodic GP")) rng = np.random.default_rng(seed) n = 52 * 3 dates = pd.date_range("2023-01-01", periods=n, freq="W-MON") X = np.arange(n) coords = { "time": dates, } scale = Prior("Gamma", mu=0.25, sigma=0.1) ls = Prior("InverseGamma", alpha=2, beta=1) hsgp = HSGPPeriodic( scale=scale, m=20, cov_func="periodic", ls=ls, period=52, dims="time", transform="exp", ) hsgp.register_data(X) prior = hsgp.sample_prior(coords=coords, random_seed=rng) curve = prior["f"] fig, axes = hsgp.plot_curve( curve, n_samples=3, random_seed=rng, ) ax = axes[0] ax.set(xlabel="Date", ylabel="f", title="HSGP with period of 52 weeks") plt.show()
(
Source code,png,hires.png,pdf)
Base menospreciada para HSGPPeriodic
import numpy as np import pandas as pd import xarray as xr import matplotlib.pyplot as plt from pymc_marketing.mmm import HSGPPeriodic from pymc_marketing.plot import plot_curve seed = sum(map(ord, "Periodic GP")) rng = np.random.default_rng(seed) scale = 0.25 ls = 1 kwargs = dict(ls=ls, scale=scale, period=52, cov_func="periodic", dims="time", m=20) n = 52 * 3 dates = pd.date_range("2023-01-01", periods=n, freq="W-MON") X = np.arange(n) coords = {"time": dates} hsgp = HSGPPeriodic(demeaned_basis=False, **kwargs).register_data(X) hsgp_demeaned = HSGPPeriodic(demeaned_basis=True, **kwargs).register_data(X) def sample_curve(hsgp): return hsgp.sample_prior(coords=coords, random_seed=rng)["f"] non_demeaned = sample_curve(hsgp).rename("False") demeaned = sample_curve(hsgp_demeaned).rename("True") combined = xr.merge([non_demeaned, demeaned]).to_array("demeaned") _, axes = combined.pipe(plot_curve, "time", same_axes=True) axes[0].set(title="Demeaned the intercepty first basis") plt.show()
(
Source code,png,hires.png,pdf)
HSGPPeriódico de dimensiones superiores con datos periódicos
import numpy as np import pandas as pd import pymc as pm import matplotlib.pyplot as plt from pymc_marketing.mmm import HSGPPeriodic from pymc_extras.prior import Prior seed = sum(map(ord, "Higher dimensional HSGP with periodic data")) rng = np.random.default_rng(seed) n = 52 * 3 dates = pd.date_range("2023-01-01", periods=n, freq="W-MON") X = np.arange(n) scale = Prior("HalfNormal", sigma=1) ls = Prior("InverseGamma", alpha=2, beta=1) hsgp = HSGPPeriodic( X=X, scale=scale, ls=ls, m=20, cov_func="periodic", period=52, dims=("time", "channel", "product"), ) coords = { "time": dates, "channel": ["A", "B"], "product": ["X", "Y", "Z"], } prior = hsgp.sample_prior(coords=coords, random_seed=rng) curve = prior["f"] fig, axes = hsgp.plot_curve( curve, n_samples=3, random_seed=rng, subplot_kwargs={"figsize": (12, 8), "ncols": 3}, ) plt.show()
(
Source code,png,hires.png,pdf)
Métodos
HSGPPeriodic.__init__(**data)Cree un nuevo modelo analizando y validando los datos de entrada de los argumentos de palabra clave.
HSGPPeriodic.construct([_fields_set])HSGPPeriodic.copy(*[, incluir, excluir, ...])Devuelve una copia del modelo.
HSGPPeriodic.create_variable(name[, xdist])Crear variable HSGP.
Nombre de las variables determinísticas que se reemplazan con pm.Flat para fuera de muestra.
HSGPPeriodic.dict(*[, incluir, excluir, ...])HSGPPeriodic.from_dict(datos)Cree un objeto a partir de un diccionario.
HSGPPeriodic.json(*[, incluir, excluir, ...])HSGPPeriodic.model_construct([_fields_set])Crea una nueva instancia de la clase
Modelcon datos validados.HSGPPeriodic.model_copy(*[, actualizar, profundo])!!! abstract "Documentación de Uso"
HSGPPeriodic.model_dump(*[, modo, incluir, ...])!!! abstract "Documentación de Uso"
HSGPPeriodic.model_dump_json(*[, indent, ...])!!! abstract "Documentación de Uso"
HSGPPeriodic.model_json_schema([por_alias, ...])Genera un esquema JSON para una clase de modelo.
Calcule el nombre de la clase para parametrizaciones de clases genéricas.
HSGPPeriodic.model_post_init(context, /)Sobrescriba este método para realizar una inicialización adicional después de
__init__ymodel_construct.HSGPPeriodic.model_rebuild(*[, forzar, ...])Intente reconstruir el esquema de pydantic-core para el modelo.
HSGPPeriodic.model_validate(obj, *[, ...])Valide una instancia de modelo pydantic.
HSGPPeriodic.model_validate_json(json_data, *)!!! abstract "Documentación de Uso"
Valide el objeto dado con datos de cadena contra el modelo de Pydantic.
HSGPPeriodic.parse_file(ruta, *[, ...])HSGPPeriodic.parse_raw(b, *[, tipo_de_contenido, ...])HSGPPeriodic.plot_curve(curva[, n_muestras, ...]Dibuje la curva.
Registre los datos que se utilizarán en el modelo.
HSGPPeriodic.sample_prior([coords])Muestra de la distribución previa.
HSGPPeriodic.schema([por_alias, ref_plantilla])HSGPPeriodic.schema_json(*[, por_alias, ...])HSGPPeriodic.to_dict([_orig])Convierte el objeto a un diccionario.
HSGPPeriodic.update_forward_refs(**localns)HSGPPeriodic.validate(valor)Atributos
model_computed_fieldsmodel_configConfiguración para el modelo, debe ser un diccionario que cumpla con [
ConfigDict][pydantic.config.ConfigDict].model_extraObtener campos adicionales establecidos durante la validación.
model_fieldsmodel_fields_setDevuelve el conjunto de campos que han sido establecidos explícitamente en esta instancia del modelo.
lsscalecov_funcperiodmXX_middimstransformdemeaned_basis