본문 바로가기
데이터를 로그 변환 했을 때 벌어지는 일과 결과 해석

가끔 보면 회귀분석에서 데이터에 로그를 씌워서 뭔가를 할 때가 있는데 말이죠. 로그를 씌우면 어떤 일이 벌어질까요? 이게 꽤나 유용하니까 하는 것일 테니 이번에는 무슨 일이 벌어지는지 알고 지나가면 좋겠습니다. 

일단 로그는 큰 수를 작은 수로 바꿔 주는 것입니다. 헤헤. 간단하쥬? 이게 별거 아닌 것 같지만 굉장히 유용하게 사용됩니다. 예를 들면 10000을 보면 10000은 10⁴이죠. 여기에 log를 씌우면 log10⁴ = 4입니다. 1000이 4가 되는 매직 입죠. 엄청 큰 수가 작은 수로 표현이 되겠습니다. 게다가 log를 씌우게 되면 곱하기를 더하기로 나누기를 빼기로 다룰 수 있기 때문에 매우 편리합니다. 사실 이런 이야기는 귀에 딱지가 앉도록 들었습니다만. 자세히 들여다보는 시간을 가져보죠. 쩝.

그러면 일단 어떤 문제상황에서 로그를 씌우면 좋을까를 한번 생각해 본다면, 분포가 치우쳐져 있을 때 매우 유용합니다. 

 

기억이 날지 모르겠지만, "정규성검정과 등분산성가정은 잊고 편한 삶을" 편에서 Skewed 분포를 본 적이 있었는데, 여튼 이럴 때 이런 치우친 분포를 Symmetry 하게 만들면 분포가 운이 좋으면 정규성을 보이게 만들 수 있어서 좋습니다. 그르니까 어디에 씌우면 좋을까요? 답) Positive Skewed 왼쪽으로 몰린 경우에 사용하면 좋습니다. 헛. 그런가요? 왜 그런지 자, 한번 보세요.

 

이런 식으로 왼쪽으로 치우진 분포의 x에 로그를 씌우면 적당히 모을 수 있습니다. 운이 좋으면 정규성을 보일 수도 있습니다. 

그러면 오른쪽으로 몰린 분포는 난 몰라 할거냐? 하면 로그의 역함수인 지수함수를 이용할 수 있습니다. 자, 보세요.

 

헤헿. 꽤나 유용하지요? 자, 그러면 이런 식으로 데이터를 변환했을 때에는 그에 대한 해석을 신경 써서 해야 하겠습니다. 아무래도 로그를 씌웠으니 해석이 달라지겠죠? 어쨌든 일단 그런 경우들을 정리를 해 보면, 다음의 3가지 경우의 변환 경우가 있겠습니다. 이제부터 이야기하는 것은 상용로그가 아니라 자연로그입니다. - 상용로그로 하나, 자연로그로 하나 같은 이야기이긴 한데, 그럼 자연로그로 하면 어떻게 되나요? 하고 궁금해하는 사람이 있을 까봐 어차피 같은 이야기지만 자연로그로 바꿔서 설명하겠습니다. - 그리고 로그가 취해진 변수는 % 단위로 변화한다고 생각해 주세요.

자, 그 경우의 수라는 건,
⓵ 독립변수에만 로그가 취해진 경우
⓶ 종속변수에만 로그가 취해진 경우 
⓷ 둘다 로그가 취해진 경우 가 있을 수 있겠습니다. 

구체적인 예와 해석을 들어보면, 

⓵ 독립변수에만 로그가 취해진 경우
   회귀) y = 상수항 + 1234*ln(x) 이라면 
   해석) x가 1% 변화할 때 y의 변화량은 12.34이다.  

⓶ 종속변수에만 로그가 취해진 경우 
   회귀) ln(y) = 상수항 + 0.1234*(x)
   해석) x가 1 증가할 때 y는 12.34%증가한다.

⓷ 둘 다 로그가 취해진 경우 
   회귀) ln(y) = 상수항 + 0.413*ln(x)
   해석) x가 1% 증가할 때, y는 0.4% 증가한다. 

간단하죠. -라고 해봐야 계속 헷갈립니다. - 일단은 이게 왜 이렇게 해석되는 지를 보자면, 

⓵ 독립변수에 로그를 취하게 되면, $y = Constant + b\, ln(x)$ 이니까, 양변을 미분하면 

