David Harris ha proporcionado una gran respuesta, pero ya que la pregunta sigue siendo editado, tal vez sería de gran ayuda para ver los detalles de su solución. Aspectos más destacados de los siguientes análisis:
Mínimos cuadrados ponderados es probablemente más apropiado que el de mínimos cuadrados ordinarios.
Debido a que las estimaciones pueden reflejar la variación en la productividad más allá de cualquier control de la persona, ser cautos con el uso de ellos para evaluar cada uno de los trabajadores.
Para llevar esto a cabo, vamos a crear algunos datos realistas, utilizando especificado fórmulas a fin de 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, tenemos:
Establecer una semilla para el generador de números aleatorios para que cualquiera pueda reproducir exactamente los resultados.
Especificar cuántos trabajadores hay con n.names
.
Estipular el número esperado de trabajadores por grupo con groupSize
.
Especificar cuántos casos (observaciones) están disponibles con n.cases
. (Más tarde, algunos de estos serán eliminados, ya que se corresponden, como ocurre al azar, para ninguno de los trabajadores en el sintético de la fuerza laboral.)
Los arreglos para las cantidades de trabajo para diferentes al azar de lo que sería predecir sobre la base de la suma del trabajo de cada grupo "las competencias." El valor de cv
es una típica variación porcentual; E. g., el $0.10$ aquí corresponde a un típico 10% de la variación (que podrían ir más allá del 30% en algunos casos).
Crear una fuerza de trabajo de las personas con diversos trabajar las competencias. Los parámetros que se dan aquí para computing proficiency
crear una gama de más de 4:1 entre el mejor y el peor de los trabajadores (que en mi experiencia, incluso puede ser un poco estrecho para la tecnología y trabajos profesionales, pero tal vez es amplia para la rutina de los trabajos de la fabricación).
Con este sintético de la fuerza laboral en la mano, vamos a simular su trabajo. Esto equivale a la creación de un grupo de cada uno de los trabajadores (schedule
) para cada observación (eliminando cualquier tipo de observaciones en el que ninguno de los trabajadores a todos los que estaban involucrados), la suma de las competencias de los trabajadores en cada grupo, y la multiplicación de esa suma por un valor aleatorio (en promedio, exactamente $1$) para reflejar las variaciones que inevitablemente se producen. (Si no hubo variación en todos, nos referiríamos a esta pregunta a las Matemáticas en el sitio, donde los encuestados podrían señalar que este problema es simplemente un conjunto de ecuaciones lineales simultáneas que podría resolverse exactamente para las competencias.)
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 de grupo de trabajo en un único marco de datos para el análisis, pero para mantener los valores de trabajo independiente:
data <- data.frame(schedule)
Aquí es donde debemos empezar con datos reales: tendríamos el trabajador de la agrupación codificada por data
(o schedule
) y la observó el trabajo de los productos en el work
de la matriz.
Por desgracia, si algunos trabajadores son siempre pares, R
's lm
procedimiento simplemente se produce un error. Debemos comprobar primero de tales vinculaciones. Es una manera de encontrar perfectamente correlacionadas los trabajadores en el calendario:
correlations <- cor(data)
outer(names(data), names(data), paste)[which(upper.tri(correlations) &
correlations >= 0.999999)]
La salida de la lista de pares de siempre vinculado a los trabajadores: esto puede ser utilizado para combinar estos trabajadores en grupos, porque al menos se puede estimar la productividad de cada grupo, si no la de los individuos dentro de ella. Esperamos que sólo escupe character(0)
. Vamos a suponer que sí.
Un punto sutil, implícita en la anterior explicación, es que la variación en el trabajo que se realiza es multiplicativo, no aditivo. Este es realista: la variación en el rendimiento de un gran grupo de trabajadores, en una escala absoluta, ser mayor que la variación en grupos más pequeños. En consecuencia, vamos a obtener mejores estimaciones mediante mínimos cuadrados ponderados en lugar de mínimos cuadrados ordinarios. El mejor de los pesos a utilizar en este modelo en particular son los recíprocos de las cantidades de trabajo. (En el caso de algunos trabajos cantidades son cero, me fudge esto mediante la adición de una pequeña cantidad para evitar la división por cero).
fit <- lm(work ~ . + 0, data=data, weights=1/(max(work)/10^3+work))
fit.sum <- summary(fit)
Esto debería tomar sólo uno o dos segundos.
Antes de continuar debemos realizar algunas pruebas de diagnóstico de la fit. Aunque hablar de los nos llevaría demasiado lejos de aquí, R
comando para producir útil de diagnóstico es
plot(fit)
(Esto tomará un par de segundos: se trata de un gran conjunto de datos!)
Aunque estas pocas líneas de código a hacer todo el trabajo, y escupir estimado de competencias para cada trabajador, no queremos escanear a través de todos los 1000 líneas de salida-al menos no de inmediato. Vamos a utilizar los 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 (parte inferior izquierda del panel de la figura de abajo) es de las diferencias entre el estimado y real de competencias, expresado como múltiplo del error estándar de la estimación. Para un buen procedimiento, estos valores casi siempre se encuentran entre las $-2$ $2$ y se distribuyen simétricamente alrededor de $0$. Con 1000 trabajadores involucrados, sin embargo, esperamos ver algunas de estas diferencias estandarizadas para estirar $3$, e incluso el $4$$0$. Este es exactamente el caso aquí: el histograma es tan bonita como uno podría esperar. (Uno podría cosa, por supuesto, es agradable: estos son los datos simulados, después de todo. Pero la simetría confirma los pesos están haciendo su trabajo correctamente. La utilización incorrecta de los pesos tienden a crear una relación asimétrica de histograma.)
El diagrama de dispersión (parte inferior del panel derecho de la figura) compara directamente estimado de los niveles actuales. Por supuesto, esto no estaría disponible en la realidad, porque no sabemos las reales competencias: aquí yace el poder de la simulación por ordenador. Observar:
Si no hubiera habido una variación aleatoria en el trabajo (set cv=0
y vuelva a ejecutar el código para ver esto), el diagrama de dispersión sería una perfecta línea diagonal. Todas las estimaciones, sería perfectamente exacta. Por lo tanto, la dispersión visto aquí refleja que la variación.
Ocasionalmente, se estima que el valor está muy lejos del valor real. Por ejemplo, hay un punto cercano (110, 160), donde la estimación de la competencia es un 50% mayor que la real competencia. Esto es casi inevitable en cualquier grupo grande de datos. Tener esto en mente si las estimaciones se pueden utilizar en un individuo , como para la evaluación de los trabajadores. En el conjunto de estos cálculos puede ser excelente, pero en la medida en que la variación en la productividad del trabajo debido a causas más allá de cualquier control de la persona, entonces para algunos de los trabajadores de las estimaciones será errónea: algunos demasiado alto, demasiado bajo. Y no hay manera de saber con precisión quiénes son los afectados.
Aquí están los cuatro gráficos generados durante este proceso.
Por último, tenga en cuenta que este método de regresión se adapta fácilmente a controlar otras variables que plausiblemente podría estar asociado con la productividad del grupo. Estos podrían incluir el tamaño del grupo, la duración de cada trabajo, de esfuerzo, un tiempo variable, un factor para el administrador de cada grupo, y así sucesivamente. Basta con incluir nuevas variables en la regresión.