Pular para o conteúdo principal

Regressão spline: um guia prático com Python e R

Um guia prático sobre regressão spline, cobrindo como polinômios por partes e nós modelam relações não lineares, os principais tipos de spline e como ajustá-los em Python e R.
Atualizado 15 de jun. de 2026  · 15 min lido

Explorar com IA

Abrir no ChatGPTAbrir no ClaudeAbrir no Perplexity

Ajustar uma linha reta a dados que fazem curva nunca é uma boa ideia.

A regressão linear assume que a relação entre seus preditores e o alvo é uma linha reta. Infelizmente, a maioria das relações do mundo real não é assim. Pense em renda e gastos, ou tempo e crescimento — elas entortam, estabilizam, entortam de novo e mudam de direção de formas que não cabem em uma única inclinação.

A regressão spline resolve isso permitindo que a relação entorte onde for preciso, sem ajustar uma curva maluca e sem controle. A ideia é ajustar vários trechos polinomiais suaves ao longo do domínio do preditor e uni-los em pontos específicos.

Neste artigo, você vai aprender os conceitos essenciais por trás da regressão spline, como os nós controlam a flexibilidade, os principais tipos de spline e como aplicá-los na prática.

Antes de mergulhar em splines, confira nosso tutorial que ensina tudo o que você precisa saber sobre regressão linear simples.

O que é regressão spline?

Regressão spline é uma técnica de regressão que modela relações não lineares usando funções polinomiais por partes unidas em pontos específicos chamados nós.

Em vez de criar uma única equação para descrever toda a relação, a regressão spline divide o domínio do preditor em pedaços menores e ajusta um polinômio separado em cada pedaço. Esses trechos se encontram nos nós, e restrições garantem transições suaves.

O resultado final fica entre dois extremos. É mais flexível que a regressão linear, que só consegue traçar uma linha reta pelos seus dados. E é mais estruturado que modelos não lineares totalmente sem restrições, como redes neurais profundas ou métodos de kernel, que ajustam quase qualquer coisa, mas explicam muito pouco sobre o que foi ajustado.

Por isso, splines aparecem com tanta frequência na estatística aplicada.

Por que precisamos de regressão spline

Dados reais quase nunca seguem uma linha reta.

A regressão linear é o ponto de partida padrão para modelar relações, mas traz uma suposição forte: o efeito de um preditor no desfecho permanece constante ao longo do domínio. Quando a relação real faz curva ou muda de direção, uma linha reta vai subajustar. Você terá erros nos extremos e um modelo que não acompanha o padrão.

A solução é usar um modelo mais flexível. Regressão polinomial de alto grau é uma opção — você adiciona x^2, x^3, x^4 até a curva entortar o suficiente para casar com seus dados. Mas polinômios ficam instáveis nas bordas, disparando para cima ou para baixo onde há poucos pontos. Esse comportamento é o fenômeno de Runge, e torna polinômios de alto grau arriscados para previsão.

A regressão spline fica entre esses dois extremos.

Você ganha flexibilidade local onde os dados entortam, sem a instabilidade global de um único polinômio de alto grau. Cada trecho é um polinômio de baixo grau (geralmente cúbico), então nenhuma parte isolada pode se comportar de forma inesperada. E como os trechos são conectados suavemente nos nós, a curva geral ainda parece uma função contínua única.

Em resumo, uma spline oferece flexibilidade suficiente para seguir padrões complexos e estrutura suficiente para se comportar bem nos extremos.

Como a regressão spline funciona

A regressão spline segue sempre um fluxo simples em três etapas.

  1. Divida o domínio do preditor em regiões: você escolhe um conjunto de nós ao longo do eixo do preditor. Esses nós dividem o domínio em intervalos. Se você colocar três nós, terá quatro regiões. Os nós são os limites entre os segmentos.
  2. Ajuste um polinômio em cada região: dentro de cada intervalo, o modelo ajusta um polinômio de baixo grau. Cada região tem seus próprios coeficientes, permitindo que a curva entorte de forma diferente em partes distintas do domínio. Onde a relação é quase plana, o polinômio fica quase plano. Onde a relação curva mais, o polinômio fica mais curvo.
  3. Conecte as regiões: o modelo impõe restrições de continuidade em cada nó. Os valores dos dois lados precisam coincidir no nó, evitando saltos. Para splines cúbicas, as primeiras e segundas derivadas também precisam coincidir, o que evita cantos vivos e mudanças bruscas de curvatura.

