본문 바로가기

자기계발/데이터사이언스

[통계] Simple Linear Regression(단순선형회귀) 개념과 R 실습

반응형

저번 글에서는 머신러닝의 개념을 인공지능과 비교하여 알아보았다. 머신러닝의 종류로 Supervised Learning(지도학습), Unsupervised Learning(비지도학습) 그리고 Reinforcement Learning(강화학습)가 있다고 했다. 오늘은 Supervised Learning(지도학습)의 한 예로 Regression(회귀분석)에 대하여 정리하고자 한다. 특히 이번 글에서는 통계학의 관점에서 Simple Lineaer Regression(단순선형회귀분석)을 다루도록 하겠다.

2020/01/14 - [관심거리 -> 자기계발/데이터사이언스] - [머신러닝] 인공지능과 머신러닝이란, 머신러닝의 종류

 

[머신러닝] 인공지능과 머신러닝이란, 머신러닝의 종류

우선 글을 시작하기 앞서서, 나는 컴퓨터 공학 전공도 아니고, 통계학을 깊게 공부하지도 않은 비전공자 일반인이다. 대학원 진학을 앞두고 통계학이 도움이 될 것 같아서 저번 학기에 통계학 과목을 수강하게 되..

dragsoseumon.tistory.com

 

 


Simple Linear Regression의 의미와 개념

먼저, Regression(회귀)이란 independent(독립변수, 실험변수, 설명변수, 예측변수 라고 함)와 dependent(종속변수, 결과변수)사이의 함수적인 관계를 나타내는 것이다.

Simple Linear Regression(단순선형회귀)은 독립변수와 종속변수가 각각 하나씩인 경우이다. 독립변수를 x, 종속변수를 y라고 생각했을 때 가장 이 둘 사이의 관계를 잘 나타내는 함수를 찾는 것이다. Simple Linear Regression의 함수는 다음과 같이 선형인 일차식으로 나타낼 수 있따.

이때 β는 모델의 기울기를 의미하고, 다음과 같이 구할 수 있다. (x bar, y bar는 평균을 의미)

분자와 분모를 각각 (n-1)로 나누어주면, = Cov(x,y) / Var(x)이 된다. 이를 해석하자면 x축 방향으로의 Variance에 따른 y축으로의 변화 경향(Covariance)을 의미한다. 


Simple Linear Regression을 R에서 실습해보기

그러면 이렇게 얻은 Regression Line이 통계적으로 유의미한지 알아보아야 한다. 다시 말하면  Regression Line의 기울기와 y절편이 0과 유의미하게 차이가 있어서, 독립변수와 종속변수와의 관계가 유의미하다고 결론을 내릴 수 있는지 확인해야 하는 것이다.

예를 들어서, 어떤 식물의 잎으로부터 진통제 성분의 재료를 얻고자 한다. 그 때 잎의 부피에 따른 진통제 성분의 양이 상관관계가 있는지, 상관관계가 있다면 그 관계를 설명할 수 있는 식을 얻고자 한다.

table_poppy <- data.frame(Volume_foliage = c(0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9), 
                          Weight_opioids = c(25, 42, 71, 103, 111, 142, 164, 191, 220))
attach(table_poppy)                          

foliage의 volume에 따른 opioids의 weight 표.

 

 

 

scatter.smooth(x = Volume_foliage, y = Weight_opioids)

x 값(foliage의 volume)과 y값(opioids의 weight)의 상관관계 유무를 눈으로 알아보기 위해서 scatter plot을 그려본다. 다음과 같은 plot을 얻을 수 있는데 한 눈에 봐도 둘 사이에 상관관계가 존재하는 것처럼 보인다.

 

 

 

fit = lm(Weight_opioids ~ Volume_foliage)
summary(fit)

x 값(foliage의 volume)에 따른 y값(opioids의 weight)의 관계를 나타내는 model을 fitting 한다. 그 결과 Intercept(model의 y절편)이 -2.2로 추정되기는 하는데, p value가 0.5가 나와서 확신하기는 어렵고, 기울기는 242가 나왔고 p value가 0.05보다 작기 때문에 통계적으로 유의미하다고 할 수 있다.

또한 오차항의 표준편차 추정값(RSE)는 5.198이 나왔고, 이는 foliage의 volume으로부터 opioids의 weight을 추정할 때 평균 5.198만큼의 오차가 생길 수 있음을 의미한다.

또한 determination(결정계수, 밑에서 설명함)은 0.99로 이 모형을 통해 99% 설명할 수 있음을 의미한다. 그리고 마지막으로 모든 회귀계수가 0(기울기와 y절편이 0)이라는 가정에 대한 F 통계량, 그에따른 p value도 나와있다. P value가 0.05보다 작으므로 귀무가설을 기각하여 이 modle은 통계적으로 의미가 있다는 결론을 내릴 수 있다.

 

 

 

layout(matrix(1:4, 2, 2))
plot(fit)

잔차를 분석하여 잔차가 정규분포를 따르는지, 독립변수가 고르게 분포되어있는지 등을 확인할 수 있다.

 

 

 

layout(matrix(1))
plot(Weight_opioids ~ Volume_foliage)
abline(fit, col = "red")

 

summary(Volume_foliage)
predict(fit, newdata = data.frame(Volume_foliage = c(1.0)), interval = "prediction")

 

 

마지막으로, 주어진 x값(foliage의 volume)이 아닌, 새로운 값으로 1.0을 넣었을 때 y값(opioids의 weight)이 어떻게 예측될 지 계산해보았다. 

이번 글에서는 Regression 중에서도 Simple Linear Regression의 개념을 알아보았고 직접 데이터를 가지고 R로 실습해보았다. 다음 글에서는 Multiple Linear Regression과 Polynomial Regression에 다루도록 하고, 더 나아가서 통계학이 아닌 머신러닝에서의 Regression은 어떤 차이점이 있는지도 알아보겠다.

 

 

반응형