Como realizar regressão quadrática em python


A regressão quadrática é um tipo de regressão que podemos usar para quantificar a relação entre uma variável preditora e uma variável de resposta quando as verdadeiras relações são quadráticas, o que pode parecer um “U” ou um “U” invertido em um gráfico.

Ou seja, à medida que a variável preditora aumenta, a variável resposta tende a aumentar também, mas depois de um certo ponto a variável resposta começa a diminuir à medida que a variável preditora continua a aumentar.

Este tutorial explica como realizar regressão quadrática em Python.

Exemplo: regressão quadrática em Python

Suponha que temos dados sobre o número de horas trabalhadas por semana e o nível de felicidade relatado (numa escala de 0 a 100) para 16 pessoas diferentes:

 import numpy as np
import scipy.stats as stats

#define variables
hours = [6, 9, 12, 12, 15, 21, 24, 24, 27, 30, 36, 39, 45, 48, 57, 60]
happ = [12, 18, 30, 42, 48, 78, 90, 96, 96, 90, 84, 78, 66, 54, 36, 24]

Se fizermos um gráfico de dispersão simples desses dados, podemos ver que a relação entre as duas variáveis tem formato de “U”:

 import matplotlib.pyplot as plt

#create scatterplot
plt.scatter(hours, happ) 

À medida que as horas trabalhadas aumentam, a felicidade também aumenta, mas quando as horas trabalhadas ultrapassam cerca de 35 horas por semana, a felicidade começa a diminuir.

Devido ao formato em “U”, isso significa que a regressão quadrática é provavelmente uma boa candidata para quantificar a relação entre as duas variáveis.

Para realmente realizar uma regressão quadrática, podemos ajustar um modelo de regressão polinomial com grau 2 usando a função numpy.polyfit() :

 import numpy as np

#polynomial fit with degree = 2
model = np.poly1d(np.polyfit(hours, happ, 2))

#add fitted polynomial line to scatterplot
polyline = np.linspace(1, 60, 50)
plt.scatter(hours, happ)
plt.plot(polyline, model(polyline))
plt.show() 

Regressão quadrática em Python

Podemos obter a equação de regressão polinomial ajustada imprimindo os coeficientes do modelo:

 print (model)

-0.107x 2 + 7.173x - 30.25

A equação de regressão quadrática ajustada é:

Felicidade = -0,107(horas) 2 + 7,173(horas) – 30,25

Podemos usar esta equação para calcular o nível de felicidade esperado de um indivíduo com base nas horas trabalhadas. Por exemplo, o nível de felicidade esperado de uma pessoa que trabalha 30 horas por semana é:

Felicidade = -0,107(30) 2 + 7,173(30) – 30,25 = 88,64 .

Também podemos escrever uma função curta para obter o R-quadrado do modelo, que é a proporção da variância na variável de resposta que pode ser explicada pelas variáveis preditoras.

 #define function to calculate r-squared
def polyfit(x, y, degree):
    results = {}
    coeffs = np.polyfit(x, y, degree)
    p = np.poly1d(coeffs)
    #calculate r-squared
    yhat = p(x)
    ybar = np.sum(y)/len(y)
    ssreg = np.sum((yhat-ybar)**2)
    sstot = np.sum((y - ybar)**2)
    results['r_squared'] = ssreg / sstot

    return results

#find r-squared of polynomial model with degree = 3
polyfit(hours, happ, 2)

{'r_squared': 0.9092114182131691}

Neste exemplo, o R quadrado do modelo é 0,9092 .

Isto significa que 90,92% da variação nos níveis de felicidade relatados pode ser explicada pelas variáveis preditoras.

Recursos adicionais

Como realizar regressão polinomial em Python
Como realizar regressão quadrática em R
Como realizar regressão quadrática no Excel

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *