선형 회귀의 가정, 우회방법, 유의사항
선형 회귀의 가정
선형 회귀의 4가지 가정은 LINE으로 정리할 수 있다. (이 LINE이라는 약어는 어떤 책에서 봤는데, 출처는 정확히 기억나지 않는다.)
- Linearity(선형성) : 종속변수는 설명변수의 선형 함수이다.
- Independence(독립성): 종속변수는 관찰값에 조건부로 독립이다.
- Normality(정규성): 오차의 분포는 정규분포이다.
- Equal Varaince(등분산성): 오차의 분산은 등분산이다.
이는 다음과 같이 간단하게 모형으로 나타낼 수 있다.
\[\mathbb{E}[\mathbf{y}|\mathbf{X}] = \mathbf{X}^T \mathbf{\beta} + \mathbf{e}, \ \ \mathbf{e} \sim \mathcal{N}(\vec{0}, \Sigma), \ \Sigma = \sigma^2 I\]
이때 \(\mathbf{y}\) 는 모든 종속변수값을 포함하는 벡터이고, \(\mathbf{e}\) 역시 모든 종속변수에 포함된 오차항을 나타내는 벡터이다.
선형 회귀 분석은 위의 모형에서 자료를 통해 모수의 벡터 \(\mathbf{\beta}\) 와 모수 \(\sigma^2\) 을 추정한다.
가정에 대한 상세 설명
선형 회귀의 가정을 좀 더 상술해보자.
-
선형성 : 앞에서 말했듯이 선형은 모수의 선형을 얘기한다. 하지만 위의 식을 보면 \(\mathbf{X}^T \mathbf{\beta}\) 는 \(\mathbf{X}\) 의 선형 함수이기도 한다. 그렇지만 관찰된 변수를 필요와 요구에 따라 변환(transformation)할 수 있다. 예를 들어 \(\log x, x^2, \frac{x_1}{x_2}\) 등을 만들어 새로운 설명 변수로 사용할 수 있다. 어쨋든 이 새로운 설명 변수의 선형 함수임은 틀림없다.
-
독립성 : 두 확률변수의 독립성은 흔히 다음과 같이 나타낸다. \(\mathbb{P}(A \cup B) = \mathbb{P}(A) \mathbb{P}(B)\) 또는 \(\mathbb{P}(A|B) = \mathbb{P}(A)\). 의미를 말로 나타내면, “확률변수 \(A\) 는 확률변수 \(B\) 가 무슨 값인지 의해 전혀 영향을 받지 않는다”. 선형회귀에서 “종속변수는 다른 종속변수의 값에 의해 영향을 받지 않는다.”로 요약할 수 있다. 독립적이지 않은 예를 들어보자. 키를 측정할 때 앞의 학생이 키가 커서 뒤의 학생은 자신도 좀 더 키가 커 보이려고 발뒤꿈치를 살짝 올린다면 앞의 측정값이 뒤의 측정값에 영향을 미치는 경우이다. 위의 모형에서는 오차항의 분산-공분산 행렬 \(\Sigma\) 에서 대각원소를 제외한 나머지 원소들이 모두 0이 되는 이유이다( \(\Sigma = \sigma^2 I\) 라면, \(i \neq j\) 일 때, \(\Sigma_{ij}=0\). )
-
정규성 : 오차항은 다변량 정규분포를 띈다. \(\mathcal{N}\) 은 정규분포를 나타낸다.
-
등분산성 : 오차항의 분산은 모든 종속변수에 대해 동일하다. 위의 모형에서 \(\Sigma = \sigma^2 I\) 로 나타낼 수 있는 이유이다. \(\Sigma = \sigma^2 I\) 에서 대각 원소 \(\Sigma_{ii}\) 는 모두 \(\sigma^2\) 이고, 이는 \(y_i\) 의 분산을 나타낸다.
LINE의 가정을 우회하는 방법
-
설명 변수를 변환하여 새로운 설명변수를 만들어냄으로써 설명변수와 결과변수의 관계를 비선형적으로 만들 수 있다.
-
결과 변수를 변환하여 설명변수와 결과변수의 관계를 비선형적으로 만들고, 이분산성을 도입할 수 있다.
결과 변수의 \(\log\) 변환
만약 결과 변수를 변환한다면 등분산성이 적용되지 않는 경우를 나타낼 수 있다. 예를 들어 사회학에서 자주 사용하듯이 결과 변수 임금에 \(\log\) 함수를 적용해보자.
\[\log(\textrm{wage}) = \beta_0 + \beta_1 \textrm{career} + \beta_2 \textrm{edu}\]
여기서 \(\textrm{career}\) 는 경력 연수, \(\textrm{edu}\) 은 교육 연수를 나타낸다.
이를 위의 선형 회귀 모형을 통해 분석한다면, \(\log(\textrm{wage}) = \beta_0 + \beta_1 \textrm{career} + \beta_2 \textrm{edu} + e\) 에서 \(e \sim \mathcal{N}(0, \sigma^2)\) 이고, 이는 \(\textrm{wage} = \exp(\beta_0 + \beta_1 \textrm{career} + \beta_2 \textrm{edu} + e)\) 과 동일하다.
이를 다시 정리하면 다음과 같다.
\[\textrm{wage} = \exp(\beta_0 + \beta_1 \textrm{career} + \beta_2 \textrm{edu}) \cdot \exp(e)\]
여기서 다시 평균과 분산을 구해보자.
\(\mathbb{E}[\textrm{wage}] = \mathbb{E}[\exp(\beta_0 + \beta_1 \textrm{career} + \beta_2 \textrm{edu})] \mathbb{E}[\exp(e)]\)
이때 다음의 두 가지를 알고 있으면 도움이 된다.
- 두 변수 \(X\) , \(Y\) 가 독립일 때, \(\mathbb{E}[XY]=\mathbb{E}[X] \mathbb{E}[Y]\) 이다.[lm2]
- \(X \sim \mathcal{N}(0, \sigma^2)\) 일 때, \(\mathbb{E}[\exp(X)] = \exp({\sigma^2/2})\) .
[lm2]: 사실 \(X\) 는 고정되어 있다고 가정하기 때문에 \(\mathbb{E}[aY] = a\mathbb{E}[Y]\) 가 더 적절하다. ( \(a\) : 상수)
이를 활용한 결과는 다음과 같다.
\[\mathbb{E}[\textrm{wage}|\textrm{career},\textrm{edu} ] = \exp(\beta_0 + \beta_1 \textrm{career} + \beta_2 \textrm{edu})\cdot \exp(\sigma^2/2)\]
여기서 주목할 점은 \(\mathbb{E}[\textrm{wage}]\) 가 우리가 예상하듯이(혹은 원하듯이) 정확하게 \(\exp(\beta_0 + \beta_1 \textrm{career} + \beta_2 \textrm{edu})\) 가 아니라는 점이다.
이제 \(\mathbb{V}ar[\textrm{wage}|\textrm{career},\textrm{edu} ]\) 을 구해보자.
\(\textrm{wage} = \exp(\beta_0 + \beta_1 \textrm{career} + \beta_2 \textrm{edu}) \exp(e)\) 에서 \(\textrm{career},\textrm{edu}\) 가 정해졌을 때 유일한 확률변수 \(e\) 이다.
\(X \sim \mathcal{N}(0, \sigma^2)\) 일 때, \(\mathbb{V}ar(X) = (\exp(\sigma^2) -1)\exp(\sigma^2)\) 을 활용하면 \(e\) 의 분산의 다음과 같다.
\[\mathbb{V}ar(e |\textrm{career},\textrm{edu} ) = \big(\exp(\beta_0 + \beta_1 \textrm{career} + \beta_2 \textrm{edu})\big)^2(\exp(\sigma^2) -1)\exp(\sigma^2)\]
\((\exp(\sigma^2) -1)\exp(\sigma^2)\) 을 보면 \(\sigma^2\) 가 약간 변형되었지만, 어쨋든 \(\sigma^2\) 가 상수라면, 여전히 상수이다. 하지만 \(\big(\exp(\beta_0 + \beta_1 \textrm{career})\big)^2\) 을 보면, 이 값은 설명변수의 값에 따라 변하는 값이다. 따라서 오차항 \(e\) 는 설명변수의 값에 따라 변하는 값으로, LINE의 등분산성이 성립하지 않음을 알 수 있다.
정리 : 결과변수의 \(\log\) 변환
\(\log(y) = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + e\), \(e \sim \mathcal{N}(0, \sigma^2)\) 일 때, 평균과 분산은 다음과 같다.
\(\mathbb{E}[y | x_1, x_2] = \exp(\beta_0 + \beta_1 x_1 + \beta_2 x_2) \exp(\sigma^2/2)\)
\(\mathbb{V}ar[y | x_1, x_2] = \big(\exp(\beta_0 + \beta_1 x_1 + \beta_2 x_2)\big)^2(\exp(\sigma^2) -1)\exp(\sigma^2)\)
따라서 설명변수와 결과변수의 비선형성을 고려하기 위해 결과변수에 \(\log\) 함수를 취한 후, 기계적으로 역함수를 구하는 것은 의도한 바와 다른 결과를 얻을 수 있다.
예를 들어 \(\log(y)\) 로 선형 회귀 분석을 한 후, \(\mathbb{E}[y|x_1, \cdots, x_p] = \exp(\beta_0 + \beta_1 x_1 + \cdots \beta_p x_p)\) 라고 생각하면 잘못이다. 위에서 확인했듯이 \(\sigma^2\) 가 클 수록 \(\mathbb{E}[y|x_1, \cdots, x_p]\) 과 \(\exp(\beta_0 + \beta_1 x_1 + \cdots \beta_p x_p)\) 의 차이는 커진다.
반면 \(\mathbb{E}[\log(y)|x_1, \cdots, x_p] = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \cdots + \beta_p x_p\) 는 정확하다.
사실 좀 더 정확한 해석은 \(y | x_1, x_2, \cdots, x_p \sim \textrm{Lognormal}(\tilde{\mu}, \tilde{\sigma^2} )\)(\(\tilde{\mu} = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \cdots + \beta_p x_p\) ) 이다.
\(\log(y) = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \cdots + \beta_p x_p + e\), \(e \sim \mathcal{N}(0, \sigma^2)\) 일 때, 확률변수 \(y\) 는 로그노멀 분포를 띄고, 이때 로그노멀 분포의 모수인 \(\tilde{\mu}\) 와 \(\tilde{\sigma^2}\) 는 \(\tilde{\mu} = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \cdots + \beta_p x_p\) , \(\tilde{\sigma^2} = \sigma\) 이다.
다음은 \(\textrm{Lognormal}\) 분포의 모수 \(\mu\) 와 평균의 차이를 보여준다. 로그정규분포란 확률변수에 로그를 취했을 때 정규분포(normal distribution)이 되는 분포라고 생각하면 쉽다. ( \(\textrm{Lognormal}\) 분포의 모수 \(\mu\) 는 로그 정규분포를 띄는 확률변수 \(X\) 를 로그 변환했을 때 평균이다. 따라서 일종의 평균인데, 확률변수 \(X\) 의 평균이 아니다. 그리고 확률변수 \(X\) 의 평균이 반드시 \(\exp(\mu)\) 가 되는 것도 아님을 유의해야 한다.)
curve(dlnorm(x, meanlog=0, sdlog=sqrt(1)), xlim=c(0, 3)) # X ~ lognormal(mu=0, sigma^2 = 1)
abline(v=exp(0)) # exp(mu=0)
abline(v=exp(0)*exp(1/2), lty='dotted') # E[X]
결과 변수 \(\log\) 변환 모형 시각화
다음의 그래프는 아래의 모형을 시각화한 것이다. 직선은 \(\log(y)\) 의 평균을 \(\exp\) 변환시킨 값이고, 음영은 \(\log(y)\) 의 95% 구간을 다시 \(\exp\) 변환 시킨 구간이다.
\[\log(y) = 3 + 0.4x + e, \ \ e \sim \mathcal{N}(0,0.2^2)\]
xpred <- seq(-3,3,length.out=100)
logypred <- 3 + 0.4*xpred
logymin <- 3 + 0.4*xpred - 1.96*0.2
logymax <- 3 + 0.4*xpred + 1.96*0.2
ypred <- exp(logypred)
ymin <- exp(logymin)
ymax <- exp(logymax)
datPred <- data.frame(ypred=ypred, ymin=ymin, ymax=ymax, xpred=xpred)
N <- 100
x <- rnorm(N)
logy <- 3 + 0.4*x + 0.2*rnorm(N)
dat <- data.frame(x=x, y=exp(logy))
require(ggplot2)
ggplot(datPred, aes(x=xpred, y=ypred)) + geom_line() +
geom_ribbon(data=datPred, aes(x=xpred, y=ypred, ymin=ymin, ymax=ymax), alpha=0.2) +
geom_point(data=dat, aes(x=x, y=y), alpha=0.4) +
scale_x_continuous(name='x') +
scale_y_continuous(name='y')
## Warning: Ignoring unknown aesthetics: y
앞에서 \(\exp(\mathbb{E}[\log(y)|\vec{x}])\) 와 \(\mathbb{E}[y|\vec{x}]\) 가 차이가 남을 보였지만, 실제 분석에서 \(\sigma^2\) 가 \(0\) 에 가깝다면 는 크게 차이가 나지 않는다. (반대로 \(\sigma^2\) 가 커질수록 차이가 두드러진다.)
다음의 예시에서 두 번째 그래프의 자료 \(x\) 와 \(\log y\) 는 첫 번째 그래프의 자료를 단지 5배한 것이다. 하지만 그에 따라 \(log(y)\) 의 기대값과 \(y\) 의 기대값이 어떻게 달라지는 확인해 보자. (실선 : \(\exp(\hat{\mathbb{E}[\log y|x]})\) , 점선 : \(\hat{\mathbb{E}[y|x]}\) )
N <- 100
x <- 0.2*rnorm(N)
e <- 0.1*rnorm(N)
y0 <- 1 + .5*x + .3*e
y <- exp(y0)
fitLm <- lm(y0 ~ x)
newdata = data.frame(x=seq(min(x), max(x), length.out=100))
ymu <- exp(predict(fitLm, newdata=newdata))
yE <- exp(predict(fitLm, newdata=newdata))*exp(sigma(fitLm)^2/2)
dat <- data.frame(x=x, y=y)
require(ggplot2)
ggplot(dat, aes(x=x, y=y)) + geom_point() +
geom_line(data=newdata, aes(x=x, y=ymu)) +
geom_line(data=newdata, aes(x=x, y=yE), linetype='dotted')
#N <- 100
#x <- 0.6*rnorm(N)
#e <- 0.3*rnorm(e)
x <- 5*x
e <- 5*e
y0 <- 5*y
y <- exp(y0)
fitLm <- lm(y0 ~ x)
newdata = data.frame(x=seq(min(x), max(x), length.out=100))
ymu <- exp(predict(fitLm, newdata=newdata))
yE <- exp(predict(fitLm, newdata=newdata))*exp(sigma(fitLm)^2/2)
dat <- data.frame(x=x, y=y)
require(ggplot2)
ggplot(dat, aes(x=x, y=y)) + geom_point() +
geom_line(data=newdata, aes(x=x, y=ymu)) +
geom_line(data=newdata, aes(x=x, y=yE), linetype='dotted')
정리
설명변수 또는 결과변수를 변환함으로써 설명 변수와 결과변수의 비선형적 관계를 모형화할 수 있다. 결과변수를 변환하면 이분산성(heteroscedasticity) 역시 모형화할 수 있다. 이 때 OLS는 결과변수를 변환한 변수가 정규분포를 띈다고 가정하므로 결과변수는 정규분포와 다른 분포를 띌 수도 있다.
이때 결과변수의 평균과 결과변수를 변환한 값의 평균을 다시 역변환 값은 다를 수도 있음을 유의하자.[3]
[3]: 사실 좀 더 중요한 부분은 \(\beta_0\) , \(\beta_1\) 과 같은 계수의 해석이다. 하지만 수학적으로 보면 단순한 계산으로 그 의미를 파악할 수 있기 때문에 여기서는 생략하였다.
Leave a comment