Econometria - Regressão Linear

Visualização dos dados de uma regressão - R

May 21, 2022 · 7 mins read

Visualização de regressão linear

A EDA (Exploratory Data Analysis) é essencial para “materializar” os dados que estamos trabalhando para o leitor. O artigo de hoje é justamente para a visualização de dados em uma Regressão Linear múltipla.

Regressão

Equação de uma regressão linear múltipla

## Bibliotecas utilizadas
library(ggside)
library(ggplot2)
library(tidyverse)
library(tidymodels)
library(tidyquant)
library(readxl)
library(performance)

Caso alguma biblioteca não esteja instalada, você utilizar o código abaixo:

install.packages(“biblioteca”)

Para a regressão utilizamos duas séries temporais, os histórico do índice Ibovespa e o índice S&P 500, ambos com histórico de 3 anos.

O preço é uma função dos retornos, neste sentido é lógico pensar em fazer a regressão entre as duas séries utilizando os retornos ao invés do valor absoluto do índice. Portanto vamos tratar os dados removendo os valores nulos e calcular os retornos.

## Importando dados
df <- read_excel('economatica.xlsx', skip = 3)
names(df) <- c('Data', 'Ibov', 'Sp500', 'Dolar') ## renomeando colunas

df <- df %>%
  transform(Ibov = as.numeric(Ibov),
            Sp500 = as.numeric(Sp500),
            Dolar = as.numeric(Dolar)) %>%
  na.omit(df) ## Removendo valores nulos

## Calculando os retornos
df <- df %>%
  mutate(Ibov_ret = (Ibov/lag(Ibov)-1)*100,
         Sp500_ret = (Sp500/lag(Sp500)-1)*100,
         Dolar_ret = (Dolar/lag(Dolar)-1)*100)

Podemos agora plotar o gráfico de dispersão entre as duas séries.

df %>%
  ggplot(aes(x = Ibov_ret, y = Sp500_ret))+
  geom_point(size = 2, alpha = 0.30, position = 'jitter')+
  stat_smooth(method = 'lm', color = 'black')+
  geom_xsidedensity(aes(y = after_stat(density), fill = 'Ibov'),
                   alpha = 1.5,
                   size = 1,
                   position = 'stack')+
  geom_ysidedensity(aes(x = after_stat(density), fill = 'Sp500'),
                    alpha = 1.5,
                    size = 1,
                    position = 'stack')+
  scale_color_tq()+
  scale_fill_tq()+
  theme_tq()+
  theme(ggside.panel.scale.x = 0.4,
        ggside.panel.scale.y = 0.4)+
  labs(title = 'Ibovespa x S&P 500',
       subtitle = 'Retornos diários',
       x = 'Ibovespa',
       y = 'S&P 500', caption = 'Fonte: Economatica.  Elaboração própria')

df %>%
  ggplot(aes(x = Ibov_ret, y = Dolar_ret))+
  geom_point(size = 2, alpha = 0.30, position = 'jitter')+
  stat_smooth(method = 'lm', color = 'black')+
  geom_xsidedensity(aes(y = after_stat(density), fill = 'Ibov'),
                   alpha = 1.5,
                   size = 1,
                   position = 'stack')+
  geom_ysidedensity(aes(x = after_stat(density), fill = 'Dólar'),
                    alpha = 1.5,
                    size = 1,
                    position = 'stack')+
  scale_color_tq()+
  scale_fill_tq()+
  theme_tq()+
  theme(ggside.panel.scale.x = 0.4,
        ggside.panel.scale.y = 0.4)+
  labs(title = 'Ibovespa x Dólar',
       subtitle = 'Retornos diários',
       x = 'Ibovespa',
       y = 'Dólar', caption = 'Fonte: Economatica.  Elaboração própria')

Gráfico Gráfico

Agora podemos de fato rodar uma regressão entre as duas variáveis.

model_ln <- linear_reg() %>%
  set_engine('lm') %>%
  fit(Ibov_ret~Sp500_ret+Dolar_ret, data = df)

check_model(model_ln)

Análise