/// <summary>
 /// Perform SSA change point detection over a column of time series data. See <see cref="SsaChangePointEstimator"/>.
 /// </summary>
 public static Vector <double> SsaChangePointDetect(
     this Scalar <float> input,
     int confidence,
     int changeHistoryLength,
     int trainingWindowSize,
     int seasonalityWindowSize,
     ErrorFunctionUtils.ErrorFunction errorFunction = ErrorFunctionUtils.ErrorFunction.SignedDifference,
     SsaBase.MartingaleType martingale = SsaBase.MartingaleType.Power,
     double eps = 0.1) => new OutColumn(input, confidence, changeHistoryLength, trainingWindowSize, seasonalityWindowSize, errorFunction, martingale, eps);
 public OutColumn(Scalar <float> input,
                  int confidence,
                  int changeHistoryLength,
                  int trainingWindowSize,
                  int seasonalityWindowSize,
                  ErrorFunctionUtils.ErrorFunction errorFunction,
                  SsaBase.MartingaleType martingale,
                  double eps)
     : base(new Reconciler(confidence, changeHistoryLength, trainingWindowSize, seasonalityWindowSize, errorFunction, martingale, eps), input)
 {
     Input = input;
 }
 public Reconciler(
     int confidence,
     int changeHistoryLength,
     int trainingWindowSize,
     int seasonalityWindowSize,
     ErrorFunctionUtils.ErrorFunction errorFunction,
     SsaBase.MartingaleType martingale,
     double eps)
 {
     _confidence            = confidence;
     _changeHistoryLength   = changeHistoryLength;
     _trainingWindowSize    = trainingWindowSize;
     _seasonalityWindowSize = seasonalityWindowSize;
     _errorFunction         = errorFunction;
     _martingale            = martingale;
     _eps = eps;
 }