138 double adapt_rate = 0.05,
size_t window = 32);
170 void set_window(
size_t window);
183 double update(
double sample);
208 [[nodiscard]]
double confidence(
double step)
const;
225 return confidence(
rate * dt);
234 [[nodiscard]]
double floor()
const {
return m_state.floor; }
258 [[nodiscard]]
double value()
const {
return m_state.filtered_value; }
274 out.
push(m_state.filtered_value);
320 [[nodiscard]]
static double variance(std::span<const double> samples)
noexcept;
327 [[nodiscard]]
static double stddev(std::span<const double> samples)
noexcept;
339 [[nodiscard]]
static double median_absolute_deviation(std::span<const double> samples)
noexcept;
357 [[nodiscard]]
static std::vector<size_t> flag_outliers(
358 std::span<const double> samples,
double threshold_mad = 3.0) noexcept;
372 [[nodiscard]] static
double trend_explained_ratio(
std::span<const
double> samples) noexcept;
380 [[nodiscard]] static
double trend_slope(
std::span<const
double> samples) noexcept;
383 double update_rolling_variance(
double sample);
384 double update_ewm_variance(
double sample);
385 double update_mad(
double sample);
386 double update_quiet_period(
double sample);
387 double update_trend(
double sample);
400 Memory::HistoryBuffer<
double> m_history;
double get_adapt_rate() const
Gets the current adapt rate.
double value() const
Current filtered value, the cleaned counterpart to the raw sample.
double floor() const
Current learned floor.
const EstimateState & state() const
Gets current internal state.
EstimateState & state_mutable()
Gets mutable internal state.
double confidence_of_rate(double rate, double dt) const
Confidence that a Differential-derived rate reflects signal, not floor.
void set_adapt_rate(double rate)
Sets the adapt rate used by EWM_VARIANCE.
size_t get_window() const
Gets the current window size.
void update_into(double sample, Memory::HistoryBuffer< double > &out)
Feed one sample and push the filtered result into a HistoryBuffer.
EstimateModel get_model() const
Gets current model.
Stateful statistical characterization of an evolving scalar stream.
void push(const T &value)
Push new value to front of history.
History buffer for difference equations and recursive relations.
EstimateModel
Strategies for characterizing an evolving stream's statistical behavior.
@ MEDIAN_ABSOLUTE_DEVIATION
double trend_explained_ratio
Persistent state for an Estimate instance.