다중회귀분석 p-value - dajunghoegwibunseog p-value

회귀 분석을 통해 하나 이상의 예측 변수와 반응 변수의 통계적 관계를 설명하는 공식을 도출할 수 있습니다. Minitab Statistical Software를 사용하여 회귀 분석 모형을 적용하고 잔차 그림을 확인했다면 이제 결과를 해석해야 합니다. 이 게시물에서는 선형 회귀 분석 결과에 나타난 P값과 계수를 해석하는 방법을 설명합니다.

T각 항의 P값은 계수가 0이라는(영향 없음) 귀무 가설을 검정합니다. P값이 낮으면(<0.05) 귀무 가설을 기각할 수 있습니다. 즉, P값이 낮은 예측 변수는 예측 변수 값의 변화가 반응 변수의 변화와 연관성이 있으므로 모델에 유의미한 요소로 작용할 수 있습니다.

반대로 더 큰 P값은(무의미함) 예측 변수의 변화가 반응의 변화와 연관성이 없다는 사실을 나타냅니다.

아래 결과에서 South와 North의 예측 변수는 P값이 모두 0.000이므로 유의합니다. 그러나 East의 P값(0.092)은 일반 알파 수준인 0.05보다 크므로 통계적으로 유의하지 않습니다.

다중회귀분석 p-value - dajunghoegwibunseog p-value

보통 계수 P값에 따라 회귀 분석 모형에 계속 포함할 항을 결정하게 됩니다. 따라서 위 모형에서는 East를 제거하는 것을 고려해야 합니다.

관련 내용:전반적 유의성을 지닌 F-검정

선형 관계의 회귀 계수를 해석하는 방법

회귀 계수는 모형의 다른 예측 변수를 유지하면서 예측 변수의 한 단위에 대한 반응 변수의 평균 변화를 나타냅니다. 이와 같은 회귀의 통계적 관리는 특정한 변수의 역할을 모형의 다른 변수로부터 분리하므로 중요합니다.

이러한 계수를 이해하는 좋은 방법은 계수를 경사로 생각하는 것입니다. 실제로 회귀 계수는 '기울기 계수'로 불리기도 합니다. 사람의 신장을 이용하여 체중을 모델링 한 아래의 적합선 그림 예시를 참조하세요. 우선 Minitab의 세션 창 결과를 보겠습니다.

다중회귀분석 p-value - dajunghoegwibunseog p-value

적합선 그림은 같은 회귀 결과를 그래픽으로 나타낸 것입니다.

다중회귀분석 p-value - dajunghoegwibunseog p-value

공식에 따르면, 신장(미터)의 계수는 106.5킬로그램입니다. 이 계수는 신장이 1미터 커질 때마다 체중이 평균 106.5킬로그램 증가할 것으로 예상된다는 사실을 나타냅니다.

파란색 적합선은 같은 정보를 그래픽으로 나타낸 것입니다. 신장 1미터 차이만큼 X축을 좌우로 움직이면 적합선이 106.5킬로그램만큼 상승하거나 하락합니다. 단, 이러한 신장 정보의 출처는 중학생 연령의 소녀들이며, 범위는 1.3~1.7m입니다. 따라서 이와 같은 관계는 해당 데이터 범위 내에서만 유효하므로, 이 예시에서는 X축을 1미터 단위로 이동할 수 없었습니다.

적합선이 평평하다면(기울기 계수 = 0) 선의 위쪽이나 아래쪽으로 이동해도 체중 기대 값이 변화하지 않습니다. 즉, P값이 낮으면 기울기가 0이 아니며, 따라서 예측 변수의 변화가 반응 변수의 변화와 연관되어 있음을 나타냅니다.

이는 적합선 그림에서 명확하게 확인할 수 있습니다. 단, 적합선 그림은 예측 변수 1개와 반응을 포함하는 단순 회귀 분석의 결과만 나타낼 수 있습니다. 이러한 개념은 다중 선형 회귀 분석에도 동일하게 적용되지만, 이 경우 추가되는 예측 변수의 결과를 나타낼 공간 차원이 더 필요합니다. 아쉽게도 오늘날의 기술로는 나타내기가 어려운 부분이죠.

