...
Para rodar o modelo são necessários alguns passos de preparação de dados, sucedidos pelo modelo em si e um processo para gerar as bases que são utilizadas no PowerBI.
...
Merge entre as tabelasWorkspace/people-analytics-absenteismo/01__tratamento_inicial/absenteismo/01__covariaveis_cadastroMetas_teste_estatístico/df_testes_estatisticos.py
Entrada:
...
murabei.absenteismo_database__wide2
absenteimo_prep.sap__informacoes_cadastrais
Saída:
absenteimo_prep.
...
metas_teste_estatistico__
...
modelo_
...
Nesse notebook são tratadas as bases de cadastro, o objetivo principal é remover a duplicidade dos dados. Esses casos são poucos e parecem ocorrer na transição de posição dos colaboradores em um determinado mês, a exclusão da duplicidade é dada por uma regra simples de considerar a 1a entrada na base como correta.
Fora isso são feitos alguns tratamentos para normalização da base e o calculo do tempo desde o último aumento. Como resultado temos a tabela absenteimo_prep.sap__informacoes_cadastrais
com a seguinte composição:
Tratamento das variáveis de absenteísmo
Workspace/peoplemetas
Primeiramente é feito o merge entre as tabelas de entrada, através das chaves time
e modeling_unit_id
coincidentes nas duas. Assim, obtem-se para cada colaborador no mês de referência suas informações de absenteísmo, horas extras bem como as informações de local de trabalho e divisão a qual pertence.
Tratamento e criação de algumas variáveis de interesse
Workspace/people-analytics-absenteismo/01__tratamento_inicial/absenteismo/02__absenteísmoMetas_teste_estatístico/data_prep_testes_estatisticos.py
Entrada:
recursosabsenteimo_humanos.zitrhr145prep.metas_teste_estatistico__modelo_metas
Saída:
absenteimo_prep.sapmetas_teste_absenteismoestatistico__dbprepared
Faz um tratamento simples das variáveis e passa para o tipo date time a coluna de mês/ano que está no formato numérico YYYYMM
. Esse notebook resulta na tabela absenteimo_prep.sap__absenteismo_db
, que apresenta os seguintes campos:
Criação das variáveis de atraso de absenteísmo para verificar recorrência
Workspace/people-analytics-absenteismo/02__modelos/propensao_absenteismo/01__lags_absenteismo.py
Entrada:
absenteimo_prep.sap__absenteismo_db
absenteimo_prep.sap__informacoes_cadastrais
Saída:
absenteimo_prep.propensao_absenteismo__absenteismo_lags
Nesse passo são criadas as variáveis de atraso para fazer os cálculos de recorrência colocando os dados no formato long. Como saída é criada a tabela absenteimo_prep.propensao_absenteismo__absenteismo_lags
com o seguinte formato:
time [timestamp]: Data de referência para a variável.
geoarea_id [string]: Divisão associada ao dado.
modeling_unit_id [bigint]: Identitificação do colaborador.
variable [string]: Variável referente ao valor.
banco_horas_credito: Total de banco de horas em crédito.
banco_horas_debito: Total de banco de horas em débto.
banco_horas_mes: Total do banco de horas do mês.
faltas_injust: Horas em faltas injustificadas.
faltas_just: Horas em faltas justificadas.
hrs_prev: Horas previstas.
total_horas_extras: Total de horas extra feitas.
transformation [string]: A transformação que foi aplicada na variável, valores possíveis: [
cum__3: Acumulado dos últimos 3 meses.
cum__6: Acumulado dos últimos 6 meses.
lag__-1: Valor correspondente ao próximo mês (saída do modelo).
lag__0: Valor para o mês atual.
lag__1: Valor para o mês anterior.
lag__2: Valor para 2 meses atrás.
lag__3: Valor para 3 meses atrás.
value [double]: Valor correspondente para time/geoarea_id/modeling_unit_id/variable/transformation.
Construção da matriz para o modelo
Workspace/people-analytics-absenteismo/02__modelos/propensao_absenteismo/02__contrucao_matrix.py
Entradas:
absenteimo_prep.sap__informacoes_cadastrais
absenteimo_prep.propensao_absenteismo__absenteismo_lags
Saída:
absenteimo_prep.propensao_absenteismo__model_matrix
Coloca as variáveis que estão no formato long em um formato wide para que possam ser colocadas no modelo. Faz o calculo do % de horas por cada tipo de absenteísmo/hora extra/banco de hora de acordo com o total de horas esperado para o mês.
Como resultado retorna a tabela absenteimo_prep.propensao_absenteismo__model_matrix
com os seguintes campos.
id [bigint]: Identificador da linha
modeling_unit_id [bigint]: Id do colaborador no SAP
dat_nasc [timestamp]: Data de nascimento do colaborador
idade [string]: Idade do colaborador (está como string mas é um integer)
sexo [string]: Sexo do colaborador.
est_civil [string]: Estado civil do colaborador.
descricao_atividade4 [string]: Código de descrição da atividade no SAP.
local_fisico [string]: Local fisíco do colaborador.
unidade_organizacional [string]: Unidade organizacional.
divisao_id [string]: Identificador da divisão no SAP.
divisao [string]: Descrição da divisão no SAP.
centro_de_custo_id [string]: Identificador do centro de custo no SAP.
centro_de_custo [string]: Descrição do centro de custo no SAP.
des_org_sup [string]: ?
gestor_imed [string]: Nome do gestor imediato responsável pelo colaborador.
nivel_superior_tipo_unid [string]: ?
descritivo_tipo_unid [string]: ?
dtadmissao [string]: Data de admição no formato dd/mm/yyyy.
temp_emp [string]: Tempo de empresa, está em string mas na verdade é inteiro.
mot_aum [string]: Motivo pelo aumento que foi dado.
time [timestamp]: Data de referência dos dados.
time_ult_aum [timestamp]: Data que foi dado o último aumento.
temp_ult_aum [timestamp]: Tempo desde o último aumento (está como string mas é double).
afastamentos__cum__3 [double]: Horas em afastamento nos últimos 3 meses.
atestados__cum__3 [double]: Horas em atestado nos últimos 3 meses.
banco_horas_credito__cum__3 [double]: Horas no banco de horas em crédito nos últimos 3 meses.
banco_horas_debito__cum__3 [double]: Horas no banco de horas em débito nos últimos 3 meses.
faltas_injust__cum__3 [double]: Horas em faltas injustificadas nos últimos 3 meses.
faltas_just__cum__3 [double]: Horas em faltas justificadas nos últimos 3 meses.
hrs_prev__cum__3 [double]: Horas previstas nos últimos 3 meses.
output__lag__-1 [double]: Valor definido pela coluna output_name adiantado em um mês para executar o modelo preditivo.
total__lag__-1 [double]: Total de horas adiantando em um mês para fazer o calculo do % de horas totais do
output__lag__-1
.percent_output [double]: Divisão das colunas
output__lag__-1/total__lag__-1
percent_atestados__cum__3 [double]: Divisão das colunas
atestados__cum__3/hrs_prev__cum__3
percent_banco_horas_credito__cum__3 [double]: Divisão das colunas
banco_horas_credito__cum__3/hrs_prev__cum__3
percent_banco_horas_debito__cum__3 [double]: Divisão das colunas
banco_horas_debito__cum__3/hrs_prev__cum__3
percent_faltas_injust__cum__3 [double]: Divisão das colunas
faltas_injust__cum__3/hrs_prev__cum__3
percent_faltas_just__cum__3 [double]: Divisão das colunas
faltas_just__cum__3/hrs_prev__cum__3
age [double]: Idade do colaborador em anos de acordo com a data de nascimento e tempo de referência.
output_name [string]: Identificador sobre qual é a saído da coluna output__lag__-1.
Inclusão dos dados do SOC às info de absenteísmo
Workspace/people-analytics-absenteismo/02__modelos/propensao_absenteismo/03__merge_SOC_info.py
Entrada:
absenteimo_prep.propensao_absenteismo__model_matrix
absenteimo_prep.soc__agregado_centro_de_custo__com_depara
absenteimo_prep.soc__depara_divisao
Saída:
absenteimo_prep.propensao_absenteismo__model_matrix__1
Une os dados do SOC aos dados de absenteísmo. Como resultado gera a tabela propensao_absenteismo__model_matrix__1
com as seguintes informações:
...
id [bigint]: Identificador da linha
...
modeling_unit_id [bigint]: Id do colaborador no SAP
...
dat_nasc [timestamp]: Data de nascimento do colaborador
...
idade [string]: Idade do colaborador (está como string mas é um integer)
...
sexo [string]: Sexo do colaborador.
...
est_civil [string]: Estado civil do colaborador.
...
descricao_atividade4 [string]: Código de descrição da atividade no SAP.
...
local_fisico [string]: Local físico do colaborador.
...
unidade_organizacional [string]: Unidade organizacional.
...
divisao_id [string]: Identificador da divisão no SAP.
...
divisao [string]: Descrição da divisão no SAP.
...
centro_de_custo_id [string]: Identificador do centro de custo no SAP.
...
centro_de_custo [string]: Descrição do centro de custo no SAP.
...
des_org_sup [string]: ?
...
gestor_imed [string]: Nome do gestor imediato responsável pelo colaborador.
...
nivel_superior_tipo_unid [string]: ?
...
descritivo_tipo_unid [string]: ?
...
dtadmissao [string]: Data de admição no formato dd/mm/yyyy.
...
temp_emp [string]: Tempo de empresa, está em string mas na verdade é inteiro.
...
mot_aum [string]: Motivo pelo aumento que foi dado.
...
time [timestamp]: Data de referência dos dados.
...
time_ult_aum [timestamp]: Data que foi dado o último aumento.
...
temp_ult_aum [timestamp]: Tempo desde o último aumento (está como string mas é double).
...
afastamentos__cum__3 [double]: Horas em afastamento nos últimos 3 meses.
...
atestados__cum__3 [double]: Horas em atestado nos últimos 3 meses.
...
banco_horas_credito__cum__3 [double]: Horas no banco de horas em crédito nos últimos 3 meses.
...
banco_horas_debito__cum__3 [double]: Horas no banco de horas em débito nos últimos 3 meses.
...
faltas_injust__cum__3 [double]: Horas em faltas injustificadas nos últimos 3 meses.
...
faltas_just__cum__3 [double]: Horas em faltas justificadas nos últimos 3 meses.
...
hrs_prev__cum__3 [double]: Horas previstas nos últimos 3 meses.
...
output__lag__-1 [double]: Valor definido pela coluna output_name adiantado em um mês para executar o modelo preditivo.
...
total__lag__-1 [double]: Total de horas adiantando em um mês para fazer o calculo do % de horas totais do output__lag__-1.
...
percent_output [double]: Divisão das colunas output__lag__-1/total__lag__-1
...
percent_atestados__cum__3 [double]: Divisão das colunas atestados__cum__3/hrs_prev__cum__3
...
percent_banco_horas_credito__cum__3 [double]: Divisão das colunas banco_horas_credito__cum__3/hrs_prev__cum__3
...
percent_banco_horas_debito__cum__3 [double]: Divisão das colunas banco_horas_debito__cum__3/hrs_prev__cum__3
...
age [double]: Idade do colaborador em anos de acordo com a data de nascimento e tempo de referência.
...
output_name [string]: Identificador sobre qual é a saído da coluna output__lag__-1
.
...
soc__acidentes [double]: Contagem do centro de custo de atestados ligados à acidentes.
...
soc__dental [double]: Contagem do centro de custo de atestados ligados à dental.
...
soc__diarreia [double]: Contagem do centro de custo de atestados ligados à diarréia.
...
soc__esforco_fisico_costas [double]: Contagem de diagnósticos do centro de custo de atestados ligados à esforço físico nas costas.
...
soc__esforco_fisico_geral [double]: Contagem de diagnósticos do centro de custo de atestados ligados à esforço físico geral.
...
soc__esforco_fisico_inferior [double]: Contagem de diagnósticos do centro de custo de atestados ligados à esforço físico ligados ao membro inferior.
...
soc__esforco_fisico_superior [double]: Contagem de diagnósticos do centro de custo de atestados ligados à esforço físico ligados ao membro superior.
...
soc__infecciosas_epidemica [double]: Contagem de diagnósticos do centro de custo de atestados ligados à doenças epidêmicas (gripe, covid, conjuntivite, …).
...
soc__infecciosas_nao_epidemica [double]: Contagem de diagnósticos do centro de custo de atestados ligados à doenças não epidêmicas (verminoses, doenças crônicas, etc…).
...
soc__mal_nutricao [double]: Contagem de diagnósticos do centro de custo de atestados ligados à doenças não epidêmicas (verminoses, doenças crônicas, etc…).
...
soc__mental [double]: Contagem de diagnósticos do centro de custo de atestados ligados à doenças de saúde mental.
...
soc__nao_relacionadas [double]: Contagem de diagnósticos do centro de custo de atestados ligados à doenças de não relacionadas.
...
soc__pouco_especifico [double]: Contagem de diagnósticos do centro de custo de atestados ligados à doenças pouco específicos com ex.: CIDs ZZ.
...
soc__dental__por_col [double]: Prevalência (contagem de atestados por colaborador) do centro de custo de atestados ligados à acidentes.
...
soc__diarreia__por_col [double]: Prevalência (contagem de atestados por colaborador) do centro de custo de atestados ligados à diarréia.
...
soc__esforco_fisico_costas__por_col [double]: Prevalência (contagem de atestados por colaborador) de diagnósticos do centro de custo de atestados ligados à esforço físico nas costas.
...
soc__esforco_fisico_geral__por_col [double]: Prevalência (contagem de atestados por colaborador) de diagnósticos do centro de custo de atestados ligados à esforço físico geral.
...
soc__esforco_fisico_inferior__por_col [double]: Prevalência (contagem de atestados por colaborador) de diagnósticos do centro de custo de atestados ligados à esforço físico ligados ao membro inferior.
...
soc__esforco_fisico_superior__por_col [double]: Prevalência (contagem de atestados por colaborador) de diagnósticos do centro de custo de atestados ligados à esforço físico ligados ao membro superior.
...
soc__infecciosas_epidemica__por_col [double]: Prevalência (contagem de atestados por colaborador) de diagnósticos do centro de custo de atestados ligados à doenças epidêmicas (gripe, covid, conjuntivite, …).
...
soc__infecciosas_nao_epidemica__por_col [double]: Prevalência (contagem de atestados por colaborador) de diagnósticos do centro de custo de atestados ligados à doenças não epidêmicas (verminoses, doenças crônicas, etc…).
...
soc__mal_nutricao__por_col [double]: Prevalência (contagem de atestados por colaborador) de diagnósticos do centro de custo de atestados ligados à doenças não epidêmicas (verminoses, doenças crônicas, etc…).
...
soc__mental__por_col [double]: Prevalência (contagem de atestados por colaborador) de diagnósticos do centro de custo de atestados ligados à doenças de saúde mental.
...
soc__nao_relacionadas__por_col [double]: Prevalência (contagem de atestados por colaborador) de diagnósticos do centro de custo de atestados ligados à doenças de não relacionadas.
...
soc__pouco_especifico__por_col [double]: Contagem de diagnósticos do centro de custo de atestados ligados à doenças pouco específicos com ex.: CIDs ZZ.
...
grupo_divisao [string]: Divisão agrupada em metais, louças, madeira, flora, …
Ajuste das variáveis para entrada no modelo
Workspace/people-analytics-absenteismo/02__modelos/propensao_absenteismo/04__ajuste_das_variaveis.py
Entrada:
absenteimo_prep.propensao_absenteismo__model_matrix__1
Saída:
absenteimo_prep.propensao_absenteismo__model_matrix__final
Criação dos cortes das variáveis de tempo de empresa, idade, normalização dos motivos de aumento, e conversão de campos numéricos que estavam como string. Retorna a tabela absenteimo_prep.propensao_absenteismo__model_matrix__final
que será utilizada para a estimação do modelo
como a estrutura igual à absenteimo_prep.propensao_absenteismo__model_matrix__1
mais as seguintes colunas:
temp_ult_aum__cuted [string]: Informações de tempo desde o último aumento discretizada,
temp_emp__cuted [string]: Informações de tempo de empresa discretizada,
Modelo de previsão de presença de falta no próximo mês
Entrada:
absenteimo_prep.propensao_absenteismo__model_matrix__final
Saída:
absenteimo.propensao_absenteismo__model_coef_summary
absenteimo.propensao_absenteismo__melted_effects
absenteimo.propensao_absenteismo__melted_variables
absenteimo.propensao_absenteismo__variable_and_effects
Corresponde ao modelo de previsão de presença de faltas abertas por cada um dos tipos de faltas. É considerado um colabora em falta se ele apresenta mais de 2.5% de horas em falta em relação ao total de horas previstas para o mês.
É feita uma seleção de variáveis para cada um dos modelos através de stepwise na direção forward. As tabelas de resultados correspondem aos parâmetros associados à cada uma das variáveis e os efeitos e variáveis de entrada no forma to wide e long para a criação dos dashboards.
absenteimo.propensao_absenteismo__model_coef_summary
Coeficientes vindos do modelo com significância e valores estimados
absenteimo.propensao_absenteismo__melted_effects
Valores dos efeitos de cada uma das variáveis em formato long para a criação dos dashboards.
absenteimo.propensao_absenteismo__melted_variables
Valores das variáveis no formato melted para a criação dos dashboards
absenteimo.propensao_absenteismo__variable_and_effects
Valores dos efeitos, variáveis e previsão no formato wide para utilização dos dashboards.
Criação das bases de dados que serão consumidas nos dashboards
Workspace/people-analytics-absenteismo/02__modelos/propensao_absenteismo/06__criacao_bases_dashboard.py
Entradas:
absenteimo.propensao_absenteismo__model_coef_summary
absenteimo.propensao_absenteismo__melted_effects
absenteimo.propensao_absenteismo__melted_variables
absenteimo.propensao_absenteismo__variable_and_effects
recursos_humanos.zitrhr023
Saídas:
absenteimo.propensao_absenteismo_dash__dim_nomes
absenteimo.propensao_absenteismo_dash__dim_grupo_divisao
absenteimo.propensao_absenteismo_dash__dim_divisao
absenteimo.propensao_absenteismo_dash__dim_descricao_atividade4
absenteimo.propensao_absenteismo_dash__dim_centro_de_custo
absenteimo.propensao_absenteismo_dash__dim_gestor_imediato
absenteimo.propensao_absenteismo_dash__dim_id_modelos
absenteimo.propensao_absenteismo_dash__dim_variables
absenteimo.propensao_absenteismo_dash__prediction
absenteimo.propensao_absenteismo_dash__melted_variables
absenteimo.propensao_absenteismo_dash__melted_efects
Responsável por “desmontar” as tabelas resultantes dos modelos e a criação de uma base no formato star schema. As tabelas com dim__
correspondem às tabelas de dimensões sendo que as demais tabelas correspondem as tabelas fatotambém a criação da variável de interesse grupo_divisao
. Consta dos seguintes passos:
Filtro do ramo de atividade 4:
Filtra-se a colunadescricao_atividade4
para trazer apenas os valores:OPERACIONAL
,ADMINISTRATIVO
eTECNICO
Filtro de colaboradores que possuem horas previstas maior que 0:
Filtra-se a colunahrs_prev
para trazer apenas os colaboradores que naquele mês de referência possuem horas previstas maior que 0, evitando-se assim de computar como absenteísta colaboradores que não batem ponto, que estejam de férias (e portanto sem horas previstas) entre outros casos similares.Criação das variáveis de interesse de absenteísmo e horas extras por horas previstas:
faltas_injust-hrs_prev = divisão das colunas
faltas_injust/hrs_prev
falta_abon-hrs_prev = divisão das colunas
falta_abon/hrs_prev
faltas_just-hrs_prev = divisão das colunas
faltas_just/hrs_prev
faltas_legais-hrs_prev = divisão das colunas
faltas_legais/hrs_prev
atestados-hrs_prev = divisão das colunas
atestados/hrs_prev
afastamentos-hrs_prev = divisão das colunas
afastamentos/hrs_prev
faltas_sem_afast-hrs_prev = divisão das colunas
faltas_sem_afast/hrs_prev
total_horas_extras-hrs_prev = divisão das colunas
total_horas_extras/hrs_prev
he_folgas-hrs_prev = divisão das colunas
he_folgas/hrs_prev
Ajuste e tratamento da variável de ‘local físico':
A variável de local físico continha valores que traziam um código numérico seguido do local propriamente dito, como por exemplo0006 - FÁB METAIS SP CML
. Tratou-se dessa variável para retirar o código numérico e o restante fosse transferido para uma coluna nova chamadadivisao
.
Assim, no exemplo0006 - FÁB METAIS SP CML
, o código 0006 era jogado fora e ‘FÁB METAIS SP CML’ era transferido para essa nova coluna 'divisão’.Criação da coluna
grupo_divisao
:
A partir dos valores da colunadivisao
cria-se a hierarquia acima, ogrupo_divisao
. Os valores usados foram:HYDRA ARACAJU → Louças
FÁB LOUÇAS JUNDIAÍ I → Louças
FÁB LOUÇAS RECIFE → Louças
FÁB METAIS SP INDL → Metais
FÁB METAIS JUNDIAÍ → Metais
FÁB AGUDOS → Madeira
FÁB LOUÇAS QUEIMADOS → Louças
FÁB LOUÇAS PARAÍBA → Louças
FÁB ITAPETININGA → Madeira
FÁB UBERABA → Madeira
FÁB METAIS SP CML → Metais
FÁB TAQUARI → Madeira
FL UBERABA → Duraflora
FL AGUDOS → Duraflora
FL ITAPETININGA → Duraflora
FL LENÇÓIS PAULISTA → Duraflora
FL ESTRELA DO SUL → Madeira
FÁB METAIS JACAREÍ → Metais
FÁB LOUÇAS SUL → Louças
FL BOTUCATU → Duraflora
FÁB HYDRA SÃO PAULO → Louças
CD TUBARAO → Outros
HYDRA TUBARÃO → Louças
FÁB LOUÇAS JUNDIAÍ → Louças
FÁB LOUÇAS JUNDIAÍ II → Louças
FÁB BOTUCATU → Madeira
FL PIRATININGA → Madeira
FÁB METAIS SP → Metais
CD RECIFE → Madeira
FL TAQUARI → Duraflora
CD BETIM → Outros
Osgrupos_divisao
resultants foram: Metais, Louças, Duraflora, Madeira e Outros.
Esses tratamentos e a criação dessas novas colunas foram colocados na tabelaabsenteimo_prep.metas_teste_estatistico__prepared
, sendo esta a tabela a ser usada no modelo propriamente dito.
Criação do modelo
O modelo foi criado em três etapas:
Geral -> grupo divisão:
Workspace/people-analytics-absenteismo/02__modelos/metas_teste_estatístico/teste_geral-grupo_divisao.py
Grupo divisão -> divisão:
Workspace/people-analytics-absenteismo/02__modelos/metas_teste_estatístico/teste_grupo_divisao-divisao.py
Divisão -> centro de custo:
Workspace/people-analytics-absenteismo/02__modelos/metas_teste_estatístico/teste_divisao_centro-custo.py
Entrada:
absenteimo_prep.df__stat_test_prepared
Saídas:
absenteimo_prep.df__test__geral_grupo_divisao
absenteimo_prep.df__test__grupo_divisao_divisao
absenteimo_prep.df__test__divisao_centro_custo
Ao final, todas as saídas serão unificadas em uma única tabela a ser usada no dashboard.
Todas as três etapas são essencialmente a mesma, diferindo entre si apenas em quais das colunas serão rodados os testes. No primeiro considera-se como hierarquia superior a Dexco como um todo e como hierarquia inferior a coluna grupo_divisao
, esta é então hierarquia superior na segunda etapa sendo divisao
a hierarquia inferior, finalmente na terceira etapa divisao
é a hierarquia superior e centro de custo
a herarquia inferior.
As etapas internas do modelo são:
Seleção de uma janela de 6 meses:
A colunatime
é varrida em cada iteração do modelo para uma seleção de uma janela de seis meses. A cada interação desloca-se um mês para a frente, e então o modelo é rodado novamente, até ter varrido todo o intervalo de meses disponíveis na base. Assim,na primeira interação, constam-se os meses de janeiro até junho
na segunda interação, constam-se os meses de fevereiro até julho
na terceira interação, constam-se os meses de março até agosto
e assim por diante.
Iteração entre os valores da herarquia superior e da hierarquia inferior
Criação de novas variáveis:
horas_variavel_superior: soma das horas de absenteísmo na hierarquia superior
horas_esperadas_superior: soma das horas previstas na hierarquia superior
proporcao_sup: divisão das colunashoras_variavel_superior/horas_esperadas_superior
horas_variavel_inferior: soma das horas de absenteísmo na hierarquia inferior
horas_esperadas_inferior: soma das horas previstas na hierarquia inferior
proporcao_inf: divisão das colunashoras_variavel_inferior/horas_esperadas_inferior
As variáveis do modelo:
O modelo em si consiste em uma analogia com o jogo de uma moeda: lança-se uma moeda n vezes e pergunta-se “a moeda é viciada?”.
A analogia consiste em tratar como um lance que deu “cara” cada vez que se registrar um colaborador que naquele mês de referência tenha tido mais faltas que o proporcional registrado na hierarquia superior, ou seja que a variávelproporcao_sup
. Registra-se como “coroa” o colaborador que tenha faltas abaixo desse limite:heads
→métrica de absenteísmo
>proporcao_sup
tails
→métrica de absenteísmo
<proporcao_sup
métrica de absenteísmo
são as métricasfltas_sem_afast
,faltas_abon
etcA proporção
heads
/heads + tails
é a proporção de caras em relação ao total de vezes que essa ‘moeda’ foi lançada. E esse valor será usado para o teste estatístico tendo a hierarquia superior como moeda de referência.
Após isso, verifica-se a quantidade de ‘caras’ e ‘coroas’ na hierarquia inferior e verifica-se a proporçãoheads_inferior
/ heads_inferior + tails_inferior
e obtem-se assim a proporção de ‘caras’ e ‘coroas’ dessa ‘moeda’ na hierarquia inferior. Esse valor será usado para se testar a ‘moeda’ lançada na hierarquia inferior contra a ‘moeda’ lançada na superior e responder à questão proposta acima.
O teste usado é um teste Z entre essas proporções.
Novas variáveis para o dash
A partir dos resultados do modelo, são criadas algumas variáveis para inserção no dashboard e para melhor interpretação pelo cliente.
O resultado do teste estatístico é um número real entre 0 e 1. Quanto mais próximo de zero mais estatisticamente significativo é o resultado para rejeitar a hipótese de que as métricas de absenteísmo observadas nas hierarquias superior e inferior são frutos do acaso, ou seja, a métrica observada está sim se descolando. Por outro lado, quanto mais próximo de 1, podemos dizer que o resultado não é significativo e a métrica não está se descolando.
O limite para se rejeitar a hipótese foi escolhido em 10%, ou seja, resultados de teste Z entre 0 e 0,1 são considerados significativos e devem acender um alerta para aquela unidade. Resultados maiores que 0,1 são considerados não significativos.
Foram criados os valores não significativo
, probabilidade alta
e probabilidade muito alta
para resumir essas considerações. Esses valores devem ser lidos como:
não significativo:
o teste não foi significativo e não se deve acender um alerta para aquela unidade naquela métrica de absenteísmoprobabilidade alta
: a probabilidade de se estar observando um descolamento naquela unidade em relação aos seus pares é alta. Nesse caso, deve-se acender um alerta.probabilidade muito alta
: a probabilidade de se estar observando um descolamento naquela unidade em relação aos seus pares é muito alta. Nesse caso, deve-se acender um alerta.
Criação das bases de dados que serão consumidas nos dashboards
Workspace/people-analytics-absenteismo/02__modelos/metas_teste_estatístico/teste_merge_resultados_completo.py
Entradas:
absenteimo_prep.df__test__geral_grupo_divisao
absenteimo_prep.df__test__grupo_divisao_divisao
absenteimo_prep.df__test__divisao_centro_custo
Saídas:
absenteimo.metas_teste_estatistico__completo
Responsável por concatenar as tabelas resultantes dos modelos e a criação de uma base final contendo todos os resultados, todos os valores de testes e todas as bandeiras (não significativo, probabilidade alta e muito alta) etc.
O script também é responsável por ajustar as variáveis para que fiquem em um formato mais executivo para ser apresentado no dashboard.