lib/blazer/result.rb in blazer-2.4.2 vs lib/blazer/result.rb in blazer-2.4.3

- old
+ new

@@ -172,10 +172,22 @@ end def anomaly?(series) series = series.reject { |v| v[0].nil? }.sort_by { |v| v[0] } - if Blazer.anomaly_checks == "trend" + case Blazer.anomaly_checks + when "prophet" + df = Rover::DataFrame.new(series[0..-2].map { |v| {"ds" => v[0], "y" => v[1]} }) + m = Prophet.new(interval_width: 0.99) + m.logger.level = ::Logger::FATAL # no logging + m.fit(df) + future = Rover::DataFrame.new(series[-1..-1].map { |v| {"ds" => v[0]} }) + forecast = m.predict(future).to_a[0] + lower = forecast["yhat_lower"] + upper = forecast["yhat_upper"] + value = series.last[1] + value < lower || value > upper + when "trend" anomalies = Trend.anomalies(Hash[series]) anomalies.include?(series.last[0]) else csv_str = CSV.generate do |csv|