TermBuilder.lin()

TermBuilder.lin()#

TermBuilder.lin(formula, prior=None, inference='default', context=None, prefix='', name=None)[source]#

Linear term.

Parameters:
  • formula (str) – Right-hand side of a model formula, as understood by formulaic. Most of formulaic’s grammar is supported. See notes for details.

  • prior (Dist | None, default: None) – An optional prior for this term’s coefficient. The default is a constant prior.

  • inference (Any | None | Literal['default'], default: 'default') – An optional liesel.goose.MCMCSpec instance (or other valid inference object). The default ("default") uses the TermBuilder’s default inference specification defined during initialization. Please refer to the TermBuilder documentation for more information.

  • context (dict[str, Any] | None, default: None) – Dictionary of additional Python objects that should be made available to formulaic when constructing the design matrix. Gets passed to formulaic.ModelSpec.get_model_matrix().

  • prefix (str, default: '') – A string prefix to be added to the returned term’s name.

  • name (str | None, default: None) – Manually defined name of the term. If a prefix is specified, the prefix will be added to this name.

See also

slin

Linear term with identity penalty matrix, leading to a ridge prior.

Return type:

LinTerm

Notes

This term evaluates to \(\mathbf{X}\boldsymbol{\beta}\), where \(\mathbf{X}\) is a linear-effect design matrix. The coefficient vector receives a constant prior by default, \(\boldsymbol{\beta} \sim \text{const}\), but a custom prior can be passed in the argument prior as a liesel.model.Dist.

The following formulaic syntax is supported:

  • + for adding a term

  • a:b for simple interactions

  • a*b for expanding to a + b + a:b

  • (a + b)**n for n-th order interactions

  • a / b for nesting

  • C(a, ...) for categorical effects (see formulaic_categorical for details)

  • b %in% a for inverted nesting

  • {a+1} for quoted Python code to be executed

  • `weird name` backtick-strings for weird names

  • Other transformations like center(a), scale(a), or lag(a), see grammar.

  • Python functions

Not supported:

  • String literals

  • Numeric literals

  • Wildcard "."

  • \| for splitting a formula

  • "~" in formula, since this method supports only the right-hand side of a Wilkinson formula.

  • 1 +, 0 +, or -1 in formula, since intercept addition is handled via the argument include_intercept.

References

Examples

Simple example:

>>> import liesel_gam as gam
>>> df = gam.demo_data(n=100)
>>> registry = gam.PandasRegistry(df)
>>> bb = gam.BasisBuilder(registry)
>>> bb.lin("x_lin + x_nonlin + x_cat")
LinBasis(name="X")

Customized categorical encoding:

>>> import liesel_gam as gam
>>> df = gam.demo_data(n=100)
>>> registry = gam.PandasRegistry(df)
>>> bb = gam.BasisBuilder(registry)
>>> bb.lin("x_lin + x_nonlin + C(x_cat, contr.sum)")
LinBasis(name="X")

Interaction:

>>> import liesel_gam as gam
>>> df = gam.demo_data(n=100)
>>> registry = gam.PandasRegistry(df)
>>> bb = gam.BasisBuilder(registry)
>>> bb.lin("x_lin * x_cat")
LinBasis(name="X")