쿠폰 1장을 가져가면 n개의 사탕을 주는 가게가 있다고 하자.
첫째 날 1장을 가지고 가 2개의 사탕을 받았고,
둘째 날 2장을 가지고 가 4개의 사탕을 받았고,
셋째 날 3장을 가지고 가 6개의 사탕을 받았고,
넷째 날 4장을 가지고 가 8개의 사탕을 받았다.
다음 날 쿠폰을 10장 가져간다면 몇 개의 사탕을 받을 수 있을까?
물론 아닐수도 있지만, 대부분은 20개의 사탕을 받을 수 있을 것이라고 예상하고 이러한 추론은 어느정도 타당하다.
다음으로 이렇게 다시 가정해보자.
첫째 날 1장을 가지고 가 2개의 사탕을 받았고,
둘째 날 2장을 가지고 가 3개의 사탕을 받았고,
셋째 날 3장을 가지고 가 6개의 사탕을 받았고,
넷째 날 4장을 가지고 가 7개의 사탕을 받았다.
이럴 때면 다음 날 쿠폰을 가져갈 때 받을 수 있는 사탕의 개수를 짐작할 수 있을까?
확신할 순 없지만 어느정도 받을 수 있을거라는 감은 있을 것다.
이 또한 아닐 수 있지만, 어느정도 타당하게 여겨질 것이다.
첫번째 사례에서 쿠폰 당 2개의 사탕을 준다고 짐작했다면,
두번째 사례에선 쿠폰 당 사탕 몇 개를 주는지 어떻게 말할 수 있을까?
아래의 선에 대해 생각해보자.

우리는 네 점을 이어주는 선에 대해 고려할 수 있다.
하지만 하나의 직선으로 4개의 점을 한 번에 이을 순 없다.
그렇다면 모든 점을 다 지나진 않는 직선을 그리던가, 네점을 모두 이을수있는 곡선을 생각할 수 있다.
첫째로 곡선을 그었을 때, 쿠폰을 10장 가져가면 몇장을 받을 수 있을지 쉽게 떠올릴 수 있을까?
내 머릿 속에서 쉽게 떠오른다고 해도 다른 사람이 타당하다고 할 수 있을까?
불가능하진 않지만 너무 복잡하고, 그렇게까지 완벽하게 알고 싶진 않을 것이다.(사실 완벽하지도 않음.)
다시 모든 점을 다 지나진 않지만, 단순한 직선을 생각해보자.
이 직선을 그으면 직선의 기울기가 주어지기 때문에 한 개의 쿠폰 당 몇개의 사탕을 받을지 쉽게 짐작할 수 있다.
이렇게 직관적으로 이해하기 편하기 때문에 두 변수 간 추세(선형 증감)을 판단하는데는 선형회귀분석을 활용한다.
단순한 직선을 긋기로 했으니, 이제 이 직선을 어떻게 그어야 다른 사람(상사)이 합리적으로 받아들일 수 있을까?
- 우리는 직선을 긋고나면 예측값으로 직선 위의 점을 선택할 것이다.
현재 가지고 있는 값(이 경우엔 4개의 점)을 알고 있으니,
쿠폰의 개수가 같을 때 직선 상의 점과 실제 점 사이의 차이가 가장 작아지도록 만들면 좋을 것이다.
수식을 적어서 보이기 번거로운 관계로, 이러한 작업을 수행하여 위의 직선을 그리는 방법이 "회귀분석"이다.
다만 직선 상의 점과 실제 점 사이의 차이를 어떻게 정의하느냐에 따라 이 직선은 달라질 수 있다.
(합리적으로 받아들일 수 있는 직선을 긋는 것이지, 결코 어떤 상황에서도 들어맞는 최고의 직선을 찾는 것이 아니다.)
이 경우엔 쿠폰 한 장당 1.8개(직선의 기울기)의 사탕을 받을 수 있을거라고 생각할 수 있다.
> lm(candy~coupon,data=a)
Call:
lm(formula = candy ~ coupon, data = a)
Coefficients:
(Intercept) coupon
0.0 1.8
예제가 간단하여 이러한 직선이 왜 필요할지 납득하지 못할 수도 있다.
아래의 예제를 살펴보자.
온도(temp)와 자전거 렌탈 수요(count)에 대한 정보이며, 자료는 약 10,000개의 행을 가지고 있다.
아래의 그림은 10,000개 中 랜덤하게 1,000개를 뽑아 대응하는 점을 찍은 것이다.

이것을 보고 23도일 때의 자전거 수요를 바로 이야기할 수 있을까?
이런 경우에 위의 예제보다 더욱 효과적으로 회귀직선을 사용할 수 있을 것이다.
아래는 회귀직선을 그은 것이다.

> mdl <- lm(count~temp, data=train[smp,])
> mdl
Call:
lm(formula = count ~ temp, data = train[smp, ])
Coefficients:
(Intercept) temp
22.783 8.333
직선을 그을 수 있고, 1도가 올라갈 때 약 8개의 자전거 수요가 상승한다고 말할 수 있을 것이다.
이 자료의 경우 자료 자체가 가진 퍼진 정도가 크고, 자전거 수요가 낮은 경우가 많기에 눈에 보이는 것보다 직선이 낮게 잡혔다.
이 직선으로 특정 일자의 자전거 수요를 예측한다면, 잘 맞추는 것을 기대하긴 어려울 것이다.
하지만 눈으로 보기에 어지러운 자료들을 어떤 기준으로 정리하여 직선으로 나타낼 수 있다는 것에 의의가 있다.
인공지능, 딥러닝 등을 논하는 시기에 왠 선형회귀냐 하겠지만
호랑이 잡는 칼(?)로 사과를 깎을 수 없듯, 직관적으로 추세를 확인하기에 여전히 긍정적으로 활용할 여지가 있다.
(사실 선형회귀를 모르면 딥러닝 원리도 이해할 수 없다.)
=========================================================================
위의 진행은 통계 프로그램인 R로 진행되었다.
이 추세선의 정도(기울기)를 엑셀로 구하려면 어떻게 해야할까?
다행히 하나하나 계산하지 않아도 'LINEST', 'INTERCEPT' 의 두가지 함수로 선형회귀의 계수를 구할 수 있다.
※ 수식 또는 입력해야할 자료에서 y는 분석(예측)할 값, x는 분석(예측)을 위해 준비된 값을 말한다.

위에서 R로 구한 값과 왜 다르지? 라고 생각하시는 분을 위해 아래에 결과를 제시한다.
자료는 동일하지만, 위에서는 10,000개의 점을 모두 찍으면 시각적으로 보기가 싫어서 1000개만 샘플링하고 회귀직선을 만든 것이기 때문에 다르다.

이상 수식이 없어 실망하실 수 있지만, 엑셀로 회귀계수 구하는 법을 찾다가 작성한 내용이기에 양해를 구한다.
회귀 직선이 타당한지를 살피는 여러가지 기준과 방법이 있는데,
이는 회귀직선의 계수를 어떻게 구하는 지를 이해해야 올바르게 사용이 가능하므로 여기서 다루지 않는다.
(다른 분의 블로그 들어가서 찾아봐도 많음...)