Executando verificação de segurança...
5

REGRESSÃO LINEAR SIMPLES - Como implementar em qualquer linguagem

graph-linear-regressão-linear

A regressão linear simples é uma espécie de modelo na estatística cujo objetivo é indicar qual será o comportamento de uma variável dependente, quando colocado uma variável independente.

Nesse caso, utilizaremos apenas uma variável independente e uma dependente. Se tivermos mais que uma variável independente utilizaremos a regressão linear múltipla, que veremos em próximos posts.

Ou seja, a regressão linear simples é uma forma de verificar uma possível relação linear entre duas variáveis, como, por exemplo:

Obs: Quanto mais dados você tiver na sua base de dados, mais assertiva será a previsão.

Carregando publicação patrocinada...
13

Implementando em Python

Temos uma função do tipo y = a.x + b e como vimos no artigo acima, podemos calcular os coeficientes a e b utilizando um pouco de matemática.

Eu utilizei a função mean do módulo numpy pois me poupou umas 3 linhas a cada vez que precisei calcular a média. Você pode importá-la da seguinte forma:

from numpy import mean

Conforme os dados fictícios do artigo acima.

x = [1, 2, 3, 4, 5]
y = [3, 7, 5, 11, 14]

Podemos em um primeiro momento nos preocupar com o cálculo do coeficiente a. A função descrita abaixo tem esse papel; calculando o somatório da diferença entre o xi e a média através de um laço for.

def calculate_a(x, y):
    x_mean = mean(x)
    y_mean = mean(y)
    
    numerador = denominador = 0
    
    for xi, yi in zip(x, y):
        numerador += (xi - x_mean) * (yi - y_mean)
    for xi in x:
        denominador += (xi - x_mean)**2

    a = numerador / denominador
    
    return a

De maneira similar, podemos calcular o b implementando a fórmula descrita no artigo acima.

def calculate_b(x, y):
    x_mean = mean(x)
    y_mean = mean(y)
    
    a = calculate_a(x, y)
    
    b = y_mean - a * x_mean
    
    return b

A seguir, o código completo, com um input para um X qualquer e um print que escreve na tela a previsão conforme o ajuste linear.

# y = ax + b
from numpy import mean

def calculate_a(x, y):
    x_mean = mean(x)
    y_mean = mean(y)
    
    numerador = denominador = 0
    
    for xi, yi in zip(x, y):
        numerador += (xi - x_mean) * (yi - y_mean)
    for xi in x:
        denominador += (xi - x_mean)**2

    a = numerador / denominador
    
    return a

def calculate_b(x, y):
    x_mean = mean(x)
    y_mean = mean(y)
    
    a = calculate_a(x, y)
    
    b = y_mean - a * x_mean
    
    return b
    
 
x = [1, 2, 3, 4, 5]
y = [3, 7, 5, 11, 14]

a = calculate_a(x, y)
b = calculate_b(x, y)

X = float(input("Quantidade de veneno: "))

result = a * X + b

print(f'Essa quantidade matou {round(result)} bactérias.')

Considerações finais

Muito obrigado pelo conteúdo, Leodeymison. Mal posso esperar pelo próximo artigo sobre regressão linear múltipla.

Peço que você, leitor, implemente em uma liguagem diferente para que possamos ver como fica.

2
2
1

Fico muito inpirado com a ideia de uma plataforma que tem um foco em publicar conteúdos de altíssimo valor, com certeza dedicarei meu tempo para contribuir com artigos melhores que esse para agregar na comunidade.

Obrigado Filipe por investir tanto na transformação de pessoas ;)