Essas restrições dão às splines a aparência de uma curva única e suave, que entorta localmente, mas flui continuamente por todo o domínio do preditor. Visualmente, não dá para notar onde um polinômio termina e o próximo começa.

Os nós, o grau do polinômio e as restrições de continuidade definem a spline. Se você alterar qualquer um deles, terá um tipo diferente de spline com propriedades distintas — e é exatamente isso que as próximas seções cobrem.

O que são nós na regressão spline?

Nós são os pontos ao longo do eixo do preditor onde um segmento polinomial termina e o próximo começa.

Pense neles como as articulações da spline. Se você coloca um nó em x = 5, o modelo ajusta um polinômio para valores abaixo de 5 e outro para valores acima de 5. Os dois se encontram no nó, e as restrições de continuidade garantem a conexão suave. Ao adicionar mais nós, você ganha mais segmentos — e a curva pode entortar em mais lugares.

É por isso que os nós são a principal alavanca para controlar a flexibilidade do modelo.

O número de nós determina quantos pedaços polinomiais compõem a spline. A localização dos nós determina onde a curva pode mudar de formato. Uma spline com dois nós só consegue entortar em alguns pontos. Com vinte nós, ela quase acompanha cada observação.

Então, escolher a quantidade e a posição certas de nós é a principal decisão na regressão spline.

Nós de menos

Se você coloca nós de menos, a spline não tem segmentos suficientes para seguir o padrão real dos dados. A curva fica rígida demais. Ela se comporta quase como um polinômio de baixo grau — flexível de forma geral, mas incapaz de capturar mudanças locais.

Imagine ajustar uma spline com um nó a dados com três fases distintas: uma alta, um platô e uma queda. Com apenas um nó, a spline tem só dois segmentos para trabalhar. Dá para capturar a alta e mais uma fase, mas não as três. Você acaba com o mesmo problema da regressão linear — erros onde a spline não acompanha o formato dos dados.

Exemplo com poucos nós

Exemplo com poucos nós

Nós de menos levam a subajuste. O modelo fica suave demais para ser útil.

Nós demais

O problema oposto é tão ruim quanto. Se você coloca nós demais, a spline ganha tantos segmentos que começa a ajustar o ruído em vez do padrão real. A curva fica ziguezagueando entre cada observação e persegue variações aleatórias, não a tendência subjacente.

Uma spline com vinte nós em um conjunto de cinquenta pontos vai parecer um jogo de ligar os pontos, não um modelo. Ela vai ajustar quase perfeitamente os dados de treino, mas previsões em novos dados serão pouco confiáveis. Pequenas mudanças na entrada geram grandes e imprevisíveis mudanças na saída.

Exemplo com muitos nós

Exemplo com muitos nós

Nós demais levam a sobreajuste. O modelo fica flexível demais para generalizar.

Você quer nós suficientes para pegar as curvas reais dos dados, mas não tantos a ponto de o modelo começar a memorizar o ruído. As próximas seções mostram como decidir isso na prática.

Tipos de splines

Splines vêm em alguns sabores, e a escolha depende principalmente do tipo de polinômio usado em cada segmento e das restrições impostas à curva.

Splines lineares

Splines lineares são a versão mais simples. Cada segmento é uma linha reta, e os segmentos se conectam nos nós.

Exemplo de splines lineares

Exemplo de splines lineares

A restrição de continuidade aqui é mais leve: os valores de ambos os lados devem coincidir no nó, mas as inclinações podem mudar. O resultado se parece com uma série de segmentos conectados, com quinas em cada nó. É flexível o suficiente para dobras simples, mas a curva às vezes não é suave.

Splines lineares funcionam bem quando você só precisa capturar tendências gerais e não se importa com a aparência mais “dura”. Também são mais fáceis de interpretar, já que cada segmento é só uma reta com a própria inclinação.

Splines cúbicas

Splines cúbicas são a escolha padrão na maioria das aplicações. Cada segmento é um polinômio cúbico (grau 3), e as restrições de continuidade são mais rígidas do que nas splines lineares.

Exemplo de splines cúbicas

Exemplo de splines cúbicas

