부분회귀 기초개념

2019-04-23

.

그림, 실습코드 등 학습자료 출처 : https://datascienceschool.net

1. 부분회귀 개요

1

2

2. Frisch–Waugh–Lovell(FWL) 정리

위와 같은 결과를 일반적으로 정리한 것이 Frisch–Waugh–Lovell 정리이다.

어떤 독립변수 x1으로 나머지 독립변수 x2를 선형회귀분석하여 나온 잔차 x2* 가 있다고 치자.

(아래 그림의 초록색 화살표 STEP1))

이는 무슨의미냐면 x1과 x2로 y를 선형회귀분석을 할건데 그거하기전에 x1으로 x2를 선형회귀분석을 하는 것이다. 이말은 x1으로 x2를 예측할 수 있는 것인지 보는것이다. 다시말해 x들끼리 선형회귀분석으로 예측할 수 있는지 본다는 것이다. 그러면 이렇게 x1으로 x2를 선형회귀분석을 하고 나면 예측값도 생길것이고, 잔차도 생길 것이다. 그 잔차를 x2* 라고하자. x2*(잔차)는 내가 x1으로 x2를 예측하려고 했는데 도저치 예측못하고 남은 값을 말한다. x1으로도 예측이 안되는 x2의 어떤 성분을 말하는 것이다.

그 다음에 x1 로 종속 변수 y를 선형회귀분석하여 나온 잔차 y* 라고하자.

(아래 그림의 하늘색 화살표 STEP2))

그 다음에 X2* 로 y* 를 선형회귀분석하여 나온 가중치를 w2라고하자.

(아래 그림의 빨간색 화살표 STEP3))

x1과 x2로 y를 선형회귀 분석하여 나온 x2의 가중치도 w1이라고하면 w1과 w2는 같다.

(아래 그림의 노란색 화살표 STEP4))

위의 과정을 아래와 같이 도식화하면 다음과 같다.

3

3. 부분회귀 플롯(partial regression plot)

위와 같이 FWL 정리를 그림으로 그려주는 것이 부분회귀 플롯이다.

독립 변수의 갯수가 많을 경우에 특정한 하나의 독립 변수의 영향력을 시각화하는 방법이다.

STEP1) 특정한 독립 변수 z 를 제외한 나머지 독립 변수 x 들로 종속 변수 y 를 선형 회귀분석하여 잔차 y* 를 구한다.

STEP2) 특정한 독립 변수 z 를 제외한 나머지 독립 변수 x 들로 특정한 독립 변수 z 를 선형 회귀분석하여 잔차 z* 를 구한다.

STEP3) 잔차 z* 를 독립 변수로, 잔차 y* 를 종속 변수로 하여 선형 회귀분석한다.

부분 회귀 플롯을 그리기 위해서는 3번의 선형 회귀분석을 해야 한다.

이렇게 구한 z* , y* 의 스캐터 플롯과 회귀분석 결과를 나타낸 것이 부분 회귀 플롯이다.

결국은 위의 그림에서 하는 작업과 같다.

예를들어 범죄율과 집값간의 상관관계를 알아본다고 가정하자. 독립변수와 종속변수간의 전체적인 플롯을 그렸는데 범죄율이 증가하는데 집값이 오히려 증가하는 상식적으로 납득이 안되는 경우가 있다. 그렇다면 범죄율은 집값에 긍정적인 영향을 미치는것인가. 사실은 그게 아니라 범죄율이 왜 증가했는지 알아보려고 보니까 이 동네가 역세권이고 사람이 엄청나게 모여살고 부자집도 많고 이런요소가 있었다. 그래서 범죄율이 증가하는 것이다. 그래서 다른 모든조건들이 좋기 때문에 범죄율도 증가하고 집값도 증가하는 현상이 보일 수 있다.

결론은 그냥 범죄율과 집값을 그려서 이게 positive한 관계네 nagative한 관계네 하고 판단하면 안된다.

statesmodels로 부분회귀 플롯을 그려서 보게되면 가로축의 값은 독립 변수 자체의 값이 아니라 어떤 독립 변수에서 다른 독립 변수의 영향을 제거한 일종의 ‘순수한 독립변수 성분’을 뜻하게 된다. 결론적으로는 위의 도식화 된 FWL 그림에서 x2* 로 y* 를 선형회귀를 한것이라고 생각하면 되고, 그걸봐야지 x2의 순수한 성분이 y어떤 영향을 끼치는지 알 수 있다는 것이다.

부분회귀 플롯을 그리면 CONST라는 성분이 보일때가 있는데 이는 상수항이 종속변수에 positive한 영향을 주는지 nagative한 영향을 주는지 보여주는게 아니라 그냥 상수항이 있냐 없냐 이렇게 생각하면 된다. CONST 성분이 있으면 상수항이 있는거고, 없으면 없는것이다.

부분회귀 플롯이랑 비슷한 개념으로 CCPR(Component-Component plus Residual) 플롯이라는게 있는데 이거는 FWL 정리를 이용한게 아니라 아예 다넣고 회귀분석한 다음에 그림 그릴때만 다른 독립변수를 지우고 그리게 된다. 그래서 이 플롯은 별로 안쓴다.