Skip to end of metadata
Go to start of metadata

You are viewing an old version of this content. View the current version.

Compare with Current Restore this Version View Version History

« Previous Version 3 Next »

Para responder essa pergunta foi desenvolvida uma técnica para a identificação de descolamentos de áreas ‘inferiores’ na hierarquia da empresa (por ex: centro de custo) em relação à 'superior' (por ex: fábrica) quanto às métricas de absenteísmo. A ideia é teste estatístico que gere resultados que podem responder à pergunta identificando esses descolamentos como mero acaso ou se estes são estatisticamente significativos, de forma que possamos estabelecer uma série de alertas para as áreas que estão com descolamento frente às demais que podem ser conisderadas “pares”: testam-se as métricas de absenteísmo em centros de custo A, B, C etc de uma determinada unidade de farica X e assim estabelecemos se o absenteísmo nos centros de custo A, B, C etc é maior ou menor, estatisticamente, que o absenteísmo observado na unidade X como um todo; assim podemos estabelecer um alerta caso A (ou B ou C) se desloque em comparação aos seus 'pares' (os outros centros de custo da mesma fábrica).

Artefatos/Tabelas estáticas

São utilizadas as seguintes tabelas estáticas nesse workflow.

soc__depara_cids

Tabela com o de-para dos CIDs para o agrupamento em termos mais genéricos, a tabela possui os seguintes campos:

  • cid_descricao [str]: Campo com a descrição completa do CID de acordo com o CID-10 disponibilizado no site do SUS.

  • cid_id [str]: Identificador do CID descrito.

  • grupo_cid [str]: Capítulo do CID-10.

  • descrição_grupo [str]: Descrição do capítulo do CID-10.

  • grupo_modelo [str]: Agrupamento que será utilizado no modelo.

soc__depara_divisao

Tabela com o de-para das divisões presentes no SOC e na base de absenteísmo e um agrupamento que será utilizada para a criação do modelo aberto por grupo_divisao.

  • Empresa [str]: Chave disponível nos dados do SOC.

  • Unidade [str]: Chave disponível nos dados do SOC.

  • divisao [str]: Chave disponível nos dados de abesenteísmo.

  • divisao_desc [str]: Chave disponível nos dados de abesenteísmo.

  • grupo_divisao [str]: Grupos que serão utilizados no modelo, existindo um modelo para cada um dos grupos.

Descrição dos passos necessários

Para rodar o modelo são necessários alguns passos de preparação de dados, sucedidos pelo modelo em sí e um processo para gerar as bases que são utilizadas no PowerBI.

Tratamento das variáveis de cadastro

Workspace/people-analytics-absenteismo/01__tratamento_inicial/absenteismo/01__covariaveis_cadastro.py

Entrada:

recursos_humanos.zitrhr145

Saída:

absenteimo_prep.sap__informacoes_cadastrais

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/people-analytics-absenteismo/01__tratamento_inicial/absenteismo/02__absenteísmo.py

Entrada:

recursos_humanos.zitrhr145

Saída:

absenteimo_prep.sap__absenteismo_db

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

  • 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.

  • 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 fato.

O script também é responsável por ajustar as variáveis para que fiquem em um formato mais executivo para ser apresentado no dashboard.