As empresas dependem da previsão de tendências futuras para tomar decisões estratégicas, como prever vendas de produtos ou avaliar a variação da demanda. Uma maneira de fazer previsões eficazes é a previsão de séries temporais. Um princípio básico da previsão de séries temporais é que ela depende dos valores históricos dos dados para prever resultados futuros. Isso exige atenção aos dados, já que os dados práticos tendem a ser ruidosos ou estar incompletos, sendo, portanto, difíceis de prever.
Embora existam várias ferramentas para previsão de séries temporais, o Facebook Prophet foi feito especialmente para lidar com as complexidades do mundo real, que vão desde tendências não lineares e sazonalidade até o impacto de eventos especiais, como feriados, campanhas de marketing ou picos de tráfego. Se você não conhece nada sobre previsão de séries temporais, recomendo fazer nosso curso Análise de séries temporais em Python e/ou nosso curso Previsão em R.
O que é o Facebook Prophet?
O Prophet é uma biblioteca de previsão de código aberto desenvolvida pela equipe de Ciência de Dados do Facebook. Está disponível tanto em Python quanto em R. Parte do motivo pelo qual analistas e cientistas de dados gostam de usá-lo é que ele automatiza muitas das etapas rotineiras dos métodos tradicionais de previsão. Com essa flexibilidade, ajuda os usuários a fazer previsões interpretáveis e boas rapidinho.
Estrutura de modelagem central do Facebook Prophet
A abordagem de modelagem do Facebook Prophet é estruturada, masflexível. Ele divide uma série temporal em quatro partes principais, que são: tendência, sazonalidade, feriados e erro. Esse terceiro componente, que eu chamei de feriados, não é tão comum. A decomposição clássica e STL especificam três partes: tendência, sazonalidade e erro.
Ao esclarecer como as tendências, a sazonalidade e os feriados contribuem para a previsão final, a decomposição ajuda a validar o raciocínio do modelo enquanto tentamos tomar decisões informadas.
Decomposição de séries temporais
O Prophet usa um modelo aditivo em que a série temporal y(t) é expressa como:
Onde,
-
A tendência (
g(t)) é para crescimento ou declínio a longo prazo. -
A sazonalidade (
s(t)) inclui padrões recorrentes, como flutuações semanais, mensais ou anuais. -
Os efeitos dos feriados (
h(t)) são eventos que não são regulares, mas dá pra prever, tipo a Black Friday ou feriados nacionais. -
Erro (
et) é o ruído residual que não é explicado pelos outros componentes.
Além de ajudar a entender o que está por trás das previsões, também automatiza a maior parte do processo de previsão de séries temporais, como detectar sazonalidade e lidar com valores que faltam.
Ao lidar com essas operações complexas de pré-processamento, o Prophet facilita a necessidade de um vasto conhecimento estatístico, como é frequentemente exigido nos métodos estatísticos convencionais. O ARIMA, por exemplo, precisa que as suposições de estacionariedade sejam válidas e não leva em conta oficialmente fatores externos, enquanto o Prophet modela explicitamente a sazonalidade e os impactos dos feriados, por isso é considerado mais fácil para previsões comerciais.
Especificação do componente de tendência
O Prophet tem dois modelos de tendências:
- O modelo de crescimento logístico é útil quando uma série temporal chega ao limite, tipo o que rola com a adoção de um novo aplicativo pelos usuários.
- O modelo linear por partes divide a tendência em segmentos com pontos de mudança, o que facilita modelar mudanças repentinas no crescimento.
Modelagem de sazonalidade
A sazonalidade é modelada usando uma série de Fourier que permite funções periódicas suaves em dados de séries temporais. Tem duas formas principais de comportamento sazonal:
- A sazonalidade aditiva é necessária quando as variações sazonais permanecem consistentes em magnitude ao longo do tempo.
- A sazonalidade multiplicativa é legal quando as flutuações sazonais crescem junto com a tendência, tipo o volume de vendas aumentando com o crescimento geral do mercado.
Além disso, os usuários também podem definir sazonalidades personalizadas para representar padrões exclusivos e específicos do domínio, por exemplo, promoções trimestrais.
Integração de feriados e eventos
O Prophet também dá a chance de incluir feriados pré-definidos e listas de eventos que você mesmo escolher. Isso é super útil quando a gente tá modelando ciclos econômicos, feriados culturais ou eventos únicos, tipo lançamentos de produtos. Também dá pra adicionar eventos inesperados, tipo a COVID-19, como regressores extras pra atualizar as previsões de forma dinâmica. A modelagem explícita desses eventos melhora a precisão e dá uma ideia do impacto de datas especiais nas tendências subjacentes.
Lidando com ruídos e valores atípicos
Os dados do mundo real geralmente têm ruído e valores atípicos, o que pode fazer com que as previsões do modelo fiquem distorcidas. O Prophet tem funções de perda robustas e componentes de tendência não paramétricos que tornam a previsão mais resistente a valores atípicos nos dados.
Para melhorar ainda mais a estabilidade da previsão, é útil analisar gráficos residuais e pré-processar os dados por meio de winsorização ou remoção de anomalias. Essas etapas garantem que o modelo aprenda as tendências reais, em vez de ruídos aleatórios.
Quando usar o Facebook Prophet (e quando não usar)
Como a maioria dos modelos e técnicas de machine learning, o Prophet não é uma solução única para todos. Entender onde ele se destaca e onde não se destaca é fundamental para usá-lo de forma eficaz.
Pontos fortes e cenários ideais
O Profeta é especialmente bom quando:
- Quando os dados têm uma sazonalidade clara diária, semanal ou anual.
- Os conjuntos de dados estão incompletos e precisam de um tratamento automático dos valores que faltam e dos valores atípicos.
- Os usuários precisam de uma análise exploratória rápida e do desenvolvimento inicial do modelo.
Sua simplicidade torna-o acessível a usuários com conhecimentos estatísticos limitados, enquanto sua interpretabilidade ajuda analistas e cientistas de dados a comunicar os resultados de forma eficaz a partes interessadas sem conhecimentos técnicos.
Limitações e possíveis problemas
O Prophet pode não ser tão legal nos seguintes cenários:
- Dados super voláteis ou não sazonais, onde não tem padrões periódicos regulares.
- Previsões de longo prazo quando as tendências são imprevisíveis.
- As tendências não lineares não são capturadas pelos modelos lineares por partes ou logísticos.
Uma regra de ouro ao usar o Prophet, ou qualquer modelo de previsão, é evitar adotá-lo cegamente. Sem uma validação adequada, os modelos podem facilmente produzir previsões exageradas ou enganosas, como também se vê em várias discussões da comunidade e em falhas de previsão de grande repercussão.
Trabalhando com o Prophet em Python
Passo 1: Importar bibliotecas
Primeiro, carregue todos os pacotes Python necessários:
-
pandaspara manipulação de dados -
prophetpara criar o modelo de previsão -
matplotlibpara visualização -
sklearn.metrics– para calcular o MAPE, a métrica de erro
import pandas as pd
from prophet import Prophet
import matplotlib.pyplot as plt
from sklearn.metrics import mean_absolute_percentage_error
Passo 2: Carregue o conjunto de dados
Depois, a gente lê nosso arquivo CSV com os preços históricos dos futuros do ouro. Aqui tá olink pro conjunto de dados do Kaggle que tô usando.
file_path = "future-gc00-daily-prices.csv"
gold_ts = pd.read_csv(file_path)
Passo 3: Limpe os dados
Agora, precisamos limpar os dados. Isso quer dizer que a gente:
-
Tira as vírgulas das colunas numéricas e transforma-as em números flutuantes.
-
Converta a coluna “
Date” do formato string para datetime.
Isso garante que o Prophet possa entender e ordenar as datas corretamente.
for col in ["Open", "High", "Low", "Close"]:
gold_ts[col] = gold_ts[col].str.replace(",", "").astype(float)
gold_ts["Date"] = pd.to_datetime(gold_ts["Date"], format="%m/%d/%Y")
Passo 4: Organizar os dados por data
Organizamos os dados em ordem cronológica. Esse é um passo importante que pode passar despercebido.
gold_ts = gold_ts.sort_values("Date")
Passo 5: Prepare os dados para o Prophet
Também precisamos preparar os dados para o Prophet, que espera que suas colunas de entrada sejam nomeadas:
-
ds→ carimbo de data -
y→ valor a prever (aqui, o preçoClose)
gold_ts = gold_ts[["Date", "Close"]].rename(columns={"Date": "ds", "Close": "y"})
Passo 6: Dividido em conjuntos de treinamento e teste
Agora vamos dividir os dados em versões de treinamento e teste.
- Guarde a maior parte dos dados para treinamento.
- Reserve as últimas 180 linhas (ou 10%, se forem menos) para testar a precisão do modelo.
test_size = min(180, len(gold_ts) // 10)
train = gold_ts.iloc[:-test_size]
test = gold_ts.iloc[-test_size:]
Passo 7: Ajuste o modelo Prophet
Treine o Prophet com os dados históricos, ativando os componentes sazonais diários e anuais.
model = Prophet(daily_seasonality=True, yearly_seasonality=True)
model.fit(train)
Passo 8: Prever valores futuros
A gente faz previsões para o mesmo número de dias que no conjunto de testes.
A previsão tem colunas como “ yhat ” (previsão), “ yhat_lower ” (previsão) e “ yhat_upper ” (previsão).
future = model.make_future_dataframe(periods=test_size)
forecast = model.predict(future)
Passo 9: Alinhe as previsões com os resultados reais
Junte os preços de fechamento reais com as previsões do modelo nas datas correspondentes para comparar diretamente.
merged = pd.merge(test, forecast[["ds", "yhat"]], on="ds", how="inner")
Passo 10: Calcular MAPE
Agora vamos ver se a previsão está certa. Se não tiver sobreposição de datas, ele avisa você em vez de travar.
if merged.empty:
print("No overlapping dates between forecast and test set.")
else:
mape = mean_absolute_percentage_error(merged["y"], merged["yhat"]) * 100
print(f"Mean Absolute Percentage Error (MAPE): {mape:.2f}%")
Aqui, o erro percentual absoluto médio (MAPE): 5,83%
Passo 11: Trace a previsão
A gente visualiza a previsão, os intervalos de confiança e o histórico real.
fig1 = model.plot(forecast)
plt.title("Gold Futures (GC00) - Close Price Forecast")
plt.xlabel("Date")
plt.ylabel("Close Price")
plt.show()

Passo 12: Plotagem de componentes sazonais
É útil mostrar como os padrões de tendência, diários e sazonais anuais contribuem para a previsão.
fig2 = model.plot_components(forecast)
plt.show()

Passo 13: Dá uma olhada nas amostras de previsão
Mostre os últimos valores previstos e suas faixas de incerteza.
print(forecast[["ds", "yhat", "yhat_lower", "yhat_upper"]].tail(10))
Exemplos de valores previstos:
ds yhat yhat_lower yhat_upper
3714 2023-11-09 1834.568081 1743.127873 1922.791205
3715 2023-11-10 1833.323500 1749.265678 1937.246093
3716 2023-11-11 1832.818196 1740.941278 1921.772611
3717 2023-11-12 1832.370884 1745.285047 1925.012684
3718 2023-11-13 1832.644350 1736.792708 1919.057042
3719 2023-11-14 1832.017761 1736.229502 1929.786669
3720 2023-11-15 1831.650906 1743.190077 1924.851936
3721 2023-11-16 1831.566521 1738.181184 1933.026740
3722 2023-11-17 1830.427713 1736.038529 1919.505155
3723 2023-11-18 1830.029816 1737.022754 1922.118728
Validando e testando o Facebook Prophet
Como validar
A validação cruzada de séries temporais é necessária para simular cenários de previsão do mundo real. É importante avaliar o desempenho do modelo em vários conjuntos de validação consecutivos. Isso não só ajuda a evitar o viés de antecipação, mas também dá uma generalização para dados futuros que ainda não vimos.
Algumas das métricas de avaliação padrão incluem:
- O erro absoluto médio (MAE) mede a magnitude média dos erros, sem se importar com a direção.
- O erro percentual absoluto médio (MAPE) mede a diferença percentual absoluta média. É fácil de entender em diferentes escalas. Este é o que vimos no nosso exemplo em Python.
Análise comparativa
Comparado com ARIMA ou LSTM, o Prophet é bom em:
- Lidando com sazonalidade irregular e efeitos de feriados
- Mostrando que é resistente a dados faltando, valores fora do normal e irregularidades nos negócios
Mas, o Prophet pode não funcionar tão bem em situações que envolvem padrões bem não lineares ou conjuntos de dados com sazonalidade fraca.
Aplicações práticas e limitações
Estudos de caso reais
O Prophet tem sido muito usado em vários setores para casos de uso como:
- Previsão de vendas no varejo, avaliação da demanda e gerenciamento de estoque
- Previsão do tráfego na web para entender o engajamento do usuário
- Previsão da demanda de energia para equilibrar o fornecimento e o consumo de forma eficiente.
Apesar dos benefícios, já rolou casos em que os padrões históricos não funcionaram por causa de interrupções inesperadas, como foi o caso durante a pandemia.
Limitações de escalabilidade
O Prophet consegue lidar com conjuntos de dados moderadamente grandes, o que é adequado para a maioria das tarefas de previsão comercial e operacional. Mas, usar isso com conjuntos de dados muito grandes ou séries temporais de alta frequência é bem caro em termos de computação, por causa da estrutura de modelagem bayesiana que está por trás. Para amenizar isso, dá pra fazer previsões de várias séries temporais ao mesmo tempo. Outra abordagem prática é juntar ou reduzir a amostragem dos dados. Reduz os custos de memória e tempo de execução sem perder padrões temporais valiosos.
Principais limitações
O Prophet assume uma única variável-alvo e modela sua tendência usando curvas de crescimento lineares ou logísticas por partes. Essas suposições podem limitar sua flexibilidade para problemas multivariados ou não dominados por tendências. Então, os usuários precisam adicionar conhecimento do domínio às previsões do Prophet, junto com validação externa, pra garantir a confiabilidade.
Falhas e críticas do mundo real
Falhas de previsão de alto perfil, como o colapso do mercado imobiliário da Zillow, mostram os riscos de confiar demais em softwares de previsão automáticos. Confiar demais nos resultados dos modelos sem nenhuma revisão humana pode levar a erros caros. Por isso, é bom fazer uma validação completa e planejar cenários ao interpretar os resultados das previsões.
Não hesite em questionar todos os modelos e tendências. Crie uma cultura que incentive o pensamento crítico e permita que as equipes questionem o que está rolando. Já vi equipes assim criarem soluções de previsão bem robustas de forma consistente.
Por fim, recomendo muito adotar uma mentalidade de “confiar, mas verificar” e adicionar uma camada extra do seu conhecimento sobre o assunto para fazer uma verificação de sanidade nos resultados.
Trajetória de desenvolvimento futuro
O Prophet continua evoluindo por meio de pesquisas e contribuições da comunidade. As melhorias contínuas no Prophet incluem:
- Suporte multivariável
- Maior escalabilidade para grandes conjuntos de dados
- Extensões criadas pela comunidade
A pesquisa ativa envolve integrar novos métodos estatísticos e melhorar o desempenho em conjuntos de dados complexos e de alta frequência.
Conclusão
O Facebook Prophet é uma ferramenta poderosa para previsão de séries temporais, oferecendo automação, interpretabilidade e flexibilidade. Tem um bom desempenho em previsões exploratórias em negócios e outros domínios com forte sazonalidade ou eventos especiais.
Mas isso não significa que seja uma solução pronta para usar. Para fazer previsões confiáveis, os usuários precisam garantir uma validação cuidadosa, ajuste de parâmetros e conhecimento do domínio. Ao equilibrar a automação do Prophet com o julgamento humano cuidadoso, os analistas podem desenvolver insights acionáveis e evitar armadilhas comuns.
Para um aprendizado prático, dê uma olhada nos nossos cursos e programas de habilidades:
- Curso de machine learning para Dados de Séries Temporais em Python
- Série temporal em Python - programa de habilidades
- Curso de Análise de Séries Temporais em R

Transformador de dados e estrategista de IA | Palestrante internacional | Ético em IA | Inventor | Mulher de sucesso global | Autor
Perguntas frequentes
Pra que serve o Facebook Prophet?
O Facebook Prophet é usado para previsão de séries temporais, ajudando a prever tendências, sazonalidade e efeitos de eventos em dados como vendas, demanda ou tráfego na web.
Como o Prophet lida com feriados e eventos especiais?
O Prophet permite adicionar eventos pré-definidos ou personalizados ao modelo, que levam em conta picos ou quedas irregulares na série temporal.
Por que o Prophet é tão popular pra previsões de negócios?
O Prophet é automatizado, fácil de entender e resistente a dados faltando e valores atípicos, o que o torna ideal para previsões rápidas e confiáveis.
Quando é que se deve evitar usar o Facebook Prophet?
É possível evitar o Prophet para dados altamente voláteis ou não sazonais, ou quando as tendências são muito imprevisíveis.
Quais são as principais vantagens do Prophet em relação ao ARIMA?
Diferente do ARIMA, o Prophet não precisa de estacionariedade rígida, lida com dados faltando e detecta automaticamente pontos de mudança.



