Determinación del mayor contribuyente en un grupo

9

No sé mucho sobre estadísticas, así que tengan paciencia conmigo. Digamos que tengo un conjunto de 1000 trabajadores. Quiero averiguar quién es el trabajador más duro, pero solo puedo medir la cantidad de trabajo que se realiza en grupos de 1 a 100 durante más de una hora de trabajo. Suponiendo que cada trabajador siempre realiza la misma cantidad de trabajo, en una gran cantidad de ensayos y combinaciones, ¿puedo clasificar a mis trabajadores según quién trabaja más duro?

Nota: esto es solo una metáfora, así que no te preocupes por ejecutar las pruebas, solo asume que ya tengo un gran conjunto de datos.

Editar: Cuando digo "Asumiendo que cada trabajador siempre hace la misma cantidad de trabajo", me refiero a que cada individuo hace aproximadamente la misma cantidad de trabajo en el día a día. Entonces, Joey hará alrededor de 100 unidades de trabajo cada día y Greg hará alrededor de 50. El problema es que solo puedo observar la cantidad de unidades de trabajo realizadas por el grupo.

Más ediciones: en cuanto a la cantidad de trabajadores que trabajan a la vez y la frecuencia con la que trabajan. Podría haber cualquier número de trabajadores trabajando al mismo tiempo. Algunos trabajadores probablemente terminarán trabajando mucho más que otros, es decir, podemos suponer que algunos trabajadores estarán trabajando casi el 90% del tiempo y otros casi nunca.

Sé que eso lo hace difícil, pero tendré un conjunto de datos muy grande, así que espero que lo haga un poco más fácil.

Por cada hora sabemos qué trabajadores están trabajando y cuánto trabajo se realizó. A partir de esa información, quiero saber quién está haciendo más trabajo.

Si los datos estuvieran en formato JSON, se vería así:

[
  {
    "work_done": 12345,
    "Workers": [ "andy", "bob", "cameron", "david" ]
  },
  {
    "work_done": 432,
    "Workers": [ "steve", "joe", "andy"]
  },
  {
    "work_done": 59042,
    "Workers": [ "bob", "aaron", "michelle", "scott", "henry" ]
  },
  ...
]
Greg Guida
fuente
3
¿El trabajo es aditivo, como la cantidad de algún producto? Luego, puede usar la regresión lineal para estimar la contribución de cada trabajador y ordenarlos por sus coeficientes. Si no es aditivo, es posible que desee algo más complicado.
Douglas Zare
Si asume que sabe cuánto trabajo ha realizado cada grupo y también asume que el trabajo se distribuye de manera uniforme entre los participantes en cada grupo, simplemente puede dividir la cantidad de trabajo realizado por el grupo por el número de personas en él y la suma arriba los pedazos de trabajo que cada trabajador ha hecho en diferentes grupos. Sin embargo, esto realmente no tiene nada con las estadísticas.
Qnan
1
@DouglasZare Sí, el trabajo es aditivo
Greg Guida
1
Creo que la descripción es clara. Solo observa a los trabajadores en grupos y desea hacer inferencia sobre los trabajadores individuales. Por ejemplo, supongamos que tiene un total de 5 trabajadores, el día uno observa a los trabajadores {1,2,3} juntos, el día dos ve a los trabajadores {1,4,5}, el día tres {2,3,4 }, etc. y sus datos son la salida total de cada día. Entonces, ¿puede estimar la producción media de cada trabajador individual? La respuesta es sí: si puede derivar la distribución de la suma de los trabajadores, entonces podría anotar la probabilidad y maximizarla en función de los medios individuales.
Macro
1
¿Qué me estoy perdiendo? Todavía no puedo ver de dónde sacas los medios individuales, incluso. ¿Siempre sabemos qué trabajadores están en una hora particular de datos? ¿La cantidad total de trabajo por hora es de alguna manera fija? ¿Existe un supuesto claro en la definición del problema que me falta?
Michael R. Chernick

Respuestas:

10

