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.
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')
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)