Python에서 2차 회귀를 수행하는 방법


2차 회귀 는 실제 관계가 2차(그래프에서 “U” 또는 반전된 “U” 모양)일 때 예측 변수와 응답 변수 간의 관계를 수량화하는 데 사용할 수 있는 회귀 유형입니다.

즉, 예측변수가 증가하면 반응변수도 증가하는 경향이 있으나, 일정 시점 이후에는 예측변수가 계속 증가하면서 반응변수가 감소하기 시작한다.

이 튜토리얼에서는 Python에서 2차 회귀를 수행하는 방법을 설명합니다.

예: Python의 2차 회귀

주당 근무 시간에 대한 데이터가 있고 16명의 서로 다른 사람들에 대해 보고된 행복 수준(0~100점)이 있다고 가정해 보겠습니다.

 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]

이 데이터의 간단한 산점도를 작성하면 두 변수 간의 관계가 “U”자 모양임을 알 수 있습니다.

 import matplotlib.pyplot as plt

#create scatterplot
plt.scatter(hours, happ) 

근무 시간이 늘어날수록 행복도 높아지지만, 근무 시간이 주당 약 35시간을 초과하면 행복도가 떨어지기 시작합니다.

이 “U” 모양으로 인해 이는 2차 회귀가 두 변수 간의 관계를 정량화하는 데 적합한 후보일 가능성이 높다는 것을 의미합니다.

실제로 2차 회귀를 수행하려면 numpy.polyfit() 함수를 사용하여 2차 다항식 회귀 모델을 맞출 수 있습니다 .

 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() 

Python의 2차 회귀

모델 계수를 인쇄하여 적합 다항식 회귀 방정식을 얻을 수 있습니다.

 print (model)

-0.107x 2 + 7.173x - 30.25

적합된 2차 회귀 방정식은 다음과 같습니다.

행복 = -0.107(시간) 2 + 7.173(시간) – 30.25

우리는 이 방정식을 사용하여 근무 시간을 기준으로 개인의 기대 행복 수준을 계산할 수 있습니다. 예를 들어, 주당 30시간 일하는 사람의 기대 행복 수준은 다음과 같습니다.

행복 = -0.107(30) 2 + 7.173(30) – 30.25 = 88.64 .

예측 변수로 설명할 수 있는 응답 변수의 분산 비율인 모델의 R-제곱을 얻기 위해 짧은 함수를 작성할 수도 있습니다.

 #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}

이 예에서 모델의 R 제곱은 0.9092 입니다.

이는 보고된 행복 수준의 변동 중 90.92%가 예측 변수로 설명될 수 있음을 의미합니다.

추가 리소스

Python에서 다항식 회귀를 수행하는 방법
R에서 2차 회귀를 수행하는 방법
Excel에서 2차 회귀를 수행하는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다