비선형회귀분석: 회귀분석에서의 변수 변환
개요 1
회귀분석은 기본적으로 변수들간의 선형관계를 밝히는 방법이지만, 필요하다면 데이터를 선형으로 ‘펴서’ 분석할 수 있다. 이는 본질적으로 종속변수를 독립변수의 비선형결합으로 설명하는 것이다.
실습
내장데이터 Pressure
데이터를 불러와보자.
Pressure
데이터는 사실 통계적으로 분석할 필요는 없다.
이는 어디까지나 자연현상이기 때문에 실험만큼이나 수학적인 증명이 필요하고, ‘인과관계’에 관심이 더 많기 때문이다. 그러나 이것을 굳이 회귀분석으로 분석하고 싶을 땐 할 수 있어야 할 것이다. 다만 위 데이터에 대한 회귀식 $$(\text{pressure}) = \beta_{0 } + \beta_{1 } ( \text{temperature} ) + \varepsilon$$ 은 아마 의미가 없을 것이다. 해서, 독립변수에 로그를 취한 $\log ( \text{temperature} )$ 와 종속변수에 로그를 취한 $\log (\text{pressure})$ 를 새로운 변수로 사용해보자. 이렇게 새로이 만들어지는 회귀식을 $$\log (\text{pressure}) = \log {b_{0 }} + {b_{1 }} \log ( \text{temperature} )+ \varepsilon$$ 이라고 하자. 만약 이 분석이 제대로 됐다면, $$\log (\text{pressure}) = \log {b_{0 }} ( \text{temperature} )^{{b_{1 }}}+ \varepsilon$$ 이므로 양변의 로그를 풀면 $$ (\text{pressure}) = b_{0 } ( \text{temperature} )^{{b_{1 }}} + \varepsilon $$ 과 같은 관계식을 유도할 수 있을 것이다. 당연하게도 이러한 식은 실제 물리학에서도 비슷한 모양으로 등장한다. 각각의 회귀분석을 실시하고 회귀직선을 그어보면 아래와 같다.
로그를 취했다 푸는 수식적인 조작은 사람의 몫이다.
- 왼쪽은 아무런 핸들링 없이 자료를 분석하려고 했으나 회귀분석이 필요로 하는 조건을 전혀 만족시키지 못해 의미가 없다.
- 오른쪽은 로그스케일을 취한 것인데, 매우 높은 설명력으로 데이터의 추이를 놀랍도록 정확히 나타내주는 것을 확인할 수 있다. 물론 엄밀히 말하자면 잔차분석에 문제가 있어 통계적으로 완벽하다고 할 순 없지만, 데이터를 충분히 잘 설명하는 것도 사실이다.
코드
아래는 R 예제 코드다.
pressure; ?pressure
win.graph(4,4)
plot(pressure,main='Pressure\')
win.graph(8,4); par(mfrow=c(1,2))
out1<-lm(temperature~pressure,data=pressure); summary(out1)
plot(pressure,main='scale\'); abline(out1,col='red')
y<-pressure[-1,]$pressure; logtemp<-log(y)
x<-pressure[-1,]$temperature; logpress<-log(x)
out2<-lm(logtemp~logpress); summary(out2)
plot(logpress,logtemp,main='log scale\'); abline(out2,col='red')
같이보기
Hadi. (2006). Regression Analysis by Example(4th Edition): p152. ↩︎