Em cada nó, três condições precisam valer: os valores coincidem, as primeiras derivadas coincidem e as segundas derivadas coincidem. Isso significa sem saltos, sem quinas e sem mudanças súbitas de curvatura. A curva atravessa os nós sem nenhum indício visual de transição.

Cúbico é o menor grau que permite mudanças suaves de curvatura. Por isso é tão popular. Graus mais altos raramente agregam flexibilidade útil e só deixam o modelo mais difícil de controlar.

Splines cúbicas naturais

Splines cúbicas naturais são uma variação que adiciona restrições extras nas bordas dos dados.

Exemplo de splines cúbicas naturais

Exemplo de splines cúbicas naturais

O problema das splines cúbicas comuns é que podem se comportar de forma estranha nas bordas, especialmente onde há poucos pontos. Os segmentos mais à esquerda e à direita ainda são polinômios cúbicos, e cúbicos podem subir ou descer rapidamente ao extrapolar.

Splines cúbicas naturais contornam isso forçando a segunda derivada a ser zero nos nós de fronteira. Na prática, a curva vira linear além dos nós externos. O comportamento de extrapolação fica muito mais estável, o que torna as splines cúbicas naturais uma escolha melhor quando você se importa com previsões perto das bordas.

B-splines

B-splines (de basis splines) são uma forma diferente de construir splines. Em vez de definir diretamente cada segmento polinomial, B-splines constroem a spline como uma soma ponderada de funções base.

Exemplo de B-splines

Exemplo de B-splines

Cada função base é, por si só, uma pequena spline que é diferente de zero apenas em uma região limitada. A spline completa é a soma dessas funções base, cada uma multiplicada por um coeficiente estimado pela regressão.

B-splines são numericamente estáveis e fáceis de estender. A maioria das implementações modernas de splines em Python e R usa representações B-spline, mesmo quando a interface para o usuário parece uma spline comum. Se você já chamou bs() em R ou usou SplineTransformer no scikit-learn, você usou B-splines.

Regressão spline vs. regressão polinomial

Tanto a regressão polinomial quanto a regressão spline lidam com relações não lineares, mas fazem isso de formas bem diferentes. A diferença está em como a curva é construída.

Regressão polinomial

Regressão polinomial ajusta um único polinômio global em todo o domínio do preditor. Você escolhe um grau (2, 3, 5, 10) e o modelo encontra um conjunto de coeficientes que minimiza o erro no conjunto inteiro. A curva tem uma equação, e essa equação descreve a relação em toda parte.

Isso parece limpo, mas traz um problema. Um único polinômio precisa equilibrar o ajuste em todo o domínio, então o que acontece em uma região afeta todas as outras. Se você aumenta o grau para lidar com uma curva acentuada no meio dos dados, verá a curva começar a oscilar nas bordas. Esse é o fenômeno de Runge que mencionei — polinômios de alto grau ficam instáveis perto das fronteiras dos dados.

Outro ponto é que a regressão polinomial não tem noção de localidade. Um pico em x = 5 pode mudar o formato do ajuste em x = 50, porque toda observação contribui para a mesma equação global.

Regressão spline

A regressão spline divide o domínio do preditor em segmentos e ajusta um polinômio de baixo grau em cada um. Os polinômios são conectados suavemente nos nós, mas cada um é independente no sentido de que seu formato é guiado principalmente pelos dados de sua própria região.

Isso dá flexibilidade local. Uma região com curva acentuada ganha um polinômio mais curvo. Uma região quase plana recebe um quase plano. E porque cada segmento é de baixo grau (geralmente cúbico), nenhuma parte se comporta de forma estranha nos extremos. Você obtém um ajuste mais suave e estável, especialmente perto das bordas.

Comparação lado a lado

Regressão polinomial vs. spline

Regressão polinomial versus regressão spline

Se a sua relação é levemente não linear e você está ok com um ajuste global, regressão polinomial pode funcionar. Se o padrão é mais complexo ou se você se importa com previsões nas bordas, splines são a escolha mais segura.

Escolhendo o número e a localização dos nós

A seleção de nós é a parte mais importante da regressão spline. Nós de menos geram subajuste; nós demais geram sobreajuste. E onde você os coloca muda quais padrões o modelo consegue capturar.

