class_docstr: Parameters
  ----------
  regressor_col : list
      Names of regressor columns, if any
  regressor_sign :  list
      list with values { '+', '-', '=' } such that
      '+' indicates regressor coefficient estimates are constrained to [0, inf).
      '-' indicates regressor coefficient estimates are constrained to (-inf, 0].
      '=' indicates regressor coefficient estimates can be any value between (-inf, inf).
      The length of `regressor_sign` must be the same length as `regressor_col`. If None,
      all elements of list will be set to '='.
  regressor_beta_prior : list
      list of prior float values for regressor coefficient betas. The length of `regressor_beta_prior`
      must be the same length as `regressor_col`. If None, use non-informative priors.
  regressor_sigma_prior : list
      list of prior float values for regressor coefficient sigmas. The length of `regressor_sigma_prior`
      must be the same length as `regressor_col`. If None, use non-informative priors.
  regression_penalty : { 'fixed_ridge', 'lasso', 'auto_ridge' }
      regression penalty method
  lasso_scale : float
      float value between [0, 1], applicable only if `regression_penalty` == 'lasso'
  auto_ridge_scale : float
      float value between [0, 1], applicable only if `regression_penalty` == 'auto_ridge'
  slope_sm_input : float
      float value between [0, 1]. A larger value puts more weight on the current slope.
      If None, the model will estimate this value.
  period : int
      Used to set `time_delta` as `1 / max(period, seasonality)`. If None and no seasonality,
      then `time_delta` == 1
  damped_factor : float
      Hyperparameter float value between [0, 1]. A smaller value further dampens the previous
      global trend value. Default, 0.8
  global_trend_option : { 'flat', 'linear', 'loglinear', 'logistic' }
      Transformation function for the shape of the forecasted global trend.
  global_trend_sigma_prior : sigma prior of the global trend; default uses 1 standard deviation of response
