Ich weiß nicht viel über Statistiken, also nimm sie mit. Nehmen wir an, ich habe 1000 Arbeiter. Ich möchte herausfinden, wer der härteste Arbeiter ist, aber ich kann nur den Arbeitsaufwand messen, der in Gruppen von 1 bis 100 Personen über eine Arbeitsstunde erledigt wird. Angenommen, jeder Arbeiter erledigt immer ungefähr die gleiche Menge an Arbeit. Kann ich meine Arbeiter in einer großen Anzahl von Versuchen und Kombinationen nach dem ordnen, der am härtesten arbeitet?
Hinweis: Dies ist nur eine Metapher. Machen Sie sich also keine Sorgen, dass die Tests tatsächlich ausgeführt werden. Nehmen Sie einfach an, ich habe bereits einen großen Datensatz.
Bearbeiten: Wenn ich sage "Angenommen, jeder Arbeiter erledigt immer ungefähr die gleiche Menge an Arbeit", meine ich, dass jeder Einzelne täglich ungefähr die gleiche Menge an Arbeit erledigt. Also wird Joey jeden Tag ungefähr 100 Arbeitseinheiten erledigen und Greg ungefähr 50. Das Problem ist, dass ich nur die Anzahl der von der Gruppe geleisteten Arbeitseinheiten beobachten kann.
Weitere Änderungen: In Bezug auf die Anzahl der gleichzeitig arbeitenden Arbeitnehmer und die Häufigkeit ihrer Arbeit. Es kann eine beliebige Anzahl von Arbeitnehmern gleichzeitig arbeiten. Einige Arbeitnehmer werden wahrscheinlich viel mehr arbeiten als andere, das heißt, wir können davon ausgehen, dass einige Arbeitnehmer fast 90% der Zeit arbeiten werden und andere fast nie.
Ich weiß, das macht es schwierig, aber ich werde einen sehr großen Datensatz haben, so dass es hoffentlich ein bisschen einfacher wird.
Für jede Stunde wissen wir, welche Arbeiter arbeiten und wie viel Arbeit geleistet wurde. Anhand dieser Informationen möchte ich herausfinden, wer am meisten arbeitet.
Wenn die Daten im JSON-Format wären, würde es ungefähr so aussehen:
[
{
"work_done": 12345,
"Workers": [ "andy", "bob", "cameron", "david" ]
},
{
"work_done": 432,
"Workers": [ "steve", "joe", "andy"]
},
{
"work_done": 59042,
"Workers": [ "bob", "aaron", "michelle", "scott", "henry" ]
},
...
]
quelle
Antworten:
David Harris hat eine großartige Antwort geliefert , aber da die Frage weiterhin bearbeitet wird, wäre es vielleicht hilfreich, die Details seiner Lösung zu sehen. Höhepunkte der folgenden Analyse sind:
Gewichtete kleinste Quadrate sind wahrscheinlich geeigneter als gewöhnliche kleinste Quadrate.
Da die Schätzungen möglicherweise Produktivitätsschwankungen widerspiegeln, die außerhalb der Kontrolle eines Einzelnen liegen, sollten Sie vorsichtig sein, wenn Sie sie zur Bewertung einzelner Arbeitnehmer verwenden.
Um diesen heraus zu tragen, lassen Sie sich einige realistischen Daten erstellen mit bestimmten Formeln , so dass wir für die Richtigkeit der Lösung auswerten können. Dies geschieht mit
R
:In diesen ersten Schritten haben wir:
Legen Sie einen Startwert für den Zufallszahlengenerator fest, damit jeder die Ergebnisse exakt reproduzieren kann.
Geben Sie an, mit wie vielen Mitarbeitern es gibt
n.names
.Geben Sie die erwartete Anzahl von Arbeitnehmern pro Gruppe mit an
groupSize
.Geben Sie an, mit wie vielen Fällen (Beobachtungen) verfügbar sind
n.cases
. (Einige davon werden später beseitigt, weil sie zufällig keinem der Arbeiter in unserer synthetischen Belegschaft entsprechen.)Sorgen Sie dafür, dass sich der Arbeitsaufwand zufällig von dem unterscheidet, was auf der Grundlage der Summe der Arbeitsfähigkeiten jeder Gruppe vorhergesagt wird. Der Wert von0,10
cv
ist eine typische proportionale Variation; Zum Beispiel , die gegeben entspricht dabei eine typische 10% Variation (die über 30% in wenigen Fällen reichen könnte).Schaffen Sie eine Belegschaft von Menschen mit unterschiedlichen Arbeitsfähigkeiten. Die hier angegebenen Parameter für die Berechnung
proficiency
erzeugen einen Bereich von über 4: 1 zwischen den besten und den schlechtesten Arbeitnehmern (was meiner Erfahrung nach für Technologie- und Berufsjobs sogar etwas eng sein kann, für Routinefertigungsjobs jedoch möglicherweise weitreichend ist).Lassen Sie uns mit dieser synthetischen Belegschaft ihre Arbeit simulieren . Dies bedeutet,1
schedule
für jede Beobachtung eine Gruppe von jedem Arbeiter ( ) zu erstellen (wobei alle Beobachtungen eliminiert werden, an denen überhaupt keine Arbeiter beteiligt waren), die Fähigkeiten der Arbeiter in jeder Gruppe zu summieren und diese Summe mit einem zufälligen Wert zu multiplizieren (Mittelwert genau ), um die unvermeidlichen Abweichungen widerzuspiegeln. (Wenn es überhaupt keine Variation gäbe, würden wir diese Frage auf die Mathematik-Website verweisen, wo die Befragten darauf hinweisen könnten, dass dieses Problem nur ein Satz simultaner linearer Gleichungen ist, die genau für die Fähigkeiten gelöst werden könnten.)Ich habe festgestellt, dass es praktisch ist, alle Arbeitsgruppendaten zur Analyse in einem einzigen Datenrahmen zusammenzufassen, aber die Arbeitswerte getrennt zu halten:
Hier würden wir mit realen Daten beginnen: Wir würden die Worker-Gruppierung durch
data
(oderschedule
) und die beobachteten Arbeitsausgaben imwork
Array codieren lassen .Leider, wenn einige Arbeiter immer gepaart sind,
R
istlm
Prozedur fehlschlägt einfach mit einem Fehler. Wir sollten zuerst nach solchen Paarungen suchen. Eine Möglichkeit besteht darin, perfekt korrelierte Mitarbeiter im Zeitplan zu finden:In der Ausgabe werden Paare von immer gepaarten Arbeitern aufgelistet: Dies kann verwendet werden, um diese Arbeiter zu Gruppen zusammenzufassen, da wir zumindest die Produktivität jeder Gruppe schätzen können , wenn nicht die Einzelpersonen darin. Wir hoffen, es spuckt einfach aus
character(0)
. Nehmen wir an, dass dies der Fall ist.Ein subtiler Punkt, der in der vorstehenden Erklärung impliziert ist, ist, dass die Variation in der durchgeführten Arbeit multiplikativ und nicht additiv ist. Dies ist realistisch: Die Variation der Leistung einer großen Gruppe von Arbeitnehmern wird im absoluten Maßstab größer sein als die Variation in kleineren Gruppen. Dementsprechend erhalten wir bessere Schätzungen, wenn wir gewichtete kleinste Quadrate anstelle gewöhnlicher kleinster Quadrate verwenden. Die besten Gewichte für dieses Modell sind die Kehrwerte der Arbeitsbeträge. (Für den Fall, dass einige Arbeitsbeträge Null sind, fummele ich dies durch Hinzufügen eines kleinen Betrags, um eine Division durch Null zu vermeiden.)
Dies sollte nur ein oder zwei Sekunden dauern.
Bevor wir fortfahren, sollten wir einige diagnostische Tests der Passform durchführen. Obwohl die Erörterung dieser Fragen uns hier zu weit führen würde, ist ein
R
Befehl zur Erstellung nützlicher Diagnosen(Dies dauert einige Sekunden: Es ist ein großer Datensatz!)
Obwohl diese wenigen Codezeilen die ganze Arbeit erledigen und die geschätzten Fähigkeiten für jeden Mitarbeiter ausspucken, möchten wir nicht alle 1000 Ausgabezeilen durchsuchen - zumindest nicht sofort. Verwenden wir Grafiken, um die Ergebnisse anzuzeigen .
Das Histogramm (unteres linkes Feld in der Abbildung unten) zeigt die Unterschiede zwischen den geschätzten und tatsächlichen Fähigkeiten, ausgedrückt als Vielfache des Standardschätzungsfehlers. Für eine gute Prozedur liegen diese Werte fast immer zwischen und und sind symmetrisch um . Bei 1000 beteiligten Arbeitnehmern erwarten wir jedoch, dass einige dieser standardisierten Unterschiede und sogar von2 0 3 4 0- 2 2 0 3 4 0 . Genau das ist hier der Fall: Das Histogramm ist so hübsch, wie man es sich erhoffen kann. (Eines könnte natürlich schön sein: Es handelt sich schließlich um simulierte Daten. Die Symmetrie bestätigt jedoch, dass die Gewichte ihre Arbeit korrekt ausführen. Die Verwendung der falschen Gewichte führt tendenziell zu einem asymmetrischen Histogramm.)
Das Streudiagramm (unteres rechtes Feld der Abbildung) vergleicht die geschätzten Fähigkeiten direkt mit den tatsächlichen. Natürlich wäre dies in der Realität nicht verfügbar, da wir die tatsächlichen Fähigkeiten nicht kennen: Hierin liegt die Leistungsfähigkeit der Computersimulation. Beobachten:
Wenn es keine zufällige Variation in der Arbeit gegeben hätte (setzen Sie
cv=0
den Code und führen Sie ihn erneut aus, um dies zu sehen), wäre das Streudiagramm eine perfekte diagonale Linie. Alle Schätzungen wären vollkommen genau. Somit spiegelt die hier gezeigte Streuung diese Variation wider.Gelegentlich ist ein geschätzter Wert ziemlich weit vom tatsächlichen Wert entfernt. Zum Beispiel gibt es einen Punkt in der Nähe von (110, 160), an dem die geschätzte Befähigung etwa 50% höher ist als die tatsächliche Befähigung. Dies ist bei großen Datenmengen fast unvermeidlich. Denken Sie daran, wenn die Schätzungen individuell verwendet werden, z. B. zur Bewertung von Arbeitnehmern. Im Großen und Ganzen mögen diese Schätzungen ausgezeichnet sein, aber in dem Maße, in dem die Variation der Arbeitsproduktivität auf Ursachen zurückzuführen ist, die außerhalb der Kontrolle eines Einzelnen liegen, sind die Schätzungen für einige der Arbeitnehmer falsch: einige zu hoch, andere zu niedrig. Und es gibt keine Möglichkeit, genau zu sagen, wer betroffen ist.
Hier sind die vier Diagramme, die während dieses Vorgangs erstellt wurden.
Beachten Sie schließlich, dass diese Regressionsmethode leicht an die Steuerung anderer Variablen angepasst werden kann, die plausibel mit der Gruppenproduktivität verbunden sein könnten. Dies können die Gruppengröße, die Dauer jedes Arbeitsaufwands, eine Zeitvariable, ein Faktor für den Manager jeder Gruppe usw. sein. Fügen Sie sie einfach als zusätzliche Variablen in die Regression ein.
quelle
results
): Sie können sie nach dem geschätzten Wert sortieren. Sie können es in eine Tabelle usw.Sie möchten Ihre Daten wie folgt einrichten, wobei 1 angibt, dass die Person Teil des Teams war, das die Arbeit dieser Zeile ausgeführt hat:
Dann können Sie einfach eine lineare Regression durchführen (vorausgesetzt, alles ist additiv usw., wie Sie in den Kommentaren erwähnt haben). In
R
wäre der Befehllm(work.done ~ . + 0, data = my.data)
Die "Formel"
work.done ~ . + 0
besagt auf Englisch, dass der Umfang der geleisteten Arbeit von allen anderen Spalten abhängt (das ist das ".") Und dass Gruppen ohne Arbeiter keine Arbeit machen würden (das ist das "+ 0"). Dies gibt Ihnen den ungefähren Beitrag jedes Arbeitnehmers zur durchschnittlichen Gruppenleistung.Wie in den Kommentaren erläutert, unterscheidet das Modell die Beiträge der beiden Mitarbeiter nicht voneinander, wenn Sie zwei Mitarbeiter haben, die immer zusammen sind, und einer von ihnen erhält eine "NA".
quelle