NumPy로 회귀 분석하기
9242 단어 statistics파이썬scipynumpy
NumPy로 회귀 분석
그럼 실제로 코드를 쓰고 회귀 분석을 해 보겠습니다. np.polyfit 또는 np.polyval 을 이용하면 n 다음 식으로 2 변수의 회귀 분석을 할 수 있습니다.
자세한 것은 상기의 링크로부터 문서를 참조하는 편이 좋습니다만, 다음과 같습니다.
import numpy as np
import matplotlib.pyplot as plt
x = np.array([0.0, 1.0, 2.0, 3.0, 4.0, 5.0])
y = np.array([0.0, 0.8, 0.9, 0.1, -0.8, -1.0])
z = np.polyfit(x, y, 3)
p = np.poly1d(z)
p30 = np.poly1d(np.polyfit(x, y, 30))
xp = np.linspace(-2, 6, 100)
plt.plot(x, y, '.', xp, p(xp), '-', xp, p30(xp), '*')
plt.ylim(-2,2)
plt.show()
plt.savefig('image.png')
이때
1차식의 경우는 p[0]: 기울기, p[1]: 절편이 됩니다.
N 다음 식이라면 p[0]t(N-1) + p[1]*t*(N-2) + ... + p[N-2]*t + p[N-1] 입니다.
최소 제곱법에 대해서도 이전에 만졌습니다. 은 데이터 열 {(x_1, y_1), (x_2, y_2), ... (x_n, y_n)} 에 대한 잔차 제곱합을 최소화하는 모델을 결정합니다. . 이 때 관측치의 오차 분포의 분산이 일정하다고 가정합니다.
중회귀 분석
독립 변수 m개의 모델에 대한 회귀 분석은 중회귀 분석입니다.
z = ax + by + c
라는 식을 요구하고 싶습니다.
x = [9.83, -9.97, -3.91, -3.94, -13.67, -14.04, 4.81, 7.65, 5.50, -3.34]
y = [-5.50, -13.53, -1.23, 6.07, 1.94, 2.79, -5.43, 15.57, 7.26, 1.34]
z = [635.99, 163.78, 86.94, 245.35, 1132.88, 1239.55, 214.01, 67.94, -1.48, 104.18]
import numpy as np
from scipy import linalg as LA
N = len(x)
G = np.array([x, y, np.ones(N)]).T
result = LA.solve(G.T.dot(G), G.T.dot(z))
print(result)
이것으로
[-30.02043308 3.55275314 322.33397214]
구하기 때문에
z = -30.0x + 3.55y + 322
라는 방정식이 구해져 이것이 해가 됩니다.
참고
2013년 프로그래머를 위한 수학 공부회 자료
htp : // 니치에 s. 기주 b. 이오 / 마 th 세미나 r /
Reference
이 문제에 관하여(NumPy로 회귀 분석하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ynakayama/items/dae1f5bf5688b7ce8e77텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)