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
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
Postar um comentário