class_docstr: Parameters
  ----------
  level_knot_scale : float
      sigma for level; default to be .1
  level_segments : int
      the number of segments partitioned by the knots of level (trend)
  level_knot_distance : int
      the distance between every two knots of level (trend)
  level_knot_dates : array like
      list of pre-specified dates for the level knots
  seasonality : int, or list of int
      multiple seasonality
  seasonality_fs_order : int, or list of int
      fourier series order for seasonality
  seasonality_segments : int
      the number of segments partitioned by the knots of seasonality; when it is 0, returns to a static coefficients
      of regression used in the seasonality estimation
  seasonal_initial_knot_scale : float
      scale parameter for seasonal regressors initial coefficient knots; default to be 1
  seasonal_knot_scale : float
      scale parameter for seasonal regressors drift of coefficient knots; default to be 0.1.
  degree_of_freedom : int
      degree of freedom for error t-distribution
  date_freq : str
      date frequency; if not supplied, pd.infer_freq will be used to imply the date frequency.
code: def __init__(
      self,
      # level
      level_knot_scale=0.1,
      level_segments=10,
      level_knot_distance=None,
      level_knot_dates=None,
      # seasonality
      seasonality=None,
      seasonality_fs_order=None,
      seasonality_segments=0,
      seasonal_initial_knot_scale=1.0,
      seasonal_knot_scale=0.1,
      degree_of_freedom=30,
      date_freq=None,
      **kwargs,
  ):
      # estimator is created in base class
      super().__init__(**kwargs)
      self.level_knot_scale = level_knot_scale
      self.level_segments = level_segments
      self.level_knot_dates = level_knot_dates
      self.level_knot_distance = level_knot_distance
  
      self.seasonality = seasonality
      self.seasonality_fs_order = seasonality_fs_order
      self.seasonality_segments = seasonality_segments
      self.seasonal_initial_knot_scale = seasonal_initial_knot_scale
      self.seasonal_knot_scale = seasonal_knot_scale
  
      # set private var to arg value
      # if None set default in _set_default_args()
      # use public one if knots length is not available
      self._seasonality = self.seasonality
      self._seasonality_fs_order = self.seasonality_fs_order
      self._seasonal_initial_knot_scale = None
      self._seasonal_knot_scale = None
  
      self._level_knot_dates = self.level_knot_dates
      self._degree_of_freedom = degree_of_freedom
  
      self.date_freq = date_freq
  
      # regression attributes -- used for fourier series as seasonality only
      self.num_of_regressors = 0
      self.regressor_col = list()
      self.regressor_col_grp = list()
      self.coefficients_initial_knot_scale = list()
      self.coefficients_knot_scale = list()
  
      # set static data attributes
      self._set_default_args()
      self._set_seasonality_attributes()
  
      # basic response fields
      # mainly set by ._set_dynamic_attributes()
      self.response_offset = 0
      self.is_valid_response = None
      self.which_valid_response = None
      self.num_of_valid_response = 0
  
      self.num_knots_level = None
      self.knots_tp_level = None
  
      self.num_knots_coefficients = None
      self.knots_tp_coefficients = None
      self.regressor_matrix = None
      # self.coefficients_knot_dates = None
      self._set_model_param_names()
  
imports: import numpy
  import pandas
  from copy import deepcopy
  import torch
  from enum import Enum
  import math
  from scipy.stats import nct
  import matplotlib.pyplot
  from ..constants.constants import PredictionKeys, PredictMethod, TrainingMetaKeys, PredictionMetaKeys
  from ..exceptions import IllegalArgument, ModelException
  from .model_template import ModelTemplate
  from ..estimators.stan_estimator import StanEstimatorMAP
  from ..utils.kernels import sandwich_kernel
  from ..utils.features import make_fourier_series_df
  from orbit.constants.palette import OrbitPalette
  from ..utils.knots import get_knot_idx, get_knot_dates
  from ..utils.plot import orbit_style_decorator
label_desc: Use image node_id 1 to create a new KTRLiteModel object from inherited base classes: ModelTemplate with example: obj = KTRLiteModel(level_knot_scale, level_segments, level_knot_distance, level_knot_dates, seasonality, seasonality_fs_order, seasonality_segments, seasonal_initial_knot_scale, seasonal_knot_scale, degree_of_freedom, date_freq)