class_docstr: Generalized Additive model for discrete Logit
  
  This subclasses discrete_model Logit.
  
  Warning: not all inherited methods might take correctly account of the
  penalization
  
  not verified yet.
class_docstr_tok: ["Generalized","Additive","model","for","discrete","Logit","This","subclasses","discrete_model","Logit",".","Warning",":","not","all","inherited","methods","might","take","correctly","account","of","the","penalization","not","verified","yet","."]
code: def __init__(self, endog, smoother, alpha, *args, **kwargs):
      if not isinstance(alpha, Iterable):
          alpha = np.array([alpha] * len(smoother.smoothers))
  
      self.smoother = smoother
      self.alpha = alpha
      self.pen_weight = (
          1  # TODO: pen weight should not be defined here!!
      )
      penal = MultivariateGamPenalty(smoother, alpha=alpha)
  
      super().__init__(
          endog, smoother.basis, penal=penal, *args, **kwargs
      )
  
imports: from collections.abc import Iterable
  import copy
  import numpy
  from scipy import optimize
  import pandas
  import statsmodels.base.wrapper
  from statsmodels.discrete.discrete_model import Logit
  from statsmodels.genmod.generalized_linear_model import GLM, GLMResults, GLMResultsWrapper, _check_convergence
  import statsmodels.regression.linear_model
  from statsmodels.tools.sm_exceptions import PerfectSeparationError, ValueWarning
  from statsmodels.tools.decorators import cache_readonly
  from statsmodels.tools.data import _is_using_pandas
  from statsmodels.tools.linalg import matrix_sqrt
  from statsmodels.base._penalized import PenalizedMixin
  from statsmodels.gam.gam_penalties import MultivariateGamPenalty
  from statsmodels.gam.gam_cross_validation.gam_cross_validation import MultivariateGAMCVPath
  from statsmodels.gam.gam_cross_validation.cross_validators import KFold
label_desc: Use image node_id 1 to create a new LogitGam object from inherited base classes: PenalizedMixin, Logit with example: obj = LogitGam(endog, smoother, alpha)