я использую boost::accumulators::tag::extended_p_square_quantile
для расчета процентиля. В этом мне также нужно передать вероятности в аккумулятор, поэтому я сделал это m_acc = AccumulatorType(boost::accumulators::extended_p_square_probabilities = probs);
где probs — вектор, содержащий вероятности.
Значения в векторе prob являются {0.5,0.3,0.9,0.7}
Я предоставил некоторые примерные значения для аккумулятора.
Но когда я пытаюсь получить процентиль, используя boost::accumulators::quantile(m_acc, boost::accumulators::quantile_probability = probs[0]);
он возвращает неправильные значения и даже иногда NAN.
Что здесь не так?
Я столкнулся с этой проблемой и потратил много времени, чтобы выяснить проблему и поэтому хочу ответить на нее.
Проблема с вектором. Вектор должен быть закорочен в порядке возрастания его значений.
Измените значения вектора на это {0.3,0.5,0.7,0.9}
и это будет работать как положено.
Так что, если кто-то использует tag::extended_p_square_quantile
для процентиля (который поддерживает множественные вероятности) тогда (ей) он должен дать вероятности (вектор / массив / список) в отсортированном порядке.
Это не так с tag::p_square_quantile
потому что мы можем дать только одно значение (вероятность) в нем.
Других решений пока нет …