David Harris ha proporcionado una gran respuesta , pero dado que la pregunta continúa siendo editada, tal vez sería útil ver los detalles de su solución. Los aspectos más destacados del siguiente análisis son:

  • Los mínimos cuadrados ponderados son probablemente más apropiados que los mínimos cuadrados ordinarios.

  • Debido a que las estimaciones pueden reflejar una variación en la productividad más allá del control de cualquier individuo, tenga cuidado al usarlas para evaluar a los trabajadores individuales.


Para llevar esto a cabo, creemos algunos datos realistas utilizando fórmulas específicas para que podamos evaluar la precisión de la solución. Esto se hace con R:

set.seed(17)
n.names <- 1000
groupSize <- 3.5
n.cases <- 5 * n.names  # Should exceed n.names
cv <- 0.10              # Must be 0 or greater
groupSize <- 3.5        # Must be greater than 0
proficiency <- round(rgamma(n.names, 20, scale=5)); hist(proficiency)

En estos pasos iniciales, nosotros:

  • Establezca una semilla para el generador de números aleatorios para que cualquiera pueda reproducir exactamente los resultados.

  • Especifique cuántos trabajadores hay con n.names.

  • Estipular el número esperado de trabajadores por grupo con groupSize.

  • Especifique cuántos casos (observaciones) están disponibles con n.cases. (Más adelante, algunos de estos serán eliminados porque no corresponden, como sucede al azar, a ninguno de los trabajadores de nuestra fuerza laboral sintética).

  • Haga arreglos para que las cantidades de trabajo difieran aleatoriamente de lo que se predeciría según la suma de las "competencias" de trabajo de cada grupo. El valor de cves una variación proporcional típica; Por ejemplo , el dado aquí corresponde a una variación típica del 10% (que podría variar más allá del 30% en algunos casos).0.10

  • Crear una fuerza laboral de personas con diferentes competencias laborales. Los parámetros dados aquí para la computación proficiencycrean un rango de más de 4: 1 entre los mejores y los peores trabajadores (que, en mi experiencia, incluso pueden ser un poco estrechos para la tecnología y los trabajos profesionales, pero tal vez sea amplio para los trabajos de fabricación de rutina).

Con esta mano de obra sintética en la mano, simulemos su trabajo . Esto equivale a crear un grupo de cada trabajador ( schedule) para cada observación (eliminando cualquier observación en la que no haya trabajadores involucrados), sumando las competencias de los trabajadores en cada grupo y multiplicando esa suma por un valor aleatorio (promediando exactamente ) para reflejar las variaciones que inevitablemente ocurrirán. (Si no hubiera variación alguna, remitiríamos esta pregunta al sitio de Matemáticas, donde los encuestados podrían señalar que este problema es solo un conjunto de ecuaciones lineales simultáneas que podrían resolverse exactamente para las competencias).1

schedule <- matrix(rbinom(n.cases * n.names, 1, groupSize/n.names), nrow=n.cases)
schedule <- schedule[apply(schedule, 1, sum) > 0, ]
work <- round(schedule %*% proficiency * exp(rnorm(dim(schedule)[1], -cv^2/2, cv)))
hist(work)

He encontrado que es conveniente poner todos los datos del grupo de trabajo en un solo marco de datos para su análisis, pero para mantener separados los valores de trabajo:

data <- data.frame(schedule)

Aquí es donde comenzaríamos con datos reales: tendríamos la agrupación de trabajadores codificada por data(o schedule) y los resultados de trabajo observados en la workmatriz.

Desafortunadamente, si algunos trabajadores siempre están emparejados, Rel lmprocedimiento simplemente falla con un error. Deberíamos verificar primero para tales emparejamientos. Una forma es encontrar trabajadores perfectamente correlacionados en el horario:

correlations <- cor(data)
outer(names(data), names(data), paste)[which(upper.tri(correlations) & 
                                             correlations >= 0.999999)]

El resultado enumerará pares de trabajadores siempre pareados: esto se puede usar para combinar estos trabajadores en grupos, porque al menos podemos estimar la productividad de cada grupo, si no los individuos dentro de él. Esperamos que solo se escupe character(0). Supongamos que sí.

