Aqui terá um pouco sobre Time Series Forecasting , onde terá previsões do futuro em conjunto com aprendizado de maquina com series temporais, com objetivos de obter previsões mais precisas.
Series temporais são sequenciais e se correlacionam com os dados vizinhos, dias anteriores,
Objetivo series temporais:
- podem ser para verificar padrões como sazonalidade, tendências, outliers (a principio não remover outliers em series temporais) (valores discrepantes).
- prever o futuro (tentar prever o futuro) dos comportamentos das variáveis conforme os valores daquela serie.
- Pode tambem com a previsão de uma serie, tentar entender em conjunto com outra serie temporal e verificar se uma tem influência sobre a outra. Variação multivariada.
Iniciando Series temporais com modelo de regressão linear.
Vou utilizar o dataset do Kaggle de vendas de café. (https://www.kaggle.com/datasets/ihelon/coffee-sales).
Detalhes dos modelos de regressão linear estão descritos em outro post, mas em resumo o modelo aprende como fazer a soma ponderada a partir das observações de entradas. Onde no treino o modelo de regressão aprende os valores para os pesos e tendencias (fit) que mais se ajusta ao alvo (o modelo de regressão linear costuma ser chamado de mínimos quadrados ordinários, pois escolhe valores que minimizam o erro quadrático entre o alvo e as previsões.).
Os pesos para cada entrada, tambem podem ser chamados de coeficiente de regressão (regression coefficients) e o viés (bias) tembém pode ser chamado de intercept (interceptação), pois mostra onde o gráfico desta função cruza o eixo y.
Exemplo do algoritmo de regressão linear, com 2 entradas (feature) e seus pesos (weight):
target = weight_1 * feature_1 + weight_2 * feature_2 + bias
Steps: existem dois tipos de Time Step, de tempo e de atraso, onde o de tempo derivam do time index, o mais básico time index é um indice do inicio da Serie até o Fim:

Regressão Linear com tempo:
target = weight * time + bias
A Regressão de tempo nos permite ajustar curvas a séries temporais em um gráfico temporal, onde o Tempo forma o eixo x.

Os time-steps feature permitem modelar a dependência do tempo. Uma série depende do tempo se seus valores puderem ser previstos a partir do momento em que ocorreram. Acima é uma serie de vendas, podemos verificar teve um aumento nas vendas durante o ano.
Lag features
Para criar uma característica de atraso, deslocamos as observações da série alvo para que pareçam ter ocorrido mais tarde no tempo. Aqui criamos um recurso de atraso de 1 etapa, embora também seja possível mudar em várias etapas.
Uma série temporal tem dependência serial quando uma observação pode ser prevista a partir de observações anteriores.

Regressão linear com feature de Lag:
target = weight * lag + bias
Abaixo o gráfico de Lag, onde cada observação da série é plotada em relação à observação anterior.

Vemos no gráfico de Lag, que as vendas de Coffee estão correlacionadas com as vendas do dia anterior, com isso vemos que o Lag será útil para nós. Tendência linear crescente: conforme o valor de Lag_1 aumenta, o valor de coffee_sales_count também tende a aumentar.
Com isso vemos que tem dependência serial na série, pois vimos acima que a observação pode ser prevista a partir de observações anteriores. No exemplo acima vemos que podemos prever que vendas altas em 1 dia, significam vendas altas no próximo dia.
Abaixo uma previsao baseado no Lag das vendas de coffee:

Os melhores modelos de séries temporais geralmente foram adicionados alguma combinação de recursos de tempo (step features) e recursos de atraso (Lag features).
Tendências:
Em uma serie temporal a tendência pode ser de crescimento ou decrescente, mostra alguma tendência no tempo.

Site: https://labdge.uff.br/analise-de-series-temporais/ – acesso 28 de março de 2025.
Residuos:
O que não consigo explicar com a tendência e a sazonalidade. Normalmente sempre aparecem resíduos e normalmente o plot espera-se a não demonstrar padrão.
Não excluir os resíduos, primeiro compreender, talvez teve falha na coleta, algo assim.
Tipo de modelo:
- Multiplicativo: vai até o valor 1.
Sazonalidade:
Existem funções que automaticamente identificam o intervalo da sazonalidade, se é 1 semana, mês, ano. No índice, recomendado que o datatype do índice seja DatetimeIndex, há outras alternativas caso o índice não seja DatetimeIndex.
Normalmente verifica a média da sazonalidade para ter um modelo mais geral possível. Em caso de ter 1 mês atípico, então se pega 12 safras/referencias/cohort
Recursos para modelar Sazonalidade:
- Modela sazonalidade com poucas observações, como observações diárias com historico de 1 semana, como One-hot encoding por semana.
- Recurso de Fourier : para observações maiores, como historico de 1 ano com coleta a cada 1 hora.
Suavização:
Cada média movel será um “nova” serie, acaba descacterizando os dados, quando usar? exemplo juntar 2 series uma semanal e outra diária, transformar a diária com a média móvel para semanal.
Média Movel Simples:
A média móvel ajuda a entender o comportamento da serie, exemplo pega a soma das 7 ultimas observações e vai construindo uma nova série das médias móveis.
Média móvel nada mais é do que a média aritmética das r ultimas observações.

Janela deslizante “rolling().mean” vai calcular a media a cada 6 linhas (pode ser outra medida, como a mediana):
Tambem podemos verificar o tipo de tendência, no caso linear.

DeterministicProcess
Recursos derivados do índice de tempo geralmente serão determinísticos, não serão aleatórios.
O argumento de ordem se refere à ordem polinomial: 1 para linear, 2 para quadrático, 3 para cúbico e assim por diante.


Na figura acima vemos que a previsão com regressão ficou bem parecida com a média móvel, ou seja, sugere que uma tendência linear foi a decisão certa neste caso.
Forecasting de 3 Meses (datetimeindex esta com frequencia/periodo Mensal) – Vendas de café com Regressão Linear:

Média Móvel Exponencialmente ponderada (MMEP):
Pelo calculo, na MMEP acaba dando pesos diferentes para observação anterior, ela não suaviza tanto quanto a média móvel simples. Diferente da média móvel que é aritmética, a exponencial é ponderada.
passageiros['MMEP12'] = passageiros['Milhares de passageiros'].ewm(span=12,adjust=False).mean()
OBS: Média Móvel Simples e Média Móvel Exponencialmente Ponderada não são utilizadas para fazer predição.
Dados Multivariados:
# US Change 1970 a 2016
# Fontes:
# Hyndman, Rob J., and George Athanasopoulos. Forecasting: principles and practice. OTexts, 2018.
# Dados disponíveis em https://github.com/robjhyndman/fpp2-package e
# https://github.com/cibelerusso/Aprendizado-Dinamico/tree/main/Data
# Percentage changes in quarterly personal consumption expenditure, personal disposable income, production, savings and the unemployment rate for the US, 1960 to 2016.
uschange = pd.read_csv('https://raw.githubusercontent.com/cibelerusso/Aprendizado-Dinamico/main/Data/uschange.csv', index_col=0,
parse_dates=True)
uschange.index = uschange.index.to_period("Q")
uschange.plot(figsize=(12,6));

A principio o que observamos na serie acima, é que o Savings parece não ter uma tendência ao longo do tempo, porem a variância aumenta no Savings, a variância aumenta comparados a períodos anteriores, aplica-se o conceito da média e variância da Serie temporal ao longo do tempo, os Savings parece que a média não aumenta muito, pois não aumenta a linha vermelha, mas a variabilidade dos dados parece aumentar.
Outros exemplos de dados que não tem uma sazonalidade mais marcada , mas vemos um tendência de altos e depois baixos, no final, é do dataset das ações da Starbucks, como segue abaixo, tem modelos específicos para esse tipo de dados, normalmente dados de ações, financeiros, modelos GARCH, que são modeloas autoregressivos que modelam a Heterocedasticidade, a volatilidade, são modelos mais avançados:

Fonte: https://tradingcomdados.com/conteudo/artigos/8-blog/43-analise-de-serie-temporal-e-normalizacao-a-100-de-acoes-usando-python, acesso em 13 dezembro de 2024.
Métodos para fazer previsão:
(Abaixo Métodos Suavização de Holt e Holt-Winters)
Método de Holt: só faz previsão da tendência, não leva em conta a sazonalidade.
Parecido com MMEP, com uma nova constante para modelar a tendência.
Podemos estimar a tendência e a sazonalidade, assim já temos a previsão.

Onde Zt é a serie, ut é o nível (média), Tt é a tendencia e at o ruído.
Onde temos 2 constantes, segue abaixo, do Nível(média) e da Tendência. Onde A e C são constantes de suavização.

Método de Holt-Winters: Essa já vai faze a previsão/estimar, o Nível (média), a Tendência e a Sazonalidade.
Serão 3 algoritmos, Ft é o Sazonalidade, Zt vai estimar a Nível e Tt vai estimar a Tendência:

O Holt-Winters tem o método multiplicativo e o aditivo.