$$ dy = b \cfrac{dx}{x} $$

오, 이렇게 됩니다. 그러면 우변은 x에 대하여 dx만큼 변화하는 변화율이 됩니다. 이걸 변화율 퍼센트로 표시하면 편하니까 100을 곱하면, y의 변화는 b/100이 됩니다. 

$$ dy = \cfrac{b}{100} \cdot \left(100 \cfrac{dx}{x} \% \right) $$
이런 식이 되는 거죠. 그래서 x가 1% 변할 때 y는 b/100만큼 변합니다. 

⓶ 종속변수에 로그를 취하면 $ln(y) = Constant + bx$ 이니까 같은 식으로 양변을 미분하면,

$$ \cfrac{dy}{y} = b \, dx $$ 

가 됩니다. 이것도 y변화율을 퍼센트로 나타내면 

$$ \left( \cfrac{dy}{y}\cdot 100 \% \right)  = b\, dx \cdot 100$$ 

가 됩니다. 이것 역시 y변화율을 퍼센트로 나타내고 싶으면 y변화율에 100이 곱해지면 되니까 

그러니까 x가 1 변할 때 100•b% 만큼 변합니다. 

⓷ 마지막으로 둘 다에 로그가 취해졌을 때에는  $ ln(y) = Constant + b\, ln(x) $잖아요? 똑같이 미분을 해서 퍼센티지로 바꿔주면 

$$ 100 \cfrac{dy}{y} = 100\,b\, \cfrac{dx}{x} $$ 가 됩니다. 그러니까 x가 1% 변할 때 y는 b% 변하게 됩니다. 

이거 뭐 꽤 유용한 방법입니다만, 이게 외워서 머릿속에서 전환하기에는 좀 많이 헷갈립니다. 어쨌든 대~충의 방법이라는 점을 알면 좋겠습니다. 정확하게 계산하게 되면 조금 더 복잡하긴 한데, 그래도 이 정도면 꽤나 괜찮은 방법이라고 생각합니다.

이게 쉬운 것처럼 쓰긴 했지만, 평소에 마구 생각의 전환이 잘 안 될 수가 있습니다. 그래서 쉽게 생각할 수 있는 방법을 소개합니다. 일타강사 공식 소개처럼 말이죠.

일단 로그가 붙은 변수는 퍼센트로 생각하고, $ ln = \cfrac{1}{100}$ 으로 생각하면 곧바로 읽을 수 있습니다. 자 보세요. 금방 쌉 가능합니다.  

⓵ 독립변수에만 로그가 취해진 경우
   회귀) y = 상수항 + 1234*ln(x) 이라면 
   전환) 로그가 취해진 x는 %로 변화합니다. 이때 로그를 1/100으로 생각하면 y는 1234/100이니까 12.34 변화합니다. 
   해석) x가 1% 변화할 때 y의 변화량은 12.34이다.  

⓶ 종속변수에만 로그가 취해진 경우 
   회귀) ln(y) = 상수항 + 0.1234*(x)
   전환) 로그가 취해진 y가 %로 변화합니다. ln이 1/100이니까, 0.1234*100이 되어야 하겠죠. 그러면 y는 12.34% 변화합니다. 언제? x가 1 단위 변화할 때요.
   해석) x가 1 증가할 때 y는 12.34% 증가한다.

⓷ 둘 다 로그가 취해진 경우 
   회귀) ln(y) = 상수항 + 0.413*ln(x)
   전환) 이거는 양쪽이 모두 로그가 취해졌기 때문에 그냥 %로 해석하면 됩니다. 
   해석) x가 1% 증가할 때, y는 0.4% 증가한다. 
   
어떤가요? 어느 정도 전환이 좀 쉬워지지 않겠어요? 근데 이런 해석은 미분을 통해서 얻은 변화율이기 때문에 x의 변화가 작을 때 써먹는 방법이지만, rough 하게 매우 유용합니다. 

걍 로그를 씌우는 것이 큰 값을 확~ 작게, 작은 값을 적당히 작게라는 것만 잘 기억해도 어느 정도 성공입니다. 왜냐하면 대부분의 데이터가 Positive Skew 형태를 많이 취하거든요.  

친절한 데이터 사이언스 강좌 글 전체 목차 (링크) -



댓글





친절한 데이터 사이언스 강좌 글 전체 목차 (링크) -