Skip to content

Setting alias breaks if multiple target formulae are given #893

@webdrone

Description

@webdrone

Bug description

Calling set.alias({...}) on a model with multiple target formulae results in assertion error.

For instance, if one wishes to estimate a different noise scale per condition, one would define multiple formulae (targets) in the model. Then trying to set an alias for a parameter fails.

Reproduction

The below two work:

  • with no condition-specific sigma
import bambi as bmb

model = bmb.Model(
    formula=bmb.Formula(
        "value ~ T(Condition, 'WT')",
    ),
    data=df_data_fit,
    categorical=["Condition"],
    family="gaussian",
    priors=partial_pooling_priors,
    noncentered=True
    )
model.set_alias({"T(Condition, 'WT')": "Condition"})
  • with no aliases
import bambi as bmb

model = bmb.Model(
    formula=bmb.Formula(
        "value ~ T(Condition, 'WT')",
        "sigma ~ Condition"
    ),
    data=df_data_fit,
    categorical=["Condition"],
    family="gaussian",
    priors=partial_pooling_priors,
    noncentered=True
    )

The below fails:

  • with condition-specific sigma and aliases
import bambi as bmb

model = bmb.Model(
    formula=bmb.Formula(
        "value ~ T(Condition, 'WT')",
        "sigma ~ Condition"
    ),
    data=df_data_fit,
    categorical=["Condition"],
    family="gaussian",
    priors=partial_pooling_priors,
    noncentered=True
    )
model.set_alias({"T(Condition, 'WT')": "Condition"})

Output

File /opt/homebrew/Caskroom/miniconda/base/envs/dsci/lib/python3.12/site-packages/bambi/models.py:576, in Model.set_alias(self, aliases)
    574     self.response_component.term.alias = component_aliases
    575 else:
--> 576     assert isinstance(component_aliases, dict)
    577     assert component_name in self.distributional_components
    578     component = self.distributional_components[component_name]

AssertionError: 

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementgood first issueIf you want to contribute but are not sure where to get started, this issue is for you!

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions