public NormalDetector(double?lowerDeviationFactor = 3.0, double?upperDeviationFactor = 3.0) { DetectorUtils.EnsureCast <V, double>(); if (lowerDeviationFactor == null && upperDeviationFactor == null) { throw new ArgumentException("At least one of the deviation factors must be set."); } if (lowerDeviationFactor < 0 || upperDeviationFactor < 0) { string message = String.Format( "Deviation factors must be positive, received: lower {}; upper {}", lowerDeviationFactor, upperDeviationFactor); throw new ArgumentException(message); } LowerDeviationFactor = lowerDeviationFactor; UpperDeviationFactor = upperDeviationFactor; }
public IqrDetector(double?lowerPercentileRank = 25.0, double?upperPercentileRank = 75.0) { DetectorUtils.EnsureCast <V, double>(); if (lowerPercentileRank == null || upperPercentileRank == null) { throw new ArgumentException("Both percentile ranks must be set."); } if (lowerPercentileRank < 0 || lowerPercentileRank > 100 || upperPercentileRank < 0 || upperPercentileRank > 100) { string message = String.Format( "Percentile must be between 0 and 100, received: lower {}; upper {}", lowerPercentileRank, upperPercentileRank); throw new ArgumentException(message); } LowerPercentileRank = lowerPercentileRank ?? 0.0; UpperPercentileRank = upperPercentileRank ?? 100.0; }