class_docstr_tok: ["Parameters","--","--","--","--","--","regressor_col",":","list","Names","of","regressor","columns",",","if","any","regressor_sign",":","list","list","with","values","{","'+","'",",","'-","'",",","'=","'","}","such","that","'+","'","indicates","regressor","coefficient","estimates","are","constrained","to","[","0",",","inf",")",".","'-","'","indicates","regressor","coefficient","estimates","are","constrained","to","(","-inf",",","0","]",".","'=","'","indicates","regressor","coefficient","estimates","can","be","any","value","between","(","-inf",",","inf",")",".","The","length","of","`","regressor_sign","`","must","be","the","same","length","as","`","regressor_col","`",".","If","None",",","all","elements","of","list","will","be","set","to","'=","'",".","regressor_beta_prior",":","list","list","of","prior","float","values","for","regressor","coefficient","betas",".","The","length","of","`","regressor_beta_prior","`","must","be","the","same","length","as","`","regressor_col","`",".","If","None",",","use","non-informative","priors",".","regressor_sigma_prior",":","list","list","of","prior","float","values","for","regressor","coefficient","sigmas",".","The","length","of","`","regressor_sigma_prior","`","must","be","the","same","length","as","`","regressor_col","`",".","If","None",",","use","non-informative","priors",".","regression_penalty",":","{","'fixed_ridge","'",",","'lasso","'",",","'auto_ridge","'","}","regression","penalty","method","lasso_scale",":","float","float","value","between","[","0",",","1","]",",","applicable","only","if","`","regression_penalty","`","==","'lasso'","auto_ridge_scale",":","float","float","value","between","[","0",",","1","]",",","applicable","only","if","`","regression_penalty","`","==","'auto_ridge'","slope_sm_input",":","float","float","value","between","[","0",",","1","]",".","A","larger","value","puts","more","weight","on","the","current","slope",".","If","None",",","the","model","will","estimate","this","value",".","period",":","int","Used","to","set","`","time_delta","`","as","`","1","\/","max","(","period",",","seasonality",")","`",".","If","None","and","no","seasonality",",","then","`","time_delta","`","==","1","damped_factor",":","float","Hyperparameter","float","value","between","[","0",",","1","]",".","A","smaller","value","further","dampens","the","previous","global","trend","value",".","Default",",","0.8","global_trend_option",":","{","'flat","'",",","'linear","'",",","'loglinear","'",",","'logistic","'","}","Transformation","function","for","the","shape","of","the","forecasted","global","trend",".","global_trend_sigma_prior",":","sigma","prior","of","the","global","trend",";","default","uses","1","standard","deviation","of","response"]
code: def __init__(
      self,
      regressor_col=None,
      regressor_sign=None,
      regressor_beta_prior=None,
      regressor_sigma_prior=None,
      regression_penalty="fixed_ridge",
      lasso_scale=0.5,
      auto_ridge_scale=0.5,
      slope_sm_input=None,
      period=1,
      damped_factor=0.8,
      global_trend_option="linear",
      global_cap=1.0,
      global_floor=0.0,
      global_trend_sigma_prior=None,
      forecast_horizon=1,
      **kwargs,
  ):
      self.damped_factor = damped_factor
      self.global_trend_option = global_trend_option
      self.period = period
      # extra parameters for residuals
      self.min_nu = 5.0
      self.max_nu = 40.0
  
      self.slope_sm_input = slope_sm_input
  
      self.regressor_col = regressor_col
      self.regressor_sign = regressor_sign
      self.regressor_beta_prior = regressor_beta_prior
      self.regressor_sigma_prior = regressor_sigma_prior
      self.regression_penalty = regression_penalty
      self.lasso_scale = lasso_scale
      self.auto_ridge_scale = auto_ridge_scale
  
      # init static data attributes
      # the following are set by `_set_static_attributes()`
      # global trend related attributes
      self._slope_sm_input = self.slope_sm_input
  
      self._global_trend_option = None
      self._time_delta = 1
      self.global_cap = global_cap
      self.global_floor = global_floor
  
      self.global_trend_sigma_prior = global_trend_sigma_prior
      self.forecast_horizon = forecast_horizon
  
      # _regressor_sign stores final values after internal process of regressor_sign
      # similar to other values start with prefix _
      self._regressor_sign = self.regressor_sign
      self._regressor_beta_prior = self.regressor_beta_prior
      self._regressor_sigma_prior = self.regressor_sigma_prior
      self._regression_penalty = None
      self._regressor_col = list()
  
      self.num_of_regressors = 0
      # positive regressors
      self.num_of_positive_regressors = 0
      self.positive_regressor_col = list()
      self.positive_regressor_beta_prior = list()
      self.positive_regressor_sigma_prior = list()
      # negative regressors
      self.num_of_negative_regressors = 0
      self.negative_regressor_col = list()
      self.negative_regressor_beta_prior = list()
      self.negative_regressor_sigma_prior = list()
      # regular regressors
      self.num_of_regular_regressors = 0
      self.regular_regressor_col = list()
      self.regular_regressor_beta_prior = list()
      self.regular_regressor_sigma_prior = list()
  
      # init dynamic data attributes
      # the following are set by `_set_dynamic_attributes()` and generally set during fit()
      self.cauchy_sd = None
  
      # regression data
      self.regular_regressor_matrix = None
      self.positive_regressor_matrix = None
      self.negative_regressor_matrix = None
  
      # order matters and super constructor called after attributes are set
      # since we override _set_static_attributes()
      super().__init__(**kwargs)
  
imports: import numpy
  import pandas
  from scipy.stats import nct
  from copy import deepcopy
  import torch
  from enum import Enum
  from ..constants.constants import DEFAULT_REGRESSOR_SIGN, DEFAULT_REGRESSOR_BETA, DEFAULT_REGRESSOR_SIGMA, COEFFICIENT_DF_COLS, PredictMethod, PredictionKeys, TrainingMetaKeys, PredictionMetaKeys
  from ..exceptions import IllegalArgument, ModelException, PredictionException
  from .ets import ETSModel
  from ..estimators.stan_estimator import StanEstimatorMCMC, StanEstimatorMAP
label_desc: Use image node_id 1 to create a new DLTModel object from inherited base classes: ETSModel with example: obj = DLTModel(regressor_col, regressor_sign, regressor_beta_prior, regressor_sigma_prior, regression_penalty, lasso_scale, auto_ridge_scale, slope_sm_input, period, damped_factor, global_trend_option, global_cap, global_floor, global_trend_sigma_prior, forecast_horizon)