docstr: Add common (fixed) terms to the PyMC model.
  
  We have linear predictors of the form 'X @ b + Z @ u'.
  This creates the 'b' parameter vector in PyMC, computes `X @ b`, and adds it to ``self.mu``.
  
  Parameters
  ----------
  spec : bambi.Model
      The model.
docstr_tok: ["Add","common","(","fixed",")","terms","to","the","PyMC","model",".","We","have","linear","predictors","of","the","form","'","X","@","b","+","Z","@","u","'",".","This","creates","the","'","b","'","parameter","vector","in","PyMC",",","computes","`","X","@","b","`",",","and","adds","it","to","``","self.mu","``",".","Parameters","--","--","--","--","--","spec",":","bambi.Model","The","model","."]
code: def build_common_terms(self, pymc_backend, bmb_model):
      """Add common (fixed) terms to the PyMC model.
  
      We have linear predictors of the form 'X @ b + Z @ u'.
      This creates the 'b' parameter vector in PyMC, computes `X @ b`, and adds it to ``self.mu``.
  
      Parameters
      ----------
      spec : bambi.Model
          The model.
      """
      if self.component.common_terms:
          coefs = []
          columns = []
          for term in self.component.common_terms.values():
              common_term = CommonTerm(term)
              # Add coords
              for name, values in common_term.coords.items():
                  pymc_backend.model.add_coords({name: values})
  
              # Build
              coef, data = common_term.build(bmb_model)
              coefs.append(coef)
              columns.append(data)
  
          # Column vector of coefficients and design matrix
          coefs = pt.concatenate(coefs)
  
          # Design matrix
          data = np.column_stack(columns)
  
          # If there's an intercept, center the data
          # Also store the design matrix without the intercept to uncenter the intercept later
          if self.has_intercept and bmb_model.center_predictors:
              self.design_matrix_without_intercept = data
              data = data - data.mean(0)
  
          # Add term to linear predictor
          self.output += pt.dot(data, coefs)
  
file_path: bambi/bambi/backend/model_components.py
imports: import numpy
  from pytensor import tensor
  from bambi.backend.terms import CommonTerm, GroupSpecificTerm, HSGPTerm, InterceptTerm, ResponseTerm
  from bambi.backend.utils import get_distribution_from_prior
  from bambi.families.multivariate import MultivariateFamily
  from bambi.families.univariate import Categorical, Cumulative, StoppingRatio
  from bambi.utils import get_aliased_name
label_desc: Use image node_id 5 for calling the DistributionalComponent obj's underlying member method code with example usage: obj.build_common_terms(pymc_backend, bmb_model) without return types