자드's

[ R ] R을 통한 회귀분석 (단순선형모델) 본문

프로그래밍/R

[ R ] R을 통한 회귀분석 (단순선형모델)

최자드 2022. 10. 26. 01:58
728x90

오늘의 복습

 

선형회귀분석

말부터 어렵다 다가오질 않는다...


선형성

직선처럼 똑바른 도형, 또는 그와 비슷한 성질을 갖는 대상이라는 뜻으로,

이러한 성질을 갖고 있는 변환 등에 대하여 쓰는 용어이다.

함수의 경우, 어떠한 함수가 진행하는 모양이 '직선'이라는 의미로 사용된다.

이러한 개념은 수학, 물리학 등에서 많이 사용된다.

 

...위키 백과 발췌 내용인데 대충 느낌이 균일하게 진행되는 느낌


선형회귀분석이란?

두 변수간에 상관관계와, 인과관계가 있는경우

두 변수를 선형함수식으로 모델링하는 분석방법이라고 함

 

 

이를 하기 위해선 몇가지 알고 넘어가야 할 것 같다

독립변수, 종속변수, 상관계수 등...

 

 

 

 

먼저 독립변수와 종속변수는 원인과 결과

 

 

 

상관계수란 두 변수 사이의 인과 관계를 숫자로 나타낸 값 이란다

(머신러닝의 꽃인 회귀분석의 선행작업이래....요)

이 상관계수를 구하는 방법으로는 공분산을 표준화시키는 방법이 있다

 

 

공분산이란?

 두 변수가 어떤 패턴을 보여주는가를 나타내는 것인데

양수이면 x 값이 증가하면 y값이 증가 음수이면 x값이 감소하면 y값이 감소 0이면 아무 관계가 없음을 나타내는 것임

공분산으로 두 변수의 관계가 어떤 관계인지 알 수 있지만

그것 만으로는 얼마나 서로 관련있는지 (관계의 크기를) 알 수가 없다

 

 

 

단편적으로 ,

아래의 두개의 모델은 패턴이 정확하게 일치하지만

공분산(cov)의 값이 다르다

이처럼 인과성은 알 수 있어도 크기는 알 수 없기 때문에

표준화를 거치는 과정이 필요하다

 

이 표준화를 거치면 구해지는 것이  '상관계수' 이다

상관계수를 구함으로써 방향과 크기 둘 다 알 수 있다.

 

 

상관계수( r ) 를 구하는 공식은 다음과 같다

(왼쪽을 수식으로 쓴 것이 오른쪽)

공식이 있지만 어떻게 구해지는지 인지만 하고

우리는 R의 내장함수인 cor(x,y) 를 통해서 구하면 된다고 한다

 

회귀분석을 위한 작업으로 상관계수도 구했으니

본격적으로 회귀분석을 시작해보자

 


선형 회귀 분석

선형회귀분석은 최소제곱법을 이용하여 최적의 추세선을 구하는 것이다

모델의 각 데이터들이 추세선과의 잔차가 가장 적을 때가 최적이 추세선이라고 할 수 있다

이 추세선(예측값)은 y = ax + b 라는 선형함수의 형태를 띄고 있기 때문에

선형회귀분석 이라고 한다

 

 

 

독립변수가 한개일 경우에는 단순회귀분석

독립변수가 여러개일 경우엔 다중회귀분석이라고 하는데

 

오늘은 단순회귀분석을 해봤다

 

 

 

R에서 dataset을 이용해 예시를 하나 들어보았다

5개의 데이터가 보인다

 

# lm( y변수 ~ x변수, data= 추출할 dataset )

먼저, 최소제곱법을 이용해서 기울기와 절편을 구한다

기울기를 구했다면 b = y - ax 를 통해서 절편도 구할 수 있다

(이 또한 구하는 공식만 알아두고 R의 내장함수 lm( )을 사용하자)

기울기를 구하는 공식

 

 

 

lm(formula=y~x)을 통해서 기울기= 0.94,  절편= -4.20 라는값을 구해서

line_model 이라는 변수에 담아주었고

 

 

 

R에서 plot(x,y)를 통해 산점도를 나타내주고

abline(line_model)을 통해 추세선을 표시했다

위처럼 단순선형회귀 모델링을 하여

최적의 추세선이 그어졌다

 

 

이 추세선을 이용하여 x값을 대입하여 y값을 예측할 수 있다


 

 

회귀분석을 하는 이유는

독립변수x를 통하여 y를 예측하기 위함이다

물론, 예측값과 실제값은 다르다

예측값과 실제값이 같다면 통계가 필요없겠지..

말 그대로 예측만 하는거임

위에서 구한 기울기와 절편을 대입한 식( y = 0.94x + ( - 4.20 ) )을 이용해서 예측값을 구할 수 있다

 

predict(기울기절편값, data.frame(x=c( .....)) ) 를 통해서

여러개의 예측값을 한번에 구할 수도 있다

 

 


 

중구난방으로 정리도 제대로 안되는거 같은데

 

회귀분석을 어떻게 하는지

회귀식을 구하기위한 공분산, 상관계수 등등 어떻게 구하는지를 과정을 알아보았다

직접 일일히 다 구할 필요는 없고 만들어진 내장함수를 이용해서 분석을 하면 된다고 했다

 

중요한건 회귀분석을 "왜" 하는지였고

이유는 "예측"을 하기위해서다

 

통계를 통해서 예측값을 구해서 사용하는 곳은 아주 많다

 

결이 조금 다른 얘기지만

네비게이션의 예상 도착시간도 예측값을 구하는 분석을 통해 알려줄 수 있는게 아닐까?

라는 생각을 해본다 (아님 말고) 

 

실생활에서 많이 보이는만큼 많이 쓰이고 그만큼 중요하지 않을까

머신러닝의 꽃이라고 하니 좀 더 고찰이 필요한 부분인 것 같다

 

많이 보완해야지

(근데 너무 어려움..)

 

회귀분석을 위한 내용이라 밑작업에 대한 설명들이 많이 부족한 거 같았는데

따로 공부해서 다시 올려보도록 해야겠다

 

 

 

 

 

 

 

 

728x90
Comments