У меня есть взвешенная выборка, для которой я хочу рассчитать квантили. 1
В идеале, где веса равны (ли = 1 или иным образом ), то результаты будут согласуются с данными scipy.stats.scoreatpercentile()
и R - х quantile(...,type=7)
.
Одним из простых подходов было бы «умножить» выборку с использованием заданных весов. Это эффективно дает локально «плоский» ecdf в областях с весом> 1, что интуитивно кажется неправильным подходом, когда выборка фактически является подвыборкой. В частности, это означает, что выборка с весами, равными 1, имеет квантили, отличающиеся от квантилей с весами, равными 2 или 3. (Обратите внимание, однако, что статья, упомянутая в [1], действительно использует этот подход.)
http://en.wikipedia.org/wiki/Percentile#Weighted_percentile дает альтернативную формулировку для взвешенного процентиля. В этой формулировке неясно, следует ли сначала объединять смежные выборки с одинаковыми значениями и суммировать их веса, и в любом случае его результаты не соответствуют типу R по умолчанию 7 quantile()
в невзвешенном / равно взвешенном случае. На странице википедии о квантилях вообще не упоминается взвешенный случай.
Существует ли взвешенное обобщение функции квантиля R типа 7?
[используя Python, но на самом деле просто ищу алгоритм, так что любой язык подойдет]
M
[1] Веса являются целыми числами; веса - это те из буферов, которые объединяются в операциях «свертывания» и «вывода», как описано в http://infolab.stanford.edu/~manku/papers/98sigmod-quantiles.pdf . По существу, взвешенная выборка является подвыборкой полной невзвешенной выборки, причем каждый элемент x (i) в подвыборке представляет весовые (i) элементы в полной выборке.