Há algumas abordagens — e, na prática, você costuma combinar mais de uma.

  1. Conhecimento de domínio: se você conhece o problema, use isso. Um estudo clínico pode posicionar nós em limiares clínicos conhecidos. Um modelo de precificação pode posicionar nós onde se espera mudança de comportamento do consumidor. Nós guiados pelo domínio são os mais interpretáveis, pois os segmentos correspondem a limites reais.
  2. Nós espaçados uniformemente: escolha um número de nós e distribua-os uniformemente no eixo do preditor. Funciona bem quando os dados estão aproximadamente uniformes ao longo do eixo. Não funciona quando há regiões densas e regiões esparsas — nós uniformes podem cair em áreas quase sem dados, deixando o ajuste instável.
  3. Nós baseados em quantis: em vez de posicionar nós em posições iguais no eixo x, posicione-os nos quantis do preditor. Com 4 nós e posicionamento por quantis, você colocaria nós nos percentis 20, 40, 60 e 80. Isso garante que cada segmento contenha aproximadamente o mesmo número de observações, tornando o ajuste mais confiável em regiões esparsas.
  4. Validação cruzada: teste diferentes quantidades de nós, ajuste a spline para cada configuração e compare o desempenho em dados de validação. A configuração com menor erro de validação vence. Isso tira o achismo, mas custa computação — e o resultado ainda depende da estratégia de posicionamento (uniforme, quantis) que você está explorando.

O trade-off é o mesmo de qualquer problema de regressão: flexibilidade versus complexidade. Mais nós significam mais flexibilidade — o modelo segue padrões mais finos, mas também pode perseguir ruído. Menos nós significam um modelo mais estável e interpretável, que pode deixar passar padrões reais.

Comece com 3–5 nós posicionados por quantis e depois verifique os resíduos. Se houver padrões sistemáticos que a spline não capturou, adicione um nó naquela região. Se o ajuste estiver muito ondulado, remova um. Use validação cruzada quando precisar justificar a escolha ou quando o modelo for para produção.

Regressão spline em machine learning e estatística

Splines aparecem sempre que é preciso modelar um efeito não linear suave sem assumir uma forma funcional específica. Aqui vão algumas áreas comuns:

  • Tendências em séries temporais: um uso comum é separar a tendência suave de uma série temporal das flutuações de curto prazo. Uma spline sobre o tempo como preditor gera uma linha de tendência flexível que se adapta a mudanças de direção sem reagir demais ao ruído. Economistas e analistas usam isso o tempo todo para descrever a trajetória subjacente de variáveis — como PIB ou preços de ações — sem assumir linearidade ou exponencialidade.
  • Economia e econometria: splines são usadas para modelar relações em que o efeito de uma variável muda ao longo do seu domínio. O efeito da renda no consumo não é constante — famílias de baixa renda gastam de forma diferente das de alta renda. Uma spline capta isso sem assumir uma forma específica.
  • Saúde e bioestatística: muitos desfechos têm relações não lineares com idade, IMC, pressão arterial ou biomarcadores. O risco de doença frequentemente segue um formato em U ou J — extremos são perigosos, o meio é seguro. Um modelo linear perderia isso. Splines cúbicas e cúbicas naturais são ferramentas padrão para esses efeitos e estão embutidas na maioria dos softwares estatísticos usados em pesquisa clínica.
  • Modelagem ambiental e ecológica: splines também aparecem ao modelar como espécies ou variáveis climáticas respondem a gradientes ambientais. Temperatura, altitude e chuva costumam ter efeitos não lineares sobre abundância de espécies ou produtividade agrícola. Splines permitem ajustar a curva de resposta sem especificar seu formato de antemão.

Em todos esses casos, splines dão flexibilidade onde é preciso, sem forçar você a adivinhar a forma funcional da relação. Isso as torna ótimas para modelagem exploratória e uma escolha sólida para produção quando a interpretabilidade importa.

Regressão spline em Python

Python tem três formas comuns de ajustar regressão spline: scikit-learn para um pipeline de ML, patsy para especificação baseada em fórmulas e statsmodels para inferência estatística. Vou passar por cada uma.

Usando scikit-learn

O scikit-learn oferece o SplineTransformer, que converte uma feature numérica em um conjunto de funções base B-spline. Depois, você alimenta essas features em qualquer modelo de regressão linear.

import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import SplineTransformer
from sklearn.pipeline import make_pipeline

# Data
np.random.seed(42)
x = np.linspace(0, 10, 100).reshape(-1, 1)
y = np.sin(x).ravel() + 0.3 * x.ravel() + np.random.normal(0, 0.3, 100)

