젠센 부등식에 대해 꽤 길게 앞 포스팅에서 다루었습니다. 사실 이 이야기를 한 이유는 이 포스팅에서 하는 이야기를 하기 위함이었습니다. 바로 회귀분석에서의 로그변환에 관한 이야기입니다. 로그변환은 종속변수(또는 반응변수)가 skew된 분포일 때 정규분포에 가깝게 만들기 위한 목적으로 자주 활용되곤 합니다. [1] (사실 유명한 박스-콕스 변환(Box-Cox transformation)의 일종이기도 하죠) 그런데 여기에는 생각지도 못한 함정이 숨어있습니다. 그리고 이것은 젠센 부등식과 직접적인 관련이 있습니다.
아이디어는 다음과 같습니다. (엄밀한 증명은 아닙니다) 회귀분석의 일반적인 공식을 떠올려 봅시다:
그런데 여기서 \(Y\) 대신 \(\log(Y)\)를 쓴다면 다음과 같은 모델을 핏팅하는 것과 같습니다:
그런데 젠센 부등식에 의하면 다음이 성립합니다:
양변의 \(\exp(\cdot)\) 를 취하면 다음과 같습니다:
이게 무슨 뜻일까요? 조금만 생각해 보면 알 수 있습니다. \(Y\)에 대한 기댓값 대신 \(\log(Y)\)에 대한 기댓값을 회귀모형을 통해 얻은 다음 그것을 \(\exp(\cdot)\) 해서 원래 스케일로 돌려놓아도 참 기댓값과 일치하지 않는다는 것입니다. 그런데 많은 사람들이 실제로 이렇게 합니다. 즉 Y가 정규분포가 아닌 상황에서 로그를 취해 정규분포에 가깝게 만든 다음 회귀식을 핏팅하고, 그로부터 얻어진 예측값을 다시 \(\exp(\cdot)\) 하여 fitted value를 구하는 것입니다. 하지만 이렇게 하면 참 기댓값보다 평균적으로 작을 것이라 예측할 수 있다는 것입니다.
실제로 R에서 시뮬레이션을 해 보면 이것이 참이라는 것을 알 수 있습니다. 즉 로그변환을 한 후 핏팅한 회귀식으로부터 얻은 예측치를 다시 \(\exp(\cdot)\) 한 것은 \(Y\)의 참값보다 대체로 작게 나옵니다:
# Generate some data
n <- 10000
beta <- 2
data <- data.frame(X=rnorm(n, 10, 1))
data$y <- data$X*beta + rnorm(n, 0, 2)
# non-transformed model
model <- lm(y ~ X, data=data)
# log-transformed model
logmodel <- lm(log(y) ~ X, data=data)
# Predictions from non-transformed model
predictions1 <- predict(model, newdata=data)
# Predictions from log-transformed model
predictions2 <- exp(predict(logmodel, newdata=data))
# bias from the ordinary model
mean(predictions1-data$y)
[1] -2.254064e-14
# bias from the log-transformed model
mean(predictions2-data$y)
[1] -0.1029511
앞에서 예측했던 것과 같이 로그 모형을 사용해 예측한 값을 다시 \(\exp(\cdot)\) 한 값은 \(Y\)값에 비해 평균적으로 작습니다. 하지만 변환을 하지 않은 모형을 사용한 예측값은 평균적으로 \(Y\)와 일치합니다 (bias가 0입니다).
로그변환을 하는 것의 다른 한 – 사실 더 중요할 수도 있는 – 문제점은 모형의 해석이 바뀐다는 것입니다. \(Y\)에만 로그를 취하더라도 지금까지 알아본 바와 같이 더 이상 원 스케일에 대한 모형이 아니게 됩니다. 그런데 흔히 \(Y\)뿐 아니라 \(X\)에도 로그를 취한 모형을 자주 사용합니다. 이렇게 핏팅된 모형을 원 스케일로 돌리기 위해 양변에 \(\exp(\cdot)\) 를 취하면 \(X\)와 \(Y\)의 관계는 더 이상 “더하기”의 관계가 아니라 “곱하기”의 관계가 됩니다. 즉 회귀모형이 가정하는 additive model이 아닌 multiplicative model이 되는 것입니다. 이런 상황에서 회귀계수의 의미는 일반적인 “\(X\)가 1 증가할 때 \(Y\)의 증가분에 대한 기댓값” 이 더 이상 아니게 됩니다. 따라서 해석을 달리해야 하는데, 이것이 적절한지는 상황에 따라 다를 수 있습니다.
정리하자면, 회귀분석에서 변수를 변환하는 것은 분포 가정을 만족시키기 위한 목적으로 흔히 활용되지만, 그 결과 unbiasedness가 깨지거나 해석이 곤란해지거나 하는 문제들이 있습니다. 변수 변환은 이런 결과들을 충분히 감안하고 활용해야 하지만 현업에서는 충분히 고려되지 않는 감이 있습니다. 참고문헌은 이런 변수변환의 주의사항들에 대해 언급하고 있습니다.
참고문헌
[1] 사실 회귀분석에서 정규분포를 따라야 하는 것은 잔차이지 종속변수 자체가 아닙니다. 이 목적 자체도 정당화되기는 조금 힘듭니다. 하지만 많이 쓰이기 때문에 언급했습니다.