다중회귀분석 p-value - dajunghoegwibunseog p-value

곡선형 관계의 회귀 계수와 교호작용 항을 해석하는 방법

위 예시에서 신장은 선형 효과이며 기울기는 일정합니다. 이를 통해 효과가 적합선 전체에 걸쳐 일정하다는 사실을 알 수 있습니다. 그러나 모형에 다항식 또는 교호작용 항이 필요한 경우 해석이 좀 더 복잡해집니다.

이전에 알아보았듯이 다항식은 데이터의 곡면성을 모형화하며, 교호작용 항은 예측 변수 1개의 효과가 다른 예측 변수 값에 따라 달라짐을 나타냅니다.

다음 예에서는 곡면성 모형화에 2차(제곱)항을 필요로 하는 데이터 세트가 사용됩니다. 아래 결과에서 선형 항과 제곱항 모두의 P값이 유의하다는 사실을 확인할 수 있습니다.

다중회귀분석 p-value - dajunghoegwibunseog p-value

또한 잔차 그림(미표시)이 적합성을 나타내므로 해석을 진행할 수 있습니다. 그런데 이러한 계수를 어떻게 해석해야 할까요? 적합선 그림의 그래프로 나타내면 더 수월하게 해석할 수 있습니다.

다중회귀분석 p-value - dajunghoegwibunseog p-value

적합선의 시작 시점에 따라 기계 설정과 에너지 소비량의 관계가 달라지는 것을 확인할 수 있습니다. 예를 들어 기계 설정을 12에서 시작하여 1씩 높이면 에너지 소비량 감소를 기대할 수 있습니다. 그러나 기계 설정을 25에서 시작하여 1씩 높이면 에너지 소비량이 증가합니다. 또한 기계 설정이 20에 가까우면 에너지 소비량이 거의 변화하지 않습니다.

유의미한 다항이 있는 경우, 예측 변수 변화로 인한 효과가 해당 예측 변수의 값에 따라 달라지기 때문에 해석이 더 복잡해집니다. 마찬가지로 유의미한 교호작용 항은 예측 변수의 효과가 다른 예측 변수의 값에 따라 달라진다는 것을 나타냅니다.

이러한 유형의 항을 포함하는 회귀 모형을 해석할 때는 각별히 주의하시기 바랍니다. 주요 효과(선형 항)만 보고 분석하는 것은 불가능하니까요. 유감스럽게도 다중 회귀 분석을 수행하는 경우 적합선 그림을 이용하여 결과를 해석할 수 없습니다. 이 경우 주제 영역에 대한 지식이 더욱 빛을 발하겠죠!

예리한 분들은 제가 상수를 해석하는 방법을 소개하지 않았다는 사실을 눈치채셨을 텐데요. 이 내용은 다음 게시물에서 다루도록 하겠습니다!

잊지 말아야 할 사항:

  • 결과를 신뢰할 수 있도록 잔차 그림 확인
  • 적합도와 R-제곱 진단

회귀 분석에 대해 학습하는 분들은 제 회귀 튜토리얼을 참조하세요.

다중회귀분석 p-value - dajunghoegwibunseog p-value

test_vif1.csv

0.00MB

test_vif2.csv

0.00MB

※ 전공자가 아니기 때문에 비약적인 부분이 많을 수도 있겠으나,

대략적인 흐름을 설명하고자 하는 노력이니 전공자분들이 hoxy나 이 글을 보고 오류를 찾는다면 알려주시길 바람.

회귀분석에서 검정이 필요한 이유

우리가 회귀분석을 하는 이유가 애초에 무엇인지 생각해보자. 우리는 일정한 패턴을 갖는 데이터들로 하여금 (선형적인) 식을 만들어 그와 비슷한 데이터를 새롭게 입력받은 경우에도 문제를 해결, 혹은 예측하고자 회귀분석을 한다. 위의 데이터들을 이용하여 다음과 같은 함수를 R에서 구현해보자.