# Spline features + linear regression pipeline
model = make_pipeline(
    SplineTransformer(n_knots=5, degree=3),
    LinearRegression()
)
model.fit(x, y)
y_pred = model.predict(x)

print("R^2 score:", model.score(x, y))

R2 do scikit-learn

R2 do scikit-learn

O SplineTransformer cria a base de spline com 5 nós e polinômios cúbicos. Em seguida, o LinearRegression encontra os coeficientes de cada função base. Você pode trocar por qualquer regressor do sklearn aqui — ridge, lasso, qualquer um que ajuste um modelo linear nas features transformadas.

Essa abordagem casa com os fluxos do sklearn, mas você não obtém saídas estatísticas como erros-padrão ou p-values. Para isso, use patsy ou statsmodels.

Usando patsy

patsy é uma interface baseada em fórmulas para construir matrizes de desenho. É o equivalente mais próximo, em Python, às fórmulas de modelo do R e é a forma padrão de criar features de spline para uso com statsmodels.

import numpy as np
import pandas as pd
from patsy import dmatrix
import statsmodels.api as sm

np.random.seed(42)
x = np.linspace(0, 10, 100)
y = np.sin(x) + 0.3 * x + np.random.normal(0, 0.3, 100)
df = pd.DataFrame({"x": x, "y": y})

# B-spline basis using patsy
spline_basis = dmatrix("bs(x, df=6, degree=3)", data=df, return_type="dataframe")

# Fit with statsmodels OLS
model = sm.OLS(df["y"], spline_basis).fit()
print(model.summary())

Resumo do modelo com patsy

Resumo do modelo com patsy

A função bs() dentro da fórmula instrui o patsy a construir uma base B-spline com 6 graus de liberdade e grau 3 (cúbico). O patsy retorna a matriz de desenho, que vai direto para o sm.OLS(). O parâmetro df controla o número de funções base — valores maiores dão mais flexibilidade, similar a adicionar mais nós.

Se você quiser splines naturais, é só trocar bs() por ns():

spline_basis = dmatrix("ns(x, df=6)", data=df, return_type="dataframe")

Usando statsmodels com fórmulas

O statsmodels também tem uma API de fórmulas que integra com o patsy. É a versão mais enxuta quando você quer uma regressão spline em uma linha com saída estatística completa.

import statsmodels.formula.api as smf

model = smf.ols("y ~ bs(x, df=7, degree=3)", data=df).fit()
print(model.summary())

Resumo do modelo no statsmodels

Resumo do modelo no statsmodels

A saída de summary() traz coeficientes para cada função base da spline, erros-padrão, p-values e as estatísticas de ajuste usuais. Os coeficientes não são diretamente interpretáveis, pois cada um corresponde a uma função base, não a uma quantidade do mundo real. Você interpreta o ajuste plotando previsões ao longo do domínio do preditor.

Para a maioria dos fluxos estatísticos, a API de fórmulas do statsmodels é a escolha mais conveniente. Use scikit-learn quando as splines fizerem parte de um pipeline maior de ML.

Regressão spline em R

R tem o melhor suporte nativo a splines entre as principais linguagens. O pacote splines vem no R base, e suas duas funções principais — bs() e ns() — funcionam diretamente em qualquer fórmula de regressão.

A função bs() cria uma base B-spline. A ns() cria uma base de spline cúbica natural. Ambas geram uma matriz de features de spline que o sistema de fórmulas do R insere no modelo automaticamente.

Usando bs() para B-splines

# Data
set.seed(42)
x <- seq(0, 10, length.out = 100)
y <- sin(x) + 0.3 * x + rnorm(100, sd = 0.3)
df <- data.frame(x = x, y = y)

# Cubic B-spline with 6 degrees of freedom
library(splines)
model <- lm(y ~ bs(x, df = 6, degree = 3), data = df)
summary(model)

Saída de bs() no R

Saída de bs() no R

A fórmula y ~ bs(x, df = 6, degree = 3) instrui o R a substituir x por uma base B-spline de grau 3 e 6 graus de liberdade. O R cuida do resto — constrói a matriz base, ajusta o modelo linear e produz um objeto lm com todos os diagnósticos usuais.

Você pode passar posições de nós diretamente se quiser controle total:

