1 Capa

## ### Navio analisado
## 
## **Nome:** DANIEL PEREIRA   
## **Período de dados:** 25/05/2021 a 24/11/2025   
## **Número de registros:** 1660

Objetivo deste relatório

Descrever, de forma clara e estruturada, o pipeline de tratamento de dados e sumarização diária aplicado a cada navio da frota no contexto do projeto de bioincrustação, detalhando as decisões de preenchimento de NAs, regras físicas aplicadas e a construção de indicadores-chave para modelagem e apoio à decisão.

Resumo executivo

  • O pipeline opera navio a navio, evitando misturar séries de embarcações diferentes.
  • Os dados são tratados linha a linha, com interpolação temporal, regras físicas e regressões simples.
  • É construído um índice físico de fouling (fouling_index) e uma pontuacao_estimada calibrada.
  • Apenas após o tratamento completo é feita uma sumarização diária, gerando uma visão compacta (df_dia) para análise e modelagem.

2 1. Estrutura geral do pipeline

O pipeline de pré-processamento foi estruturado para operar navio a navio, garantindo que todas as etapas de limpeza, interpolação e construção de indicadores respeitem a realidade operacional de cada embarcação. Em vez de tratar a frota como uma única série temporal, seleciona-se um navio alvo (navio_alvo), filtra-se apenas seus registros na base df.xlsx e todo o processamento é aplicado exclusivamente a esse subconjunto. Com isso, evitam-se interpolações e regressões que misturem perfis distintos de rota, carregamento e operação entre navios.

Após a leitura da base e a padronização dos nomes de colunas para o formato snake_case, os registros do navio selecionado são ordenados por data/hora (start_gmt_date) e é criada a variável data_ref, correspondente à data sem horário. Essa variável não reduz a granularidade, mas serve como referência diária para operações de interpolação dentro do mesmo dia. Antes de qualquer ajuste, é feito um diagnóstico inicial de valores ausentes, contabilizando o número e o percentual de NAs em cada coluna. Esse diagnóstico fundamenta as decisões de tratamento e permite comprovar a melhora da qualidade dos dados após o pipeline.


3 2. Tratamento de valores ausentes (NAs) linha a linha

3.1 2.1. Latitude e longitude

O tratamento de latitude (dec_latitude) e longitude (dec_longitude) é crítico, pois a trajetória do navio é a base para entender o ambiente em que ele operou. A abordagem combina duas etapas:

  1. Interpolação temporal diária:
    Dentro de cada data_ref, os valores faltantes são preenchidos com interpolação linear no tempo (na.approx), respeitando a ordem de start_gmt_date e restaurando falhas pontuais de GPS.
  2. Preenchimento ao longo da série:
    Em seguida, aplica-se um preenchimento do tipo last observation carried forward (para frente e para trás) na série completa (na.locf), garantindo continuidade espacial em períodos com falhas mais longas de medição.

Ao final, é criada uma flag (gps_flag) apenas para identificar eventuais posições não recuperadas, mantendo transparência sobre a qualidade da trajetória.

3.2 2.2. TRIM, displacement, Beaufort e sea_condition

As variáveis TRIM, displacement, Beaufort e sea_condition representam estado de carregamento e condição de mar. Por serem grandezas que tipicamente variam de forma mais suave, o tratamento segue a lógica:

  • Aplicar interpolação temporal dentro de cada dia (data_ref) para preencher buracos curtos.
  • Para lacunas maiores, usar a mediana do navio como valor de fallback, representando um estado operacional típico.
  • No caso de sea_condition, quando não há registro mas existe valor de beaufort, este é utilizado como proxy, refletindo o vínculo físico entre intensidade de vento/mar e condição de superfície.
  • Valores finais podem ser arredondados para manter códigos discretos de severidade de mar.

3.3 2.3. Velocidade (speed)

A variável velocidade (speed) é tratada com base em regras físico-operacionais simples, antes de qualquer interpolação:

  • Se a posição não mudou (mesma dec_latitude e dec_longitude do registro anterior), assume-se que o navio está parado e define-se speed = 0.
  • Se o consumo de combustível (consumo) é zero, considera-se o motor desligado, também resultando em speed = 0.
  • Nos demais casos em que a velocidade está ausente, é utilizada interpolação temporal dentro do dia.

