Вот пример фрейма данных, с которым я работаю
level Income cumpop
1 17995.50 0.028405
2 20994.75 0.065550
3 29992.50 0.876185
4 41989.50 2.364170
5 53986.50 4.267305
6 65983.50 6.323390
7 77980.51 8.357625
8 89977.50 10.238910
9 101974.50 11.923545
10 113971.51 13.389680
11 125968.49 14.659165
12 137965.50 15.753850
13 149962.52 16.673735
14 161959.50 17.438485
15 173956.50 18.093985
16 185953.52 18.640235
17 197950.52 19.099085
18 209947.52 19.514235
19 221944.50 19.863835
20 233941.50 20.169735
21 251936.98 20.628585
22 275931.00 20.936670
23 383904.00 21.850000
Все население этой конкретной страны было отсортировано по доходам и сгруппировано по 23 соответствующим «уровням». Переменная Income
представляет собой средний доход всех членов этого уровня (это существенно отличается от утверждения, например, что доход 10-го процентиля равен 17995,50).
Но размер населения на каждом уровне непостоянен (вы заметите это, если посмотрите на разницу в cumpop
, т.е. совокупное население). В конечном счете, я хочу построить фрейм данных из 10 строк, который дает интерполированные значения децилей для переменной Income
, чтобы, например, мы могли сказать, что «беднейшие 10% населения в среднем составляют 28 000 человек» или « те, кто находится в 20-30-м процентиле населения, в среднем составляют 41 000 дюймов или около того. Таким образом, я хочу сократить эти 23 уровня до 10 уровней равного размера населения (принимая cumpop[23] за общее население), что требует некоторой интерполяции.
Я искал библиотеку, которая выполняет такого рода эмпирическую кумулятивную генерацию/интерполяцию функции распределения, и кажется, что ecdf
весьма полезна, но я не уверен, как применить ее к Income
с учетом cumpop
, как описано выше.
Был бы очень признателен за какое-то направление здесь.