Un punto sutil, implícito en la explicación anterior, es que la variación en el trabajo realizado es multiplicativa, no aditiva. Esto es realista: la variación en la producción de un gran grupo de trabajadores será, en escala absoluta, mayor que la variación en grupos más pequeños. En consecuencia, obtendremos mejores estimaciones mediante el uso de mínimos cuadrados ponderados en lugar de mínimos cuadrados ordinarios. Los mejores pesos para usar en este modelo en particular son los recíprocos de las cantidades de trabajo. (En el caso de que algunas cantidades de trabajo sean cero, evito esto agregando una pequeña cantidad para evitar dividir por cero).

fit <- lm(work ~ . + 0, data=data, weights=1/(max(work)/10^3+work))
fit.sum <- summary(fit)

Esto debería tomar solo uno o dos segundos.

Antes de continuar, debemos realizar algunas pruebas de diagnóstico del ajuste. Aunque discutir eso nos llevaría demasiado lejos aquí, un Rcomando para producir diagnósticos útiles es

plot(fit)

(Esto tomará unos segundos: ¡es un gran conjunto de datos!)

Aunque estas pocas líneas de código hacen todo el trabajo y escupen las competencias estimadas para cada trabajador, no nos gustaría escanear a través de las 1000 líneas de salida, al menos no de inmediato. Usemos gráficos para mostrar los resultados .

fit.coef <- coef(fit.sum)
results <- cbind(fit.coef[, c("Estimate", "Std. Error")], 
             Actual=proficiency, 
             Difference=fit.coef[, "Estimate"] - proficiency,
             Residual=(fit.coef[, "Estimate"] - proficiency)/fit.coef[, "Std. Error"])
hist(results[, "Residual"])
plot(results[, c("Actual", "Estimate")])

El histograma (panel inferior izquierdo de la figura a continuación) muestra las diferencias entre las competencias estimadas y reales , expresadas como múltiplos del error estándar de estimación. Para un buen procedimiento, estos valores casi siempre estarán entre y y se distribuirán simétricamente alrededor de . Sin embargo, con 1000 trabajadores involucrados, esperamos ver algunas de estas diferencias estandarizadas para extender e incluso lejos de2 0 3 4 0220340. Este es exactamente el caso aquí: el histograma es tan bonito como uno podría esperar. (Una cosa podría ser, por supuesto, agradable: estos son datos simulados, después de todo. Pero la simetría confirma que los pesos están haciendo su trabajo correctamente. Usar los pesos incorrectos tenderá a crear un histograma asimétrico).

El diagrama de dispersión (panel inferior derecho de la figura) compara directamente las competencias estimadas con las reales. Por supuesto, esto no estaría disponible en realidad, porque no conocemos las competencias reales: aquí radica el poder de la simulación por computadora. Observar:

  • Si no hubiera habido una variación aleatoria en el trabajo (configure cv=0y vuelva a ejecutar el código para ver esto), el diagrama de dispersión sería una línea diagonal perfecta. Todas las estimaciones serían perfectamente precisas. Por lo tanto, la dispersión que se ve aquí refleja esa variación.

  • Ocasionalmente, un valor estimado está bastante lejos del valor real. Por ejemplo, hay un punto cercano (110, 160) donde la competencia estimada es aproximadamente un 50% mayor que la competencia real. Esto es casi inevitable en cualquier gran lote de datos. Tenga esto en cuenta si las estimaciones se utilizarán de forma individual , como para evaluar a los trabajadores. En general, estas estimaciones pueden ser excelentes, pero en la medida en que la variación en la productividad del trabajo se deba a causas más allá del control de cualquier individuo, entonces, para algunos de los trabajadores, las estimaciones serán erróneas: algunas demasiado altas, otras demasiado bajas. Y no hay forma de saber con precisión quién se ve afectado.

Aquí están las cuatro parcelas generadas durante este proceso.

Parcelas

Finalmente, tenga en cuenta que este método de regresión se adapta fácilmente para controlar otras variables que podrían estar asociadas con la productividad del grupo. Estos podrían incluir el tamaño del grupo, la duración de cada esfuerzo de trabajo, una variable de tiempo, un factor para el gerente de cada grupo, etc. Solo inclúyalos como variables adicionales en la regresión.