Se ainda houver NAs após essas etapas, eles são preenchidos com a mediana de velocidade do navio, garantindo uma série completa e coerente com consumo e trajetória.

3.4 2.4. Temperatura da água

A temperatura da água (temperatura), um dos principais drivers de bioincrustação, é tratada em duas camadas:

  1. Interpolação linear diária, cobrindo falhas pontuais dentro do dia.
  2. Regressão com latitude, usando um modelo linear simples temperatura ~ dec_latitude para estimar lacunas maiores, explorando o gradiente latitudinal (águas tropicais mais quentes, altas latitudes mais frias).

Qualquer valor ainda faltante após essas etapas é substituído pela mediana de temperatura do navio, resultando em uma série contínua e fisicamente plausível ao longo de toda a campanha.

3.5 2.5. Consumo de combustível

O consumo de combustível (consumo) é verificado contra uma regra de consistência física:

  • Registros em que consumo = 0 coincidam com speed > 3 nós são considerados fisicamente impossíveis em operação normal e interpretados como erros de registro.
  • Esses casos são marcados com uma flag (consumo_erro) e corrigidos com um modelo de regressão linear do tipo consumo ~ speed + displacement + beaufort, ajustado apenas em observações com consumo positivo.
  • As previsões do modelo substituem os zeros inválidos e eventuais valores negativos gerados por artefato de regressão são truncados para zero.

Com isso, a série de consumo torna-se compatível com o perfil de velocidade e carregamento, condição necessária para estimar impactos de fouling em eficiência energética.

3.6 2.6. Pontuação de fouling

A coluna pontuacao, que representa um índice de fouling obtido por inspeção visual, apresenta poucos registros preenchidos e caráter subjetivo. Para preservar a integridade dessa informação escassa, optou-se por:

  • Não imputar diretamente a pontuação ausente.
  • Copiar a coluna original para pontuacao_original, preservando os poucos registros existentes.
  • Utilizar esses pontos apenas como âncoras para calibrar um índice físico de fouling, sem preenchimento artificial da série.

4 3. Construção do fouling_index e da pontuacao_estimada

Sobre as séries tratadas, é construído o fouling_index, um índice físico que combina fatores diretamente associados ao acúmulo de bioincrustação:

Esses componentes são agregados em um índice bruto e reescalados para a faixa 0–4, alinhada a escalas de severidade inspiradas em referências como IMO e NORMAM.

Em seguida, é criada a pontuacao_estimada, calibrando o índice físico em relação aos poucos pontos com pontuacao_original disponível:

Em todos os cenários, a pontuacao_estimada é limitada a uma faixa plausível (por exemplo, 0–24), e a coluna pontuacao_original permanece intacta.


5 4. Sumarização diária após o tratamento

Somente depois de concluído todo o tratamento em nível de linha é feita a sumarização por dia. A base já limpa é agregada por data_ref, produzindo um resumo diário (df_dia) que inclui, por exemplo:

Essa camada diária não substitui a base detalhada, mas a complementa, oferecendo uma visão mais compacta e adequada para:


6 5. Saídas do pipeline por navio

Ao final, são salvos dois conjuntos de arquivos para cada navio:

  1. Base tratada em nível de registro
    Contém todas as variáveis operacionais e ambientais com NAs tratados (exceto pontuacao_original, mantida como referência), além de fouling_index e pontuacao_estimada calculados para cada linha temporal.
    Arquivos típicos:
    • df_tratado_fouling_<navio>.rds
    • df_tratado_fouling_<navio>.xlsx
  2. Resumo diário
    Contém as estatísticas agregadas por data_ref, com foco em consumo, operação, ambiente e fouling, prontas para uso em dashboards e modelos.
    Arquivos típicos:
    • df_resumo_diario_<navio>.rds
    • df_resumo_diario_<navio>.xlsx

7 6. Conclusão

O pipeline de tratamento e sumarização por navio garante que:

Este relatório pode ser reutilizado para qualquer navio, bastando ajustar o parâmetro navio_alvo na seção de parâmetros do documento ou ao rodar o Knit com params = list(navio_alvo = "NOME_DO_NAVIO").