R решение для оценки данных уровня записи единицы из сгруппированных данных / гистограммы с учетом известных ограничений - PullRequest
0 голосов
/ 01 апреля 2019

Поставщики данных часто группируют данные по категориям для сохранения конфиденциальности.

В некоторых целях, например, для оценки медианного значения или для экспериментального моделирования, я часто испытываю желание сделать набор данных оценочного уровня записи на основе этих сгруппированных данных.

Чтобы привести это в конкретный пример, если у нас есть количество предприятий, сгруппированных по количеству сотрудников:

>business.counts <- c(11624,6335,2172,346,6)

>names(business.counts) <- c("0","1 to 4", "5 to 19", "20 to 199", "200 or more")

А общее количество занятых лиц, как известно: 73237

Допустим, мы хотим оценить занятость каждой отдельной фирмы с учетом общей занятости всех фирм на общую сумму 73 237, а число фирм в каждой группе размера занятости равно количеству в business.counts.

Я пробовал простые методы, такие как полином, подобранный к средним точкам, с произвольными предположениями о последней категории, но с плохими результатами, т.е.:

>fit <- lm(x ~ poly(y,3),  data=data.frame(x=c(0,2,12.5,90,300), y=c(11624,6335,2172,346,6))/c(1,4,15,180,600))))

Функции плотности ядра работают лучше (хотя я все еще использовал средние точки и произвольное предположение о последней категории). Я не уверен, как можно было бы: а) включить ограничения и б) использовать это для создания набора данных длины sum (business.counts), т.е.:

> pdf <- density(c(0,2,12.5,90,300),adjust = 1,from=0,  weights = c(11624,6335,2172,346,6))/c(1,4,15,180,600)))

KernSmooth также работает довольно хорошо с преимуществом возможности устанавливать сетку, но возвращает аналогичные результаты.

Очень открыт для предложений или комментариев!

Спасибо

...