Tag

análise ações Archives - Análise Macro

Lidando com Missing Values em Séries Financeiras

By | mercado financeiro

Podemos dizer que um fato é certeiro na vida de todo Cientista de Dados: encontrar Missing Values. A vida de quem trabalha com finanças também não é diferente, sendo comum encontrar séries financeiras com dados faltantes. Neste post, iremos mostrar como podemos lidar com este problema.

library(quantmod)
library(zoo)
library(knitr)
library(magrittr)
library(timetk)

Vamos aqui trabalhar com a série de preços da MGLU3. Podemos ver através do gráfico que há um NA faltante no dia 26 de fevereiro de 2020.

getSymbols("MGLU3.SA",
                     auto.assign = TRUE,
                     from = "2020-01-01",
                     to = "2020-12-31")

plot(Ad(MGLU3.SA))

Podemos utilizar a função window() para visualizar detalhadamente a data em que nossa série de preços possui dados faltantes.

mglu_na <- window(Ad(MGLU3.SA), 
       start = "2020-02-18",
       end = "2020-03-02")

Agora iremos trabalhar em como podemos lidar com esse NA.

A primeira forma será utilizando a função na.locf(), do pacote {zoo}. Ela permite que o último valor, anterior ao NA, seja repetido para que seja feito esse preenchimento.

na.locf(mglu_na) %>% 
  tk_tbl(preserve_index = TRUE,
         rename_index = "date") %>% 
  kable()

É possível também utilizar o valor adiante ao NA, passando o argumento fromLast = TRUE na função na.locf().

na.locf(mglu_na, fromLast = TRUE) %>% 
  tk_tbl(preserve_index = TRUE,
         rename_index = "date") %>% 
  kable()

Outra forma de resolver o problema, pode ser preenchendo o dado faltante de forma manual, com a função na.fill(), passando no argumento fill o valor desejado.

na.fill(mglu_na, fill = 13) %>% 
  tk_tbl(preserve_index = TRUE,
         rename_index = "date") %>% 
  kable()

Pode-se utilizar a função na.omit() para que o valor seja simplesmente retirado da série de preços.

na.omit(mglu_na) %>% 
  tk_tbl(preserve_index = TRUE,
         rename_index = "date") %>% 
  kable()

Por fim, uma forma interessante é utilizar a função na.approx() do pacote {zoo}. A função realiza uma interpolação linear para preencher o valor faltante.

na.approx(mglu_na) %>% 
tk_tbl(preserve_index = TRUE,
         rename_index = "date") %>% 
  kable()

plot(na.approx(Ad(MGLU3.SA)))

________________________

(*) Para entender mais sobre Mercado Financeiro e aprender como realizar a coleta, tratamento e visualização de dados financeiros, confira nosso curso de R para o Mercado Financeiro.

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais
e conteúdos exclusivos sobre Análise de Dados!

Assinar Gratuitamente