MayaFlux 0.5.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ median_absolute_deviation()

double MayaFlux::Kinesis::Stochastic::Estimate::median_absolute_deviation ( std::span< const double >  samples)
staticnoexcept

Median absolute deviation of a span.

Parameters
samplesValues to analyze
Returns
Median of |x_i - median(samples)|, scaled by 1.4826 to be a consistent estimator of standard deviation under a normal distribution assumption. Robust to single-sample spikes in a way variance is not, since one wild outlier can dominate a variance estimate but only shifts a median by at most one rank.

Definition at line 229 of file Estimate.cpp.

230{
231 if (samples.empty())
232 return 0.0;
233
234 std::vector<double> sorted(samples.begin(), samples.end());
235 std::ranges::sort(sorted);
236 const double median = sorted[sorted.size() / 2];
237
238 std::vector<double> deviations;
239 deviations.reserve(sorted.size());
240 for (double v : sorted)
241 deviations.push_back(std::abs(v - median));
242 std::ranges::sort(deviations);
243
244 return deviations[deviations.size() / 2] * 1.4826;
245}
std::vector< double > median(std::span< const double > data, size_t n_windows, uint32_t hop_size, uint32_t window_size)
Median per window via nth_element partial sort.
Definition Analysis.cpp:325

Referenced by update_mad().

+ Here is the caller graph for this function: