회귀분석 Regression, Part II


Topics:


  • Part I:

    • iris 자료

    • 단순 선형회귀

  • Part II

    • 사영과 회귀분석

    • 다중 선형회귀

  • Part III

    • 가변수와 선형모형

    • 모형의 다양성

  • Part IV

    • 모형 선택

    • 회귀 진단




1. 사영과 회귀분석


  • 단순 선형회귀모형의 표현법:

    • 원소표현법: \(Y_j = \alpha + \beta x_j + \epsilon_j\), \(j=1,\ldots,n\)

    • 벡터표현법: \(\mathbf{Y} = \alpha \mathbf{1} + \beta \mathbf{x} + \boldsymbol{\epsilon}\)


\(\qquad \qquad \qquad \begin{pmatrix}Y_1 \\ Y_2\\ \vdots \\ Y_n \end{pmatrix} = \alpha \begin{pmatrix}1 \\1 \\ \vdots \\ 1\end{pmatrix} + \beta \begin{pmatrix}x_1 \\x_2 \\ \vdots \\x_n \end{pmatrix}+ \begin{pmatrix} \epsilon_1 \\ \epsilon_2 \\ \vdots \\ \epsilon_n \end{pmatrix}\)


  • 다음 표에서, 예측벡터 \(\hat{\mathbf{y}}\) 를 구하기 위한 두 가지 방법을 비교하자

    • 방법 1: \(~~\hat{\mathbf{y}}= 150 \cdot \mathbf{1} + 0.1 \cdot \mathbf{x}\)

    • 방법 2: \(~~\hat{\mathbf{y}}= 100 \cdot \mathbf{1} + 0.5 \cdot \mathbf{x}\)


