Imputação de valores ausentes

Manipulando Dados de Séries Temporais em R

Harrison Brown

Graduate Researcher in Geography

Séries temporais regulares e irregulares

Séries temporais regulares:

  • Sem valores ausentes ou NA
  • Intervalos igualmente espaçados

Desafios do mundo real:

  • Falhas de sensores/equipamentos
  • Condições climáticas
  • ...

Agregação:

  • Reamostra para menor resolução temporal
  • Reduz informação
  • ex.: soma mensal de valores diários

Imputação:

  • Preenche valores ausentes
  • Diferentes métodos para determinar valores
Manipulando Dados de Séries Temporais em R

Imputação

Gráfico de parte do conjunto Mauna Loa. Esta versão tem pontos faltantes, gerando "buracos" ou lacunas na linha. Esses buracos representam valores NA.

Versão com zoom do gráfico anterior de Mauna Loa. As lacunas na linha ficam mais nítidas.

Manipulando Dados de Séries Temporais em R

Imputando valores com zoo

funções na-dot do zoo:

  • zoo::na.fill()

  • zoo::na.locf()

  • zoo::na.approx()

Manipulando Dados de Séries Temporais em R

Identificando valores ausentes

observations
2017-01-01 NA
2017-01-02  2
2017-01-03  2
2017-01-04  2
2017-01-05  4
2017-01-06  2
2017-01-07 NA
2017-01-08  1
2017-01-09  2
2017-01-10  2
...
sum(is.na(observations))
[1] 23
Manipulando Dados de Séries Temporais em R

na.fill

observations
2017-01-01 NA
2017-01-02  2
2017-01-03  2
2017-01-04  2
2017-01-05  4
...
table(observations, useNA = 'ifany')
   1    2    3    4    5    6 <NA> 
  43   29   17   13    1    2   23

Gráfico de uma série temporal fictícia em que o eixo y representa o número de "observações" por dia. Há lacunas entre observações, causadas por valores ausentes (NA).

Manipulando Dados de Séries Temporais em R

na.fill

observations_fill <-
  na.fill(object = observations,
          fill = 0)

table(observations_fill)
 0  1  2  3  4  5  6 
23 43 29 17 13  1  2
autoplot(observations_fill)

Versão "preenchida" do gráfico "Observações diárias" — os valores NA foram substituídos por zero usando o método de Preenchimento Constante.

Manipulando Dados de Séries Temporais em R

na.locf

autoplot(scores)
Warning message:
Removed 12 row(s) containing
missing values (geom_path).

Gráfico da série temporal fictícia "Monthly Test Scores". A linha termina abruptamente, indicando que após certo ponto há valores ausentes (NA). Mostra notas de 2005 a 2008, com tendência de alta. Após 2007, os valores faltam.

scores_locf <- na.locf(scores)
autoplot(scores_locf)

Versão "preenchida" do gráfico "Monthly Test Scores" usando LOCF (Last Observation Carried Forward). Após 2007, os valores são substituídos pelo último valor não-NA.

Manipulando Dados de Séries Temporais em R

Interpolação linear

na.approx()

Slide 1 de uma "animação" mostrando a interpolação linear. A imagem traz um gráfico conceitual, com eixos x e y e valores em uma linha. Há um grande "vazio" entre conjuntos de valores, onde os dados são NA.

Manipulando Dados de Séries Temporais em R

Interpolação linear

na.approx()

Slide 2 de uma "animação" da interpolação linear. A lacuna entre as duas metades é conectada por uma linha vermelha pontilhada, indicando que a interpolação liga os dois valores não-NA mais próximos em cada lado.

Manipulando Dados de Séries Temporais em R

Interpolação linear

na.approx()

Slide 3 de uma "animação" da interpolação linear. A linha vermelha pontilhada é substituída por uma linha preta contínua, indicando que os valores ausentes foram preenchidos por interpolação linear.

Manipulando Dados de Séries Temporais em R

na.approx

maunaloa_approx <-
  na.approx(maunaloa_missing)

autoplot(maunaloa_approx) +
  labs(
    x = "Index",
    y = "CO2 Concentration",
    title = "Approximated Data Points"
  )

Gráfico da série Mauna Loa, onde os valores NA foram "preenchidos" por interpolação linear. É quase impossível ver onde faltavam valores, indicando a precisão do método.

Manipulando Dados de Séries Temporais em R

Vamos praticar!

Manipulando Dados de Séries Temporais em R

Preparing Video For Download...