Home [수학/확률과 통계] 단순 선형회귀분석, 다중 선형회귀분석
포스트
취소

[수학/확률과 통계] 단순 선형회귀분석, 다중 선형회귀분석

아래 글은 부산대학교 송태호 교수님의 ‘마케팅 애널리틱스’ 수업을 듣고 복습한 뒤, 학습 내용을 제 언어로 바꾸어 기록한 글 입니다.


단순 선형회귀분석

정의 :

독립변수 $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) 

Screen Shot 2021-10-04 at 14 39 14

x와 y는 서로 반비례하는 음의 선형 상관관계가 있어보인다.

상관관계가 있는 두 변수 x, y를 가지고, 둘 사이 관계를 가장 잘 설명하는 선형예측모형을 찾아보자.

$\Rightarrow$ 선형회귀분석을 해보자

y에 영향 미치는 독립변수가 $x$ 하나이므로, 단순회귀분석이다.

R로 선형모형을 정의하자.

1
2
3
# 선형모형 정의 
lm(y~x) # x를 독립변수, y를 종속변수로 두는 선형모형 객체를 만든다
# intercept 는 최적 b0 값(절편), x값은 최적 b1 값이다. 

Screen Shot 2021-10-04 at 14 42 56

Coefficients가 내가 구하고자 하는 목표, 가중치 계수들이다.

$ = b_{0}, b_{1}$

$Intercept = b_{0}, 210.0485$

$x = b_{1}, -0.7977$

선형모형 도출 결과에 대해 좀 더 자세히 살펴보자.

1
summary(lm(y~x)) # 회귀분석 결과 상세하게 출력

Screen Shot 2021-10-04 at 14 50 20

  • 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 명령써서 내가 찾은 선형모형을 기반으로 회귀선만 그려주는 명령이다.

회귀분석 명령 아니다.

Screen Shot 2021-10-04 at 15 21 10

위에서 그렸던 스캐터 플롯 위에 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() 명령 안에 함께 넣는다.

Screen Shot 2021-10-04 at 15 33 12


내가 찾은 선형모형으로 예측값 출력하기 -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%에서 점 추정치(예측값)와 점 추정치 기반으로 정답 값이 있을만한 신뢰구간을 구한 것

Screen Shot 2021-10-04 at 15 35 30

  • 신뢰수준 99%에서 점 추정치(예측값)와 점 추정치 기반으로 정답 값이 있을만한 신뢰구간을 구한 것

Screen Shot 2021-10-04 at 15 36 07


다중 회귀분석

정의:

독립변수 $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는 종속변수다. 

Screen Shot 2021-10-04 at 15 43 48

차례로 $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))

Screen Shot 2021-10-04 at 15 45 11

  • $b_{0}$ 값은 의미없다. $b_{1}, b_{2}$ 값은 모두 유의수준 0.001 에서 ‘유의미 하다’라고 결론지었다.
  • Adjusted R-squared 값이 0.9976이다. $r^{2}$ 값이 거의 1에 가깝기 때문에, 이 선형모형 설명력은 매우 뛰어나다고 해석할 수 있다.
  • F 통계량값에 대한 p-value(유의확률) 값이 매우 작다. 이 선형모형이 통계적으로 유의미하다고 해석할 수 있다.

[수학/확률과 통계] 신뢰구간, 신뢰수준, 표본오차, 표준오차

[2021 인공지능전문가 교육과정 복습] 자료구조 정의, 알고리즘 성능 분석, 빅오 표기법