\(\mathbf{y}\) \(\mathbf{1}\) \(\mathbf{x}\) \(150 \cdot \mathbf{1}+ 0.1 \cdot \mathbf{x}\) \(100 \cdot \mathbf{1}+ 0.5 \cdot \mathbf{x}\)
160 1 176 167.6 188
173 1 168 166.8 184
185 1 174 176.4 187
\(\vdots\) \(\vdots\) \(\vdots\) \(\vdots\) \(\vdots\)
189 1 182 168.2 191


  • 위 표에서,’방법 1’과 ’방법 2’는 \(\mathbf{1}\)\(\mathbf{x}\) 각각에 곱하는 상수가 다르다

    \(\mathbf{1}\)\(\mathbf{x}\) 각각에 곱하는 상수는, 예측 벡터 \(\hat{\mathbf{y}}\) 를 구하기 위한 회귀계수 \(\alpha\)\(\beta\) 를 의미한다




  • 벡터에서 벡터로의 사영:

    • 벡터 \(\mathbf{y}\) 를 벡터 \(\mathbf{x}\) 로 사영하자

    • 사영된 이미지를 \(\hat{\mathbf{y}}\) 라 하면, \(\hat{\mathbf{y}}=c \cdot \mathbf{x}\) 이다

    • (정)사영의 성질에 따라, \(\hat{\mathbf{y}}\)\(\mathbf{y}-\hat{\mathbf{y}}\) 은 직교하므로, \(\mathbf{x}' (\mathbf{y}-c\cdot \mathbf{x} )=0\) 이다.

    • 즉, \(c= (\mathbf{x}' \mathbf{y})/(\mathbf{x}' \mathbf{x})\) 이고, \(~\hat{\mathbf{y}}=(\mathbf{x}' \mathbf{y})/(\mathbf{x}' \mathbf{x}) \cdot \mathbf{x}\) 이다

    • 만약, \(\mathbf{x}\)\(\mathbf{1}_n\) 이라면, \(c= \bar{y}_n\) 이고, \(~\hat{\mathbf{y}}=\bar{y}_n \cdot \mathbf{1}_n\) 이다






  • 열공간, Column Space, \(Col(X)\) :

    • 행렬 \(X\) 의 열벡터들의 선형결합으로 만들어지는 벡터들의 집합

    • 행렬 \(X\) 가 두 개의 열벡터 \(\mathbf{1}\), \(\mathbf{x}\)로 구성된 경우, 즉, \(X=(\mathbf{1}, \mathbf{x})\) 라면,

      \(Col(X)=\{ \alpha \mathbf{1} + \beta \mathbf{x} | \alpha, \beta \in I\!\!R \}\) 임.

      다음 [사영] 그림에서, 회색 타원으로 표현된 영역이 \(Col(X)\) 를 의미함.

    • 행렬 \(X\)\(k\) 개의 열벡터로 이루어져 있을 때, 즉, \(X=(\mathbf{x}_1,\ldots ,\mathbf{x}_k )\) 일 때,

      열공간은 \(Col(X)=\{ \beta_1 \mathbf{x}_1 + \cdots + \beta_k \mathbf{x}_k | \beta_j \in I\!\!R, ~ j=1,\ldots,k \}\) 임.

      바꾸어 표현하면, \(Col(X) = \{X \boldsymbol{\beta} | \boldsymbol{\beta} \in I\!\!R^k \}\) 임.

      즉, 열공간에 속하는 벡터들은, \(X \boldsymbol{\beta}\) 의 형태로 표현된다.

      여기서 \(\boldsymbol{\beta}\)\(k\) 차원 열벡터 \(~\boldsymbol{\beta}=(\beta_1, \ldots, \beta_k)'\) 이다.



[사영]




  • 단순 선형회귀모형과 최소자승법의 기하학적 의미:

    • 회귀모형: \(~~\mathbf{Y}= \boldsymbol{\mu} +\boldsymbol{\epsilon}\), \(~~~\boldsymbol{\mu}=\alpha \, \mathbf{1} + \beta \, \mathbf{x}\), 여기서 \(\boldsymbol{\mu}\)\(E(\mathbf{Y})\) 를 말함.

    • 관측벡터: \(~~\mathbf{y}\)

    • 예측벡터: \(~~\hat{\mathbf{y}}= \hat{\alpha} \mathbf{1} + \hat{\beta}\mathbf{x}\)

    • 오차벡터: \(~~\boldsymbol{\epsilon} = \mathbf{y} - \boldsymbol{\mu}\)

    • 잔차벡터: \(~~\mathbf{e} = \mathbf{y} - \hat{\mathbf{y}}\)

    • 제곱거리: \(~~ S(\alpha, \beta) =\sum_j \left( y_j -(\alpha + \beta x_j) \right)^2 = \| \boldsymbol{\epsilon} \|^2\)

    • 최소제곱거리: \(~~ S(\hat{\alpha}, \hat{\beta} ) =\sum_j \left( y_j -(\hat{\alpha} + \hat{\beta} x_j) \right)^2 = \| \mathbf{e} \|^2\)

    • 사영공간: 행렬 \(X=(\mathbf{1}, \mathbf{x})\) 에 의하여 생성되는 열공간 \(Col(X)\)

      예측벡터 \(\hat{\mathbf{y}}\) 은 열공간 \(Col(\mathbf{1}, \mathbf{x})\)의 원소

    • 최소자승법: 잔차벡터의 길이(norm)를 최소화 하는 방법

    • \(\hat{\alpha}\), \(\hat{\beta}\) : 제곱거리가 최소화 될 때의 \(\alpha\)\(\beta\)

    • 제곱거리가 최소화되면 \(\hat{\mathbf{y}}\)\(\mathbf{e}\) 가 수직. 즉, \(\hat{\mathbf{y}} ' ({\mathbf{y}}- \hat{\mathbf{y}}) =0\)

    • 위 [사영] 그림에서와 같이, 잔차벡터 \(\mathbf{e}\) 는 열공간 \(Col(X)\) 의 모든 원소와 직교

    • 따라서 다음 두 조건을 만족하여야 함

      • \(\mathbf{1} ' ({\mathbf{y}}- \hat{\mathbf{y}}) =0 ~~\) (식4)

      • \(\mathbf{x} ' ({\mathbf{y}}- \hat{\mathbf{y}}) =0 ~~\) (식5)

    • 위 (식4) 와 (식5)는, 대수적 방법으로 얻은 (식1) 과 (식2)와 각각 동일한 의미



  • 다중 선형회귀모형:

    • \(\mathbf{Y}= X \boldsymbol{\beta} + \boldsymbol{\epsilon}\), \(~~ \boldsymbol{\epsilon} ~{\sim} ~N_n (\mathbf{0}, \sigma^2 I )\) , \(~~ X_{n \times k}\) 는 설명변수 행렬



  • 단순 선형회귀와 다중 선형회귀의 비교:

    • 회귀모형:

      • 단순 선형회귀: \(\boldsymbol{\mu}= \alpha \, \mathbf{1} + \beta \mathbf{x}\)

      • 다중 선형회귀: \(\boldsymbol{\mu} = X \boldsymbol{\beta}\)

    • 열공간: 관측벡터 \(\mathbf{y}\) 를 사영하게 될 공간

      • 단순 선형회귀: 행렬 \(X =(\mathbf{1},\mathbf{x})\)에 대한 열공간

      • 다중 선형회귀: 행렬 \(X =(\mathbf{x}_1,\ldots ,\mathbf{x}_k)\)에 대한 열공간

    • ’다중 선형회귀’는 ’단순 선형회귀’를 일반화한 형태

    • ’다중 선형회귀’에서는 다수의 설명변수를 고려하게 됨



  • 다중 선형회귀모형과 그 표현:

    • 모형: \(\mathbf{Y}= \boldsymbol{\mu}+ \boldsymbol{\epsilon}\)

    • 설명변수 행렬 \(X\) 의 표현:

      • 절편을 도입한 표현: \(X_{n \times (p+1)} =(\mathbf{1}, \mathbf{x}_1 , \ldots ,\mathbf{x}_p )\)

      • 일반화된 표현: \(X_{n \times k} =(\mathbf{x}_1,\ldots ,\mathbf{x}_k)\)

      • ’일반화된 표현’에서 \(X\) 의 열벡터 중 하나가 1벡터 이면, 동일한 의미가 됨

    • 벡터표현: 여기서 \(\boldsymbol{\mu}=E(\mathbf{Y})\) 를 말함

      • \(\boldsymbol{\mu}= X \boldsymbol{\beta}\),

      • \(\boldsymbol{\mu}= \beta_1 \mathbf{x}_1 +\cdots + \beta_k \mathbf{x}_k\)

      • \(\boldsymbol{\mu}= \beta_0 \mathbf{1} + \beta_1 \mathbf{x}_1 +\cdots + \beta_p \mathbf{x}_p\)

    • 원소표현: 여기서 \(\mu_j =E(Y_j)\) 를 말함

      • \(\mu_j = \mathbf{x}_j ' \boldsymbol{\beta}\),

      • \(\mu_j = \beta_1 x_{1j} +\cdots + \beta_k x_{kj}\)

      • \(\mu_j = \beta_0 + \beta_1 x_{1j} +\cdots + \beta_p x_{pj}\)

    • 원소표현법과 행렬 원소표현법의 충돌:

      • 다중회귀 원소표현법: \(~~\mu_j = \beta_0 + \beta_1 x_{1j} +\beta_2 x_{2j}\),

      • \(x_{1j}\) 는 행렬 \(X\) 의 첫번째 열벡터 \(\mathbf{x}_1\)\(j\) 번째 원소, 즉 \(x_{j1}\)

      • 관례적으로 사용되는 위 두 표현법에서 행과 열을 나타내는 순서가 다름



  • 벡터와 행렬에 대한 일반적 표현법:

    • 확률변수는 대문자로 표시함, 확률변수의 관측값은 소문자.

    • 벡터는 굵은 글씨체로 표시, 행렬은 일반 대문자로 표시

    • 벡터는 기본적으로 열벡터를 가정, 행벡터는 transpose 로 표현

    • 행렬의 행벡터/열벡터는 굵은 소문자

    • 예)

      • 대문자 \(Y_j\) 는 확률변수를, 소문자 \(y_j\) 는 관측값

      • 확률벡터: \(\mathbf{Y}=(Y_1 , \ldots, Y_n )'\)

      • 관측벡터: \(\mathbf{y}=(y_1 , \ldots, y_n )'\)

      • 예측벡터: \(\hat{\mathbf{y}}=(\hat{y}_1 , \ldots, \hat{y}_n )'\)

      • \(\mathbf{x}_j\): 행렬 \(X\)\(j\) 번째 열벡터

      • \(\mathbf{x}_j '\): 행렬 \(X\)\(j\) 번째 행벡터

      • \(x_{jk}\), \(x_{j,k}\): 행렬 \(X\)\(i\) 행, \(k\) 열 원소

      • \(x_j\): 벡터 \(\mathbf{x}\)\(j\) 번째 원소

    • 참고)

      • 회귀분석에서의 관례적 표현 중 혼동할 수 있는 부분

        • \(\mathbf{x}_j ' \mathbf{Y}\) : 여기서 \(\mathbf{x}_j\) 는 행렬 \(X\)\(j\) 번째 열벡터

        • \(\mathbf{x}_j ' \boldsymbol{\beta}\): 여기서 \(\mathbf{x}_j '\) 는 행렬 \(X\)\(j\) 번째 행벡터

      • 혼란스러운 점은 있지만 식의 전후 관계를 보고 구별할 수 있음




  • 다중 선형회귀에서의 사영:

    • 회귀모형: \(~~\mathbf{Y}= \boldsymbol{\mu} +\boldsymbol{\epsilon}\), \(~~~\boldsymbol{\mu}= X \boldsymbol{\beta}~ \in~ Col(X)\)

    • 관측벡터: \(~~\mathbf{y}\)

    • 예측벡터 : \(~~\hat{\mathbf{y}}=\hat{\boldsymbol{\mu}}= X \hat{\boldsymbol{\beta}}\)

    • 오차벡터: \(~~\boldsymbol{\epsilon} = \mathbf{y} - \boldsymbol{\mu}\)

    • 잔차벡터: \(~~\mathbf{e} = \mathbf{y} - \hat{\mathbf{y}}\)

    • 제곱거리: \(~~ S(\boldsymbol{\beta}) =\sum_j \left( y_j - \mu_j \right)^2 = \| \boldsymbol{\epsilon} \|^2\)

    • 최소제곱거리: \(~~ S(\hat{\boldsymbol{\beta}}) =\sum_j \left( y_j -\hat{y}_j \right)^2 = \| \mathbf{e} \|^2\)

    • 사영공간: 행렬 \(X=(\mathbf{x}_1 , \ldots, \mathbf{x}_k )\) 에 의하여 생성되는 열공간 \(Col(X)\)

    • 잔차벡터 \(\mathbf{e}\) 는 열공간 \(Col(X)\) 의 모든 원소와 직교

      즉,\(~~ \mathbf{x}_j ' ({\mathbf{y}}- X \hat{\boldsymbol{\beta}} ) =0, ~j=1,\ldots,k,~~\) (식6)

    • 정규방정식: (식6)을 정리하여, \(~~X ' ({\mathbf{y}}- X \hat{\boldsymbol{\beta}} ) =\mathbf{0}\)

    • \(\boldsymbol{\beta}\) 의 값이 \(\hat{\boldsymbol{\beta}}\) 일 때, \(S(\boldsymbol{\beta})\) 가 최소화 됨


  • 제곱거리의 최소화와 정규방정식의 해법:

    • 제곱거리 : \(~~ S(\boldsymbol{\beta}) = \sum_j \left( y_j - \mathbf{x}_j ' \boldsymbol{\beta} \right)^2 =\left( \mathbf{y} - X \boldsymbol{\beta} \right)' \left( \mathbf{y} - X \boldsymbol{\beta} \right)\)

    • 제곱거리 \(S(\boldsymbol{\beta})\) 를 벡터 \(\boldsymbol{\beta}\) 로 미분하면,

      \((\partial S(\boldsymbol{\beta}))/(\partial \boldsymbol{\beta}) = -2 \, X' ({\mathbf{y}}- X \boldsymbol{\beta} )\) 이므로,

      최적 모수벡터 \(\hat{\boldsymbol{\beta}}\) 는 정규방정식 \(~X' X \hat{\boldsymbol{\beta}} = X' \mathbf{y}\) 의 근이다

    • 기하학적 해석인 사영을 이용한 접근법과 동일한 정규방정식이 얻어짐

    • 정규방정식의 풀이:

      • \((X'X)^{-1}\) 이 존재하면, \(~\hat{\boldsymbol{\beta}} = (X' X )^{-1} X' {\mathbf{y}}\)

      • \((X'X)^{-1}\) 이 존재하지 않으면,

        \(\hat{\boldsymbol{\beta}} = (X' X )^{-} X' {\mathbf{y}} + (I-(X'X)^{-} X'X) \mathbf{z}\)

        \(~~ = X^{-} {\mathbf{y}} + (I-X^{-}X) \mathbf{z},~~\mathbf{z} \in I\!\!R^k ~~\) (why?)


  • 사영행렬: \(P\) 혹은 \(H\)

    • 정규방정식의 해: \(\hat{\boldsymbol{\beta}} = (X' X )^{-} X'{\mathbf{y}}\)

    • 예측벡터: \(\hat{\mathbf{y}}= X \hat{\boldsymbol{\beta}} = X (X' X )^{-} X'{\mathbf{y}}\)

    • 사영행렬: \(P= X (X' X )^{-} X'\)

      • \(P\) 는 대칭성과 정규성을 만족함

      • 만약 \((X' X )^{-1}\) 이 존재하면, \(P\)\(X (X' X )^{-1} X'\) 와 동일함

    • 예측벡터: \(\hat{\mathbf{y}}= P {\mathbf{y}}\)

    • 모자행렬: \(P\)\({\mathbf{y}}\) 에 모자(hat) 을 씌우므로 hat matrix \(H\) 라고도 함




사영의 예


  • 2 개의 열벡터 \(\mathbf{1}\)\(\mathbf{x}=(2, -1, 2)'\)에 의하여 생성되는 열공간 \(Col(X)\)

\(\qquad \qquad \qquad \alpha \begin{pmatrix}1 \\ 1 \\ 1 \end{pmatrix}+ \beta \begin{pmatrix} 2 \\ -1 \\ 2 \end{pmatrix}\)


library(plotly, warn.conflicts = FALSE, quietly = TRUE) 

xsn <- seq(-3,6,l=181)
ysn <- seq(-3,4,l=141)
grid <- expand.grid( x=xsn, y=ysn )
zf <- function(g)  { 
  res<- NA ; if( 4*(g[1]-2)^2 + 9*(g[2]-0.5)^2 < 50 ) res <-g[1];  res }
zmat <- t(matrix(apply(grid,1,zf),nrow=length(xsn)))

z1  <-   seq( 2-sqrt(50/4), 2+sqrt(50/4), l=100 )
z1q <-  (50-4*(z1-2)^2); z1q[z1q<0] <-0
z2p <-  0.5 + sqrt(z1q/9)
z2n <-  0.5 - sqrt(z1q/9)
z11 <- c(z1,rev(z1))
z22 <- c(z2p,z2n)

p1 <- plot_ly(z=~zmat,x=xsn, y=ysn,opacity = 0.8)    %>% 
      add_surface(showscale=FALSE)                   %>%  
      add_markers(x=0, y=0, z=0, color=I('yellow'))  %>%
      add_markers(x=1, y=1, z=1, color=I('red'))     %>%
      add_markers(x=2, y=-1, z=2, color=I('red'))    %>%
      add_trace(x=c(0,1),y=c(0,1),z=c(0,1), type='scatter3d',
                mode='lines',line=list(width=12,color='red')) %>%
      add_trace(x=c(0,2),y=c(0,-1),z=c(0,2), type='scatter3d',
                mode='lines',line=list(width=12,color='red')) %>%
      add_trace(x=z11, y=z22, z=z11, type='scatter3d',
                mode='lines',line=list(width=16 ,color='white')) %>%
      layout(title="Projection : Column Space",
             scene=list(xaxis=list(title="x"),
                        yaxis=list(title="y"), zaxis=list(title="z")),
             showlegend=FALSE )
p1 




  • 관측벡터 : \(\mathbf{y}=(0.5, 1, 5.5)'\)


p2 <- p1  %>% 
      add_markers(x=0.5, y=1, z=5.5, color=I('blue'))    %>%
      add_trace(x=c(0,0.5),y=c(0,1),z=c(0,5.5), type='scatter3d',
                   mode='lines',line=list(width=12,color='blue')) %>%
      layout(title="Projection : y-value") 
p2




  • 관측벡터의 열공간으로의 사영

    • 예측벡터: \(\hat{\mathbf{y}} = (3,1,3)'\)

    • 잔차벡터: \(\mathbf{e} = (-2.5,0,2.5)'\)


X<- matrix(c(1,1,1,2,-1,2),3,2)

y <-matrix(c(0.5,1,5.5),ncol=1)

P <- X %*% solve(t(X) %*% X) %*% t(X)

( yhat <- P %*% y )
##      [,1]
## [1,]    3
## [2,]    1
## [3,]    3
y-yhat
##      [,1]
## [1,] -2.5
## [2,]  0.0
## [3,]  2.5


X<- matrix(c(1,1,1,2,-1,2),3,2)

P <- X %*% solve(t(X) %*% X) %*% t(X)
p3 <- p2  %>% 
      add_markers(x=3, y=1, z=3, color=I('black'))   %>%
      add_trace(x=c(0,3),y=c(0,1),z=c(0,3), type='scatter3d',
                mode='lines',line=list(width=8,color='black')) %>%
      add_trace(x=c(0.5,3),y=c(1,1),z=c(5.5,3), type='scatter3d',
                mode='lines',line=list(width=8,color='grey'))  %>%
      layout(title="Projection : y-hat & residul" )
p3




  • 회귀계수: \(\hat{\alpha}= 5/3\), \(\hat{\beta}= 2/3\)

\(\qquad \qquad \qquad \hat{\mathbf{y}} = (5/3) \begin{pmatrix}1 \\ 1 \\ 1 \end{pmatrix}+ (2/3) \begin{pmatrix} 2 \\ -1 \\ 2 \end{pmatrix}\)


solve(t(X) %*% X) %*% t(X) %*% y
##           [,1]
## [1,] 1.6666667
## [2,] 0.6666667


p4 <- p3 %>% 
      add_markers(x=5/3, y=5/3, z=5/3, 
                  color=I('pink'),marker=list(size=6))    %>%
      add_markers(x=4/3, y=-2/3,z=4/3, 
                  color=I('pink'),marker=list(size=6))    %>%
      add_trace(x=c(0,5/3),y=c(0,5/3),z=c(0,5/3), type='scatter3d',
               mode='lines', line=list(width=4,color='pink')) %>%
      add_trace(x=c(0,4/3),y=c(0,-2/3),z=c(0,4/3), type='scatter3d',
                mode='lines',line=list(width=4,color='pink')) %>%
      add_trace(x=c(5/3,3),y=c(5/3,1),z=c(5/3,3), type='scatter3d',
                mode='lines',line=list(width=4,color='pink')) %>%
      add_trace(x=c(4/3,3),y=c(-2/3,1),z=c(4/3,3), type='scatter3d',
                mode='lines',line=list(width=4,color='pink')) %>%
     layout(title="Projection : Regression coefficients")
p4




2. 다중 선형회귀


  • 다중 선형회귀모형

    • \(\mathbf{Y} = X \boldsymbol{\beta}+\boldsymbol{\epsilon}\),

    • \(\boldsymbol{\epsilon} ~\sim~ N_n ( \mathbf{0}, \sigma^2 I)\), \(~~n\) 차원 다변량 정규분포

    • 설명변수 행렬 \(X_{n \times k}\) 는 비확률적이고, \(n > k\) 이다


  • 다중 선형회귀모형의 표현법:

    • 벡터표현법: \(\mathbf{Y} = X \boldsymbol{\beta}+\boldsymbol{\epsilon}\), \(~~\boldsymbol{\epsilon} ~\sim~ N_n ( \mathbf{0}, \sigma^2 I)\),

    • 원소표현법: \(Y_j = \mathbf{x}_j ' \boldsymbol{\beta}+ \epsilon_j\), \(~~\epsilon_j ~\stackrel{iid}{\sim}~ N(0, \sigma^2),~~j=1,\ldots,n\)

    • 다중 선형회귀모형에서 설명변수 행렬 \(X\)

      • \(X=(\mathbf{x}_1, \ldots, \mathbf{x}_k)\) 라고 표현하거나

      • \(X=(\mathbf{x}_0, \ldots, \mathbf{x}_p)\) 라고 표현하거나

      • 위는 같은 의미로 사용될 수 있는 표현법이고, \(k=p+1\) 인 관계가 있다

        \(\mathbf{x}_0\) 대신 \(\mathbf{1}\) 을 사용하면 \(y\)-절편이 있는 모형임을 명확하게 나타낼 수 있다

    • 다중 선형회귀모형에서 회귀계수 \(\boldsymbol{\beta}\)

      • \(\boldsymbol{\beta}=(\beta_1 , \ldots, \beta_k )'\) 라고 표현하거나

      • \(\boldsymbol{\beta}=(\beta_0 , \ldots, \beta_p )'\) 라고 표현하거나

      • 위는 같은 의미로 사용될 수 있는 표현법이고, \(k=p+1\) 인 관계가 있다

        \(y\)-절편이 있는 경우 \(y\)-절편 값인 \(\alpha\)\(\beta_0\) 에 해당한다




  • 다중 선형회귀모형에서의 열공간과 역행렬:

    • 열공간 \(Col(X)= \{ X \boldsymbol{\beta} | \boldsymbol{\beta} \in I\!\!R^k \}\)

    • 열공간의 차원은 \(~rank(X)=r, ~\) (\(r \leq k\))

    • \(P=X(X'X)^{-} X'\) 일 때, \(~rank(P)=r\)

    • \(rank(X)=k\) 라면 (즉 \(r=k\) 라면), \(~(X'X)^{-1}\) 이 존재하고,

      \(P=X(X'X)^{-1} X'\) 인 관계가 성립함.


  • 추정량, 예측량

    • \(\hat{\boldsymbol{\beta}} = (X' X)^{-} X' \mathbf{y}\)

      • \((X' X)^{-1}\) 이 존재하면, \(~~\hat{\boldsymbol{\beta}} = (X' X)^{-1} X' \mathbf{y}\) 이고 유일함

      • \((X' X)^{-1}\) 이 존재하지 않으면, \(~\hat{\boldsymbol{\beta}}\) 은 다양함

    • \(\hat{\mathbf{y}} = X (X' X)^{-} X' \mathbf{y} = P \mathbf{y}\)

      • \((X' X)^{-1}\) 의 존재하면, \(~~\hat{\mathbf{y}}= X (X' X)^{-1} X' \mathbf{y}\) 임.

      • \((X' X)^{-1}\) 의 존재여부와 관련 없이, \(~\hat{\mathbf{y}}\) 은 유일함

    • \(\hat{\sigma}^2 = SSE /(n-r)\), \(~~SSE~\) 는 잔차제곱합 \(~\sum_j e_j^2\)




trees 데이터에 대한 다중 선형회귀


  • trees 자료에 대하여, 다중 선형회귀를 해보자

    원자료의 변수 이름, Girth, Height, Volume 를 간략하게 g, h, v 로 바꾸어 사용하자


names(trees)<- c('g','h','v')
head(trees)
##      g  h    v
## 1  8.3 70 10.3
## 2  8.6 65 10.3
## 3  8.8 63 10.2
## 4 10.5 72 16.4
## 5 10.7 81 18.8
## 6 10.8 83 19.7


  • 행렬을 이용하여 사영 방법을 이용해보고,

    R 의 lm 함수로 다중 회귀를 해서 그 결과를 비교해보자

    회귀계수와 예측벡터, 등을 비교해면, 그 결과가 동일함을 볼 수 있다


X <- as.matrix(cbind(1, trees[,-3])) 
y <- matrix(trees[,3],ncol=1) 

head(X)
##      1    g  h
## [1,] 1  8.3 70
## [2,] 1  8.6 65
## [3,] 1  8.8 63
## [4,] 1 10.5 72
## [5,] 1 10.7 81
## [6,] 1 10.8 83
head(y)
##      [,1]
## [1,] 10.3
## [2,] 10.3
## [3,] 10.2
## [4,] 16.4
## [5,] 18.8
## [6,] 19.7
res <-lm(v~ g+h , trees)  

summary(res)         #  summary of lm output
## 
## Call:
## lm(formula = v ~ g + h, data = trees)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -6.4065 -2.6493 -0.2876  2.2003  8.4847 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -57.9877     8.6382  -6.713 2.75e-07 ***
## g             4.7082     0.2643  17.816  < 2e-16 ***
## h             0.3393     0.1302   2.607   0.0145 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.882 on 28 degrees of freedom
## Multiple R-squared:  0.948,  Adjusted R-squared:  0.9442 
## F-statistic:   255 on 2 and 28 DF,  p-value: < 2.2e-16
P = X %*% solve(t(X) %*% X) %*% t(X) 
dim(P)
## [1] 31 31
beta_hat = solve(t(X) %*% X) %*% t(X) %*% y 
yhat =  P %*% y      
I = diag(ncol(P))    # identity matrix, unit matrix
e = (I-P) %*% y      # residulas

beta_hat
##          [,1]
## 1 -57.9876589
## g   4.7081605
## h   0.3392512
sum(e*e)  # sse
## [1] 421.9214
mse = sum(e*e)/(nrow(X)-ncol(X))  # mse
sqrt(mse)
## [1] 3.881832
head( cbind( predict(res), yhat, resid(res), e ) )
##        [,1]      [,2]       [,3]       [,4]
## 1  4.837660  4.837660  5.4623403  5.4623403
## 2  4.553852  4.553852  5.7461484  5.7461484
## 3  4.816981  4.816981  5.3830187  5.3830187
## 4 15.874115 15.874115  0.5258848  0.5258848
## 5 19.869008 19.869008 -1.0690084 -1.0690084
## 6 21.018327 21.018327 -1.3183270 -1.3183270




  • 잔차제곱합 SSE 의 성질:

    • 다중 회귀분석의 가정으로부터, \(~\boldsymbol{\epsilon} ' \boldsymbol{\epsilon} ~\sim ~ \sigma^2 \, \chi^2 (n)\)

    • \(SSE\) : 최소제곱거리 \(S(\hat{\boldsymbol{\beta}})=\mathbf{e}'\mathbf{e}\), 모형의 적합결여도

    • \(E(SSE) = E(\boldsymbol{\epsilon}'(I-P)\boldsymbol{\epsilon}) = \sigma^2 (n-r)\)

      • \(Cov(\boldsymbol{\epsilon}) = E(\boldsymbol{\epsilon}\boldsymbol{\epsilon}')= \sigma^2 I\)

      • \(\mathbf{e} = \mathbf{y}-\hat{\mathbf{y}} = (I-P)\mathbf{y} = (I-P)\boldsymbol{\epsilon},~~\) (why?)

      • \(SSE = \mathbf{e}'\mathbf{e} =\boldsymbol{\epsilon}'(I-P)\boldsymbol{\epsilon},~~\) (why?)

      • \(E(SSE)=tr(E(SSE))=E(tr(SSE))\)

        \(=E(tr(\boldsymbol{\epsilon}'(I-P)\boldsymbol{\epsilon})=E(tr((I-P)\boldsymbol{\epsilon}\boldsymbol{\epsilon}')),~~\) (why?)

        \(=tr((I-P)E(\boldsymbol{\epsilon}\boldsymbol{\epsilon}'))= \sigma^2 (n-r)\)

    • \(SSE = \sum_j (y_j-\hat{y}_j )^2 ~\sim ~ \sigma^2 \, \chi^2 (n-r)\)

      • By Cochran theorem:

        어떤 사영행렬 \(P\) 가 있고, \(~rank(P)=r~\) 이라 하면,

        \(A=\boldsymbol{\epsilon} 'P \boldsymbol{\epsilon}\) 이고 \(B=\boldsymbol{\epsilon} ' (I-P) \boldsymbol{\epsilon}\) 라 하면,

        \(A\)\(B\) 는 독립이고,

        \(A ~\sim ~ \sigma^2 \, \chi^2 (r)\), \(B ~\sim ~ \sigma^2 \, \chi^2 (n-r)\), \(A+B ~\sim ~ \sigma^2 \, \chi^2 (n)\)




  • \(\hat{\boldsymbol{\beta}}~\) 의 표본분포:

    • \((X'X)^{-1}\) 이 존재하면,

      • \(\hat{\boldsymbol{\beta}} ~\sim~ N_k \left( \boldsymbol{\beta}, \sigma^2 (X'X)^{-1} \right)\)

      • \(E(\hat{\boldsymbol{\beta}})= \boldsymbol{\beta},~~\) unbiased estimator!

      • \(Cov(\hat{\boldsymbol{\beta}})= \sigma^2 (X'X)^{-1}\)

    • \((X'X)^{-1}\) 이 존재하지 않으면, \(~\hat{\boldsymbol{\beta}}\) 의 표본분포는 없음 \(~~\) (why?)


  • \(\hat{\sigma}^2~\) 의 표본분포:

    • \(\hat{\sigma}^2 ~\sim ~ \sigma^2 (n-r)^{-1} \cdot \chi^2 (n-r)\)

    • \(r=rank(X)\)

    • \(E(\hat{\sigma}^2)= \sigma^2,~~\) unbiased estimator!

    • \(Var(\hat{\sigma}^2)= 2 \sigma^4 (n-r)^{-1}\)

    • 참고) \(~~Q~\sim~ c\cdot \chi^2 (k)~\) 이면, \(~E(Q)= c k\), \(~Var(Q)= c^2 2k\)


  • \(\hat{\mathbf{y}}= X \hat{\boldsymbol{\beta}}~\) 의 표본분포:

    • \(X \hat{\boldsymbol{\beta}}~ \sim~ N_n (X\boldsymbol{\beta}, \sigma^2 \,P )\),

      • 여기서 \(P=X(X'X)^{-}X'\) 이고,

      • \(\hat{\mathbf{y}}\) 의 표본분포의 존재와 형태는 \((X'X)^{-1}\) 의 존재 여부와 무관함

      • 만약 \((X'X)^{-1}\) 가 존재하는 경우라면, \(~P=X(X'X)^{-1}X'~\)

    • \(\hat{\mathbf{y}}\) 과 표본분포의 의미:

      • \(\boldsymbol{\mu}=E(\mathbf{Y})\) 의 추정값, 즉 \(~\hat{\boldsymbol{\mu}}~\) 과, 그 표본분포

      • 관측값 \(y_i\) 는 설명변수가 \(~\mathbf{x}_i'~\) 일 때 얻어진 값이다.

        관측값으로 얻어진 \(~\mathbf{y}~\) 와 동일한 설명변수들인 \(X= \{ \mathbf{x}_i'\}\) 가 주어진

        경우에서의 예측값들 \(~\hat{\mathbf{y}}~\) 에 대한 추정량과 그 표본분포


  • \(\hat{y}(\mathbf{x})\) 와 그 분포:

    • 새로운 설명변수 값 \(\mathbf{x}'\) 가 주어진 경우에서,

      • 추정값: \(~\mathbf{x}\) 의 함수로써의 추정값, \(~\hat{y}(\mathbf{x})= \mathbf{x} ' \hat{\boldsymbol{\beta}}\)

      • 예측값: 미지의 확률적 값에 대한 예측값, \(~\hat{y}(\mathbf{x})= \mathbf{x} ' \hat{\boldsymbol{\beta}}+ \epsilon\)

    • 분포:

      • 추정값: \(~\mathbf{x}' \hat{\boldsymbol{\beta}}~ \sim~ N ( \mathbf{x}' \boldsymbol{\beta}, \sigma^2 \,h )\)

      • 예측값: \(~\mathbf{x}' \hat{\boldsymbol{\beta}}+\epsilon ~ \sim~ N ( \mathbf{x}' \boldsymbol{\beta}, \sigma^2 \,(1+h) )\)

      • 여기서 \(~h= \mathbf{x}' (X'X)^{-} \mathbf{x}~\) 이고,

        \(\mathbf{x}'\) 가 행렬 \(X\)의 행공간에 존재하면, 즉 \(~\mathbf{x}' \in Row(X)~\) 이면

        \(\hat{y}(\mathbf{x})\) 의 분포의 존재와 형태는 \((X'X)^{-1}\) 의 존재 여부와 무관함

        만약 \((X'X)^{-1}\) 가 존재하는 경우라면, \(h= \mathbf{x}' (X'X)^{-1} \mathbf{x}~\)




  • (참고: 사영행렬의 동일성 )

    설명변수 행렬이 Full column rank 가 아닌 경우의 회귀계수와 예측벡터

    • 행렬/벡터의 구성, trees 데이터에서,

      • 행렬 X 는, 종속변수로 사용될 v 변수 열을 제거한 행렬

      • 행렬 X1 행렬 X 에, 1 벡터를 열벡터로 추가한 행렬이다

      • 행렬 X2 는 X1 에, h 변수 열을 h2 라는 이름으로 중복시킨 행렬

      • 벡터 y 는 v 변수에 해당한다

    • 일반화 역행렬 (Moore-Penrose 역행렬)의 비교

      • 행렬 X1 에 대하여,

        • \(X_1' X_1 ~\) 의 역행렬을 계산한 결과

        • \(X_1' X_1 ~\) 의 일반화 역행렬을 계산한 결과

      • 행렬 X2 에 대한, \(X_2' X_2 ~\) 의 일반화 역행렬 (Moore-Penrose 역행렬)

    • 회귀계수

      • lm() 을 이용하여, y 와 X 사이의 회귀계수를 구한 결과

      • 행렬 X1 을 이용하여 계산한 회귀계수

      • 행렬 X2 를 이용하여 계산한 회귀계수

    • 사영행렬

      • 행렬 X1 로부터 구한 사영행렬 P1

      • 행렬 X2 로부터 구한 사영행렬 P2

      • P1 과 P2 의 동일성을 확인한다


library(MASS, warn.conflicts = FALSE, quietly = TRUE)
trees <- trees; rm(trees); names(trees)<-c('g','h','v')


X <- as.matrix(trees[,-3]) 

X1 <- as.matrix(cbind(1, X)) 

X2 <- as.matrix(cbind(X1, h2=trees[,2])) 

y <- matrix(trees[,3],ncol=1) 

cbind(X[1:3,], NA, X1[1:3, ], NA, X2[1:3, ], NA, y[1:3])
##        g  h        g  h        g  h h2        
## [1,] 8.3 70 NA 1 8.3 70 NA 1 8.3 70 70 NA 10.3
## [2,] 8.6 65 NA 1 8.6 65 NA 1 8.6 65 65 NA 10.3
## [3,] 8.8 63 NA 1 8.8 63 NA 1 8.8 63 63 NA 10.2
solve(t(X1) %*% X1)
##                          g            h
##    4.95194293  0.028680223 -0.069732257
## g  0.02868022  0.004634518 -0.001185265
## h -0.06973226 -0.001185265  0.001124146
ginv(t(X1) %*% X1) 
##             [,1]         [,2]         [,3]
## [1,]  4.95194293  0.028680223 -0.069732257
## [2,]  0.02868022  0.004634518 -0.001185265
## [3,] -0.06973226 -0.001185265  0.001124146
ginv(t(X2) %*% X2)
##             [,1]          [,2]          [,3]          [,4]
## [1,]  4.95194293  0.0286802230 -0.0348661287 -0.0348661287
## [2,]  0.02868022  0.0046345176 -0.0005926323 -0.0005926323
## [3,] -0.03486613 -0.0005926323  0.0002810365  0.0002810365
## [4,] -0.03486613 -0.0005926323  0.0002810365  0.0002810365
lm(y~X)
## 
## Call:
## lm(formula = y ~ X)
## 
## Coefficients:
## (Intercept)           Xg           Xh  
##    -57.9877       4.7082       0.3393
ginv(t(X1) %*% X1) %*% t(X1) %*% y
##             [,1]
## [1,] -57.9876589
## [2,]   4.7081605
## [3,]   0.3392512
ginv(t(X2) %*% X2) %*% t(X2) %*% y
##             [,1]
## [1,] -57.9876589
## [2,]   4.7081605
## [3,]   0.1696256
## [4,]   0.1696256
P1 <- (X1 %*% solve(t(X1) %*% X1) %*% t(X1))

P2 <- (X2 %*% ginv(t(X2) %*% X2) %*% t(X2))


dim(P1)
## [1] 31 31
dim(P2)
## [1] 31 31
cbind(P1[1:3,1:3],NA, P2[1:3,1:3])
##           [,1]      [,2]      [,3] [,4]      [,5]      [,6]      [,7]
## [1,] 0.1158288 0.1154809 0.1140760   NA 0.1158288 0.1154809 0.1140760
## [2,] 0.1154809 0.1472096 0.1592206   NA 0.1154809 0.1472096 0.1592206
## [3,] 0.1140760 0.1592206 0.1768619   NA 0.1140760 0.1592206 0.1768619
sum(abs(P1-P2))
## [1] 1.230906e-10




  • 가설 검정, t- 검정

    • \((X'X)^{-1}\) 가 존재할 때, \(~~\beta_j\) 에 대한 가설검정을 할 수 있음

      \(\beta_j\) 에 대한 추정 검정을 논할 때는, 항상 \(~rank(X_{n \times k}) = k~\) 를 가정함

    • \((X'X)^{-1}\) 의 원소들을 \(w_{ij}\) 라 하면, \(~\hat{\beta}_j ~\sim~ N(\beta_j , \, \sigma^2 w_{jj} \,)\), \(j=1,\ldots,k\)

    • \((\hat{\beta}_j- \beta_j) / se(\hat{\beta}_j) ~\sim~ t(n-k),~\) 여기서 \(~se(\hat{\beta}_j) = \hat{\sigma} \sqrt{w_{jj}}\),

    • 가설검정: \(H_0 : \beta_j =0\) vs. \(H_1 : \beta_j \neq 0\)

      • \(t = \hat{\beta}_j / se(\hat{\beta}_j)\)\(~H_0 : \beta_j =0\) 가정 하에서 \(t(n-k)\) 분포를 따름

      • R 의 summary table 에는 이 \(t\) 값들이 정리되어 제시됨

      • \(t\) 의 절대값, \(|t|\) 가 클수록, \(H_1\) 을 지지함

      • p-value: Pr(>|t|) 로 표시됨. 작을수록 (보통은 0.05 이하), \(H_1\) 을 지지함




  • 가설 검정, Anova table 에 의한 F-검정:

    • 비교 가능한 모형

      • Reduced Model (Model R) : Model F 에서의 모수 일부를 0으로 설정한 모형

      • Full Model (Model F) : 다중 회귀분석 모형

      • 가설검정의 형태로 표현하면, \(~~H_0\): Model R \(~~\) vs. \(~~H_1\): Model F

    • 예) 모형의 비교와 가설 검정

      • 비교 대상 모형들

        • M0: \(~~~y_j = \beta_0 + \epsilon_j\)

        • M1: \(~~~y_j = \beta_0 + \beta_1 x_{1j} +\epsilon_j\)

        • M2: \(~~~y_j = \beta_0 + \beta_2 x_{2j} +\epsilon_j\)

        • M12: \(~~y_j = \beta_0 + \beta_1 x_{1j} + \beta_2 x_{2j} +\epsilon_j\)

      • 모형의 비교와 검정 가설

        • M0 와 M1 의 비교: \(~~\) \(~H_0 : \beta_1 =0 \qquad \quad\) vs \(~~~H_1 : \beta_1 \neq 0\)

        • M0 와 M2 의 비교: \(~~\) \(~H_0 : \beta_2 =0 \qquad \quad\) vs \(~~~H_1 : \beta_2 \neq 0\)

        • M0 와 M12 의 비교: \(~~\) \(H_0 : \beta_1 =\beta_2 =0 ~~\) vs \(~~~H_1 : \mbox{not} ~H_0\)

        • M1 와 M12 의 비교: \(~~\) \(H_0 : \beta_2 =0 \qquad \quad\) vs \(~~~H_1 : \beta_2 \neq 0\)

        • M2 와 M12 의 비교: \(~~\) \(H_0 : \beta_1 =0 \qquad \quad\) vs \(~~~H_1 : \beta_1 \neq 0\)




  • 분포들 사이의 일반적인 관계:

    • 정규분포와 카이제곱분포:

      • \(\mathbf{Z} ~\sim~ N_k (\mathbf{0}, \sigma^2 I ) ~\) 이면, \(~~\mathbf{Z}' \mathbf{Z}=\sum_j z_j^2 ~\sim ~ \sigma^2 \cdot \chi^2(k)\)
    • 카이제곱분포의 성질:

      • \(Q ~\sim~ \chi^2 (k) ~\) 이면, \(~~E(Q)=k, ~~ Var(Q)=2k\)

      • \(Q ~\sim~ c \cdot \chi^2 (k) ~\) 이면, \(~~E(Q)= c\, k, ~~ Var(Q)=2k \, c^2\)

    • 카이제곱분포와 t-분포:

      • \(Q ~\sim~ \chi^2 (k), ~\), \(Z ~\sim~ N(0,1)~\) 이면, \(~~Z/\sqrt{Q/k} ~\sim~ t(k)\)
    • t-분포의 성질:

      • Cauchy 분포: 자유도가 1인 t-분포, 즉, \(t(1)\)

      • 표준정규분포: 자유도가 무한대인 t-분포, 즉, \(t(\infty)\)

        t-분포의 자유도가 커질수록 표준정규분포로 수렴 함

        자유도 25 이상이면 표준정규분포라고 보아도 무방함

    • 카이제곱분포와 F-분포:

      • \(Q ~\sim~ \sigma^2 \cdot \chi^2 (q)~\) 이고, \(R ~\sim~ \sigma^2 \cdot \chi^2 (r)\) 이고, \(~Q\)\(R\) 이 독립

        이 조건이 만족되면, \(~~(Q/q)/(R/r) ~\sim~ F(q,r)\) 이다




  • F-검정의 방법:

    • 기호 :

      • \(SSE(M)\): 모형 \(M\) 의 잔차제곱합,

      • \(df.r(M)\): 모형 \(M\) 의 잔차의 자유도

      • \(df.m(M)\): 모형 \(M\) 의 자유도, \(~rank(X)\), \(~n-df.r(M)\)

    • Anova table 에서의 Model R 과 Model F 의 SSE:

      • Model R : \(~SSE_R = SSE(Model\,\, R),~~\) \(d_R=df.r(Model \,\, R)\)

      • Model F : \(~SSE_F = SSE(Model\,\, F),~~\) \(d_F=df.r(Model \,\, F)\)

      • \(SSE_R ~\sim ~ \sigma^2 \, \chi^2 (d_R ),~\) 이고, \(~~SSE_F ~\sim ~ \sigma^2 \, \chi^2 (d_F)\)

    • 가설의 검정:

      • \(Q ~\sim~ \sigma^2 \cdot \chi^2 (q)\)

        여기서 \(~Q = SSE_R - SSE_F~\) 이고, \(~~q= d_R - d_F~\)

      • \(\hat{\sigma}^2 = SSE_F /d_F\)

      • 통계량 \(~F=Q/(q \cdot \hat{\sigma}^2 )~\) 는, F-분포 \(~F(d, d_F)\)를 따름




  • \(\boldsymbol{\beta}\) 의 신뢰구간:

    • \((X'X)^{-1}\) 가 존재하는 경우만을 고려하므로, \(~rank(X_{n \times k}) = k~\)

    • \((X' X)^{1/2} (\hat{\boldsymbol{\beta}} - \boldsymbol{\beta}) ~\sim ~ N_k ( \mathbf{0}, \sigma^2 I )\)

    • \(SSE ~\sim ~ \sigma^2 \cdot \chi^2 (n-k), ~\) 이고 \(~~ \hat{\sigma}^2 = MSE = SSE/(n-k)\)

    • \(Q = (\hat{\boldsymbol{\beta}} - \boldsymbol{\beta}) ' (X' X) (\hat{\boldsymbol{\beta}} - \boldsymbol{\beta})\) 라면, \(~~ Q ~\sim ~ \sigma^2 \cdot \chi^2 (k)~\) 이고,

    • \(F = Q/(k \cdot \hat{\sigma}^2 )~\) 라면, \(~~F~ \sim~ F(k,n-k)~\) 이다

    • \(100(1-\alpha)\%\) 신뢰구간: \(~~\{ \boldsymbol{\beta} \,| \, F \leq F_{\alpha/k} (k,n-k) \}\)

      by applying Bonferroni simultaneous confidence interval [참고: wiki]




  • 일반적인 선형가설에 대한 F-검정:

    • 선형가설: \(H_0 : C \boldsymbol{\beta}= \mathbf{d}~\) vs. \(~H_1 : C \boldsymbol{\beta} \neq \mathbf{d}\),

      \(\qquad \qquad\) 여기서 \(~rank(C_{q \times k}) = q~\) (\(q \leq k\)) 이고, \(~\mathbf{d} \in I\!\!R^q\)

    • 예) 가설에 대한 다음 두 가지 표현은 동일한 의미다

      • \(H_0 : ~\beta_1 - \beta_2 =0\), 이고 \(~\beta_0 = 2.3\)

      • \(H_0 : C \boldsymbol{\beta}= \mathbf{d}~~\), 여기서 \(~ C=\begin{pmatrix} 0 & 1 & -1 \\ 1 & 0 & 0 \end{pmatrix}, ~~~ \mathbf{d}=\begin{pmatrix}0 \\ 2.3 \end{pmatrix}\)

    • \(C ( \hat{\boldsymbol{\beta}}- \boldsymbol{\beta}) ~\sim~N_q (\boldsymbol{0}, \sigma^2 C (X'X)^{-1} C' )~\) 이므로, \(~~\) (why?)

      \(Q(\boldsymbol{\beta}) =( \hat{\boldsymbol{\beta}}- \boldsymbol{\beta})' C' [C (X'X)^{-1} C']^{-1} C ( \hat{\boldsymbol{\beta}}- \boldsymbol{\beta})~~\sim~~ \sigma^2 \cdot \chi^2 (q)\)

    • \(H_0 : C \boldsymbol{\beta}= \mathbf{d}~\) 가정 하에서,

      • \(~~Q(\mathbf{d}) ~ \sim ~ \sigma^2 \cdot \chi^2 (q)\)

      • \(\hat{\sigma}^2 = MSE~\) 이므로, \(~~Q(\mathbf{d}) / (q \cdot \hat{\sigma}^2)~\sim~ F(q,n-k)\)

    • 변동의 분해에 의한 F-검정과 동일한 방법으로 가설을 검정할 수 있음

      • Reduced Model (Model R): \(~~H_0 : C \boldsymbol{\beta}= \mathbf{d}\)

      • Full Model (Model F): \(~~H_1 : C \boldsymbol{\beta} \neq \mathbf{d}\)

      • \(Q(\mathbf{d}) = SSE(Model \,\,R) - SSE(Model \,\, F)~\) 인 관계가 성립




3. R에서 lm 함수


  • iris 데이터를 예로 들어, R 을 이용하여 다중 회귀분석을 수행하는 과정을 살펴보자

    먼저 간단하게 다중 선형회귀분석을 실시하기 위한 과정을 살펴보고,

    그 결과로 나타나는 summary table 과 anova table 의 의미를 이해하는 방법을 살펴본다.


iris 데이터에 대한 다중 선형회귀


  • iris 자료: 3 종류의 붓꽃 각 50개씩에 대하여 꽃받침, 꽃잎의 폭과 길이를 측정한 자료


names(iris)<-c('sl','sw','pl','pw','sp')
iris[sort(sample(1:150,6)),]
##      sl  sw  pl  pw         sp
## 13  4.8 3.0 1.4 0.1     setosa
## 26  5.0 3.0 1.6 0.2     setosa
## 29  5.2 3.4 1.4 0.2     setosa
## 54  5.5 2.3 4.0 1.3 versicolor
## 84  6.0 2.7 5.1 1.6 versicolor
## 133 6.4 2.8 5.6 2.2  virginica


res <- lm(sl~sw+pl, data=iris)
res
## 
## Call:
## lm(formula = sl ~ sw + pl, data = iris)
## 
## Coefficients:
## (Intercept)           sw           pl  
##      2.2491       0.5955       0.4719


  • iris 자료에서의, 다중 회귀모형의 예:

    • 종속변수: ‘sl’

    • 독립변수로: ‘sw’, ‘pl’

    • 회귀모형: \(~~sl_j = \beta_0 + \beta_1 sw_j + \beta_2 pl_j + \epsilon_j\)

    • 추정 회귀계수: \(~~ \hat{\beta}_0=2.2491, ~~ \hat{\beta}_1=0.5955, ~~ \hat{\beta}_2=0.4719\)




summary(res)
## 
## Call:
## lm(formula = sl ~ sw + pl, data = iris)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.96159 -0.23489  0.00077  0.21453  0.78557 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  2.24914    0.24797    9.07 7.04e-16 ***
## sw           0.59552    0.06933    8.59 1.16e-14 ***
## pl           0.47192    0.01712   27.57  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.3333 on 147 degrees of freedom
## Multiple R-squared:  0.8402, Adjusted R-squared:  0.838 
## F-statistic: 386.4 on 2 and 147 DF,  p-value: < 2.2e-16


  • summary table, t-검정:

    • 가설: \(\quad H_0 : \beta_0 =0 \quad\) vs. \(\quad ~ H_1 : \beta_0 \neq 0\)

      • \(se(\hat{\beta}_0 )= 0.24797\), \(\quad~~ t = \hat{\beta}_0 / se(\hat{\beta}_0) = 9.07\)

      • p-value: \(7.04 \times 10^{-16}, ~~\) 결론: \(H_1 : \beta_0 \neq 0~\) 이 옳다

    • 가설: \(\quad H_0 : \beta_1 =0 \quad\) vs. \(\quad ~ H_1 : \beta_1 \neq 0\)

      • \(se(\hat{\beta}_1 ) = 0.06933\), \(\quad~~ t = \hat{\beta}_1 / se(\hat{\beta}_1) = 8.59\)

      • p-value: \(1.16 \times 10^{-14}, ~~\) 결론: \(H_1 : \beta_1 \neq 0~\) 이 옳다

    • 가설: \(\quad H_0 : \beta_2 =0 \quad\) vs. \(\quad ~ H_1 : \beta_2 \neq 0\)

      • \(se(\hat{\beta}_2 ) = 0.01712\), \(\quad~~ t = \hat{\beta}_2 / se(\hat{\beta}_2) = 27.57\)

      • p-value: \(< 2 \times 10^{-16}, ~~\) 결론: \(H_1 : \beta_2 \neq 0~\) 이 옳다


  • summary table, F-검정:

    • 가설: \(\quad H_0 : \beta_1 = \beta_2 =0 \quad\) vs. \(\quad ~ H_1 : not ~H_0\)

      • \(\hat{\sigma}= 0.333\), \(\quad F = 386.4, ~~\) \(~F ~\sim ~ F(2,147)\)

      • p-value: \(< 2.2 \times 10^{-16}, ~~ \quad\) 결론: \(H_1\) 이 옳다




  • R 에서의 anova 함수:

    • Model 1, Model 2, … : 다중 선형회귀모형들.

    • anova(Model 1, Model 2, …) : 앞 뒤 모형 사이에 포함관계가 있으면 F- 검정을 수행

    • anova(Model 1) : Model 1 에 명시된 변수의 순서에 따라, 가장 단순한 모형에서 부터 변수를

      추가하며 순차적으로 부분 모형을 형성하고, 전후 부분 모형들을 비교하는 F-검정을 수행함

    • \(\hat{\sigma}^2\) 의 추정은 가장 큰 모형 (다른 모형들을 포함하는 모형) 의 MSE 로 구함




anova(res)
## Analysis of Variance Table
## 
## Response: sl
##            Df Sum Sq Mean Sq F value    Pr(>F)    
## sw          1  1.412   1.412  12.714 0.0004902 ***
## pl          1 84.427  84.427 760.059 < 2.2e-16 ***
## Residuals 147 16.329   0.111                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1


anova(lm(sl~sw,iris))
## Analysis of Variance Table
## 
## Response: sl
##            Df  Sum Sq Mean Sq F value Pr(>F)
## sw          1   1.412 1.41224  2.0744 0.1519
## Residuals 148 100.756 0.68078


  • ANOVA table, F-검정:

    • 비교 모형:

      • M0: \(sl_j = \beta_0 + \epsilon_j\)

      • M1: \(sl_j = \beta_0 + \beta_1 sw_j +\epsilon_j\)

      • M2: \(sl_j = \beta_0 + \beta_1 sw_j + \beta_2 pl_j + \epsilon_j\)

    • \(\hat{\sigma}^2 = SSE(M2)/df.r(M2)=16.329/146=0.111\)

    • 변동의 분해

      • \(SSE(M0) = 1.412 + 84.427 + 16.329 = 102.168 = SST\)

      • \(SSE(M1) = 84.427 + 16.329 = 100.756\)

      • \(SSE(M2) = 16.329\)

      • \(SSR(M1|M0)= SSE(M0) - SSE(M1) = 1.412,~~\) sw 변수에 의한 추가설명력

      • \(SSR(M2|M1)= SSE(M1) - SSE(M2) = 84.427,~~\) pl 변수에 의한 추가설명력

    • 다중 회귀모형에 대한 ANOVA Table 에서의 가설검정

      • \(H_0 : \beta_1 =0~\), vs \(~~H_1 : \beta_1 \neq 0,~~\) ( M0 vs M1)

        \(\hat{\sigma}^2~\)을 모형 M2 에서 추정할 때, \(\hat{\sigma}^2 = 16.329/147\)

        F=12.714, 자유도 (1, 147) 인 F-분포 이용, p-value=0.0004902

      • \(H_0 : \beta_2 =0~\), vs \(~~H_1 : \beta_2 \neq 0,~~\) ( M1 vs M2)

        \(\hat{\sigma}^2~\)을 모형 M2 에서 추정할 때, \(\hat{\sigma}^2 = 16.329/147\)

        F=760.059, 자유도 (1, 147) 인 F-분포 이용, p-value \(< 2.2 \times 10^{-16}\)

    • 보통의 가설 검정 (단순 선형회귀 모형):

      • \(H_0 : \beta_1 =0~\), vs \(~~H_1 : \beta_1 \neq 0,~~\) ( M0 vs M1)

        \(\hat{\sigma}^2~\)을 모형 M1 에서 추정할 때, \(\hat{\sigma}^2 = 100.756/148\)

        F=2.0744, 자유도 (1, 148) 인 F-분포 이용, p-value=0.1519




anova(lm(sl~pl+sw,iris))
## Analysis of Variance Table
## 
## Response: sl
##            Df Sum Sq Mean Sq F value    Pr(>F)    
## pl          1 77.643  77.643 698.985 < 2.2e-16 ***
## sw          1  8.196   8.196  73.787 1.163e-14 ***
## Residuals 147 16.329   0.111                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1


  • 변수 순서에 따른 변동의 분해:

    • 비교 모형:

      • M0: \(sl_j = \beta_0 + \epsilon_j\)

      • M1: \(sl_j = \beta_0 + \beta_1 pl_j +\epsilon_j\)

      • M2: \(sl_j = \beta_0 + \beta_1 pl_j + \beta_2 sw_j + \epsilon_j\)

    • 변동의 분해

      • \(SSE(M0) = 77.643 + 8.196 + 16.329 = 102.168 = SST\)

      • \(SSE(M1) = 8.196 + 16.329 = 100.756\)

      • \(SSE(M2) = 16.329\)

      • \(SSR(M1|M0)= SSE(M0) - SSE(M1) = 77.643,~~\) pl 변수에 의한 추가설명력

      • \(SSR(M2|M1)= SSE(M1) - SSE(M2) = 8.196,~~\) sw 변수에 의한 추가설명력

    • 변동의 분해에서 추가설명력은, 기존에 어떤 변수가 들어가 있는 지에 따라 달라짐




res0 <- lm(sl~1,iris)
res2 <- lm(sl~sw+pl,iris)
res3 <- lm(sl~sw+pl+pw,iris)
anova(res0, res2, res3)
## Analysis of Variance Table
## 
## Model 1: sl ~ 1
## Model 2: sl ~ sw + pl
## Model 3: sl ~ sw + pl + pw
##   Res.Df     RSS Df Sum of Sq       F    Pr(>F)    
## 1    149 102.168                                   
## 2    147  16.329  2    85.840 433.791 < 2.2e-16 ***
## 3    146  14.445  1     1.883  19.035 2.413e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1


  • 여러 모형의 비교: 비교할 모형을 직접 명시함

    • 비교 모형:

      • M0: \(sl_j = \beta_0 + \epsilon_j\)

      • M2: \(sl_j = \beta_0 + \beta_1 sw_j + \beta_2 pl_j + \epsilon_j\)

      • M3: \(sl_j = \beta_0 + \beta_1 sw_j + \beta_2 pl_j + \beta_3 pw_j + \epsilon_j\)

    • 변동의 분해

      • \(SSE(M0)=102.168\)

      • \(SSR(M2|M0)= SSE(M0) - SSE(M2) = 16.329,~~\) pl 변수에 의한 추가설명력

      • \(SSR(M3|M2)= SSE(M2) - SSE(M3) = 14.445,~~\) pw 변수에 의한 추가설명력

    • 자유도의 변화

      • \(df.r(M0)=149\)

      • \(df(M2|M0)= df.r(M0) - df.r(M2) = 2,~~\) \(M2\) 모형에 추가된 설명변수의 개수

      • \(df(M3|M2)= df.r(M2) - df.r(M3) = 1,~~\) \(M3\) 모형에 추가된 설명변수의 개수




  • versicolor 50개에 대한 분석 결과:


[old lecture note]




실습 과제


  • R 의 mtcars 데이터:

    32 종류의 자동차에 대하여, 그 특성을 정리한 자료이다


  • mtcars 자료에서,

    mpg 를 종속변수로 하는 가장 좋은 다중 회귀모형을 구성하시오

    • 가장 좋은 모형이란 무엇을 의미하는 지 먼저 그 의미를 정하고

    • 그 의미에 맞는 가장 좋은 다중 회귀모형을 구성하시오


  • 다음 두 그림에 나타나는 다음 현상에 대하여 설명하시오

    • 두 그림에서 나타나는 직선의 기울기가 음수와 양수로 바뀌는 현상

    • 나타나는 직선들에서 주위의 회색 띠가 무엇을 의미하는 지 설명하고,

    • 그 띠의 중앙부는 얇고, 가장자리가 두껍게 나타나는 현상


library(ggplot2)

p = ggplot(iris) + geom_point(aes(x=sw,y=sl,col=sp)) 

p1 = p + stat_smooth(method='lm', aes(x=sw,y=sl),col='red')

p1
## `geom_smooth()` using formula 'y ~ x'

p2 = p + stat_smooth(method='lm',aes(x=sw,y=sl,col=sp))

p2
## `geom_smooth()` using formula 'y ~ x'