test_vif1

1

2

3

4

5

6

7

8

9

10

11

12

13

library(car) # vif 함수용

test <- read.csv('c:/data/test_vif1.csv')

test

# test에 있는 학생정보는 불필요하므로 제외

test <- test[-1]

# 회귀 모델 생성

regression_model <- lm(test$시험점수~.,data=test)

summary(regression_model)

# 팽창계수 확인

vif(regression_model)

cs

다중회귀분석 p-value - dajunghoegwibunseog p-value
회귀 모델 요약

test_vif1은 시험점수, 아이큐, 공부시간에 대한 컬럼이 존재하는 데이터로 다중회귀분석에 해당하는 데이터이다. 종속변수(Y), 즉 (예측)결과인 시험점수는 독립변수(X)인 아이큐와 공부시간에 의해 나타낼 수 있다. 내가 방금 한 말을 요약하자면 아이큐와 공부시간에 의해 시험점수를 나타낼 수 있다는 것이다. 그런데 왜 굳이 회귀식을 만들어 놓고선 summary를 하고 그것을 굳이굳이 캡쳐까지 해서 올려놓은것일까? 그것에 대해 이제부터 설명하도록 하겠다. 우선 위의 그림에서 Coefficients(계수) 테이블 중 t value와 Pr(>|t|) 를 보자.