model <- lm(y ~ bs(x, knots = c(2, 5, 8), degree = 3), data = df)

Isso posiciona nós em x = 2, x = 5 e x = 8 em vez de deixar o R escolher por você.

Usando ns() para splines naturais

Para splines cúbicas naturais (as que ficam lineares além das bordas), use ns():

model_natural <- lm(y ~ ns(x, df = 6), data = df)
summary(model_natural)

Saída de ns() no R

Saída de ns() no R

A sintaxe é a mesma, mas o comportamento nas bordas é diferente. Splines naturais geralmente são a escolha mais segura quando você se importa com previsões ou interpretação perto dos limites dos dados.

Interpretando a saída

Os coeficientes no summary() correspondem às funções base da spline, não a quantidades interpretáveis diretamente. Para ver o que o modelo de fato aprendeu, faça previsões em uma malha de valores de x e plote o resultado:

x_grid <- data.frame(x = seq(0, 10, length.out = 200))
preds <- predict(model, newdata = x_grid)
plot(df$x, df$y)
lines(x_grid$x, preds, col = "green", lwd = 2)

Interpretação de saída na regressão spline em R

Interpretação da saída em R

Esse é o padrão no R: ajustar a spline, prever em uma grade suave e sobrepor a curva aos dados. O R também permite usar termos de spline junto com outros preditores na mesma fórmula:

model_multi <- lm(y ~ ns(x, df = 6) + other_var, data = df)

Isso ajusta um efeito não linear para x e um efeito linear para other_var no mesmo modelo. Essa flexibilidade explica por que splines são tão usadas em fluxos estatísticos baseados em R.

Vantagens da regressão spline

Aqui vão algumas vantagens de splines em comparação com modelos de machine learning mais populares:

  • Modela relações não lineares sem conhecer a forma: você não precisa assumir um formato funcional. Splines deixam os dados moldarem a curva — dá para modelar curvas, platôs e mudanças de direção sem saber de antemão onde ocorrem.
  • Ajustes suaves e interpretáveis: o resultado é uma curva contínua, não uma caixa-preta. Você pode plotar a spline, ver como a resposta muda ao longo do preditor e explicar para uma audiência não técnica.
  • Mais estáveis que polinômios de alto grau: cada segmento é um polinômio de baixo grau, então nenhuma parte isolada se descontrola nos extremos. O comportamento nas bordas é bem mais controlado, especialmente com splines cúbicas naturais.
  • Encaixam em fluxos de regressão existentes: splines funcionam dentro da regressão linear padrão. Você pode combiná-las com outros preditores, regularização, efeitos mistos e qualquer outra ferramenta compatível com MQO.

Limitações da regressão spline

Como a maioria dos modelos, splines trazem alguns trade-offs que você precisa conhecer:

  • Escolha de nós é a parte difícil: escolher quantidade e localização de nós dá trabalho. Padrões podem funcionar às vezes, mas em muitos casos você vai precisar de validação cruzada ou conhecimento de domínio para um bom ajuste. Não existe uma regra única que sempre funciona.
  • Interpretar fica mais difícil com muitos nós: uma spline com três nós é simples de interpretar. Com vinte nós, não é. Você ainda consegue plotar a curva, mas explicar o que o modelo está fazendo de forma rigorosa fica bem mais difícil.
  • Ainda podem sobreajustar: splines são mais estáveis que polinômios de alto grau, mas não são imunes a overfitting. Nós demais, posicionamento ruim, muitos outliers ou amostra pequena podem gerar um modelo que vai bem no treino e fracassa nos dados novos.
  • Coeficientes não são diretamente significativos: os coeficientes ajustados correspondem a funções base, não a quantidades do mundo real. Você não consegue ler “um aumento de uma unidade em x muda y em beta” como na regressão linear. É preciso interpretar visualmente o ajuste.

Erros comuns com regressão spline

