Previsão do preço de ações com regressão linear simples

Primeiramente, o que é regressão linear?

Regressão linear é uma técnica estatística usada para modelar a relação entre uma variável dependente (o valor que queremos prever) e uma ou mais variáveis independentes (valores usados na previsão). O objetivo da regressão linear é encontrar uma função linear que melhor se ajuste aos dados observados, de modo a prever ou estimar o valor da variável dependente com base nos valores das variáveis independentes.

Previsão

Usaremos o arquivo .csv com o registro de ações da Vale S.A. do intervalo de 03/01/2022 a 29/12/2022 para treinamento do nosso modelo:

1) Importamos as bibliotecas necessárias e carregamos nossa base de dados.

# Importação das bibliotecas
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression 
from yellowbrick.regressor import ResidualsPlot

# Carregamento da base de dados
base = pd.read_csv('../Data/VALE3.SA.csv', sep = ',')

2) Visualizamos a base de dados:

# Visualização da base de dados
base.head()

Saída:

	Date	        Open	        High	        Low	        Close	        Adj.Close       Volume
0	2022-01-03	79.000000	79.970001	78.000000	78.000000	69.639420	18557200
1	2022-01-04	78.510002	79.070000	76.900002	77.080002	68.818031	18178700
2	2022-01-05	77.370003	78.680000	77.129997	77.809998	69.469780	22039000
3	2022-01-06	78.639999	80.349998	78.309998	79.379997	70.871506	22044100
4	2022-01-07	80.400002	84.000000	79.790001	84.000000	74.996292	35213100
0	2022-01-03	79.000000	79.970001	78.000000	78.000000	69.639420	18557200
1	2022-01-04	78.510002	79.070000	76.900002	77.080002	68.818031	18178700
2	2022-01-05	77.370003	78.680000	77.129997	77.809998	69.469780	22039000
3	2022-01-06	78.639999	80.349998	78.309998	79.379997	70.871506	22044100
4	2022-01-07	80.400002	84.000000	79.790001	84.000000	74.996292	35213100

3) Usaremos as categorias Open e High no nosso modelo, High será nossa variável dependente. Mas antes vamos verificar se existe relação entre as variáveis:

3.1) Gráfico de dispersão:

➜ O gráfico mostra que há linearidade entre as duas variáveis!

3.2)Correlação(R):

# Cálculo da Correlação(R) entre X e Y
# O primeiro e o ultimo valor são os valores de correlação do X e Y para ele mesmo
# O segundo valor e o terceiro valor é a correlação entre X e Y
correlacao = np.corrcoef(X, Y)
correlacao

Saída:

array([[1.        , 0.98775566],
       [0.98775566, 1.        ]])

➜ A Correlação pode assumir valores entre 1 e -1.
➜ Quanto mais próximo de 0, menor é a nossa relação entre as variáveis.
➜ Temos um valor alto e positivo de correlação entre as variáveis!

4) Criação e Treinamento do Modelo:

# O reshape(-1, 1) transforma o vetor em matriz
X = X.reshape(-1, 1)

# Criação do modelo
modelo = LinearRegression()

# Treinamento do modelo
modelo.fit(X, Y)

5) Prevendo o valor de fechamento(Close) da ação no dia 16/06/2023.

5.1) Inserimos o valor de abertura(Open) do dia em questão:

# Previsão de novos valores
modelo.predict([[69.40]])

Saída:

array([69.61309346])

Como avaliar se o nosso modelo é confiável?

1) Coeficiente de correlação ao quadrado(R²):

# O valor de R² é o valor de correlação ao quadrado.
# O quanto o modelo consegue explicar os dados(0 a 100%)
modelo.score(X, Y)

Saída:

0.975661248153673

➜ Esse valor nos diz o quanto o modelo consegue explicar os dados, varia entre 0 e 1. Quanto mais próximo de 1 melhor é o modelo. 

2) Visualização do gráfico de dispersão:

➜ A linha de regressão nos mostra que nosso modelo é bem ajustado aos nossos dados históricos.

3) Gráfico dos valores residuais:

➜ O histograma no canto mostra que nossos resíduos estão normalmente  distribuídos, e é um forte indício de um bom modelo.

Link para o código na integra: Projeto

A regressão não explica tudo!

Embora a regressão linear possa identificar associações entre variáveis, ela não pode estabelecer relações causais definitivas. A existência de uma relação linear não implica necessariamente que uma variável cause a outra.

A regressão linear pressupõe a linearidade, independência dos erros, homocedasticidade (variância constante dos erros), ausência de multicolinearidade e Previsão dentro do intervalo de dados. Se esses pressupostos não forem atendidos, os resultados da regressão linear podem ser inválidos ou imprecisos.

É importante estar ciente dessas limitações ao aplicar a regressão linear e considerar métodos mais avançados ou alternativas quando essas suposições não forem atendidas ou quando se desejar explorar relações mais complexas entre as variáveis.

Comentários

Formulário de contato

Nome

E-mail *

Mensagem *

Minha foto
Gustavo Câmara
Olá, meu nome é Gustavo e sou Analista de Dados, Desenvolvedor, Estudante de Engenharia de Software e apaixonado por tecnologia.

Postagens mais visitadas