아래 글은 부산대학교 송태호 교수님의 ‘마케팅 애널리틱스’ 수업을 듣고 복습한 뒤, 학습 내용을 제 언어로 바꾸어 기록한 글 입니다.
단순 선형회귀분석
정의 :
독립변수 $x$ 와 종속변수 $y$ 사이 관계를 가장 잘 설명하는 모형 찾기
선형회귀식
$\hat{y} = b_{0} + b_{1}x_{i}$
선형회귀식. 선형 모형을 구한다는 건 가중치 $b_{0}$, $b_{1}$ 을 구하는 것이다.
회귀식 가중치는 최소자승법으로 구한다.
최소자승법 : 실젯값 $y$ 와 예측값 $\hat{y}$ 사이 잔차가 최소화 되는 $b_{i}$ 를 구하는 것이다.
$\Rightarrow$ 한마디로, 예측값이 실젯값에 가장 근사해지도록 하는 가중치 $b_{i}$ 를 구하는 것이다.
- 예측값-실젯값 사이 잔차크기가 작아질 수록, 선형회귀모형이 ‘x와 y 관계를 잘 설명한다’고 본다.
선형회귀모형 = 선형예측모형 = 선형모형
회귀선이 벡터 점들과 붙어 있을 수록 잔차크기(잔차 제곱 합)가 작다.
정답값과 선형모형 사이 관계
$y_{i} = b_{0}+b_{1}x_{1}+\epsilon_{i}$
$r^{2}$ 값 : 선형모형의 설명력 크기
정의:
회귀분석에서 내가 찾은 선형모형이 x,y 사이 관계를 얼마나 잘 설명해주는가? 나타내는 값
- $0 \leq r^{2} \leq 1$
$r^{2}$ 값이 0이냐 아니냐는 선형모형이 의미가 있는가 없는가 나타낸다.
$r^{2} = 0$ 이면 선형모형이 의미없는 것이다.
F 통계량 값 : 선형모형이 유의미한 정도
정의:
독립변수가 여러 개 존재하는 내 선형모형과, 독립변수 $x$ 없이 $b_{0}$ 만 존재하는 선형모형 사이 차이 나타내는 값이다.
$\Rightarrow$ 내가 찾은 선형모형이 의미가 있는지 없는지 보여준다.
F값이 작을 수록 선형모형이 의미없다.
단순회귀분석 예
독립변수 age와 종속변수 heartrate 사이 관계를 가장 잘 설명해주는 선형예측모형(선형회귀모형)을 찾자.
1
2
3
4
5
6
7
8
9
# 단순회귀분석 예
# 종속변수에 영향 미치는 독립변수 1개인 경우
# age 독립변수 와 heartrate 종속변수 사이 관계를
# 설명하는 선형모형을 만들자.
x = c(18, 23, 25, 35, 65, 54, 34, 56, 72, 19, 23, 42, 18, 39, 37)
y = c(202, 186, 187, 180,156, 169, 174, 172, 153, 199, 193, 174, 198, 183, 178)
# x 는 age, y 는 heartrate 데이터
length(x) == length(y)
x, y 변수의 관계를 예상해보기 위해 스캐터 플롯을 그려보자.
1
2
# (x,y) 벡터로 스캐터 플롯 그리기
plot(x,y)
x와 y는 서로 반비례하는 음의 선형 상관관계가 있어보인다.
상관관계가 있는 두 변수 x, y를 가지고, 둘 사이 관계를 가장 잘 설명하는 선형예측모형을 찾아보자.
$\Rightarrow$ 선형회귀분석을 해보자
y에 영향 미치는 독립변수가 $x$ 하나이므로, 단순회귀분석이다.
R로 선형모형을 정의하자.
1
2
3
# 선형모형 정의
lm(y~x) # x를 독립변수, y를 종속변수로 두는 선형모형 객체를 만든다
# intercept 는 최적 b0 값(절편), x값은 최적 b1 값이다.
Coefficients가 내가 구하고자 하는 목표, 가중치 계수들이다.
$ = b_{0}, b_{1}$
$Intercept = b_{0}, 210.0485$
$x = b_{1}, -0.7977$
선형모형 도출 결과에 대해 좀 더 자세히 살펴보자.
1
summary(lm(y~x)) # 회귀분석 결과 상세하게 출력
- Residuals : 잔찻값들이다. 예측값과 정답값 사이 잔찻값들 중 최솟값, 1분위 수, 중앙값, 3분위 수, 최댓값 을 보여준다.
- Coefficients : y 절편 $b_{0}$ 값, x 가중치 계수 $b_{1}$ 값 말한다.
각각 210.04846, -0.79773 이다.
각 값들이 유의미한지 아닌지는 t 검정통계량 값으로 분간한다. 그게 옆에 t-value이다.
그리고 이 검정통계량값에 대한 유의확률이 옆에 Pr 로 나와있다.
유의확률값 옆에 별이 세 개 있는데, 이는 0.01 유의수준에서 ‘가중치 계숫값이 유의미하지 않다’는 귀무가설을 기각하고, ‘계숫값이 유의미하다’라는 대립가설을 채택할 수 있다는 뜻이다.
*참고
- 0.05 < p-value < 0.1 : 유의함 (significant) *
- 0.01 < p-value < 0.05 : 매우 유의함 (highly significant) **
- p-value < 0.01 : 매우 강력하게 유의함 (highly strongly significant) ***
한편, 밑에 $Multiple R-squared$, $Adjusted R-squared$ 값이 있다.
두 값은 내 선형모형이 x,y 사이 관계를 얼마나 잘 설명해주는가? 를 나타내는 값이다.
R-squared 값은 0과 1 사이 값을 갖는데,
- 값이 0이면 내가 찾은 선형모형이 의미가 없는 것이다. x, y 관계를 설명해주지 못한다.
- 값이 1이면 내가 찾은 선형모형이 오차 없이 정확하게 x, y 관계를 설명해 준다는 뜻이다.
그리고 0과 1 사이에서 값이 높을수록 모형이 변수 간 관계를 잘 설명한다.
한편
내 선형회귀모형에 독립변수가 2개 이상이면 $adjusted R-squared$ 값을 고려한다.
내 선형회귀모형에 독립변수가 1개 뿐이면 $Multiple R-squared$ 값을 고려한다.
F-statistics : F 통계량 값은 내가 찾은 선형모형이 유의미한지, 유의미하지 않은지를 설명해주는 값이다. 이 F 통계량 값의 p-value를 보면 된다.
p-value :
귀무가설 - 내 선형모형이 유의미하지 않다.
대립가설 - 내 선형모형이 유의미하다.
를 놓고, p-value 와 특정 유의수준을 비교해 귀무가설을 검정한다. 이 경우 p-value 값이 매우 작기 때문에, 통상적으로 쓰는 모든 유의수준에서 귀무가설을 기각, 대립가설을 채택한다. 곧, ‘내 선형모형이 유의미하다’는 결론을 내린다.
스캐터 플롯 위에 내가 찾은 선형모형(회귀선) 표시하기
1
2
3
# 회귀선 그리기 명령
# 회귀선만 그린다. 회귀분석 명령 아니다.
abline(lm(y~x))
lm 명령써서 내가 찾은 선형모형을 기반으로 회귀선만 그려주는 명령이다.
회귀분석 명령 아니다.
위에서 그렸던 스캐터 플롯 위에 abline 명령으로 회귀선을 표시했다.
내가 찾은 선형모형으로 예측값 출력하기 -1
특정 독립변숫값 $x$를 넣고, 이 값에서의 예측값 $\hat{y}$ 를 출력할 수 있다.
- predict()
1
2
3
4
# 선형회귀모형으로 특정 독립변수일 때 예측값 출력하기
lm_result = lm(y~x)
# 데이터프레임만 들어갈 수 있다.
predict(lm_result, data.frame(x=c(50,79)))# 독립변수 x 값 50, 79 일 때 예측값
- 선형회귀모형 객체를 생성한다.
- 선형회귀모형 객체를 predict() 명령 안에 넣고, 예측값을 구할 독립변숫값들을 데이터프레임 자료형으로 predict() 명령 안에 함께 넣는다.
내가 찾은 선형모형으로 예측값 출력하기 -2
정답 값을 구간추정할 수도 있다.
1
2
3
4
# 90% 신뢰수준 에서 예측값을 구할 수 있다.
predict(lm_result, data.frame(x=sort(x)), level=.9, interval='confidence')
# 99% 신뢰수준에서 예측값 구할 수 있다.
predict(lm_result, data.frame(x=sort(x)), level=.99, interval='confidence')
- 신뢰수준 90%에서 점 추정치(예측값)와 점 추정치 기반으로 정답 값이 있을만한 신뢰구간을 구한 것
- 신뢰수준 99%에서 점 추정치(예측값)와 점 추정치 기반으로 정답 값이 있을만한 신뢰구간을 구한 것
다중 회귀분석
정의:
독립변수 $x$가 2개 이상일 때, 독립변수 $x_{i}$와 종속변수 $y$ 사이 관계를 가장 잘 설명해주는 예측모형 찾기
선형회귀식:
$\hat{y} = b_{0}+b_{1}x_{1}+b_{2}x_{2}+b_{3}x_{3}…b_{n}x_{n}$
정답값과 선형모형 사이 관계
$y_{i} = b_{0}+b_{1}x_{1}+b_{2}x_{2}+…b_{n}x_{n}+\epsilon_{i}$
다중회귀분석 예)
1
2
3
4
5
# 다중회귀분석 -1
x = 1:10
y = sample(1:100,10)
z = x+y
lm(z~x+y) # +는 x, y를 모두 독립변수로 고려하겠다는 뜻이다. z는 종속변수다.
차례로 $b_{0}, b_{1}, b_{2}$ 값을 구했다.
1
2
3
# 다중회귀분석 -2
z = x+y+rnorm(10,0,2) # 10개 표본 추출, 정규분포 기댓값 = 0 , 표준편차 = 2
summary(lm(z~x+y))
- $b_{0}$ 값은 의미없다. $b_{1}, b_{2}$ 값은 모두 유의수준 0.001 에서 ‘유의미 하다’라고 결론지었다.
- Adjusted R-squared 값이 0.9976이다. $r^{2}$ 값이 거의 1에 가깝기 때문에, 이 선형모형 설명력은 매우 뛰어나다고 해석할 수 있다.
- F 통계량값에 대한 p-value(유의확률) 값이 매우 작다. 이 선형모형이 통계적으로 유의미하다고 해석할 수 있다.