내용 |
import numpy as np
import numpy.linalg as lin
# X 매트릭스 만들기, 독립변수들을 X로 놓는다.
X = np.array(jeju2.select('IN','OUT').collect())
# Y 벡터 만들기, 종속변수를 Y로 놓는다.
Y = np.array(jeju2.select('INCOME').collect())
## 회귀모형 적합
# 상수가 없는 모형
Beta0 = np.dot(lin.inv(np.dot(X.T,X)),np.dot(X.T,Y))
# 상수가 있는 모형
X1 = np.hstack([np.array([np.ones(36)]).T,X])
Beta1 = np.dot(lin.inv(np.dot(X1.T,X1)),np.dot(X1.T,Y))
## 결정계수
# 결정계수 #R0 상수항이 없는 모형은 약 93% 설명, R1 상수항이 있는 모형은 94% 설명
R0 = np.sum((np.dot(X,Beta0)-np.mean(Y))**2)/np.sum((Y-np.mean(Y))**2)
R1 = np.sum((np.dot(X1,Beta1)-np.mean(Y))**2)/np.sum((Y-np.mean(Y))**2)
# 수정된 결정계수
adR0 = 1-(1-R0)*(36-1)/(36-2-1)
adR1 = 1-(1-R1)*(36-1)/(36-3-1.)
|