Eu não sei muito sobre estatísticas, então tenha paciência comigo. Digamos que eu tenho um conjunto de 1000 trabalhadores. Quero descobrir quem é o trabalhador mais esforçado, mas só posso medir a quantidade de trabalho realizado em grupos de 1 a 100 em mais de uma hora de trabalho. Supondo que cada trabalhador sempre faça a mesma quantidade de trabalho, durante um grande número de tentativas e combinações posso classificar meus trabalhadores por quem trabalha mais?
Nota: isso é apenas uma metáfora; portanto, não se preocupe em executar os testes, basta assumir que eu já tenho um grande conjunto de dados.
Edit: Quando digo "Supondo que cada trabalhador sempre faça a mesma quantidade de trabalho", quero dizer que cada indivíduo faz a mesma quantidade de trabalho no dia a dia. Então, Joey fará cerca de 100 unidades de trabalho por dia e Greg fará cerca de 50. O problema é que só posso observar o número de unidades de trabalho realizadas pelo grupo.
Mais edições: em relação ao número de trabalhadores que trabalham ao mesmo tempo e a frequência deles trabalhando. Pode haver qualquer número de trabalhadores trabalhando ao mesmo tempo. Alguns trabalhadores provavelmente acabarão trabalhando muito mais do que outros, ou seja, podemos supor que alguns trabalhadores estejam trabalhando quase 90% das vezes e outros quase nunca.
Eu sei que isso dificulta, mas terei um conjunto de dados muito grande, espero que o torne um pouco mais fácil.
A cada hora, sabemos quais trabalhadores estão trabalhando e quanto trabalho foi feito. A partir dessas informações, quero descobrir quem está fazendo mais trabalho.
Se os dados estivessem no formato JSON, ficaria assim:
[
{
"work_done": 12345,
"Workers": [ "andy", "bob", "cameron", "david" ]
},
{
"work_done": 432,
"Workers": [ "steve", "joe", "andy"]
},
{
"work_done": 59042,
"Workers": [ "bob", "aaron", "michelle", "scott", "henry" ]
},
...
]
fonte
Respostas:
David Harris forneceu uma ótima resposta , mas, como a pergunta continua sendo editada, talvez ajude a ver os detalhes de sua solução. Os destaques da análise a seguir são:
Os mínimos quadrados ponderados são provavelmente mais apropriados que os mínimos quadrados comuns.
Como as estimativas podem refletir variações na produtividade além do controle de qualquer indivíduo, tenha cuidado ao usá-las para avaliar trabalhadores individuais.
Para fazer isso, vamos criar alguns dados realistas usando fórmulas especificadas para avaliar a precisão da solução. Isso é feito com
R
:Nestas etapas iniciais, nós:
Defina uma semente para o gerador de números aleatórios para que qualquer pessoa possa reproduzir exatamente os resultados.
Especifique quantos trabalhadores existem
n.names
.Estipule o número esperado de trabalhadores por grupo com
groupSize
.Especifique com quantos casos (observações) estão disponíveis
n.cases
. (Mais tarde, alguns deles serão eliminados porque correspondem, como acontece aleatoriamente, a nenhum dos trabalhadores de nossa força de trabalho sintética.)Organize para que as quantidades de trabalho diferam aleatoriamente do que seria previsto com base na soma das "proficiências" do trabalho de cada grupo. O valor de0,10
cv
é uma variação proporcional típica; Por exemplo , o dado aqui corresponde a uma variação típica de 10% (que pode variar além de 30% em alguns casos).Crie uma força de trabalho de pessoas com diferentes habilidades de trabalho. Os parâmetros dados aqui para a computação
proficiency
criam uma faixa de mais de 4: 1 entre os melhores e os piores trabalhadores (que, na minha experiência, podem até ser um pouco estreitos para trabalhos de tecnologia e profissionais, mas talvez sejam amplos para trabalhos rotineiros de fabricação).Com essa força de trabalho sintética em mãos, vamos simular o trabalho deles . Isso equivale a criar um grupo de cada trabalhador (1 1
schedule
) para cada observação (eliminando as observações em que nenhum trabalhador estava envolvido), somando as proficiências dos trabalhadores em cada grupo e multiplicando essa soma por um valor aleatório (média de exatamente ) para refletir as variações que inevitavelmente ocorrerão. (Se não houvesse variação alguma, encaminharíamos essa questão para o site de Matemática, onde os entrevistados poderiam apontar que esse problema é apenas um conjunto de equações lineares simultâneas que poderiam ser resolvidas exatamente pelas proficiências.)Eu achei conveniente colocar todos os dados do grupo de trabalho em um único quadro de dados para análise, mas manter os valores do trabalho separados:
É aqui que começaríamos com dados reais: teríamos o agrupamento de trabalhadores codificado por
data
(ouschedule
) e as saídas de trabalho observadas nawork
matriz.Infelizmente, se alguns trabalhadores estão sempre emparelhados,
R
olm
procedimento simplesmente falha com um erro. Devemos verificar primeiro esses pares. Uma maneira é encontrar trabalhadores perfeitamente correlacionados no cronograma:A saída listará pares de trabalhadores sempre emparelhados: isso pode ser usado para combinar esses trabalhadores em grupos, porque pelo menos podemos estimar a produtividade de cada grupo, se não os indivíduos dentro dele. Esperamos que isso cuspa
character(0)
. Vamos presumir que sim.Um ponto sutil, implícito na explicação anterior, é que a variação no trabalho realizado é multiplicativa, não aditiva. Isso é realista: a variação na produção de um grande grupo de trabalhadores será, em escala absoluta, maior que a variação em grupos menores. Conseqüentemente, obteremos melhores estimativas usando os mínimos quadrados ponderados em vez dos mínimos quadrados comuns. Os melhores pesos a serem usados nesse modelo específico são os recíprocos dos valores do trabalho. (No caso de algumas quantidades de trabalho serem nulas, eu o refugo adicionando uma pequena quantidade para evitar dividir por zero.)
Isso deve levar apenas um ou dois segundos.
Antes de prosseguir, devemos realizar alguns testes de diagnóstico do ajuste. Embora discutir isso nos levaria muito longe aqui, um
R
comando para produzir diagnósticos úteis é(Isso levará alguns segundos: é um grande conjunto de dados!)
Embora essas poucas linhas de código façam todo o trabalho e cuspam as proficiências estimadas para cada trabalhador, não queremos examinar todas as 1000 linhas de saída - pelo menos não imediatamente. Vamos usar gráficos para exibir os resultados .
O gráfico de dispersão (painel inferior direito da figura) compara diretamente as proficiências estimadas às reais. É claro que isso não estaria disponível na realidade, porque não sabemos as proficiências reais: aqui reside o poder da simulação por computador. Observar:
Se não houvesse variação aleatória no trabalho (configure
cv=0
e execute novamente o código para ver isso), o gráfico de dispersão seria uma linha diagonal perfeita. Todas as estimativas seriam perfeitamente precisas. Assim, a dispersão vista aqui reflete essa variação.Ocasionalmente, um valor estimado está bem longe do valor real. Por exemplo, há um ponto próximo (110, 160) em que a proficiência estimada é cerca de 50% maior que a proficiência real. Isso é quase inevitável em qualquer grande lote de dados. Tenha isso em mente se as estimativas serão usadas individualmente , como na avaliação de trabalhadores. No geral, essas estimativas podem ser excelentes, mas, na medida em que a variação na produtividade do trabalho se deve a causas além do controle de qualquer indivíduo, para alguns trabalhadores as estimativas serão errôneas: algumas muito altas, outras muito baixas. E não há como dizer com precisão quem é afetado.
Aqui estão os quatro gráficos gerados durante esse processo.
Por fim, observe que esse método de regressão é facilmente adaptado ao controle de outras variáveis que podem estar associadas à produtividade do grupo. Isso pode incluir o tamanho do grupo, a duração de cada esforço de trabalho, uma variável de tempo, um fator para o gerente de cada grupo e assim por diante. Apenas inclua-os como variáveis adicionais na regressão.
fonte
results
): você pode classificá-lo pelo valor estimado. Você pode exportá-lo para uma planilha etc.Você deseja configurar seus dados da seguinte maneira: 1 indica que a pessoa fazia parte da equipe que fez o trabalho dessa linha:
Então, você pode simplesmente fazer regressão linear (assumindo que tudo é aditivo, etc., como você mencionou nos comentários). Em
R
, o comando serialm(work.done ~ . + 0, data = my.data)
A "fórmula"
work.done ~ . + 0
diz, em inglês, que a quantidade de trabalho realizado depende de todas as outras colunas (que é ".") E que grupos sem trabalhadores não funcionariam (esse é o "+ 0"). Isso fornecerá a contribuição aproximada de cada trabalhador para a produção média do grupo.Como discutido nos comentários, se você tem um par de trabalhadores que estão sempre juntos, o modelo não diferencia as contribuições dos dois trabalhadores e um deles recebe um "NA".
fonte