whuber
fuente
Wow, eso es mucho para asimilar. Supongo que no estoy seguro de cómo puedo saber quiénes son los trabajadores más trabajadores de estos cuadros.
Greg Guida
¿Los cuadros son por trabajador?
Greg Guida
El panel inferior derecho presenta las 1,000 estimaciones. El más alto es alrededor de 200: aparece completamente a la derecha. El histograma de competencia y el histograma residual también representan resultados para 1,000 trabajadores. El panel superior derecho, un histograma de trabajo, muestra la cantidad total de trabajo para casi 5,000 trabajos.
whuber
Ok, entiendo el significado de cada una de las tablas, pero no estoy seguro de cómo usarlas para clasificar a los trabajadores.
Greg Guida
De arriba a abajo en el panel inferior derecho. El código también crea una tabla de estos resultados (llamada results): puede ordenarla por valor estimado. Puede exportarlo a una hoja de cálculo, etc.
whuber
7

Desea configurar sus datos de esta manera, con 1 indicando que la persona era parte del equipo que hizo el trabajo de esa fila:

 work.done Alice Bob Carl Dave Eve Fred Greg Harry Isabel
 1.6631071     0   1    1    0   1    0    0     0      0
 0.7951651     1   1    0    0   0    0    0     1      0
 0.2650049     1   1    1    0   0    0    0     0      0
 1.2733771     0   0    0    0   1    0    0     1      1
 0.8086390     1   0    1    0   0    0    0     0      1
 1.7323428     1   0    0    0   0    0    1     0      1
 ...

Luego, puede hacer una regresión lineal (suponiendo que todo sea aditivo, etc., como mencionó en los comentarios). En R, el comando sería

lm(work.done ~ . + 0, data = my.data)

La "fórmula" work.done ~ . + 0dice, en inglés, que la cantidad de trabajo realizado depende de todas las otras columnas (ese es el ".") Y que los grupos sin trabajadores no trabajarían (ese es el "+ 0"). Esto le dará la contribución aproximada de cada trabajador al producto promedio del grupo.

Como se discutió en los comentarios, si tiene un par de trabajadores que siempre están juntos, el modelo no distinguirá las contribuciones de los dos trabajadores entre sí, y uno de ellos obtendrá un "NA".

David J. Harris
fuente
¿Importa que haya 1000 trabajadores? ¿Qué quiere decir con grupos de 1-100? Incluso con las aclaraciones de las 2 ediciones, ¿no veo dónde cada conjunto de datos identifica a las personas en el grupo? Todo lo que sé es que cada persona trabaja aproximadamente la misma cantidad cada día. Dado que varios de ustedes piensan que existe una solución, posiblemente a través de la regresión explícitamente, ¿cuáles son los supuestos subyacentes y cómo es identificable el trabajo de una persona? También estoy desconcertado sobre toda la discusión del trabajo cooperativo. En ninguna parte se supone algo más que trabajar de forma independiente.
Michael R. Chernick
La única restricción que veo es que cada persona de alguna manera se las arregla para hacer la misma cantidad de trabajo en una gran cantidad de ensayos. Parece que estamos tratando de traducir eso en algo sensato. ¿Pero está claro que esto es lo que pretendía el OP?
Michael R. Chernick
@MichaelChernick No estoy seguro de entender tu preocupación. ¿Es que el mismo individuo podría contribuir con diferentes cantidades en diferentes ensayos, o hay más?
David J. Harris
@DavidHarris Creo que tiene una buena solución si sus suposiciones son correctas. Pero me preocupa la identificabilidad de cada persona con tantos trabajadores. El OP cree que el gran tamaño de muestra ayuda. Pero debe haber una estructura como la que diste y algunos supuestos de modelado. Simplemente no creo que haya especificado todo lo que necesitamos para resolver el problema.
Michael R. Chernick
@MichaelChernick Creo que si asumimos que los trabajadores son independientes, que un modelo lineal es bastante seguro, y la linealidad también nos protege de algunos problemas que podríamos encontrar. Whuber probablemente tenga razón sobre la ponderación, lo que ayudaría. Los efectos aleatorios para trabajadores y grupos podrían ayudar a mantener sanas las estimaciones de los parámetros si hay problemas de identificación. Probablemente se podrían realizar más mejoras, pero sigo pensando que esto está en el camino correcto, suponiendo que los trabajadores sean esencialmente independientes.
David J. Harris