Я не знаю много о статистике, так что терпите меня. Допустим, у меня есть набор из 1000 рабочих. Я хочу выяснить, кто самый трудный работник, но я могу измерить только объем работы, выполняемой группами по 1-100 человек за час работы. Предполагая, что каждый работник всегда выполняет примерно одинаковый объем работы, я могу причислить своих работников к большому количеству испытаний и комбинаций, кто работает больше всех?
Примечание: это всего лишь метафора, поэтому не беспокойтесь о том, чтобы на самом деле запустить тесты, просто предположите, что у меня уже есть большой набор данных.
Изменить: Когда я говорю «Предполагая, что каждый работник всегда выполняет примерно одинаковое количество работы», я имею в виду, что каждый сотрудник выполняет примерно одинаковое количество работы в день. Поэтому Джои будет выполнять около 100 единиц работы каждый день, а Грег - около 50. Проблема в том, что я могу наблюдать только за количеством единиц работы, выполненных группой.
Больше правок: в отношении количества работающих одновременно и частоты их работы. Там может быть любое количество рабочих, работающих одновременно. Некоторые работники, вероятно, будут работать намного больше, чем другие, то есть мы можем предположить, что некоторые работники будут работать почти 90% времени, а другие почти никогда.
Я знаю, что это затрудняет, но у меня будет очень большой набор данных, который, надеюсь, немного облегчит.
За каждый час мы знаем, какие работники работают и сколько работы сделано. Из этой информации я хочу узнать, кто делает больше всего работы.
Если бы данные были в формате JSON, они бы выглядели примерно так:
[
{
"work_done": 12345,
"Workers": [ "andy", "bob", "cameron", "david" ]
},
{
"work_done": 432,
"Workers": [ "steve", "joe", "andy"]
},
{
"work_done": 59042,
"Workers": [ "bob", "aaron", "michelle", "scott", "henry" ]
},
...
]
источник
Ответы:
Дэвид Харрис дал отличный ответ , но, поскольку вопрос продолжает редактироваться, возможно, это поможет увидеть детали его решения. Основные моменты следующего анализа:
Взвешенные наименьшие квадраты, вероятно, более уместны, чем обычные наименьшие квадраты.
Поскольку оценки могут отражать различия в производительности вне контроля любого человека, будьте осторожны при использовании их для оценки отдельных работников.
Для этого давайте создадим некоторые реалистичные данные, используя указанные формулы, чтобы мы могли оценить точность решения. Это сделано с
R
:На этих начальных этапах мы:
Установите начальное число для генератора случайных чисел, чтобы любой мог точно воспроизвести результаты.
Укажите, сколько рабочих с
n.names
.Укажите ожидаемое количество работников на группу с
groupSize
.Укажите, сколько случаев (наблюдений) доступно с
n.cases
. (Позже некоторые из них будут исключены, потому что они соответствуют, как это происходит наугад, никому из работников нашей синтетической рабочей силы.)Сделайте так, чтобы объемы работ случайным образом отличались от прогнозируемых на основе суммы «умений» работы каждой группы. Значение0.10
cv
является типичным пропорциональным отклонением; Например , приведенное здесь, соответствует типичному отклонению в 10% (которое в некоторых случаях может превышать 30%).Создайте рабочую силу из людей с различными навыками работы. Параметры, приведенные здесь для вычислений,
proficiency
создают диапазон более 4: 1 между лучшими и худшими работниками (который, по моему опыту, может быть немного узким для технологий и профессиональных работ, но, возможно, широк для рутинных производственных работ).Имея в руках эту искусственную рабочую силу, давайте смоделируем их работу . Это равносильно созданию группы каждого работника (1
schedule
) для каждого наблюдения (исключая любые наблюдения, в которых вообще не было работников), суммируя умения работников в каждой группе, и умножая эту сумму на случайное значение (в среднем ровно ) отражать изменения, которые неизбежно произойдут. (Если бы не было никакой вариации вообще, мы бы направили этот вопрос на сайт по математике, где респонденты могли бы указать, что эта проблема - просто набор одновременных линейных уравнений, которые могут быть решены именно для умений.)Я обнаружил, что удобно поместить все данные рабочей группы в один фрейм данных для анализа, но сохранить рабочие значения отдельно:
Вот где мы начнем с реальных данных: у нас будет рабочая группа, закодированная
data
(илиschedule
), и полученные результаты работы вwork
массиве.К сожалению, если некоторые рабочие всегда парные,
R
«slm
процедура просто завершается с ошибкой. Мы должны сначала проверить наличие таких пар. Один из способов - найти идеально соотнесенных работников в графике:В выходных данных будут перечислены пары всегда работающих пар: это можно использовать для объединения этих работников в группы, потому что, по крайней мере, мы можем оценить производительность каждой группы, если не отдельных лиц в ней. Мы надеемся, что это просто выплевывает
character(0)
. Давайте предположим, что это так.Один тонкий момент, подразумеваемый в вышеприведенном объяснении, заключается в том, что изменение выполняемой работы является мультипликативным, а не аддитивным. Это реалистично: разброс выпуска большой группы работников в абсолютном масштабе будет больше, чем разброс в меньших группах. Соответственно, мы получим лучшие оценки, используя взвешенные наименьшие квадраты, а не обычные наименьшие квадраты. Наилучшие веса, которые можно использовать в этой конкретной модели, являются взаимными величинами трудозатрат. (В случае, если некоторые суммы работы равны нулю, я добавляю небольшое количество, чтобы избежать деления на ноль.)
Это должно занять всего одну или две секунды.
Перед тем как продолжить, мы должны выполнить некоторые диагностические тесты подгонки. Хотя обсуждение этих вопросов приведет нас слишком далеко, одна
R
команда для создания полезной диагностики(Это займет несколько секунд: это большой набор данных!)
Несмотря на то, что эти несколько строк кода выполняют всю работу и демонстрируют предполагаемую квалификацию для каждого работника, мы не хотим сканировать все 1000 строк вывода - по крайней мере, не сразу. Давайте использовать графику для отображения результатов .
Гистограмма (нижняя левая панель рисунка ниже) представляет собой разницу между оценочной и фактической квалификацией, выраженную в виде кратных стандартной ошибке оценки. Для хорошей процедуры эти значения будут почти всегда лежать между и и будут симметрично распределены вокруг . Однако при участии 1000 работников мы полностью ожидаем увидеть некоторые из этих стандартизированных различий, которые простираются от и даже до2 0 3 4 0−2 2 0 3 4 0 , Это как раз тот случай: гистограмма настолько хороша, насколько можно было надеяться. (Конечно, это может быть приятно: в конце концов, это симулированные данные. Но симметрия подтверждает, что веса правильно выполняют свою работу. Использование неправильных весов приведет к асимметричной гистограмме.)
Диаграмма рассеяния (нижняя правая панель рисунка) напрямую сравнивает предполагаемые навыки с фактическими. Конечно, это не будет доступно в реальности, потому что мы не знаем фактических навыков: в этом заключается сила компьютерного моделирования. Заметим:
Если бы не было случайных изменений в работе (установите
cv=0
и повторите код, чтобы увидеть это), диаграмма рассеяния была бы идеальной диагональной линией. Все оценки будут совершенно точными. Таким образом, рассмотренный здесь разброс отражает эту вариацию.Иногда оценочное значение довольно далеко от фактического значения. Например, есть одна точка рядом (110, 160), где предполагаемая квалификация примерно на 50% выше, чем фактическая квалификация. Это почти неизбежно в любой большой партии данных. Помните об этом, если оценки будут использоваться на индивидуальной основе, например, для оценки работников. В целом эти оценки могут быть превосходными, но в той степени, в которой изменение производительности труда обусловлено причинами, не зависящими от какого-либо лица, тогда для некоторых работников оценки будут ошибочными: некоторые слишком высоки, некоторые слишком низки. И нет никакого способа точно сказать, кто затронут.
Вот четыре графика, сгенерированные во время этого процесса.
Наконец, обратите внимание, что этот метод регрессии легко адаптируется для контроля других переменных, которые, вероятно, могут быть связаны с производительностью группы. Они могут включать размер группы, продолжительность каждой работы, временную переменную, фактор для менеджера каждой группы и так далее. Просто включите их в качестве дополнительных переменных в регрессии.
источник
results
): вы можете отсортировать ее по оценочному значению. Вы можете экспортировать его в электронную таблицу и т. Д.Вы бы хотели настроить свои данные примерно так: 1 означает, что этот человек был частью команды, которая выполняла работу над этим рядом:
Затем вы можете просто выполнить линейную регрессию (при условии, что все является аддитивным и т. Д., Как вы упоминали в комментариях). В
R
команде будетlm(work.done ~ . + 0, data = my.data)
«Формула»
work.done ~ . + 0
говорит по-английски, что объем выполненной работы зависит от всех остальных столбцов (это «.») И что группы без рабочих не будут выполнять работу (это «+ 0»). Это даст вам приблизительный вклад каждого работника в средние результаты группы.Как обсуждалось в комментариях, если у вас есть пара рабочих, которые всегда вместе, модель не будет отличать вклады двух рабочих друг от друга, и один из них получит «NA».
источник