Achar o tipo de função pelos dados numéricos
Na prática, a gente recebe uma tabela com valores de x e f(x) e precisa decidir se é constante ou afim. A fórmula geral já é o ponto de partida: f(x) = ax + b. Quando o coeficiente angular a é igual a zero, você tem uma função constante. Quando a é diferente de zero, é uma função afim. Parece simples, mas os dados nunca chegam limpos. Eu trabalho com planilhas que trazem medições de sensores e preciso classificar rapidamente se o comportamento é constante ou tende a uma reta. Nos últimos meses, passei quase duas horas quebrando a cabeça porque uma série que eu esperava ser completamente constante apresentava variações de 0,0003 unidades entre os pontos. O erro parecia insignificante, mas o algoritmo ingênuo interpretava isso como uma função afim com inclinação mínima.
Identificando função constante e função afim na prática
Para resolver esse problema, eu usei uma abordagem baseada em tolerância em vez de igualdade exata. Ao calcular o coeficiente angular usando dois pontos, em vez de exigir a = 0, eu defini uma faixa aceitável. Se o valor absoluto do declive estivesse abaixo de 0,001, eu considerava o comportamento como constante. O passo a passo que uso hoje é o seguinte: Primeiro, calcule o declive entre o primeiro e o último par de pontos da sua tabela. A fórmula é (f(x) f(x)) dividido por (x x). Se o denominador for zero, os pontos têm o mesmo x e a análise não faz sentido — nesse caso, descarte os dados duplicados antes de prosseguir. Se o resultado absoluto for menor que a tolerância que você escolheu, trate como constante. Caso contrário, é afim.
A tolerância depende do contexto. Em medições de temperatura ambiente, 0,5 é suficiente. Em cálculos financeiros com centavos, prefiro 0,01. Testei valores menores que 0,0001 e o problema anterior retornava: o ruído do sensor entrava na conta e classificava errado. Um ajuste de tolerância resolveu em menos de um minuto o que antes levava horas de debugging. Depois de saber o tipo, o próximo passo é obter os parâmetros. Para uma função constante, o valor de b é simplesmente a média dos valores de f(x). Não vale a pena fazer regressão linear para constantes; a média já entrega o melhor estimador sem custo computacional extra. Para a função afim, use a mínimos quadrados. O cálculo do coeficiente angular pela regressão é mais robusto do que usar apenas dois pontos, porque utiliza todos os dados e reduz o efeito de medições isoladas com erro.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Um detalhe que pouca gente menciona: se os seus pontos de x estiverem espaçados de forma irregular, a regressão ainda funciona, mas a interpretação geométrica muda. A inclinação passa a depender da distribuição dos x, e não apenas da variação de y. Eu já vi relatórios errados por causa disso, especialmente quando os dados eram coletados em horários variáveis e não em intervalos fixos. Outro ponto que causa confusão é a distinção entre função linear e função afim. Função linear tem a forma f(x) = ax e passa pela origem. Função afim permite o termo independente b, então ela pode cruzar o eixo y em qualquer ponto. Na maioria das planilhas do dia a dia, o que aparece é função afim. Se você tratar tudo como linear, o ajuste vai distorcer porque o modelo será forçado a passar por zero, mesmo quando os dados não passam.
Um contra-senso comum é achar que função constante é apenas um caso degenerado de função afim e ignorá-la. Ela não é irrelevante. Em muitos sistemas de controle, manter uma saída constante é exatamente o objetivo. A diferença prática está na estabilidade: funções constantes não acumulam erro ao longo do tempo da mesma forma que funções com inclinação positiva, onde pequenas variações no coeficiente angular geram grandes desvios em valores futuros. Se você estiver usando Python, a biblioteca numpy tem funções prontas para regressão linear. A chamada np.polyfit(x, y, 1) retorna os coeficientes de uma reta. Eu costumo usar assim e depois verificar o valor absoluto do primeiro coeficiente contra a tolerância definida. O tempo de processamento para um conjunto de mil pontos cai de cerca de 400 milissegundos com regressão manual para algo próximo de 5 milissegundos com a função nativa, o que faz diferença quando o script roda centenas de vezes.
Há também o caso dos dados categóricos codificados como numéricos, onde a função parece afim mas não é. Já identifiquei situações em que variáveis ordinais como níveis de risco (1, 2, 3) geravam retas enganosas porque a distância entre os níveis não era uniforme na realidade. A solução foi transformar em variáveis dummy antes de qualquer ajuste, mas isso sai do escopo estrito de função constante e função afim, então basta ficar atento a esse tipo de armadilha nos dados de entrada. Resumindo sem dramatização: calcule o declive, aplique tolerância, use média para constantes e mínimos quadrados para afins. Verifique a distribuição dos x. Não confunda linear com afim. E ajuste a tolerância conforme o ruído esperado da sua fonte de dados.