Agora, alguns erros que iniciantes cometem com regressão spline:

  • Usar nós demais: iniciantes costumam adicionar nós até o ajuste ficar “bonito” nos dados de treino. Clássica armadilha de sobreajuste. Se a spline está ondulando entre cada observação, há nós demais. Faça validação cruzada ou comece com menos nós e adicione apenas quando os resíduos mostrarem um padrão claro.
  • Usar poucos nós e assumir linearidade: o erro oposto. Se você ajusta uma spline com um ou dois nós e os resíduos ainda mostram curvatura, o modelo está subajustando. A spline simplesmente não tem segmentos suficientes para seguir o padrão real. Adicione nós nas regiões onde os resíduos destoam.
  • Entender mal o comportamento nas bordas: splines cúbicas comuns podem se comportar de forma errática perto das bordas. Se você faz previsões próximas aos limites (ou extrapola além), use splines cúbicas naturais. Elas forçam comportamento linear após os nós de borda e evitam oscilações que splines cúbicas comuns podem produzir.
  • Comparar splines diretamente com modelos não lineares sem restrições: splines não tentam ser redes neurais ou random forests. Se você comparar spline com um modelo caixa-preta totalmente não linear em acurácia bruta, o caixa-preta costuma ganhar em performance. Não é esse o ponto. Splines vencem em interpretabilidade e na capacidade de se encaixar em inferência estatística tradicional.

Regressão spline vs. outras técnicas de modelagem não linear

Splines não são a única forma de modelar relações não lineares, mas são úteis quando a interpretabilidade importa. Veja como elas se comparam às alternativas mais comuns.

Regressão polinomial

Regressão polinomial usa uma única equação global. É mais simples de especificar, mas menos estável — especialmente nas bordas. Splines superam polinômios em flexibilidade e estabilidade quando a relação tem mais de uma curva. Polinômios são mais fáceis de interpretar só em graus bem baixos (2 ou 3). Passou disso, splines ficam mais confiáveis e mais interpretáveis.

Modelos aditivos generalizados (GAMs)

GAMs são, essencialmente, splines em escala. Um GAM permite ajustar uma spline para cada preditor de forma independente e combiná-las aditivamente. Você pode pensar em regressão spline como um GAM de uma variável, e em GAM como a soma de splines em múltiplas variáveis.

GAMs lidam melhor com múltiplos preditores não lineares do que ajustar splines manualmente para cada um. Eles também incluem penalizações de suavização que escolhem a quantidade certa de flexibilidade, reduzindo o trabalho de seleção de nós. Se você tem vários preditores e alguns precisam de tratamento não linear, GAMs costumam ser a melhor opção.

Árvores de decisão

Árvores de decisão seguem uma abordagem totalmente diferente. Em vez de ajustar uma curva suave, elas dividem o espaço do preditor em regiões retangulares e preveem um valor constante em cada região. O resultado é uma função em degraus.

Árvores são mais flexíveis que splines em alguns aspectos — conseguem modelar interações e mudanças abruptas. Mas a função ajustada não é suave nem contínua, e também não generaliza tão bem em regiões esparsas. Splines são melhores quando você se importa com suavidade e extrapolação estável. Árvores são melhores quando importam fronteiras acentuadas ou interações em muitas variáveis.

Por que a regressão spline é importante

Splines estão em toda parte na estatística aplicada. Surgem em pesquisa clínica, análise econômica, ciência ambiental, modelagem de séries temporais e em qualquer área em que se precise modelar um efeito não linear suave sem recorrer a um modelo caixa-preta.

O motivo é o equilíbrio que oferecem — flexibilidade suficiente para lidar com dados bagunçados, e estrutura suficiente para se manter interpretáveis e estáveis.

Elas também são base para métodos mais avançados. Modelos Aditivos Generalizados são construídos diretamente sobre splines, splines de suavização estendem a ideia com regularização embutida, e muitas técnicas modernas de regressão não linear usam bases de spline. Para entender esses métodos, você precisa entender splines primeiro.

Splines importam porque são práticas e porque são o tijolo básico para muita coisa que vem depois. Não são o modelo mais poderoso, mas estão entre os mais confiáveis — e isso, muitas vezes, é o que mais conta.

Conclusão

A regressão spline modela relações não lineares combinando polinômios por partes em pontos chamados nós. Essa é a ideia — o resto são variações dela.

Nós e suavidade são os dois conceitos que você precisa dominar. Todo o resto (tipos de spline, representações por base, implementação em R e Python) são formas diferentes de trabalhar com esses dois conceitos.

Teste alguns tipos de spline nos seus dados. Compare cúbica, cúbica natural e B-splines. Mude os nós e veja o que acontece. Experimente — a natureza visual do ajuste facilita enxergar o efeito de cada escolha.