우리가 t-value와 p-value(Pr(>|t|)의 값을 보는 이유는, 이 독립변수들이 정말 회귀식을 구성하는데 필요한지에 대해 보기 위해서이다. 그리고 t-value와 p-value를 이해하기 위해서는 귀무가설과 대립가설에 대해 이해할 필요가 있다. 더 디테일한 내용에 대해서는 구글링(크흡 비전공자라 미안해...)을 하길 바란다.


다중회귀분석 p-value - dajunghoegwibunseog p-value
다중 회귀식

t value : 잔차를 표준편차로 나눈값

t value의 귀무가설은 α_i(회귀계수) = 0 이다. 즉, 귀무가설을 만족한다는 것은 회귀계수 = 0 을 만족하는 것이고 이 말은 즉슨, 주어진 데이터인 X가 종속변수(Y)에 영향을 미치지 않는다는 것을 의미한다. 결국에는 쓸모 없는 데이터란 말이다. t value를 구하는 방법은 구글링을 통해 찾아보는 것을 추천한다.

Pr(>|t|) : p value

Pr(>|t|)는 p value를 의미하고 p value는 위에 구한 t value값을 기준에 해당하는 값(|t|)과 비교하여 나타낸 값으로, 이 값은 유의수준에 적합하면 할수록, 즉 0.05보다 작고 0에 가까울수록 매우 유의미한 데이터라고 인식하고 0.05보다 크면 불필요한 데이터에 가깝다고 인식한다. 위의 summary를 보면 p value 값 옆에 * 표시들이 있는데 *이 많을수록 유의미한 데이터임을 나타낸다.

이렇게 t value와 p value를 통해 1차적으로 독립변수가 회귀식에 필요한지 아닌지를 우선적으로 판단한다.

test_vif1 데이터에서 아이큐와 공부시간은 귀무가설을 기각하기 때문에 회귀식에 필요한 독립변수임을 알 수 있다.


test_vif2

1

2

3

4

5

6

7

8

9

10

11

12

13

library(car) # vif 함수용

test <- read.csv('c:/data/test_vif2.csv')

test

# test에 있는 학생정보는 불필요하므로 제외

test <- test[-1]

# 회귀 모델 생성

regression_model <- lm(test$시험점수~.,data=test)

summary(regression_model)

# 팽창계수 확인

vif(regression_model)

cs

다중회귀분석 p-value - dajunghoegwibunseog p-value
회귀 모델 요약

위의 test_vif1와 같은 방식으로 회귀 모델을 요약해보았다. test_vif2의 컬럼에는 등급평균이 추가되었다. 위의 summary를 보면 아이큐와 등급평균의 p value 값이 유의수준 0.05보다 크다는 것을 알 수 있다. 이것은 결론적으로 회귀식에서 아이큐와 등급평균이 유의미하지 않다는 것을 의미한다. 어떻게 이런 일이 생긴걸까? 등급평균 하나만 추가한건데 말이다!

이러한 경우, 아이큐와 등급평균 두 개의 데이터는 불필요해진다. 하지만 정말 과연 그럴까? 어떻게 아이큐와 공부시간만 있을 때는 2개의 독립변수로 나타내지는 다중회귀식이 만들어지는데 지금과 같은 경우는 오직 공부시간에만 영향을 받는 단순선형회귀식이 되어버린걸까? 또한 단순선형회귀식이 된다면 이전의 회귀모델보다 데이터의 정확도가 떨어지게 될 것이다. (아니 어떻게 모은 데이터인데 안 모으니만 못하다니 이게 뭔소리야!!!!)

이러한 경우를 위해 우리는 팽창계수를 확인한다.

팽창계수(vif)

다중회귀분석 p-value - dajunghoegwibunseog p-value
팽창계수 확인

위의 팽창계수를 보자. 아이큐와 등급평균이 22, 19로 매우 높은 값을 나타낸다는 것을 알 수 있다. 이렇게 팽창계수가 높다는 것은 다중공선성이 있다는 뜻이고, 다중공선성이 있다함은 독립변수들 중에 서로 영향을 주는 것이 있다는 뜻이다. 서로 영향을 주는데 그게 어떻게 독립변수겠는가? 따라서 우리는 서로 영향을 주는 변수들 중 하나만을 남겨 독립변수로서의 성능을 할 수 있도록 해줘야한다. 팽창계수를 확인하여 독립변수인지 아닌지를 판단하는 방법에 대해서, 현업 기준으로는 팽창계수가 보통 10보다 큰 것을 골라내고, 엄격하게는 5보다 큰 것, 느슨하게는 15~20보다 큰 것을 골라낸다.

위의 데이터에서는 아이큐와 등급평균이 기준 이상이므로 둘 중 하나만을 지워야 한다. 어떤 변수를 지워야할까?

결론은 팽창계수가 큰 것부터 없애야한다 이다. 현재 test_vif2의 데이터 같은 경우는 컬럼이 고작 3개 뿐이기 때문에 팽창계수가 큰 아이큐와 등급평균이 서로 영향을 준다는 것을 알 수 있다. 하지만 만약 컬럼이 30개라면? 그 이상이라면? 팽창계수가 큰 것이 10개 이상이라면? 우리는 어떤 컬럼들이 서로에게 영향을 주는지 알 수 없다. 그렇기 때문에 우선적으로 팽창계수가 가장 큰 컬럼부터 지워나가며 다시 회귀모델을 만들고, 또 거기서 팽창계수가 큰 것을 지워나가는 것을 반복하며 회귀모델을 만들어가야 한다.

+) 전공생분과의 대화를 통해서 알게 된 사실은 팽창계수 뿐만 아니라 상관관계로도 판단할 수 있다! 다만 상관관계로 판단하기에는 컬럼이 너무 많아서 눈에 쉽게 안 들어오니까 쉬운게 좋은 나는 대체로 팽창계수가 큰 것부터 없애는 방향으로 하려고 했는데, 노력을 조금 더 해서 정확도를 높이고자 하면 상관관계가 있는 변수들을 파악하여 그 중에서 종속변수와 연관성이 더 높은 변수를 살리는 것이 좋다. 이것은 개인의 판단이자 몫이니 참고하길 바란다!


결론

정확도가 높은 회귀 모델을 만들기 위해서는

1. p value로 독립변수(컬럼)가 회귀식에 필요한지 아닌지를 우선적으로 판단

2. 만약 p value에서 귀무가설을 기각하지 않는다면 팽창계수(vif)를 확인하여 다중공선성이 있는 독립변수(컬럼)를 하나씩 지워나감

     OR 상관계수로 파악하여 서로 영향을 주는 변수를 파악하고, Y(종속변수)와 상관관계가 비교적 작은 독립변수를 하나씩 지워나감