Se quiser se aprofundar na matemática por trás de splines e de muitos outros algoritmos, inscreva-se na nossa trilha Machine Learning Scientist in Python. Ela tem tudo o que você precisa para estar pronto para o mercado em 2026.

Torne-se um cientista de ML

Aperfeiçoe suas habilidades em Python para se tornar um cientista de aprendizado de máquina.
Comece a Aprender De Graça

Dario Radečić's photo
Author
Dario Radečić
LinkedIn
Cientista de dados sênior baseado na Croácia. Principal redator técnico com mais de 700 artigos publicados, gerando mais de 10 milhões de visualizações. Autor do livro Automação do aprendizado de máquina com TPOT.

Perguntas frequentes sobre regressão spline

O que é regressão spline em termos simples?

Regressão spline é uma forma de modelar relações curvas nos dados dividindo o domínio do preditor em segmentos e ajustando um pequeno polinômio em cada um. Os segmentos se conectam suavemente em pontos chamados nós, de modo que o resultado é uma curva contínua. É mais flexível que a regressão linear e mais estável que a regressão polinomial de alto grau.

Quando devo usar regressão spline em vez de regressão linear?

Use regressão spline quando a relação entre seu preditor e o desfecho não for uma linha reta. Se um modelo linear deixa padrões nos resíduos — por exemplo, erros positivos no meio e negativos nos extremos — é um sinal de que a relação é não linear.

O que são nós na regressão spline?

Nós são os pontos ao longo do eixo do preditor onde um segmento polinomial termina e o próximo começa. Eles controlam quão flexível a spline pode ser. Mais nós significam que a curva pode entortar em mais lugares. Escolher a quantidade e a posição certas é a decisão central na regressão spline: poucos nós geram subajuste; nós demais geram sobreajuste.

Qual é a diferença entre splines cúbicas e splines cúbicas naturais?

Ambas ajustam polinômios cúbicos entre os nós, mas diferem no comportamento nas bordas. Splines cúbicas comuns podem se comportar de forma inesperada nas extremidades, pois cada ponta ainda é um polinômio cúbico completo. Splines cúbicas naturais forçam a curva a ser linear além dos nós externos, deixando previsões próximas ou além das bordas bem mais estáveis.

Como escolho o número de nós para um modelo de spline?

Comece com 3–5 nós colocados nos quantis do preditor, para que cada segmento tenha um número parecido de observações. Se os resíduos mostrarem padrões que a spline não capturou, adicione um nó naquela região. Para uma abordagem mais rigorosa, use validação cruzada para comparar diferentes quantidades de nós e escolha a configuração com menor erro de validação.

Tópicos

Aprenda com a DataCamp

Curso

Modelos Lineares Generalizados em R

4 h
21.8K
O curso Modelo Linear Generalizado amplia sua caixa de ferramentas de regressão para incluir regressão logística e de Poisson.
Ver detalhesRight Arrow
Iniciar Curso
Ver maisRight Arrow
Relacionado

Tutorial

Tutorial de regressão Lasso e Ridge em Python

Saiba mais sobre as técnicas de regressão lasso e ridge. Compare e analise os métodos em detalhes.
DataCamp Team's photo

DataCamp Team

multiple linear regression

Tutorial

Regressão linear múltipla no R: Tutorial com exemplos

Uma visão geral completa para entender as regressões lineares múltiplas no R por meio de exemplos.
Zoumana Keita 's photo

Zoumana Keita

Tutorial

Tutorial de regressão linear no R

Neste tutorial, você aprenderá os fundamentos de um modelo estatístico muito popular: a regressão linear.

Eladio Montero Porras

Python

Tutorial

Tutorial para entender a regressão logística em Python

Aprenda sobre a regressão logística, suas propriedades básicas e crie um modelo de aprendizado de máquina em um aplicativo do mundo real em Python.
Avinash Navlani's photo

Avinash Navlani

Tutorial

Tutorial de regressão logística no R

Descubra tudo sobre a regressão logística: como ela difere da regressão linear, como ajustar e avaliar esses modelos no R com a função glm() e muito mais!
Vidhi Chugh's photo

Vidhi Chugh

Tutorial

Introdução a modelos não lineares e percepções usando o R

Descubra as complexidades dos modelos não lineares em comparação com os modelos lineares. Saiba mais sobre suas aplicações, limitações e como ajustá-las usando conjuntos de dados do mundo real.

Somil Asthana

Ver MaisVer Mais